毕业设计--基于单片机的转速测量系统设计

Delay (); //返回延时函数// LED=1; //LED亮// Delay (); //反回延时函数// } }

4.5显示部分设计

(1)许多电子产品上都有跳动的数码来指示电器的工作状态,其实数码管显示的数码均是由八个发光二极管构成的。每段上加上合适的电压,该段就点亮。

LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC和GND。再把多个这样的8字装在一起就成了多位的数码管了。实物如图4.12

图4.12 数码管

共阳型(图4.13)就是八个发光管的正极都连在一起 ,作为一条引线.A~G段用于显示数字,字符的笔画,(dp显示小数点),每一段控制A~G~dp的亮与来。

内部结构:

图4.13 共阳型LCD

共阴型(图4.14)就是七个发光管的负极都连在一起 ,作为一条引线。A~G段用

第 21 页 共42页

于显示数字,字符的笔画,(dp显示小数点),每一段控制A~G~dp的亮与来.

内部结构:

4.14 共阴型LCD

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 (2)段码表 表4-2为LED段码表

第 22 页 共42页

表4-2 LED段码表 显示字符 0 1 2 3 4 共阴极段选码 3FH 06H 5BH 4FH 66H 共阳极段选码 C0H F9H A4H B0H 99H 显示字符 共阴极段选码 共阳极段选码 92H 82H F8H 80H 90H 5 6 7 8 9 6DH 7DH 07H 7BH 6FH (3)动态显示仿真(图4.15)

图4.15 动态显示仿真图

动态显示程序: #include #define uchar unsigned char #define uint unsigned int

uint mm=1234; //显示1234// uchar jj;

uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};

第 23 页 共42页

delay(uint m) { uint i,j; for(i=m;i>0;i--) for(j=110;j>0;j--); }

xian_shi() { uchar qian,bei,shi,ge; qian=mm/1000; bei=mm00/100; shi=mm0/10; ge=mm; P2=0x80; P0=table[qian]; delay(50); P2=0; P2=0x40; P0=table[bei]; delay(50); P2=0; P2=0x20; P0=table[shi]; delay(50); P2=0; P2=0x10; P0=table[ge]; delay(50); P2=0; }

第 24 页 共42页

5.系统软件设计

硬件电路完成以后,进行系统软件设计。首先要分析系统对软件的要求,然后进行软件的总体的设计,包括程序的总体设计和对程序的模块化设计。按整体功能分为多个不同的模块,单独设计、编程、调试,然后将各个模块装配联调,组成完整的软件。

根据设计的要求,单片机的任务是:内部进行计数,在计算出速度后显示。软件编程用C语言完成的,需要能掌握C语言,还要熟练AT89C51单片机。从程序流程图、编写程序、编译,到最后的调试,是很复杂的。下面作简单介绍:系统软件主程序的功能是完成系统的初始化、显示程序。

5.1 主程序初始化

(1).定时器的初始化

AT89C51有两个定时器/计数器T0和T1,每个定时器/计数器均可设置成为16

位,也可以设置成为13位进行定时或计数。计数器的功能是对T0或T1外来脉冲的进行计数,外部输入脉冲负跳变时,计数器进行加1。

定时功能是通过计数器的计数来实现的,每个机器周期产生1个计数脉冲,即每个机器周期计数器加1,因此定时时间等于计数个数乘以机器周期。定时器工作时,每接收到1个计数脉冲(或机器周期)则在设定的初值基础上自动加1,当所有位都位1时,再加1就会产生溢出,将向CPU提出定时器溢出中断身请。当定时器采用不同的工作方式和设置不同的初值时,产生溢出中断的定时值和计数值将不同,从而可以适应不同的定时或计数控制。

定时器有4种工作方式:方式0、方式2、方式2和方式3,在此对工作方式不做具体介绍。

工作方式寄存器TMOD的设定:

GATE C/T M1- M0 GATE C/T M1 M0 TMOD各位的含义如下:

◆GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。 ◆C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时

方式。

第 25 页 共42页

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4