基于51单片机的四个8X8点阵组成16X16点阵,实现两种显示方式,左右横移和上下横移
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
void Send_16bit(unsigned char dat_L,unsigned char dat_R,unsigned char hang)
{
unsigned char i;
OE=1; //关闭74HC138输出
RCK=0;
for(i=0;i<8;i++)
{
CLK=0;
if(dat_L&0x80)
DAT=1;
else
DAT=0;
dat_L=dat_L<<1;
CLK=1;
}
for(i=0;i<8;i++)
{
CLK=0;
if(dat_R&0x80)
DAT=1;
else
DAT=0;
dat_R=dat_R<<1;
CLK=1;
}
switch(hang)
{
case 0:LA=0;LB=0;LC=0;LD=0;break;
case 1:LA=1;LB=0;LC=0;LD=0;break;
case 2:LA=0;LB=1;LC=0;LD=0;break;
case 3:LA=1;LB=1;LC=0;LD=0;break;
case 4:LA=0;LB=0;LC=1;LD=0;break;
case 5:LA=1;LB=0;LC=1;LD=0;break;
case 6:LA=0;LB=1;LC=1;LD=0;break;
case 7:LA=1;LB=1;LC=1;LD=0;break;
case 8:LA=0;LB=0;LC=0;LD=1;break;
case 9:LA=1;LB=0;LC=0;LD=1;break;
case 10:LA=0;LB=1;LC=0;LD=1;break;
case 11:LA=1;LB=1;LC=0;LD=1;break;
case 12:LA=0;LB=0;LC=1;LD=1;break;
case 13:LA=1;LB=0;LC=1;LD=1;break;
case 14:LA=0;LB=1;LC=1;LD=1;break;
case 15:LA=1;LB=1;LC=1;LD=1;break;
}
RCK=1;
OE=0;Delay(1);OE=1; //调节延时控制LED亮度
}
void main()
{
unsigned char zi; //字符控制
unsigned char h; //行数变量
unsigned char i;
while(1)
{ //滚动显示
for(zi=0;zi<(16*5);zi++) //
{
for(i=0;i<15;i++)
for(h=0;h<16;h++)
{Send_16bit(~Tab[h*2+2*zi],~Tab[h*2+1+2*zi],h);}//~取反
}
//直接切换
/*for(zi=0;zi<5;zi++)
{
for(i=0;i<100;i++)
for(h=0;h<16;h++)
{Send_16bit(~Tab[h*2+32*zi],~Tab[h*2+1+32*zi],h);}
}*/
}
}
全部资料51hei下载地址:
四个8X8点阵组成16X16点阵.zip
(49.67 KB, 下载次数: 91)
|