《电子时钟课程设计.doc》由会员分享,可在线阅读,更多相关《电子时钟课程设计.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流电子时钟课程设计.精品文档.一、设计要求和目的 1.设计要求(1)单片机复位以后,自动进入计时状态,起始于00时00分00秒。(2)设计键盘调整时完成时间的设定,并有设置闹钟的功能。(3)用定时器实现计时功能。(4)设置按键,如S0,S1,S2,S3,S4.按下S0进入调试状态,S1设置准确时间,按第一次小时,第二次分钟,第三次秒钟。S3设置闹钟。2.设计目的(1)通过本次课程设计加深对单片机课程的全面认识复习、了解和掌握。 (2)掌握定时器、外部中断的设置和编程原理。 (3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
2、(4)学会画单片机程序设计流程图。(5)能够熟练的用proteus或者Multisim仿真软件的使用。(6)巩固和加深对电子学理论知识的理解和掌握,为以后专业设计、课程设计及毕业设计准备必要的工艺知识和操作技能二、总方案设计本次设计时钟电路使用了AT89S52单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒用一扬声器来进行定时提醒同时使用单片机语言程序来控制整个时钟显示使得编程变得更容易,这样通过四个模块、键盘、芯片、扬声器、显示屏即可满足设计要求。此设计原理框图如图2-1所示,此电路包括以下四个部分,单片机,按键,复位,
3、晶振闹铃电路及显示电路。图2-1设计原理框图各部分功能实现(1)单片机发送的信号通过程序控制最终在数码管上显示出来。(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。(3)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校码管上显示的时间。(4)单片机通过控制闹铃电路来完成 定时闹钟的功能。三、硬件设计3.1显示电路 本次设计选用的是六位数码管的动态显示驱动。通过单片机对数码管位选通COM端电路的控制,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,是各个数码管轮流受控显示,这就是动态驱动。动态显示可以
4、大幅度地降低硬件成本和电源的功耗。动态显示方式设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既要保护驱动电路易实现,又要保证显示后的数据稳定,无闪烁。 电路中共阴极数码管的段码a、b、c、d、e、f、g、dp分别与单片机的P20 P27依次相连,控制数码管中显示的字型;6个数码管的位选通信号由6个非门控制,分别接到单片机的P10P15端口上。程序中通过P10P15输出高低电平控制数码管的显示和关闭,高电平时对应数码管显示,显示内容由P20 P27输出的段码控制。要将实时时钟值送到6个共阴极数码管中显示,这可通过调用编写的显示子程序来实现,实现过程是:先将(时、分、秒)3个记时值按个
5、位和十位拆开成6个数字,然后查(09)段码表,再将段码分别送到显示缓冲区(片内数据存储30H35H设定为显示缓冲区, 用于存放段码)中去,最调用显示子程序送到6个共阴极数码管中显示。部分电路图如下:图3-132时钟电路时钟是单片机的心脏,单片机个功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍的工作。因此,时钟频率直接影响到单片机的运行速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本次设计用的是内部时钟方式。电路图如下:图3-2单片机内部有一个用于构成振荡器的高增益反向放大器,该反向放大器的输入端为芯片引脚XTAL1
6、,输出端为引脚XTAL2 。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。32按键调时电路 按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本次设计采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生相互影响。当需要计时暂停又或者计时的数值与实际的时间不同时,就可以通过按按键调节校准时间,本电路可以进行小时和分钟的加减极具人性化;按键与单片机连接的一端是由上拉电阻构成的高电平,然后通过按键,将另一端接到地(低电平)
7、当按下按键,按键将单片机的一端强制为低低电平,然后按键恢复,又恢复高电位,这就单片机接收到一个负脉冲。电路图如下:图3-334蜂鸣报时电路使用蜂鸣器来实现报时,蜂鸣器的原理就是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声。 该电路有P0.7口外接20欧,2.2K电阻,三极管以及蜂鸣器组成。当P0.7输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P0.7输出低电平时,三极管导通,有电流流过线圈,蜂鸣器发出声音。电路图如下: 图3-4四、软件设计4.1、软件程序内容本设计的软件程序包括主程序、定时中断程序、蜂鸣报时程序、时钟显示子程序、延时子程序等。另外,由于电路中有四个按键
8、,用来调整时、分的加减。下图是总程序流程图。图4-14.2、中断程序图4-2中断定时用来判断按键是否按下,然后做出反应调时还是调分。具体首先判断是否按下,然后再定时,开定时器。作出相应输出,最后中断返回。按键处理是可以调试,如果检测到分按键的加按下,分就加1,如果检测到时按键的加按时1。图4-24.3、 显示程序设计显示程序在程序中期着非常重要的作用,它是数码管能否正确显示的保证,此程序首先是初始化,赋值为零点。然后还有建立存储单元将要显示的数值放入其中,再将这些数分出来,最后送入与数码管连接的口。4.4、整点报时程序设计每到了整点就让蜂鸣器响,此程序是先判断是否是整点,如果到了整点,则判断是
9、,则执行相应的命令。部分程序如下: baoshi: CJNE R4,#1,tiaoshi CLR baojing ;开启蜂鸣器 MOV A,miao1 CJNE A,#2,tiaoshi ;报时2秒 SETB baojing ;关闭蜂鸣器 MOV R4,#0五、系统调试软件调试的调试一般可以重点放在分模块调试上,统调试最后一个环节。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。在本次电路调试中也遇到了些问题,比如电路模块之间或者接线之间的干扰,导致在计数时数码管上显示的数并不如预期的变化,有时候是每计数到11秒时,本该到1
10、2秒的时候,秒十位也跟着变化了,变成22秒,在调整小部分接线之后,这个问题也解决了,计数器正常工作。本次设计中,选用Keil软件来调试程序通过的单步或跟踪调试,使程序逐渐满足要求。仿真部分采用protus7.5软件,打开protus7.5软件后,在元件中找到要用的所有元件,然后进行原理图的绘制;绘制好以后在选择Keil中已经编译好的*.hex文件,选择运行,观察结果,根据显示的结果和课题的要求在修改程序,在运行检查,直到满足要求为止。五、总结做了两周的课程设计,有很多的心得体会,有关于单片机的,也有关于模电数电等基础科目的。因为单片机已经很久没复习,刚拿到题目,不知道从哪入手,后来通过对书本的
11、回顾,加深了对单片机的记忆。有些知识会迁移和联系模电数电。课堂教学考虑到大多数同学的需求,主要强调“基本”基本知识、基本理论、基本方法、基本技能。而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。我们正面临就业问题,这次课设给了我们一个机会去试验。单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。实践中获得的知识能让我对单片机的知识有更好的认识和理解。虽然这次的课程设计我参考了一些文献资料,没有做到创新,但在对程序的读写过程中我明白了许多。这次课程设计的最大收获是只有把理论用到实践中我们才能真正掌握好所学知识。参考文献:1 何立明.单片机
12、高级教程M. 北京:北京航空航天大学出版社,2000.2 李朝春.单片机原理及接口技术M. 北京:北京航空航天大学出版社,1999.3 刘迎春,林毓梁,等.MSC-51单片机原理与应用教程M. 北京:清华大学出版社,2005.4 李广弟.单片机基础(修订本)M. 北京:北京航空航天大学出版社,2001.5 胡汉才.单片机原理及接口技术M. 北京:清华大学出版社,1996.6 江力,林毓梁,等.单片机原理与应用技术M.北京:清华大学出版社,2006.附录一硬件原理图附录二 程序代码miao1 DATA 30H miao2 DATA 31Hfen1 DATA 32Hfen2 DATA 33Hshi
13、1 DATA 34Hshi2 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 M
14、OV miao1,#0 ;上电显示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 R
15、1,#08h,xian_3 ORL 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的话
16、就不检查 K1 JB K1,LL ;判断是否按下 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 ti
17、ao_2: CJNE R2,#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 jiesh
18、u fen_1_1: MOV 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 ji
19、eshu fen_2_1: MOV 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
20、MOV shi1,#0 MOV 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
21、CALL DELAY JNB 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,
22、TT ;判断是否抬起 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
23、 SETB p1.1 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 C
24、JNE A,#10,JJ 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