为什么后两个数码管在16(0x10)以前没有被消影,16(0x10)的时候最后一个数码管没有消影,17(0x11)以上的时候全部数码管被消影
#include <reg51.h>
void delay(unsigned int i);
unsigned char code Disp_Tab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code dispbit[4]={0x7f,0xbf,0xcf,0xef}; // ??
unsigned char disbuf[4];
void delayms(unsigned int ms)
{
unsigned int a,b,c;
for(a=2;a>0;a--)
for(b=46;b>0;b--)
for(c=ms;c>0;c--);
}
void Led_Disp()
{
unsigned char i;
for(i=0;i<4;i++)
{
P3 = Disp_Tab[disbuf[i]];
P2 = dispbit[i];
delayms(1);
P3 = 0x00;
}
}
main()
{
int firstdat=17;
int seconddat=1;
while(1)
{
disbuf[0]=(((firstdat&0xf0)>>4)&0x0f);
disbuf[1]=firstdat&0x0f;
disbuf[2]=(((seconddat&0xf0)>>4)&0x0f);
disbuf[3]=seconddat&0x0f;
Led_Disp();
/*
P2 = 0x0f;
P0 = 0x06;
delay(600);
P2 = 0xf0;
P0 = 0x07;
delay(600);
*/
}
参考一下这个仿真实例的8位数码管的动态显示,试试