摘要
近几年,单片机在各个领域得到广泛的应用。从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。在它问世之前,自动控制设备得不到广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。在第一台微处理器成功研制不久,第一个单片机就问世了。因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。
本设计利用Atmel公司的AT89C52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用C语言进行软件编程,并用Proteus软件进行演示、验证。主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机80C51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机的数字电子时钟。它的计时周期为24小时,显满刻度为“23时59分59秒”,且配有4个独立键盘,可以灵活地调节时间和日期,并具有一定的扩展性。
1 绪论
1.1 数字时钟设计的背景单片机自从1976年由Intel公司推出MCS-48开始,迄今已有二十多年之久了。由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,单片机应用领域已经从面向工业控制、通讯、交通、智能仪表等方面迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。
本文讨论的单片机数字电子时钟系统的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高,功能多等多种特点。不仅能满足所需要求而且还有很多功能可供扩展,有着广泛的应用实践领域。
2 设计方案通常通过单片机设计电子时钟有2种方法:一是通过单片机内部的定时器计数器。采用软件编程实现时钟计数,一般称为软时钟,这种方法硬件线路简单,程序比较复杂。系统的功能一般与软件相关。通常用于对时间精度要求不搞的场合。二是采用时钟芯片 他的功能强大,功能不见集成在芯片内需,自动产生时钟等相关功能。硬件成本较高,软件编程仙丹。通常对时钟精确度要求较高的场合。
电子时钟的系统软件程序有、由主程序和子程序组成,主程序包含初始化参数设置,按键处理,数码管显示模块等。在设计时候、各个模块都采用子程序结构设计。在主程序种调用。由于定时器,计数器采用中断方式处理,应此还用辨析定时器,中断服务子程序,在定时器,计数器中断服务子程序种对时钟进行调整。
2.1 主程序
主程序先对显示单元和定时器计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有建按下,则转入相应的功能程序。
2.2 数码管显示模块
本设计的显示模块采用8位一体共阳极数码管,显示分为时钟显示和日期星期两种模式,当为显示时钟模式时,从右到左依次显示秒个位,秒十位,横线,分个位,分十位,横线,时个位,时十位;当为显示日期和星期模式时,从右到左一次显示星期,不显示,横线,日个位,日十位,月个月,月十位。数码管显示的信息用8个内存单元存放,这8个内存单元为显示缓冲区,其中秒个位和秒十位,分个位和分十位,时个位和时十位分别由秒数据,分数据和小时数据分拆得到。在本系统种数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息字段码表,显示的时候,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出的所显示的字段码。从P0口输出,同时在P2口将对应的位选码输出,选中显示的数码管,就能在相应的数码管上显示显示缓冲区的内容。
2.3 定时器计数器T0中断服务程序
定时器计数器T0用于时间计时,选择方式1,重复定时,定时时间设为100MS,定时时间到则溢出中断,在中断服务程序中用一个计数器对100MS计数,计10次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清零。分单元加到60的时候,则对时单元加1,同时分单元清零,时单元加到24的时候则对时单元清零,标志一天时间计满,此时所以单元清零。在对各单元计数的同时,把它们的值放到存储器单元的制定位置
2.4按键处理模块
按键处理设置为:如果没有按键,则为时钟模式,时钟正常走时,当按下shijia按键的时候,时单元每次加1,当加到24后跳为00,当按下shijian按键的时候,时单元每次减1,当减到00的时候跳到23;当按下fenjia按键的时候,分单元每次加1,当加到60的时候跳为00,按下fenjian按键的时候,分单元每次减1,当减到00的时候跳为59;当xianshiqih建按下时,为显示日期模式,此时数码管显示日期和星期,当同时按下shijia按键的时候,月单元每次加1,当加到13后跳为00,当同时按下shijian按键的时候,日单元每次加1,如果月份为:1月、3月、5月、7月、8月、10月、12月的时候,当日加到32的时候跳到1;如果月份为4月、6月、9月、11月的时候,当日加到31的时候跳到1,如果月份为2月的时候,当日加到29时跳到1。当同时按下fenjia按键的时候,星期单元每次加1,当加到6的时候跳为0,“0”表示星期日。
3 硬件电路设计
3.1 复位电路
MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
上电复位:上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。
上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
按键复位:电路在运行过程中,也可以通过按键进行复位。当按下复位按键,复位引脚RST通过按键与地相接,得到低电平,从而实现复位。
电路图如图2所示:
图2 复位电路
3.2 时钟电路
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。
电路图如图3所示:
图3 时钟震荡电路
MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
3.3 按键电路
按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。
电路图如图4所示:
图4 按键电路
P1.4口为SP5所接的按键为模式切换按键,当不按下此按键时为时钟显示模式,当按下此按键时为日期和星期显示模式。
当为时钟显示模式的时候,P1.0到P1.3分别表示如下:
P1.0口为SP1表示调整小时“+”,按一下则时加1,当加到23后再加一次为0;
P1.1口为SP2表示调整小时“-”,按一下则时减1,当减到0后再减一次为23;
P1.2口为SP3表示调整分“+”,按一下则分加1,当加到59后再加一次为0;
P1.3口为SP4表示调整分“-”,按一下则分减1,当减到0后再加一次为59。
当为日期和星期模式的时候,P1.0到P1.3分别表示如下:
P1.0口为SP1表示调整月份“+”,按一下则月份加1,当加到12月后再加一次为1月;
P1.1口为SP2表示调整日“+”,按一下则日加1,当加到31后再加一次为1;
P1.2口为SP3表示调整星期“+”,按一下则星期加1,当加到6后再加一次为0,0表示星期一;
P1.3口为SP4无定义,按下此按键无任何动作。
3.4 数码管显示电路
数码管显示器成本低,配置灵活,与单片机接口简单,在单片机应用系统中广泛应用。
数码管是由8个发光二极管构成的显示器件。在数码管中,若将二极管的阳极连在一起,称为共阳极数码管;若将二极管的阴极连在一起,称为共阴极数码管。本设计用到的8个数码管均是共阳极的。当发光二极管导通时,它就会发光。每个二极管就是一个笔划,若干个二极管发光时,就构成了一个显示字符。将单片机的I/O口控制相应的芯片与数码管的a-g相连,低电平的位对应的发光二极管亮,这样,由I/O口输出不同的代码,就可以控制数码管显示不同的字符。
本设计的8个数码管均采用动态显示方式,系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
本显示电路的设计采用了一个74HC573,74HC573是我们常用的芯片,作用是用来驱动驱动数码管工作。
电路图如图5所示:
图5 数码管显示电路
3.5 电源电路设计
电源电路的设计,采用了4只1N4007整流二极管,它的作用除了将交流变为脉动直流外,还能将直流变为直流,也就是当电源输入为上正下负是,输出也为上正下负;当输入为上负下正是,输出还是为上正下负,这能有效的防止在操作过程中不小心将电源接反,烧坏电路及CPU;采用了一个LM7805三端集成稳压器,由于单片机的供电电源为5伏,采用LM7805可以保证单片机所需电源的稳定,在使用时,如果没有5V直流电源,就可以使用5V到30V不等的直流电源或5V到24V不等的交流电源,这时输出都可以得到5V稳定的直流电源。电路中几个电容的作用是当输入电源为交流时,可以虑出通过4只二极管后得到的脉动直流电的波形,以保证得到5V稳定的直流电源。本电源电路的设计在使用过程中安全,方便,稳定和可靠。
4 软件设计与程序代码
4.1 软件选择与介绍
4.1.1 软件介绍Proteus7.8的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,您不需要别的,Proteus为您建立了完备的电子设计开发环境!尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果;功能最强的Proteus专业版也非常便宜,人人用得起,对高校还有更多优惠。
Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真
4.1.2 Proteus7.8的特点
① 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。③ 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。④ 支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真51、AVR、PIC等。
4.2 软件仿真电路全图
图7 软件仿真电路全图
此图为时钟显示模式,显示内容为6时16分3秒
图8 软件仿真电路全图
此图为日期和星期显示模式,显示内容为9月1日星期2
5 结论通过做这一次课程设计,感觉自己的收获很多。课程设计是为了让我们对平时学习的理论知识与实际操作相结合,在理论和实践教学的基础上进一步巩固已学基本理论及应用知识并加以综合提高,学会将知识应用于实际,提高分析和解决问题的能力。
本次设计主要涉及了单片机原理及接口技术的相关知识和C语言编程的诸多要领。设计中涉及到的许多问题,更是对以前所学的知识的回顾及在过去的三年中学到知识的总结,这次设计对我将来的工作有着重要的意义。
在此设计中,我积极查阅资料,细心钻研各个细节,完成了数字电子时钟与日历的电路设计,也让我明白了在设计中考虑问题应该全面。在设计中既巩固了我的理论知识,又学会提炼需要的信息的方法。
这次对数字电子时钟与日历的设计,让我了解了设计电路的步骤,也让我了解了有关数字电子时钟与日历的原理与设计理念,要实现电路功能总要先设计,成功之后才实际接线的。现在还只停留在理想阶段,也许在设计实际电路过程中会有困难但是我相信只要努力一定能真正设计出实际产品。
在做课程设计的过程中,我深深地感受到了自己所学到知识的有限,明白了只学好课本上的知识是不够的,要通过图书馆和互联网等各种渠道来扩充自己的知识面。
我并不在乎设计是否会成功,这不重要,最重要的是设计的过程。因为设计的过程在整个过程中所占时间最多,锻炼我们的价值也是最大的。设计开始的时候我真的是毫无头绪,手足无措,甚至有过放弃的想法,但终于坚持了下来。我明白了要设计一个成功的电路,除了有创新能力之外,必须要有扎实的知识基础,要熟练地掌握课本上的知识,只有这样才能对试验中出现的问题进行分析解决。在整个电路的设计过程中,花费时间最多的就是那些属于那想法很好但是要实现非常困难的设计并且超出了能力范围的。开始的时候非常着急,但是当选好了方案后,我的干劲就起来了。
总体来说,通过这次毕业设计学习,让我单片机的许多课外知识都有了大概的了解,也学会了Proteus软件的使用,这对以后找工作也是一个优势。也是对平时理论学习的一个检验。更重要的是培养了我对学习的兴趣,开拓了自己的眼界,为以后的学习打下了良好的基础,我受益匪浅。
由于本人水平有限,文中难免出现错误与不足之处,恳请各位老师批评指正。
致 谢通过本次设计,我在指导老师牛月兰的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,并对当前电子领域的研究状况和发展方向有了一定的了解,单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。在此,我忠心感谢各位老师的指导和支持。在未来的工作和学习中,我将以更好的成绩来回报各位领导、老师和同学。
通过这次的设计使我认识到我对单片机编程方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。