静态数码管显示
译码器原理:译码器是一种数字电路,用于将输入的二进制信号转换为对应的输出信号。它可以将多个输入线上的不同组合转化为对应的输出线上的激活状态。
常见的译码器有2-4译码器、3-8译码器和4-16译码器等。以3-8译码器为例,它具有3个输入引脚(A, B, C)和8个输出引脚(Y0~Y7)。
译码器的原理是根据输入引脚的不同组合来决定哪个输出引脚被激活。每个输出引脚都与一种二进制组合相对应。当输入引脚与某个二进制组合匹配时,对应的输出引脚会被激活。
例如,当输入引脚为000时,输出引脚 Y0 被激活;当输入引脚为001时,输出引脚 Y1 被激活;以此类推,一直到输入引脚为111时,输出引脚 Y7 被激活。
因此,当需要通过三个引脚控制Y0到Y7时,只需将这三个引脚分别连接到对应的输入引脚上。以二进制数110为例,如果将A引脚接到1、B引脚接到1、C引脚接到0,则Y6引脚会被激活。这样,在不同的输入组合下,就可以实现对输出引脚Y0到Y7的控制。
步骤:控制P22 P23 P23选择Y0~Y7,然后给段码P00~P07数据通过缓冲区控制LED灯a b c d e f g亮灭,从而显示出数字
段码速查:
代码示例:
void main()
{
P2_4 = 1;
P2_3 = 1;
P2_2 = 1; //now we choose Y5 =>LED6 (from left to right)
P0 = 0x7D; //0x7D=0111 1101 ==> dp0 g1 f1 e1 d1 c1 b0 a1
while(1)
{
}
}
现象:从右往左的第六个LED显示出“6”。
代码示例:
#include <regx52.h>
unsigned char table[]={0x3F,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void nixie(unsigned char loc,num){
switch(loc)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0 =table[num];
}
void main()
{
nixie(4,5);
while(1)
{
}
}
现象:nixie(4,5),第四个显示数字5.
数码管消影:
由于时位选和段选交替进行的,由于时间极短,上一次的数据会串到下一个。因此需要延时来做到数码管的动态显示
代码示例:
#include <regx52.h>
void delay(unsigned int xms) //延时函数
{
unsigned char i,j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
unsigned char table[]={0x3F,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void nixie(unsigned char loc,num){
switch(loc)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0 =table[num];
}
void main()
{
while(1)
{
nixie(4,5);
delay(5); //延时消影
nixie(5,2);
delay(5); //延时消影
nixie(6,0);
delay(5); //延时消影
}
}
现象:显示520
数码管驱动方式:
单片机直接扫描:上述代码就是这种方式。硬件设备简单,但会耗费大量的单片机CPU时间
专用驱动芯片:内部自带显存,扫描电路,单片机只需告诉他显示什么即可