天天看点

数码管的消影

51单片机控制数码管时,出现以下问题:

1、不用的位隐约显示数据

2、不用的段隐约有亮度

3、本位显示上一位数据

 经验证,增加以下注释处代码可明显改进

void display(uchar g, uchar s)

{

    P1 = 0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段数据通过位选锁存器造成混乱

   wela = 1;

   P1 = 0xfe;

   wela = 0;

   P1 = 0x00;//送段选数据前关闭数码管各段,防止打开段选锁存时原来位数据通过段选锁存器

   dula = 1;

   P1 = table[s];

   dula = 0;

   delay1(11);

   P1 = 0x00;//在下一位显示前给段选锁存器存入0x00,防止下一位数码

   dula = 1;//管打开段选时上一位段数据给下一位造成影响

   dula = 0;//同上

   P1 = 0xff;

   wela = 1;

   P1 = 0xfd;

   wela = 0;

   P1 = 0x00;

   dula = 1;

   P1 = table[g];

   dula = 0;

   delay1(11);

   P1 = 0x00;//在下一位显示前给段选锁存器存入0x00,防止下一位数码

   dula = 1;//管打开段选时上一位段数据给下一位造成影响

   dula = 0;//同上

}

继续阅读