Proteus电子钟仿真实验高清版

合集下载

基于proteus仿真的数字钟

基于proteus仿真的数字钟

摘要数字钟是一个对1Hz频率进行计数的电路.振荡器产生的时钟旌旗灯号经由火频器形成秒脉冲旌旗灯号,秒脉冲旌旗灯号输入计数器进行计数,显示出时光.秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后重零开端计数.一般由振荡器.分频器.计数器.译码器.数码显示器等几部分构成.振荡电路:重要用来产生时光尺度旌旗灯号.石英晶体振荡器可以进步时光旌旗灯号的稳固度.分频器:振荡器产生的尺度旌旗灯号频率很高,要得到“秒”旌旗灯号,需必定级数的分频器进行分频.计数器:有了“秒”旌旗灯号,则可以依据60秒为1分,24小时为1天的进制,分离设定“时”.“分”.“秒”的计数器,分离为60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位旌旗灯号.译码显示:将“时”“分”“秒”显示出来.将计数器输入状况,输入到译码器,产生驱动数码显示器旌旗灯号,呈现出对应的进位数字字型.症结词数字钟振荡计数校订目次2.1计划比较42.2计划选择63单元模块设计73.3.1按键一:光标的移位与闪耀123.3.2按键二:时光的上翻让时光得到修正143.3.3 按键三:肯定154 体系调试155 体系功效和指标参数155.1 体系功效166 设计总结和领会17申谢18参考文献18附录数字电子钟电路总图19数字电子钟是一个用数字电路实现的时,分,秒计时的装配,与机械式时钟比拟具有更高的精确性.本次的数字电子钟的设计道理就是一种典范的数字电路,个中还包含了一些组合逻辑电路和时序电路.本次的数字电子钟的设计重要目标是为了让我们更好的控制数字电子钟的道理,从而控制逻辑电路的一些典范应用,学会本身制造电子钟.经由过程对数字电子钟得设计进一步的懂得各类中小范围集成电路的感化和适用办法.我们此次设计的数字电子钟是以24小时为一个时光周期,显示的满刻度是23时59分59秒,在六位7段共阴极的数码管上精确显示其响应的时,分,秒.并设置了三个时光的按键,分离控制时光的移位闪耀,时光的上翻修正,时光的确认.便利认为控制和设置时光.同时为了包管计时的稳固性和计时的精确性我们采取了用32.768K 的晶体振荡器来产生时钟旌旗灯号,来供给表针时光的基准旌旗灯号.数字电子钟的整体设计道理框图如图一所示:秒,然后主动清零从00时00分00秒开端从新计时,别的还加进了按键部分的操纵,便利人们对时光的控制,设置,调剂.秒旌旗灯号产生器是全部体系的时基旌旗灯号,它直接决议了计时体系的精度,在此次设计中采取的是石英晶体振荡器加分频器来实现.将得到的尺度旌旗灯号1HZ送入秒计数器中,秒计数器采取的是60进制的计数器,每累计都60秒得时刻就会发出一个分脉冲旌旗灯号,该旌旗灯号将作为分计数器的时钟脉冲,分计数器也是采取的60进制的计数器,每累计到60分钟,发出一个时脉冲旌旗灯号,该旌旗灯号将被作为时脉冲时钟脉冲,式计数器采取的24进制的计数器,如许就可以实现一天24小时的累计.2.1 计划比较计划一:555构成的多谢振荡器如图二因为f=1.43(R1+2R2)C1,我们可以经由过程调剂R1,R2,C1的值,转变其输出的频率.计划二:晶体振荡器分频电路石英晶体振荡电路1,采取频率fs=32768HZ的石英晶体图三D1,D2是反向器,D1用于振荡,D2用于缓冲整形.Rf为反馈电电阻(10—100M),反馈电阻的感化为COMS反相器供给偏置,使其工作在放大状况.电容C1,C2与晶体配合构成pi型收集,完成对振荡器频率的控制,并供给须要的180度相移,最后输出fs=32768HZ.图三2,多级分频电路1HZ将32768HZ脉冲旌旗灯号输入到CD4060(如图四:CD4060的引脚图介绍)构成的脉冲振荡的14位二进制计数器,所以从最后一级Q14输出的脉冲旌旗灯号频率为:32768/16384=2HZ.再经由二次分频,得到最后的1HZ 的尺度旌旗灯号脉冲,即秒脉冲.如图五,就是所得到最后的脉冲旌旗灯号.图四:CD4060引脚图图五:1HZ的旌旗灯号产生的波形2.2 计划选择1,采取555多谢振荡器长处:555内部的比较器敏锐度较高,并且采取差分电路情势,它的振荡频率受电源电压和温度变更的影响很小.缺陷:要精确的输出1HZ的脉冲,对电容和电阻的数值精度请求很高,所以输出脉冲既不敷精确也不敷稳固.2,采取晶体振荡分频电路长处:因为晶体的阻抗频率响应可知,它的选频特征异常好,有一个极为稳固的串联谐振频率fs,且等效品德因数Q很高.只有频率为fs的旌旗灯号最轻易经由过程,且其他频率的旌旗灯号均会被晶体所衰减.3,比较的成果因为振荡器是数字钟的焦点,振荡器的稳固度及频率的精度决议了数字钟计时的精确程度.为了达到设计请求,获得更高的计时精度,我们在设计中选用了计划二即用晶体振荡器构成振荡电路.一般来说振荡器的频率越高,计时精度就越高.如图六图六3单元模块设计时光计数电路的设计将分频器产生的尺度基旌旗灯号即秒旌旗灯号经由秒计数器,分计数器,时计数器,分离得到“秒”个位,十位,“分”个位,十位以及“时”个位,十位的计时输出旌旗灯号,然后送至译码显示电路,以便实现用数码管显示时,分,秒的请求.在设计中“秒”和“分”的计数器应当为六十进制的计数器,而“时”计数器应当为二十四进制的计数器.在设计中采取的10进制的计数器74LS160来实现时光的计数单元的计数功效.74LS160的芯片引脚图如图七所示:图七:74LS160引脚图P0,P1,P2,P3---计数器的输入端QO,Q1,Q2,Q3—计数器的输出端CEP,CET---计数器的计数端CP---计数器的触发端TC---计数器的进位端R---计数器的清零端PE----计数器的置数端74LS160计数器是同步计数,异步清零表1是74LS160的逻辑表:计数器部分计数的道理图八:图八:计数器的道理图此图为“秒”计数器部分,用两片74LS160来构成60进制的计数器,因为160本身就是10进制的计数器,故在“秒”个位当主动的加到10时就会主动清零,同时向“秒”十位的计数器的进位,在这片160当“秒”十位和个位分离显示到“5”和“9”时向下一级的“分”计数器进位.同应当“分”的十位和个位分离显示“5”和“9”时向“时”计数器进位.当“时”计数器的十位和个位分离显示“2”和“4”时用反馈清零的办法将其清零.其“分”计数器,“时”计数器的道理图同“秒”计数器的道理图大致雷同.设计中“时”,“分”,“秒”的显示是选择共阴极的七段数码管显示的.共阴极七段数码管译码显示电路是将计数器输出的8421BCD码译成数码显示所须要的高下电平,其引脚如图九.在译码显示电路中采取的是CD4511-7段译码驱动器,其芯片的引脚如图十.译码器的A,B,C,D分离与十进制的计数器的四个输出端相连接a,b,c,d,e,f,g即为驱动七段数码管的旌旗灯号.其依据A,B,C,D所得的计数旌旗灯号,数码管就显示出相对应的字型.图九:共阴极七段数码管的引脚图图十:CD4511的引脚图个中A,B,C,D---BCD码得输入端a,b,c,d,e,f,g—译码的输出端,输出为“1”有用,用来驱动共阴极LED数码管.LT—测试输入端,LT=“0”时,译码输出全为“1”BI—消隐输入端,BI=“0”时,译码输出全为“0”LE—锁定器,LE=“1”时译码器处于锁定(保持)状况,译码器输出保持在LE=0时的数值,LE=0为正常译码其译码的显示电路如图十一所示:图十一:译码器的驱动显示电路三个按键的电路本次设计还用到了按键部分,设计顶用到了三个按键,其功效分离是移位并闪耀,时光的上翻,时光的肯定.设置这三个按键的目标其主如果为了人们能很好的控制和调剂时光.便利人们对时光的调剂.按键部分主如果采取各类逻辑门与计数芯片,译码芯片的有理联合来实现各个按键的功效的.如图十二图十二:三个按键按键一:光标的移位与闪耀认为部分:下之后计数器停滞计数即在这里给“秒”计数器输入的无效的旌旗灯号脉冲,此时数码管保持先前记下的时光不在走动.采取计数器160和译码器138的联合.给计数器160送一个初始数1即此时D3D2D1D0=0001.将计数器的Q2Q1Q0分离与138的输入端CBA相连接.且在138输出端的Y0接一个反相器包管在正常的情形下计数器能正常的计数.将输出端得Y0,Y1,Y2,Y3进行与运算,并将输出的值与产生的旌旗灯号脉冲进行与运算.在未按下按键的时刻则不会影响到脉冲的正常输入,计数器的正常计数.个中74LS138的引脚图如图十三:图十三:74LS138引脚图A2,A1,A0—译码器的3位二进制输入端Y0,Y1,Y2,Y3,Y4,Y5,Y6.,Y7—译码器的8个输出旌旗灯号,并且输出的均为低电平有用.S3,S2,S1—译码器的三个使能端,当S1=1,且S2=0,S3=0时,译码器处于正常的工作状况.闪耀部分:因为要使光标移位,须要断定认为在了那只数码管上,所以想到使数码管闪耀的办法,产生显著的视觉后果从而精确的断定须要转变那只数码管的时光值.斟酌到译码器CD4511的一个使能端BI,当BI 为高电平的时刻会产生消隐的现象.故在使数码管闪耀的这一功效,选择从译码器查找办法.数码管的闪耀与高下脉冲相连.当按键一被按下之后,译码器138的输出端Y1,Y2,Y3的值不竭的变更且有且只有一个为有用的点平0.当它们分离与旌旗灯号脉冲进行或运算后输出的的成果取决与旌旗灯号脉冲,当脉冲为高点平的时刻则数码管就熄灭,当脉冲输出的是低电平的时刻数码管就点亮.如斯的亮灭亮灭…….从而达到视觉上的数码管的闪耀功效.按键一电路如图十四,十五,十六图十四:计数器与138的联合图十五:与运算产生kk控制旌旗灯号脉冲图十六:光标的闪耀按键二:时光的上翻让时光得到修正按键二的功效主如果修正时光.在这里让时光上翻转变即当按键二被按下一次对应闪耀的数码管的值就加一次,一向到所得的值是我们本身想要的值为止.按键二必须在按键一被按下之后才有用.故当按键一被按下后译码器Y1,Y2,Y3有且有一个输出的是有用的低电平,按键二被按下后也会得到一个有用的低电平.将Y1,Y2,Y3分离与按键二得到的低电平进行或运算,并在得到的成果后面加一个反相器,如许就只有当输出的值均为0时才干得到1,如许就可以得到三个旌旗灯号clk1,clk2,clk3.同时要使计数器加数,只要给响应的计数器输入有用的正脉冲就可以了.故在设计中将得到的三个旌旗灯号对应的与计数器的脉冲输入相连接.如图十七:图十七:产生有用的信按键三:肯定按键三的功效就是肯定键即恢复正常有用的脉冲旌旗灯号,让计数器正常的计数,译码器正常的译码,数码管正常的显示时光.使按键部分的那些功效都消掉.当按键三被按下后即立时得到一个低电平的旌旗灯号.将按键三得到的旌旗灯号与计数器的清零端相连接,即可控制其的可否正常工作.从而让输出的kk为高电平,如许在kk与产生的旌旗灯号脉冲进行与运算的时刻就取决于产生的脉冲旌旗灯号.如许产生的脉冲旌旗灯号又恢复成为有用的脉冲旌旗灯号,使计数器正常的计数工作.4 体系调试单个元件的调试数码管共阴,共阳的检测:在proteus的仿真软件中将数码管的的a,b,c,d,e,f,g的随意率性一段或者几段置于高电平,数码管剩下的另一管脚置于低电平,假如数码管发亮且输出的字符是对应输入的字符的,那么此数码管为共阴数码管.假如数码管不亮,没有反响则解释数码管是共阳的数码管.时钟电路的调试将晶体振荡器电路产生的旌旗灯号脉冲经由过程proteus软件进行仿真.1,将仿真的示波器记到晶体振荡电路的波形的输出端,在示波器上显示出波形旌旗灯号的频率为32768HZ.2,再将仿真的示波器接到经由CD4060分频器后的输出端,得到的输出波形旌旗灯号的频率为2HZ.3,最后将仿真里面的示波器接到二分频器后的输出端得到的旌旗灯号波形的频率为1HZ即为全部设计须要的尺度基旌旗灯号.计数电路的调试在秒计数器上参加一个尺度的1HZ脉冲旌旗灯号,在proteus仿真软件长进行计数器的精确计数的调试.这部分重要调试的是“秒”计数器,“分”计数器的60进制得到调试,当“秒”或“分”的计数达到“59”时,“秒”或者“分”可以或许精确的清零并向前一计数器进位.其数码管的显示如图十八:图十八:时光的精确显示5 体系功效和指标参数5.1 体系功效该电路重要实现了时光的精确计数,在设计中将计数器74LS160与译码器CD4511,计数器74LS160和译码器74LS138,分频器与晶体振荡电路有用的分散在了一路,得到比较精确的时光显示.此外,加上三个按键的设置,便利了人们随时对时光的调剂,从而更好的控制时光.1.基旌旗灯号的频率1HZ2.电路供电+5v3设计总结和领会本次课程设计经由为期2周的不懈尽力,今朝根本达到了预期的请求,可以或许精确的以一秒为周期的在数码管上显示时光,并且三个按键也能精确的实现它们各自的功效,让人们能很好的调节时光.在设计中所采取的各个芯片都在运行很好的实现了它们各安闲设计中的功效感化.全部设计的道理简略,靠得住机能高,成本低,功效很轻易实现,并且实现的后果也异常的优越.因为此次设计是在放假时代自力完成的,所以在各模块之间的连接上,以及某些参数的肯定上可能还消失必定的问题.但经由过程此次设计,收成也颇多.总体上来说此次设计电路道理其实不难,但是在设计进程固然许多器械本身明确该那么做,但是在真正的应用中倒是其实是无从下手,碰到的许多小问题比本身想象中的要庞杂得许多,让本身疑惑是不是斟酌错了或者是走错了偏向.在设计中,许多芯片的功效是本身不是很熟习的,不合芯片之间的连接更是让本身觉得生疏.比方,在晶体振荡电路中产生的32768HZ的旌旗灯号与分频器CD4511的链接,分频的道理对当时设计本身来说是很隐约的,但是经由过程讯问同窗和先生后让本身对分频的道理有了懂得,并且还从许多的办法中选择了32768HZ的晶体振荡器和CD4511分频器来产生尺度的基旌旗灯号.在计数器的选择上,固然本身对这部分比较熟习,但是当真正的接触它时,才知道许多的器械不是本身想象中的那样轻易,许多的小错误就让本身觉得寸步难行.经由过程不竭的查阅材料懂得选择了十进制的74LS160实现了精确的计数功效.在按键部分,这是全部设计让我受益最多的部分,按键部分是本身在设计最后才做的部分,刚开端真的是无从下手,感到斟酌的器械许多,并且许多的器械本身又不会.在先生和同窗的帮忙下才让本身有了一个比较清楚的思绪,在设计中将计数器74LS160和译码器74LS138有机的联合来实现了三个按键的根本功效.经由过程此次的设计让本身熟习了许多器械,学会了许多器械,进修了本身已经学过的器械,也进修了本身没有接触过的器械.对计数器74LS160,译码器74LS138,CD4511,分频器CD4060都有了一个很清楚的熟习.同时不单对此次设计中应用到的芯片本身有了懂得,对其他得芯片如:74LS190,74LS161,触发器等也有懂得和熟习,对设计中的芯片的其他功效也有所懂得,如:计数器在必定的时刻也可以做为分频器应用等.此次为期两周的课程设计,让我对各类电路有所懂得,也让我懂得了关于数字时钟的道理和设计理念.经由过程本身的亲手实践,才让我熟习到本身的缺少.所以说,坐而言不如立而行,对于这些电路和连接照样须要本身亲手的现实操纵才会真正的懂得和控制,才会有深入的印象.致谢在这里我起首要感激我们这组的指导先生林竟力先生对我们的设计进程中的仔细指导.在设计和论文写作进程中,得到了先生的指导和点拨,使得我的理论和实践操纵才能都得到了进步.同时也要感激我们这和我一路合作的组员以及在我设计进程中碰到问题就教的同窗,他们的虚心帮忙和提示也是让我的设计能顺遂的完成的重要原因之一.【参考文献】[1] 康华光.[2]康华光.附录数字电子钟电路总图数字电子钟的总电路图。

89C51Proteus仿真数字闹钟报告

89C51Proteus仿真数字闹钟报告

数字电子钟一、LED数字电子钟介绍一、设计LED数字电子钟的目的目前市场上提供的不管是机械钟仍是石英钟在晚上无照明的情形下都是不可见的。

要明白当前的时刻,必需先开灯,故较为不便。

此刻市场上也显现了一些电子钟,它以六只LED 数码管来显示时分秒,与传统的以指针显示秒的方式不同,违抗了人们传统的适应与理念,而且这种电子钟一样是采纳大型显示器件,适合于银行、车站等公开场合,且外观设计欠美观,很少进入百姓家庭,另外,不管是机械钟、石英钟仍是电子钟。

都存在着一起的问题:时刻误差。

针对以上存在的问题,咱们设计了一款采纳LED显示器件显示的电子时钟,有效克服了时钟存在的误差问题。

二、LED数字电子钟的特点和功能(1)、设计特点:本LED电子按时闹钟是一种基于单片机技术的多功能、多用途的电子产品,有电子时钟、按时闹铃功能。

采纳LED显示加倍直观,是一个比较有效的电子产品。

(2)、要紧功能:能够显示24小时制“不时—分分—秒秒”,LED显示;能够方便的设定定不时刻闹铃功能,预设定不时刻到将发出闹铃声;能够修改时钟时刻的时、分、秒。

二、系统整体方案及硬件设计1、整体方案设计本LED电子数字闹钟,是以单片机及外围接口电路作为核心硬件,辅之外围硬件电路,用汇编语言设计的程序来设计并实现的。

依照AT89C51单片机的外围接口特点扩展成相应的硬件电路,然后依照单片机的指令设计出数字钟相应的软件,在利用软件来执行必然的程序实现数字钟的功能。

之因此用单片机来制作电子钟,是因为如此在设计制作简单而且功能多、精准度高,也可方便的扩充其他功能。

这次设计是利用AT89C51单片机为主控芯片,由七段数码管、晶振、电容、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和操纵的数字按时闹钟。

二、硬件设计整体的硬件系统结构框图如以下图所示:图1:硬件电路概念示用意图2:硬件电路框图3、主控芯片AT89C51AT89C51单片机由微处置器,存储器,I/O口和特殊功能寄放器SFR等部份组成。

基于Proteus的单片机控制电子时钟电路设计与仿真

基于Proteus的单片机控制电子时钟电路设计与仿真
从节省单片机芯片I/O口和降低能耗的角度出发,本数字电子钟数码管显示选择采用方案二。
3.3
1.电源电路
本数字电子钟设计所需电源电压为直流、电压值大小为5V的电压源。从硬件实物设计简易程度与经费方面考虑,用两节电压值为2.5V干电池与电路电压源引脚相连接即可达到硬件设计要求。即本数字电子钟设计用两节电压值大小2.55V干电池做硬件电路电压源。
由于只需要实现显示时间简单的功能,两个单片机就能很好的实现该功能。我们优先考虑单片机的成本所以选择方案一。
3.2
3
数码管是一种把多个LED显示段集成在一起的显示设备.有两种类型,一种是共阳型,一种是共阴型.共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商.阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
方案二:AT89S52是一个低消耗,高性能CMOS8为单片机,片内含4kBytes ISP的可反复撰写1000次的Flash只读程序存储器。主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。

基于proteus仿真1602液晶电子时钟(附1602字符液晶详细资料)

基于proteus仿真1602液晶电子时钟(附1602字符液晶详细资料)

基于proteus仿真1602液晶电⼦时钟(附1602字符液晶详细资料)基于proteus仿真1602液晶电⼦时钟(附1602字符液晶详细资料)#include#define uint unsigned int#define uchar unsigned charuchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a};sbit rs=P2^0;sbit rw=P2^1;sbit e=P2^2;uchar hshi,hge, mshi,mge,shi, ge,num,num1,num2,aa;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void lcd_com(uchar com) {rs=0;rw=0;P1=com;delay(1);e=1;e=0;}void lcd_dat(uchar dat) {rs=1;rw=0;P1=dat;delay(1);e=1;e=0;}void init(){lcd_com(0x38);delay(1);lcd_com(0x0c);delay(1);lcd_com(0x01);delay(1);TMOD=0X01;TH1=(65536-50000)/256; TL1=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void display(uchar hshi,uchar hge,uchar mshi,uchar mge,uchar shi,uchar ge) {lcd_com(0x80);lcd_dat(table[hshi]);lcd_com(0x81);lcd_dat(table[hge]);lcd_com(0x82);lcd_dat(table[10]);lcd_com(0x83);lcd_dat(table[mshi]);lcd_com(0x84);lcd_dat(table[mge]); lcd_com(0x85);lcd_dat(table[10]); lcd_com(0x86);lcd_dat(table[shi]); lcd_com(0x87);lcd_dat(table[ge]); }void main(){init();while(1){if(aa==20){aa=0;num++;num2=3;num1=34;if(num==60){num=0;num1++;if(num1==60){num1=0;num2++;if(num==24) {num2=0;}}}hshi=num2/10; hge=num2%10; mshi=num1/10;mge=num1%10;shi=num/10;ge=num%10;}display(hshi,hge,mshi,mge,shi,ge);}}void timer0() interrupt 1{TH0=(65536-50000)/256;TH0=(65536-50000)/256;aa++;}所谓1602是指显⽰的内容为16*2,即可以显⽰两⾏,每⾏16个字符。

51单片机数字时钟-proteus仿真原理图及keil C51编译的C51程序

51单片机数字时钟-proteus仿真原理图及keil C51编译的C51程序

51单片机数字时钟-proteus仿真原理图及keil C51编译的C51程序该实验采用proteus 7.4 sp3进行的仿真,仿真原理图如下图所示,该实验采用定时器0的工作方式1定时500ms,等待20次定时1s进行时钟计数。

通过定时器1的工作方式1定时500ms,用来调整数码管闪烁的时间。

K1是用来选中时分秒,按一下选中时,再按一下选中分,再按一下选中秒,再按一下退出选中状态。

K2按一下数加一,K3按一下数减一。

在调整时间时,时钟停走。

/******************************************************************* **** 程序名; 时钟实验* 功能: 数码管通过动态扫描显示时间,时间可设定,调整时间时时钟不走.* 编程者: ZPZ* 编程时间:2009/8/9******************************************************************** **/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit _led=P2^7;sbit key1=P2^0;sbit key2=P2^1;sbit key3=P2^2;uchar num=0,temp=0,count=0; uchar aa;uchar hour,min,sec;uchar codetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(uint z);void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa);void read_key();void led();void time_change();/****************** 主函数 *******************/void main(){P2=0xff;hour=12;min=0;sec=0;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;aa=0xff;while(1){time_change();display(table[hour/10],table[hour%10],table[min/10], table[min%10],table[sec/10],table[sec%10],0xff);}}。

基于Proteus的数字电子钟的设计与仿真

基于Proteus的数字电子钟的设计与仿真

基于Proteus的数字电子钟的设计与仿真一、设计目的与要求 (1)二、设计内容与方案制定 (1)三、芯片简介 (1)1、AT89C52 (1)2、AT24C02 (2)四、设计步骤 (3)1、硬件电路设计 (3)1.1.硬件电路组成框图 (3)1.2.各单元电路及工作原理 (3)1.3.绘制原理图 (5)1.4.元件清单列表 (6)2、程序设计 (7)2.1程序流程 (7)2.2主程序 (9)2.2.源程序 (10)五、调试与仿真 (22)六、心得体会 (23)七、参考文献 (23)一、设计目的与要求设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。

设计要求:设计一个时、分可调的数字电子钟、断电后将数据保存,开启后时间将从断电后时间继续行走。

二、设计内容与方案制定具有校时功能,按键控制电路其中时键、分键六个键分别控制时、分时间的调整。

按下小时数实现对小时数加减,按下分钟数实现对分钟数进行加减,并设置有复位键,启始键。

以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。

通过AT24C02分别写入时、分、秒数据在断电后实现保存,在下次通电后将数据读出保持为断电前数据。

三、芯片简介1、AT89C52AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系2、AT24C02AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传件为接收器。

数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。

主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,由于A0、A1和A2可以组成000~111八种情况,即通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上,通过进行不同的配置进行选择器件。

带温度显示的电子钟(带闹钟整点报时功能,proteus仿真,pcb图)

带温度显示的电子钟(带闹钟整点报时功能,proteus仿真,pcb图)
sbit DS1302_IO = P1^6; //实时时钟数据线引脚
sbit DS1302_RST = P1^5; //实时时钟复位线引脚
sbit wireless_1 = P3^0;
sbit wireless_2 = P3^1;
}
unsigned char Read1302(unsigned char ucAddr) //读取DS1302某地址的数据
{
unsigned char ucData;
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(ucAddr|0x01); // 地址,命令
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标
#define DS1302_SECOND 0x80 //时钟芯片的寄存器位置,存放时间
#define DS1302_MINUTE 0x82
#define DS1302_HOUR 0x84
#define DS1302_WEEK 0x8A
#define DS1302_DAY 0x86
typedef struct __SYSTEMTIME__
{
unsigned char Second;
unsigned char Minute;

proteus仿真大作业--数字时钟

proteus仿真大作业--数字时钟

实验报告Prote‎us仿真大作业课题:数字时钟实‎验报告系部:电子工程系‎班级:xxxx姓名:xxx指导老师:xxx2011.6.10前言数字电子钟‎具有走时准‎确,一钟多用等‎特点,在生活中已‎经得到广泛‎的应用。

另外数字钟‎还具备秒表‎和闹钟的功‎能,且闹钟铃声‎可自选,使一款电子‎钟具备了多‎媒体的色彩‎。

单片机AT‎89C51‎在Prot‎e u s软件‎中实现数字‎时钟的定时‎、时间调整、闹正设置等‎功能。

具有体积小‎、功能强可靠‎性高、价格低廉等‎一系列优点‎,不仅已成为‎工业测控领‎域普遍采用‎的智能化控‎制工具,而且已渗入‎到人们工作‎和和生活的‎各个角落,有力地推动‎了各行业的‎技术改造和‎产品的更新‎换代,应用前景广‎阔。

时钟电路在‎计算机系统‎中起着非常‎重要的作用‎,是保证系统‎正常工作的‎基础。

在一个单片‎机应用系统‎中,时钟有两方‎面的含义:一是指为保‎障系统正常‎工作的基准‎振荡定时信‎号,主要由晶振‎和外围电路‎组成,晶振频率的‎大小决定了‎单片机系统‎工作的快慢‎;二是指系统‎的标准定时‎时钟,即定时时间‎。

Protu‎e s软件不‎仅具有其它‎E DA工具‎软件的仿真‎功能,还能仿真单‎片机及外围‎器件。

它是目前最‎好的仿真单‎片机及外围‎器件的工具‎。

已受到单片‎机爱好者、从事单片机‎教学的教师‎、致力于单片‎机开发应用‎的科技工作‎者的青睐。

Prote‎u s 是世界‎上著名的E‎D A工具(仿真软件),从原理图布‎图、代码调试到‎单片机与外‎围电路协同‎仿真,一键切换到‎P CB设计‎,真正实现了‎从概念到产‎品的完整设‎计。

是目前世界‎上唯一将电‎路仿真软件‎、PCB设计‎软件和虚拟‎模型仿真软‎件三合一的‎设计平台,其处理器模‎型支持80‎51、HC11、PIC10‎/12/16/18/24/30/DsPIC‎33、A VR、ARM、8086和‎M SP43‎0等,它也支持I‎A R、Keil和‎M PLAB‎等多种编译‎器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Proteus 仿真大赛电子时钟仿真第一章电子时钟总体设计电子时钟简介电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。

随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。

很多单片机产品具有实时时钟的功能,例如智能化仪器仪表、工业过程系统及家用电器等。

这里要求实现一个具有实时时钟显示和闹钟控制功能的数字钟。

通过数字钟的设计与制作,将前面所学的单片机内部定时资源、I/O端口、键盘和显示接口等知识融会贯通,锻炼独立设计、制作和调试应用系统的能力,深入领会单片机应用系统的硬件设计、模块化程序设计及软硬件调试方法等,并掌握单片机应用系统的开发过程。

电子钟设计要求设计并制作具有如下功能的数字钟:(1)自动计时,由6位LED先四起显示时、分、秒。

(2)具备校准功能,可以设置当前时间。

(3)具备定时启动功能,可以设置闹钟时间,启闹10s后自动关闭闹铃。

电子钟计时方案(1)采用实时时钟芯片。

针对应用系统对实时功能的普遍需求,各大芯片生产厂家陆续推出了一系列实时时钟集成电路,如DS1287、DS12887、DS1302、PCF8563、S35190等。

这些实时时钟芯片具备年、月、日、时、分、秒、计时功能和多点定时功能,计时数据每秒自动更新一次,不需程序干预。

单片机可通过中断或查询方式读取计时数据。

实时时钟芯片的计时功能无须占用CPU时间,功能完善,精度高,软件程序设计相对简单,在实时工业测控系统中多采用这一类专用芯片来实现。

(2)软件控制。

利用AT89S51内部定时/计数器进行中断定时,配合软件延时、分、秒的计时。

该方案节省硬件成本,且能够使读者对前面所学知识进行综合运用,因此,本系统设计采用这一方案。

电子钟显示方案(1)利用串行口扩展LED,实现LED静态显示。

该方案占用单片机资源少,且静态显示亮度高,但硬件开销大,电路复杂,信息刷新速度慢,比适用于单片机并行口资源较少的场合。

(2)利用单片机并行I/O端口,实现LED动态显示。

该方案直接使用单片机并行口作为显示接口,无须外扩接口芯片,但占用资源较多,且动态扫描显示方式需占用CPU 时间。

在非实时测控或单片机具有足够并行口资源的情况下可以采用。

这里采用动态显示方案。

第二章 硬件描述及系统设计构思电子时钟功能模块系统硬件描述1. 控制器用AT89S51 , 12M 晶振 2. 数码管动态扫描驱动——P2口 3. 数码管段码驱动——P1口 4. 闹铃驱动——5. 调整键K1——(外部中断0, 正常、调时、调分、调秒) 6. 定时/正常切换键K2—— 7. 时间参数低位加1键K3—— 8. 时间参数高位加1键K4——系统设计构思1.主流程是取时间参数,显示时间参数。

主程序 函数LED 显示 函数 键盘 检测 函数查值 函数加1 修改 功能 函数闹钟 设置 函数时钟 设置 函数 定时 器中 断函 数 闹钟 判断 启动 函数2.利用T0中断来完成计时、比较定时时间、驱动闹铃。

3.利用T1中断完成动态显示中,调整时间闪烁效果的定时。

4.利用外部中断0来完成调整选择功能。

5.利用外部中断1完成定时显示,当前时间显示的切换6.K3、K4键完成时间参数的循环加1操作电子时钟电路原理图如图为电子时钟电路原理图第三章电子钟硬件介绍单片机的介绍单片机也被称为微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。

它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机芯片单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!第四章控制系统的软件设计程序设计本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、闹钟设置程序四大模块。

在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。

/***************数字钟程序***************/#include <>#define uchar unsigned charsbit buzzer=P2^7; //定义蜂鸣器控制端口/**************函数声明*************/void display(uchar *p);uchar keyscan(); //扫描键盘有无键按下uchar search(); //按键识别void alarm(); //闹钟判断启动void ftion0(); //时钟修改void ftion1(); //闹钟修改void cum(); //加1修改/***************全局变量定义****************/uchar clockbuf[3]={0,0,0};//存放时钟时分秒的十进制数uchar bellbuf[3]={0,0,0};//存放闹钟时分秒的十进制数uchar msec1; //10ms中断次数uchar msec2; //1s循环次数uchar timdata,rtimdata; //时钟和闹钟修改位置标志uchar count; //闹钟启动后10s计时单元uchar *dis_p; //显示缓冲区指针bit armbit;//闹钟标志,为0闹钟未设定,为1已设定bit rtimbit;//闹钟是否启动标志,为1已启动bit rhourbit;//闹钟小时修改标志,为1正在修改闹钟小时bit rminbit;//闹钟分修改标志,为1正在修改闹钟分bit hourbit;//时钟小时修改标志,为1正在修改时钟小时bit minbit;//时钟分修改标志,为1正在修改时钟分bit secbit;//时钟秒修改标志,为1正在修改时钟秒/****************主函数****************/void main(){uchar a;armbit=0; //清零闹钟标志位msec1=0; //设置10ms中断次数初值msec2=0; //设置1s中断次数初值timdata=0; //时钟内容修改位置记忆单元清零rtimdata=0;//闹钟内容修改位置记忆单元清零count=0; //闹钟启动后保持10s计时单元清零TMOD=0x02; //定时器T0为工作方式2TL0=0x06; //定时初始值为250usTH0=0x06;EA=1; //中断总允许位开启ET0=1; //定时器1开中断TR0=1; //启动定时器T0dis_p=clockbuf;//将时钟值所在地址送入显示指针P1=0x00;buzzer=0;while(1){a=keyscan(); //调用键盘扫描子程序if(a==0x07){display(dis_p);//无键输入调用显示程序if(armbit==1)alarm();//判断闹钟设定否,若设定则调用闹钟启动函数}else{display(dis_p);//调用显示子函数作为延时去抖动a=keyscan();if(a!=0x07) //没有抖动,表示有键按下{ a=search(); //调用查键值子函数switch(a){case 0x00:ftion0();break;//是时钟参数修改功能键,调用时钟设置子函数case 0x01:ftion1();break;//是闹钟参数修改功能键,调用闹钟设置子函数case 0x02:cum();break;//是加1功能键,调用加1修改功能子函数default:break;}}}}}/***************6位LED显示函数***************/void display(uchar *p){ uchar buffer[6]={0,0,0,0,0,0};uchar k,i,j,m,temp;uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};buffer[0]=p[0]/10;buffer[1]=p[0]%10;buffer[2]=p[1]/10;buffer[3]=p[1]%10;buffer[4]=p[2]/10;buffer[5]=p[2]%10;for(k=0;k<2;k++){temp=0x01;for(i=0;i<6;i++){j=buffer[i];P0=~temp;P1=led[j]; //P1送断码temp<<=1;for(m=0;m<100;m++);//每一位显示延时P1=0x00; //关显示}}}/**************键盘扫描函数************/uchar keyscan(){uchar c;P0=0xf0;c=P2;c=c&0x07;//按键行输入为,屏蔽无关位return(c);}/**************查键值函数*************/uchar search(){uchar a,b,c,d,e;//P2=0xfe;c=0xfe; //首列扫描字送变量ca=0; //首列号送awhile(1){P0=c; //列扫描字送P0口d=P2; //读入P2口的行状态if((d&0x01)==0){b=0;break;}//第0行有键按下,第0行行首号送belse if((d&0x02)==0){b=4;break;}//第1行有键按下,第1行行首号送b else if((d&0x04)==0){b=8;break;}//第2行有键按下,第2行行首号送b a++; //扫描列号加1c<<=1; //修改列扫描字,扫描下一列}e=a+b; //将行首号与列号相加,求键号do{display(dis_p);}while((d=keyscan())!=0x07);//等待释放按键return(e);}/***********闹钟判断启动函数*************/void alarm(){if((clockbuf[0]==bellbuf[0])&&(clockbuf[1]==bellbuf[1])){buzzer=1;rtimbit=1;}//设置闹钟计时标志,时钟将进行10s计时标志if(count==10) //判断闹钟保持10s时间到否{count=0; //清除闹钟保持10s计时buzzer=0; //清除闹钟armbit=0; //清闹钟标志,否则闹钟设置将继续有效rtimbit=0;}}/*************时钟设置函数*************/void ftion0(){if(rhourbit==1||rtimbit==1||rtimdata==1){secbit=0;minbit=0;hourbit=0;timdata=0;}else{TR0=0; //关定时器dis_p=clockbuf;//将时钟缓冲区首地址送显示指针timdata++; //将时钟修改记录值加1switch(timdata){case 0x01:secbit=1;break;//记录值为1,则将时钟秒修改标志置1case 0x02:secbit=0;minbit=1;break;//记录值为2,则将时钟分修改标志置1case 0x03:minbit=0;hourbit=1;break;//记录值3,则将时钟时修改标志置1case 0x04:timdata=0;hourbit=0;TR0=1;break;//按4次则清时钟单元修改位置//记录,定时器重新开启default:break;}}}/***************闹钟设置函数**************/void ftion1(){if(secbit==1||minbit==1||hourbit==1||timdata==1){rhourbit=0;rtimbit=0;rtimdata=0;}else{dis_p=bellbuf; //设置闹钟显示标志rtimdata++; //将闹钟修改记录值加1switch(rtimdata){case 0x01:rminbit=1;break;//记录值为1,将闹钟分修改标志置1case 0x02:rminbit=0;rhourbit=1;break;//记录值为2,将时钟分修改标志置1 case 0x03:rtimdata=0;rhourbit=0;//按3次则清闹钟单元修改位置记录armbit=1; //设置闹钟已设置标志位dis_p=clockbuf;//恢复时钟显示标志break;default:break;}}}/*************加1修改功能函数**************/void cum(){ if(secbit==1){ //时钟秒修改标志为1,秒单元内容加1if(clockbuf[2]==59) clockbuf[2]=0;else clockbuf[2]++;}else if(minbit==1){ //时钟分修改标志为1,分单元内容加1if(clockbuf[1]==59) clockbuf[1]=0;else clockbuf[1]++;}else if(hourbit==1){ //时钟小时修改标志为1,小时单元内容加1if(clockbuf[0]==23) clockbuf[0]=0;else clockbuf[0]++;}else if(rminbit==1){ //闹钟分修改标志为1,分单元内容加1if(bellbuf[1]==59) bellbuf[1]=0;else bellbuf[1]++;}else if(rhourbit==1){ //闹钟小时修改标志为1,小时单元内容加1if(bellbuf[0]==23) bellbuf[0]=0;else bellbuf[0]++;}}/************定时器中断函数*************/void clock() interrupt 1{EA=0; //关中断if(msec1!=40) msec1++;else{ msec1=0; //到10ms否,不到则msec1加1if(msec2!=10)msec2++;//到1s否,不到则msec2加1else{if(rtimbit==1)count++;msec2=0;if(clockbuf[2]!=59)clockbuf[2]++;//到1min否,不到则clockbuf[2]加1else{clockbuf[2]=0;if(clockbuf[1]!=59)clockbuf[1]++;//到1h否,不到则clockbuf[1]加1else{clockbuf[1]=0;if(clockbuf[0]!=23)clockbuf[0]++; //到24h否,不到则clockbuf[0]加1else clockbuf[0]=0;}}}}EA=1; //开中断}第五章电子时钟仿真结果电子钟正常显示仿真:启动闹钟:设置定时数值:(如图设置为10分钟)。

相关文档
最新文档