电子跑表课程设计.docx

上传人:飞猪 文档编号:506812 上传时间:2025-07-29 格式:DOCX 页数:20 大小:150.42KB
下载 相关 举报
电子跑表课程设计.docx_第1页
第1页 / 共20页
电子跑表课程设计.docx_第2页
第2页 / 共20页
电子跑表课程设计.docx_第3页
第3页 / 共20页
电子跑表课程设计.docx_第4页
第4页 / 共20页
电子跑表课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、数字钟与电子跑数字跑表是人们日常生活中比拟常见的工具,应用也比拟广泛。本课题的主要内容是用AT89C51单片机为核心,配备7段数码显示模块等功能模块设计一款数字跑表,要求用数码管可以显示百分秒、秒、分,具有暂停启动功能和重新开始功能。本文的核心主要有硬件设计和软件编程两个大的方面。硬件电路设计主要包括中央处理单元电路、时钟电路、人机接口电路、信号处理电路、执行电路等几局部。软件编程用C语言来实现,主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。程序编译可用kei1软件实现,电路功能仿真用Proteus软件实现。关键词:数字跑表;单片机;数码显示管AbstractThedigitals

2、topwatchiscommoninthedailylife,theApplicationsalsoarebroad.ThisissuestopicisdesignsasectiondigitalstopwatchtaketheAT89C51one-chipcomputerasthenucleus,providesthesevensectionsdigitaldisplayfunctionmoduleandsoon,requestwithdigitaltubecandisplaythe100seconds,seconds,minutes,anditmusthassuspendedstartup

3、functionandrestartfunction.Thisarticlenucleusmainlyincludesthehardwaredesignandsoftwareprogramtwobigaspects.Thehardwarecircuitdesignmainlyincludescentralprocessingelementelectriccircuit,clockelectriccircuit,man-machineconnectionelectriccircuit,clockelectriccircuit,carringouttheelectriccircuitseveral

4、partsandsoon.SoftwareprogrammingrealizationwiththeClanguage.Mainlyincludesthemainprogram,keyboardscanningsubroutine,timeestablishmentsubroutinesoftwaremoduleandsoon.Theprogramcompiledkeilsoftwaretorealize,usablewithProteuscircuitfunctionsimulationsoftwarerealization.KeyWordsDigitalstopwatch;Digitald

5、isplaymodule;One-chipcomputer目录摘要IAbstractII第一章概述1第二章数字钟与电子跑表设计方案22.1 基于分立式元件的数字钟与电子跑表设计22.2 基于单片机的数字钟与电子跑表设计22.3 方案分析比拟2第三章硬件设计33.1 单片机的根本结构33.2 复位电路43.3 时钟电路43.4 按键电路及1.ED显示电路43.5 总电路原理图5第四章电路的软件设计64.1 主程序流程图64.2 中断效劳程序流程图6第五章系统调试与仿真分析85.1 硬件调试85.2 软件调试8总结10致谢H参考文献12附录A:原理图13附录B:源程序14第一章概述在信息技术急速开

6、展的今天,计算机科学日新月异。而单片机作为计算机科学的一个分支,在微机控制领域得到长足开展。在计算机网络,通讯方面是微机的天下;而在微控制领域,小到电子表,大到家用电器,到处都有单片机的用武之地。目前,单片机正朝着高性能和多品种方向开展趋势将是进一步向着CMoS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面开展。下面是单片机的主要开展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大局部功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命用单片

7、机来设计数字钟,软件实现各种功能比拟方便,更为方便的是这种电子钟同时具有跑表的功能。设计的特点是通过一个键来控制电子时钟与跑表的选择。设计要求:1)利用单片机组成数字钟与电子跑表(2)利用4位1.ED显示器显示数字钟的时,分,秒用时分间的小数点闪烁指示;跑表秒为单位,格式*.*(3)数字钟与跑表通过一个“钟/表”键乒乓切换4)通过“时”键与“分”键分别校正时和分,每按一次对应加1,跑表状态下这两个键无效。(5)跑表状态下,按“开始”键计时,“停止”键停止,数字钟状态下这两键无效。第二章数字钟与电子跑表设计方案2.1 基于分立式元件的数字钟与电子跑表设计利用数电知识,设计一个数字钟与电子跑表电路

8、时序脉冲源由555定时器构成的多谐振荡器,设置特定的参数可以产生频率为100HZ的时序脉冲,为计数器提供时序脉冲,使之计数。计数器由4个741.S90芯片十进制计数器组成,通过芯片间的连接实现计时电路。计数器输出连接译码器,译码器再连接数码管,起显示作用。逻辑门控制计数器的启动/暂停及清零。接通电源后,将启动开关打到低电平端,电路即开始计时,将开关打到高电平端,电路就暂停计时;清零开关打到高电平,计时清零。这样就实现了数字跑表的各项根本功能。2.2 基于单片机的数字钟与电子跑表设计利用所学单片机知识,组成一个数字钟与电子跑表。在设计中主要用到了定时计数器TO、Tl,键盘扫描。其中定时计数器T

9、o在电子钟局部使用,在定时中断局部完成时、分、秒的自动循环增加。计数器Tl在跑表局部使用,功能和To定时计数器相同,完成跑表个、十、百、千位的自动循环增加。键盘扫描程序在数字钟局部用到,它的主要作用是通过扫描是否有“时”、“分”按钮的按下,从而控制时、分位的人为校正。2.3 方案分析比拟通过利用单片机设计的数字钟与电子跑表,可以实现更精确的走时及调整功能,时钟信号是由单片机内部的定时器产生,通过软件的计数和软件的译码,以动态扫描方式将数值显示在数码管上面。通过按键的检测可以控制单片机的相应动作,比方案一设计更加简便易懂,因此选择方案二进行设计。第三章硬件设计3.1单片机的根本结构MCS-51单

10、片机内部结构8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,如图3.1所示。现在分别加以说明:图3.1单片机内部结构中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM)8051内部有128个8位用户数据存储单元和128个专J用存放器单元,它们是统一编址的,专用存放器只能用于二二存放控制指令数据,用户只能访问,而不能用于

11、存放用户二二数据,所以,用户能使用的RAM只有128个,可存放读写二二的数据,运算的中间结果或用户定义的字型表。二一二程序存储器(ROM):二二8051共有4096个8位掩膜ROM,用于存放用户程序,一原始数据或表格。二二二定时/计数器(ROM):二二8051有两个16位的可编程定时/计数器,以实现定时I一或计数产生中断用于控制程序转向。图32AT89C51引脚图并行输入输出(I/O)口:8051共有4组8位IO(POPl、P2或P3),用于对外部数据的传输。全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行既可以用作异步通信收发器,也可以当同步移位器使用。

12、AT89C51引脚小意图如3.2所TriQ3.2复位电路MCS-51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。上电复位:上电复位电路是一种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统平安

13、可靠的复位,RST引脚的高电平信号必须维持足够长的时间。电路图如图3.3所示。图3.3复位电路示意图自动复位是通过外部复位电路的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。3. 3时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。电路图如图3.4所示。图3.4时钟电路示意图MCS-51单片机内部后ImJ1.M休切命hjWj增益反相放大器,该IwJ

14、增益反向放大器的输入端为芯片引脚XTA1.1,输出端为引脚XTA1.2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。3.4 按键电路及1.ED显示电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能到达稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-1OmS之间。为了防止CPU屡次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态

15、不会产生互相影响。按键电路图如图3.5所示。图3.5按键电路示意图1.ED静态显示接口电路由笔仅13问以计命、文5枚呼得器(由软件译码的1.ED静态显示驱动电路不需要笔段译码器)等局部组成,本设计采用s855O来对1.ED显示进行控制,由于protuse元件库原因故采用2N5551来代替。具体的1.ED显示电路如下列图3.6所示。图3.61.ED显示电路示意图字型与字段关系如下表3.1所示。显示字符gfedCba字型码共阴极共阳极001111113FHCOH1000011006HF9H210110115BHA4H310011114FHBOH4110011066H99H511011016DH92

16、H611111017DH82H7000011107HF8H811111117FH80H911011116FH90HA111011177H88HB11111007CH83HC011100139HC6HD10111105EHAlHE111100179H86HF111000171H8EH表3.11.ED显示字型与字段关系表3.5 总电路原理图根据设计思路,设计出电路总原理图。如附录所示。第四章电路的软件设计4.1 主程序流程图程序的起始地址:MCS-51单片机复位后,1Pe)=OOOOH,而OOo3H-002B分别是各中断源的入口地址。所以,编程时应在OOooH处写一条跳转指令。当CPU接收到中断请

17、求信号并予以响应后,CPU把当前的PC内容压入栈中进行保护,然后转入响应的中断效劳程序入口处执行。其具体流程图如图4.1所示。开始4.2 中断效劳程序流程窗一J设置变量、数码管显示代码选择定时器T0,用土作方式l,T0零时IOmS中F,利用R7存放器减1,当R7存放器的值是0时,时设置定时器T1/T0的工作方式卜十数,当RO=100时,时间刚好是1s,再利用Rl存放器计数60s,层次类推,一笔十薇钟的是时间值,需要用到一下几人右品IWT1/T0装初值R7:累计0.1s时间存放器。IEC二R7=R7J,计数10次向30H进位,并将R7开总中断置2。-T-30H:累计IS时间存放器。兰开外部中叫3

18、1H进位,然后将30H清零。31H:累计60s时间存放电。当31g=60s时,,30H、31H清零。以下用R5、R6用于跑表J一开定时器中断R5:累计IOS时间存放器。当RS=IE舟-名【PA进位,然后将R5清零。调用按键函数R6:累计100OS时间存贰簟悬?,/R6清零。42H:为标志位存放器。一、田中匚:7物计数器都计数,42H=O时,仅时钟计数调用显示函数器计数。1启动跑表时,Tl计时到0.1SMI瓮=1.那么在时钟计数器工作的同时,跑表计数器也在工作,并将跑表计新贝古出剂白二建、丸B号示。具体流程图如图4.2和图4.3所示。图4.1主程序流程图返回返回图4.2外部中断1流程图图4.3外

19、部中断O流程图第五章系统调试与仿真分析5.1硬件调试硬件调试的主要任务是排除硬件故障,其中也包括了设计错误和工艺性故障。(1)脱机检查:用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的接线检查,看其接线是否正确;检查数据总线,地址总线和控制总线是否有短路等故障,顺序是否正确;检查各个开关按键是否能够正常翻开,是否连线正确;各限流电阻是否短路等。为了保护芯片,应先对各IC座(尤其是电源端)电位进行检查,确定无误后在插入芯片检查。(2)联机检查暂时拔掉芯片,将仿真器的40芯片仿真插头插入8051的芯片插座进行仿真,检验显示电路是否满足设计要求。可以通过一些简单的测试软件来查

20、看接口是否正常。5.2软件调试软件调试的任务是利用软件的开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。程序的调试应该一个模块接一个模块地进行,首先单独调试各共能子程序,检查程序是否能够实现预期的功能,接口电路的控制是否正确等;最后是逐步将各个子程序连接起来总调试。联调需要注意的是:各个子程序间能否正确传递参数,特别需要注意各个子程序的现场保护与恢复,调试的根本步骤如下:(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。(2)运行主程序,调试计时模块,不接任何键.软件调试及仿真结果图如下所示:总结为期两周的单片机课程设计已经接近尾声了。记得刚拿到设计课题

21、时,觉得这个题目太简单了,不就是一个电子跑表吗!非常熟悉的东西啊。可是当真正投入设计时,很多问题出来了。本次课程从根本方案的制定,再到硬件电路的选择,到制作电路完成,最后进行程序调试。在此期间我遇到很多困难,尤其是在做仿真时结果经常出不来。经过仔细检查,仿真线路是没有错的,可结果就是不行。但当我将实物做出来后,进行了调试,实物上却可以出来成果。这说明了可能是仿真软件的。经过一次又一次品尝到了解决问题的喜悦,最终提前完成了要求的全部功能,并在空闲的时间里参加了一些创新的局部。在这次设计中遇到的问题及解决方法:(1)在实现跑表的功能时,时钟是不能停止的,否那么显示的时间就会不正确。因此我们使时钟的

22、中断优先级高于秒表的优先级,在执行跑表程序时,会被时钟中断程序中断,但这会使跑表的时间产生误差,这是不可防止的,因为单片机每次只能执行一个任务,所以我们只能尽量减少误差。解决的方法:使时钟的中断周期大于跑表的中断周期(时钟每中断一次为125InS,跑表每中断一次为100ms),这样误差会相对减少些。(2)单片机口线不够(在该次设计为简单起见中没有扩展1/0口),造成口线不够的原因是,译码显示电路设计不合理。起初我采用的译码显示块是不带锁存功能的,所以要接锁存芯片,从而造成了口线的浪费。后来我采用了CD4511,它是集锁存、译码、驱动功能于一体的。这样就节省了很多I/O口。(3)程序调试时也出现

23、了许许多多的问题,虽然程序本身的问题不大,但由于粗心录入程序时,将程序敲错,比方将0(零)和字母0混淆,还有中文标点符号和英文标点符号混淆等。这样的错误很难发现,以至于花费了很多时间。通过本次课程设计,不仅使我将课本上学到的理论知识的到了实践,从而稳固了知识。还使我了解了一个完整的系统是怎样开发的。致谢课程设计完成了,在这个过程中我学到了很多东西。首先我要感谢我的指导老师杨民生老师,他在我完成设计的过程中,给予了我很大的帮助。在设计开始的初期,我对于课程设计的结构以及文献选取等方面都有很多问题,整体构思不是很明确,段落层次也不是很清晰,老师详细给我分析课程设计的写作过程,从课程设计的题目,设计

24、的内容,设计的脉络,都给我详细的指导。在我设计的进展过程中,老师也及时给我解决疑惑,并且监督我设计的进展过程,非常感谢!我想,课程设计的过程不仅仅是一个完成一份课程设计的过程,而是一个端正态度的过程,是总结对单片机学习的一个过程,是在踏入社会前的历练过程。这个过程将使我受益匪浅!参考文献1张俊谟.单片机中级教程M.北京:北京航空航天大学出版社,20062谭浩强.C程序设计M.北京:清华大学出版社,20053彭介华.电子技术课程设计指导M.北京:高等教育出版社,20054康华光.电子技术根底数字局部(第五版)M.北京:高等教育出版社,20065康华光.电子技术根底模拟局部(第五版)M.北京:高等

25、教育出版社,20066骆新全.电路仿真与PCB设计.M.北京:北京航空航天大学出版社,2004.8附录A:原理图数字钟与电子跑表系统原理图,.kTEm.ECRYSTA1.:TEQx,FUDADU,口.INDI902KD2,QMDJP0UD加5DS也电D6WJftOlRll.3M-URl5-W一5F-K92QMnwP22OP23A11P24A!2,2SA3P26MP3J2Xff11P3期iiTPJVIDP3电J1.阳的里m疝附录B:源程序程序清单#include51头文件声明#include#defineucharunsignedChaI/宏定义#defineuintunsignedintsbi

26、tkeyl=PlO;sbitkey2=Pll;sbitkey3=Pl2;unsignedcharcodetab=OxcO,0xf19,0xa4,OxbO,0x99,0x92,0x82,0xf8,0x80,0x90);/共阳段码-charmiaoge,fenge,miaoshi,fenshi,haomiaoge,haomiaoshi,miao,fen,haomiao;/定义变量voidqo(void);清。函数声明延时子函数*voiddelay(uintz)(uintx,y;for(x=z;x0;x-)for(y=110;y0;y-);)voidkey()(if(key1=0)delay(5);

27、if(key1=0)TR0=l;)while(!keyl);delay(5);while(!keyl);if(key2=0)delay(5);if(key2=0)TR0=0;)while(!key2);delay(5);while(!key2);)if(key3=0)delay(5);if(key3=0)(qo();)while(!key3);delay(5);while(!key3);)*外部中断0*/*void1SRNTO(Void)interrupt0using1(TR0=!TR0;利用外部中断翻开和关闭定时器0用于开始和停止计时)*外部中断*利用外部中断清零voidISR_INTl(v

28、oid)interrupt2using1(if(TRO=O)停止时才可以清零qo();调用清零函数)*/*清零子程序*voidqo(void)(fen=0;赋值0miao=0;haomiao=0;haomiaoge=tabhaomiao%10;/-把十进制数分开显示-haomiaoshi=tabhaomiao/10;miaoge=tabmiao%10;miaoshi=tabfmiao/10;fenge=tabfen%10;fenshi=tabfen10;)/*显示子函数*/voiddisplay()PO=Oxff;先关闭,消隐P2=haomiaoge;送毫秒的低位段码PO=Oxef;翻开毫秒的

29、低位位选delay(l);延迟PO=Oxff;P2=haomiaoshi;送毫秒的高位段码PO=Oxdf;delay(l);PO=Oxff;P2=miaoge&0x7f;送秒的低位段码+小数点显示PO=Oxbf;delay(l);PO=Oxff;P2=miaoshi;/送秒的高位段码P0=0x7f;delay(l);PO=Oxff;P2=fenge&0x7f;送分的低位段码+小数点显示PO=Oxfe;delay(l);PO=Oxff;P2=fenshi;送分的高位段码PO=Oxfd;delay(l);)*主函数*/voidmain()(/*EX0=W/开夕卜部中断0ITo=1;/用电平触发EX

30、1=1;外部中断1设置ITI=1;/用电平触发*/TMoD=OXO1;定时器方式设置用定时TO的工作方式1TH0=(65536-lOooo)/256;/高八位赋初值T1.O=(65536-1OoOo)%256;低八位赋初值ETO=I:/翻开定时中断TRo=0;/启动定时器EA=1;/翻开总中断qo();调用清零函数While(I)进入死循环key。;display。;/调用显示函数)定时器中断1函数voidtim(void)interrupt1using11THo=(65536-10000)/256;高八位赋初值T1.o=(65536-10000)%256;/低八位赋初值haomiao+;定时

31、IoMS,定时器溢出haomiao加1if(haomiao=100)如果毫秒加满100即100*10毫秒=1秒haomiao=0;/毫秒清Omiao+;秒力口11if(miao=60)/如果加满60秒miao=0;秒清0fen+;分加1)if(fen=60)/如果加满60分(TRo=0;/停止定时器)U-把十进制数分开显示haomiaoge=labhaomiao%10;毫秒的低位haomiaoshi=tabhaomiao/10;/毫秒的高位miaoge=tabmiao%10;/秒的个位miaoshi=tabmiao/10;秒的十位fenge=tabfen%10;分的低位fenshi=tabfe

32、n10;/分的高位)/*测试*unsignedcharcodetab=0xc0,0xf19,0xa4,OxbO,0x99,0x92,0x82,0xf8,0x80,0x90);voiddelay(uchart)(uchark;while(t-)(for(k=0;kl15;k+);1)voidmain()PO=O;P2=tab0;delay(100);P0=l;P0=0;P2=tabl;delay(100);P0=l;P0=0;P2=tab2;delay(100);PO=I;PO=O;P2=tab3;delay(100);PO=I;PO=O;P2=(ab4;delay(100);PO=I;PO=O;P2=tab0;delay(100);PO=I;PO=O;P2=tab0;delay(100);PO=I;PO=O;P2=tab5;delay(100);PO=I;PO=O;P2=tab6;delay(100);PO=I;I*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 课程设计

宁ICP备18001539号-1