用51单片机做16×16点阵,P0、P2口接三极管控制列,用74154控制行,但总是出现闪屏

2019-03-24 18:19发布

用51单片机做16×16点阵,P0、P2口接三极管控制列,用74154控制行,但总是出现闪屏,不能成功的显示整个字,没有设置三极管驱动时就可以成功显示,我不知道为什么。实际上单片机的输出电流太小,带不动这么多LED,所以我想更趋近于实际用三极管放大电流。
电路图在附件里,程序如下,希望热心人可以解答,谢谢!

#include<reg51.h>
#define  CCED2  0x0000  /*我  */
unsigned char code word_zai[16][2] = {/*我   CCED2 */
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,
0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,
0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08};
void main()
{  char scan,i,j;
P0=0;P1=0;P2=0;
while(1)
{   scan=0;
for(i=0;i<16;i++)
  {        P1=scan;
        for(j=0;j<50;j++)          //显示50次
  {        P2=word_zai[i][0] ;
    P0=word_zai[i][1]  ;
  }
        P0=0;P2=0;
  scan++;
}
}
}


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
輕疯鸣月
2019-03-25 08:39
for(i=0;i<50;i++)
   for(j=0;j<16;j++)
     { P1=j;
       P0=word_zai[j][0];
       P2=word_zai[j][1];
         //这里最好加延时
             P0=0;//除重影
           P2=0;
      }  
这样写多清晰,for语句是万能的

一周热门 更多>