单片机之电子时钟(带闹铃)

更新时间: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

本文来源:https://www.bwwdw.com/article/63pd.html

Top