单片机大作业
- 格式:pdf
- 大小:616.90 KB
- 文档页数:10
单片机原理与应用
学号:
学生所在学院:
学生姓名:
任课教师:
教师所在学院:航空制造工程学院
2014年6月
13y8
基于单片机控制的可调电子数字钟
陈成龙
南昌航空大学航制学院
摘要:单片机是现代电子技术的新兴领域,它的出现极大地推动了电子工业的发展,已成为电子系统设计中最普遍的应用手段。设计单片机应用系统时,在完成硬件系统设计之
后,必须配备相应的应用软件。Proteus软件的应用使单片机可以直接在基于原理图进
行虚拟模拟上,并和μVision共同编程,编译,仿真调试,使单片机学习的学习过程
变得直观形象。
关键词:单片机ProteusμVision仿真调试
1.功能要求
利用89C51单片机内的定时器,设计一台可调数字钟,能通过按键进行时、分、秒的调整,采用8位LED数码管以24小时方式进行显示。
2.硬件电路设计
可调数字钟的硬件电路如图1所示。89C51单片机的P0口通过三态总线收发器74LS245接到8位共阴极LED数码管的数字输入端,单片机的P3作为数码管的数位控制,从P0口输出显示字符段码,从P3口输出循环扫描控制位,利用人眼的视觉暂留功能,达到8位数码管同时显示的效果。单片机的P1.0-P1.2引脚通过三个按钮开关接地,通过判断P1.0-P1.2引脚电平的高低,决定是否进行数字钟的时、分、秒调整。
3.软件程序设计
本设计利用89C51单片机内定时器T0中断来实现数字钟功能,T0定时时间设为50ms,每隔50ms产生一次中断,如果中断20次即到达1秒。程序设计时预先安排时、分、秒内存单元,在中断服务程序中根据中断次数来决定秒单元是否加1,当秒单元到达60时分单元加1,同时秒单元清零,分单元达到60时,时单元加1,同时分单元清零,时单元达到24时,时单元清零,又从头开始计时。可调数字钟的程序流程图如下图2、图3.
图1.可调数字钟硬件图
图2.主程序流程图
图3.中断服务程序流程图
软件的控制程序如下:
S_SET BIT P1.0;数字钟秒控制位
M_SET BIT P1.1;分控制位
H_SET BIT P1.2;时控制位
SECOND EQU30H
MINUTE EQU31H
HOUR EQU32H
TCNT EQU34H
ORG0000H;单片机复位入口地址
SJMP START
ORG000BH;定时器T0中断服务程序入口地址
LJMP INT_T0
START:MOV DPTR,#TABLE
MOV HOUR,#0;时、分、秒单元清0
MOV MINUTE,#0
MOV SECOND,#0
MOV TCNT,#0
MOV TMOD,#01H;设置T0为16位定时器工作方式
MOV TH0,#3CH;fosc=12MHZ,定时器50ms
MOV TL0,#0B0H
MOV IE,#82H;开中断
SETB TR0;启动定时器T0
A1:LCALL DISPLAY;调用显示子程序
JNB S_SET,S1;判断是否有键按下
JNB M_SET,S2
JNB H_SET,S3
LJMP A1
S1:LCALL DELAY;去抖动
JB S_SET,A1
INC SECOND;调整秒值加1
MOV A,SECOND
CJNE A,#60,J0;判断是否调整到60秒
MOV SECOND,#0
LJMP K1
S2:LCALL DELAY
JB M_SET,A1
K1:INC MINUTE;调整分钟值加1
MOV A,MINUTE
CJNE A,#60,J1;判断是否调整到60分
MOV MINUTE,#0
LJMP K2
S3:LCALL DELAY
JB H_SET,A1
K2:INC HOUR;调整小时值加1
MOV A,HOUR
CJNE A,#24,J2;判断是否调整到24小时
MOV HOUR,#0
MOV MINUTE,#0
MOV SECOND,#0
LJMP A1
J0:JB S_SET,A1;等待按键抬起
LCALL DISPLAY
SJMP J0
J1:JB M_SET,A1
LCALL DISPLAY
SJMP J1
J2:JB H_SET,A1
LCALL DISPLAY
SJMP J2
INT_T0:MOV TH0,#3CH;定时器中断服务程序MOV TL0,#0B0H;装入T0的初值
INC TCNT
MOV A,TCNT
CJNE A,20,RETUNE;判断1秒定时到否
INC SECOND;秒单元加1
MOV TCNT,#0;50ms单元清0
MOV A,SECOND
CJNE A,#60,RETUNE;判断60秒定时到否
INC MINUTE;分单元加1
MOV SECOND,#0;秒单元清0
MOV A,MINUTE
CJNE A,#60,RETUNE;判断60分定时到否
INC HOUR;时单元加1
MOV MINUTE,#0;分单元清0
MOV A,HOUR
CJNE A,#24,RETUNE;判断24小时定时到否
MOV HOUR,#0;时、分、秒、50ms单元清零
MOV MINUTE,#0
MOV SECOND,#0
MOV TCNT,#0