可任意启动停止的电子秒表设计eafn.docx
电子技术术课程设设计报告告可任意启启动/停停止的电电子秒表表设计学 院: 机械械与电子子工程学学院 年级专业业: 008级电电子信息息工程 学 号:姓 名:指导教师师:完成时间间: 20011.07.09 成 绩:摘 要要本系统为为基于AAT899C522单片机机,可任任意启动动/停止止的电子子秒表系系统。该该系统由由硬件和和软件组组成。系系统硬件件主要由由电源电电路、按按键、数码码管显示示电路及及其他辅辅助电路路组成;软件利利用Keeil工工具,采采用80051CC语言编编程。该系统统可以实实现0.01ss的精度度,以及及对运行行时间的的显示、启动或停止秒表等功能。关键词:单片机机;数码码管;按键目录1 设计计目的及及要求111.1 设计目目的和意意义11.2 设计任任务与要要求12 硬件件电路设设计12.1 总体方方案设计计12.2 功能模模块电路路设计222.2.1 单单片机的的选型222.2.2 振振荡电路路设计442.2.3 复复位电路路设计442.2.4 数数码管显显示电路路设计552.2.5 按按键电路路设计662.3 总电路路设计773 软件件系统设设计83.1 软件系系统总体体方案设设计83.2 软件流流程图设设计84 系统统调试995 总结结105.1 本系统统存在的的问题及及改进措措施1005.2心心得体会会11参考文献献11附录:系系统的源源程序清清单121设计目目的及要要求1.1 设计目目的和意意义当今,计计算机技技术带来来了科研研和生产产的许多多重大飞飞跃,微微型计算算机的应应用已渗渗透到生生产、生生活的各各个方面面。其中中单片微微型计算算机虽然然问世不不久,然然而体积积小、价价廉、功功能强,其其销售额额以每年年近800%的速速率增长长。他的的性能不不断提高高,适用用范围愈愈来愈宽宽,在计计算机应应用领域域已占有有日益重重要的低低位。秒表应用用于我们们生活、工工作、运运动等需需要计时时的方面面。钟表表的数字字化给人人们生产产生活带带来了极极大的方方便,而而且大大大的扩展展了钟表表原先的的报时功功能。它它由刚开开始的机机械式秒秒表发展展到今天天所常用用的数字字式秒表表。秒表表的计时时精度越越来越高高,功能能越来越越多,构构造也日日益复杂杂。电子子科技日日新月异异,人们们对现代代电子设设备的智智能化和和微型化化及其精精度提出出来更高高的要求求,本次次采用了了AT889C552单片片机,其其灵活性性和可靠靠性都相相对提高高。鉴于以上上要求,我我利用pprotteuss仿真软软件,设设计了一一款基于于AT889C552单片片机的可可启动/暂停的的秒表计计时系统统。1.2 设计任任务与要要求系统要求求6位LLED数数码显示示,计时时单位为为1/1100秒秒。利用用功能键键进行启启/停控控制。其其功能为为:上电电后计时时器清00,当第第一次(或或奇数次次)按下下启/停停键时开开始计数数。第22次(或或偶数次次)按下下该键时时停止计计时,再再一次按按启/停停键时清清零后重重新开始始计时。2 硬件件电路设设计2.1 总体方方案设计计电子秒表表系统主主要完成成对计时时实时的的显示,精精度达到到1/1100ss,以及及通过功功能键可可以使当当前计时时暂停或或重新计计时。系系统主要要包括晶晶振电路路、复位位电路、按按键电路路以及数数码管显显示电路路。系统采用用六个共共阴极数数码管,其其中八位位数据口口与单片片机的PP0口通通过744LS2245双双向总线线收发器器相接,可可增加PP0的驱驱动能力力。6个个片选信信号连接接单片机机P1口口的低六六位。该该电路可可满足对对计时时时间的显显示,最最后一个个最小显显示单位位为0.01ss,溢出出则向前前进位,显显示时间间的范围围为099999.999s。本本系统按按键采用用外部中中断的方方式,因因此按键键接入单单片机的的P3.2口,通通过下降降沿触发发方式来来控制计计时器的的启停。系统的整整体框图图如图11所示:图1 系系统整体体框图2.2 功能模模块电路路设计,2.2.1 单单片机的的选型由于本系系统只需需要单片片机完成成对计时时的显示示以及处处理由按按键产生生的中断断。对于于I/OO资源以以及处理理速度无无特殊要要求,故故选择AATMEEL公司司生产的的AT889C552单片片机,AAT899C522增加了了在线调调试功能能,即程程序可以以通过JJTAGG接口下下载,调调试和固固化,因因而该芯芯片的开开发不再再需要昂昂贵的硬硬件仿真真器,可可实现实实时仿真真,所有有的资源源都可以以为用户户所使用用,可以以在线编编程或在在系统编编程,更更进一步步地说,在在线编程程或在系系统编程程是开发发的系统统具有了了通过网网络进行行升级、维维护的潜潜在功能能。AT899C522的性能能及特点点1:l 与MCSS-511系列单单片机兼兼容。l 片内有88K可在在线重复复编程的的快速内内 存可擦擦写存储储器(FFlassh MMemoory)。l 存储器可可循环写写入/擦擦写1000000次以上上。l 存储器数数据保存存时间为为10年年以上。l 宽工作电电压范围围:Vccc可为为2.77V-66.5VV。l 全静态工工作:可可从0HHz-224MHHz。l 程序存储储器具有有三级加加密保护护。l 256字字节的内内部RAAM。l 32条可可编程II/O口口线。l 三个166位定时时器/计计数器。l 中断结构构具有55级(66级)中中断源和和两个优优下级。l 可编程全全双工串串行通讯讯。l 空闲维持持低功耗耗和掉电电状态保保护存储储数据。 AT889C552引脚脚图如图图2所示示。图2 AT889C552引脚脚图VCC: +55V电源源输入GND:接地P0口是是一个双双向8位位三态II/O口口,每个个口可独独立控制制。使用用时需外外接上拉拉电阻。P1口是是一个准准双向88位I/O口,它它的功能能是单一一的,只只能用作作数据的的输入或或者输出出。P2口是是一个准准双向88位I/O口,输输出时,从从P2.x端口口可输出出CPUU写到锁锁存器上上的信号号。当该该接口用用做数据据输入接接口是,应应先向该该位写11,然后后,读该该位即可可读入输输入数据据。P3口是是具有第第二功能能的准双双向8位位I/OO口。ALE/PROOG:地地址所存存/编程程信号线线。当PP0口工工作在第第二功能能时从该该端口可可复用工工作,某某时刻该该端口可可以送出出地址信信号A00A77,而另另外的时时刻该端端口传送送的是数数据信号号D0D7。利利用ALLE可以以将地址址信号AA0AA7锁存存到地址址锁存器器。/VPPP:该控控制信号号线也具具有双重重功能,是是允许访访问片外外ROMM/编程程高电压压引线。:程序存存储器允允许输出出控制端端,常用用作片外外ROMM的读控控制信号号,低电电平有效效。RESEET:复复位引脚脚,当该该端加上上超过224个时时钟周期期的高电电平时,可可是80051复复位。系系统复位位电路如如图2.3所示示。X1、XX2:外外接时钟钟引脚。XX1为片片内振荡荡电路的的输入端端,X22为片内内振荡电电路的输输出端。2.2.2 振振荡电路路设计AT899C522内部有有一个用用于构成成片内振振荡器的的高增益益反相放放大器, 振荡荡器产生生的信号号送到CCPU, 作为为CPUU的时钟钟信号,驱动CCPU产产生执行行指令功功能的机机器周期期。引脚脚XTAAL1和和XTAAL2是是此放大大器的输输人端和和输出端端。这个个放大器器与作为为反馈元元件的片片外石英英晶体或或陶瓷谐谐振器一一起可构构成一个个自激振振荡器, 振荡荡电路的的连接如如图所示示图8所所示,外外接石英英晶体或或陶瓷谐谐振器以以及电容容C1和和C2构构成并联联谐振电电路, 接在放放大器的的反馈回回路中。对对外接电电容C11和C22的值虽虽然没有有严格的的要求, 但电电容的大大小多少少会影响响振荡器器频率的的高低、振振荡器的的稳定性性、起振振圈内部部振荡的的接法的的快速性性和温度度稳定性性。外接接石英晶晶体时, C11和C22一般取取(400pF-10ppF),外外接的是是石英晶晶体, 所以,CC1、CC2选择择标称值值30ppF2。系统振荡荡电路如如图3所所示。图3 振荡电电路2.2.3 复复位电路路设计单片机复复位是使使CPUU和系统统中的其其他功能能部件都都处在一一个确定定的初始始状态, 并从从这个状状态开始始工作。无无论是在在单片机机刚开始始接上电电源时, 还是是断电后后或者发发生故障障后都要要复位。889系列列单片机机的复位位信号是是从RSST引脚脚输人到到芯片的的施密特特触发器器中的。当当系统处处于正常常工作状状态时, 且振振荡器稳稳定后, 如果果RSTT引脚有有一个高高电平并并维持22个机器器周期(224个振振荡周期期), 则CPPU就可可响应并并且将系系统复位位。复位位分为手手动复位位和上电电复位。本本设计系系统采用用的是上上电自动动复位。系统复位位电路如如图4所所示。图4 复位电电路2.2.4 数数码管显显示电路路设计本系统使使用了66只集成成式共阴阴极数码码管(77SEGG-MPPX6-CC-BLUUE),所所有数码码管a引引脚并联联在一起起,b,cc,d,ee,f,gg,dpp也是分分别并联联的,任任何时候候发送的的段码均均会传送送到所有有的数码码管上,所所有数码码管共阴阴极是独独立的。为了使不不同的数数码管显显示不同同字符,这这种集成成式多位位数码管管常用的的动态扫扫描显示示技术,它它利用了了人的视视觉暂留留特征,宣宣统第11只数码码管时,发发送1的的段码;选通第第2只数数码管时时,发送送2的段段码;选选通第33只数码码管时,发发送3的的段码。每每次仅选选通一只只数码管管,发送送对应的的段码,每每次切换换选通下下一数码码管并发发送相应应段码的的时间间间隔非常常短,视视觉惰性性使人感感觉不到到字符是是一个接接一个显显示在不不同数码码管上的的,而会会觉得所所有字符符很稳定定的同时时显示在在不同数数码管上上3。数码码管电路路如图55所示。图5 数码管管显示电电路2.2.5 按按键电路路设计本系统的的计数按按键连接接单片机机的P33.2(INTT0),程程序中将将INTT0的中中断触发发方式设设置为下下降沿触触发,这这样使得得计数按按键按下下时,PP3.22上由高高到低的的跳变会会触发中中断,如如果按下下后没有有释放,中中断则不不会持续续触发,只只有在释释放按键键后再次次按键时时,才会会因为又又出现高高电平到到低电平平的跳变变而再次次触发中中断,这这样会使使计数值值仅在计计数键每每次重新新按下时时累加。按键电路如图6所示。图6 按键电路路2.3 总电路路设计系统总电电路图如如图7所示。图7 系统总总电路图图3 软件件系统设设计3.1 软件系系统总体体方案设设计 系统软软件由主主程序模模块、测测温程序序模块、键键盘扫描描程序模模块以及及液晶驱驱动程序序模块组组成。软软件总体体框图如如图8所所示。图8软件件总体框框图3.2 软件流流程图设设计系统软件件流程图图如图99所示。图9 系统软软件流程程图4 系统统调试程序在KKeill uVVisiion44环境下下编写,编编译通过过后生成成.hexx文件加加载到PProttusee下可正正常运行行。程序序刚运行行前数码码管显示示初值为为00000.000,接接通电源源后系统统开始计计时,程程序中每每0.001s进进入一次次定时中中断,故故精度可可达到00.011s。在在程序运运行过程程中若按按下一次次功能键键,则系系统暂停停计时,数数码管显显示计时时截至状状态;若若再次按按下功能能键,系系统自动动清零并并重新开开始计时时,如此此重复进进行下去去。图110为第第一次按按下功能能键后的的状态。图09 系统统调试状状态图5 总结结5.1 本系统统存在的的问题及及改进措措施本系统所所设计的的秒表计计时器基本实实现了所所要求的的功能,但但经过后后期的实实验发现现,其实实本系统统的精度度还不是是特别精精确,做做过对比比后得知知,当该该系统运运行大概概4500秒时,与与标准时时间相比比相差一一秒,这这对计时时时间所所要求高高精度还还需要进进一步矫矫正。依依据个人人观点,实实现高精精度的计计时,仅仅通过单单片机内内部定时时并不能能到达要要求,因因为系统统每次进进入中断断处理函函数都会会多少消消耗些没没经预算算的时间间,长时时间积累累之后误误差就会会变明显显。希望望以后能能改正这这些误差差,是通通过外加加定时器器还是修修改参数数是在以以后的学学习中要要注意的的。5.2心心得体会会 本次课课程设计计是电子子技术基基础,是是对所学学单片机机理论知知识的一一次综合合运用。在在本次设设计过程程中,要要求我独独立查阅阅资料,设设计电路路。这样样可以在在实践中中锻炼我我的工程程素质,培培养我的的动脑、动动手能力力,提高高我的综综合能力力。通过这次次对电子子秒表的的设计与与制作,让让我了解解了设计计电路的的程序,也也让我了了解了关关于秒表表的基本本原理与与设计理理念。要要想成功功的做好好本次课课程设计计,我们们需要有有扎实的的知识基基础,要要熟练的的掌握课课本上的的知识,这这样才能能对试验验实验中出出现的问问题进行行分析解解决,要要有耐心心和毅力力。最后,这这次设计计培养了了自己严严谨认真真,实事事求是的的好习惯惯。一个个复杂的的电路原原理图,涉涉及到很很多的接接线与元元器件,任任何一根根线连接接错误,都都有可能能导致输输出不正正确。连连接的时时候,要要特别注注意结点点。每完完成一个个电路原原理图,要要记着保保存。参参数要选选择正确确,板块块的布局局要紧凑凑美观等等。通过过对细节节的修正正,是使自己设设计的电电路图更更加符合合实际的的功能要要求。由于本人人水平有有限,设设计中难难免有纰纰缪之处处,还请请各位老老师指正正润色。参考文献献1 郭文文川主编编. 单单片机原原理与接接口技术术. 北北京:中中国农业业出版社社,20007.2 郭天天祥主编编. 551单片片机C语语言教程程. 北北京:电电子工业业出版社社,20009.3 彭伟伟主编.单片机机C语言言教程设设计实例例. 北北京:电电子工业业出版社社,20009.附录1:系统的的源程序序清单#inccludde <<regg51.h>#inccludde <<inttrinns.hh>#deffinee uccharr unnsiggnedd chhar#deffinee uiint unssignned inttuchaar CCounnt=00;uchaar ccodee DSSY_CCODEE=0x3ff,0xx06,0x55b,00x4ff,0xx66,0x66d,00x7dd,0xx07,0x77f,00x6ff;uchaar DDigiits_of_6DSSY=00,0,0,00,0,0;voidd DeelayyMS(uinnt xx)uchaar ii;whille(-x)for(i=00;i<<1200;i+);/主主程序/voidd maain()uchaar ii,j;TMODD = 0x001;/定时时器0 工作于于方式11TH0 = (6555355-1000000)/2256;TL0 = (6555355-1000000)%2256;IE = 0xx83;/开开外部中中断0和和计时器器中断00IT0 = 11; /下降沿沿触发TR0 = 00;/定时器器开始工工作Digiits_of_6DSSY00=00;Digiits_of_6DSSY11=00;Digiits_of_6DSSY22=00;Digiits_of_6DSSY33=00;Digiits_of_6DSSY44=00;Digiits_of_6DSSY55=00;whille(11)j = 0x77f;for(i=55;i!=-11;i-)/显示示6位j=_ccroll_(jj,1);P1 = j;P0 = DSSY_CCODEEDiigitts_oof_66DSYYi;if(ii=22) PP0 |= 00x800;/ 1/1000 精确确度小数数点显示示DelaayMSS(2);voidd Tiime00() intterrruptt 1uchaar ii;TH0 = (6555355-1000000)/2256;TL0 = (6555355-1000000)%2256;Digiits_of_6DSSY00+;for(i=00;i<<=5;i+)if(DDigiits_of_6DSSYii = 110)Digiits_of_6DSSYii = 0;if(ii != 5) Diigitts_oof_66DSYYi+1+;elsee brreakk;voidd exx_innt() innterrruppt 00Counnt+;if(CCounnt=1)TR0=1 ;if(CCounnt=2)TR0=0;if(CCounnt=3)Digiits_of_6DSSY00=00;Digiits_of_6DSSY11=00;Digiits_of_6DSSY22=00;Digiits_of_6DSSY33=00;Digiits_of_6DSSY44=00;Digiits_of_6DSSY55=00;Counnt=00;#inncluude <reeg511.h>>#inccludde <<inttrinns.hh>#deffinee uccharr unnsiggnedd chhar#deffinee uiint unssignned inttuchaar CCounnt=00;uchaar ccodee DSSY_CCODEE=0x3ff,0xx06,0x55b,00x4ff,0xx66,0x66d,00x7dd,0xx07,0x77f,00x6ff;uchaar DDigiits_of_6DSSY=00,0,0,00,0,0;voidd DeelayyMS(uinnt xx)uchaar ii;whille(-x)for(i=00;i<<1200;i+);/主主程序/voidd maain()uchaar ii,j;TMODD = 0x001; /定时时器0 工作于于方式11TH0 = (6555355-1000000)/2256;TL0 = (6555355-1000000)%2256;IE = 0xx83; /开开外部中中断0和和计时器器中断00IT0 = 11; /下降沿沿触发TR0 = 11; /定时器器开始工工作whille(11)j = 0x77f;for(i=55;i!=-11;i-) /显示示6位j=_ccroll_(jj,1);P1 = j;P0 = DSSY_CCODEEDiigitts_oof_66DSYYi;if(ii=22) PP0 |= 00x800;/ 1/1000 精确确度小数数点显示示DelaayMSS(2);voidd Tiime00() intterrruptt 1uchaar ii;TH0 = (6555355-1000000)/2256;TL0 = (6555355-1000000)%2256;Digiits_of_6DSSY00+;for(i=00;i<<=5;i+)if(DDigiits_of_6DSSYii = 110)Digiits_of_6DSSYii = 0;if(ii != 5) Diigitts_oof_66DSYYi+1+;elsee brreakk;voidd exx_innt() innterrruppt 00TR0=0 ; Counnt+;if(CCounnt=2)Digiits_of_6DSSY00=00;Digiits_of_6DSSY11=00;Digiits_of_6DSSY22=00;Digiits_of_6DSSY33=00;Digiits_of_6DSSY44=00;Digiits_of_6DSSY55=00;TR0=1;Counnt=00;21