单片机课程论文设计电子钟课程设计.docx
- 文档编号:5197812
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:10
- 大小:39.58KB
单片机课程论文设计电子钟课程设计.docx
《单片机课程论文设计电子钟课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程论文设计电子钟课程设计.docx(10页珍藏版)》请在冰豆网上搜索。
单片机课程论文设计电子钟课程设计
单片机课程论文设计
——电子钟
一课程设计的主要内容
1设计思想
1.1硬件设计思想
1.1.1电路设计思想
电路原理图见图1,由动态数码显示组成时、分、秒的显示。
把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;把“单片机系统:
区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中S-S8端口上;“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上。
1.1.2键盘设计思想
键盘是微机的主要设备,按键的读取容易引起错误动作。
可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms.
1.2软件设计思想
本系统的主程序主要完成时间显示和修改时间的功能。
而时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。
1.2.1数据与代码转换
由前述可知,从P2口输出位选码,从P0口输出段选码,LED就会显示出数字来。
但P0口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。
可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码行转换后,将各个单元数据的段选代码送入P0口,给CD4511译码后去驱动数码管显示。
具体转换过程如下:
我们先将要显示的数据装入累加器A中,再将A中的数据转换成高低两位的BCD码,再放回A中,然后将A中的值输出。
如:
有一个单元存储了45这样一位数,则需转换成四位的BCD码:
(0100)(0101)然后放入A中。
A中BCD码,高位四位代表¡4¡低四位代表¡5¡同时送给两个译码器中,译码后¡45¡字就在两个LED中显示出来。
1.2.2计时功能的实现与中断服务程序
时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。
计数器T0打开后,进入计时,满100毫秒后,重装定时。
中断一次,满一秒后秒进位,满60秒后即为1分钟,分钟单元进位,60分到了后,时单元进位。
得到时、分、秒存储单元的值,并经译码后,通过扫描程序送LED中显示出来,实现时钟计时功能。
累加是用指令INC来实现的。
进入中断服务程序以后,执行PUSHPSW和PUSHA将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的¡保护现场¡.以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。
在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作,要遵循¡后进先出¡的原则。
1.2.3时间控制功能与比较指令
系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:
先将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR指令,将对应的那路P3置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3置低电位,二极管截止,。
实现此控制功能用到的比较指令为CJNEA,#direct,rel,其转移条件是累加器A中的值与立即数不等则转移。
二课程设计的目的
实现的功能:
①开机时,电子钟从12:
00:
00开始自动计时。
②设置按键,能对时、分、秒进行调整。
三设计方案的论证
3.1电路原理与电路图
3.1.1电路原理
电路原理图见图1,由动态数码显示管组成时、分、秒的显示。
P0口的8条数据线P0.0至P0.7分别与两个CD4511译码的ABCD口相接,P2口的P2.0至P2.2分别通过电阻R10至R13与VT1至VT3的基极相连接。
这样通过P0口送出一个存储单元的高位、低位BCD显示代码,通过P2口送出扫描选通代码轮流点亮LED1至LED6,就会将要显示的数据在数码管中显示出来。
从P0口输出的代码是BCD码,从P2口输出的就是位选码。
这是扫描显示原理。
电路原理图
图1电路原理图
3.2流程图与算法描述
3.2.1流程图
图2流程图
3.3软件设计
SECONDEQU30H;秒寄存器
MINITEEQU31H;分寄存器
HOUREQU32H;時寄存器
HOURKBITP0.2
MINITEKBITP0.1
SECONDKBITP0.0
DISPBUFEQU40H
DISPBITEQU48H
T2SCNTAEQU49H
T2SCNTBEQU4AH
TEMPEQU4BH
ORG00H;程序执行开始地址
LJMPSTART;跳转到标号START执行
ORG0BH;T0中断程序入口
LJMPINT_T0;跳至IN-T0执行
;主程序
START:
MOVSECOND,#00H;清0存放秒分时值得单元
MOVMINITE,#00H
MOVHOUR,#12
MOVDISPBIT,#00H
MOVT2SCNTA,#00H
MOVT2SCNTB,#00H
MOVTEMP,#0FEH
LCALLDISP;在2KB范围内长调用显示子程序
MOVTMOD,#01H
MOVTH0,#(65536-2000)/256;2毫秒
MOVTL0,#(65536-2000)/256
SETBTR0;允许TO中断
SETBET0;开启T0定时器
SETBEA;总中断开放
按键扫描子程序及校时调整
WT:
JBSECONDK,NK1;SECONDK为1(sp1建按下)时跳到
LCALLDELY10MS
JBSECONDK,NK1
INCSECOND;对计数器加1
MOVA,SECOND
CJNEA,#60,NS60;沒到60秒返回,到60秒清0;判断计数器是否满59
MOVSECOND,#00H
NS60:
LCALLDISP
JNBSECONDK,$;不满60秒就循环执行
NK1:
JBMINITEK,NK2;分控制键按下时跳转
LCALLDELY10MS
JBMINITEK,NK2;分控制键按下时跳转
INCMINITE
MOVA,MINITE
CJNEA,#60,NM60
MOVMINITE,#00H
NM60:
LCALLDISP
JNBMINITEK,$;不满60分就循环执行
NK2:
JBHOURK,NK3
LCALLDELY10MS
JBHOURK,NK3
INCHOUR
MOVA,HOUR
CJNEA,#24,NH24
MOVHOUR,#00H
NH24:
LCALLDIS
JNBHOURK,$;不满24小时就循环执行
NK3
LJMPWT
DELY10MS:
;延时1毫秒的子程序
MOVR6,#10
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
;显示子程序
DISP:
;将得出的时间存入40H(DISPBUF)之后的地址
MOVA,#DISPBUF;将temp中的十六进制数转换成10进制
ADDA,#8
DECA
MOVR1,A
MOVA,HOUR;時送A
MOVB,#10;10进制/10=10进制
DIVAB
MOV@R1,A;累加器送内部RAM单元
DECR1
MOVA,B
MOV@R1,A
DECR1;
MOVA,#10
MOV@R1,A
DECR1
MOVA,MINITE;分送A
MOVB,#10
DIVAB;十進制調整
MOV@R1,A
DECR1
MOVA,B
MOV@R1,A
DECR1
MOVA,#10
MOV@R1,A
DECR1
MOVA,SECOND;秒送A
MOVB,#10
DIVAB;十进制调整
MOV@R1,A
DECR1
MOVA,B
MOV@R1,A
DECR1
RET
INT_T0:
;T0中断服务子程序,即计时TIME子程序
MOVTH0,#(65536-2000)/256;2毫秒
MOVTL0,#(65536-2000)/256
MOVA,#0FFH
MOVP3,A
MOVA,#DISPBUF
ADDA,DISPBIT;地址加,并将时间的各位送到p1
MOVR0,A
MOVA,@R0;取显示数据到A
MOVDPTR,#TABLE;取段码表地址
MOVCA,@A+DPTR;查显示数据对应段码
MOVP1,A;分十位送P1口显示
MOVA,DISPBIT
MOVDPTR,#TAB;表地址送数据指针
MOVCA,@A+DPTR
MOVP3,A
INCDISPBIT
MOVA,DISPBIT
CJNEA,#08H,KNA
MOVDISPBIT,#00H
KNA:
INCT2SCNTA;时间的增加与进位
MOVA,T2SCNTA
CJNEA,#100,DONE
MOVT2SCNTA,#00H
INCT2SCNTB
MOVA,T2SCNTB
CJNEA,#05H,DONE
MOVT2SCNTB,#00H
INCSECOND;秒加一
MOVA,SECOND;
CJNEA,#60,NEXT;到60秒了吗?
MOVSECOND,#00H;到60秒清0
INCMINITE;分加1
MOVA,MINITE;
CJNEA,#60,NEXT;到60分了吗?
MOVMINITE,#00H;到60分清0
INCHOUR;時加1
MOVA,HOUR
CJNEA,#24,NEXT;到24小時了吗?
MOVHOUR,#00H
NEXT:
LCALLDISP
DONE:
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
TAB:
DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07F
四系统调试
系统由AT89C51、SEG数码管、按键、电容、晶振、电阻等部分构成,能实现时间的调整、时间校对、定时时间的设定,输出等功能。
系统的功能选择由按键‘时’、‘分’、‘秒’、完成。
开机时,显示12:
00:
00的时间开始计时;按键P0.0/AD0控制“秒”的调整,每按一次加1秒;P0.1/AD1控制“分”的调整,每按一次加1分;P0.2/AD2控制“时”的调整,每按一次加1个小时;系统的主程序主要完成时间显示和定时输出判断功能。
而时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。
该电子钟的精确度在仿真软件中效果良好。
五心得体会
计算机控制技术是一门很综合的课程。
任何一个计算机系统都是一个复杂的整体,学习计算机控制技术是要涉及到整体的每一部分。
讨论某一部分原理时又要涉及到其它部分的工作原理。
这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。
所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,灵活知识运用,具体地说,在了解了计算机编程后,剩下的是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
这次课程设计较为综合,主要的困难来自对程序的编写和校对,功夫不负有心人,经过我的虚心求学和查找资料,最终对实验的原理有了较清晰的认识。
但是仍然存在很多的不足,今后需要加强的地方还是很多,所以在今后的求学路上我会更加努力。
望老师批评改正。
六参考文献:
[1].潘新民,王燕芳编著.微型计算机控制技术[M].北京:
电子工业出版社,2003
[2].何立民.单片机应用技术选编
(1)[M].北京:
北京航空航天大学出版社,1995,6
[3].刘国荣,梁景凯.计算机控制技术与应用[M].北京:
机械工业出版社,1999,5
[4].齐维毅,丁言镁,齐振国.单片机原理及应用设计实验[M].沈阳:
辽宁大学出版社,2006,5
[5].李华.MCS-51系列单片机实用接口技术[M].北京:
北京航空航天大学出版社,1993,8
[6].潘新民,王燕芳编著.单片微型计算机实用系统设计[M].北京:
人民邮电出版社,1992
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程 论文 设计 电子钟 课程设计