单片机时钟表设计最终版本.docx
《单片机时钟表设计最终版本.docx》由会员分享,可在线阅读,更多相关《单片机时钟表设计最终版本.docx(21页珍藏版)》请在冰豆网上搜索。
![单片机时钟表设计最终版本.docx](https://file1.bdocx.com/fileroot1/2023-2/9/cac868d0-89bb-4ce8-8676-f48c9f6cc133/cac868d0-89bb-4ce8-8676-f48c9f6cc1331.gif)
单片机时钟表设计最终版本
单片机时钟表设计
摘要:
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。
关键词:
单片机;AT89S
引言
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?
这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:
一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:
DS1302,DS12887,X1203等都可以满足高精度的要求。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
1方案论证与比较
1.1数字时钟方案
数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:
本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:
本方案完全用软件实现数字时钟。
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
1.2数码管显示方案
方案一:
静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:
动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用方案二。
2系统设计
2.1总体设计
2.1.1系统说明
利用单片机(AT89S51)制作简易电子时钟,由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。
6个PNP管(9012)分别控制六个数码管的亮灭,一个按键用于时间调整。
2.1.2系统框图
图3-1
2.2模块设计
2.2.1电源部分
图3-2
如图3-2所示,从外部引入4.5V的直流电,为单片机、复位电路提供电源。
2.2.2复位电路
图3-3
如图3-3所示,复位电路主要由型号为1N4148的二极管,型号为10UF/16V的电解电容,型号为104的瓷片电容,10K的电阻以及按键S1构成,S1接芯片的相应引脚RST,当开关按下时引脚RST为高电平1,断开时引脚为低电平0。
2.2.3程序下载接口
图3-4
如图3-4所示,由AT89SISP构成的两排十针下载口,板图上有一个小方框,为1号引角;下载线的凸口为正方向,凸口的右侧边的第一个插孔为1号引角。
2.2.4位选部分
图3-5
图3-5为位选电路,三极管的集电极接数码管的公共端,当P2口对应的引脚输出高电平时三极管导通,对应的数码管显示数据。
这样,在同一时刻,6位LED中只有选通的那1位显示出字符,而其他5位则是熄灭的。
同样,在下一时刻,只让下一位的位选线处于选通状态,而其他个位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。
如此循环下去,就可以使各位显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多位同时亮的假象,达到同时显示的效果。
2.2.5数码管的连接电路
图3-6
图3-6为数码管的引脚图,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由AT89S51控制组合0-9十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。
由于各位的段码线并联,8位I/O口输出段码对各个显示位来说都是相
2.2.6控制部分
图3-7
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4Kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
AT89S51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
3原理图与PCB图
图4-1
图4-2
4软件设计
4.1程序流程图
4.2源程序
表5-1P1口对应段码及数值:
显示数字
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
16进制代码
dp
g
f
e
d
c
b
a
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
1
1
0
06H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
LJMPINTT0
ORG0013H
RETI
ORG001BH
LJMPINTT1
ORG0023H
RETI
START:
MOVR0,#70H;清70H-7AH共11个内存单元
MOVR7,#0BH
;clrP3.7
CLEARDISP:
MOV@R0,#00H
INCR0
DJNZR7,CLEARDISP
MOV20H,#00H
MOV7AH,#0AH
MOVTMOD,#11H
MOVTL0,#0B0H
MOVTH0,#3CH
MOVTL1,#0B0H
MOVTH1,#3CH
SETBEA
SETBET0
SETBTR0
MOVR4,#14H
START1:
LCALLDISPLAY
JNBP3.7,SETMM1
SJMPSTART1
SETMM1:
LJMPSETMM
INTT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVA,#0B7H
ADDA,TL0
MOVTL0,A
MOVA,#3CH
ADDCA,TH0
MOVTH0,A
SETBTR0
DJNZR4,OUTT0
ADDSS:
MOVR4,#14H
MOVR0,#71H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#60H,ADDMM
ADDMM:
JCOUTT0
ACALLCLR0
MOVR0,#77H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#60H,ADDHH
ADDHH:
JCOUTT0
ACALLCLR0
MOVR0,#79H
ACALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUR
HOUR:
JCOUTT0
ACALLCLR0
OUTT0:
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
POPPSW
POPACC
SETBET0
RETI
INTT1:
PUSHACC
PUSHPSW
MOVTL1,#0B0H
MOVTH1,#3CH
DJNZR2,INTT1OUT
MOVR2,#06H
CPL02H
JB02H,FLASH1
MOV72H,76H
MOV73H,77H
MOV74H,78H
MOV75H,79H
INTT1OUT:
POPPSW
POPACC
RETI
FLASH1:
JB01H,FLASH2
MOV72H,7AH
MOV73H,7AH
MOV74H,78H
MOV75H,79H
AJMPINTT1OUT
FLASH2:
MOV72H,76H
MOV73H,77H
MOV74H,7AH
MOV75H,7AH
AJMPINTT1OUT
ADD1:
MOVA,@R0
DECR0
SWAPA
ORLA,@R0
ADDA,#01H
DAA
MOVR3,A
ANL
MOV@R0,A
MOVA,R3
INCR0
SWAPA
ANLA,#0FH
MOV@R0,A
RET
CLR0:
CLRA
MOV@R0,A
DECR0
MOV@R0,A
RET
SETMM:
cLRET0
CLRTR0
LCALLDL1S
JBP3.7,CLOSEDIS
MOVR2,#06H
SETBET1
SETBTR1
SET2:
JNBP3.7,SET1
SETB00H
SET4:
JBP3.7,SET3
LCALLDL05S
JNBP3.7,SETHH
MOVR0,#77H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#60H,HHH
HHH:
JCSET4
LCALLCLR0
CLRC
CLOSEDIS:
SETBET0
SETBTR0
CLOSE:
JBP3.7,CLOSE
LCALLDISPLAY
JBP3.7,CLOSE
WAITH:
JNBP3.7,WAITH
LJMPSTART1
SETHH:
CLR00H
SETHH1:
JNBP3.7,SET5
SETB01H
SET6:
JBP3.7,SET7
LCALLDL05S
JNBP3.7,SETOUT
MOVR0,#79H
LCALLADD1
MOVA,R3
CLRC
CJNEA,#24H,HOUU
HOUU:
JCSET6
LCALLCLR0
AJMPSET6
SETOUT:
JNBP3.7,SETOUT1
LCALLDISPLAY
JNBP3.7,SETOUT
CLR01H
CLR00H
CLR02H
CLRTR1
CLRET1
SETBTR0
SETBET0
LJMPSTART1
SET1:
LCALLDISPLAY
AJMPSET2
SET3:
LCALLDISPLAY
AJMPSET4
SET5:
LCALLDISPLAY
AJMPSETHH1
SET7:
LCALLDISPLAY
AJMPSET6
SETOUT1:
LCALLDISPLAY
DISPLAY:
MOVR1,#70H
MOVR5,#0FEH
PLAY:
MOVA,R5
MOVP2,A
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP1,A
LCALLDL1MS
INCR1
MOVA,R5
JNBACC.5,ENDOUT
RLA
MOVR5,A
AJMPPLAY
ENDOUT:
SETBP2.5
MOVP1,#0FFH
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
DS20MS:
ACALLDISPLAY
ACALLDISPLAY
ACALLDISPLAY
RET
DL1S:
LCALLDL05S
LCALLDL05S
RET
DL05S:
MOVR3,#20H
DL05S1:
LCALLDISPLAY
DJNZR3,DL05S1
RET
END
5结束语
本设计能够很准确的走时,并能够通过硬件对时钟进行时间调整。
显示XX:
XX:
XX时间。
时间可调:
调整键(S2)按下时间小于1秒(t<1s),关闭显示(省电)。
调整键(S2)按下(t>0.5s)分钟位闪亮,此时按下S2键(t<0.5s)该个位数值加1,当加到9时,再按下S2键则该个位显示0,分钟十位加1。
继续按下调整键(S2)(t>0.5s)时钟位闪亮,此时按下S2键(t<0.5s)该个位数值加1,当加到9时再按下加S2键则该个位显示0,时钟十位加1。
继续按下调整键(S2)(t>0.5s),返回到正常显示状态。
下载线和电源线插接说明:
1.下载线插接说明:
两排十针下载口,板图上都有一个小方框,为1号引角;下载线的凸口为正方向,凸口的右侧边的第一个插孔为1号引角,这一点一定要切记,不然的话程序下载不进去。
2.电源线插接说明:
电池盒的红线为正,黑线为负。
板子所留出来的电源插口用VCC(表示电源正)和GND(表示电源负)标明。
参考文献
[1]于海生.微型计算机控制技术[M].清华大学出版社.1999-6
[2]孙涵芳.MCS-51系列单片机原理及应用[M].北京航空航天大学出版社.1996-4
[3]黄正谨.综合电子设计与实践[M].东南大学出版社.2002-3
[4]杨欣等.电子设计从零开始[M].清华大学出版社.2005-10
[5]谢嘉奎.电子线路[M].高等教育出版社.2003-2
[6]夏路易,石宗义.电路原理图与电路设计教程Protel99SE[M].北京希望电子出版社.2002
[7]王毓银.数字电路逻辑设计[M].高等教育出版社.2004-2
[8]邱关源.电路[M].高等教育出版社.2003-2
致谢
谢谢王老师给我们这次机会,谢谢组员的合作,通过这次试验,让我知道要想做好每件事,都需要自己的努力,以及整个团队的协作,谢谢我的同学的帮助,使我尽快的完成了我的课程设计。
在这次课程设计中,我有了太多的感慨,从中也学到了挺多
目录
摘要1
关键词1
引言2
1方案论证与比较2
1.1数字时钟方案2
1.2数码管显示方案3
2系统设计4
2.1总体设计4
2.1.1系统说明4
2.1.2系统框图4
2.2模块设计4
2.2.1电源部分4
2.2.2复位电路5
2.2.3程序下载接口5
2.2.4位选部分6
2.2.5数码管的连接电路7
2.2.6控制部分8
3原理图与PCB图8
4软件设计10
4.1程序流程图10
4.2源程序12
5结束语18
参考文献19
致谢20