单片机课程论文设计电子钟课程设计_单片机电子钟课程设计
单片机课程论文设计电子钟课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机电子钟课程设计”。
单片机课程论文设计 ——电子钟
一 课程设计的主要内容 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来实现的。进入中断服务程序以后,执行PUSH PSW和PUSH A将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的¡ 保护现场¡.以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作,要遵循¡ 后进先出¡ 的原则。
1.2.3时间控制功能与比较指令
系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR指令,将对应的那路P3置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3置低电位,二极管截止。实现此控制功能用到的比较指令为CJNE A,#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口输出的就是位选码。这是扫描显示原理。
电路原理图
C130pFU1X119CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617S-0S-1S-2S-3S-4S-5S-6S-7C230pFXTAL2R210kR310kR410kR110k9RSTC310uF293031PSENALEEARP1987654321RESPACK-***78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51时分秒S-7S-6S-5S-4S-3S-2S-1S-001234567
图 1 电路原理图
3.2 流程图与算法描述 3.2.1流程图
3.3软件设计
SECOND
EQU 30H;MINITE EQU 31H;HOUR
EQU 32H;HOURK
BIT P0.2 MINITEK BIT P0.1 SECONDK BIT P0.0 DISPBUF EQU 40H DISPBIT EQU 48H 流程图
秒寄存器
分寄存器
時寄存器 图
T2SCNTA
EQU 49H
T2SCNTB EQU 4AH TEMP
ORG 00H;
程序执行开始EQU 4BH 地址
LJMP
START;
执行
ORG
0BH;T0
LJMP
INT_T0;
;主程序
START: MOV
SECOND,#00H;
得单元
MOV
MINITE,#00H
MOV
HOUR,#12
MOV
DISPBIT,#00H
MOV
T2SCNTA,#00H
MOV
T2SCNTB,#00H
MOV
TEMP,#0FEH
LCALL
DISP;
子程序
MOV
TMOD,#01H
MOV
TH0,#(65536-2000)/ 256;
MOV
TL0,#(65536-2000)/ 256
SETB
TR0;
SETB
ET0;
SETB
EA;
WT:
跳转到标号START
中断程序入口
跳至IN-T0执行
清0存放秒分时值
在2KB范围内长调用 显示2毫秒
允许TO中断
开启T0定时器
总中断开放
按键扫描子程序及校时调整
JB
SECONDK, NK1;SECONDK为1(sp1建按下)时跳到
LCALL
DELY10MS
JB
SECONDK,NK1
INC
SECOND;
对计数器加1
MOV
A,SECOND
CJNE
A,#60, NS60;沒到60秒返回,到60秒清0;判断计数器是否满59
MOV
SECOND,#00H NS60:
LCALL
DISP
JNB
SECONDK,$;
NK1: JB
MINITEK,NK2;
LCALL
DELY10MS
JB
MINITEK,NK2;
INC
MINITE
MOV
A,MINITE
CJNE
A,#60, NM60
MOV
MINITE,#00H NM60:
LCALL DISP
JNB
MINITEK, $;
NK2:
JB
HOURK,NK3
LCALL
DELY10MS
JB
HOURK,NK3
INC
HOUR
MOV
A, HOUR
CJNE
A, #24,NH24
MOV
HOUR,#00H
不满60秒就循环执行 分控制键按下时跳转
分控制键按下时跳转
不满60分就循环执行
NH24:
LCALL
DIS
JNB
HOURK,$;
不满24小时就循环执行
NK3 LJMP
WT DELY10MS:;
延时1毫秒的子程序
MOV D1:
MOV
;显示子程序
DISP:
;
地址
MOV
ADD
DEC
MOV
MOV
MOV
DIV
MOV
DEC
MOV
MOV
DEC
MOV
MOV
DEC
MOV R6, #10 R7, #248 DJNZ
R7, $ DJNZ
R6, D1 RET
A, #DISPBUF;
A, #8 A R1, A A, HOUR;
B, #10;
AB @R1, A;
R1 A, B @R1, A R1;A, #10 @R1, A R1 A, MINITE;
将得出的时间存入40H(DISPBUF)之后的将temp中的十六进制数转换成10进制 時送A
10进制/10=10进制 累加器送内部RAM单元
分送A
MOV B, #10
DIV
AB;
十進制調整
MOV @R1, A
DEC
R1
MOV
A, B
MOV
@R1, A
DEC
R1
MOV
A, #10
MOV
@R1,A
DEC
R1
MOV
A, SECOND;
MOV
B, #10
DIV
AB;
MOV @R1, A
DEC
R1
MOV A, B
MOV @R1, A
DEC
R1
RET INT_T0:;T0
MOV TH0,#(65536-2000)/ 256;
MOV TL0,#(65536-2000)/ 256
MOV A, #0FFH
MOV P3, A
MOV A, #DISPBUF
ADD
A, DISPBIT;
MOV R0, A
MOV A, @R0;
MOV DPTR, #TABLE;
MOVC A,@A+DPTR;
秒送A
十进制调整 TIME子程序 2毫秒 地址加,并将时间的各位送到p1 取显示数据到A 取段码表地址
查显示数据对应段码
中断服务子程序,即计时
MOV
P1, A;
分十位送P1口显示
MOV
A, DISPBIT
MOV
DPTR, #TAB;
表地址送数据指针
MOVC A,@A+DPTR
MOV
P3, A
INC
DISPBIT
MOV A, DISPBIT
CJNE A, #08H, KNA
MOV
DISPBIT, #00H KNA:
INC
T2SCNTA;
MOV A, T2SCNTA
CJNE
A, #100, DONE
MOV T2SCNTA, #00H
INC T2SCNTB
MOV A, T2SCNTB
CJNE A, #05H, DONE
MOV T2SCNTB,#00H
INC
SECOND;秒加一
MOV A, SECOND;
CJNE A, #60, NEXT;
MOV SECOND, #00H;
INC
MINITE;分加1
MOV A, MINITE;
CJNE A, #60, NEXT;
MOV
MINITE, #00H;
INC
HOUR;
時加1
MOV A, HOUR
CJNE A, #24, NEXT;
MOV
HOUR, #00H
时间的增加与进位 到60秒了吗? 到60秒清0 到60分了吗? 到60分清0 到24小時了吗?
NEXT:
LCALL
DISP DONE:
RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H TAB:
DB 0FEH,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