|
用proteus做的点阵LED汉字显示滚动。要求同时显示5个字,显示20个字以上。 我自己接了,也生成了一HEX文件,但是点阵屏显示出来的字会逐渐往左显示,但是!也会往上循环显示!而且字不是横着出现,是竖着而且倒的显示出来的。
我用的是10个595移位寄存器和1个154译码器,还想知道怎么知道我是行列扫描还是列行扫描?或者说点阵的引脚接线我接错了???
#include
#include
sbit LSA=P2^3;
sbit LSB=P2^2;
sbit LSC=P2^1;
sbit LSD=P2^0;
sbit YJ_SCK=P1^0;
sbit YJ_RCK=P1^2;
sbit YJ_SA1=P1^1;
void RowLight(row);
void WriteContent(char dat);
unsigned char code tt1[]={自己要显示的汉字字模,这里没有详细列出来};
main()
{
unsigned char i;
unsigned int k,m,x;
char j;
m=sizeof(tt1);
while(1)
{
for(k=0;k
for(i=0;i<16;i++)
{
for(j=4;j>=0;j--)
{
x=32*j+2*i+k;
WriteContent(tt1[(x+1)%960]);
WriteContent(tt1[(x)%m]);
}
RowLight(i);
YJ_RCK=0;
_nop_();
YJ_RCK=1;
_nop_();
}
}
}
void WriteContent(char dat)
{
char i,sd;
for(i=0;i<8;i++)
{
YJ_SCK=0;
_nop_();
sd=dat&0x80;
YJ_SA1=sd;
dat=dat<<1;
YJ_SCK=1;
_nop_();
}
}
void RowLight(row)
{
switch(row)
{
case(0):
LSA=0;LSB=0;LSC=0;LSD=0; break;//0
case(1):
LSA=1;LSB=0;LSC=0;LSD=0; break;//1
case(2):
LSA=0;LSB=1;LSC=0;LSD=0; break;//2
case(3):
LSA=1;LSB=1;LSC=0;LSD=0; break;//3
case(4):
LSA=0;LSB=0;LSC=1;LSD=0; break;//4
case(5):
LSA=1;LSB=0;LSC=1;LSD=0; break;//5
case(6):
LSA=0;LSB=1;LSC=1;LSD=0; break;//6
case(7):
LSA=1;LSB=1;LSC=1;LSD=0; break;//7
case(8):
LSA=0;LSB=0;LSC=0;LSD=1; break;//8
case(9):
LSA=1;LSB=0;LSC=0;LSD=1; break;//9
case(10):
LSA=0;LSB=1;LSC=0;LSD=1; break;//10
case(11):
LSA=1;LSB=1;LSC=0;LSD=1; break;//11
case(12):
LSA=0;LSB=0;LSC=1;LSD=1; break;//12
case(13):
LSA=1;LSB=0;LSC=1;LSD=1; break;//13
case(14):
LSA=0;LSB=1;LSC=1;LSD=1; break;//14
case(15):
LSA=1;LSB=1;LSC=1;LSD=1; break;//15
}
}
file:///D:\我的资料库\Documents\Tencent Files\913058187\Image\C2C\ABR@L}EG44$8@EIBJTYA%IL.png
|
|