数码管是嵌入式开发中比较常用的一个模块,本篇文章根据查阅的资料以及学习笔记整理成文,尽可能详尽的讲解常用数码管原理和使用方法。有不足和疏忽的地方,请不吝指正。
1 工作原理 数码管是一种半导体发光器件,其基本单元是发光二极管。能显示4位数字的叫四位数码管,当然也有多位和只有一位的数码管,他们的电气原理相同。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。2 电气特性 单位数码管有十个管脚,其中有8根是用来点亮a,b,c,d,e,f,dp 共8个发光二极管(原理中有介绍),3,8两个管脚为公共COM脚,它们相连通且作用相同,可接任意一根。为了更清楚介绍,贴图如下


5 关于亮度和锁存器 一般来说静态驱动的亮度要高于动态驱动的亮度,但不影响使用。实际使用中为了达到更好的效果,会配合锁存器如74HC573一起使用,可以记忆先前状态数据直到有新数据覆盖。对做51单片机应用开发来说,相对LCD液晶,液晶模块编程更方便,样式更多样,但是其缺点亮度不够。这也恰恰是数码管的优势,如果做简单的计数显示,数码管是最好选择。#define uchar usigned char #define uint usigned int //位选控制端口 sbit p20=P2^0; sbit p21=P2^1; sbit p22=P2^2; sbit p23=P2^3; //数码管段选编码数组,分别为显示:1,2,3,4的编码 uchar code BianMa[] ={0x7,0xb,0xd,0xe}; //延时1ms函数(用于数码管动态刷新) void Delay1ms(int time); void main(){while(1){ p20 =0; //共阴极数码管低位选有效,表示已选中第一位数码管 P0 =BianMa[0];//通过I/O口P0向数码管送段选编码 Delay1ms(500);//第一位数码管显示0.5秒,然后换到第二位,依次下去, //由于视觉停留和数码管余辉,所以感觉四位都在显示 p20 =1; p21 =0; //第二位亮 P0 =BianMa[1]; Delay1ms(500); p21 =1; p22 =0; //第三位亮 P0 =BianMa[2]; Delay1ms(500); p22 =1; p23 =0; //第四位亮 P0 =BianMa[3]; Delay1ms(500); p23 =1;} //延时函数体 void Delay1ms(int time{ int i,j; for(i =time;i>0;i--) for(j =110;j>0;j--)}
6 使用中注意事项 数码管的基本组成是发光二极管,因此其可以通过的电流只有几mA,接5V直流电源做测试的时候一定要串上一个几十K大小的电阻。否则,很容易烧掉,此外用万用表的测电阻档就可将其点亮,足以说明其电流之小。