基于Proteus的电子时钟设计与仿真.docx
《基于Proteus的电子时钟设计与仿真.docx》由会员分享,可在线阅读,更多相关《基于Proteus的电子时钟设计与仿真.docx(14页珍藏版)》请在冰点文库上搜索。
基于Proteus的电子时钟设计与仿真
宁德师范学院
毕业论文(设计)
专 业电子信息工程技术
指导教师张芳
学 生李骁
学 号2009054111
题目基于Proteus的电子时钟设计与仿真
2011年6月5日
基于Proteus的电子时钟设计与仿真
摘要:
对于电子时钟的功能和使用人们已经十分了解,然而却很少有人真正了解它的内部结构和工作原理。
本文以AT89C51为核心控制器,利用Proteus进行单片机系统的仿真,通过该软件设计出了一款由纯数字电路构成的电子时钟,并在计算机上进行仿真。
整个时钟的功能主要包括四个方面:
时间显示、时间调整、时间校对和定时闹钟。
最后的仿真结果可应用于实际电路中,不仅降低了电子时钟的设计成本,又缩短了设计周期,提高了工作效率。
关键词:
单片机;定时器;闹钟;LED
1绪论
1.1背景
随着社会的发展和科技的进步,人们对时钟的要求也越来越高,传统的时钟已经不能满足人们的需求。
高精度、低功耗、小体积、多功能,成为了现代时钟发展的新趋势,它已不仅仅是用来显示时间的工具,更多时候还需要它实现其它的功能,从而促使现代时钟朝着数字化、多功能化的方向发展。
目前市面上也出现了各种各样的多功能电子时钟,如:
数字闹钟、电子闹钟等等。
对于电子时钟的功能和使用人们已经十分了解,然而却很少有人真正了解它的内部结构和工作原理。
1.2研究目的与意义
为了更好地了解电子时钟的内部结构和工作原理,本文采用单片机作为电子时钟的核心控制器。
与模拟电路、数字电路相比,单片机的内容更为抽象,开发和调试更为复杂,在具体的设计过程中,如果因为方案有误而进行相应的开发,将浪费更多的时间和经费。
因此,本论文主要利用Proteus进行单片机系统的仿真,通过该软件设计出了一款由纯数字电路构成的电子时钟,并在计算机上进行仿真。
高FH钟已经不能满足人们的需求了最后,可将论文的仿真结果应用于实际电路中,不仅降低了电子时钟的设计成本,又缩短了设计周期,提高了工作效率。
因此,利用Proteus软件对电子时钟进行设计和仿真具有十分重要的意义。
1.3技术要求
本文所设计的电子时钟需要解决的问题主要有两个:
硬件设计和软件设计。
硬件设计中又分为四个模块:
显示模块、键盘模块、发声模块和计时模块。
硬件设计时应尽量做到低功耗、低成本和易于实现。
软件设计部分应做到闹钟设置,计时准确,校时以及定时报警等功能。
2方案设计及单片机选型
2.1方案设计
本设计的总体框图如图1所示,电子时钟采用AT89C51作为控制核心,通过程序的编写来实现对整个系统的控制。
利用AT89C51单片机来实现对时间的计时,计时结果由8位的数码管显示出来。
通过对键盘的识别,然后按照程序中的设定对系统进行相应的操作,如时间设定、闹钟设定等功能。
在闹钟时间到了以后,通过蜂鸣器来报警通知使用者时间到了。
另外在AT89C51单片机以外,还有晶振等单片机最小系统[1]。
图1电子时钟总体设计框图
2.2单片机选型
本文选用美国ATMEL公司的AT89C51单片机。
与传统的MCS-51系列单片机相比,AT89系列单片机对一般用户而言,有以下优点:
①内部含有Flash存储器,在系统开发过程中很容易修改程序,大大缩短了系统的开发时间;②与MCS-51系列单片机的引脚和指令集都是相互兼容的,可进行代换;③AT89系列单片机的功能进一步增强[2]。
目前,AT89C单片机已为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,本文采用的AT89C51单片机是一种带有4K字节的只读存储器,高性能的CMOS八位微处理器。
由于AT89C51将闪烁存储器和八位的多功能CPU组合在了一个芯片上,使得AT89C51成为一种高效的微控制器,具有1000次以上的擦写循环,数据可以保存十年以上,主要有以下部件:
8031CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、并行I/O接口、定时器和串行I/O接口。
AT89C51芯片引脚如图2所示。
图2AT89C51的引脚示意图
3硬件设计
3.1键盘电路
本文设计的电子闹钟的键盘输入电路主要有四个按键,分别接到单片机的P1.0到P1.3四个I/0口,通过内部程序对这四个端口的检测来识别外部键盘的输入信号,在正确的识别出键盘后,将按照程序中的设计做出相应的操作。
当按键未被按下的时候,四个I/O口都是高电平,当被按下的时候就是低电平了,因此当有端口跳到低电平的时候就表示有按键按下了,程序就会进行相应的处理。
图3键盘电路
3.2七段码显示驱动
本文设计的电子时钟系统采用了8位的7段数码管,因此其公共极的电流就会相对较大,为了避免系统使用过多的元器件来实现对数码管的控制,本文采用一枚MAX7221来驱动这个8位的7段数码管,并用P3口来实现位码的驱动,用P0口来控制MAX7221。
图48位7段码驱动
3.3蜂鸣器报警电路
本文所设计的闹钟时间报警系统通过一个三极管放大电路来驱动蜂鸣器来实现的,此外本文还通过软件实现了利用P2.1端口的方波输出来实现蜂鸣器的均匀简短的滴滴声,避免了使用硬件振荡器的电路,从而精简系统的硬件电路和系统的总体成本。
图5蜂鸣器报警电路
4软件设计
4.1主程序部分的设计
在本文设计的电子时钟的软件系统中,主程序采用了模块的设计,避免了程序上的冗余和代码的重复,不仅提高了软件的运行效率,也提高了程序运行的稳定性,同时也使本文设计的代码具有较高的可读性。
在程序执行的时候,主程序的主要工作就是针对具体的情况调用相应的子函数,在子函数完成相应的操作以后再回到主程序的流程中来,主程序对键盘等进行扫描,以便做出相应的处理[3]。
图6主程序流程图.
4.2定时器中断设置
在本文的定时器设置中采用的是定时器T0的中断ET0,利用ET0的中断来进行计时时间的自动增加和循环,从而实现系统的计时功能。
采用计时器来进行系统的时间计时,可以获得很高的时间准确性,大大减小系统电子元器件以及程序执行所带来的计时误差。
AT89C51单片机自带有两个通用的定时/计数器[4]。
这两个定时/计数器都可以通过参数的设置来定义为定时器或者是计数器。
另外系统还增加了定时器T0/T1在溢出的时候能够自动翻转的功能选项。
被用作定时器功能时,系统每运行一个机器周期,计时器的寄存器就会自动加1;而被当成计数器来使用时,寄存器在对应的外部输入管脚上检测到有高电平向低电平跳变的时候,就会在计数器的寄存器上自动加一,直到计数值达到了预先设置的数值。
使用计数器功能的时候,系统每运行一个机器周期的时候就会对相应的输入管脚进行检测,因此计数器功能对外部输入信号的频率是有要求的,至少不能超过系统机器周期的频率。
图7定时器工作原理
本文采用中断方式1来对定时器的中断进行设置,系统的计数初值可以通过公式来计算得到:
X=216-(t/Tcy)。
在这个公式中X为目标计数初值,t为所需要的定时时间,Tcy是系统的机器周期。
定时中断程序的流程图如下图所示:
图8定时器中断程序流程图
4.3闹钟功能函数
本文设计的电子闹钟可以设置两个闹钟时间,在程序中主要通过不断对比设置的闹钟时间和系统的当前时间,如果时间相同,那么程序就调动相应的蜂鸣器报警模块,从而实现通过声音来告知使用者所定闹铃时间已经到了。
当然根据需要我们也可以设置多个闹铃,本文认为一般情况下两个闹铃是够用了,如果有特殊需用要加闹铃的个数也是很容易的。
因为本文采用的是模块化编程,只要调用相应的函数就可以了。
闹铃函数的程序流程图如下图所示。
图9闹铃功能函数流程图
4.4计时功能函数
计时功能是本文设计的电子时钟的最基本的功能,主要是通过AT89C51的定时中断来实现准确计时的。
当定时器每产生一次中断的时候就将中断的标志位FLAG位加1,通过计算可知,当FLAG加到20次时,就表示系统计时刚好到达一秒,此时我们将FLAG清零,并对时、分、秒相对应的寄存器进行相应的操作,对系统的时间进行更新,同时判断闹铃是否到达。
系统的计时功能函数的流程图如下图所示。
图10计时功能函数流程图
4.5键盘扫描功能函数
本文设计的电子时钟系统的按键部分主要功能有:
时间设置、闹铃设置等,而时间又包括了时、分、秒三个部分,因此通过四个按键是否按下来判断功能的话无法实现全部功能[5]。
本文在不增加按键的情况下,同过判断使用者对键盘的具体操作来获取操作者想要进行的操作意图。
键盘功能扫描函数的流程图如下图所示。
图11键盘功能扫描函数
5基于Proteus的电子时钟仿真
5.1Proteus软件简介
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有和其它EDA工具一样的原理布图、PCB自动或人工布线及SPICE电路仿真的功能,还能仿真单片机及外围器件。
目前已在全球广泛使用,受到了单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus仿真软件从原理布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
:
操旧业正实现了从概念到产品的完整设计。
该软件主要有以下特点:
(1)互动的电路仿真。
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
(2)仿真主流单片机系统。
可仿真51系列、AVR系列、PIC系列、Z80系列、HC11系列以及各种外围芯片。
(3)仿真处理器及其外围电路。
可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
再配合系统配置的虚拟逻辑分析仪、示波器、信号发生器等,Proteus建立了完备的电子设计开发环境。
总之,该软件是一款集单片机和SPICE分析于一体的仿真软件,其功能极其强大。
5.2Proteus对电子时钟的仿真
在Proteus软件上完成电路图的绘制,以及在KEIL编程软件上完成软件调试并输出得到HEX的可执行文件以后,我们就可以开始电子时钟系统在Proteus上的仿真了。
在电路图中,我们设计了四个按键,即图中的S1、S2、S3、S4,这个四个按键的组合就实现了系统的全部操作功能。
首先当S1按下第一次以后,停止计时并且进入到了1号闹钟的秒设置,而第二和第三次按下以后就进入到了1号闹钟的分和时设置;当第4,5,6次按下S1之后就进入到了2号闹钟的秒、分、时设置,当第7,8,9次按下S1的时候则开始对系统时间的秒,分和时进行分别设置。
在按下第10次以后系统的显示就回复到了时间显示上来了。
如果闹铃的时间与系统的时间一致的时候蜂鸣器就会发出声音报警,如果没有操作,那么报警的时间在程序中的设置是1分钟。
如果在蜂鸣器报警阶段,按下S4则停止报警。
另外按下S4,闹铃的状态就会在开启和关闭之间进行切换。
下图为在Proteus软件仿真状态图。
图12基于Proteus软件的电路仿真
6结论
本文设计的电子时钟系统硬件结构简单,实现容易,软件采用模块化的编写方式,运行稳定,最终在Proteus软件上仿真效果很好,达到了设计的要求。
但是本系统相对来说还有一定的缺点,如没有能够实现音乐闹铃等功能,另外采用7段数码管来显示时间,由于数量上不宜太多,所以也没有实现对日期的显示。
参考文献:
[1]张景元,陈平.一种基于单片机的多功能数字钟[J].微计算机信息,2005,21(9):
136-137.
[2]彭小军.用单片机实现电子时钟[J].新余高专学报,2004,9
(2):
54-57.
[3]徐宏亮,艾学忠等.实现多功能电子时钟设计[J].吉林化工学院学报,2001,5
(1):
26-29.
[4]黄惠媛,李润国.单片机原理与接口技术[M].北京:
海洋出版社,2006:
3-14.
[5]贡雪梅.日历电子钟的设计[J].西安航空技术高等专科学校学报,2004,9
(1):
54-56.