1.简介
数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件。二极管箭头由高电平指向低电平(阳极指向阴极)。管脚的定义有两种:下图中右上的为共阴极、右下的为共阳极。
当使用共阴极管脚数码管时,只有当阴极接地(0)(位选),阳极接高电平(1)(段选),才能点亮对应的二极管。
当使用共阳极管脚数码管时,只有当阴极接高电平(1)(位选),阳极接地(0)(段选),才能点亮对应的二极管。
点亮的核心原理是二极管连接的两端需要存在电势差。
数码管的应用/1-1.png)
在普中A2开发板中,数码管定义如下图所示:
数码管的应用/1-2.png)
在普中A2开发板中,74HC138定义如下图所示:
数码管的应用/1-3.png)
2.位选与段选
在上述两图中可以看出:数码管的位选(即第几个数码管亮)是由74HC138控制的,在P22-P24(P24为高位)中输入对应的二进制,就会在右侧Y0-Y7的对应位置(对应数码管阴极)输出低电平(0),从而完成位选。例如,在普中A2开发板中,P22-P24的电平应有如下对应关系:
P24 | P23 | P22 | |
---|---|---|---|
LED1 | 0 | 0 | 0 |
LED2 | 0 | 0 | 1 |
LED3 | 0 | 1 | 0 |
LED4 | 0 | 1 | 1 |
LED5 | 1 | 0 | 0 |
LED6 | 1 | 0 | 1 |
LED7 | 1 | 1 | 0 |
LED8 | 1 | 1 | 1 |
数码管的段选由74HC24读取P00-P07的数据,缓存后输出给数码管的阳极。数码管与P00-P07有如下对应关系:
P00 | P01 | P02 | P03 | P04 | P05 | P06 | P07 |
---|---|---|---|---|---|---|---|
a | b | c | d | e | f | g | dp(小数点) |
这样,先位选后段选,我们就能自由控制哪一位亮什么图案了。
常见的数码管段码如下图:
数码管的应用/1-4.png)
3.消影
数码管只能做到同时选中一位,如果需要实现同时亮多位,需要以很快的速度循环显示,即:
位选→段选→位选→段选→位选→段选→位选→段选→……
但这样会产生重影,因为在一次【位选→段选】结束,下一次位选来临时,由于新的段选还未执行,因此新的位选会直接先对老段选显示。
想要消影就需要在每次【位选→段选】后加一步段选清零,这样在下一个位选到来的时候,就不会显示上一个段选了。
同时,为了防止频繁段选清零导致整体亮度变暗,在段选后清零前应当加入一段延时,1ms即可。这样,流程就变成了:
位选→段选→延时→→位选→段选→延时→段选清零→位选→段选→延时→段选清零→…
示例代码如下:
1 | void NiXie(unsigned char location,number) |