用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++;
}
}
}
此帖出自
小平头技术问答
for(j=0;j<16;j++)
{ P1=j;
P0=word_zai[j][0];
P2=word_zai[j][1];
//这里最好加延时
P0=0;//除重影
P2=0;
}
这样写多清晰,for语句是万能的
我想提高显示次数来延时。我按你说的改用延时函数来做,结果还是不行
一周热门 更多>