/
//
// at89s52 LED点阵汉字显示
// 作者:倪建华 QQ:10772919
// 江苏省南通技师学院
// 2014.5.30
//
//
//
sfr P0=0x80;
sfr P2=0xa0;
sbit ROW0=P2^0;
sbit ROW1=P2^1;
sbit COL0=P2^2;
sbit COL1=P2^3;
sbit COL2=P2^4;
sbit COL3=P2^5;
//YL-236自带 zimo221软件,横向取模,字节倒序
unsigned char zm[]=
{
/*-- 文字: 点 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x00,0x80,0x00,0x80,0x1F,0x80,0x00,0x80,0x08,0xF8,0x1F,0x08,0x08,0x08,0x08,
0x08,0x08,0xF8,0x0F,0x08,0x08,0x80,0x08,0x14,0x11,0x24,0x22,0x22,0x22,0x00,0x00,
/*-- 文字: 阵 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x01,0x1F,0x01,0x11,0x01,0xE9,0x3F,0x85,0x00,0x89,0x02,0x51,0x02,0xF1,0x3F,
0x11,0x02,0x15,0x02,0xE9,0x7F,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,
};
ys(int ms)
{
int k,d;
for(k=0;k<ms;k++)for(d=0;d<123;d++);
}
main()
{
unsigned char x,y,s,k;
while(1)
for(k=0;k<16;k++)//从上往下扫描16行
{
x=k/8;//k>>3,扫描上半个和下半个汉字
y=k%8;//k&7;,从上往下扫描8行
P0=0;//行消隐,很重要
ROW1=1;ROW1=0;
ROW0=1;ROW0=0;
P0=1<<y;//行扫描
ROW1=x;ROW1=0;
ROW0=x+1;ROW0=0;
s=x*16+y*2;//每行两个字节,(y<<1);半个汗字16个字节,x<<4;
P0=zm[s+0];//左半个
COL0=1;COL0=0;
P0=zm[s+1];//右半个
COL1=1;COL1=0;
P0=zm[s+32+0];//左半个
COL2=1;COL2=0;
P0=zm[s+32+1];//右半个
COL3=1;COL3=0;
ys(1);//>1ms时明显闪烁
}
}
下面是仿真原理图