当前位置:文档之家› 单片机倒计时秒表111

单片机倒计时秒表111

单片机控制系统设计与调试实训指导说明书单片机倒计时秒表系、部:机电工程学院学生姓名:指导教师:职称专业:班级:完成时间:摘要本文通过倒计时秒表的设计,阐述了单片机最小系统的概念与设计,对单片机的定时、中断等功能模块的应用有进一步的理解;本文还阐述了单片机编程的一些方法。

关键字:单片机、电子秒表、定时、中断目录一、设计课题1.1课程设计题目 (4)1.2课程设计任务 (4)1.2课程涉及研究内容 (4)二、硬件分析设计 (4)2.1单片机的选择 (4)2.2 LED显示器 (5)2.2.1 LED显示器结构及分类 (5)2.2.2 LED显示原理 (5)2.3键盘输入 (6)三、关键技术 (6)3.1定时器的使用 (6)3.1.1 作用 (6)3.1.2技术方案 (6)3.1.3具体程序实现 (7)3.2 显示与键盘 (8)3.2.1显示 (8)3.2.2键盘 (9)3.2.3利用定时中断实现显示与查键 (11)四、电路 (13)4.1复位电路 (14)4.2电路元件 (14)4.3 I/O口线连接 (15)五、程序设计 (16)5.1程序功能 (16)5.2主要变量说明 (16)5.3程序流程图 (16)5.4程序源代码 (16)六、设计总结 (26)七、参考文献 (26)一、设计课题1.1课程设计题目本课程设计的课题是单片机倒计时秒表的设计1.2课程设计任务本课题的电子秒表系统需要实现以下的功能:1.用开关控制两种计时模式的选择。

分别是单计时模式和连续计8个的计时模式。

2.用开关控制电子秒表的启动/停止/复位,七段数码管的高2位显示秒表的秒值,低2位显示秒表的百分秒值。

3.可实现设定初值的倒计时功能。

其中设计了三种初值调整方式,分别是增1(减1)、连续增(连续减)和快速增(快速减)。

上述功能主要是为了讲述单片机定时器、键盘和LED显示器的使用方法。

1.3课题涉及研究内容:1.定时器的使用:本实例通过秒表的计时详细说明了定时器的使用方法,可以使读者对单片机定时器的使用有比较深刻的理解。

2.键盘的使用:本实例通过秒表的启动/停止/复位、计时模式的选择,以及倒计时初值的设定,讲述了独立式键盘的设计方法和关键技术。

3.LED的使用:本实例比较详细地介绍了LED的显示原理和方法,并对其编程方法做了一般性的总结。

二、硬件分析设计一个完整的电子秒表电路就是一个单片机的最小系统,该系统由键盘输入电路、单片机、晶振和复位电路和LED显示电路四个方面构成。

下面从单片机的选型,LED显示器的选择以及按键功能的设计这几个方面来对该系统进行进一步的分析。

2.1 单片机的选择对于本实例,由于电子秒表系统在数据处理和存储方面要求不高,所以选取片内带RAM和ROM的单片机即可,而并不需要在片外扩展RAM和ROM。

在本实例中,选取的是ATMEL公司的AT89S52单片机。

AT89S52单片机是ATMEL公司新近推出的高档型AT89S系列单片机中的增强型产品。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

8 位微控制器 8K 字节在系统可编程 Flash AT89S52。

2.2 LED显示器2.2.1 LED显示器的结构及分类。

发光二极管芯片的适当连接的光学结构,可构成发光显示器的发光段和发光点,由这些发光段或发光点可以组成数码管、符号管、米字管、矩阵管等。

通常把数码管、符号管、米字管共称为笔画显示器;而把笔画显示器和矩阵管统称为字符显示器。

数码管可以按字高、颜色、结构、各发光段的连接方式等进行分类。

按照各发光段的连接方式,数码管可分为共阳极和共阴极两种。

所谓的共阳方式就是笔画显示器各段发光管的阳极是公共的,而阴极是互相隔离的。

所谓的共阴方式就是笔画显示器各段发光管的阴极是公共的,而阳极是互相隔离的。

2.2.2 LED显示的原理。

如图2-1所示为七段LED数码管的原理图,通过该图可以很容易看出共阳极和共阴极的七段LED的工作原理的不同点。

对于共阴极的数码管,所有发光二极管的阴极共连后接地,而阳极引出脚用于控制LED 是否点亮。

若阳极引出脚接地,则LED被熄灭;若阳极引出脚接高电平,则LED 被点亮。

图2-1 LED数码管原理图共阳极的LED正好相反,所有发光二极管的阳极共连后接高电平,而阳极引出脚用于控制LED是否点亮。

若阴极引出脚接高电平,则LED被熄灭;若阴极引出脚接地,则LED被点亮。

因此共阳极和共阴极所需要的字型码正好相反。

单片机对LED管的显示可以分为静态和动态两种。

静态显示的特点是各LED 管能同时稳定地显示出各自字符;动态显示是指各LED轮流一遍一遍显示各自字符,但由于显示的切换较快,在人的视觉看来是各LED管同时显示不同字符。

静态显示和动态显示各有利弊:静态显示较稳定,占用CPU的时间少,但是每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示虽然有闪烁感,战胜CPU时间多,但是使用的硬件少,能节省线路板的空间。

相对而言,动态显示在单片机中的应用更加广泛。

2.3键盘输入外部指令对单片机的输入一般是通过按键、键盘等输入器来实现的,而键盘的设计以及编程方法在本例中将会重点介绍。

在本例中,是利用键盘来实现秒表的启停控制及功能的选择:1.按键K1。

按键K1有两个功能,第一个是在单计时状态下控制秒表的启停;第二个是在倒计时初值设定的时候用于增加初值。

2.按键K2。

按键K2同样有两个功能,第一个是在连续计8个的计时模式下控制秒表的启停;第二个是在倒计时初值设定的时候用于减少初值。

3.按键K3。

按键K3的功能是设定秒表的工作方式。

在默认状态下,秒表始终处于准备计时的状态,按下K3后秒表进入倒计时的状态,这时通过按键K1和K2可以进行倒计时初值的调整,再按下K3则进入倒计时。

4.按键RESET.起程序复位作用。

三、关键技术单片机电子秒表设计需要解决三个主要问题:一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是编写倒计时秒表程序。

编程可用汇编,也可使用C语言。

3.1 定时器的使用3.1.1 作用电子秒表的计数频率取决于单片机的定时器,而定时器的使用也是单片机应用中的一个关键的技术。

在本例中,秒表的计时和倒计时的实现以及键盘的延时消抖都是由单片机中的定时器来实现的。

3.1.2 技术方案单片机中定时器的使用是一项重要的内容,也是一项基本的内容。

关于定时器/计数器的基本结构与操作方式,在此不再赘述。

此次设计重点主要是想通过电子秒表这一实例来说明单片机中定时器的使用。

为了实现秒表的计时,需要利用单片机实现百分之一秒(10ms)的中断,在中断程序中实现数字的变化,并动态显示出来。

该程序的流程图如图3-1图3-1 流程图3.1.3具体程序实现1.定义//定义共阳极字符编码表uchar codeTABLE[10]={0xa0,0xf9,0xc4,0xd0,0x99,0x92,0x82,0xf8,0x80,0x98};uint m; //计数值uint LED0,LED1,LED2,LED3;//各位的数值uchar ms; //用于表示数码管显示位及计算是否10ms到设定定时器T0的工作方式TMOD=0x01; //T0方式1计时1msTL0=0x18;TH0=0xfc;EA=1; //开中断,启动定时器ET0=1;TR0=1;2.动态显示字符的子程序void display(void){switch(ms%4){case 0;P3=0xfe; //点亮百分一秒位的LED数码管P1=table[LED3]; //输出百分一秒位数值P1_7=1;break;case 1;P3=0xfd;P1=table[LED2]; //点亮十分之一秒位的LED数码管P1_7=1; //输出十分之一秒位数值break;case 2;P3=0xfb; //点亮秒位的LED数码管P1=table[LED1]; //输出秒位数值P1_7=0; //点亮小数点位break;case 3;P3=0xf7; //点亮十秒位的LED数码管P1=table[LED0]; //输出十秒位数值P1_7=1;break;default:return;}}3.计算各位显示字符的子程序void add1(time)uint time;{uint n,a;a =time/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口;而中间需要有一定的延时,原因是单片机每一条指令执行的时间很短,如果切换得太快的话,发光二极管都来不及反应,在编程上可以加上一个延时子程序来解决。

具体的程序如下:uchar delay;for(;;){display(); //调用显示子程序for(delay=0;delay<=200;delay++); //延时程序ms++; //点亮下一个数码管}这是一个很简单的动态显示程序,完全按照动态显示的规则来编写的,一般单片机的显示都采用类似的编程方法。

但是这个程序有一个很大的问题,就是延时程序的出现。

延时程序实际上就是使单片机不断地时行递减或递加计数,而在这一段时间内单片机是不能做其他任何事情的。

这显然不符合我们实际应用的要求,因为在实际的应用中单片机除了显示外还有很多其他的事情是要处理的。

实际应用时这个显示程序要进行改写,改写方法和程序将在后面提到。

3.2.2 键盘单片机系统中为了实现对系统的控制和数据的输入,应用系统设置了键盘等输入设备,包括单片机复位作用的复位键,功能转换键及数字输入键等。

在这些按键里面,除了复位键是专门的复位电路和复位功能外,其他的按键都是以开关状态来实现功能的。

关于单片机的复位电路及复位键会在后面的复位电路分析中提到,这里只是对其他的按键的工作原理作讲解。

1)键盘的工作原理键盘的最根本的功能就是当该按键按下后,单片机应用系统能够完成该按键所设定的功能。

相关主题