3分钟带你彻底弄懂数码管的段选与位选
Posted Neutionwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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段 | 二进制表示 | 十六进制表示 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0b00111111 | 0x3f |
假设P0
端口连接到数码管的各个段,那么给P0
端口写入0x3f
,再给LED6
网络端口置为0
电平即可。
相反地,共阳数码管把共阴数码管的位选反转一下:
数字 | dp段 | g段 | f段 | e段 | d段 | c段 | b段 | a段 | 二进制表示 | 十六进制表示 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0b11000000 | 0xc0 |
给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 //熄灭
};
以上是关于3分钟带你彻底弄懂数码管的段选与位选的主要内容,如果未能解决你的问题,请参考以下文章
8051单片机实战分析(以STC89C52RC为例) | 05 - 静态数码管驱动