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仿真数字闹钟报告
数字电子钟一、LED数字电子钟介绍一、设计LED数字电子钟的目的目前市场上提供的不管是机械钟仍是石英钟在晚上无照明的情形下都是不可见的。
要明白当前的时刻,必需先开灯,故较为不便。
此刻市场上也显现了一些电子钟,它以六只LED 数码管来显示时分秒,与传统的以指针显示秒的方式不同,违抗了人们传统的适应与理念,而且这种电子钟一样是采纳大型显示器件,适合于银行、车站等公开场合,且外观设计欠美观,很少进入百姓家庭,另外,不管是机械钟、石英钟仍是电子钟。
都存在着一起的问题:时刻误差。
针对以上存在的问题,咱们设计了一款采纳LED显示器件显示的电子时钟,有效克服了时钟存在的误差问题。
二、LED数字电子钟的特点和功能(1)、设计特点:本LED电子按时闹钟是一种基于单片机技术的多功能、多用途的电子产品,有电子时钟、按时闹铃功能。
采纳LED显示加倍直观,是一个比较有效的电子产品。
(2)、要紧功能:能够显示24小时制“不时—分分—秒秒”,LED显示;能够方便的设定定不时刻闹铃功能,预设定不时刻到将发出闹铃声;能够修改时钟时刻的时、分、秒。
二、系统整体方案及硬件设计1、整体方案设计本LED电子数字闹钟,是以单片机及外围接口电路作为核心硬件,辅之外围硬件电路,用汇编语言设计的程序来设计并实现的。
依照AT89C51单片机的外围接口特点扩展成相应的硬件电路,然后依照单片机的指令设计出数字钟相应的软件,在利用软件来执行必然的程序实现数字钟的功能。
之因此用单片机来制作电子钟,是因为如此在设计制作简单而且功能多、精准度高,也可方便的扩充其他功能。
这次设计是利用AT89C51单片机为主控芯片,由七段数码管、晶振、电容、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和操纵的数字按时闹钟。
二、硬件设计整体的硬件系统结构框图如以下图所示:图1:硬件电路概念示用意图2:硬件电路框图3、主控芯片AT89C51AT89C51单片机由微处置器,存储器,I/O口和特殊功能寄放器SFR等部份组成。
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软件与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字符液晶详细资料)#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仿真
数字钟设计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仿真大作业课题:数字时钟实验报告系部:电子工程系班级:xxxx姓名:xxx指导老师:xxx2011.6.10前言数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。
另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。
单片机AT89C51在Prote u s软件中实现数字时钟的定时、时间调整、闹正设置等功能。
具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。
Protue s软件不仅具有其它E DA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteu s 是世界上著名的ED A工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到P CB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和M SP430等,它也支持IA R、Keil和M PLAB等多种编译器。
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、电子时钟工作原理电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。
Protues数字钟大作业
• 当十位计数到6时,输出0110,其中正好有两个高电平,把 这两个高电平Q2和Q1分别接到74LS90的R0(1)和R0(1)端,即 可实现清零。一旦清零,Q2和Q1都为0,不能再继续清零, 恢复正常计数,直到下次再同时为1。
• 计秒电路的仿真图如图5-38所示,计分电路和计秒电路是完 全一致的,只是周期为1S的时钟信号改成了周期为60秒即1 分的时钟信号。
对应于集成芯片的6、7管脚,R1、R2对应于集成芯片的2、3管脚,CP0 对应于14管脚,CP1对应于12管脚,Q3、Q2、Q1、Q0分别对应于11、8、 9、12管脚。
S1 &
Q0
S2
Sd
J0 Q0 CP 0 CP 0
K0 Q0
CP1
Rd
R1 &
R2
Q1
Q2
J1 Q1 CP1 K1 Q1
J2 Q2 CP2 K2 Q2
图5-41 具有秒、分、时的数字钟电路
图5-42 仿真参数设置对话框
• 2. 校时电路 • 接下来把校时电路加上。校时电路主要完成校分和校时。选择校分时,
拨动一次开关,分自动加一;选择校时时,拨动一次开关,小时自动加 一。校时校分应准确无误,能实现理想的时间校对。校时校分时应切断 秒、分、时计数电路之间的进位连线。 • 如图5-43,虚框内是校时电路,由去抖动电路和选择电路组成。
十位中的Q2Q0相与作为开始报时的一个条件即可。见图5-44,U17:A和 U6:F组成的与门输出即为报时开始信号。
图5-44 整点报时电路
• (2) 报时锁存信号
• 用秒个位的计数器输出进行四高一低的报时 锁存信号。现在来分析一下50~59秒之间秒个 位的状态。
基于proteus软件的单片机数字时钟系统设计与仿真
目录一、设计正文 (1)二、附录1. 设计任务书 (32)2. 设计中期检查报告 (34)3. 指导教师指导记录表 (35)4. 设计结题报告 (36)5. 成绩评定及答辩评议表 (37)6. 设计答辩过程记录 (40)基于Proteus软件的单片机数字时钟系统设计与仿真摘要:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域.本文的电子钟系统是以单片机(AT89C51)为核心,时钟芯片DS1302、数码管显示驱动芯片MAX7219等元器件组成。
具体介绍应用Proteus的ISIS软件进行单片机系统的电子钟设计与仿真的实现方法。
该方法既能准确验证所设计的系统是否满足技术要求,又能提高系统设计的效率和质量,降低开发成本,具有推广价值。
关键词:单片机、时钟芯片、数码管显示驱动芯片、Proteus、电子钟Design and Simulation Of electronic clock Based onProteus Software SystemAbstract :In recent years, with computers in the infiltration and the development of large-scale integrated circuits. SCM application is steadily deepening, as it has strong function, small size, low power dissipation, low prices, reliable, easy to use features, it is particularly suited to and control of the system, increasingly widely used in various fields.This article describes an electronic bell system is single-chip microcomputer (AT89C51) as the core, the clock chip DS1302, LED display driver chip components, such as MAX7219 component.Describes the application of Proteus's ISIS software of the electronic single-chip system clock to achieve the design and simulation methods in details.The method can not only test the property of the system precisely,but also improve development efficiency and reduce development cost,which values in popularity.Key words:AT89C51、DS1302、MAX7219、Proteus、electronics clock目录1 绪论 (1)1.1引言 (1)1.2P ROTEUS软件简介 (1)2系统设计 (3)2.1电子钟系统硬件组成 (3)2.2AT89C51单片机简介 (4)2.2.1.主要特性................................................................................................................ - 5 -2.2.2.管脚说明................................................................................................................ - 5 -2.3实时时钟电路DS1302工作原理 (8)2.3.1DS1302的结构及工作原理 (8)2.3.3DS1302的寄存器................................................................................................. - 9 -2.4MAX7219工作原理简介 (10)2.4.1.引脚分配及功能 ................................................................................................ - 11 -2.4.2.寄存器介绍......................................................................................................... - 12 -2.5数码管介绍.. (14)2.5.1数码管的分类 ..................................................................................................... - 14 -2.5.2数码管的应用..................................................................................................... - 15 -2.5.6数码管使用的电流与电压............................................................................. - 15 -2.6电子时钟系统设计流程.. (16)3硬件电路设计 (17)3.1电路原理图设计 (17)3.2P ROTEUS 电路图设计 (18)4软件设计 .................................................................................................................................... - 19 - 4.1程序流程图设计 . (19)4.2源程序设计 (20)4.3K EIL C51进行程序调试 (25)5.系统调试与仿真 (27)5.1P ROTEUS中H EX 文件选择 (27)5.2P ROTEUS进行电子钟系统仿真 (28)结束语 (29)参考文献........................................................................................................................................ - 30 - 谢辞 ............................................................................................................................................ - 31 -1 绪论1.1引言随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
精品基于Proteus软件的单片机数字时钟系统设计与仿真-定
本科毕业设计题 目:基于Proteus 软件的单片机数字时钟系统设计与仿真课题性质: 实践应用型学生姓名: ***专业名称: 自动化指导教师 : ***2011年5月20日教学单位:电子电气工程系学生学号:编 号:目录一、设计正文 (1)二、附录1. 设计任务书 (32)2. 设计中期检查报告 (34)3. 指导教师指导记录表 (35)4. 设计结题报告 (36)5. 成绩评定及答辩评议表 (37)6. 设计答辩过程记录 (40)基于Proteus软件的单片机数字时钟系统设计与仿真摘要:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域.本文的电子钟系统是以单片机(AT89C51)为核心,时钟芯片DS1302、数码管显示驱动芯片MAX7219等元器件组成。
具体介绍应用Proteus的ISIS软件进行单片机系统的电子钟设计与仿真的实现方法。
该方法既能准确验证所设计的系统是否满足技术要求,又能提高系统设计的效率和质量,降低开发成本,具有推广价值。
关键词:单片机、时钟芯片、数码管显示驱动芯片、Proteus、电子钟Design and Simulation Of electronic clock Based onProteus Software SystemAbstract :In recent years, with computers in the infiltration and the development of large-scale integrated circuits. SCM application is steadily deepening, as it has strong function, small size, low power dissipation, low prices, reliable, easy to use features, it is particularly suited to and control of the system, increasingly widely used in various fields.This article describes an electronic bell system is single-chip microcomputer (AT89C51) as the core, the clock chip DS1302, LED display driver chip components, such as MAX7219 component.Describes the application of Proteus's ISIS software of the electronic single-chip system clock to achieve the design and simulation methods in details.The method can not only test the property of the system precisely,but also improve development efficiency and reduce development cost,which values in popularity.Key words:AT89C51、DS1302、MAX7219、Proteus、electronics clock目录1 绪论 (1)1.1引言 (1)1.2P ROTEUS软件简介 (1)2系统设计 (3)2.1电子钟系统硬件组成 (3)2.2AT89C51单片机简介 (4)2.2.1.主要特性................................................................................................................ - 5 -2.2.2.管脚说明................................................................................................................ - 5 -2.3实时时钟电路DS1302工作原理 (8)2.3.1DS1302的结构及工作原理 (8)2.3.3DS1302的寄存器................................................................................................. - 9 -2.4MAX7219工作原理简介 (10)2.4.1.引脚分配及功能 ................................................................................................ - 11 -2.4.2.寄存器介绍......................................................................................................... - 12 -2.5数码管介绍.. (14)2.5.1数码管的分类 ..................................................................................................... - 14 -2.5.2数码管的应用..................................................................................................... - 15 -2.5.6数码管使用的电流与电压............................................................................. - 15 -2.6电子时钟系统设计流程.. (16)3硬件电路设计 (17)3.1电路原理图设计 (17)3.2P ROTEUS 电路图设计 (18)4软件设计 .................................................................................................................................... - 19 - 4.1程序流程图设计 . (19)4.2源程序设计 (20)4.3K EIL C51进行程序调试 (25)5.系统调试与仿真 (27)5.1P ROTEUS中H EX 文件选择 (27)5.2P ROTEUS进行电子钟系统仿真 (28)结束语 (29)参考文献........................................................................................................................................ - 30 - 谢辞 ............................................................................................................................................ - 31 -1 绪论1.1引言随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。
PROTEUS仿真的数字电子钟设计
PROTEUS仿真的数字电子钟设计PROTEUS仿真的数字电子钟设计【摘要】电子钟作为现代人日常生活与工作中一种最为多见的计时工具之一,同人们的生活密切相关,而数字电子钟又凭借着小体积、轻重量与准确计时、结构简单以及少耗电等优点被广泛应用在日常生活中。
故文章介绍一种基于PROTEUS仿真软件的数字电子钟,并对其设计与仿真调试情况展开具体分析。
【关键词】PROTEUS仿真;数字电子钟;设计方案一、引言PROTEUS仿真软件,作为Labeenter Electronics公司研发出来的一款用于电路设计和仿真的软件,主要涵盖了ISIS 与ARES等软件模块,其中,ISIS模块主要是用于电路原理图的布图和仿真,而ARES 模块则多用于PCB设计。
在该仿真软件中,有着极为丰富的资源,拥有30多个元器件库,并为设计者提供了27000个以上的仿真元器件,为数字电路与模拟电路混合仿真效果的实现奠定了良好的基础。
同时,在该软件中,还可为用户提供了逻辑分析仪、虚拟终端与信号发生器以及交直流电压表等仿真仪器与仪表资源,即实现了同一仪器与仪表在同一个电路中的随意调整[1]。
下面,基于PROTEUS仿真软件设计一数字电子钟。
二、数字电子时钟的设计分析从本质上来说,数字电子钟主要可分为分频器、振荡器与译码器等几部分,其中,分频器与振荡器共同构成了一个“标准秒信号的发生器”,而其计时系统则由不同进制的计数器、显示器与译码器构成,当秒信号被输送到计数器中时开始计数,而后用“时”、“分”、“秒”的形式将累积结果显示出来[2]。
下面,对数字电子钟的设计展开具体分析。
图1本次设计主要以AT89C2051为其核心元器件(因PROTEUS仿真软件无该元器件,故设计原理图时以AT89C4051代替),主要分成以下几个部分:①振荡电路,该部分作为计时器的一个核心部分,其频率的精确性与稳定性直接关系到计时器的总体准确度,故为达到最佳精确度,本次设计选用晶体振荡器来组成其振荡电路;②按键电路,如图1-a,即设计了S1、S2与S3三个按键,并使之分别同P3.5、P3.4与P3.2的端口进行复用,只要对应端口输出高电平的时候,该单片机就可读取出按键的当前状态们,并赋予其相对值;③蜂鸣器电路。
基于proteus的数字电子钟的仿真设计
基于p r o t e u s的数字电子钟的仿真设计文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]课程论文题目:基于Proteus的数字电子钟的设计与仿真课程名称:单片机系统设计与Proteus仿真学生姓名:马珂学生学号: 23系别:电子工程学院专业:通信工程年级: 13级任课教师:徐锋电子工程学院2015年5月目录24六、4基于Proteus的数字电子钟的设计与仿真一、设计目的与要求设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。
设计要求:设计一个时、分可调的数字电子钟、开机显示“9-58-00”。
二、设计内容与方案制定具有校时功能,按键控制电路其中时键、分键两个键分别控制时、分时间的调整。
按分键分加1;按时键时加1。
以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。
三、设计步骤1、硬件电路设计.硬件电路组成框图.各单元电路及工作原理(1)晶振电路单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。
本系统中AT89C51单片机采用内部时钟方式。
采用外接晶体和电容组成的并联谐振回路。
其电路图如下:(2)键盘控制电路键盘可实现对时间的校对,用两个按键来实现。
按时键来调节小时的时间,按分键来调节分针的时间。
其电路连接图如下:(3)显示电路LED显示器是现在最常用的显示器之一发光二极管(LED)分段式显示器由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,采用动态显示方式显示时间,其硬件连接方式如下图所示。
.绘制原理图其计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。
proteus仿真大作业数字时钟
实验报告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液晶显示屏为核心,辅以必要的电路,构成了一个单片机电子时钟。
基于proteus的数字电子钟的仿真设计
基于p r o t e u s的数字电子钟的仿真设计文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)课程论文题目:基于Proteus的数字电子钟的设计与仿真课程名称:单片机系统设计与Proteus仿真学生姓名:马珂学生学号: 23系别:电子工程学院专业:通信工程年级: 13级任课教师:徐锋电子工程学院2015年5月目录24六、4基于Proteus的数字电子钟的设计与仿真一、设计目的与要求设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。
设计要求:设计一个时、分可调的数字电子钟、开机显示“9-58-00”。
二、设计内容与方案制定具有校时功能,按键控制电路其中时键、分键两个键分别控制时、分时间的调整。
按分键分加1;按时键时加1。
以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。
三、设计步骤1、硬件电路设计.硬件电路组成框图.各单元电路及工作原理(1)晶振电路单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。
本系统中AT89C51单片机采用内部时钟方式。
采用外接晶体和电容组成的并联谐振回路。
其电路图如下:(2)键盘控制电路键盘可实现对时间的校对,用两个按键来实现。
按时键来调节小时的时间,按分键来调节分针的时间。
其电路连接图如下:(3)显示电路LED显示器是现在最常用的显示器之一发光二极管(LED)分段式显示器由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,采用动态显示方式显示时间,其硬件连接方式如下图所示。
.绘制原理图其计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。
Proteus电子钟仿真实验高清版.pdf
(1)利用串行口扩展 LED,实现 LED 静态显示。 该方案占用单片机资源少,且静态显示亮度高,但硬件开销大,电路复杂,信息 刷新速度慢,比适用于单片机并行口资源较少的场合。 (2)利用单片机并行 I/O 端口,实现 LED 动态显示。
2
该方案直接使用单片机并行口作为显示接口,无须外扩接口芯片,但占用资源较 多,且动态扫描显示方式需占用 CPU 时间。在非实时测控或单片机具有足够并 行口资源的情况下可以采用。 这里采用动态显示方案。
第二章 硬件描述及系统设计构思
2.1 电子时钟功能模块
主程序 函数
LED 显示 函数
键盘 检测 函数
查值 函数
时钟 设置 函数
闹钟 设置 函数
闹钟 判断 启动 函数
定时 器中 断函 数
加1 修改 功能 函数
2.2 系统硬件描述
1.控制器用 AT89S51 , 12M 晶振 2.数码管动态扫描驱动——P2 口 3.数码管段码驱动——P1 口 4.闹铃驱动——P1.0 5.调整键 K1——P3.2(外部中断 0, 正常、调时、调分、调秒) 6.定时/正常切换键 K2——P3.3 7.时间参数低位加 1 键 K3——P3.4 8.时间参数高位加 1 键 K4——P3.5
2.4 电子时钟电路原理图
如图为电子时钟电路原理图
4
第三章 电子钟硬件介绍
3.1 单片机的介绍
单片机也被称为微控制器(Microcontroller Unit),常用英文字母的 缩写 MCU 表示单片机,它最早是被用在工业控制领域。它不是完成某一个 逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微 型的计算机,和计算机相比,单片机只缺少了 I/O 设备。概括的讲:一块 芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用 和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构 的最佳选择。
基于proteus的数字电子钟
基于proteus的数字电⼦钟零、设计要求1.时钟可以显⽰⼩时、分钟以及秒2.,四个按键可以实现时间的⼿动调节3.加⼊AT24C02,存储关机之前的时间,并且下次开机后可以通过某⼀按键将存储的时间读取出来⼀、硬件仿真⼆、程序设计⼆、程序部分1.IIC#include <I2C.h>/*开始信号*/void I2C_Star(){SDA = 1;SCL = 1;delay();SDA = 0;delay();SCL = 0;}/*停⽌信号*/void I2C_Stop(){SCL = 0;SDA = 0;delay();SCL = 1;delay();SDA = 1;delay();}/*写操作*/bit I2C_Write(uchar date){bit ack;//应答位uchar mask;for(mask=0x80;mask!=0;mask>>=1){if((date&mask)==0)SDA = 0;elseSDA = 1;delay();SCL = 1;//拉⾼让从机读信号delay();SCL = 0;//拉低准备写下⼀位}SDA = 1;//释放数据线,以检测从机应答delay();SCL = 1;ack = SDA;delay();SCL = 0;return (~ack);//返回1--应答返回0--⾮应答}/*读操作 + 应答*/uchar I2C_Read_Ack(){uchar date;//读到的⼀个字节uchar mask;SDA = 1;//确保数据线释放for(mask=0x80;mask!=0;mask>>=1){delay();SCL = 1;//拉⾼时钟线准备读date &= ~mask;delay();SCL = 0;}//读完给从机发送应答SDA = 0;delay();SCL = 1;//从机读⾛应答位delay();SCL = 0;return date;//返回读到的⼀字节}/*读操作 + ⾮应答*/uchar I2C_Read_NAck(){uchar date;//读到的⼀个字节uchar mask;SDA = 1;//确保数据线释放for(mask=0x80;mask!=0;mask>>=1) {delay();SCL = 1;//拉⾼时钟线准备读if(SDA==1)date |= mask;elsedate &= ~mask;delay();SCL = 0;}//读完给从机发送⾮应答SDA = 1;delay();SCL = 1;//从机读⾛⾮应答位delay();SCL = 0;return date;//返回读到的⼀字节}2. 按键#include "key.h"/*毫秒级延时*/void delay_ms(uint z){uint x,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}/*按键扫描*/uint key_scan(){if(sec_up==0){delay_ms(10);while(!sec_up);return 1;}if(sec_down==0){delay_ms(10);while(!sec_down);return 2;}if(min_up==0){delay_ms(10);while(!min_up);return 3;}if(min_down==0){}if(read_e2==0){delay_ms(10);while(!read_e2);return 5;}return 0;}3.液晶显⽰#include "LCD1602.h"/*微秒级延时*/void delay_us(uint x){for(;x>0;x--)_nop_();}/*写命令*/void write_com(uchar com){P0 = com;rs = 0;lcd_en = 0;delay_us(100);lcd_en = 1;delay_us(100);lcd_en = 0;}/*写数据*/void write_date(uchar date){P0 = date;rs = 1;lcd_en = 0;delay_us(100);lcd_en = 1;delay_us(100);lcd_en = 0;}/*初始化*/void Init_lcd(){uchar i=0;rw = 0;//写⼊数据或指令write_com(0x38);//显⽰模式16X2delay_us(100);write_com(0x0c);//开显⽰,不显⽰光标 delay_us(100);write_com(0x06); //写⼊新数据光标右移 delay_us(100);write_com(0x01);//清屏delay_us(100);}/*显⽰位置设置*/void lcd_location(uchar location){write_com(0x80 | location);}4.主函数#include<reg52.h>#include "LCD1602.h"#include "key.h"#include "I2C.h"/**接⼝定义**/sbit START = P3^5;uchar sec,min,hour;uchar count = 0;uchar KeyCount = 0;/**数组定义**/uchar code lcd_date_1[]={" Design-By-WHH "};uchar code lcd_date_2[]={" 00:00:00 "};uchar display[6];uchar buf[3];//24C02缓存/**函数声明**/void display_lcd();void Display_Init();void Timer0_Config();void key_action();void E2PROM_Write(uchar *buf,uchar address,uchar len); void E2PROM_Read(uchar *buf,uchar address,uchar len); void Init_E2Data_Write();void Init_E2Data_Read();/*****//*主函数*/void main(){Timer0_Config();Init_lcd();Display_Init();while(1){if(START==0){if(!START){KeyCount++;switch(KeyCount%2){case 1:EA = 1;break;case 0:EA = 0;break;}}}key_action();display_lcd();}}/*掉电写数据包*/void Init_E2Data_Write(){buf[0] = hour;buf[1] = min;buf[2] = sec;}/*上电读数据包*/void Init_E2Data_Read(){hour = buf[0];min = buf[1];sec = buf[2];}/*显⽰函数*/void display_lcd(){display[0] = hour/10+0x30;display[1] = hour%10+0x30;display[2] = min/10+0x30;display[3] = min%10+0x30;display[4] = sec/10+0x30;display[5] = sec%10+0x30;lcd_location(0x44);//第⼆⾏第五个位置write_date(display[0]);write_date(display[1]);write_date(0x3a);//显⽰':'write_date(display[2]);write_date(display[3]);write_date(0x3a);//显⽰':'write_date(display[4]);write_date(display[5]);}/*显⽰初始化*/void Display_Init(){uchar i;lcd_location(0x00);for(i=0;i<16;i++){write_date(lcd_date_1[i]);}lcd_location(0x40);//第⼆⾏初始位置for(i=0;i<16;i++){write_date(lcd_date_2[i]);}}/*定时器配置*/void Timer0_Config(){TMOD &= 0xF0;TMOD |= 0x01;TH0 = 0x4c;//定时50msTL0 = 0X00;ET0 = 1;TR0 = 1;}/*按键动作操作*/void key_action(){uint key_value = 0;key_value = key_scan();if(key_value==1){min++;}if(key_value==2){min--;}if(key_value==3){sec++;}if(key_value==4){sec--;}if(key_value==5){Init_E2Data_Read();E2PROM_Read(buf,0x3a,sizeof(buf));}}/*E2PROM写多个字节*/void E2PROM_Write(uchar *buf,uchar address,uchar len) {while(len--){do{I2C_Star();if(I2C_Write(0xa0))break;//如果允许写⼊则退出检测循环I2C_Stop();}while(1);I2C_Write(address++);I2C_Write(*buf++);I2C_Stop();}}/*E2PROM读多个字节*/void E2PROM_Read(uchar *buf,uchar address,uchar len){do{I2C_Star();if(I2C_Write(0xa0))break;//如果允许写⼊则退出检测循环I2C_Stop();}while(1);I2C_Write(address);//写⼊要读取的地址I2C_Star();I2C_Write(0xa1);//选择读while(len>1)//读取字节数-1{*buf++ = I2C_Read_Ack();//给应答以继续读len--;}*buf = I2C_Read_NAck();//给⾮应答不继续读了I2C_Stop();}/*定时器0中断服务函数*/void Time0() interrupt 1{TH0 = 0x4c;//定时50msTL0 = 0X00;count++;if(count==20)//1s{Init_E2Data_Write();E2PROM_Write(buf,0x3a,sizeof(buf));//1s时间写⼀次数据到E2 count=0;sec++;}if(sec==60)//1min{sec = 0;min++;}if(min==60)//1h{min=0;hour++;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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仿真大型作业经过自己努力终于告一段落,在这次电子时钟电路大型作业仿真电路设计中自己学到了很多知识,同时对以前自己所学知识也进行了巩固,对知识的掌握更加牢固。