过Keil和硬件仿真平台Proteus的联合,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。 利用Proteus仿真实验过程截图:
普通时间显示模式仿真图,表示:星期一 9点10分38秒
五、总结
通过本次设计,我深深体会到了掌握知识的重要性,本次设计也使我熟悉了单片机的硬件特点和编程方法,并成功将学到的知识变成了实际的成果,虽然在设计过程中遇到了很多问题,例如知识的融会贯通、调试遇到的BUG等,但通过努力都一一得到了克服,从而也提高了我学习的信心,坚定了我继续深入学习的决心。
附录: 延时程序: D_1MS: MOV R7,#2 D_5: MOV R2,#250 DJNZ R2,$ DJNZ R7,D_5 RET 主程序: MAIN:
JNB P3.0,DATETZ ;调整
JNB P3.1,ZSTZ1 ;JNB P3.2,NLTZZ ;JNB P3.3,DSTZ ;JNB P3.4,CESHI ;JNB P3.6,STOPWATCHTZ ;ACALL DISP ;JNB P0.6,RERING ;RE: JNB P2.7,DSPDKQ ;判断定时
FMQPD: ;刻是否已到 MOV A,HOUR; SUBB A,38H;
JZ FEN ;按下0键,显示日期并可对日期进行按下1键,显示时间,并可调时 按下2键,进行闹铃设置 按下3键,进行定时设置 闹铃测试
按下6键,进入秒表方式 调用时钟显示子程序 判断是否开启闹铃重响功能 判断是否开启闹铃功能,没开则去判断定时值R4,R3是否到零、闹铃时判断小时数是否到闹铃所定时间,
若到,则对分进行判断;若不到,则对定时进行判断
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
则对秒进行判断;若不到,则对定时进行判断
判断秒是否到闹铃所定时间,若到,
则时,分,秒都到达闹铃时刻,进入响铃子程序;若不到则判断定时
闹铃重响判断程序
标志位F0为0,不进行闹铃重响设定时判断标志位赋1, 定时判断功闹铃重响间隔时间选取 闹铃重响间隔30秒 闹铃重响间隔60秒 DSPDKQ: ;判断是否应该进行定时判断 MOV A,3CH ;3CH是引入的判断因子,当其为0时,
不对定时时间是否到0进行判断
JNZ DSPD2 ;当3CH不是0时,跳转到定时判断程序
AJMP MAIN DSPD2: MOV A,R4;
JZ S_PD ;R4AJMP MAIN; S_PD: MOV A,R3;
JNZ MAIN ;R4,R3到
JNB P0.6,SHENGYIN2 ;序
AJMP TISHI ;AJMP MAIN CESHI: ACALL RING AJMP MAIN
SHENGYIN1: ;LCALL RING AJMP MAIN SHENGYIN2:
SETB F0 ;LCALL RING ;所存定时分数为0,则转而判断R3
所存定时秒数
所存参数减为0, 定时长度已闹铃重响功能开启时,跳入响铃程不是闹铃重响定时,则定时时间到
时,跳入提示程序
调用响铃子程序 闹铃重响标志位设定 响铃
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 ;跳入日期调整程序 跳入秒表程序 时间显示子程序
判断节能开关7是否按下,按下则
数码管不显示,延长其寿命
显示当前时间秒位 存十位,B存个位 显示当前时间秒十位 显示当前时间秒个位