时程序等。最后将各模块集成为一个整体,合成一个多功能的电子钟。
参考文献
[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