单片机控制系统设计与调试实训指导说明书-单片机倒计时秒表_第1页
单片机控制系统设计与调试实训指导说明书-单片机倒计时秒表_第2页
单片机控制系统设计与调试实训指导说明书-单片机倒计时秒表_第3页
单片机控制系统设计与调试实训指导说明书-单片机倒计时秒表_第4页
单片机控制系统设计与调试实训指导说明书-单片机倒计时秒表_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机控制系统设计与调试实训指导说明书单片机倒计时秒表系、部:机电工程学院学生姓名:指导教师:职称专 业: 班 级: 完成时间:本文通过倒计时秒表的设计,阐述了单片机最小系统的概念与设计,对单片 机的定时、中断等功能模块的应用有进一步的理解;本文还阐述了单片机编程的 一些方法。关键字:单片机、电子秒表、定时、屮断目录一、设计课题1.1课程设计题目412课程设计任务41.2课程涉及研究内容4二、硬件分析设计42. 1单片机的选择42. 2led显示器52. 2. 1 led显示器结构及分类52. 2. 2 led显示原理52. 3键盘输入6三、关键技术63. 1定时器的使用63. 1. 1 作用

2、63. 1.2技术方案63. 1. 3具体程序实现73. 2显示与键盘83. 2. 1 显示83.2.2键盘93. 2. 3利用定时中断实现显示与查键11四、电路134. 1复位电路144. 2电路元件144.3 i/o 口 线连接15五、程序设计165. 1程序功能165. 2主耍变量说明165. 3程序流程图165. 4程序源代码16六、设计总结26七、参考文献26一. 设计课题11课程设计题目本课程设计的课题是单片机倒计时秒表的设计1. 2课程设计任务本课题的电了秒表系统需要实现以下的功能:1. 用开关控制两种计时模式的选择。分别是单计时模式和连续计8个的计时 模式。2. 用开关控制电子

3、秒表的启动/停止/复位,七段数码管的高2位显示秒表的 秒值,低2位显示秒表的百分秒值。3可实现设定初值的倒计时功能。其屮设计了三种初值调整方式,分别是增 1 (减1)、连续增(连续减)和快速增(快速减。上述功能主要是为了讲述单片机定时器、键盘和led显示器的使用方法。13课题涉及研究内容:1 定时器的使用:本实例通过秒表的计时详细说明了定时器的使用方法,可 以使读者对单片机定时器的使用有比较深刻的理解。2. 键盘的使用:本实例通过秒表的启动/停止/复位、计时模式的选择,以及 倒计时初值的设定,讲述了独立式键盘的设计方法和关键技术。3. led的使用:木实例比较详细地介绍了 led的显示原理和方

4、法,并对其编 程方法做了一般性的总结。二、硬件分析设计一个完整的电子秒表电路就是一个单片机的最小系统,该系统由键盘输入电 路、单片机、晶振和复位电路和led显示电路四个方面构成。下面从单片机的选 型,led显示器的选择以及按键功能的设计这几个方面来对该系统进行进一步的 分析。2.1单片机的选择对于木实例,由于电子秒表系统在数据处理和存储方面要求不高,所以选取 片内带ram和rom的单片机即可,而并不需要在片外扩展ram和rom。在本实例 中,选取的是atmel公司的at89s52单片机。at89s52单片机是atmel公司新近 推出的高档型at89s系列单片机屮的增强型产品。at89s52具有

5、以下标准功能: 8k字节flash, 256字节ram, 32位i/o 口线,看门狗定时器,2个数据指针, 三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内 晶振及时钟电路。另外,at89s52可降至0hz静态逻 辑操作,支持2种软件可 选择节屯模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、 中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一 切工作停止,直到卜一个中断或硬件复位为止。8位微控制器8k字节在系统可 编程 flash at89s52o2. 2 led显示器2. 2. 1 led显示器的结构及分类。发光二极管芯片的适当连

6、接的光学 结构,可构成发光显示器的发光段和发光点,由这些发光段或发光点可以组成数 码管、符号管、米字管、矩阵管等。通常把数码管、符号管、米字管共称为笔画显示器;而把笔画显示器和矩阵管统 称为字符显示器。数码管可以按字高、颜色、结构、各发光段的连接方式等进行分类。按照各发光段的连接方式,数码管可分为共阳极和共阴极两种。所谓的共阳方式就是笔画显示器各段发光管的阳极是公共的,而阴极是互相 隔离的。所谓的共阴方式就是笔画显示器齐段发光管的阴极是公共的,而阳极是互和 隔离的。2. 2. 2 led显示的原理。如图2-1所示为七段lei)数码管的原理图,通 过该图可以很容易看出共阳极和共阴极的七段led的

7、工作原理的不同点。对于共阴极的数码管,所有发光二极管的阴极共连后接地,而阳极引出脚用于控制led 是否点亮。若阳极引出脚接地,则led被熄灭;若阳极引出脚接高电平,则led 被点亮。图2-1 led数码管原理图共阳极的led正好相反,所有发光二极管的阳极共连后接高电平,而阳极引出脚 用于控制led是否点亮。若阴极引出脚接高电平,则led被熄灭;若阴极引出脚 接地,则led被点亮。因此共阳极和共阴极所需要的字型码正好相反。单片机对led管的显示可以分为静态和动态两种。静态显示的特点是齐led 管能同时稳定地显示出各自字符;动态显示是指各led轮流一遍一遍显示各自字 符,但由于显示的切换较快,在人

8、的视觉看来是各led管同时显示不同字符。静态显示和动态显示各有利弊:静态显示较稳定,占用cpu的时间少,但是 每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示虽然 有闪烁感,战胜cpu时间多,但是使用的硬件少,能节省线路板的空间。相对而 言,动态显示在单片机屮的应用更加广泛。2. 3键盘输入外部指令对单片机的输入一般是通过按键、键盘等输入器来实现的,而键盘 的设计以及编程方法在本例中将会重点介绍。在本例中,是利用键盘來实现秒表 的启停控制及功能的选择:1. 按键k1。瘫k1有两个功能,第一个是在单计时状态下控制秒表的启停; 第二个是在倒计时初值设定的时候用于增加初值。2. 按

9、键k2。按键k2同样有两个功能,第一个是在连续计8个的计时模式下 控制秒表的启停;第二个是在倒计时初值设定的时候用于减少初值。3. 按键k3。按键k3的功能是设定秒表的工作方式。在默认状态下,秒表始 终处于准备计时的状态,按下k3后秒表进入倒计时的状态,这时通过按键k1 和k2可以进行倒计时初值的调整,再按下k3则进入倒计时。4. 按键reset.起程序复位作用o三、关键技术单片机电子秒表设计需要解决三个主要问题:一是有关单片机定时器的使用; 二是如何实现led的动态扫描显示;三是编写倒计时秒表程序。编程可用汇编, 也可使用c语言。3.1定时器的使用3. 1. 1作用电子秒表的计数频率収决于单

10、片机的定时器,而定时器的使用也是单片机应 用屮的一个关键的技术。在本例屮,秒表的计时和倒计时的实现以及键盘的延时 消抖都是由单片机屮的定时器来实现的。3. 1. 2技术方案单片机中定时器的使用是-项重要的内容,也是一项基本的内容。关于定时 器/计数器的基木结构与操作方式,在此不再赘述。此次设计重点主要是想通过 电了秒表这一实例来说明单片机中定时器的使用。为了实现秒表的计时,需耍利用单片机实现百分z秒(10ms)的中断,在 中断程序中实现数字的变化,并动态显示出来。该程序的流程图如图3-1图3-1流程图3. 1. 3具体程序实现1.定义/定义共阳极字符编码表uchar codetable 10

11、= 0xa0, 0xf9, 0xc4, oxdo, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98; uint m;/计数值uint ledo,led1,led2, led3;/各位的数值uchar ms;/用于表示数码管显示位及计算是否10ms到设定定时器to的丁作方式tmod二0x01;/t0 方式 1 计时 1mstlo二0x18;tho二oxfc;ea二1;/开中断,启动定时器eto=1;tro=1;2.动态显示字符的子程序 void display(void)switch(ms%4)case 0;p3=0xfe;pl=tableled3;pl_7二1; brea

12、k;case 1;p3=0xfd;pl=tableled2;pl_7二1; break;case 2;p3二oxfb;pl=tableledl;pl 7=0;break;/点亮白分一秒位的led数码管/输出百分一秒位数值/点亮十分之一秒位的led数码管/输出十分之一秒位数值/点亮秒位的led数码管/输出秒位数值/点亮小数点位case 3;p3二0xf7;pl二tableledo;/点亮十秒位的led数码管 /输出十秒位数值pl_7二1;break;default:return;3. 计算各位显示字符的子程序 void addl(time)uint time;uint n, a;a 二time/

13、1000;led0=a;/计算十秒位数值n=time%1000;led1二(n/100) ;/计算秒位数值n=n%100;led2=(n/10) ;/计算十分一秒位数值led3=n%10;/计算百分一秒位数值3. 2显不与键盘3. 2. 1显示显示与键盘是单片机应用中的两个非常重要的方面。对于本例,显示采用的 是动态扫描的方法。动态扫描的方法其实很简单,就是轮流点亮各数码管,同时 把各数码管所需要的字符送到对应的i/o 口;而中间需耍有一定的延时,原因是 单片机每一条指令执行的时间很短,如果切换得太快的话,发光二极管都来不及 反应,在编程上可以加上一个延时子程序来解决。具体的程序如下:ucha

14、r delay;for(;)displayo;/调用显示子程序for (delay=0; delay<=200; dclay+) ;/延时程序ms+;/点亮下一个数码管这是一个很简单的动态显示程序,完全按照动态显示的规则来编写的,一般 单片机的显示都采用类似的编程方法。但是这个程序有一个很大的问题,就是 延时程序的出现。延时程序实际上就是使单片机不断地时行递减或递加计数,而 在这一段时间内单片机是不能做其他任何事情的。这显然不符合我们实际应用的 要求,因为在实际的应用中单片机除了显示外还有很多具他的事情是要处理的。 实际应用时这个显示程序要进行改写,改写方法和程序将在后面提到。3. 2.

15、 2键盘单片机系统中为了实现对系统的控制和数据的输入,应用系统设置了键盘等 输入设备,包括单片机复位作用的复位键,功能转换键及数字输入键等。在这些 按键里面,除了复位键是专门的复位电路和复位功能外,其他的按键都是以开关 状态来实现功能的。关于单片机的复位电路及复位键会在后面的复位电路分析中 提到,这里只是对其他的按键的工作原理作讲解。1) 键盘的工作原理键盘的最根木的功能就是当该按键按下后,单片机应用系统能够完成该按键 所设定的功能。对于一组键盘,必定会通过一个接口电路与单片机相连。cpu要 检测是否有键盘信息输入而且要判断是哪一个键被按下,然后根据键值来进行相应的工作。2)键盘编程的关键技术

16、冃前,无论是按键还是键盘,大部分都是利用机械触点的合、断作用。机触 点由于弹性作用的影响,在闭合断开的瞬间均有抖动现象,从而会引起电压信号 的抖动,抖动时间与按键的机械特性有关,一般为5-10毫秒。为了确保正确的 键输入,必须进行消除抖动处理。常用的按键消抖方法有硬件消抖和软件消抖两种。硬件消抖主要可以通过双稳态电路和滤波屯路等消抖电路对按键进行消抖 处理。常用的消抖电路如图3-2所示vcc图3-2软件消抖电路通过消抖电路可以实现按键的消抖,但是增加了屯路的元器件数口,也增加 了硬件的成本。如果按键较多,则硬件的开销将会很大,因此常用的方法是进行 软件消抖。软件消抖其实也很简单,就是要查询该按

17、键两次。第一次查询到该按键按下 时,执行一段10ms的延时程序,然后再一次查询该按键,如果该按键的状态仍 然为闭合电平状态,则确认键真正有按下;若第二次查询按键不是闭合电平状态, 则视为干扰。同理,第一次杳询到该键松开时,执行一段10ms的延时程序,然 后再一次查询该按键,如果该按键的状态仍然为断开屯平状态,则确认键真正有 松开;若第二次查询按键不是断开的电平状态,则视为干扰。通常情况下一次松 开视为一次按键动作。软件消抖的流程图如图3-3所示图3-3软件消抖流程图查键子程序:bit start二0; void scan(void)/start为pl_2按下标志位p2=0xff; if(p2_

18、l=0)/每次读i/o 口输入数据时需先拉高屯平for (del ay=0; delay<=200; del ay+) ;/延时程序p2二oxff;if (p2_l二二0)slart二 1;/标志位置 1,确认 p2_l 按下上面所示的是一般的查键程序。但是这个程序同样有个问题,因为每一次按键都 有一个延时的子程序,这就造成了这种按键查询方式只能在cpu空闲的时候执 行,从而造成cpu资源的浪费,而冃当遇到需要复合键的时候编程就相当麻烦。 所以有必要进行修改。前面所说的动态显示和键盘扫描会产生浪费单片机资源的问题,用赵时中断 进行显示与键盘扫描则可以避免这种情况,而且在编程上更加合理且可

19、读性强。1)定时扫描键盘的工作方式定时扫描工作方式的木质是中断方式,第10ms 入一次键盘扫描子程序。 定时扫描的流程图如图3-4所示z、图3-4定时扫描流程图上图为其屮一个键查键的流程图,chcak为该键消抖标志位。当没有键被按 下,则cheak置0,并返冋。当有按键被按下时,则检杳消抖标志位cheak,如果该标志位为0,则说明了还没有进行消抖处理,将cheak置为1同时返回。因为 经过10ms才再进入一次查键,所以相当于进行了 10ms的键已经经过消抖处理, 这时等待键的釋放从而实现该键的功能。/cheak为p_2的消抖标志位 /keydown为p2_l按下的标志位 /秒表启动标志位 /秒

20、表停止标志位定时扫描键盘的子程序如下:bit cheak;bit keydown;bit start;bit stop;/读入前先将电位拉高void scan(void) p2=0x0f;if(p2 l=0)i f(cheak=0)cheak=l; else/若cheak为0,则将cheak置1并返回keydown=l; cheak=0;若cheak为1,则已消抖,按下标志置1/同时将cheak置0if(p2_l=0)whi1e(keydown=l)/若p2_l和key down均为1,则释放该键keydown二0;if (start=0)start=l;stop二0;elsestart二0;

21、stop=l;从上面的子程序可以看出每一次按键t作都是以按键的禅放为最终结朿, 程序检测到按键释放了才开始实现该按键的功能。2)关于键盘中的组合键的用法有一些单片机系统的设计由于电路设计上的限制,不允许设计多的按键;或 人们的使用习惯,常常会用到组合键,这种组合在一些小型的仪表中的应用也是 非常多的。所谓的组合键就是通过若干个按键的组合来实现更名的功能。这样的 话可以减少按键的数冃,同时也可以使操作更加方便。图3-5是关于键盘组合键的程序流程图。图3-5程序流程图由于上面已经给出了定时打描键盘的子程序,所以下面只给出组合键功能所 要增加的程序段。if (p2 2二二0)if (bcheak=o

22、)bcheak=l;/若 bchcak 为 0,则将 bcheak 置 1 并返回elseb_keydown=l;若bcheak为1,则己消抖,按下标志置1bcheak=0;/同时将 bcheak 置 0if(keydown=l&&b_keydown=l) /若两键同时按下,则实现组合键功 能combine二1;上面的程序段,只要添加到void scano里面就可以实现p2_l和p2_2同 时按下的功能键了。当两键的按下标志位都为1时,证明两键已同时按下,这时 将复合键标志位combine置1.当主程序检测到combine为1,则执行复合键程序。3) 利用定时中断实现显示由于显

23、示并不是单片机最主要的工作,在显示程序中耗费大量的时间是不 合适的,所以显示也是在屮断屮实现才比较合适。下面是具体的屮断子程序:void timeo(void)interrupt 1 using 1 jitl0=0xl8;th0=0xfc; ms+;if(ms=10)ms=0; scankey=l; display ();/重装计时器数据/到10ms则执行一次键盘扫描程序调用一次显示程序从上面的程序段可以看出每ims单片机中断一次,在中断服务子程序中实现两个功能:一是看是否到10ms,若到了则将键盘扫描标志位scankcy置1,则 屮断返回后主程序屮就会调用键盘扫描程序;二是调用显示子程序di

24、splayo,display ()中可以看出每一次调用就是点亮一个数码管,而每次调用所耗费的 时间是非常短的。四、电路图3-6倒计时秒表电路图ze幣盂席常mimu: e总5s图3-6为单片机倒计时秒表的电路图。从电路图可以看出电子秒表的电路并 不复杂,下面对其屮一些部分略作说明。4. 1复位电路复位电路在单片机系统中是必不可少的。所谓的复位就是将单片机匣新启 动,这时单片机内部的所有寄存器都冋到初始状态。木例电路是对应的复位电路k151 i如图4-1所不。图4-1复位电路对于at89s52 .单片机来说,它是高电平复位,也就是说只要将单片机的 reset脚接高电平并保持一定的时间就可以实现单片

25、机的复位。从上面的电路可 以看出实现的是上电复位和按键复位两个复位功能。上屯的一瞬间,单片机的 reset脚接到高电平,同时电容c1开始充电,经过一定的时间后电容充电饱和, 10k的下拉电阻把reset脚拉回到低电平状态,实现了单片机的复位。同样道理, 在单片机工作的时候按下复位按钮,单片机的reset脚接到了高电平,电容c1 马上放电完毕;松开该按钮后电容c1开始充电,经过一定时间后电容充电饱和, 10k下拉电阻把reset脚拉冋到低电平状态,实现了单片机的复位。42电路元件at89s52:单片机,控制led显示。led1led4:七段码led,用于显示秒表数据。ss9012:由于数码管需要

26、较大的电流驱动,单靠at89s52的i/o 口直接驱动 效果不好,需加放大电路。在本例屮,所用的数码管为共阴极的,所以三极管选 用了 ss9012.npn型三极管。当然,也可以选用共阳极的数码管,则三极管应选 用pnp型的。按键k1:在正常情况下,用于控制单一计时下秒表的启动、停止。在倒计 时设定的情况下为倒计时初值的增加按键,按一下k1,倒计时初值增加1;按住 k1不放,倒计时初值连续增加;加速连接两下k1然后不放,则倒计时初值快速 増加,增加的速度是连续增加的10倍。按键k2:在正常情况下,用于控制连续计时8个的计时模式下秒表的启动/ 停止。在倒计时初值设定的情况卜为倒计时初值减少按键,按

27、一下k2,倒计时初 值减少1;按住k2不放,倒计时初值连续减少;快速按两下k2然后不放,贝倒 计时初值快速减少,减少的速度是连续减少的10倍。按键k3:用于秒表的功能的选择,在默认情况下,为秒表的计时准备模式; 按下k3后秒表进入倒计时状态,这时通过按键k1和k2可以进行倒计时初值的 调整,再按下k3则进入倒计时。按键reset:在复位电路中,对单片机起复位作用。led5:用于显示单片机的工作状态,在准备计时的时候,led5点亮;在计 时的时候,led5闪烁;在倒计时初值设定和倒计时丁作的时候,led5熄灭。led6:用丁显示单片机的工作状态,在准备计时和计时工作的时候,led6 熄灭;在倒计

28、时初值设定的时候,led6点亮;在倒计时工作的时候,led6闪烁。 4.3 i/o 口线连接pl. op17:与数码管的各个位相连,用于传送数码管的位段码。p3. 0p33:与数码管led1led4相连,通过单片机的p3. 0p33可以控制 led的显示。p2. 1:和按钮k1相连,用于决定单一计时模式下的秒表启动/停止和倒计时 初值的增加。p2.0:和按钮k2相连,用于决定连续计8个的计时模式下秒表启动/停止和 倒计时初值的减少。p2.2:和按钮k3相连,用于单片机工作模式的选择。p2.6:和led6相连,用于显示单片机的t作状态。p2. 7:和led5相连,用于显示单片机的工作状态。五、程

29、序设计电子秒表的程序设计主要有三个方面:第一是利用定时器来完成秒表的定 时周期;第二是利用定时中断来实现键盘的扫描,从而确定单片机的工作状态; 第三是利用单片机控制led的输出显示。5. 1程序功能电子秒表程序主要完全如下功能:(1) 两种计时模式的启动/停止/复位功能的秒表。(2) 可设定初值的倒计时定时器。52主要变量的说明在程序中用到的关键变量如表5-1所示。说明m整形变e,用丁存储要显示的数ms字符型变fit,用f 10ms的累加ledo led3整形变量用丁存储翌显示的各个位的数字start位变址,用丁控制秒表单一计时模式的计时开始stop位变虽,用丁控制秒表单计时模式的讣时停止ei

30、ght start位变曦,用r控制秒表连续计时s次模式的计时开始eight stop位变如,用控制粉表连续计时8択榄式的讣时停|count down位变虽用r控制倒计时开始scaiikcx位变毘用丁控制键盘的扫描dicak位变虽,按键的消抖标志位kedovn位变城,k1的按下标志位k.2 kcvdown位变虽.只2的按下标志位k3 kevdown位变械.k3的按下标志位k3 key up位变虽,k3弹起标志mm字符型变虽,用于0.2秒的累加add位变虽倒计时初值加1标志位sub位变植.倒计时初值减1标志位bit addl位变虽,ki完成一次按键动作的标志位bit sub位变尿,£2完

31、成次按键动作的标志位fast add位变城.倒计时初值连续増标志位double key位变植.倒计时初值快速増标志位last sub位变虽,倒计时初诡连续减标志位double sub位变讯倒计时初trt快速减标忐位tab8整形变星.储存连玉计时8次模式的8的时间值表5-1在程序中用到的关键变量5. 3程序流程图主程序完成的工作是检测各个标志位的状态,以确定单片机的工作情况。键 盘查询和数据显示的部分在定时中断服务子程序中完成。由于程序较大,所以将程序的各个功能模块的流程图分别列出。图5-1秒表计时功能。图5-1秒表计时功能流程图图10和图11:倒计时初值的设定n图5-2倒计时初值设定图5-3倒

32、计时初值设定图12:倒计时的功能*(代汁i!卅冲图5-4倒计时功能流程图5. 4程序源代码全部的程序包括了头文件、变量的定义、主程序及各子程序。1)头文件和变量定义(1)包含reg52. h头文件。(2)变量定义:在程序中用到的变量如表1所示。 /头文件及变量声名#includereg52.h> #define uchar unsigned char#define uint unsigned int /定义各管脚sbit sbi t sbit sbit sbit sbi tp2_0p20;p2_1p2'1;p2_2p2'2;pl.7pl''7;p2_6p2

33、'6;p2_7p27/各变量的声名uchar codetable: 10 = 0xa0, 0xf9, 0xc4, oxdo, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98;段位 码uchar ms, mm;uint m, tab8;uint ledo, led1,led2,led3;/各位的数字bit add;bit bit_addl;bit bit_sub;bit scankcy;bit cheak;bit keydown;bit fast_add;bit double key;bit k2_keydown;bit fast_sub;bit double_su

34、b;bit sub;bit k3_keyup;bit k3 keydown;bit countdown;bit start;bit stop;bit eight_start;bit eight_stop;2) 主程序在主程序屮需要完成以下的功能:首先调用初始化函数对各个变量进行初 始化,再对定时器的定时初值进行设定,接着根据各个标志位的值來判断单片机 的工作模式及工作状态。键盘扫描由scan()来完成,各个位的数值的计算由 addl()来完成。void main(void)beginl ();tm0d=0x01;tlo二0x18;th0=0xfc;ea=1;eto=1;tro二1;for(;)

35、if(seankey二二1)seankey二0; scan();if (double_key=l)p2_6二0;p2.7=1; m=m+10;addl1 (m); if(fast_add=l) p2_6=0;p2_7=l; m+; addl (m);bit_addl=o; if(add=l)p2_6=0;p2_7二1; add=0;m+; addl(m); if (double sub=l) p2_6=0;p2_7二1;m=m-10;addl(m);i f(fast_sub二二1) p2 6=0;p2_7=l;m; addl (m);bit_sub=0; if (sub=l)p2 6=0;p2

36、_7=l; sub=0;/调用初始化函数/进行键盘扫描/倒计时初值快速增加/倒计时初值连续增加/倒计时初值增加1/倒计时初值快速减少/倒计时初值连续减少/倒计时初值减少1m;addl(m);if (start=l)/计时开始if(mm二二0)p2_7二!p2_7;p2_6=l;m+;if(m二二6000)m=0;addl(m);if (stop=l) start=0;/计时停止if (count_down=l)/倒计时开始if (m>0) m-;p2_7二1;if(mm=0)p2_6 二! p2_6;3) 初始化子程序初始化子程序通常是在一开始就被调用,用来初始化齐个变量,同时也显 示了

37、单片机上电后的工作状态。虽然有些变量在定义的时候已被默认初始化了, 但是为了自己检查方便,还是应该加上初始化的子程序。void beginl (void)fast add=0;bit_addl=0;mm二 0;iii=0;ms=0;ledo=o;led1=o;led2=0;led3=0;add=0;double_key=0;scankcy=0;keydown二0;k3_keyd()wn=0;count_down二0;p2 6=1;p2_7二0;4) 定时器中断子程序这里的秒表的计时、键盘的扫描及数值显示等都是利用定时屮断来完成的。定时时间设为ims,用于数值显示;同时利用累加的方法实现10ms

38、和200ms 的定时,用于键盘的扫描及控制显示灯的闪烁。void timeo(void)jitl0=0xl8;th0=0xfc;ms+;if (ms=10)ms二0;mm+;if (mm=20)nim=0; scankey=l; displavo ;5) 显示子程序显示程序其实包括了 display ()和addl (time)两个子程序。addl (time) 是用來计算数码管各个位要显示的数值的子程序,display 0是查段位码表及进行动态扫描的子程序。 void addl(time) uint time;计算十秒位数值/计算秒位数值计算十分一秒位数值/计算百分一秒位数值uint n,

39、a; a=timc/1000; led0=a;n=time%10000;ledl=(n/100); n=n%100;led2=(n/10); led3=n%10;void display (void)iswitch (ms%4)case (丿;p3=0xfe;pl=tableled3;pl 7=1;break;case ;i;p3=0xfd;pl=tableled2;pl_7二1;break;case :2;p3=0xfb;pl=tableledl;pl_7=l;break;case 3;p3=0xf7;pl=tableledo;pl_7=l;break;default:return;6) 键盘扫描键盘扫描的子程序完成的任务是每10ms进行一次键盘的查询,根据查询 的结果对应的标志位进行赋值。因为要实现比较多的功能,所以键盘扫描的子程 序比较复杂。void scan (void)char a ;p2=0x0f;i f (count_down=0&&p2_2=0) " "if(cheak=0)cheak二1;else (k3 keydown=l;chcak=0;p2二oxof;if (k3 keydown

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论