3分钟带你彻底弄懂数码管的段选与位选

3分钟带你彻底弄懂数码管的段选与位选

数码管是给我们展示数据或者信息的电子器件,它是最原始以及成本比较低。以下是数码管的实物图:

1.1 数码管的段选与位选

以下是数码管的每一段所对应的位置:

从图可以看出来,数码管共有 a、b、c、d、e、f、g、dp 这么 8 个段,而实际上,这 8 个段每一段都是一个 LED 小灯,所以一个数码管就是由 8个 LED 小灯组成的。注意 dp 这个段,它是表示一个小数点!我们看一下数码管内部结构的示意图:

数码管分为共阳和共阴两种:

共阴数码管就是 8 只 LED 小灯的阴极是连接在一起的,阴极是公共端,由阳极来控制单个小灯的亮灭。同理共阳数码管就是阳极接在一起。

看到这里我们就不难猜出,所谓的段选就是选择要点亮数码管中 a、b、c、d、e、f、g、dp 哪些段。

我们假设有多个这样的数码管,例如这样:

该图中的 LED8、LED7、LED6、LED5、LED4、LED3、LED2、LED1 网络标签都是数码管的公共端口 COM,位选指的就是这里,你可以认为里面有8个数码管,在你选择好段选之后,给某个 COM 网络进行选择就相当于选择点亮某个数码管。

下面以一个例子说明:

假设我要在上图从左往右第3个数码管显示“0”,那么“0”对应段选就是点亮 a、b、c、d、e、f,对于共阴数码管,它的表示如下:

数字dp段g段f段e段d段c段b段a段二进制表示十六进制表示0001111110b001111110x3f假设P0端口连接到数码管的各个段,那么给P0端口写入0x3f,再给LED6网络端口置为0电平即可。

相反地,共阳数码管把共阴数码管的位选反转一下:

数字dp段g段f段e段d段c段b段a段二进制表示十六进制表示0110000000b110000000xc0给P0端口写入0xc0,再给LED6网络端口置为1。

1.2 数码管的段选表格

前面我们学习了“0”的表示,下面列出共阴数码管与共阳数码管的表格:

① 共阴数码管表格:

unsigned char code LedChar[]={

0x3F, //"0"

0x06, //"1"

0x5B, //"2"

0x4F, //"3"

0x66, //"4"

0x6D, //"5"

0x7D, //"6"

0x07, //"7"

0x7F, //"8"

0x6F, //"9"

0x77, //"A"

0x7C, //"B"

0x39, //"C"

0x5E, //"D"

0x79, //"E"

0x71, //"F"

0xff, //全亮

0x00 //熄灭

};

② 共阳数码管表格:

unsigned char code LedChar[]={

0xc0,//0

0xf9,//1

0xa4,//2

0xb0,//3

0x99,//4

0x92,//5

0x82,//6

0xf8,//7

0x80,//8

0x90,//9

0x88,//A

0x83,//B

0xc6,//C

0xa1,//D

0x86,//E

0x8e, //F

0x00, //全亮

0xff //熄灭

};

相关推荐