51单片机里电子时钟设计原理 下载本文

时程序等。最后将各模块集成为一个整体,合成一个多功能的电子钟。

参考文献

[1] 谢自美.电子线路设计·实验·测试[M].武汉:华中理工大学出版社,1992.

[2] 何立民.单片机应用系统设计[M].北京:北京航空航天大学出版社,1993. [3] 楼然笛.单片机开发[M].北京:人民邮电出版社,1994.

[4] 付家才.单片机控制工程实践技术[M].北京:化学工业出版社 2004.3.

[5] 李光才.单片机课程设计 实例指导[M]. 北京:北京航空航天大学出版社 2004.3.

[6] 朱定华.单片机原理及接口技术实验[M].北京:北方交通大学出版社2002.11.

[7] 刘湘涛.江世明.单片机原理与应用[M]. 北京:电子工业出版社,2006.

附录:

延时程序: D_1MS: MOV R7,#2 D_5:

MOV R2,#250 DJNZ R2,$ DJNZ R7,D_5 RET 主程序: MAIN:

JNB P3.0,DATETZ ;按下0键,显示日期并可对日期进行调整 JNB P3.1,ZSTZ1 ;按下1键,显示时间,并可调时 JNB P3.2,NLTZZ ;按下2键,进行闹铃设置 JNB P3.3,DSTZ ;按下3键,进行定时设置 JNB P3.4,CESHI ;闹铃测试

JNB P3.6,STOPWATCHTZ ;按下6键,进入秒表方式 ACALL DISP ;调用时钟显示子程序

JNB P0.6,RERING ;判断是否开启闹铃重响功能

RE: JNB P2.7,DSPDKQ ;判断是否开启闹铃功能,没开则去判断定时 FMQPD: ;判断定时值R4,R3是否到零、闹铃时刻是否已到

MOV A,HOUR; SUBB A,38H;

JZ FEN ;判断小时数是否到闹铃所定时间,若到,则对

分进行判断;若不到,则对定时进行判断

13

AJMP DSPDKQ FEN:

MOV A,MINUTE; SUBB A,37H;

JZ MIAO ;判断分是否到闹铃所定时间,若到,则对秒进

行判断;若不到,则对定时进行判断

AJMP DSPDKQ MIAO:

MOV A,SECOND SUBB A,#0

JZ SHENGYIN1 ;判断秒是否到闹铃所定时间,若到,则时,

AJMP DSPDKQ

RERING: ;JNB F0, RE ;CPL F0

MOV 3CH,#1 ;JNB P0.7,M1 ;MOV R4,#0 ;MOV R3,#30 AJMP MAIN

M1: ;MOV R4,#1 MOV R3,#0 AJMP MAIN

DSPDKQ: ;MOV A,3CH ;3CHJNZ DSPD2 ;AJMP MAIN DSPD2: MOV A,R4;

JZ S_PD ;R4AJMP MAIN; S_PD: MOV A,R3;

JNZ MAIN ;R4,R3JNB P0.6,SHENGYIN2 ;AJMP TISHI ;AJMP MAIN CESHI: ACALL RING AJMP MAIN

SHENGYIN1: ;LCALL RING AJMP MAIN SHENGYIN2:

SETB F0 ;分,秒都到达闹铃时刻,进入响铃子程序;若不到则判断定时

闹铃重响判断程序

标志位F0为0,不进行闹铃重响设定 定时判断标志位赋1, 定时判断功能开启 闹铃重响间隔时间选取 闹铃重响间隔30秒 闹铃重响间隔60秒 判断是否应该进行定时判断

是引入的判断因子,当其为0时,不对定

时时间是否到0进行判断

当3CH不是0时,跳转到定时判断程序 所存定时分数为0,则转而判断R3所存定时

秒数

所存参数减为0, 定时长度已到 闹铃重响功能开启时,跳入响铃程序

不是闹铃重响定时,则定时时间到时,跳入提

示程序

调用响铃子程序 闹铃重响标志位设定

14

LCALL RING ;响铃

CLR F0 ;标志位复位 AJMP MAIN NLTZZ:

AJMP NLTZ1 ;跳入闹铃调整程序 DSTZ:

AJMP DSTZ1 ;跳入定时调整程序 DATETZ:

AJMP DATETZ1 ;跳入日期调整程序 STOPWATCHTZ:

AJMP STOPWATCHTZ1 ;跳入秒表程序 显示子程序:

DISP: ;JNB P3.7,OUT1 ;MOV DPTR,#LEDTAB

MOV A,SECOND ;MOV B,#10

DIV AB ;AMOVC A,@A+DPTR MOV P1,A CLR SEC_S

ACALL D_1MS ;SETB SEC_S MOV A,B

MOVC A,@A+DPTR MOV P1,A CLR SEC_G

ACALL D_1MS ;SETB SEC_G

MOV A,MINUTE ;MOV B,#10 DIV AB

MOVC A,@A+DPTR MOV P1,A CLR MIN_S ACALL D_1MS SETB MIN_S MOV A,B

MOVC A,@A+DPTR MOV P1,A CLR MIN_G ACALL D_1MS SETB MIN_G

MOV A,HOUR ;MOV B,#10 DIV AB

MOV DPTR,#LEDTAB MOVC A,@A+DPTR MOV P1,A

时间显示子程序

判断节能开关7是否按下,按下则数码管不

显示,延长其寿命

显示当前时间秒位 存十位,B存个位 显示当前时间秒十位 显示当前时间秒个位 显示当前时间分位 显示当前时间时位 15

CLR HOU_S ACALL D_1MS SETB HOU_S MOV A,B

MOVC A,@A+DPTR MOV P1,A CLR HOU_G ACALL D_1MS SETB HOU_G

MOV A,WEEK ;显示当前星期数 MOVC A,@A+DPTR MOV P1,A CLR Y_S ACALL D_1MS SETB Y_S OUT1: RET

16