用数码管设计的可调式电子钟.docx
- 文档编号:9555065
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:30
- 大小:1.89MB
用数码管设计的可调式电子钟.docx
《用数码管设计的可调式电子钟.docx》由会员分享,可在线阅读,更多相关《用数码管设计的可调式电子钟.docx(30页珍藏版)》请在冰豆网上搜索。
用数码管设计的可调式电子钟
单片机原理及其应用
课程设计说明书
课题名称:
用数码管设计的可调式电子钟
班级:
B电气102
学生:
佳琨
学号:
1010601223
指导教师:
陆广平
完成日期:
2013.6.16
1、引言:
2
1.1课题研究意义与目的2
1.2背景2
1.3定义2
2、课题方案论证2
2.1开发与运行环境2
2.2系统总体设计要求2
2.3硬件功能描述2
3、硬件模块设计2
3.1总体设计2
3.2最小系统电路如图所示2
3.3按键部分电路如图所示2
3.4数码管及其译码部分电路如图所示2
3.5单片机89C52模块2
4、嵌入式软件设计2
4.1主程序2
4.2显示子程序2
4.3定时器/计数器T0中断服务程序2
5、软硬件联调及调试结果2
5.1调试步骤2
5.2实际出现的问题及解决方法2
5.3仿真图如图所示2
5.4实物图及运行如图所示2
6、设计经验总结2
7、参考文献2
附录2
附录1.Proteus仿真图2
附录2.altiumdesigner原理图2
附录3.PCB图2
附录4.C语言程序清单2
附录5.元器件清单2
1、引言:
1.1课题研究意义与目的
此次设计是单片机部的定时/计数器来实现电子时钟的方法以及借助键盘直接控制整时的调整,本设计根据STC89C52单片机系统扩展的基本原理和方法,由单片机STC89S52芯片,数码管和键盘为核心,辅以必要的电路,构成了一个单片机电子时钟。
一块单片机芯片就是一台计算机,由于单片机以其集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点使它应用于智能仪器仪表、机电一体化、实时程控、人类生活中。
除此之外还广泛应用办公自动化领域、商业营销领域、汽车及通信系统、计算机外部设备等各领域中,并且单片机已成为计算机发展和应用的一个重要方面。
由此可见掌握单片机的使用方法和利用单片机解决实际问题具有重要的意义。
而此次的设计刚好用到单片机相关的知识可以说这是这次设计的重要意义和目的所在。
再者,此设计的数码管电子时钟主要是显时间的,是时钟用途。
在此设计的基础上人们还可根据不同的需求和不同的设计水平做出不同的设计项目。
也可以加上日期,温度的显示和闹钟的功能。
如果设计水平还更高的话还可以设计LED电子显示屏。
因此说,数码管电子时钟设计是最简单和基础的。
而且电子时钟很实用,准确性也很好,也容易调节,若有毁坏更换元器件也简单,制作原理和过程也很易懂易做,成本也不高。
在此设计间也包含了很多的知识,跟我所学专业又对口,所以,做这个LED电子时钟是个很用很好很值得做的设计。
1.2背景
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。
目前,单片机正朝着高性能和多品种方向发展,发展趋势将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。
单片机应用的重要意义在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
1.3定义
(1)单片机:
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
(2)STC89C52单片机:
本设计中采用型号为STC89C52的单片机,STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时含6个中断源,3个16位可编程定时计数器,2个全双工串行通信口,片含8KB的可反复擦写的Flash只读程序存储器(ROM)和256B的随机存取数据存储器(RAM), 器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统。
(3)中断:
就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这时CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。
(4)数码管:
分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
(5)KEIL uVISION :
是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C 语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
(6)Proteus:
Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。
通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。
2、课题方案论证
2.1开发与运行环境
本设计以C语言为开发语言,在KeiluVISION4软件平台上进行C程序的编辑,连接和调试,最终与Proteus仿真软件相结合,进行相关的电路仿真及修改,最后利用Altiumdesigner10/软件进行产品的PCB绘制和设计,最终完成电路的焊接和调试,制作出成品。
2.2系统总体设计要求
本次设计中的LED数码管电子时钟电路采用24小时制记时方式。
本次设计采用STC89C52单片机的扩展芯片和1个74LS245做驱动。
本数字钟显示时间需8位,格式为12-00–00,因此需采用8个数码管,若采用单独数码管连线时比较麻烦,而市场上无8位一体的数码管,故本数字钟采用4位一体的共阴极数码管,其引脚图如下:
若使8个数码管正常显示时间,必须采用数码管的动态扫描方式,即每一时刻只有一个数码管点亮,采用软件延时和人眼的视觉停留效果,使人眼看到的数码管是同时点亮的。
因此需要用8个端口控制数码管的段选,即决定数码管显示什么字符,8个端口控制数码管的位选,即决定该时刻让哪个数码管点亮。
考虑到数码管采用动态扫描方式,即循环扫描数码管的8位,并将显示字符送入段选段,为了节省单片机的输入/输出端口和易于程序的编写,采取直接用P0口控制数码管的8个段选位,其中数码管的小数点控制位DP不用可直接悬空。
8位8段LED数码管作正常、调时显示,时间按时分秒排列,时钟误差:
24小时误差3~5秒,并且在按键的作用下可以进行调时,调分功能。
本电路采用直流5V电源供电。
同时为了限流保护电路也用了若干个阻值不等的电阻。
在本文一开始做了一些概述主要说明此设计的目的和意义,并会对这类设计项目发展情况做个简介。
这是对这次设计很重要的一个认识是前提和设计者必须明确和了解的。
然后本文对此设计做了一些简要分析,这对理清设计思想很重要。
然后还对设计中用到的元器件进行比较全面的介绍。
只有真正了解了元器件的特性和功能才能让这些元器件在设计中起到作用。
电子整个设计第一步是电路原理图,它直接关系着后续的工作。
接着当原理图完成好后就要为后面的刻板做准备了,这就是PCB印制电路板的制作。
它影响了整个设计的布局是能不能成功的条件。
紧接着就是程序了,如果只有硬件电路而没有程序,那么这个设计将一文不值,也就是说是一堆破铜烂铁。
所以这部分也是非常重要的。
最后结合整个设计总结了一些心得体会为这次的设计画上完满的句号。
也为以后更好的设计提供经验。
2.3硬件功能描述
此数字钟可实现基本的走时和显示时间时、分、秒;时间的调整,具体如下:
(1)实现基本的走时和显示时间的时、分、秒,上电自动显示初始时间12-00-00。
(2)当第一次按下第一个轻触按键时进入时间的调节状态,此时实现对显示时间的分钟调节,按下第二个按键时实现分钟的加1调节,按下第三个按键时实现分钟的减1调节。
(3)当第二次按下第一个轻触按键时进入显示时间的小时调节状态,按下第二个按键时实现小时的加1调节,按下第三个按键时实现小时的减1调节。
(4)当第三次按下第一个轻触按键时数字钟恢复正常时间显示
3、硬件模块设计
3.1总体设计
电子钟的原理框图如图所示。
它由以下几个部件组成:
单片机STC89C52、电源、时分秒显示部件。
时分秒显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。
时分显示模块以及显示驱动都通过STC89C52的I/O口控制。
电源部分:
整流稳压来得到+5V电压,维持系统的正常工作。
3.2最小系统电路如图所示
单片机最小系统就是能使单片机工作的最少的器件构成的系统,是大多数单片机控制系统中不可缺少的关键部分。
A.片带程序存储器的单片机的最小应用系统:
8051,8751,8052本身
时钟电路
复位电路即可构成最小应用系统
EA接低电平,系统就可以工作。
特点:
系统有大量的输入输出线可供用户使用,P0,P1,P2,P3四个口都可以作为输入输出口使用;部存储器的容量有限,只有128B的RAM和4KB的程序存储器。
B.片无程序存储器的单片机的最小系统:
8031,8032本身
时钟电路
复位电路
片外存储器芯片
地址锁存器即可构成最小应用系统
EA接高电平,ALE接地址锁存器,PSEN接存储器的输出允许端。
3.3按键部分电路如图所示
开关采用一种常开型按键开关,在常态时开关触点处于断开状态,只有按下按键时开关触点才闭合短路,所以可以用万用表检测开关的管脚排列、好坏和质量。
按键是利用机械触点的合、断来实现键的闭合与释放,由于弹性作用,机械触点在闭合及断开瞬间会有抖动的过程,从而使键输入电压的信号也存在抖动现象。
抖动时间的长短与开关的机械特性有关,一般为5~10ms,稳定闭合期时间的长短由按键的动作决定,一般为几百毫秒到几秒。
为了保证按键按动一次,CPU对键闭合仅作一次按键处理,必须去除抖动的影响。
去除抖动的方法一般有硬件和软件两种:
硬件方法就是在按键输出通道上添加去抖动电路,从根本上避免电压抖动的产生,去抖动电路可以是双稳态电路或者滤波电路。
软件方法通常是在检测到有键按下时延迟10~20ms的时间,待抖动期过去后,再次检测按键的状态,如果仍然为闭合状态,才认为是有键按下,否则认为是一个扰动信号。
按键释放的过程与此相同,都要利用延时进行消抖处理。
由于人的按键速度与单片机的运行速度相比要慢很多,所以,软件延时的方法简单可行,而且不需要增加硬件电路,成本低,因而被广泛采用。
其中第一个按键控制选择需要的钟位,第二个按键控制加一调节,第三个按键控制减一调节。
3.4数码管及其译码部分电路如图所示
3.5单片机89C52模块
STC89C52兼容MCS51指令系统,提供以下标准功能8K字节Flash闪速存储器,256字节部RAM,32个I|O口线,3个16位定时器计数器,一个6向量两级中断结构,一个全双工串行通信口,片振荡器及时钟电路。
同时STC89C52可以降至0HZ的静态逻辑系操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时器计数器,串行通信接口,以及中断系统继续工作。
掉电方式保存RAM中的容,但振荡器停止工作并禁止其他所有部件工作,直到下一个硬件复位。
具体管脚作用说明:
A.P0口:
是一组8位漏极开路型双向I|O口,也即地址|数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
B.P1口:
一个带部上拉电阻的8位双向I|O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时计数器2的外部计数输入(P1.0|T2)和输入(P1.1|T2EX),Flash编程和程序校验期间,P1接收低8位地址。
C.P2口:
是一个带有部上拉电阻的8位双向I|O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口输出P2锁存器的容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
D.P3口:
是一组带有部上拉电阻的8位双向I|O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I|O口线外,更重要的用途是它的第二功能。
P3口还接收一些Flash闪速存储器编程和校验的控制信号。
E.RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
F.ALE|PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1|6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
G.PSEN:
程序储存允许输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
H.EA|VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
I.XTAL1:
振荡器反相放大器的部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
4、嵌入式软件设计
4.1主程序
主程序执行流程如图所示,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。
4.2显示子程序
本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。
采用软件译码动态显示。
由于采用8位共阴LED数码管动态扫描实现数据显示,所以显示用十进制BCD码数据的对应段码存放在ROM中。
4.3定时器/计数器T0中断服务程序
定时器/计数器T0用于时间计时。
选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把它们的值放到存储单元的指定位置。
定时器/计数器T0中断服务程序流程图如图所示。
5、软硬件联调及调试结果
5.1调试步骤
(1)在KEIL软件中编写程序,完成后,单击“项目”下的“编译”,产生“.hex”文件。
(2)打开proteus软件,画上硬件电路图,保存。
(3)双击AT89C52芯片,在program file中加入“.hex”文件,按确定。
(4)调试运行。
5.2实际出现的问题及解决方法
在proteus仿真软件调试成功后,实际却出现了一些问题。
首先是市场上没有卖八位共阴数码管的商家,最后只好用两个四位共阴数码管,这使得在狭小的电路板上的焊接难度又加大了一番。
另外市场上没有买到排阻,所以用8个10K的电阻代替。
但数码管亮度明显不足,于是最终选择直接将电阻短接,最终取得效果非常棒。
5.3仿真图如图所示
5.4实物图及运行如图所示
实物图正面
实物图背面
初始通电显示12-00-00
通过按键设置时间,此时为21-44-41
6、设计经验总结
由于电路设计合理,功能电路基本能实现设计要求。
从硬件焊接反方面来说,觉得比较棘手的就是在焊数码管时,和整体器件的布局。
因为采用了两个四位数码管,版面线路较多,布局不好会影响后面工序的焊接,在这点上我自己觉得做的很不错,布线焊接模块功能区分明确。
其中最小系统以及按键部分均采用拉锡的工艺完成。
在编程中遇到的最大困难就是延时的计算和数码管的显示程序段,在整体程序来看,我采用程序的结构化,使程序明朗,各功能程序段都以子程序的方式调用,所以在主程序中是相当的简单明朗的。
在硬件和软件的结合过程中也遇到比较大的问题,就是一开始数码管不是显示8,就是乱码之类的,进过调试,现在没有出现这样的现象了。
这也是我的一大攻关吧。
但是,对于程序我还是很不好以后在这方面要多多加强。
而在硬件的调试中,由于选用电阻过大,数码管的亮度非常的低,我观察周围的同学有做相似课题的也多少会有这个问题。
关于这个问题我本来的解决方案是采用三极管对电路信号进行放大,但后来考虑到我板子上的线路已经成型且非常密集。
最终采取降阻来提高信号,过程中我发现直接将电阻短接可以取得更好的效果,也可以是板面保持美观,所以将段选上的电阻全部短接,最终实物才取得令我比较满意的效果。
在整个设计过程中我学会了很多,不仅巩固了我的专业知识,提升了我的学习能力和知识能力,也使我学习到很多书上没有的,更加强了我的动手能力。
从这次的设计中我确实受益匪浅,我想也不枉陆老师对我的一路辅导与帮助。
我相信,以后有机会一定会做更多这样的设计。
大学三年,一晃就过去了,我很想靠自己的专业做个东西给自己留念。
单片机是一个非常正统的本专业学科,用其来做出实物很有成就感。
再者就也考验了一下自己三年的学习成果,检验了自己的现有的知识储备和动手能力。
未来的工作中我们会遇到比这个复杂得多的系统设计,这次也是一次难得的宝贵的经验。
为今后的人生道路打下了夯实的基础。
7、参考文献
[1]兰红.,邹华.单片机原理及其应用[M].:
机械工业,2012.
[2]郭天祥.新概念51单片机C语言教程[M].:
电子工业,2010.
[3]毅刚,喜元,董继成.单片机原理及其应用[M].:
高等教育,2008.
[4]伟.单片机C语言设计实训100例[M].:
电子工业,2010.
[5]益飞.单片机原理及应用技术[M].:
国防工业,2011.
[6]陆广平.实验指导书
附录
附录1.Proteus仿真图
附录2.altiumdesigner原理图
附录3.PCB图
附录4.C语言程序清单
#include
UnsignedcharSeg[]={0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f,0x40,0x00};//数码管显示1-9和—的断码
unsignedcharCom[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};//数码管亮灭的数组
/*定义全局变量*/
unsignedintcounter;//定义计数数据
unsignedcharsign;//定义闪烁标志位
unsignedcharmode;//定义模式
unsignedcharsecond=0,minute=0,hour=12;//定义秒分时的初值
unsignedcharADD_bit=0,DEC_bit=0,flag=0;//加标志位和减标志位赋初值0
/*定义按键*/
Sbitms=P1^0;//按键P^0调节模式变化
sbitADD=P1^1;//按键P1^1实现加一
sbitDEC=P1^2;//按键P1^2实现减一
/*延时函数*/
voiddelay(unsignedintt)
{
while(--t);
}
/*数码管扫描*/
voidSegplay()
{
/*模式0正常模式*/
if(mode==0)
{
P0=Seg[second%10];P2=Com[7];delay(500);P2=Com[8];
P0=Seg[second/10];P2=Com[6];delay(500);P2=Com[8];
P0=Seg[10];P2=Com[5];delay(500);P2=Com[8];
P0=Seg[minute%10];P2=Com[4];delay(500);P2=Com[8];
P0=Seg[minute/10];P2=Com[3];delay(500);P2=Com[8];
P0=Seg[10];P2=Com[2];delay(500);P2=Com[8];
P0=Seg[hour%10];P2=Com[1];delay(500);P2=Com[8];
P0=Seg[hour/10];P2=Com[0];delay(500);P2=Com[8];
}
/*模式1可加减分*/
if(mode==1)
{
if(sign==1)
{
P0=Seg[second%10];P2=Com[7];delay(500);P2=Com[8];
P0=Seg[second/10];P2=Com[6];delay(500);P2=Com[8];
P0=Seg[10];P2=Com[5];delay(500);P2=Com[8];
P0=Seg[minute%10];P2=Com[4];delay(500);P2=Com[8];
P0=Seg[minute/10];P2=Com[3];delay(500);P2=Com[8];
P0=Seg[10];P2=Com[2];delay(500);P2=Com[8];
P0=Seg[hour%10];P2=Com[1];delay(500);P2=Com[8];
P0=Seg[hour/10];P2=Com[0];delay(500);P2=Com[8];
}
if(sign==0)
{
P0=Seg[second%10];P2=Com[7];delay(500);P2=Com[8];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 设计 调式 电子钟