不能在同一个时刻显示数字
解决:动态扫描,依次显示,利用人眼延迟
三八译码器选择哪个led亮
74hc245是双向数据缓冲器可以实现数据的双向流动,dir端口控制,高电平将数据从a送到b,低电平反过来,但我们这里是只显示led所以将接到le上le的vcc高电平。
P2_2=0;
P2_3=1;
P2_4=1;//011第三个led显示
P0=0X7D;//控制显示6
我们可以写一个函数更加优化
include <REGX52.H>
unsigned char numbertable[]=[0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,
0x71,0x00];
void xianshi(unsigned char location,number)
{
switch(location)
{
case 1:P2_2=1;P2_3=1;P2_4=1;break;//第几个led显示
case 2:P2_2=1;P2_3=1;P2_4=0;break;
case 3:P2_2=1;P2_3=0;P2_4=1;break;
case 4:P2_2=1;P2_3=0;P2_4=0;break;
case 5:P2_2=0;P2_3=1;P2_4=1;break;
case 6:P2_2=0;P2_3=1;P2_4=0;break;
case 7:P2_2=0;P2_3=0;P2_4=1;break;
case 8:P2_2=0;P2_3=0;P2_4=0;break;
}
P0=numbertable[number];//使用数组来赋值
}
void main()
{
xianshi(3,7);//第三个led显示4
while(1){
}
}