单片机之电子时钟(带闹铃)
更新时间:2023-10-06 03:06:01 阅读量: 综合文库 文档下载
(一) 实验目的
学习 8051定时器时间计时处理、按键扫描及 LED数码管显示的设计方法。
(二) 设计任务及要求
利用实验平台上 4 个 LED数码管, 设计带有闹铃功能的数字时钟,要求:
1. 在 4 位数码管上显示当前时间。显示格式“时时分分” 2. 由 LED闪动做秒显示。
3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发 出声响,按停止键使可使闹玲声停止。
(三)工作原理及设计思路
利用单片机定时器完成计时功能,定时器 0 计时中断程序每隔 5ms 中断一次并当作一个计数,每中断一次计数加 1,当计数 200 次时,则表示 1s 到了,秒变量加 1,同理再判断是否 1min 钟到了,再判断是否 1h 到了。为了将时间在 LED 数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现
LED显示。其显示电路如图 1
闹铃声由交流蜂鸣器产生,电路如图 2,当 P1.7 输出不同频率的方波,.蜂鸣器便会发出不同的声音。
(四)设计方案
1.软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值
数字电子技术实验报告
加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
2.数码管显示:
方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用方案二。
(五)源程序
ORG 0000H
MAIN: CLR EA ;程序初始化 CLR PSW.3 ;选择寄存器组0 CLR PSW.4
MOV TMOD,#10H ;定时器1,方式1,定时方式 MOV 50H,#00H ;闹铃初始时间 08:00
MOV 51H,#00H ;分别对应分的低、高位,时的低、高位 MOV 52H,#08H MOV 53H,#00H
MOV R0,#00H ;设置时间初值 07:59
MOV R1,#09H ;分别对应分的低、高位,时的低、高位 MOV R2,#05H MOV R3,#07H MOV R4,#00H
CLR TF1 ;清标志
START: ACALL ALARM ;判断是否闹铃
MOV R5,#02H ;两层外循环,每层循环500ms START1: MOV R7,#10 ;10次内循环,10*50ms=500ms START2: ACALL DELAY ;调用延时 10ms ACALL DISPLAY ;调用延时 40ms
M0: JB P3.2,M1 ;是否设闹铃,查询3.2口,为一转到M1,为0设置闹铃 ACALL SETALARM
M1: JB P3.3,M2 ;是否设时间 ACALL SETCLOCK
M2: DJNZ R7,START2 ;R7减1循环
CPL P1.2 ;每500ms给P1.2一个正负交替的电平信号 DJNZ R5,START1 ;R5为2,循环两次后为1s INC R0 ;R0加1
CJNE R0,#60,START ;判断R0为60,跳转 MOV R0,#00H ;R0清零
M3: CJNE R1,#09H,L1 ;时间逻辑,如果为23:59分,则全部清零 CJNE R2,#05H,L2 CJNE R4,#02H,L3
2
数字电子技术实验报告
CJNE R3,#03H,L4 MOV R1,#00H MOV R2,#00H MOV R3,#00H MOV R4,#00H AJMP START
L1: INC R1 ;上面的几个分支 AJMP START L2: INC R2
MOV R1,#00H AJMP START
L3: CJNE R3,#09H,L4 INC R4 MOV R3,#00H MOV R2,#00H MOV R1,#00H AJMP START L4: INC R3
MOV R2,#00H MOV R1,#00H AJMP START
DISPLAY: MOV DPTR,#TABLE ; MOV A,R1 ; MOVC A,@A+DPTR ; ACALL BIT1 ; MOV A,R2 ; MOVC A,@A+DPTR ACALL BIT2
MOV A,R3 ; MOVC A,@A+DPTR ACALL BIT3
MOV A,R4 ; MOVC A,@A+DPTR ACALL BIT4 RET
BIT1: MOV R6,#08H ; LOOP1: RLC A ;A MOV P1.0,C ; CLR P1.1 ; SETB P1.1
DJNZ R6,LOOP1 ;8 CLR P1.3 ; ACALL DELAY ; SETB P1.3 ; RET
BIT2: MOV R6,#08H ; LOOP2: RLC A MOV P1.0,C CLR P1.1 SETB P1.1
显示子程序,把TABLE的首地址送给DPTR 将偏移量给A
将对应地址中的量给A
显示第一个字节,也就是分的低位 显示第二个字节,分的高位 显示第三个字节,时的低位 显示第四个字节,时的高位 显示第一个字节(分的低位)的子程序 带进位左移,移出的最高位存到C中 把C的值给P1.0口
在P1.1产生一个上升沿,将P1.0的值输入 次循环,输入第一个字节8段的值
给P1.3一个低电平,点亮分的低位对应的数码管 延时 5ms 置位 显示第二个字节(分的高位)的子程序 3
数字电子技术实验报告
DJNZ R6,LOOP2 CLR P1.4 ACALL DELAY SETB P1.4 RET
BIT3: MOV R6,#08H ;显示第三个字节(时的低位)的子程序 LOOP3: RLC A MOV P1.0,C CLR P1.1 SETB P1.1 DJNZ R6,LOOP3 CLR P1.5 ACALL DELAY SETB P1.5 RET
BIT4: MOV R6,#08H ;显示第四个字节(时的高位)的子程序 LOOP4: RLC A MOV P1.0,C CLR P1.1 SETB P1.1 DJNZ R6,LOOP4 CLR P1.6 ACALL DELAY SETB P1.6 RET
ALARM: MOV A,R1 ;闹铃判断子程序,判断闹铃是否与时间各位相等 CJNE A,50H,RETURN ;分别判断,若不等则跳出 MOV A,R2
CJNE A,51H,RETURN MOV A,R3
CJNE A,52H,RETURN MOV A,R4
CJNE A,53H,RETURN MOV R6,#03H
MING: LCALL DOL ;若各位都相等,则驱动闹铃,响音乐 LCALL DOL LCALL SOL LCALL SOL LCALL LA LCALL LA LCALL SOL LCALL SOL LCALL FA LCALL FA LCALL MI LCALL MI LCALL RE LCALL RE LCALL DOL
RETURN:RET ;返回
4
数字电子技术实验报告
DOL:MOV R4,#131 ;低音DO子程序 DOL05:MOV TMOD,#11H MOV TL1,#21H MOV TH1,#0F9H SETB TR1
WAIT1:JNB TF1,WAIT1 CLR TF1 CPL P1.7
DJNZ R4,DOL05 RET ;返回
RE:MOV R4,#147 ;RERE05:MOV TMOD,#11H MOV TL1,#0E1H MOV TH1,#0F9H SETB TR1
WAIT2:JNB TF1,WAIT2 CLR TF1 CPL P1.7 DJNZ R4,RE05 RET ;返回
MI:MOV R4,#165 ;MIMI05:MOV TMOD,#11H MOV TL1,#8CH MOV TH1,#0FAH SETB TR1
WAIT3:JNB TF1,WAIT3 CLR TF1 CPL P1.7 DJNZ R4,MI05 RET ;返回
FA:MOV R4,#179 ;FAFA05:MOV TMOD,#11H MOV TL1,#0D8H MOV TH1,#0FAH SETB TR1
WAIT4:JNB TF1,WAIT4 CLR TF1 CPL P1.7 DJNZ R4,FA05 RET ;返回
SOL:MOV R4,#192 ;SOLSOL05:MOV TMOD,#11H MOV TL1,#68H MOV TH1,#0FBH SETB TR1
WAIT5:JNB TF1,WAIT5
子程序 子程序 子程序 子程序 5
数字电子技术实验报告
CLR TF1 CPL P1.7
DJNZ R4,SOL05 RET ;返回
LA:MOV R4,#220 ;LA子程序 LA05:MOV TMOD,#11H MOV TL1,#0E9H MOV TH1,#0FBH SETB TR1
WAIT6:JNB TF1,WAIT6 CLR TF1 CPL P1.7 DJNZ R4,LA05 RET ;返回
XI:MOV R4,#247 ;XI子程序 XI05:MOV TMOD,#11H MOV TL1,#5BH MOV TH1,#0FCH SETB TR1
WAIT7:JNB TF1,WAIT7 CLR TF1 CPL P1.7 DJNZ R4,XI05 RET ;返回
DOH:MOV R4,#255 ;高音DO子程序 DOH05:MOV TMOD,#11H MOV TL1,#8FH MOV TH1,#0FCH SETB TR1
WAIT8:JNB TF1,WAIT8 CLR TF1 CPL P1.7
DJNZ R4,DOH05
RET ;返回
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
RET ;将数码管中显示的0~9分别对应的数存入TABLE开始的一段程序存储器中
SETALARM:MOV 40H,R1 ;闹铃设定子程序,保存当前时间 MOV 41H,R2 MOV 42H,R3 MOV 43H,R4
MOV R1,50H ;将初始设定的闹铃时间赋给偏移量R1~R4 MOV R2,51H MOV R3,52H MOV R4,53H
ACALL DISPLAY ;显示闹铃时间
KS: JB P3.4,LK0 ;闹铃设置逻辑,当P3.4口为低电平时,设定分(LK0
6
数字电子技术实验报告
为DISPLAY子程序) CJNE R1,#09H,LL0 ;当P3.4口为低电平时,不断加一,低位为9时,进位 MOV R1,#00H CJNE R2,#05H,LL1
MOV R2,#00H ;当为59分时,清零 AJMP LK0 LL1: INC R2 AJMP LK0 LL0: INC R1
LK0: ACALL DISPLAY ;设定一次显示一次时间
JB P3.5,LK1 ;P3.5口为低电平时,设定时(LK1为子程序) CJNE R4,#02H,KK0 CJNE R3,#03H,KK1
MOV R3,#00H ; MOV R4,#00H AJMP LK1 KK1: INC R3 AJMP LK1
KK0: CJNE R3,#09H,KK1 MOV R3,#00H INC R4 AJMP LK1
LK1: ACALL DISPLAY ; JNB P3.2,KS ; MOV 50H,R1 ; MOV 51H,R2 MOV 52H,R3 MOV 53H,R4
MOV R1,40H ; MOV R2,41H MOV R3,42H MOV R4,43H
ACALL DISPLAY ; RET
SETCLOCK:JB P3.4,MN0 ; CJNE R1,#09H,MM0 MOV R1,#00H
CJNE R2,#05H,MM1 MOV R2,#00H AJMP MN0 MM1: INC R2 AJMP MN0 MM0: INC R1
MN0: ACALL DISPLAY
JB P3.5,MN1 ; CJNE R4,#02H,NN0 CJNE R3,#03H,NN1 MOV R3,#00H MOV R4,#00H AJMP MN1 NN1: INC R3
当时为23时,清零 设定结束,显示设定时间
当控制闹铃设置的P3.2口变为高电平时,退出设定 保存闹铃时间 恢复时间 显示时间 用P3.4口设定分,原理同闹铃设定,低电平有效 用P3.5口设定时,低电平有效 7
数字电子技术实验报告
AJMP MN1
NN0: CJNE R3,#09H,NN1 MOV R3,#00H INC R4
AJMP MN1
MN1: ACALL DISPLAY
JNB P3.3,SETCLOCK ;若P3.3口仍处于低电平,继续处于时间设定状态 RET
DELAY1: MOV TH1,#0ECH ;5ms延时子程序
MOV TL1,#78H ;赋初值60536,实现5000次计数,历时5ms CLR TF1 SETB TR1 WAIT: JNB TF1,WAIT RET
DELAY:ACALL DELAY1 ACALL DELAY1 RET END
8
正在阅读:
单片机之电子时钟(带闹铃)10-06
二元一次方程组学案04-27
梁实秋《过年》阅读练习及答案04-15
尼古丁真的可以预防新冠肺炎吗?08-06
土地利用现状分类 - 图文03-30
中学语文教师教学工作总结07-24
新幼儿园大班美术教案:漂亮的娃娃12-03
《2022年疫情防控黑板报内容_预防疫情黑板报图片资料》正文07-31
勇敢的啄木鸟作文350字07-03
COGI问题处理及对策 - 图文03-17
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 闹铃
- 子时
- 单片机
- 钟(带
- 平原造林场内移植方案
- 流行病学试题及参考答案
- 移动通信练习题及答案
- 商业银行流动性风险管理办法(试行)
- 中外合作办学总结
- 《世界近代现代史》下册
- 欧姆定律习题复习课教学设计 - 图文
- ansys螺栓预紧单元的创建(中文说明)
- 有机分析试卷-2012-2013期末(A)及答案
- 2009学年度第二学期期中测试初二年级数学试
- 生物医药产业发展规划成都 - 图文
- 河南省南阳市2016年秋期高中一年级期中质量评估
- 国家开放大学《职业与人生》2019春形考任务三
- CAST池运行操作
- 圆周角定理及推论知识点与练习
- 中考十五年2001-2015年浙江宁波中考数学试题分类解析汇编(20专题)专题7:函数的图像、性
- 夜班津贴相关规定
- 流行病学试题及答案12
- 飞机精密进近
- 九年级化学 1.3 怎样学习和研究化学教案1 沪教版