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

Proteus电子钟仿真实验高清版

Proteus电子钟仿真实验高清版

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

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

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

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

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

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

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

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

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

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

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

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

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

(2)软件控制。

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

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

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

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

AVR——Mega16制作的电子时钟(仿真图+源程序)

AVR——Mega16制作的电子时钟(仿真图+源程序)
{ miao=0; fen++; if(fen==60)
{ fen=0; shi++; if(shi==24)
{ shi=0; } }
}
TCNT1H=0X8f; TCNT1L=0X80; }
绥化学院电子协会 2010 级耿国辉
QQ:835751934
PORTA=0X00; PORTC=0X00; PORTB=0X07; }
/*************定时器初始化*************/ void timer1_init(void)
{ TCCR1B=0X04; //256 分频 TCNT1H=0X8f; TCNT1L=0X80; TIMSK|=BIT(2); //定时器中断使能位 SREG|=BIT(7); //设置总中断 } /*************按键扫描*****************/ void key_scan() {
PORTA=0X00;
PORTA=table[fen/10];
//5
PORTC=tab[3];
delay(1);
PORTA=0X00;
PORTA=0x40;
பைடு நூலகம்
//6
PORTC=tab[2];
delay(1);
PORTA=0X00;
PORTA=table[shi%10];
//7
PORTC=tab[1];
delay(1);
PORTA=0X00;
PORTA=table[shi/10];
//8
PORTC=tab[0];
delay(1);
PORTA=0X00;
} /************主函数*****************/ void main(void) { init(); //初始化 timer1_init(); while(1)

基于proteus的电子钟仿真

基于proteus的电子钟仿真

电子钟(中断计时)一.实验内容:利用cpu的中断程序,实现1s的精确计时,并仿真出可以调整时间的LED电子钟。

二.实验步骤:i.在proteus中选择相应的元器件,并根据内容要求按一定的方式连接电路;ii.根据在软件仿真中所连接的电路,在keil中编写相应的程序,编译无误后生成相应的*.hex文件;iii.将*.hex加入软件仿真的单片机中,并运行。

1.电路图选取1个8段共阳集成LED灯,89c51单片机,3个按键。

P0和P3分别连接LED 的公共端和位选端。

设置单片机的工作频率为12MHz,中断溢出的时间为10ms,故中断溢出100次的时间为1s。

3个独立按键分别控制时分秒的增1调整。

2.流程图3.c语言程序#include<regx51.h>unsigned char show[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x3f}; unsigned char scan[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; unsigned char second;unsigned char min;unsigned char hour;unsigned char tcount;sbit h=P1^0;sbit m=P1^3;sbit s=P1^7;delay(){int i,j;for(i=10;i>0;i--)for(j=20;j>0;j--) ;}void display(){ P3=scan[0];P0=show[second%10];P3=scan[8];delay();P3=scan[0];P0=show[second/10];P3=scan[7];delay();P3=scan[0];P0=show[10];P3=scan[6];delay();P3=scan[0];P0=show[min%10];P3=scan[5];delay();P3=scan[0];P0=show[min/10];P3=scan[4];delay();P3=scan[0];P0=show[10];P3=scan[3];delay();P3=scan[0];P0=show[hour%10];P3=scan[2];delay();P3=scan[0];P0=show[hour/10];P3=scan[1];delay();}KEY(){ if(h==0){delay();if(h==0)hour++;if(hour==24)hour=0;while(!h);}if(m==0){delay();if(m==0)min++;if(min==60)min=0;while(!m);}if(s==0){delay();if(s==0)second++;if(second==60)second=0;while(!s);}}void main(){ tcount=0;second=0;min=0;hour=0;P1=0Xff;EA=1;ET0=1;TMOD=0X01;TH0=(65535-10000)/256;TL0=(65535-10000)%256;TR0=1;while(1){KEY();display();}}void Time0(void) interrupt 1 using 0 { TH0=(65535-10000)/256;TL0=(65535-10000)%256;tcount++;if(tcount==100){tcount=0;second++;if(second==60){second=0;min++;if(min==60){min=0;hour++;if(hour==24)hour=0;}}}}4.程序运行截图。

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

基于Proteus和Keil的数字电子钟的设计与仿真
“ ” 年 为例 , 字模为 0 H,F 1 H,F 0 H,F 0 H,2 . 其 8 0 H,2 O H,A 1 H,2 0 H
虽然 D 10 S 3 2时钟 芯 片能提 供实 时星 期数据 ,但 为 了按 键调 时环 节 能依据 年 月 日 自动调 整更 新星
期, 引入 了星期 的计算 , 流程 图见 图 4星期算法 可采用 以下表 达式 : .
间调 整完 毕 。主控 模 块又 将 重新 读 取 实时 时
主 控模 块
㈢ I示路 显电 l
键 扫 描 电路
时电 -- 钟路k >
图 1 系统 框 图
钟 信 息 .主 控 模 块 可 选 用 A ME T L公 司 的 A 8 C 2单片机 ; T95 时钟 电路 芯 片选 用 D L A A LS 公 司 的涓流充 电时钟芯 片 D 10 , 电源供 电、 S3 2 双 功耗低 、 时精度 高 ; 计 显示 模块 采用 字符 型 L D 6 2液 C 1O
8 H 字 符 串 以表 格形 式 存 放在 单 片 机 的 R M 中 , 1. O 通过 查 表指 令
MO C A, + P R读取 相应 字符 的代码 ,再 调用写 数据 到液 晶 V @A D T 子 程序完 成字符 串的正 常显示 , 写数据 操作 之前也 需检测 忙标志 . 23 ., 主程序 2 程序 主体部 分 主要 进行 D 10 S 3 2时钟 芯片 的实 时
223 显示 模块 L D 6 2 C 1 0 .. C 1 0 L D 6 2字 符型 液 晶显示 器分 为 带背 光 (6脚 ) 1 和无 背光 (4脚 ) 种 , 控 1 两 基
制器 大多 为 H 4 7 0HD 4 8 D 4 8 . 4 7 0内置 了 D R M、 G 0 和 C A D R D A CR M GR M.D AM 用 于显示 数据 ,地 址 范 围 为 0 H~ 7 0 2 H和 4 H 6 H, 8 0 ~ 7 共 0个字 节 , 两行 显 示 .G O 为 内部 自带 字符 发 生存 储 器 , 储 了 1 0 分 C R M 存 6 个不 同的点 阵字 符 图形 。 中字 符代 码 0 H O H 为 C A 用 于用 户 自定 义 的字 符 图形 .C 10 其 0 ~F GR M, L D 6 2的

proteus仿真大作业数字时钟

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的单片机控制电子时钟电路设计与仿真

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

基于Proteus的单片机控制电子时钟电路设计与仿真摘要工程实践教授教养环节是为了学生可以或许更好地巩固和实践所学专业常识而设置的,在本次工程实践中,我们以微机道理与接口技巧课程中所学常识为基本,设计了电子时钟.单片机由RAM.ROM.CPU构成,由准时.计数和多种接口于一体的微控制器.它体积小,成本低,普遍应用于智能财产和工业主动化上.本设计重要设计了一个基于AT89C51单片机为焦点,应用12MHz晶振与AT89C51相衔接,经由过程软件编程的办法实现以24小时为一个周期,同时8位7段LED数码管显示小时.分钟和秒的请求.本体系的设计解释重点介绍了如下几方面的内容:1)电子时钟的根本功效,同时对计时的道理也进行了扼要的阐述;2)介绍了体系的总体设计.给出了体系的整体构造框图,并对其进行了功效模块划分及所采取的元器件进行了具体解释;3)对体系各功效模块的软.硬件实现进行了具体的设计解释.症结词:AT89C51单片机;电子钟;硬件设计;软件设计目次第一章绪论1第二章电子时钟体系简介32.1单片机简介32.2单片机的成长史3第三章体系总体设计及硬件设计53.1单片机芯片选择计划53.2数码管显示选择计划53.2.1 数码管显示工作道理53.2.2 数码管计划及选择6第四章电子时钟软件设计104.1软件体系模块功效扼要介绍104.2软件体系流程图104.3程序代码12第五章电子时钟调试与仿真155.1HEX文件的生成155.2道理图的绘制155.3调试与仿真16第六章停止语18参考文献19第一章绪论课题简介数字钟是采取数字电路实现对时,分,秒数字显示的计时装配,因为数字集成电路的成长和石英晶体振荡器的普遍应用,使得数字钟的精度,远远超出老式钟表,钟表的数字化给人们生产生涯带来了极大的便利,并且大大地扩大了钟表的报时功效.数字钟已成为人们日常生涯中的必须品,普遍用于家庭.车站.船埠.剧院.办公室等场合.给人们的生涯.进修.工作带来极大的便利[1].不但如斯,在现代化的过程中,也离不开电子钟的相干功效和道理,比方机械手的控制.家务的主动化.准时主动报警.按时主动打铃.时光程序主动控制.准时广播.主动启闭路灯等,这些都是以钟表数字化为基本的.并且是控制的焦点部分.是以,研讨数字钟及扩大其应用,有着异常实际的意义.数字电子钟的设计办法有多种,例如,可用中小范围集成电路构成电子钟,也可以应用专用的电子钟芯片配以显示电路及其所须要的外围电路构成电子钟还可以应用单片机来实现电子钟等等.这些办法都各有特色,个中,应用单片机实现的电子钟具有编程灵巧,便于功效扩充,精确度高级特色[2].基于以上剖析,在此次设计中,我选择的是应用单片机制造电子钟.电子钟的设计本身包含程序的设计和硬件电路的设计[3].我的思绪是,先辈行电路的整体设计,再依据电路进行编程,在编程的过程中对电路进行微调,以更好的合营程序.调试成功后,再依据电路丹青出仿真图,将软件装入单片机芯片,应用Proteus软件进行仿真,仿真中的错误经由过程纠正程序的逻辑错误和电路中的设计不当进行消除,这个过程很艰苦的但也是很重要的.若仿真可以实现,则硬件电路的实现就可以有条不紊地进行.设计目标与请求经由过程本次工程实践,应用微机道理与接口技巧所学常识及查阅相干材料,完成对时光的计时并显示的设计,达到理论常识与实践更好联合.进步分解应用所学常识和设计才能的目标.经由过程本次设计练习,可以使我们在根本思绪和根本办法上对基于MCS-51单片机的嵌入式体系设计有一个比较感性的熟习,并具备必定程度的设计才能.设计一个有“时”.“分”.“秒”(23:59:59)显示的数字电子钟.设计要点具体如下:1)设计一个脉冲旌旗灯号产生电路;2)设计24进制.60进制计数器;3)设计译码显示电路;4)时光以24小时为一个周期,显示时.分.秒.数字电子钟实际上是一个对尺度频率进行计数的计数电路,它的计时周期为24小时,显示满刻度为23时59分59秒.一个简略的数字钟电路重要由译码器显示器.译码器.计数电路.组合逻辑电路以及振荡器构成. 旌旗灯号由振荡器产生,经由过程计数器传到译码器,再由译码显示器显示,如许就可以看到时光变更了.1.4设计义务在本次工程实践中,重要完成如下方面的设计义务:1)扼要综述单片机技巧成长的国表里近况;2)控制MCS-51系列某种产品(例如8031)的最小电路及外围扩大电路的设计办法;3)懂得单片电子时钟的功效及工作过程;4)完成重要功效模块的硬件电路设计及须要的参数肯定;5)用一种盘算机画图软件完成道理电路的绘制;6)完成体系设计解释书(页数不低于10页).全部设计总共分为四个章节,第一章是媒介部分,重要介绍了设计单片机电子时钟的意义.目标及重要内容;第二章对单片机作了扼要解释,介绍了单片机的成长史,并对电子钟的特色以及道理作了扼要解释.第三章是体系的总体设计阶段,这一部分重要介绍了体系的整体功效,绘制出体系的整体构造框图.别的按照各部分实现的功效不合,将全部体系分成了三个功效块,并对每一个功效块所采取的元器件进行了具体介绍.第四章是体系具体设计阶段,对每一个功效块的芯片图进行了具体的解释,对每一个引脚的接线都进行了具体的设计,此外还编写了重要功效模块的根本程序,详尽阐述了各模块的工作过程.第二章电子时钟体系简介单片机简介单片机是指一个集成在一块芯片上的完全盘算机体系.尽管它的大部分功效集成在一块小芯片上,但是它具有一个完全盘算机所须要的大部分部件:CPU.内存.内部和外部总线体系,今朝大部分还会具有外存.同时集成诸如通信接口.准时器.实不时钟等外围装备.而如今最壮大的单片机体系甚至可以将声音.图像.收集.庞杂的输入体系集成在一块芯片上. 2.2 单片机的成长史单片机诞生于20世纪七十年月末,阅历了SCM.MCU.SOC三大阶段.起先模子1.SCM即单片机微型盘算机阶段(Single Chip Microcomputer),主如果追求最佳的单片机形态嵌入式体系的最佳体系构造.“创新模式”获得成功,奠基了SCM与通用盘算机完成不合的成长道路.在首创嵌入式体系自力成长道路上,Intel公司功不成没.2.MCU即微控制器(Micro Controller Unit)阶段,重要的技巧成长偏向是:不竭扩大知足嵌入式应用时,对象体系请求的各类外围电路与接口电路,突显其对象的智能化控制才能.它所涉及的范畴都与对象体系相干,是以,成长MCU的重担不成防止的落在电气.电子技巧厂家.从这一角度看,Intel逐渐淡出MCU的成长也有其客不雅身分.在成长MCU方面,最有名的厂家当属Philips公司.Philips公司以其在嵌入式应用方面的伟大优势,将MCS-51从单片机微型盘算机成长到微控制器.是以,当我们回想嵌入式体系成长道路时,不要忘却Intel和Philips的汗青功劳.嵌入式体系单片机是嵌入式体系的自力成长之路,向MCU阶段成长的重要身分,就是追求应用体系在芯片上的最大化解决;是以,专用单片机的成长天然形成了SoC化趋向.跟着微电子技巧.IC设计.EDA对象的成长,基于SoC的单片机应用体系设计会有较大的成长.是以,对单片机的懂得可以从单片机微型盘算机.单片微控制器延长到单片机应用体系.如今高精度的计时对象大多半都应用了石英晶体振荡器,因为电子钟.石英钟.石英表都采取了石英技巧,是以走路精度高,稳固性好,应用便利,不须要经常调试,数字式电子钟用集成电路计不时,译码代替机械式传动,用液晶显示器代替指针显示进而显示时光,减小了计时误差,这种表具有时.分.秒显示时光的功效.一个根本的数字钟电路体系重要有秒旌旗灯号产生器.“时.分.秒”计数器.译码器及显示器.电路构成.秒旌旗灯号产生器是全部体系的时基旌旗灯号,它直接决议计时体系的精度,一般用石英晶体振荡器加分频器来实现,在此我们用准时器.将准时器与电阻.电容按照准时器构成多谐振荡器图接线,构成一个输出1秒的尺度脉冲,将尺度秒旌旗灯号送入“秒计数器”.第三章体系总体设计及硬件设计单片机芯片选择计划计划一:AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压.高机能CMOS 8位微处理器,俗称单片机.AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机.单片机的可擦除只读存储器可以重复擦除1000次.该器件采取ATMEL高密度非易掉存储器制造技巧制造,与工业尺度的MCS-51指令集和输出管脚相兼容.因为将多功效8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本.AT89C51单片机为许多嵌入式控制体系供给了一种灵巧性高且价廉的计划.计划二:AT89S52是一个低消费,高机能CMOS8为单片机,片内含4k Bytes ISP的可重复撰写1000次的Flash只读程序存储器.重要机能有:与MCS-51单片机产品兼容.全静态操纵:0Hz~33Hz.三级加密程序存储器.32个可编程I/O口线.三个16位准时器/计数器.八个中止源.全双工UART串行通道.掉落电后中止可叫醒.看门狗准时器.双数据指针.掉落电标识符.易编程.因为只须要实现显示时光简略的功效,两个单片机就能很好的实现该功效.我们优先斟酌单片机的成本所以选择计划一.3.2 数码管显示选择计划.1 数码管显示工作道理数码管是一种把多个LED显示段集成在一路的显示装备.有两种类型,一种是共阳型,一种是共阴型.共阳型就是把多个LED显示段的阳极接在一路,又称为公共端.共阴型就是把多个LED显示段的阴极接在一路,即为公共商.阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极.平日的数码管又分为8段,即8个LED显示段,这是为工程应用便利如设计的,分离为A.B.C.D.E.F.G.DP,个中DP 是小数点位段.而多位数码管,除某一位的公共端会衔接在一路,不合位的数码管的雷同端也会衔接在一路.即,所有的A段都邑连在一路,其它的段也是如斯,这是实际最经常应用的用法.数码管显示办法可分为静态显示和动态显示两种.静态显示就是数码管的8段输入及其公共端电平一向有用.动态显示的道理是,各个数码管的雷同段衔接在一路,合营占用8 位段引管线;每位数码管的阳极连在一路构成公共端.应用人眼的视觉暂留性,依次给出各个数码管公共端加有用旌旗灯号,在此同时给出该数码管加有用的数据旌旗灯号,当全段扫描速度大于视觉暂留速度时,显示就会清楚显示出来..2 数码管计划及选择计划一:静态显示.静态显示,即当显示器显示器显示某一个字符时,响应的发光二极管恒定导通或截止.该方法每一位都须要一个8位输出口控制.静态显示时较小电流能获得较高的亮度,且字符不闪耀.但因当所需实际的位数较多时,静态显示所需的I/O口数较大,造成资本的糟蹋.计划二:动态显示.动态显示,即列位数码管轮流点亮,对于显示器列位数码管,每隔一段延不时光轮回点亮一次.应用人的视觉暂留功效可以看到全部显示,但须包管扫描速度足够快,人的视觉暂留功效才可觉察不到字符闪耀.显示器的亮度与导通电流.点亮时光及距离时光的比例有关.调剂参数可以实现较高稳固度的显示.动态显示节俭了I/0口,下降了能耗.从节俭单片机芯片I/O口和下降能耗的角度动身,本数字电子钟数码管显示选择采取计划二.本数字电子钟设计所需电源电压为直流.电压值大小为5V的电压源.从硬件什物设计简略单纯程度与经费方面斟酌,用两节电压值为2.5V干电池与电路电压源引脚相衔接即可达到硬件设计请求.即本数字电子钟设计用两节电压值大小 2.55V干电池做硬件电路电压源.单片机芯片可应用内部时钟和外部时钟电路两种方法产生电路所需的时钟脉冲,内部时钟电路实现可用石英晶体和微调电容外接即可达到,外部时钟电路实现须要一个外部脉冲源引入脉冲旌旗灯号以包管单片机之间时钟旌旗灯号的同步.从赢家实现的难易程度斟酌,内部时钟电路的实现比外部时钟电路的实现更简略轻易.即本数字电子钟设计所须要的时钟源采取内部时钟电路实现.所用准时方法为工作方法1.石英晶振为12M,即最小准不时光为1us,最大准不时光约为65.5ms,其电路图如下图3.1所示.该设计只用了一个键盘,但实现的功效倒是比较完美,削减了硬件资本的损耗, 该键盘可以实现小时和分钟的调节以及控制是否进入省电模式.当按键按下又松开,可以实现屏障数码管显示的功效,达到省电的目标;直接按下不松开,则可以经由过程按键实现分钟的累加,每按一次分钟加一;而持续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一.达到时光调节的目标.如图3.2所示.数字电子钟设计的显示模块用8个认为数码管实现,也可用两个四位一体数码管实现.两种实现方法实现方法实现后果一样.从什物制造的难易程度出,本数字电子钟设计采取一个8位数码管实现,本数字电子钟设计采取AT89C51单片机芯片作为中心控制器,实现旌旗灯号的输出.LED的显示及相干的控制功效,依据总体的设将所须要的元件列出如下,表3.1.第四章电子时钟软件设计软件体系模块功效扼要介绍本设计的软件体系重要采取以下根本模块来实现,主程序.中止办事程序.键盘输入程序模块.数码管及其驱动模块和延时模块.主程序:重要用于对输入旌旗灯号的处理.输出旌旗灯号的控制和各个功效程序模块的应用及其控制,中止办事程序:重要用于电子钟的精确运行.数据输入过程中的闪耀.键盘输入程序模块:主如果用于肯定按键并得到特定的数码值.数码管及其驱动模块:主如果用于驱动数码管及利亚数码管显示时光.延时模块:程序中有两种延时子程序,一种是短延时用于断定键按劣等,一种是长延时.4.2 软件体系流程图体系软件采取C说话按模块化方法进行设计,然后经由过程Keil软件开辟平台将程序进行编译生成HEX文件.接着应用Proteous将文件导入进行仿真,显示仿真成果.软件流程图如图4.1所示.图4.1 电子钟的程序流程图4.3 程序代码依据程序流程图应用C说话对程序进行编程,程序代码如下所以.#include"reg51.h"#define uchar unsigned char#define uint unsigned intcode uchar d[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uint second=0,minter=50,hour=11;uint sshi,sge,mge,mshi,hshi,hge;static char court=0;sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P24=P2^4;sbit P25=P2^5;sbit P26=P2^6;sbit P27=P2^7;sbit P20=P2^0;void delay(){ //单个LED延时函数uchar i;for(i=0;i<15;i++);}void int1()interrupt 1 using 2{ //准时中止响应定50msTH0=0x4c;TL0=0x00;court++;}void main(){ //主函数TMOD=0x01;TH0=0x00;TL0=0x00;EA=1;ET0=1;TR0=1;P1=0XFF;for(;;) {sshi=second/10; //求分秒的个位;sge=second%10;mshi=minter/10;mge=minter%10;hshi=hour/10;hge=hour%10;P0=d[sge]; //时分秒在LED的显示P27=1; //P0口数据输出,P2口选通旌旗灯号delay();P27=0;P0=d[sshi];P26=1;delay();P26=0;P0=0xbf;P25=1;delay();P25=0;P0=d[mge];P24=1;delay();P24=0;P0=d[mshi];P23=1;delay();P23=0;P0=0xbf;P22=1;delay();P22=0;P0=d[hge];P21=1;delay();P21=0;P0=d[hshi];P20=1;delay();P20=0;if(court==20){ //准时1s的时光是否到?若到,则履行IF后面的程序; court=0; //履行LED显示程序second++;if(second==60){second=0;minter++;if(minter==60){minter=0;hour++;if(hour==24)hour=0;} }}}}第五章电子时钟调试与仿真5.1 HEX文件的生成1)打开单片机软件开辟体系单击菜单中的“Project”,在此下拉菜单中单击“New Project”选项后,弹出“Create New Project”对话框,键入新建项目名称.2)键入新建项目名并单击“肯定”按钮后,在弹出的“Slect Devic”对话框中选择适合的单片机型,如AT89C51.3)单击菜单中的“File”,在此下拉菜单下,选择“New”后,打开一个空的文本编辑窗口,在此窗口中输入程序,创建新的源程序“dzz.C”文件.4)在左边的“Project”窗口的“File”页中单击文件组,再单击鼠标右键后,在弹出的窗口中选中“Add File to Group ‘Source Group 1’”选项,将“dzz.C”程序导入到“Source Group 1”中.5)在“Project”下拉菜单中,选中“Options for Target”,将会弹出“Option for Target”对话框,在此对话框中选中“Output”选项卡中的“Creat HEX File”选项.6)在“Project”下拉菜单中,选择“Rebuild all Target files”项.若程序编译成功,将生成“dzz.HEX”文件.5.2 道理图的绘制1)在Proteus ISIS 编辑窗口中,单击元件列表之上的“P”按钮,添加所须要的元件.2)在Proteus ISIS编辑窗口中,绘制电路图.如图5.1所示.图5.1 电子钟电路图5.3 调试与仿真1)在Proteus ISIS编辑窗口中,单击鼠标右键将AT89C51单片机选中并单击鼠标左键,弹出“Edit Component”对话框,在此对话框的“Clock Frequency”栏中设置单片机晶振频率Vision 2s生成的“dzz.HEX”为12MHz,在“Program File”栏中单击文件,选择先前用Keil文件.2)在Proteus ISIS编辑窗口中“File”下拉菜单“Save Design”选型,保管设计,生成“dzz.DSN”文件.3)在Proteus ISIS编辑窗口中单击“Debug”菜单中选择“Execute”,可看见在初次运行时,LED显示的初始值为11-50-00,然后每隔1s进行累计显示,运行成果如图5.2所示.图 5.2 电子钟设计的运行成果第六章停止语本单片机数字电子钟体系的功效根本相符显示格局为:XX:XX:XX, 即时:分:秒.时光可采取24小时制.体系上电后从上电时初始化显示: 11-50-00开端计时,能进行时光的调剂,可按本身的请求设置扩大的小键盘个数设计义务的请求,经由测试数据显示, 体系的靠得住性已经基本性够达到实际电子钟的设计请求,同时本单片机数字电子钟体系具有扩大性.课程设计是造就学生分解应用所学常识,发明实际问题.提出实际问题.剖析息争决实际问题,锤炼实践才能的重要环节,是对学生实际进修才能.着手才能的具体练习和考核过程. 在此次数字钟设计过程中, 在进修新常识的同时,把在课程中学到的理论常识应用到实际作品设计.操纵中,更进一步地熟习了单片机芯片的构造及控制了其工作道理和具体的应用办法与相干元器件的参数盘算办法.应用办法,懂得了电路的开辟和制造及课程设计陈述的编写.加深了对相干理论常识及专业常识的控制度,加强自身的着手才能,锤炼及进步了懂得问题.剖析问题.解决问题的才能,更深入的领会到了理论接洽实际的重要性,进一步控制画图软件的应用和进步响应的画图操纵程度及技能.参考文献[1] 李广弟,朱月秀,冷祖祁.单片机硬件构造[J].页码148.[2] 李叶紫,王喜斌,胡辉.MCS_51 单片机应用教程[M].清华大学出版社,2004,3[3] 李叶紫等.MCS-51单片机应用教程[M].清华大学出版社,2004,3。

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

基于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秒,另外还有校时功能。

51单片机制作的电子时钟的proteus仿真

51单片机制作的电子时钟的proteus仿真

通过proteus仿真51单片机制作的电子钟----------by lyz这是一个利用proteus仿真简易电子钟的例子,通过c51单片机和一块1602液晶显示屏来工作,十分简单,这样的实践是初学者不错的练习。

第一步:首先,点开isis.exe(切记不是ARES.EXE),如图1通过proteus把原理图布好。

单片机可以选用AT89c51,液晶显示可通过搜索关键字LM016L得到。

由于本电路选用P0口,因此加上了RP1排阻作为上拉电阻。

图1第二步:编写程序如下,时间略有误差(us级),可通过keil中的debug调试地更为精确:#include<reg52.h>typedef unsigned char uchar;typedef unsigned int uint;sbit rs=P3^2;sbit wr=P3^3;sbit lcden=P3^4;uchar timecount=0;void delay(uint i){uint a,b;for(a=i;a>0;a--)for(b=10;b>0;b--);}/********************1602*****************/ void write_com(uchar com){P0=com;rs=0;lcden=0;delay(10);lcden=1;delay(10);lcden=0;}void write_date(uchar date){P0=date;rs=1;lcden=0;delay(10);lcden=1;delay(10);lcden=0;}void init(){wr=0;write_com(0x38);delay(20);write_com(0x0f);delay(20);write_com(0x06);delay(20);write_com(0x01);delay(20);}/*********************************************************主函数**********************************************************/void main(){uchar a,second=0,minute=0,hour=0;uchar table[8];TMOD|=0x01; //定时/计数器0工作于定时器模式,方式1TH0=(65536-5000)/256;TL0=(65536-5000)%256; //50ms定时常数EA=1; //开总中断ET0=1; //允许定时/计数器0 中断TR0=1; //启动定时/计数器0 中断P0=0;P2&=0x1F;init();while(1){if(timecount>19) //*****20乘50为1000ms {timecount=0;second++;}if(second==60){second=0;minute++;}if(minute==60){minute=0;hour++;}if(hour==24){hour=0;}table[0]=hour/10+48; //***数字加上48对应的它的ascll码,用来显示在液晶上table[1]=hour%10+48;table[2]=58; //***58对应冒号table[3]=minute/10+48;table[4]=minute%10+48;table[5]=0;table[6]=second/10+48;table[7]=second%10+48;write_com(0x80);delay(20);for(a=0;a<8;a++){write_date(table[a]);delay(20);}}}/*********************************************************中断服务函数**********************************************************/void Time0(void) interrupt 1 // using 0{TH0=(65536-5000)/256;TL0=(65536-5000)%256; //50ms定时常数timecount++;}/*********************************************************/第三步:双击电路图中的单片机,如下添加hex文件。

Proteus电子钟仿真实验高清版.pdf

Proteus电子钟仿真实验高清版.pdf
1.4 电子钟显示方案
(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仿真的数字钟.docx

基于proteus仿真的数字钟.docx

文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.摘要数字钟是一个对1Hz频率进行计数的电路。

振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,显示出时间。

秒计数器电路计满60 后触发分计数器电路,分计数器电路计满60 后触发时计数器电路,当计满24 小时后重零开始计数。

一般由振荡器、分频器、计数器、译码器、数码显示器等几部分组成。

振荡电路:主要用来产生时间标准信号。

石英晶体振荡器可以提高时间信号的稳定度。

分频器:振荡器产生的标准信号频率很高,要得到“秒”信号,需一定级数的分频器进行分频。

计数器:有了“秒”信号,则可以根据 60 秒为 1 分, 24 小时为 1 天的进制,分别设定“时”、“分”、“秒”的计数器,分别为60 进制,60 进制,24 进制计数器,并输出一分,一小时,一天的进位信号。

译码显示:将“时”“分”“秒”显示出来。

将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。

关键词数字钟振荡计数校正目录1. 前言 .........................................................................................................错误!未定义书签。

2.系统总体方案设计 ..................................................................................错误!未定义书签。

2.1方案比较 ..........................................................................................................错误 !未定义书签。

2.2方案选择 ..........................................................................................................错误 !未定义书签。

  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分钟)。

相关文档
最新文档