单片机原理与应用课程设计数字电子钟课程设计.doc

上传人:laozhun 文档编号:4147286 上传时间:2023-04-07 格式:DOC 页数:17 大小:115.50KB
返回 下载 相关 举报
单片机原理与应用课程设计数字电子钟课程设计.doc_第1页
第1页 / 共17页
单片机原理与应用课程设计数字电子钟课程设计.doc_第2页
第2页 / 共17页
单片机原理与应用课程设计数字电子钟课程设计.doc_第3页
第3页 / 共17页
单片机原理与应用课程设计数字电子钟课程设计.doc_第4页
第4页 / 共17页
单片机原理与应用课程设计数字电子钟课程设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《单片机原理与应用课程设计数字电子钟课程设计.doc》由会员分享,可在线阅读,更多相关《单片机原理与应用课程设计数字电子钟课程设计.doc(17页珍藏版)》请在三一办公上搜索。

1、重庆机电职业技术学院课程设计说明书设计名称: 单片机原理与应用课程设计 题 目: 数字电子钟课程设计 学生姓名: 专 业: 09电气自动化技术 班 级: 091001 学 号: 指导教师: 日 期: 2011 年 6 月 20 日重庆机电职业技术学院课程设计任务书 电气自动化技术 专 业 2009 年级 一 班一、设计题目数字电子时钟设计二、主要内容1、利用CPU的定时器定时,设计一个电子时钟,使七段数码管输出记时值,格式如下:XX XX XX 由左向右分别为:时、分、秒2、利用蜂鸣器实现整点报时功能3、利用AN1AN4实现时,分的分别加减。三、具体要求1、硬件电路实验连线板上已经接好,无需另

2、外接线。本课程设计中要把跳线JP1(板子右上角,LED灯正上方)跳到DIG上,J23(在黄色继电器右上方)接到右端。本课程设计中要把跳线J9(紧贴51插座右方,蜂鸣器下方,RST复位键上方)跳到右端本课程设计要把跳线J6跳到AN端,AN1(P0.0) AN4(P0.4),J6在51插座右下方,44键盘左上方。2、课程设计说明 与定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。本课程设计中用定时器T0产生1秒钟基本时间单位,本系统fo

3、sc=11.0592MHz,当定时器T0工作在方式1(16位)时,最大定时时间为: 216* 0.9216s= 60397.9776s再利用软件记数,当T0中断17次时,所用时间为60397.9776*17=1026765.6192s1s因此在T0中断处理程序中,要判断中断次数是否到17次,若不到17次,则只使中断次数加1,然后返回,若到了17次,则使电子秒表记时值加1(十进制),请参考硬件实验四有关内容。 电路中共阴极数码管的段码a、b、c、d、e、f、g、dp分别与单片机的P20 P27依次相连,控制数码管中显示的字型;6个数码管的位选通信号由6个非门控制,分别接到单片机的P10 P15端

4、口上。程序中通过P10 P15输出高低电平控制数码管的显示和关闭,高电平时对应数码管显示,显示内容由P20 P27输出的段码控制。要将实时时钟值送到6个共阴极数码管中显示,这可通过调用编写的显示子程序来实现,实现过程是:先将(时、分、秒)3个记时值按个位和十位拆开成6个数字,然后查(09)段码表,再将段码分别送到显示缓冲区(片内数据存储30H35H设定为显示缓冲区, 用于存放段码)中去,最调用显示子程序送到6个共阴极数码管中显示。 蜂鸣器由单片机的P0.7口控制:当P0.7输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P0.7输出低电平时,三极管导通,有电流流过线圈,蜂鸣器发出声

5、音。 使用独立式按键AN1(P0.0)AN4(P0.3)时要注意采用软件消抖动的方法,一般采用软件延时(10ms)的方法,通过P0.0P0.4的变化控制时,分的分别加减(手动调整时间)。3、实验仪器和设备:PC机、WAVE软件、Proteus软件、51超级板等。4、参考资料见附件四、进度安排第1天:查阅资料,绘制硬件电路原理图;第2天:编写显示子程序; 第3天:编写主程序和T0中断子程序第4天:完成硬件仿真调试第5天:实现课程设计题目要求,完成课程设计五、成绩评定 指导教师 签名 日期 年 月 日系主任 审核 日期 年 月 日 目 录一、 设计任务分析 1二、 总体方案设计 1三、数字电子钟硬

6、件方案的设计 13. 1时钟电路的设计 13. 2复位电路的设计 23. 3按键电路的设计 2 3. 4蜂鸣报时电路的计 2 3. 5显示电路的设计 3四、 数字电子钟软件件方案的设计34、1软件内容34、2按键程序设计44、3显示程序设计44、4蜂鸣报时程序设计5五、数字电子钟的系统调试5六、设计总结及心得5 参考文献 5 附件一 6 附件二 6 一、设计任务分析1、本课题主要的目的是本课题主要的目的是为了通过亲自的实践,深入的了解单片机程序设计的方法,提高同学的思维和创新能力,让同学在做的过程中进一步掌握理论知识。在实践中运用理论知识,同时提高我们的动手能力。 1、通过本次课程设计加深对单

7、片机课程的全面认识复习、了解和掌握。 2、掌握定时器、外部中断的设置和编程原理。 3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。4、学会画单片机程序设计流程图。5、能够熟练的用proteus或者Multisim仿真软件的使用。2、本课题的内容分析1、利用CPU的定时器定时,设计一个电子时钟,使七段数码管输出记时值,格式如下:XX XX XX 由左向右分别为:时、分、秒2、利用蜂鸣器实现整点报时功能3、利用AN1AN4实现时,分的分别加减。二、总体方案设计 本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂

8、, 使用键盘上的按键来调整时钟的时、分加减,用一蜂鸣器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,这样通过五个模块:按键电路、复位电路、时钟电路、蜂鸣电路、显示电路即可满足设计要求。系统框图如下: 软件程序包含:中断程序、定时程序、查表程序、显示程序、判断程序、 计数程序、延时程序等。三、数字电子钟硬件方案的设计31时钟电路的设计 时钟是单片机的心脏,单片机个功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍的工作。因此,时钟频率直接影响到单片机的运行速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本次设计用

9、的是内部时钟方式。电路图如下: 单片机内部有一个用于构成振荡器的高增益反向放大器,该反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2 。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。32复位电路的设计 单片机的复位电路分为上电复位和手动复位,本次设计采用的是上电复位。上电复位:上电复位电路是一种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST引脚一个短暂的高电平信号,这个信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统

10、安全可靠的复位,RST引脚的高电平必须维持足够长的时间。电路图如下: 33按键调时电路的设计 按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本次设计采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生相互影响。当需要计时暂停又或者计时的数值与实际的时间不同时,就可以通过按按键调节校准时间,本电路可以进行小时和分钟的加减极具人性化;按键与单片机连接的一端是由上拉电阻构成的高电平,然后通过按键,将另一端接到地(低电平)当按下按键,按键将

11、单片机的一端强制为低低电平,然后按键恢复,又恢复高电位,这就单片机接收到一个负脉冲。电路图如下: 34蜂鸣报时电路的设计 使用蜂鸣器来实现报时,蜂鸣器的原理就是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声。 该电路有P0.7口外接20欧,2.2K电阻,三极管以及蜂鸣器组成。当P0.7输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P0.7输出低电平时,三极管导通,有电流流过线圈,蜂鸣器发出声音。电路图如下: 3.5显示电路设计 本次设计选用的是六位数码管的动态显示驱动。通过单片机对数码管位选通COM端电路的控制,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选

12、通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,是各个数码管轮流受控显示,这就是动态驱动。动态显示可以大幅度地降低硬件成本和电源的功耗。动态显示方式设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既要保护驱动电路易实现,又要保证显示后的数据稳定,无闪烁。 电路中共阴极数码管的段码a、b、c、d、e、f、g、dp分别与单片机的P20 P27依次相连,控制数码管中显示的字型;6个数码管的位选通信号由6个非门控制,分别接到单片机的P10P15端口上。程序中通过P10P15输出高低电平控制数码管的显示和关闭,高电平时对应数码管显示,显示内容由P20 P27输出的段码控制。要将实时时

13、钟值送到6个共阴极数码管中显示,这可通过调用编写的显示子程序来实现,实现过程是:先将(时、分、秒)3个记时值按个位和十位拆开成6个数字,然后查(09)段码表,再将段码分别送到显示缓冲区(片内数据存储30H35H设定为显示缓冲区, 用于存放段码)中去,最调用显示子程序送到6个共阴极数码管中显示。部分电路图如下: 四、数字电子钟的软件设计方案4、1软件程序内容本设计的软件程序包括主程序、定时中断程序、蜂鸣报时程序、时钟显示子程序、延时子程序等。另外,由于电路中有四个按键,用来调整时、分的加减。下图是总程序流程图 总程序流程图4、2按键中断程 序(含定时)中断定时用来判断按键是否按下,然后做出反应调

14、时还是调分。具体首先判断是否按下,然后再定时,开定时器。作出相应输出,最后中断返回。按键处理是可以调试,如果检测到分按键的加按下,分就加1,如果检测到时按键的加按下,时就加1。4、3 显示程序设计显示程序在程序中期着非常重要的作用,它是数码管能否正确显示的保证,此程序首先是初始化,赋值为零点。然后还有建立存储单元将要显示的数值放入其中,再将这些数分出来,最后送入与数码管连接的口。4、4整点报时程序设计每到了整点就让蜂鸣器响,此程序是先判断是否是整点,如果到了整点,则判断是,则执行相应的命令。部分程序如下:baoshi: CJNE R4,#1,tiaoshi CLR baojing ;开启蜂鸣器

15、 MOV A,miao1 CJNE A,#2,tiaoshi ;报时2秒 SETB baojing ;关闭蜂鸣器 MOV R4,#0五、 数字电子钟的系统调试软件调试的调试一般可以重点放在分模块调试上,统调试最后一个环节。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。本次设计中,选用Keil软件来调试程序通过的单步或跟踪调试,使程序逐渐满足要求。仿真部分采用protus7.5软件,打开protus7.5软件后,在元件中找到要用的所有元件,然后进行原理图的绘制;绘制好以后在选择Keil中已经编译好的*.hex文件,选择运行,

16、观察结果,根据显示的结果和课题的要求在修改程序,在运行检查,直到满足要求为止。六、 设计总结和心得通过一周的实训,才深深感到自己单片机知识的匮乏,有一种书到用时方恨少的感觉。虽然在研究室比起其他同学先接触单片机,但是也只是皮毛。开始接触的时候觉得好耍,可能是对单片机的了解不多,才会产生相对不难的错误认识。现在用它来设计自己的电路,才知道知识的欠缺。也许对某些同学来说已经是轻车熟路了,可是对于初学硬件设计的同学来说,相对在选择的思路上走的弯路多些,也许我们到最后可能没有终点,但这对我们是一笔难能可贵的财富,因为我们在曲折中学到的不仅仅是书本上的知识,更多的是我们与硬件设计比较好的同学交流之间的思

17、考。在别人的原有的程序设计上添加自己的成分,并不是一件易事,我们要对原有电路十分了解。题目要求的严格性才出现了比较困难的局面,不的不像他人和老师请教。一周的实习虽然出现了不少问题,感觉到自己不论是做电路,还是调试程序都能在犯错后学到不少知识,这与老师的谆谆教诲分不开的。参考文献1 单片机原理及应用教材及单片机实验教程2 Keil软件、protus7.5软件、亿图软件的使用说明3 7404非门资料、学习电路图的方法与技巧附件一 硬件原理图附件二 源程序miao1 DATA 30H miao2 DATA 31Hfen1 DATA 32Hfen2 DATA 33Hshi1 DATA 34Hshi2

18、DATA 35Hshuju_0 DATA 36Hxian_zhi EQU P2baojing EQU P0.7xian_kai EQU P1 K1 bit p0.0K2 bit p0.1K3 bit p0.2K4 bit p0.3ORG 0000HJMP mainORG 000BHJMP dingshimain: MOV P1,#0 SETB baojing MOV R2,#0 ;R2决定是调时 还是调分 MOV R3,#0 ;R3决定K1是否按下 MOV R4,#0 ;R4用于报时控制 MOV R5,#0 ;R5为定时器17次判断 MOV DPTR,#TAB MOV miao1,#0 ;上电

19、显示00:00:00 MOV miao2,#0 MOV fen1,#0 MOV fen2,#0 MOV shi1,#0 MOV shi2,#0 MOV TMOD,#01H ;16位定时 MOV TL0,#3CH MOV TH0,#2CH MOV IE,#82H SETB TR0 ;开定时器kaitou: MOV A,#1 ;显示程序 MOV shuju_0,A MOV R0,#35H xian_1: MOV A,R0 MOVC A,A+DPTR MOV R1,shuju_0 CJNE R1,#02H,xian_2 ORL A,#80H xian_2: CJNE R1,#08h,xian_3 O

20、RL A,#80H xian_3: MOV xian_zhi,A MOV xian_kai,shuju_0 call DELAY MOV xian_kai,#0 MOV A,shuju_0 RL A MOV shuju_0,A DEC R0 CJNE A,#40H,xian_1 baoshi: CJNE R4,#1,tiaoshi CLR baojing ;开启蜂鸣器 MOV A,miao1 CJNE A,#2,tiaoshi ;报时2秒 SETB baojing ;关闭蜂鸣器 MOV R4,#0tiaoshi: CJNE R3,#0,tiao_1 ;R3为1的话就不检查 K1 JB K1,L

21、L ;判断是否按下 K1 CALL DELAY CALL DELAY JB K1,LL JMP QQ LL:JMP kaitou QQ: JNB K1,QQ;判断是否抬起 CALL DELAY CALL DELAY JNB K1,QQ MOV R3,#1 tiao_1: JB K2,tiao_2 ;判断是否按下 K2 CALL DELAY CALL DELAY JB K2,tiao_2 YY: JNB K2,YY ;判断是否抬起 CALL DELAY CALL DELAY JNB K2,YY MOV R3,#1 MOV A,R2 CPL A MOV R2,A tiao_2: CJNE R2,#

22、0,WW ;R2决定是调时 还是调分 JMP XX WW: JMP shi_tiao XX: CALL xian_fen ;分位调节 JB K3,fen_2;判断是否加1 CALL DELAY CALL DELAY JB K3,fen_2 FF: JNB K3,FF ;判断是否抬起 CALL DELAY CALL DELAY JNB K3,FF fen_1: MOV A,fen1 INC A CJNE A,#10,fen_1_1 MOV fen1,#0 MOV A,fen2 INC A CJNE A,#6,fen_1_2 MOV fen2,#0 JMP jieshu fen_1_1: MOV

23、fen1,A JMP jieshu fen_1_2: MOV fen2,A JMP jieshu fen_2: ;判断是否减1 JB K4,KK CALL DELAY CALL DELAY JB K4,KK JMP EE KK: JMP jieshu EE: JNB K4,EE;判断是否抬起 CALL DELAY CALL DELAY JNB K4,EE MOV A,fen1 DEC A CJNE A,#0FFH,fen_2_1 MOV fen1,#9 MOV A,fen2 DEC A CJNE A,#0FFH,fen_2_2 MOV fen2,#5 JMP jieshu fen_2_1: M

24、OV fen1,A JMP jieshu fen_2_2: MOV fen2,A JMP jieshu shi_tiao: ;时位调节 CALL xian_shi JB K3,shi_jian ;判断是否加1 CALL DELAY CALL DELAY JB K3,shi_jian GG: JNB K3,GG ;判断是否抬起 CALL DELAY CALL DELAY JNB K3,GG MOV A,shi2 CJNE A,#2,shi_1 ;shi_1表十位不是2的数处理 MOV A,shi1 INC A CJNE A,#4,shi_0 ;shi_0表没加到5 MOV shi1,#0 MOV

25、 shi2,#0 JMP jieshushi_0: MOV shi1,A JMP jieshushi_1: MOV A,shi1 INC A CJNE A,#10,shi_1_1 ;shi_1_1是表个位没加到10的 MOV shi1,#0 MOV A,shi2 INC A MOV shi2,A JMP jieshushi_1_1: MOV shi1,A JMP jieshushi_jian: JB K4,jieshu;判断是否减1 CALL DELAY CALL DELAY JB K4,jieshu DD: JNB K4,DD ;判断是否抬起 CALL DELAY CALL DELAY JN

26、B K4,DD MOV A,shi1 DEC A CJNE A,#0FFH,shijian_1 MOV shi1,#9 MOV A,shi2 DEC A CJNE A,#0FFH,shijian_0 MOV shi1,#3 MOV shi2,#2 JMP jieshu shijian_0: MOV shi2,A JMP jieshu shijian_1: MOV shi1,Ajieshu:;调时结束判断 JB K1,NN ;判断是否按下 K1 CALL DELAY CALL DELAY JB K1,NN JMP TT NN: JMP tiaoshi TT: JNB K1,TT ;判断是否抬起

27、CALL DELAY CALL DELAY JNB K1,TT MOV R5,#0 MOV R3,#0 MOV R2,#0 JMP kaitou xian_fen: ;只显示分位 MOV A,fen1 MOVC A,A+DPTR MOV xian_zhi,A SETB p1.3 CALL DELAY CLR p1.3 MOV A,fen2 MOVC A,A+DPTR MOV xian_zhi,A SETB p1.2 CALL DELAY CLR p1.2 RETxian_shi: ;只显示十位 MOV A,shi1 MOVC A,A+DPTR MOV xian_zhi,A SETB p1.1

28、CALL DELAY CLR p1.1 MOV A,shi2 MOVC A,A+DPTR MOV xian_zhi,A SETB p1.0 CALL DELAY CLR p1.0 RETdingshi: MOV TL0,#3CH MOV TH0,#2CH INC R5 CJNE R5,#18,JJ ;相等进行秒加1处理 MOV R5,#0 INC miao1 MOV A,miao1 CJNE A,#10,JJ MOV miao1,#0 INC miao2 MOV A,miao2 CJNE A,#6,JJ MOV miao2,#0 INC fen1 MOV A,fen1 CJNE A,#10,J

29、J MOV fen1,#0 INC fen2 MOV A,fen2 CJNE A,#6,JJ MOV fen2,#0 MOV R4,#1 MOV A,shi2 CJNE A,#2,LOOP INC shi1 MOV A,shi1 CJNE A,#5,JJ MOV shi1,#0 MOV shi2,#0 LOOP:INC shi1 MOV A,shi1 CJNE A,#10,JJ MOV shi1,#0 INC shi2 JJ:RETI DELAY:MOV r7,#6 D2: MOV R6,#100D1: NOP NOP NOP DJNZ R6,D1 DJNZ R7,D2 RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号