1、,2018/6/11,1,3.4 LED数码管原理与编程,1.认识LED数码管,LED显示元件是常见的人机交互输出设备,其作用是指示中间运行结果与运行状态。LED种类较多,常见的LED如图所示。,图1 LED实物图,(1)单个LED的驱动,常见的单个LED的驱动电路如下图所示电路,(a)图中端口引脚输出低电平,则LED点亮,R1为限流电阻,避免流过LED电流过大。(b)图中端口引脚输出低电平,则Q1导通,LED点亮,R2为限流电阻。,图2 常见的单个LED驱动电路,(2)单个数码管的驱动,将多个LED封装在一起,即可构成笔划式数码管。 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,
2、根据各管的亮暗组合成字符。,七段式LED显示器有两种结构:共阴极接法和共阳极接法,共阴极接法。把发光二极管的阴极连在一起构成阴极公共引脚com。使用时阴极公共引脚接地,这样阳极引脚上加高电平的发光二极管就导通点亮,而加低电平的则不点亮。, 共阳极接法。把发光二极管的阳极连在一起作为阳极公共引脚com。使用时阳极公共引脚接+5 V。这样阴极引脚上加低电平的发光二极管即可导通点亮,而加高电平的则不点亮。,单个数码管的引脚配置为:,com端为公共端,使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。静态显示时,推荐使用1015mA驱动电流;动态扫描时,平均电流45 mA。由于常规的数码管起辉
3、电流只有12 mA,最大极限电流也只有1030 mA,所以它的输入端在5 V电源或高于TTL高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。,2.数码管的字形编码与显示方式,(1)数码管的字形编码,数码管的8段正好组成一个字节。当单片机的并行口P0P3驱动数码管时,通常要求数据位D0D7分别与数码管的a、b、c、dp对应相连,即数据位D0驱动a字段,数据位D1驱动b字段,依此类推,如表1所示。,表1 数据位与各显示段的对应关系,当单片机P1口驱动数码管时,P1口各管脚与数码管各显示段的连接关系如图所示。,(a) 与共阳极数码管相连 (b) 与共阴极数码管相连 图 单片机
4、并行口与数码管的连接关系,单片机P1口驱动数码管时,无论是驱动共阴极还是共阳极数码管,P1口各管脚与数码管的连接关系相同,如图所示,单片机其它并行口和数码管各显示段的对应连接关系与P1口相同。,字形编码(段码)的值与数码管公共引脚的接法(共阳极和共阴极)有关。显示十六进制数的段码值在下表中。,实例:LED数码管显示,原理图如下图所示,使之循环显示0-9数字。,段码的读取方法:将段码按显示值大小顺序存入一个数组中。使用时,只需将待显示值最为该数据的下标变量即可取得相应的段码。,unsigned char duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0
5、x7f,0x6f;,分析:将显示码循环输出到P0口即可实现循环显示。但由于数字09的显示段码没有规律可循,需要采取查表方式进行操作:,将显示码按序存放在一个数组中, 顺序号与代表的显示字符相对应。(如,char led_mod =x1,x2,.,xn通过循环变量指定待送出的数组元素,参考程序,#include#define uint unsigned int#define uchar unsigned charuchar duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴“0”“9”uchar i;void delay(uin
6、t z)uint x,y;for(x=z;x0;x-)for(y=125;y0;y-);,void main() while(1) for(i=0;i0;x-)for(y=125;y0;y-);void main()unsigned char i;While(1) for(i=0;i0;x-) for(y=125;y0;y-);void main()unsigned char i;While(1)for(i=0;i0;x-) for(y=125;y0;y-);, if(button=0) for(i=0;i2;i+)P3=weii;P2=duani;delay(10); else for(i=0;i2;i+)P3=weii; P2=duani+2;delay(10);,void main() uchar i; while(1),运行效果,