您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机的多路电子秒表的设计
课程单片机原理及应用课程设计题目基于单片机的多路电子秒表的设计专业主要内容、基本要求、主要参考资料等1、主要内容:根据单片机课程所学内容,结合其他相关课程知识,设计多路电子秒表,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。2、基本要求:本设计以MCS-51系列单片机为核心,采用常用电子器件设计。要求可以计量至少4路时间,可实现设定初值的倒计时功能,精确到1/100秒,使用LED显示。3、主要参考资料:[1]张毅坤,陈善久.单片微型计算机原理及应用[M].西安:西安电子科技大学出版社,2002.[2]张友德,赵志英,徐时亮.单片微机原理应用与实验[M].上海:复旦大学出版社,2000.[3]蔡美琴,张为民,沈新群,张荣娟.MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,1992.完成期限2011.3.11-2011.3.18指导教师专业负责人2011年3月13日1第一章系统设计1.1系统功能描述系统功能描述本例的电子秒表系统可以实现以下的功能:(1)用开关控制两种计时模式的选择。分别是单计时模式和连续计8个的计时模式(比设计要求多4路计时)。(2)用开关控制电子秒表的启动/停止/复位,七段数码管的高2位显示秒表的秒值,低2位显示秒表的百分秒值。(3)可实现设定初值的功能。其中设计了三种初值调整方式,分别是增1(减1)、连续增(连续减)和快速增(快速减)。上述的功能应用了单片机定时器,用来对键盘信号的接收和对LED显示器控制。电子秒表设计的内容主要包括:(1)定时器的使用:秒表计时。(2)键盘的使用:通过独立式键盘操作,对秒表的启动/停止/复位、计时模式进行选择,以及倒计时初值的设定。(3)LED的使用:秒表时间的显示。1.2系统构成一个完整的电子秒表电路就是一个单片机的最小系统,该系统由(1)键盘输入电路(2)单片机(3)晶振和复位电路(4)LED显示电路1.3芯片的选择单片机的选择对于本设计,由于电子秒表系统在数据的处理和存储方面要求并不高,所以选取片内带RAM和ROM的单片机即可,而并不需要在片外扩展RAM和ROM。在本设计中,选取的是ATMEL公司的AT89C52单片机。AT89C52单片机自带8K片内FLASH、256字节的片内RAM、32个I/O口线、8个中断源及3个定时/计数器。2第二章硬件设计2.1LED显示器如图1所示为七段LED数码管的原理图,通过该图可以很容易地看出共阳极和共阴极的七段LED管的工作原理的不同点。对于共阴极的数码管,所有发光二极管的阴极共连后接地,而阳极引出脚用于控制LED是否点亮。若阳极引出脚接地,则LED被熄灭;若阳极引出脚接高电平,则LED被点亮。共阳极的LED正好相反,所有发光二极管的阳极共连后接高电平,而阳极引出脚用于控制LED是否点亮。若阴极引出脚接高电平,则LED被熄灭;若阴极引出脚接地,则LED被点亮。因此共阳极和共阴极所需要的字型码正好相反。abcdefgh共阳极共阴极abcdefgh图1LED原理图单片机对LED管的显示可以分为静态和动态两种。静态显示的特点是各LED管能同时稳定地显示各自字符;动态显示是指各LED轮流一遍一遍显示各自字符,但由于显示的切换较快,在人的视觉看来是各LED管同时显示不同字符。静态显示和动态显示各有利弊:静态显示较稳定,占用CPU的时间少,但是每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示虽然有闪烁感,占用CPU的时间多,但是使用的硬件少,能节省线路板的空间。相对而言,动态显示在单片机的应用中更加广泛。2.2键盘输入外部指令对单片机的输入一般是通过按键、键盘等输入器件来实现的,而键盘的设计以及编程方法在本例中将会重点介绍。在本例中,是利用键盘来实现秒表的启停控制及功能的选择:(1)按键K1。按键K1有两个功能,第一个是在单计时状态下控制秒表的启停;第二个是在倒计时初值设定的时候用于增加初值。(2)按键K2。按键K2同样有两个功能,第一个是在连续计8个的计时模式下控制秒表的启停;第二个是在倒计时初值设定的时候用于减少初值。3(3)按键K3。按键K3的功能是设定秒表的工作方式。在默认的状态下,秒表始终处于准备计时的状态,按下K3后秒表进入倒计时的状态,这时通过按键K1和K2可以进行倒计时初值的调整,再按下K3则进入倒计时。(4)按键RESET。起程序复位作用。2.3复位电路复位电路在单片机系统中是必不可少的。所谓的复位就是将单片机重新启动,这时单片机内部的所有寄存器都回到初始状态。本例电路中对应的复位电路如图2所示。C110uRESETRESET10K+5V图2复位电路对于AT89C52单片机来说,它是高电平复位,也就是说只要将单片机的RESET脚接高电平并保持一定的时间就可以实现单片机的复位(而对于一些低电平复位的单片机来说就刚好相反,要使其RESET脚置为低电平并保持一定时间以实现单片机的复位)。从上面的电路可以看出实现的是上电复位和按键复位两个复位功能。上电的一瞬间,单片机的RESET脚接到高电平,同时电容C1开始充电,经过一定的时间后电容充电饱和,10K的下拉电阻把RESET脚拉回到低电平状态,实现了单片机的复位。同样道理,在单片机工作的时候按下复位按钮,单片机的RESET脚接到高电平,电容C1马上放电完毕;松开该按钮后电容C1开始充电,经过一定的时间后电容充电饱和,10K的下拉电阻把RESET脚拉回到低电平状态,实现了单片机的复位。2.4I/O口接线P1.0~P1.7:与数码管的各个位相连,用于传送数码管的段位码。P3.0~P3.3:与数码管LED1~LED4相连,通过单片机的P3.0~P3.3可以控制LED的显示。P2.1:和按钮K1相连,用于决定单一计时模式下的秒表启动/停止和倒计时初值的增加。P2.0:和按钮K2相连,用于决定连续计8个的计时模式下秒表启动/停止和倒计时初值的减少。P2.2:和按钮K3相连,用于单片机工作模式的选择。P2.6:和LED6相连,用于显示单片机的工作状态。P2.7:和LED5相连,用于显示单片机的工作状态。42.5电路元件(1)AT89C52:单片机,控制LED显示。(2)LED1~LED4:七段码LED,用于显示秒表数据。(3)SS9012:由于数码管需要较大电流驱动,单靠AT89C52的I/O口直接驱动效果不好,需加放大电路。在本设计中,所用的数码管为共阴极的,所以三极管选用了SS9012.NPN型三极管。当然,也可以选用共阳极的数码管,则三极管应选用PNP型的。(4)按键K1:在正常情况下,用于控制单一计时模式下秒表的启动/停止。在倒计时初值设定的情况下为倒计时初值的增加按键,按一下K1,倒计时初值增加1;按住K1不放,倒计时初值连续增加;快速连按两下K1然后不放,则倒计时初值快速增加,增加的速度是连续增加的10倍。(5)按键K2:在正常情况下,用于控制连续计时8个的计时模式下秒表的启动/停止。在倒计时初值设定的情况下为倒计时初值的减少按键,按一下K2,倒计时初值减少1;按住K2不放,倒计时初值连续减少;快速连按两下K2然后不放,则倒计时初值快速减少,减少的速度是连续减少的10倍。(6)按键K3:用于秒表的功能的选择,在默认情况下,为秒表的计时准备模式;按下K3后秒表进入倒计时的状态,这时通过按键K1和K2可以进行倒计时初值的调整,再按下K3则进入倒计时。(7)按键RESET:在复位电路中,对单片机起复位作用。(8)LED5:用于显示单片机的工作状态,在准备计时的时候,LED5点亮;在计时的时候,LED5闪烁;在倒计时初值设定和倒计时工作的时候,LED5熄灭。(9)LED6:用于显示单片机的工作状态,在准备计时和计时工作的时候,LED6熄灭;在倒计时初值设定的时候,LED6点亮;在倒计时工作的时候,LED6闪烁。5第三章软件设计3.1秒表计时程序的计时电子秒表的计数频率取决于单片机中的定时器,而定时器的使用也是单片机运用中的一个关键的技术。在本设计中,秒表的计时和倒计时的实现以及键盘的延时消抖等都是由单片机中的定时器来实现的。为了实现秒表的计时,需要利用单片机实现百分之一秒(10ms)的中断,在中断程序中实现数字的变化,并动态通过LED显示出来。该程序的流程图如图3所示。图3秒表中定时器运用流程图3.2显示和键盘(1)方案选择显示采用的是动态扫描的方法。动态扫描的方法就是轮流点亮各数码管,同时把各数码管所需要的字符送到对应的I/O口;而中间需要有一定的延时,原因是单片机每一条指令执行的时间很短,如果切换得太快的话,发光二极管都来不及反应,在编程上可以加上一个延时子程序来解决。单片机系统中为了实现对系统的控制和数据的输入,应用系统设置了键盘等输入设备,包括单片机复位用的复位键,功能转换及数字输入键等。在这些按键里面,除了复位键是有专门的复位电路和复位功能外,其他的按键都是以开关状态来实现功能。目前,无论是按键还是键盘,大部分都是利用机械触点的合、断作用。机械触点由于弹性作用的影响,在闭合断开的瞬间均有抖动的现象,从而会引起电压信号的抖动,抖动时间与按键的机械特性有关,一般为5-10毫秒。为了确保正确的键输入,必须进行消抖处理。6常用的按键消抖的方法有硬件消抖和软件消抖两种。硬件消抖主要可以通过双稳态电路和滤波电路等消抖电路对按键进行消抖处理。常用的消抖电路如图4所示。NOT1K1K10uFVCCSW-SPST图4滤波消抖电路通过消抖电路可以实现按键的消抖,但是增加了电路的元器件的数目,也增加了硬件的成本。如果按键较多,则硬件开销将会很大,因此,本设计进行软件消抖。软件消抖就是要查询该按键两次。第一次查询到该按键按下时,执行一段10ms的延时程序,然后再一次查询该按键,如果该按键的状态仍然为闭合电平状态,则确认键真正有按下;若第二次查询按键不是闭合电平状态,则视为干扰。同理,第一次查询到该按键松开时,执行一段10ms的延时程序,然后再一次查询该按键,如果该按键的状态仍然为断开电平状态,则确认键真正有松开;若第二次查询按键不是断开电平状态,则视为干扰。通常情况按下一次松开视为一次按键动作。(2)利用定时中断软件实现显示与查键动态显示和键盘扫描会产生浪费单片机资源的问题,用定时中断进行显示与键盘扫描则可以避免这种情况,而且在编程上更加合理且可读性增强。1)定时扫描键盘的工作方式定时扫描工作方式的本质是中断方式,每10ms进入一次键盘扫描子程序。定时扫描的流程图如图5所示:图5定时扫描键盘流程图上图为其中一个键查键的流程图,cheak为该键消抖标志位。当没有键被按下,则cheak置0,并返回。当有按键被按下时,则检查消抖标志位cheak,如果7该标志位为0,则说明了还没有进行消抖处理,将cheak置为1同时返回。因为经过10ms才再进入一次查键,所以相当于进行了10ms的延时效果,程序不需要进行延时。若再次查键的时候发现该键的消抖标志位cheak为1,则说明此键已经过消抖处理,这时等待键的释放从而实现该键的功能。2)关于键盘中的组合键的用法组合键就是通过若干个按键的组合来实现更多的功能,这样的话可以减少按键的数目,同时也可以使操作更加方便。键盘组合键的程序流程图如图6图6键盘组合键的程序流程图3)利用定时中断实现显示由于显示并不是单片机最主要的工作,在显示程序中耗费大量的时间是不合适的,所以显示也是在中断中实现才比较合适。下面是具体的中断子程序:voidtime0(void)interrupt1using1{TL0=0x18;TH0=0xfc;//重装计时器数据ms++;if(ms==10)//到10ms则执行一次键盘扫描程序{ms=0;scankey=1;}display();//调用一次显示子程序}从上面的程序段可以看出每1ms单片机中断一次,在中断服务子程序中实现两个功能:一是看是否到10ms,若到了则将键盘扫描标志位scankey置1,则中断返回后主程序中就会调用键盘扫描程序;二是调用显示子程序display(),
本文标题:基于单片机的多路电子秒表的设计
链接地址:https://www.777doc.com/doc-4027660 .html