倒计时器课程设计(带程序版)

  • 格式:doc
  • 大小:111.13 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南科技大学

课程设计报告课程名称:单片机原理及应用课程设计

设计题目:电阻测量

院系:通信与控制工程系

专业:通信工程

班级:

学生姓名:

学号: ******** ********

起止日期:2010年12月20日~ 2010年12月31日指导教师:

教研室主任:

基于STC89C52的倒计时器设计

1 设计任务与要求

本项目是由单片机执行设定的程序,在数码管显示倒计时的时间,且能由单片机接受矩阵键盘设定的时间。由4位数码管做显示,能够实现5种倒计时模式,通过控制按键进行选择9999s-0s、999s-0s、99s-0s、9s-0s、开始值由人工输入-0s。

2 方案设计与论证

近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。现在,在许多领域中,定时器得到了广泛的应用,比如在体育比赛中的计时器;安全措施中的定时报警器;游戏中的倒计时;维持秩序的交通信号灯;红路灯,交通控制器,闹钟等等。可见倒计时器在社会中的重要性。当然,设计倒计时器的方法很多,以下是两个设计方案。

方案一:基于AT89S52单片机的LCD液晶显示模块1602显示的倒计时器。主要是以单片机来控制,用按键来设定倒计时初始时刻的值,用按键来进行倒计时初值的选择,LCD1602液晶作为显示模块来显示倒计时间。

方案二:基于AT89S52单片机的数码管显示模块显示的倒计时器。主要是以单片机来控制,用按键来设定倒计时初始时刻的值,按键来进行倒计时初值的选择。此电路对于倒计时器中的LED数码管示器来说,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。

方案比较:通过以上两个方案,我们发现,方案二总体比方案一好。首先方案一虽然硬件电路简单,但造价较高,且在编写程序实现所要求的功能时较难,而方案二所用的显示模块是比较熟悉的数码管,编写程序是相对容易,且电路造价不高,因此,综合考虑之后决定采用方案二。

3 硬件单元电路设计与参数计算

LED数码管倒计时器以AT89C52单片机为核心,起着控制作用,另外系统中使用8255A芯片作为扩展I/O作用。系统包括四位数码管显示电路,按键电路,复位电路,时钟电路以矩阵键盘电路。倒计时的总体框图如下图1所示:

图1 倒计时的总体框图

3.1 时钟电路

单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只要外界一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。本系统使用的是内部时钟方式。时钟电路如下图3所示。

一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1、C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。本系统的C1、C2的值为30pf。

3.2 矩阵电路

本系统用到的是4*4矩阵键盘,行线由8255A芯片PC端口的低四位控制,而列线是由PC端口的高四位来控制的,键盘的扫描是动态的低电平扫描,当有

个键按下时,相应的行线为高电平,扫描的结果由PC口送回8255A.

本系统的矩阵电路的作用是能够设定倒计时的初始值,还可以通过按软件中设定的几个键的功能,来实现倒计时最大初值的选择。倒计时是按千位,百位,十位,个位的顺序排列显示的,用四个按键来现实显示切换的,所达到的效果是按一下对应的键时,所对应的倒计时最大初值开始倒计时,例如S3键,数码管上显示的是99S开始倒计时。在程序中按S8键开始初值设定,在按相应的已经编码好的键,这些代表0-9的键来设定四位初值。设定初值时,每按一个键,就在数码管上显示该键代表的编码。四位值都设好了,等待按独立键跳出矩阵电路。按键电路如下图4所示。

图4 按键电路原理图

3.3数码管显示电路

在这里我们使用的是8段数码管显示(包含小数点),通常在显示上我们采用的方法一般包括两种:一种是静态显示,另一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多,所耗得电能较大;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中,为了减少端口资源,降低电能消耗,采用的是动态显示方法。

本系统的倒计时时间的最大范围是9999S,要显示出最大范围的值,从而可知数码管显示电路要用到4位数码管。考虑到到数码管的段和位比较多,本系统

用8255A作为扩展端口芯片。数码管有段选和位选控制,在此电路中有4个位选,8个段选(每一个数码管的段选进行并联)。分别用8255芯片的PA口和PB口进行四位数码管的控制,而用单片机的PB口来控制段。电路中用了四个PNP来控制数码管的位选的开关,PNP在这起开关的作用。电路如下图5所示。

图5 数码管显示电路原理图

4 软件设计与流程图

4.1 倒计时器主程序流程图

程序的的开始时先设定定时器0,给定时器装初值,定时器0的定时时间是10ms,用作定时器时间的递减。然后给初始化8255芯片设定PA和PB口为输出端口,PC的低四位为输入端口,而高四位为输出端口。进入死循环函数,在循环函数中,进入方式9-0s的倒计时,再对矩阵进行扫描,如果有键按下返回按键值,执行判断语句。若为假则继续按该方式执行程序,若为假则跳出该倒计时方式,进入下一个倒计时方式。流程图如下图6所示:

图6 倒计时器主程序流程图

4.2定时器0的中断程序流程图

定时器0的定时时间是10ms,用作扫描数码管显示,在定时器0开启时,定时器0开始定时,此时主程序正常运行,当定时器0的定时时间到时,主程序不在执行,开始进入中断程序,在中断程序中,若计时了1s就对时间进行处理且计数标志清零,赋值给相应的变量且second减1,若没有则计数标志count 就进行加1,若倒计时的时间为零则重新赋值,中断程序执行完后返回主程序。如图7所示。