使用38译码器驱动动态数码管
1、为什么引入38译码器
(1)38译码器的作用:用3个IO口来控制8路输出。
(2)用38译码器驱动数码管的意义:
原来不用38译码器时,8个动态数码管一共使用2个IO端口(16个引脚),现在使用了38译码器后,我们可以用38译码器的3路输入来控制数码管的8路位码,这样总共只需要3+8=11个IO引脚就可以来驱动8个动态教码管了,省了5个IO口。
有图得:C是高位,A是低位。
J15连接J16,J6连接单片机的P1引脚。
C接P1.2,B接P1.1,A接P1.0
2、测试
#include <REGX51.H>
void main(void)
{
P0 = 0x06;//显示数字1
P1 = 0X01;//第2个led灯亮
}
3、动态数码管显示编程实战
8个联排数码管依次显示12345678
#include <REGX51.H>
void delay(void)
{
unsigned char k = 200;
unsigned char h = 200;
while(k--)
{
while(h--);
}
}
void main(void)
{
unsigned char i[8] = {0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f};//依次显示1到8
unsigned char j[8] = {0x00,0x01,0x02,0x03,
0x04,0x05,0x06,0x07};//译码器依次选择LED灯
unsigned char m;
while(1)
{
for(m=0 ;m<=7 ;m++)
{
P1 = j[m];//从左到右依次亮
P0 = i[m];//依次显示1到8
delay();
}
}
}