您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 微机原理课设-电子钟设计
南京工程学院通信工程学院课程设计说明书(论文)题目电子钟设计课程名称微机原理与接口技术课程设计专业班级学生姓名学号设计地点指导教师设计起止时间:2013年12月23日至2013年12月27日2目录一、设计要求...........................................................................................2二、设计内容...........................................................................................3三、总体设计...........................................................................................31、设计思路...........................................................................................................32、设计流程图.......................................................................................................3四、功能模块实现....................................................................................41、显示模块...........................................................................................................42、计数模块...........................................................................................................53、中断模块...........................................................................................................54、定时模块...........................................................................................................55、修改模块...........................................................................................................5五、硬件连线...........................................................................................6六、调试结果...........................................................................................7七、心得体会...........................................................................................7八、参考文献...........................................................................................8九、附录:源程序.........................................................................................8一、设计要求3利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子钟的电路,并编写一段程序使得该电子钟能正常运行。二、设计内容(1)选用8253的计数器2进行100MS的定时,其输出OUT2与8259的IR0相连,当定时到100MS时产生一个中断信号,在中断服务程序中进行天数、时、分、秒的计数,并送入相应的存储单元;(2)8255的A口接七段数码管的位选信号,B口接数码管的段选信号,天数、时、分、秒的数值通过对8255的编程可送到七段数码管上显示。(3)附加内容:选用8253的计数器0、1产生一个10s的时间定时,并将其输出OUT1与蜂鸣器相接,产生10S产生蜂鸣。(4)8255的C口接开关输入,用K1、K2、K3分别控制时、分、秒的修改。三、总体设计1、设计思路(1)在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数器2可在方式2下工作。(2)8255的A口、B口都设为方式0,为基本的输入输出的方式(3)在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。时、分、秒,分别对应6个存储单元,分别存放时、分、秒的十位和个位。当中断次数满10次时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到6,如到了则十位清零,分的个位加1,同时对分、时作相应处理。(4)七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的段码,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示(5)用8253的计数器0、1产生一个20S周期的方波,计数器0工作在方式2下,计数器1工作在方式3下。(6)在循环程序中检测K1、K2、K3是否为高电平,若是则相应位置加1,同时还得引入变量控制K1、K2、K3一直在高电平的状况,确保每次按动开关相应位置只加一次。2、设计流程图4中断次数加1中断计次值=10中断计次单元清秒计时值加1秒值=60?秒计时单元清零分计时值加1分值=60?分计时单元清零小时计时值加1小时值=60?小时计时单元清零输出中断结束命令中断返回主程序中断服务程序四、功能模块实现1、显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由八个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位,一个横杠和一位天数的显示。硬件上主要涉及到的是8255。定义8255控制字为89H,其在方式0下工作,A,B输出,C输入的工作方式。8255的A口接七段数码管的位选信号,B口接数码管的段选信号,C口接开关,用排线接好。开始设置中断服务程序地址设置8253工作方式及定时常数设置8255工作方式清显示器缓冲区清时、分、秒及中断计次单元开中断将时、分、秒单元中数据转换为BCD码并存入显示缓冲区调用显示子程序52、计数模块软件上主要是对时、分、秒、天的扫描显示,主要是在DISPLAYLED函数里体现出来:首先将10000000B送至OUTBIT端口,即确定LED的哪一位显示,再把BX中存储在内存中的翻译好的显示码送至OUTSEG短口,来确定显示什么字符。依次将BX加1而CL减一,直至CL为0跳转而字符的译码则是在STSRT函数中的LP中完成的,以小时HOUR为例,将HOUR存入AH中再DIV以10,按“余高商低”的规则,AH中存的是小时的个位AL中村的是小时的十位,将AL转换成显示码,并存入显示缓冲区。其他分、秒、天类似。计数模块的主要芯片是8253,8253控制字10100111H,表示选用计数器2,对高字节读写,方式3。因为选用的是计数器2,则OUT的端口即选用OUT2,连至8259的IR0端口,CLK2端口接来自实验箱的62.5KHz的时钟频率。将62500HZ的频率转化为10HZ的频率,即题目要求的100MS。每隔100MS送出一个信号至8259,配合中断程序的实现。则要求初始值N0=100MS*62.5K=62503、中断模块控制终端模块的主要芯片是8259。IINIT函数是专为初始化8259。初始化8259的命令字:ICW1为00010011B,即中断请求是边沿触发,用于8086系统,需要设置ICW4。ICW2为00001000B,ICW2是设置中断类型号的初始化命令字。ICW4为00001001B,ICW4叫中断结束方式初始化。OCW1为11111110B即表示只有M0允许中断,故接线时8253的OUT2,连至8259的IR0端口.。软件上包括初始化8259的命令字和操作命令字,中断服务程序,中断服务子程序。设一个变量CNT,每次调用中断服务程序则CNT加一,在判断CNT能不能被10整除,若能,则秒加一;不能,跳出中断程序。若秒满60,则分加一,秒数清零,依次类推。4、定时模块定时模块由8253完成,8253CLK0接2MHZ频率,OUT0接CLK1,OUT1接蜂鸣器,GATE0接高电平,GATE1接脉冲信号,当其为高电平时有效。计数器0初始值设为5000,计数器1初始值设为8000,从OUT1出来的信号为周期20S的方波,而蜂鸣器为低电平有效。5、修改模块修改模块是由8255完成的,从C口输入开关信号控制时间的修改,中间引入中间变量,以防每按动开关一次,跳动多次。6五、硬件连线实物连线图:A3区:A0、A1——B3、B4、C5区:A0、A1A3区:CS3——B3区:CSA3区:CS4——C5区:CSC5区:GATE0、GATE2----VCCA3区:CS8——B4区:CSB3区:INT、INTA——ES8688:INTR、INTAB3区:IRO——C5区:OUT2频率输出:62.5k——C5区:CLK2C5区:GATE1----单位脉冲C5区:OUT0----C5区:CLK1C5区:OUT1----D1区:CTRLB4区:C----G6区:JP80频率输出:2MHZ----C5区:CLK0B4区:A、B——LED区:C、B数据线7六、调试结果1、按动软件全速运行后,八位显示器分别为00.00.00-1(第一个小数点前两位表示小时,第二个小数点前两位表示分钟,第三个小数点前两位表示秒,最后一位表示天)。秒位从0开始计时,到60秒时清零,分钟为1,以此类推。2、将单位脉冲拨动到高电平,则从按动时刻开始10S后蜂鸣器响,再将脉冲调到低电平,蜂鸣器停止鸣响。3、拨动开关K1一次,时显示器加1,拨动K2一次,分显示器加1,同理K3。七、心得体会本次课程设计历时四天,从第一天的查找资料到最后老师的验收,学到了许多之前在课堂上遗漏的知识,更加熟悉了8255、8253、8259等芯片的功能,使我受益匪浅。一开始从网上找到的程序有诸多错误,运行不了,花了一上午翻阅资料以及请教老师和同学才得以解决。后来老师增加了课程设计的难度,为电子钟在原有的功能基础上增加了两个功能:一、定时二、修改时间。面对这两个问题,我起先没有抓住实现功能的逻辑关系,一下午都琢磨偏了,我知道怎样用8253实现定时使蜂鸣器鸣响,或许追求完美,我希望它在我规定的时间后鸣响,鸣响时间不能超过定时时间,一开始考虑8253计数器1用方式2,因为我发现它很符合我要的要求,它的低电平维持时间为输入信号的一个周期,而蜂鸣器就是低电平才响,后来为了保证蜂鸣时间,必须保证其输入信号的周期,而8253只有3个通道,用一个通道时不可能将输出信号保持在几秒的周期里的,在此我遇到了第一个棘手的问题。后来请教了老师,老师一点就完全明白了,可以通过GATE来控制响铃的时长,顿时茅塞顿开,如愿以偿地解决了这个问题。第二个棘手的问题出现在用开关控制时间的修改上,起先我增加了一段程序,可是加上之后,原来可以运行完好的程序出现了错误,又请教了老
本文标题:微机原理课设-电子钟设计
链接地址:https://www.777doc.com/doc-7827306 .html