单片机数字钟毕业设计论文Word格式文档下载.docx
《单片机数字钟毕业设计论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机数字钟毕业设计论文Word格式文档下载.docx(63页珍藏版)》请在冰点文库上搜索。
![单片机数字钟毕业设计论文Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/cc0169bc-e79e-4c5c-a924-6027fac36527/cc0169bc-e79e-4c5c-a924-6027fac365271.gif)
数字钟
一、绪论
(一)课题提出的目的及意义
此课题是用51系列单片机对数字钟的设计。
分析了单片机数字钟试验的必要性及试验条件的要求,并着重讲述了其工作原理、结构、硬件以及软件的设计等。
该系统利用51系列单片机,来实现对单片机数字钟的设计,能够实现作息时间的基本控制。
通过本次设计从而达到进一步理解和运用单片机技术的能力。
(二)设计的任务及要求
设计制作一个单片机数字钟及控制电路,能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备(如电铃、广播、充电器)的实时控制。
1.硬件要求
设计一个AT89C2051单片机基本应用系统,用AT89C2051单片机的串行口扩展四位静态显示电路,作为输出电路,显示器用七段共阳LED显示器,显示小时和分钟;
设计两个按钮开关作为输入电路,进行手动调时和调分,秒信号用发光二极管闪烁表示。
2.软件要求
(1)实现24小时时间控制。
(2)实现小时和分钟显示。
(3)实现秒表闪烁功能。
(4)实现调时和调分功能。
二、总体方案设计
(一)单片机选型
目前在单片机系统中,应用比较广泛的微处理器芯片主要为8XC5X系列单片机。
该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。
例如比较常用的AT89C2051单片机,带有2KBFlash可编程、可擦除只读存储器(E2PROM)的低压、高性能8位CMOS微型计算机。
拥有15条可编程I/O引脚,2个16位定时器/计数器,6个中断源,可编程串行UART通道,并能直接驱动LED输出。
仅仅是为了完成时钟设计,应用AT89C2051单片机完全可以实现。
但是本设计中需要更多的I/O引脚,故本设计采用具有32根I/O引脚的STC89C52单片机。
STC89C52单片机是一款低功耗,低电压,高性能CMOS8位单片机,片内含8KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器,器件采用CMOS工艺和高密度、非易失性存储器(NURAM)技术制造,其输出引脚和指令系统都与MCS-51兼容。
片内的FLASH存储器允许在系统内可改编程序或用常规的非易失性存储器编程器来编程。
因此,STC89C52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域[1]。
工作电压:
3.6V-2.4V,可低至2.4V-1.9V
I/O口:
P0,P1,P2,P3口可以承受5V输入。
P0口不要接到5V系统,只能接3.3V系统,如果接5V系统要接上拉电阻。
A/D转换在P1口,P1.0-P1.7八路。
图1STC89C52管脚图
(二)时钟芯片选择
在电子时钟设计中,常用的实时时钟芯片有DS12887、DS1216、DS1643、DS1302。
每种芯片的主要时钟功能基本相同,只是在引脚数量、备用电池的安装方式、计时精度和扩展功能等方面略有不同。
DS12887与DS1216芯片都有内嵌式锂电池作为备用电池;
X1203引脚少,没有嵌入式锂电池,跟DS1302芯片功能相似,只是相比较之下,X1203与STC89C52搭配使用时占用I/O口较多。
DS1643为带有全功能实时时钟的8K×
8非易失性SRAM,集成了非易失性SRAM、实时时钟、晶振、电源掉电控制电路和锂电池电源,BCD码表示的年、月、日、星期、时、分、秒,带闰年补偿。
同样,DS1643拥有28只管脚,硬件连接起来占用微处理器I/O口较多,不方便系统功能拓展和维护。
故而从性价比和货源上考虑,本设计采用实时时钟日历芯片DS1302。
(1)DS1302简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。
有主电源和备份电源双引脚,而且备份电源可由大容量电容(>1F)来替代。
需要强调的是,DS1302需要使用32.768KHz的晶振[2]。
(2)DS1302管脚说明
图2DS1302芯片引脚图
表1DS1302引脚功能说明
引脚号
名称
功能
1
VCC1
备份电源输入
2
X1
32.768KHz晶振输入
3
X2
32.768KHz晶振输出
4
GND
地
5
RST
控制移位寄存器/复位
6
I/O
数据输入/输出
7
SCLK
串行时钟
8
VCC2
主电源输入
(3)DS1302读写和控制说明
DS1302的数据读写方式有两种,一种是单字节操作方式,一种是多字节操作方式。
每次仅写入或读出一个字节数据称为单字节操作,每次对时钟/日历的8字节或31字节RAM进行全体写入或读出的操作,称其为多字节操作方式。
当以多字节方式写时钟寄存器时,必须按数据传送的次序依次写入8个寄存器。
但是,当以多字节方式写RAM时,不必写所有31字节。
不管是否写了全部31字节,所写的每一个字节都将传送至RAM。
为了启动数据的传输,CE引脚信号应由低变高,当把CE驱动至逻辑1的状态时,SCLK必须为逻辑0,数据在SCLK的上升沿串行输入。
无论是读周期还是写周期,也无论送方式是单字节传送还是多字节传送,都要通过控制字指定40字节中的哪个将被访问。
在开始8个时钟周期把命令字(具有地址和控制信息的8位数据)装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据,所有的数据在时钟的下降沿变化。
所有写入或读出操作都是先向芯片发送一个命令字节。
对于单字节操作,包括命令字节在内,每次为2个字节,需要16个时钟;
对于时钟/日历多字节模式操作,每次为7个字节,需要72个时钟;
而对于RAM多字节模式操作,每次则为32字节,需要多达256个时钟[3]。
表2LCD1602引脚功能
引脚编号
引脚符号
功能规格
VSS(输入)
接地,0V
Vdd(输入)
接电源,5V±
5%
V0(输入)
反视度调整,使用可变电阻调节,可改变对比度
RS(输入)
寄存器选择。
1:
选择资料寄存器,0:
选择指令寄存器
(输入)
读写选择,1:
读;
0:
写
E(输入)
使能选择。
LCD可读写。
LCD不可读写
DB0
数据端口的第0位
DB1
数据端口的第1位
9
DB2
数据端口的第2位
10
DB3
数据端口的第3位
11
DB4
数据端口的第4位
12
DB5
数据端口的第5位
13
DB6
数据端口的第6位
14
DB7
数据端口的第7位
15
背光电源正极,5V±
16
背光电源负极,0V
三、系统硬件设计及实现
该设计的硬件电路由主控部分(单片机STC89C52)、计时部分(实时时钟芯片DS1302)、显示部分(LCE1602)、按键部分(独立式键盘)、音响部分(直流蜂鸣器)5个部分组成。
各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的功能。
各部分的硬件电路设计如下:
(一)单片机外围电路设计
单片机STC89C52作为主控芯片,控制整个电路的运行。
单片机外围需要一个复位电路,复位电路的功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
复位电路的设计图如图3示:
图3复位电路设计图
(二)DS1302与单片机的接口设计
时钟芯片DS1302与单片机STC89C52的接口是由3条线来完成的,单片机STC89C52的P1.6与时钟芯片的数据传输端相连,P1.5用来作为DS1302输入时钟SCLK控制端,P1.7控制DS1302的复位输入端。
DS1302的第8管脚与一个独立电池连接,2、3管脚接标准32.768KHz石英晶振。
DS1302与单片机的接口电路如图4所示:
图4DS1302与单片机的连接
(三)LED显示电路
显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:
发光二极管LED显示器、液晶LCD显示器、CRT显示器等。
LED显示器是现在最常用的显示器之一,如下图所示。
图5LED显示器的符号图
发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。
分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
图是共阳式、共阴式LED数码管的原理图和符号.
图图6共阳式、共阴式LED数码管的原理图和数码管的符号图
显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。
采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。
LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。
对于多位LED显示器,通常都是采用动态扫描的方法进行显示。
(四)按键电路设计及按钮控制
1.电路设计
该设计需要校对时间,所以用三个按键来实现。
按hour来调节小时的时间,按minute来调节分针的时间,按sceond来调节秒的时间。
下图是按键硬件连接图。
图7按键控制电路的硬件连接图
2.按钮部分控制
由两个按钮控制SW-进入设置按钮SWJ-显示时间时长;
长按-显示当前秒;
闹铃时:
按两秒闹铃停止或1分钟后自动停止。
设置时:
改变设置
SW按第一次,修改当前小时(进入按SWJ改变下同)。
SW按第二次,修改当前分钟。
SW按第三次,修改闹铃小时。
SW按第四次,修改闹铃分钟。
SW按第五次,闹铃开关(off关on开)。
SW按第六次,每天微调(-“nn”表示每天要减nn秒,“-|nn”表示每天要加nn秒。
SW按第七次,设置显示屏类型(1,2)秒点不显示时改变此项。
SW按第八次,保存设置并退出到时间显示。
(五)闹铃电路设计
闹铃音乐可以直接采用蜂鸣器闹铃,如当前时刻与闹铃时间相同,单片机向蜂鸣器送出高电平,蜂鸣器发声。
采用蜂鸣器闹铃结构简单,控制方便,但是发出的闹铃声音单一。
闹铃的音乐不是本设计中的重点,故采用最简单的方法,占用单片机一根I/O口P1.3,中间用PNP型三极管S9012连接P1.3和蜂鸣器。
当P1.3引脚为低电平时,S9012的发射极和集电极导通,使蜂鸣器发声。
当响铃标志位为“1”时,P2.0送一定频率脉冲,使蜂鸣器发出声音[5]。
如图9所
图9闹铃电路
(六)电源设计
时钟芯片DS1302有很宽的工作电压范围,其工作电压为2.5~5.5V。
单片机STC89C52的工作电压范围相对较窄,为4.0~5.5V,所以本设计中,利用直流电1.5v的四节电池作为电源。
四、硬件原理图
五、软件设计
(一)主程序设计
主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。
图10主程序流程图
(二)按键处理
是先检测秒按键是否按下,秒按键如果按下,秒就加1;
如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;
如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;
如果没有按下,就把时间显示出来。
(三)定时器中断
时是先检测1秒是否到,1秒如果到,秒单元就加1;
如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;
如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。
六、系统调试
(一)软件调试
软件调试相对比较简单,但是要掌握仿真软件的用法,首先在仿真软件(Proteus)上建立仿真模型(电路图),然后用KeilC编程序和Proteus进行联机仿真调试,分别对显示、按键、时钟等各个部分进行调试,检测电路原理图的正确与否。
(二)硬件调试
单片机基础电路包括电源、单片机、外部时钟震荡电路、复位电路和外部接口电路。
调试过程需要注意以下几点:
1.检查电源是否完好。
2.单片机电源要连接正确,并且保证AT89C51的31号引脚接高电平。
AT89C51的31号引脚是外部程序存储器选择信号端,当该引脚为高电平时,单片机会一直从片内程序存储器内取指令。
3.如果使用P0口做I/O口,要接上拉电阻。
4.使用万用表排查电路中是否存在断路或者短路情况。
笔者在制作外部接口电路时使用的是排针,焊接时容易出现管脚之间短路,所以在上电以前必须先排查电路。
5.编辑一个简单程序,上电运行,检查单片机是否正常工作,复位电路是否正确。
1.显示电路调试
由于显示电路中连线比较多,所以应该先使用万用表排除电路中是否存在断路或者短路情况,可别是插针部分,此外特别注意LCD1602的三个控制管脚P1.0、P1.1、P1.2是否与单片机连接上了。
然后编写简单的显示程序运行,检查电路是否正常。
2.DS1302电路调试
该电路包含DS1302芯片、主电源、备用电源、晶振等部分。
在与单片机连接的过程中需要注意以下几点:
(1)清楚DS1302与单片机连接的管脚。
本设计定义为:
DS1302的SCLK连接P3.1,I/O连接P3.0,RST连接P3.7。
(2)注意电源正负极连接。
(3)DS1302接32.768KHz的晶振。
该晶振体型比较小,在焊接时要小心,注意不要将晶振引脚弄断。
同时也要尽量使晶振离DS1302的X1、X2引脚近距离焊接。
(4)编写DS1302的时钟/日历程序,只要求能够正确显示时间。
烧录进单片机,检查电路电源正负极连接是否正确,检查无误后可以上电检查[10]。
3.按键电路的调试
按键电路比较简单,故调试起来也很容易。
如果确保按键焊接正确的情况下,编写一个简单的按键程序和显示程序一起就可以检测其正确性了。
结束语
经过一个多月的努力我的毕业设计终于完成了,但是现在回想起来做毕业设计的整个过程,颇有心得,其中有苦也有甜,艰辛同时又充满乐趣,不过乐趣尽在其中!
通过本次毕业设计,没有接受任务以前觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
这次毕业设计要求是基于单片机控制的作息时间系统,自行设计这对我将来踏上工作岗位是非常有帮助的。
这也是我对自己的考验。
于是本次设计过程中我完全按照软件设计步骤的要求来进行,从课题分析开始,再进行总体设计、详细设计,最后到系统实现。
每一步都让我将理论学习的知识应用到实践中去。
也使我掌握了一整套规范的控制操作流程。
在课题分析阶段,由于本次是设计一个单片机控制系统,所以对其中的单片机的工作分析尤为重要。
对指导老师提供的资料必须要吃透。
这是关键,从查阅资料、提出问题,到慢慢一一解决问题,在总体设计阶段,由于课题分析做的比较全面,很快就对系统的功能,控制机制有了充分的认识,形成了自动控制流程图.在详细设计阶段,首先考虑各电路模块的主要功能及软件的设计,分别进行安装调试。
其次将写好的程序进行上机调试,这时就遇到了非常大的困难,烦琐的接口采集数据,分析数据,检测,调用,很容易出错。
最后,系统运行环节。
对已完成的程序和硬件系统相结合。
调试时,由于控制逻辑上出现了一点问题,使得硬件和软件不能完全统一。
当时我心里是非常焦急的,这一出错也意味着前功尽弃。
然而,在指导老师的分析与鼓励下,我重新纠错找到了错误并改正。
使我意识到今后不论遇到什么情况都要分析原因,沉着应对,必然能“化险为夷”。
致谢
这次毕业设计让我学习到很多。
虽然结束了,但这只能是一个开始。
怎样使自己的能力得到提高,在单片机领域,要学的实在太多,仅大学生涯所学实在有限。
我们只有对自己有了更高的要求,才能作为动力不断取得新的成绩!
另外要感谢我的指导老师谢老师对我悉心的指导,感谢老师给我的帮助。
并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
在写这篇毕业设计论文的过程中,我也遇到了许多的困难,之所以能坚持至今,这都离不开我的导师和同学的帮助。
导师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。
不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。
本论文从选题到完成,每一步都是在导师的指导下完成的,倾注了导师大量的心血。
在此,谨向导师表示崇高的敬意和衷心的感谢!
最后,感谢我的母校;
感谢在这三年来教给我知识的所有老师;
也感谢所有在本次毕业设计中给过我帮助的老师、同学和舍友,是你们的鼓励、支持和帮助,才使得我能坚持完成毕业论文。
参考文献
[1]李及.赵利民.MCS-51系列单片机原理与应用[M].长春:
吉林科学技术社,1995.23-25.
[2]万胜前.基于KeilC51软件的电子钟设计与制作[J],鄂州大学学报,2007年第2期.
[3]蒋敏.单片微机万年历设计[D],职大学报,2000年第2期.
[4]林敏等.计算机控制技术及工程应用[M],国防工业出版社,2009.8.90-93
[5]何书森等.用电子线路设计速成[M],福州:
福建科学技术出版社,2005.10.12-13
[6]黄明强.DS1302在单片机系统中的应用[J].保定师范专科学校学报,2004,17
(2)
[7]蒋敏.单片微机万年历设计[J],职大学报,2000年第2期
[8]林敏等.计算机控制技术及工程应用[M],国防工业出版社,2009.8.66-69
[9]戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M],北京:
电子工业出版社,2006.4.192-193
[10]沈红卫.基于单片机的智能系统设计与实现[D],北京:
电子工业出版社,
附件:
DS1302元器件明细表
型号
数量
PCB编号
接线座2芯
J1
5.1K
R1~R5
680欧姆
Ra~RgRdp
IN4184
D5
DS1302
U2
22P
C8~C9
32768HZ晶振
Y2
自锁开关
AT89C51
跳线(32768晶振固定)
自备
0.1Uf(104)
C4
1u(105)
C5
2SA1015
Q1~Q5
数码管座
DIP20座
12MHZ晶振
Y1
17
30P
C6~C7
18
微动开关
SWSWJ
19
电池座
20
220uF
C3
21
5V蜂鸣器
BZ1
22
2032-3V电池
BT1
23
四位七段LED
DS1
24
PCB
原程序
ORG0000H;
定位
AJMPSTART;
跳转到主程序
ORG000BH;
定位
AJMPTIME0
ORG001BH;
AJMPTIME1
ORG0100H;
START:
;
内存数据定义
BitCntdata21h;
数据位计数器
ByteCntdata22h;
数据字节计数器
Commanddata23h;
命令字节地址
Commanddata31h;
SSSDATA24H;
显示用时
SSFDATA25H;
显示用分
SSMDATA2CH;
秒,自动调整时间用
XSMZTDATA2DH;
计数用,显示秒
SSMMDATA2EH;
秒,显示秒用
NZSDATA26H;
闹钟用时
NZFDATA27H;
闹钟用分
NZZTDATA28H;
闹钟暂停
FHLDAT