数码管知识
●LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成的“8”字型器件。
数码管引脚定义
●单个数码管
● 四位一体数码管
四位一体数码管实际一次也只能显示一个数字,即使多个数码管点亮显示的都是同一个数字;
数码管的动态显示是对每个数码管采用分时复用的方式轮流点亮每个数码管,在同一时间只会点亮一个数码管。
分时复用的扫描显示利用了人眼的视觉暂留特性,如果公共端的控制信号刷新速度足够快,人眼就不会区分出LED的闪烁,认为4个数码管是同时点亮。
●译码器
通过译码器位选,可以选择具体一个LED口,比如CBA的值为3,那么Y3=0,即LED4=0,即选中第5个数码管显示数字
●数码管段码表
0x80 dp亮
数码管静态显示
例:第5个数码管(LED4) 显示数字3,且dp点亮
#include <REGX52.H>
void main()
{
P2_4 = 0; //C
P2_3 = 1; //B
P2_2 = 1; //A
/* 138译码器:CBA的值决定哪个Y口为0,其他Y口都为1;也即选中LED(Y+1)口为0;*/
P0 = 0x4F+0x80; //1100 1111; //P0的每一位决定dp,g,f,e,d,c,b,a
while(1);
}
模块化封装
只需要将需要点亮的数码管编号和显示的数字提供给接口
#include <REGX52.H>
unsigned char NixieTable[] = {
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};
void NixieTube( unsigned char NixieTubeNum,digit,dp