时钟计时器.docx
《时钟计时器.docx》由会员分享,可在线阅读,更多相关《时钟计时器.docx(16页珍藏版)》请在冰豆网上搜索。
时钟计时器
目录
1一.前言
二.设计任务及方案
1.设计目的2
2.设计要求3
3.设计内容3
4.时钟计时器系统的总设计原理框图3
5.设计原理分析3
三.硬件设计及系统功能说明
1.STC89C52单片机4
2.中断源4
3.中断控制4
4.时间调整按键控制5
5.时钟电路系统图6
6.数码管显示电路图6
7.蜂鸣器整点提醒电路图7
四.软件设计
1.主程序执行流程图7
2.定时器T0中断程序流程图及说明7
3.总程序清单8
五.总结和收获14
六.参考文献15
时钟计时器的设计
一.前言
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快、单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对单片机的学习、应用,运用STC89C52单片机设计一个时钟计时器,并通过数码管能够准确显示时间,能整点提醒,还能调整时间。
二.设计任务及方案
1.设计目的
(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识的能力。
(2)培养针对课题需要,选择和查阅有关文献资料的自学能力,提高组成系统、编程、调试的动手能力。
(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
(4)加深对汇编语言指令的了解和使用,并进一步提高使用汇编语言编程的能力。
2.设计要求
(1)时钟计时器能显示时、分、秒。
(2)以24小时计时方式运行。
(3)能整点提醒。
(4)能使用按键进行时、分的调整。
3.设计内容
利用单片机的定时/计数器、中断系统以及键盘和6位LED显示器进行设计。
在数码管显示器上实现电子时钟,显示格式为00-00-00,并且能进行调整时间和整点提示。
4.时钟计时器系统的总设计原理框图
5.设计原理分析
采用了STC89C52单片机的共阴极6段LED数码管显示器;P0口输出段码数据;P1.2口接蜂鸣器;P2.0----P2.5口作列扫描输出;P3.0、P3.1、P3.2、和P3.3口接4个按钮开关,用于调时及功能设置;采用12MHz晶振,来提高秒计时的精确性。
计时采用了定时器T0中断来实现。
主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。
三.硬件设计及系统功能说明
1.STC89C52单片机
STC89C52单片机的功能:
8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
2.中断源
STC89C52单片机是一个多中断源的单片机,有五个中断源:
外部中断0、定时器0中断、外部中断1、定时器1中断和串行接收或发送中断。
各中断源的中断处理程序入口地址如下表所示:
中断源
入口地址
外部中断0
0003H
定时器0
000BH
外部中断1
0013H
定时器1
001BH
串行口
0023H
3.中断控制
(1)中断的开放或禁止是由中断允许寄存器IE控制的。
IE的格式:
EA
ES
ET1
EX1
ET0
EX0
EA:
中断总允许位。
EA=1,开放总中断,而各个中断源的中断请求是允许还是禁止,分别由各自的中断允许位确定;EA=0,禁止一切中断。
ES:
串行口中断允许位。
ET1:
定时器T1的中断允许位。
ET0:
定时器T0的中断允许位。
EX1:
外部中断1(INT1)的中断允许位。
EX0:
外部中断1(INT1)的中断允许位。
以上五个中断允许位的意义是:
0为禁止中断,1为允许中断。
(2)中断源优先级控制-中断优先级寄存器IP。
STC89C52单片机有高、低两个中断优先级,5个中断源可由程序设置为高优先级中断或低优先级中断,实现二级中断嵌套。
一个正在执行的低优先级中断源的中断服务程序,能被高优先级中断源所中断,但不能被同级别的另一个中断源所中断。
STC89C52单片机的5个中断源的优先级由中断优先级寄存器IP的相应位设定。
IP格式:
PS
PT1
PX1
PT0
PX0
4.时间调整按键控制
(1)按SW1进入调整小时状态:
LED8单元闪烁,按SW1加1,按SW2减1.
(2)按SW3进入调整分钟状态:
LED8单元闪烁,按SW3加1,按SW4减1.
5.时钟电路系统图
6.数码管显示电路图
7.蜂鸣器整点提醒电路图
四.软件设计
1.主程序执行流程图
2.定时器T0中断程序流程图及说明
定时器T0用于时间计时。
定时溢出中断周期设为4ms,中断进入后先进行定时中断初值校正,当中断里累计20次时,对秒计数单元进行加1操作。
时钟显示时间单元地址分别在22H23H、24H25H、26H27H中,最大计时值为23时59分59秒。
在计数单元中,采用十进制BCD码计数,满10进位。
3.总程序清单
说明:
定时器T0、T1溢出周期为4MS,T0为秒计数用。
P3.0、P3.1、P3.2、P3.3为调整按钮,P0口为字符输出口,P2为扫描口,P1.2为蜂呜器口,采用共阴显示管。
30H-32H为时钟计时单元,22H-27H为显示时间单元。
BUFF_KEYEQU21H;键盘键
LED1EQU22H;数码管显示缓存
LED2EQU23H
LED3EQU24H
LED4EQU25H
LED5EQU26H
LED6EQU27H
LED_LPEQU28H;T0键盘显示扫描缓存
HOREQU30H;小时值缓存
MINEQU31H;分钟值缓存
SECEQU32H;秒值缓存
F_BEEPBIT01H
LED_PORTEQUP0;定义数码管
DIG_PORTEQUP2
SW1BITP3.0;定义按键
SW2BITP3.1
SW3BITP3.2
SW4BITP3.3
SW5BITP3.4
SW6BITP3.5
BEEPBITP1.6
ORG000H
JMPMAIN
ORG00BH
JMPT0_INT
ORG100H;中断入口地址
MAIN:
MOVSP,#40H
MOVPSW,#00H
MOVR0,#7FH;初始化RAM区
CLR_RAM:
MOVA,#00H
MOV@R0,A
DJNZR0,CLR_RAM
MOVP1,0FFH;INIT
MOVP2,0FFH;输出高电平,灭7段LED,低电平有效
MOVP0,0FFH
MOVP3,0FFH
MOVHOR,#12
MOVTMOD,#21H;初始化定时器T0
MOVTH0,#240;T0=4MS
MOVTL0,#96
SETBTR0;启动定时器T0
SETBET0
SETBEA;开中断
WAIT_KEY:
;等候按键
JNBSW1,SW1_OK
JNBSW2,SW2_OK
JNBSW3,SW3_OK
JNBSW4,SW4_OK
JNBSW5,SW5_OKA
JNBSW6,SW6_OKA
JMPWAIT_KEY
SW5_OKA:
JMPSW5_OK
SW6_OKA:
JMPSW6_OK
SW1_OK:
MOVA,HOR
CJNEA,#24,SW1_OVER
MOVHOR,#00H
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
;时显示
SW1_OVER:
INCHOR;时加1
SETBF_BEEP
CLRBEEP
LCALLDEL;调用延时程序
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW2_OK:
MOVA,HOR
CJNEA,#00,SW2_OVER
MOVHOR,#23
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW2_OVER:
DECHOR;时减1
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
JMPWAIT_KEY
;分显示
SW3_OK:
MOVA,MIN
CJNEA,#59,SW3_OVER;判断分是否等于59,不等跳转到SW3_OVER
MOVMIN,#00H;清零
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW3_OVER:
INCMIN;分加1
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW4_OK:
MOVA,MIN
CJNEA,#00,SW4_OVER
MOVMIN,#59
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW4_OVER:
DECMIN;分减1
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
;秒显示
SW5_OK:
MOVA,SEC
CJNEA,#59,SW5_OVER
MOVSEC,#00H
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW5_OVER:
INCSEC;秒加1
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW6_OK:
MOVA,SEC
CJNEA,#00,SW6_OVER
MOVHOR,#59
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
SW6_OVER:
DECSEC;时减1
SETBF_BEEP
CLRBEEP
LCALLDEL
SETBBEEP
CLRF_BEEP
JMPWAIT_KEY
DEL:
MOVR5,#03;为演示方便,人为插入的延时程序
DEL01:
MOVR6,#200
DEL02:
MOVR7,#200
DJNZR7,$;判断R7减1是否等于0,不等于0则跳转
DJNZR6,DEL02
DJNZR5,DEL01
RET
BIN_BCD:
MOVB,#10
DIVAB
RET
;T0INTRRUPT数码管扫描定时中断
T0_INT:
PUSHACC
PUSHPSW
MOVTH0,#240;T0=4MS
MOVTL0,#96
INCLED_LP
MOVA,LED_LP
CJNEA,#250,CONT_SCAN;250*4MS=1S
MOVLED_LP,#00H;数码管清零
INCSEC;秒加1
MOVA,SEC
CJNEA,#60,CONT_SCAN;判断秒是否等于60,等于加1给分
MOVSEC,#00H
INCMIN;分加1
MOVA,MIN
CJNEA,#60,CONT_SCAN
MOVMIN,#00H
整点提醒:
LOO:
MOVR0,#10
LOO1:
CPLP1.2;将P1.2内容取反
ACALLDELAY;调用延时子程序
DJNZR0,LOO1
ACALLDELAY
LJMPL1
DELAY:
MOVR6,#5
DL2:
MOVR5,#250
DL3:
MOVR4,#200
DL1:
DJNZR4,DL1
DJNZR5,DL3
DJNZR6,DL2
RET
L1:
MOVSEC,#1
INCHOR
MOVA,HOR
CJNEA,#24,CONT_SCAN
MOVHOR,#00H
CLRBEEP
CLRP1.0
LCALLDEL
SETBBEEP
SETBP1.0
CONT_SCAN:
MOVA,SEC
LCALLBIN_BCD;调用机器代码
MOVLED6,B;分的个位
MOVLED5,A;分的十位
MOVA,MIN
LCALLBIN_BCD
MOVLED4,B
MOVLED3,A
MOVA,HOR
LCALLBIN_BCD
MOVLED2,B;时的个位
MOVLED1,A;时的十位
MOVA,LED_LP
MOVB,#06
DIVAB;累加器A除累加器B
MOVA,B
RLA;左移两位
MOVDPTR,#TAB_SCAN;查表
JMP@A+DPTR
TAB_SCAN:
AJMPSCAN_L1
AJMPSCAN_L2
AJMPSCAN_L3
AJMPSCAN_L4
AJMPSCAN_L5
AJMPSCAN_L6
SCAN_L1:
MOVDIG_PORT,#0
MOVA,LED1
JMPEND_SCAN
SCAN_L2:
MOVDIG_PORT,#1
MOVA,LED2
JMPEND_SCAN
SCAN_L3:
MOVDIG_PORT,#3
MOVA,LED3
JMPEND_SCAN
SCAN_L4:
MOVDIG_PORT,#4
MOVA,LED4
JMPEND_SCAN
SCAN_L5:
MOVDIG_PORT,#6
MOVA,LED5
JMPEND_SCAN
SCAN_L6:
MOVDIG_PORT,#7
MOVA,LED6
END_SCAN:
MOVDPTR,#TAB_LED
MOVCA,@A+DPTR
MOVLED_PORT,A
JNBF_BEEP,EXIT_T0
CLRBEEP
EXIT_T0:
POPPSW
POPACC
RETI
TAB_LED:
DB3FH,06H,5BH,4FH,66H,6DH,7DH;共阴字码表
DB07H,7FH,6FH,77H,7CH,39H,5EH
DB79H,71H,76H,73H,3EH,00H
END
五.总结和收获
通过这次单片机课程设计,培养了我自身的实际动手的能力以及综合运用知识解决实际问题的能力,掌握单片机指令的应用并熟悉单片机系统的开发、研制过程,对这学期单片机课程的学习也是一个复习和运用的机会。
另外,我总结出要做好一个课程设计,必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些功能;要有一个清晰的思路和一个完整的的程序设计流程图;在设计程序时,不可能一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路;在设计课程过程中遇到问题是很正常的,但是应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
通过这次课程设计还使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能灵活运用知识。
同时在设计的过程中发现了自己的不足之处,对之前所学过的理论知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言也掌握得不够好,对于这些不足之处我要努力改正。
六.参考文献
[1]郑毛祥.单片机应用基础.人民邮电出版社,2006.6
[2]何立民.单片机应用系统设计[M].北京:
北京航空航天大学出版社,1993.
[3]楼然笛.单片机开发[M].北京:
人民邮电出版社,1994.
[4]李大有.《单片机应用与设计》.电子工业大学出版社,1998.
[5]李有才.《单片机课程设计纲要》.电子科技大学出版社,2003.