单片机时钟计时器的设计论文文档格式.docx
《单片机时钟计时器的设计论文文档格式.docx》由会员分享,可在线阅读,更多相关《单片机时钟计时器的设计论文文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
2.单片机采用了AT89C52系列,这种单片机具有足够的空余硬件资源,可以实现其他的扩充功能。
3、AT89C52提供以下标准功能:
8k字节Flash闪速存储器,256字节部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片震荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
AT89C52的功能与C51的功能基本上是相同的。
(1)、中断源
MCS-51单片机是一个多中断源的单片机,有五个中断源:
外部
中断0、定时器0中断、外部中断1、定时器1中断和串行接收或发送中断。
各中断源的中断处理程序入口地址如下表1所示:
表1中断向量表
中断源
入口地址
外部中断0
0003H
定时器0
000BH
外部中断1
0013H
定时器1
001BH
串行口
0023H
(2)、中断控制
A、中断的开放或禁止是由中断允许寄存器IE控制的。
IE的格式如下:
EA
ES
ET1
EX1
ET0
EX0
EA-中断总允许位。
EA=1,开放总中断,而各个中断源的中断请允许还是禁止,分别由各自的中断允许位确定;
EA=0,禁止一切中断。
ES-串行口中断允许位。
ET1和ET0分别是定时器T1和T0的中断允许位。
EX1和EX0分别是外部中断1(INT1)和外部中断0(INT0)的中断允许位。
以上五个中断允许位的意义是:
0为禁止中断,1为允许中断。
B、中断源优先级控制-中断优先级寄存器IP。
MCS-51单片机有高、低两个中断优先级,5个中断源可由程序设置为高优先级中断或低优先级中断,实现二级中断嵌套。
一个正在执行的低优先级中断源的中断服务程序,能被高优先级中断源所中断,但不能被同级别的另一个中断源所中断。
MCS-51单片机的5个中断源的优先级由中断优先级寄存器IP的相应位设定。
IP格式如下:
PS
PT1
PX1
PT0
PX0
3.时钟计时器电路系统的总体设计框图如图1所示。
图1
二、原理分析;
1.采用了AT89C52单片机最化应用设计;
采用共阳7段LED显示器;
P0口输出段码数据;
P2.0----P2.5口作列扫描输出;
P1.0、P1.1、P1.2、和P1.3口接4个按钮开关,用于调时及功能设置;
为了提供共阳LED数码管的列扫描驱动电压,用三极管9012作电源驱动输出;
采用12MHz晶振,来提高秒计时的精确性。
2.计时采用了定时器T0中断来实现。
秒表使用定时器T1中断来完成。
主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。
程序的设计主程序执行流程如图3
图3;
3.显示子程序;
时间显示子程序每次显示6个连续存单元的十进制BCD码数据,首地址在地址在调用显示程序先指定。
存中50H-----55H为闹钟定时单元,60H---65H为秒表计时单元,70H---75H为时钟显示单元。
由于采用7段共阳LED数码管动态扫描实现数据显示,所以显示用十进制BCD码数据的对应段码存放在在ROM表中。
显示时,先取出存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
为了显示小数点及“---”、“A”等特殊字符,在显示班级和计时时应采用不同的显示子程序。
4.定时器T0中断服务程序;
定时器T0用于时间计时,定时溢出中断周期为50ms,中断进入先进行定时中断初值校正,当中断累计20次时,对秒计数单元进行加1操作。
时钟计数单元地址分别在70H——71H(秒),76H---77H(分),78H---79(时)中,最大计时值为23时59分59秒。
7AH单元存放“熄灯符”数据(#0AH),用于时间调整时的闪烁功能。
在计数单元中,采用十进制BCD码计数,满10进位。
T0中断计时程序流程如图4;
图4;
5.定时器T0中断服务程序;
T1中断程序用于批示时间调整单元的闪亮或秒表计数,在时间时间状态下,每过0。
3S左右,将对应应单元的显示数据换成“熄灭符”数据(#AH)。
这样,在调整时间时,对应调整单元的显示数据会间隔闪亮。
在作秒表计时时,每10MS中断1次,计数单元加1,每100次为1S。
秒表计计数单元地址在60H———61H(10毫秒)、62H——63H(秒)、64H-———65H(分)中,最大计数值为99分59.99秒。
T1中断服务程序如图5;
图5
6.调时功能程序;
1.按下P1.0口按键,若按下时间小于1S则进入省电状态;
否则进入调分状态,等待操作,此时计时器停止走动。
当再按下P1.0口按键时,若按下时间小于0.5S,则时间加1分钟;
若按下时间大于0.5要,则进入小时调整状态。
按下P1.1按键时,可进行减1调整。
在小时调整状态下,当按键按下的时间大于0.5S时,退出时间调整状态,时钟从0S开始计时。
2.秒表功能程序;
在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表显示功能的转换,秒表中断计时程序启动,显示首地址改为60H,LED将显示秒表计时单元60H----65H中的数据。
按下P1.2口的按键开关,可实现秒表清0,秒表启动,秒表计时暂停功能;
当再按下P1.1口按键时,关闭T1秒表中断计时,显示首地址又改为70H,恢复正常时间的显示功能。
四.实验器材
器件名称
规格型号
数量
电阻
510
8
4.7k
6
10k
5
电解电容
47uF\25V
1
10u\16V
2200uf|25v
33uf/25V
陶瓷电容
103
30
2
芯片
AT89C52
芯片插座
40脚
3
20脚
三极管
9012
二极管
IN4007
4
数码管
共阳型
晶振
12MHz
单面覆铜板
16cm*12cm
五.利用protel99设计电路原理图
1.原理图
2.PCB图
六.调试及性能分析
1硬件调试
1.硬件调试时可先检查印制板及焊接的质量情况,在检查无误后可通电检查LED显示器的点亮状况。
若亮度不理想,可以调整P0口的电阻大小,一般情况下取200欧姆电阻即可获得满意的亮度效果。
2.软件调试
3.性能分析
按照设计程序分析,LED显示器动态扫描的频率约为167Hz,实际使用观察时完全没有闪烁。
上电时具有一个滚动显示子程序,可以方便的显示制作日期等信息。
七、心得体会
在这次的课程设计中我遇到了些问题,如:
数码管一直显示00而不跳动,原因就是少了返回指令SJMP;
电路焊接短路时会导致数码管全亮,而不显示数字。
在解决这些问题时也是一个再次学习的过程。
从开始接到论文要求到时钟的实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大的项目。
在这段时间里,我学到了很多知识也有很多感受,我开始了独立的学习和试验,查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩作品一步步完善起来,每一次改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。
这次论文的经历也会使我终身受益,我感受到做论文是要用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
通过设计,我在老师的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。
在此,忠心感谢老师以及许多同学的指导和支持。
八、参考文献;
1、《单片机课程设计指导》楼然苗、光飞,北京:
北京航空航天大学出版社,2007.7
2.《单片机原理及应用》何桥,北京:
中国铁道出版社,2007.12
3、《单片机教程习题与解答》俊谟,迎新北京:
北京航空航天大学出版社
2003.3
4.《单片机控制工程实践技术》付家才北京化学工业出版社2004.3
九.时钟计时器使用说明书
一、概述
由芯片AT89C52构成的时钟计时器,具有体积小,成本低,抗干扰能力强,面向控制,可以实现分机各分布式控制等优点。
它广泛应用于各种继电器、电磁开关,控制器、廷时器、定时器等的时间测试。
目前所使用的电秒表大多是指针式或集成电路型的,结构相对复杂、测试功能单一。
本仪器还具有实时时钟、手动计时的功能。
(正常工作电压5V)
二、技术参数
1.兼容MCS51指令系统·
8k可反复擦写(>
1000次)FlashROM
2.32个双向I/O口·
256x8bit部RAM
3.3个16位可编程定时/计数器中断·
时钟频率0-12MHz
4.2个串行中断·
可编程UART串行通道
5.2个外部中断源·
共6个中断源
6.2个读写中断口线·
3级加密位
7.低功耗空闲和掉电模式·
软件设置睡眠和唤醒功
三、工作原理
系统硬件设计
时钟计时器采用AT89C52单片机最小化应用设计;
P1口输出段码数据;
P2.0~P2.5作列扫描输出;
P1.1、P1.1,P1.2和P1.3接按钮开关,用于调时及功能设置;
采用12MHZ的晶振AT89C52作为主控芯片,定期的读取时钟芯片DS1302中的时间并把小时和肥以示在6位LED中,显示时间。
四、结构特征
它体积小,外形尺寸:
16cm*12cm、无外观修饰,完全裸露部元件、操作方便,便于安装、拆卸与维修。
五、使用和维护
1、使用
(1)与输入信号端连接,接5V直流电。
(2)调时功能按下P1.0口按键,若按下时间小于1s,则进入省电状态;
当再按下P1.0口按键时,若按下时间小于0.5s,则时间加1分<
钟>
;
若按下时间大于0.5s,则进入<
小>
时调整状态。
按下P1.1时。
在<
时调整状态下,当按键按下的时间大于0.5s时,退出时间调整状态,时钟从0s开始计时。
(3)在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表显示功能的转换,秒表中断计时程序启动,显示首址改为60H,LED将显示秒表计时单元60H-65H中的数据。
按下P1.2口说我按键开关,可实现秒表清0、秒表启动、暂停功能;
再按下P1.1口时,关闭T1秒表中断计时,显示首址又改为70H,恢复正常时间的显示功能。
2、维护
(1)断电情况下,用万用表检是否有元器件松动,有松动则进行烙牢;
(2)用万用表检测元器件是否接触良好;
(3)检测输入电压是否是5V。
(4)不使用时断开电源,确保电路安全;
(5)尽量保持元件清洁、牢固.
十.时钟计时器技术说明书
一、产品概述
由芯片AT89C52构成的时钟计时器,这种单片机具有足够的空余硬件资源,可以实现其他的扩充功能。
考虑使用电池供电,时钟显示有6位。
采用动态扫描法实现数码管的显示。
电源电压为5V。
单片机具有体积小,成本低,抗干扰能力强,面向控制,可以实现分机各分布式控制等优点。
1.芯片AT89C52图
2.兼容MCS51指令系统·
3.32个双向I/O口·
4.3个16位可编程定时/计数器中断·
时钟频率0-24MHz
5.2个串行中断·
6.2个外部中断源·
7.2个读写中断口线·
8.低功耗空闲和掉电模式·
采用12MHZ的晶振AT89C52作为主控芯片,用于产生时钟信号。
时钟正面图
时钟反面
附录
AT89C52时钟程序;
;
*********************************************************************************************;
以下程序能用于24小时计时,能作为秒表使用,能定时闹铃1分钟(也可关).
使用方法:
开机后在00:
00:
00起开始计时,
(1)长按P1.0进入调分状态:
分单元闪烁
按P1.0加1,按P1.1减1.再长按P1.0进入时调整状态,时单元闪烁,加减调整同调分.
按长按退出调整状态.
(2)按下P1.1进入秒表状态:
按P1.2暂停,再按P1.2秒表清零,再按
P1.2秒表又启动,按P1.1退出秒表回到时钟状态.(3)按P1.3进入设定闹时状态:
00:
-,可进
行分设定,按P1.2分加1,再按P1.3为时调整,00:
-,按P1.2时加1,按P1.1闹铃有效,显示为00:
-0,再按
P1.1闹铃无效(显示00:
-,),按P1.3调闹钟结束.在闹铃时可按P1.3停闹,不按闹铃1分钟.
定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁及秒表定时用,
P1.0、P1.1、P1.2、P1.3为调整按钮,P0口为字符输出口,P2为扫描口,P1.7为蜂呜器口,采用共阳显示管。
50H-55H为闹钟定时单元,60H-65H为秒表计时单元,70H-75H为显示时间单元,76H-79H为分时计时单元。
03H标志=0时钟闪烁,=1秒表,05H=0,不闹铃,=1要闹铃.07H每秒改变一次,用作间隔呜叫.
***********************************************************************************************;
DISPFIRSTEQU30H;
显示首址存放单元
BELLEQUP1.7;
小喇叭
CONBSEQU2FH;
存放报时次数
****************************************
中断入口程序;
ORG0000H;
程序执行开始地址
LJMPSTART;
跳到标号START执行
ORG0003H;
外中断0中断程序入口
RETI;
外中断0中断返回
ORG000BH;
定时器T0中断程序入口
LJMPINTT0;
跳至INTTO执行
ORG0013H;
外中断1中断程序入口
外中断1中断返回
ORG001BH;
定时器T1中断程序入口
LJMPINTT1;
跳至INTT1执行
ORG0023H;
串行中断程序入口地址
串行中断程序返回
以下程序开始;
整点报时用
QQQQ:
MOVA,#10H
MOVB,79H
MULAB
ADDA,78H
MOVCONBS,A
BSLOOP:
LCALLDS20MS
LCALLDL1S
DJNZCONBS,BSLOOP
CLR08H;
清整点报时标志
AJMPSTART1
主程序开始;
START:
LCALLST;
上电显示年月日及班级学号
MOVR0,#00H;
清00H-7FH存单元
MOVR7,#80H;
CLEARDISP:
MOV@R0,#00H;
INCR0;
DJNZR7,CLEARDISP;
MOV20H,#00H;
清20H(标志用)
MOV7AH,#0AH;
放入"
熄灭符"
数据
MOVTMOD,#11H;
设T0、T1为16位定时器
MOVTL0,#0B0H;
50MS定时初值(T0计时用)
MOVTH0,#3CH;
50MS定时初值
MOVTL1,#0B0H;
50MS定时初值(T1闪烁定时用)
MOVTH1,#3CH;
SETBEA;
总中断开放
SETBET0;
允许T0中断
SETBTR0;
开启T0定时器
MOVR4,#14H;
1秒定时用计数值(50MS×
20)
MOVDISPFIRST,#70H;
显示单元为70-75H
以下主程序循环
START1:
LCALLDISPLAY;
调用显示子程序
JNBP1.0,SETMM1;
P1.0口为0时转时间调整程序
JNBP1.1,FUNSS;
秒表功能,P1.1按键调时时作减1加能
JNBP1.2,FUNPT;
秒表STOP,PUSE,CLR
JNBP1.3,TSFUN;
定时闹铃设定
JB08H,QQQQ
AJMPSTART1;
P1.0口为1时跳回START1
FUNPT:
LJMPFUNPTT
以下闹铃时间设定程序,按P1.3进入设定
TSFUN:
JBP1.3,START1;
WAIT113:
JNBP1.3,WAIT113;
等待键释放
JB05H,CLOSESP;
闹铃已开的话,关闹铃
MOVDISPFIRST,#50H;
进入闹铃设定程序,显示50-55H闹钟定时单元
MOV50H,#0CH;
"
-"
闹铃设定时显示格式00:
-
MOV51H,#0AH;
黑"
DSWAIT:
SETBEA
LCALLDISPLAY
JNBP1.2,DSFINC;
分加1
JNBP1.0,DSDEC;
分减1
JNBP1.3,DSSFU;
进入时调整
AJMPDSWAIT
CLOSESP:
CLR05H;
关闹铃标志
CLRBELL
DSSFU:
LCALLDS20MS;
消抖
JBP1.3,DSWAIT
LJMPDSSFUNN;
SETMM1:
LJMPSETMM;
转到时间调整程序SETMM
DSFINC:
JBP1.2,DSWAIT
DSWAIT12:
等键释放
JNBP1.2,DSWAIT12
CLREA
MOVR0,#53H;
LCALLADD1;
闹铃设定分加1
MOVA,R3;
分数据放入A
CLRC;
清进位标志
CJNEA,#60H,ADDHH22;
ADDHH22:
JCDSWAIT;
小于60分时返回
ACALLCLR0;
大于或等于60分时分计时单元清0
DSDEC:
JBP1.0,DSWAIT
DSWAITEE:
LCALLD