发布时间 : 星期三 文章aq论文 - 电子时钟设计更新完毕开始阅读b1211688d0d233d4b14e69b3
图4.4 运行一段时间后仿真图
4.4 仿真结果分析
功能太过单调,只能实现时分秒的显示,设计比较简单。电路图的设计过于单调,用的器件太少,实现调节时间的按钮太少,不能很好的实现时间的调节。在测试过程中,六位数码显示管只显示五位数字,有一位数字不亮,通过多次的修改程序并在
PROTEUS软件环境中进行仿真,最终解决了这个问题,同时也透露出本人在单片
机电路设计和程序设计方面的不足。不过最后的仿真效果非常好,实现了预期的效果,能过通过多功能控制键调节时间和是否进入省电模式,是一个比较令人满意的设计。
5 结束语
在李凯南老师耐心的指导下,我顺利完成了这次单片机课程设计课题中的电子时钟设计,通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分
20
理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗了过多的内存资源。
本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。
最后,感谢李凯南老师对我的细心的指导,正是由于李老师的细心的辅导和他提供给我们的参考资料,使得我的课程设计能够顺利的完成,同时在课程设计过程中,我们巩固和学习了我们的单片机知识。相信这对我以后的课程设计和毕业设计将会有很大的帮助!
6 附录
ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口 RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回
主程序开始;
21
START: MOV R0,#70H ;清70H-7AH共11个内存单元 MOV R7,#0BH ;
CLEARDISP: MOV @R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ;
MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入\熄灭符\数据
MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值
MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器
MOV R4,#14H ;1秒定时用初值(50MS×20) START1: LCALL DISPLAY ;调用显示子程序
JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序 SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM
;; 1秒计时程序 ;;
INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低8位初值修正 MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ;
MOV TL0,A ;重装初值(低8位修正值)
MOV TH0,A ;重装初值(高8位修正值)
22
SETB TR0 ;开启定时器T0
DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值 MOV R0,#71H ;指向秒计时单元(71H-72H) ACALL ADD1 ;调用加1程序(加1秒操作)
MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志 CJNE A,#60H,ADDMM ADDMM: JC OUTT0 ACALL CLR0 MOV R0,#77H ACALL ADD1 MOV A,R3 CLR C CJNE A,#60H,ADDHH ADDHH: JC OUTT0 ACALL CLR0 MOV R0,#79H ACALL ADD1 MOV A,R3 CLR C CJNE A,#24H,HOUR HOUR: JC OUTT0 ACALL CLR0 OUTT0: MOV 72H,76H MOV 73H,77H MOV 74H,78H MOV 75H,79H POP PSW POP ACC ;
;小于60秒时中断退出
;大于或等于60秒时对秒计时单元清0 ;指向分计时单元(76H-77H) ;分计时单元加1分钟 ;分数据放入A ;清进位标志 ;
;小于60分时中断退出
;大于或等于60分时分计时单元清0 ;指向小时计时单元(78H-79H)
;小时计时单元加1小时 ;时数据放入A ;清进位标志 ;
;小于24小时中断退出
;大于或等于24小时小时计时单元清0 ;中断退出时将分、时计时单元数据移 ;入对应显示单元 ; ;
;恢复状态字(出栈) ;恢复累加器
23