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等部份组成。

proteu数字钟设计

proteu数字钟设计

实验五数字钟设计一、实验目的1.学习AT89S52内部定时/计数器的原理及应用2.了解使用单片机处理复杂逻辑的方法3.掌握多位数码动态显示的方法二、实验内容和要求用AT89S52单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1。

开机时显示00-00-00的时间,开始计时;P1.0控制“秒”的调整,每按一次加1秒;P1.1控制“分”的调整,每按一次加1分;P1.2控制“时”的调整,每按一次加1个小时。

计时满23-59-59时,返回00-00-00重新计时。

P1.3用作复位键,在计时过程中如果按下复位键,则返回00-00-00重新计时。

三、实验主要仪器设备和材料安装Proteus仿真软件的PC机四、实验方法、步骤及结果测试1.在Proteus中搭建实验电路,如下图1-1、1-2所示:图1-1 实验电路图图1-2 控制模块2.AT89S52内部定时/计数器0的使用方法AT89S52单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。

只要通过设置特殊功能寄存器TMOD,即可完成。

定时/计数器何时工作也是通过TCON特殊功能寄存器来设置的。

在此设计中,选择16位定时工作方式。

对于T0来说,系统时钟为12MHz,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,必须通过软件来处理这个问题,假设取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。

对于这20次计数,就可以采用软件的方法来统计了。

设定TMOD=00000001B,即TMOD=01H,设置定时/计数器0工作在方式1下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出TH0=(216-50000)/256TL0=(216-50000)MOD 256这样,当定时/计数器0计满50ms时,产生一个中断,我们可以在中断服务程序中,对中断次数加以统计,以实现数字钟的逻辑功能。

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

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

基于PROTEUS仿真的数字电子钟设计单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已经渗透到各种嵌入式系统中。

随着计算机技术的普及,采用Proteus软件与Keil软件整合构建单片机虚拟实验平台。

可以使教师在讲述理论的同时,利用Proteus软件进行仿真、演示,使学生消除“抽象感”增加学习的兴趣。

使课堂教学更生动、直观使单片机课程中一些基本理论和基本概念更加容易理解。

标签:虚拟模拟仿真0 引言Proteus软件是英国Labcenter electronice公司开发的电路分析与实物仿真软件。

它不仅具有其他EDA工具软件的仿真功能。

还能仿真单片机及外围器件。

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

该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:8051系列、A VR系列、ARM系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

总之,该软件是一款集单片机和SPICE 分析于一身的仿真软件,功能极其强大。

1 数字钟电路设计数字钟的原理框图如图1所示。

它由以下几个部件组成:单片机AT89S52、电源、时分显示部件。

时分显示采用动态扫描,可以降低对单片机I/O口数的要求,同时也降低系统的功耗。

时分显示模块以及显示驱动都通过AT89S52的I/O口控制。

电源部分:两种方法:一种是由220V的市电通过变压、整流稳压(主要用7805稳压块)来得到+5V电压,维持系统的正常工作。

基于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个字符。

数字钟设计 proteus仿真

数字钟设计 proteus仿真

数字钟设计Digital clock design1.实验目的1.掌握数字钟的设计方法。

2.熟悉集成电路的使用方法。

2.实验内容及要求时钟显示功能,能够以十进制显示“时”、“分”、“秒”。

其中时为24进制,分秒为60进。

3.设计思路、芯片选择及单元电路功能简介1.设计思路:数字钟的设计可以分为4个单元电路来设计,分别为1Hz脉冲产生电路、数码管显示电路、60进制计数器电路、24进制计数器电路这四个单元电路。

2.芯片的选择:BCD——七段译码器74LS47十进制可逆计数器74192555定时器集成与门芯片74LS113.单元电路功能简介:①1Hz脉冲产生电路:图1 1Hz脉冲产生电路该单元电路是用由555定时器构成的多谐振荡器来产生的1HZ方波的电路,其中考虑到电路的“延时”效应,该电路产生的方波的频率并不是标准的1HZ方波,而是频率稍大于1Hz的方波。

它是为整个电路提供时钟源的,它的输出脉冲提供给秒单元电路的低位计数芯片。

②数码管显示电路:图2数码管显示电路该单元电路是用来显示一位数字的电路,它由一块数码管和一块数码管驱动芯片组成,它的输入信号由计数器提供。

③60进制计数器电路:图3 60进制计数器电路该单元电路由两片74LS192可逆计数器芯片、一个三输入与非门和一个非门构成的60进制计数器电路,它是为秒显示和分显示电路提供驱动信号的单元电路。

④24进制计数器电路:图4 24进制计数器电路该单元电路是由两片74LS192可逆计数器芯片和一个与门构成的24进制计数器电路,它的低位脉冲信号由分钟计数器单元电路的进位信号提供,它为小时显示电路提供驱动信号。

4.总电路图图5 总电路图5.仿真效果1.在接通电源之前,应保持开关SW1断开且SW2闭合,如下图所示:图6 SW1和SW2状态(1)2.接通电源后应先断开开关SW2,保持开关SW1断开状态不变,如下图所示:图7 SW1和SW2状态(2)3.在做完第二步之后,应保持开关SW2断开状态不变,闭合开关SW1,如下图所示:图8 SW1和SW2状态(3)在执行完以上三步之后,就是仿真的正确结果了,如下图所示:图9 总的运行效果6.实验结论在本次实验中,对于74LS192可逆计数器芯片来说,它本是十进制计数器,若用它构成六进制计数器,据理论知识,仅需要将它的输出端Q1和Q2端通过一个与门后反馈到清零端CR即可。

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‎等多种编译‎器。

proteus仿真大作业-数字时钟实验报告

proteus仿真大作业-数字时钟实验报告

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

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

单片机AT89C51在Proteus软件中实现数字时钟的定时、时间调整、闹正设置等功能。

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

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

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

Protues软件不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

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

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

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

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和MSP430等,它也支持IAR、Keil和MPLAB等多种编译器。

本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和LED1602液晶显示屏为核心,辅以必要的电路,构成了一个单片机电子时钟。

目录第一章电子时钟、单片机简介 (4)1、电子时钟工作原理 (4)2、单片机简介 (4)第二章数字时钟电路设计 (5)2.1 设计要求 (5)2.2 数字电路模块图: (6) (6)2.2 模块简介: (6)2.3 系统功能操作实现 (7)2.4 方案设计元件清单 (8)第三章Protues仿真电路 (9)3.1 绘制数字时钟电路Protues仿真原理图: (9)3.1.1 启动ISIS 7 Professional软件 (9)3.1.2 仿真电路绘制 (9)3.1.3 数字时钟原理图 (10)3.1.4 电路检测 (11)3.2 软件设计: (11)3.2.1 运行keil软件编写程序 (11)3.2.2 编译、连接 (12)3.2.3 将程序烧入单片机 (12)、程序运行 (13)附录 (13)程序: (13)总结 (23)参考资料 (24)第一章电子时钟、单片机简介1、电子时钟工作原理电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

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

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

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

单片机AT89C51在Proteus软件中实现数字时钟的定时、时间调整、闹正设置等功能。

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

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

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

Protues软件不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

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

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

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

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和MSP430等,它也支持IAR、Keil和MPLAB等多种编译器。

本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和LED1602液晶显示屏为核心,辅以必要的电路,构成了一个单片机电子时钟。

目录第一章电子时钟、单片机简介 (4)1、电子时钟工作原理 (4)2、单片机简介 (4)第二章数字时钟电路设计 (5)2.1 设计要求 (5)2.2 数字电路模块图: (6)2.3 (6)2.2 模块简介: (6)2.3 系统功能操作实现 (7)2.4 方案设计元件清单 (8)第三章Protues仿真电路 (9)3.1 绘制数字时钟电路Protues仿真原理图: (9)3.1.1 启动ISIS 7 Professional软件 (9)3.1.2 仿真电路绘制 (9)3.1.3 数字时钟原理图 (10)3.1.4 电路检测 (11)3.2 软件设计: (11)3.2.1 运行keil软件编写程序 (11)3.2.2 编译、连接 (12)3.2.3 将程序烧入单片机 (12)3.2.4、程序运行 (13)附录 (13)程序: (13)总结 (23)参考资料 (24)第一章电子时钟、单片机简介1、电子时钟工作原理电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。

从而达到计时的功能,是人民日常生活补课缺少的工具。

现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有年、月、时、分、秒以及星期、温度等显示功能,还可以进行时和分的校对以及定时闹钟功能,片选的灵活性好。

该电子时钟由89C51,BUTTON,7SES六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。

而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

2、单片机简介1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。

在这以后,8位单片机纷纷面市。

例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。

随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。

例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。

这类单片机的寻址能力达64KB,片内ROM容量达4--8KB,片内除带有并行I\O口外,还有串行I\O口,甚至还有A\D转化器功能。

8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。

单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。

从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。

单片机是将计算机的基本部件微型化并集成在一块芯片上的微型AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。

综上所诉,数字时钟设计方案采用单片机机型:AT89C51;计时方案设计采用单片机内部计数/定时功能,利用软件控制单片机实现数字时钟时间设置功能;显示方案中利用单片机并行I/O端口,实现LED动态显示;第二章数字时钟电路设计2.1 设计要求设计并制作出具有以下功能的数字钟:(1)自动计时,由六位LED显示器显示时、分、秒(2)具备校准功能,可以设置当前时间。

(3)具备定时启闹功能,可以设置启闹时间,启闹10s后自动关闭闹铃2.2 数字电路模块图:2.2 模块简介:(1)主程序函数main:完成系统初始化,包括时钟、闹铃初始参数及初始标志的设定;I/O端口、定时/计数器初始状态的设定:更新显示时间,循环扫描按键,根据案件分别进行闹铃和时钟的设置管理。

(2)LED显示函数dispiay:根据显示单元首地址显示时钟(或闹铃)时间,实现6位LED的动态显示功能。

(3)键盘检测函数keytest和查键值函数search:这两个函数都属于键盘扫描模块,函数keytest判断是否有按键输入,函数search识别并返回行列式按键的键号。

(4)时钟设置函数ftion0:根据用户按下0#键的次数,依次选择设置时钟的秒、分、时的修改标志位。

加1修改功能函数将根据该标志位进行时钟时间的设置修改。

(5)闹铃设置函数ftion1:根据用户按下:1#键的次数,依次选择设置闹铃的分、时的修改标志位。

加1修改功能函数将根据该标志位进行时钟闹铃的设(6)加1修改功能函数cum:用户按下2#键后,根据时钟和闹铃设置函数设置的标志位将时钟(或闹铃)相应的时、分、秒计数单元加1。

(7)闹铃判断启动函数alarm:半段闹铃启动时间到否,若时间到,则启动闹铃,延时10s后自动关闹铃,并清除闹铃设置标志。

(8)定时器中断函数clock:定时修改时钟参数中断服务子程序。

综上各模块功能,数字时钟设计方案采用单片机机型:AT89C51;计时方案设计采用单片机内部计数/定时功能,利用软件控制单片机实现数字时钟时间设置功能;显示方案中利用单片机并行I/O端口,实现LED动态显示;2.3 系统功能操作实现(1)键盘功能定义。

系统采用4*3矩阵键盘。

共计12个按键任务中使用了三个按键,0#、1#和2#键,其余按键为系统功能扩展预留。

0#键:时钟参数表修改功能选择键。

按一次修改秒,按二次修改分,按三次修改小时,按四次确认修改完毕。

1#键:闹铃时间设置功能选择键。

按一次修改分,按两次修改小时,按三次确认修改完成。

2#键:增1功能键,每按一次该键,根据0#、1#键的选择结果将相应单元内容加1。

修改“小时”时,加到23后再加1“清零”;修改“分”时,加到59后再加1“清零”。

(2)显示定义。

6位LED从左到右依次显示时、分、秒,采用24小时计时。

(3)系统工作流程设计时间显示:上电后,系统自动进入时钟显示,从00:00:00开始计时。

时间调整:按下0#键,系统停止计时,进入时间设定状态,保持原有显示。

按一次修改秒表,按二次修改分,按三次修改小时,直至按四次确认修改完成,系统由设定后的时间开始计时显示。

闹铃设置/启闹/停闹:按下1#键,数码管显示00:00:00,进入闹铃设置状态。

等待键入启闹时间,按一次设置分,按两次设置小时,按三次确认设置完毕。

将启动定时启闹功能,并恢复时间显示。

当定时时间到,蜂鸣器鸣叫10s后停闹。

在闹铃设置过程中,系统继续计时。

在时间调整和闹铃设置状态下,均可以按2#键,采用增1方式修改相应的参数。

2.4 方案设计元件清单蜂鸣器 1 - BUZZER ACTIVE 第三章Protues仿真电路3.1 绘制数字时钟电路Protues仿真原理图:3.1.1 启动ISIS 7 Professional软件元件的加载:找到原件后双击原件即可完成加载原件。

3.1.2 仿真电路绘制放置元件→调整原布局→连线→绘制总线→放置网络标号网络标号放置如下图所示。

3.1.3 数字时钟原理图连线后最终数字时钟电路原理图如下3.1.4 电路检测电路连接完毕后,单击运行按钮(如下图)检测电路是否有误,如果电路如果无误进行软件检测。

3.2 软件设计:3.2.1 运行keil软件编写程序3.2.2 编译、连接3.2.3 将程序烧入单片机3.2.4、程序运行附录程序:/***************数字钟程序***************/ #pragma SMALL#include <reg51.h>#include <absacc.h>#define uchar unsigned charsbit P2_7=P2^7; //定义蜂鸣器控制端口/**************函数声明*************/void delay(uchar x);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; //定时器0开中断TR0=1; //启动定时器T0dis_p=clockbuf; //将时钟值所在地址送入显示指针while(1){a=keyscan(); //调用键盘扫描子程序if(a==0x0f){display(dis_p); //无键输入调用显示程序if(armbit==1)alarm(); //判断闹钟设定否,若设定则调用闹钟启动函数}else{display(dis_p); //调用显示子函数作为延时去抖动a=keyscan();if(a!=0x0f) //没有抖动,表示有键按下{a=search(); //调用查键值子函数switch(a){case 0x00:ftion0();break; //是时钟参数修改功能键,调用时钟设置子函数case 0x01:ftion1();break; //是闹钟参数修改功能键,调用闹钟设置子函数case 0x02:cum();break; //是加1功能键,调用加1修改功能子函数default:break;}}}}}void delay(uchar x){char j;while(x--)for(j=0;j<123;j++);}//***************6位LED显示函数***************/void display(uchar *p){uchar buffer[]={0,0,0,0,0,0};uchar k,i,j,temp;uchar led[]={0x3f,0x06,0x58,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<3;k++){temp=0xfe;for(i=0;i<6;i++){P1=0xff; //关显示j=buffer[i];P1=led[j]; //P1送断码P0=~temp; //P0对应端口低电平选位temp<<=1;delay(5);//每一位显示延时}}}/**************键盘扫描函数************/uchar keyscan(){uchar c;P0=0xf0;c=P2;c=c&0x07; //按键行输入为P2.0-P2.2,屏蔽无关位return(c);}/**************查键值函数*************/uchar search(){uchar a,b,c,d,e;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行行首号送belse if(d&0x04==0){b=8;break;} //第2行有键按下,第2行行首号送ba++; //扫描列号加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])){P2_7=0;rtimbit=1;} //设置闹钟计时标志,时钟将进行10s计时标志else{if(count==10) //判断闹钟保持10s时间到否{count=0; //清除闹钟保持10s计时P2_7=1; //清除闹钟armbit=0; //清闹钟标志,否则闹钟设置将继续有效rtimbit=0;}}}/*************时钟设置函数*************/void ftion0(){TR0=0; //关定时器rhourbit=0; //禁止闹钟时间参数修改,请闹钟修改标志rminbit=0;dis_p=clockbuf; //将时钟缓冲区首地址送显示指针rtimdata=0; //清闹钟修改位置标志记录timdata++; //将时钟修改记录值加1switch(timdata){case 0x01:secbit=1;break;//记录值为1,则将时钟秒修改标志置1 case 0x02:secbit=0;minbit=0;break;//记录值为2,则将时钟分修改标志置1case 0x03:minbit=0;hourbit=1;break;//记录值3,则将时钟时修改标志置1case 0x04:timdata=0;hourbit=0;TR0=1;break;//按4次则清时钟单元修改位置//记录,定时器重新开启default:break;}}/***************闹钟设置函数**************/void ftion1(){secbit=0; //禁止时钟时间修改minbit=0;hourbit=0;dis_p=bellbuf; //设置闹钟显示标志timdata=0; //清时钟修改位置标志记录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,分单元内容加1 if(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(rtimbit==1){//闹钟分修改标志为1,分单元内容加1if(bellbuf[1]==59) bellbuf[1]=0;else bellbuf[1]++;}else if(rhourbit==1){//闹钟小时修改标志为1,小时单元内容加1 if(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!=100)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; //开中断}总结历时一周的Protues仿真大型作业经过自己努力终于告一段落,在这次电子时钟电路大型作业仿真电路设计中自己学到了很多知识,同时对以前自己所学知识也进行了巩固,对知识的掌握更加牢固。

相关文档
最新文档