电子时钟课程设计
数字电子时钟
一、设计要求和目的
1.设计要求
(1)单片机复位以后,自动进入计时状态,起始于00时00分00秒。
(2)设计键盘调整时完成时间的设定,并有设置闹钟的功能。
(3)用定时器实现计时功能。
(4)设置按键,如S0,S1,S2,S3,S4.按下S0进入调试状态,S1设置准确时间,按第一次小时,第二次分钟,第三次秒钟。S3设置闹钟。
2.设计目的
(1)通过本次课程设计加深对单片机课程的全面认识复习、了解和掌握。
(2)掌握定时器、外部中断的设置和编程原理。
(3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
(4)学会画单片机程序设计流程图。
(5)能够熟练的用proteus或者Multisim仿真软件的使用。
(6)巩固和加深对电子学理论知识的理解和掌握,为以后专业设计、课程设计及毕业设计准备必要的工艺知识和操作技能
二、总
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计
本次设计时钟电路使用了AT89S52单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时
一扬声器来进行定时提醒
整个时钟显示容易,这样通过四个模块、键盘、芯片、扬声器、显示屏即可满足设计要求。
-1所示,此电路包括以下四个部分,单片机,按键,此设计原理框图如图2
复位,晶振闹铃电路及显示电路。
1
数字电子时钟
图2-1设计原理框图
各部分功能实现
1)单片机发送的信号通过程序控制最终在数码管上显示出来。 2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。 3)为使时钟走时与
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
时间一致,校时电路是必不可少的,键盘用来校码
管上显示的时间。
(4)单片机通过控制闹铃电路来完成 定时闹钟的功能。
三、硬件设计
3.1显示电路
本次设计选用的是六位数码管的动态显示驱动。通过单片机对数码管位选通COM端电路的控制,只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,是各个数码管轮流受控显示,这就是动态驱动。动态显示可以大幅度地降低硬件成本和电源的功耗。动态显示方式设计上如果处理不当,易造成亮度低,闪烁问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
。因此合理的设计既要保护驱动电路易实现,又要保证显示后的数据稳定,无闪烁。
电路中共阴极数码管的段码a、b、c、d、e、f、g、dp分别与单片机的P2(0, P2(7依次相连,控制数码管中显示的字型;6个数码管的位选通信号由6个非门控制,分别接到单片机的P1(0,P1(5端口上。程序中通过P1(0,P1(5输出高低电平控制数码管的显示和关闭,高电平时对应数码管显示,显示内容由P2(0, P2(7输出的段码控制。要将实时时钟值送到6个共阴极数码管中显示,这可通过调用编写的显示子程序来实现,实现过程是:先将(时、分、秒)3个记时值按个位和十位拆开成6个数字,
2
数字电子时钟
然后查(0,9)段码表,再将段码分别送到显示缓冲区(片内数据存储30H~35H设定为显示缓冲区, 用于存放段码)中去,最调用显示子程序送到6个共阴极数码管中显示。部分电路图如下:
图3-1
3(2时钟电路
时钟是单片机的心脏,单片机个功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍的工作。因此,时钟频率直接影响到单片机的运行速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本次设计用的是内部时钟方式。电路图如下:
3
数字电子时钟
图3-2
单片机内部有一个用于构成振荡器的高增益反向放大器,该反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2 。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。
3(2按键调时电路
按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本次设计采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生相互影响。当需要计时暂停又或者计时的数值与实际的时间不同时,就可以通过按按键调节校准时间,本电路可以进行小时和分钟的加减极具人性化;按键与单片机连接的一端是由上拉电阻构成的高电平,然后通过按键,将另一端接到地(低电平)当按下按键,按键将单片机的一端强制为低低电平,然后按键恢复,又恢复高电位,这就单片机接收到一个负脉冲。电路图如下:
4
数字电子时钟
图3-3
3(4蜂鸣报时电路
使用蜂鸣器来实现报时,蜂鸣器的原理就是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声。 该电路有P0.7口外接20欧,2.2K电阻,三极管以及蜂鸣器组成。当P0.7输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P0.7输出低电平时,三极管导通,有电流流过线圈,蜂鸣器发出声音。电路图如下:
图3-4
四、软件设计
5
数字电子时钟
4.1、软件程序内容
本设计的软件程序包括主程序、定时中断程序、蜂鸣报时程序、时钟显示子程序、延时子程序等。另外,由于电路中有四个按键,用来调整时、分的加减。下图是总程序流程图。
图4-1
4.2、中断程序
中断定时用来判断按键是否按下,然后做出反应调时还是调分。具体首先
6
数字电子时钟
判断是否按下,然后再定时,开定时器。作出相应输出,最后中断返回。按键处理是可以调试,如果检测到分按键的加按下,分就加1,如果检测到时按键
。 的加按时1
图4-2
4.3、 显示程序设计
显示程序在程序中期着非常重要的作用,它是数码管能否正确显示的保证,此程序首先是初始化,赋值为零点。然后还有建立存储单元将要显示的数值放入其中,再将这些数分出来,最后送入与数码管连接的口。
4.4、整点报时程序设计
每到了整点就让蜂鸣器响,此程序是先判断是否是整点,如果到了整点,则判断是,则执行相应的命令。
部分程序如下:
baoshi:
CJNE R4,#1,tiaoshi
CLR baojing ;开启蜂鸣器
7
数字电子时钟
MOV A,miao1
CJNE A,#2,tiaoshi ;报时2秒
SETB baojing ;关闭蜂鸣器
MOV R4,#0 五、系统调试
软件调试的调试一般可以重点放在分模块调试上,统调试最后一个环节。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。
在本次电路调试中也遇到了些问题,比如电路模块之间或者接线之间的干扰,导致在计数时数码管上显示的数并不如预期的变化,有时候是每计数到11秒时,本该到12秒的时候,秒十位也跟着变化了,变成22秒,在调整小部分接线之后,这个问题也解决了,计数器正常工作。
本次设计中,选用Keil软件来调试程序通过的单步或跟踪调试,使程序逐渐满足要求。仿真部分采用protus7.5软件,打开protus7.5软件后,在元件中找到要用的所有元件,然后进行原理图的绘制;绘制好以后在选择Keil中已经编译好的*.hex文件,选择运行,观察结果,根据显示的结果和课题的要求在修改程序,在运行检查,直到满足要求为止。
五、总结
做了两周的课程设计,有很多的
心得体会
决胜全面小康心得体会学党史心得下载党史学习心得下载军训心得免费下载党史学习心得下载
,有关于单片机的,也有关于模电数电等基础科目的。
因为单片机已经很久没复习,刚拿到题目,不知道从哪入手,后来通过对书本的回顾,加深了对单片机的记忆。有些知识会迁移和联系模电数电。课堂教学考虑到大多数同学的需求,主要强调“基本”——基本知识、基本理论、基本方法、基本技能。而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。我们正面临就业问题,这次课设给了我们一个机会去试验。
单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。实践中获得的知识能让我对单片机的知识有更好的认识和理解。虽然这次的课程设计我参考了一些文献资料,没有做到创新,但在对程序的读写
8
数字电子时钟
过程中我明白了许多。这次课程设计的最大收获是只有把理论用到实践中我们才能真正掌握好所学知识。
9
数字电子时钟
参考文献:
[1] 何立明.单片机高级教程[M]. 北京:北京航空航天大学出版社,2000. [2] 李朝春.单片机原理及接口技术[M]. 北京:北京航空航天大学出版社,1999.
[3] 刘迎春,林毓梁,等.MSC-51单片机原理与应用教程[M]. 北京:清华大学出版社,2005.
单片机基础(修订本)[M]. 北京:北京航空航天大学出版社,2001. [4] 李广弟.
[5] 胡汉才.单片机原理及接口技术[M]. 北京:清华大学出版社,1996. [6] 江力,林毓梁,等.单片机原理与应用技术[M].北京:清华大学出版社,2006.
10
数字电子时钟
附录一
硬件原理图
11
数字电子时钟 附录二
程序代码
miao1 DATA 30H miao2 DATA 31H fen1 DATA 32H fen2 DATA 33H shi1 DATA 34H shi2 DATA 35H shuju_0 DATA 36H xian_zhi EQU P2 baojing EQU P0.7
xian_kai EQU P1
K1 bit p0.0
K2 bit p0.1
K3 bit p0.2
K4 bit p0.3
ORG 0000H
JMP main
ORG 000BH
JMP dingshi
main:
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
12
数字电子时钟
MOV 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 R1,#08h,xian_3
ORL A,#80H
xian_3:
MOV xian_zhi,A
MOV xian_kai,shuju_0
call DELAY
MOV xian_kai,#0
13
数字电子时钟
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,#0
tiaoshi:
CJNE R3,#0,tiao_1 ;R3为1的话就不检查 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
14
数字电子时钟
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,#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
15
数字电子时钟
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 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
16
数字电子时钟
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:
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
17
数字电子时钟
CJNE A,#4,shi_0 ;shi_0表没加到5
MOV shi1,#0
MOV shi2,#0
JMP jieshu
shi_0:
MOV shi1,A
JMP jieshu
shi_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 jieshu
shi_1_1:MOV shi1,A
JMP jieshu
shi_jian:
JB K4,jieshu ;判断是否减1
CALL DELAY
CALL DELAY
JB K4,jieshu
DD:JNB K4,DD ;判断是否抬起
CALL DELAY
CALL DELAY
JNB K4,DD
MOV A,shi1
DEC A
18
数字电子时钟
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,A
jieshu: ;调时结束判断
JB K1,NN ;判断是否按下 K1
CALL DELAY
CALL DELAY
JB K1,NN
JMP TT
NN:JMP tiaoshi
TT:JNB K1,TT ;判断是否抬起
CALL DELAY
CALL DELAY
JNB K1,TT
MOV R5,#0
MOV R3,#0
MOV R2,#0
JMP kaitou
xian_fen: ;只显示分位
19
数字电子时钟
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
RET
xian_shi: ;只显示十位
MOV A,shi1
MOVC A,@A+DPTR
MOV xian_zhi,A
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
RET
dingshi: MOV TL0,#3CH
MOV TH0,#2CH
20
数字电子时钟
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,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
21
数字电子时钟
CJNE A,#10,JJ
MOV shi1,#0
INC shi2
JJ: RETI
DELAY: MOV r7,#6
D2: MOV R6,#100
D1: NOP
NOP
NOP
DJNZ R6,D1
DJNZ R7,D2
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
22
数字电子时钟
23