本来想使用译码器的,但是始终有些问题,所以就干脆直接用8051的IO口了……5555这不算是成功啊~!
下面是电路图:
在制作的时候,发现显示的时候,总是会有一部分的LED灯乱闪,也就是乱吗,在网上找了大半天,也没有发现什么比较好的解决办法,后来还是同学给我说了一下别人的程序和我的程序的区别,我才试着去更改程序,后来真的解决了。本来我的显示方式是分别显示完每个8×8点阵,最后把四个拼在一起,可能是这种显示的方法,出现了乱码,后来改为,使用P2口扫描上半部分是,分别给P0和P1送数据,直到显示完上面的八行……然后在显示下边P3口控制的8行。
也就是说,把显示码间隔的送给每个8×8小模块,最后乱码就消失了……我不知道设置了显示缓冲区是否会不会也可以解决这个问题。呵呵,希望会有帮助……
附程序:(低电平点亮)
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ji[]={
0xFF,0xBF,0xC8,0xEE,0x7F,0x9F,0xDE,0xF1,0xEE,0xDE,0x1E,0xDE,0xDE,0xDD,0xDB,0xDF,
0x7F,0xBB,0x01,0xEF,0x5F,0xBF,0x4F,0xF1,0xEB,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF
};
uchar code nan[]={
0xFE,0xFE,0x00,0xFE,0xFE,0x80,0xB7,0xBB,0xA0,0xBE,0xBE,0xA0,0xBE,0xBE,0xBE,0xBF,
0xFF,0xFB,0x01,0xFF,0xFB,0x01,0xDB,0xBB,0x0B,0xFB,0xFB,0x0B,0xFB,0xFB,0xEB,0xF7
};
uchar code zhi1[]={
0xFB,0x01,0xDB,0xDB,0xC3,0xDB,0xDB,0xC3,0xDB,0xDB,0xD8,0x03,0xBB,0xFB,0xFA,0xFB,
0xFF,0xFB,0x01,0x7B,0x7B,0x7B,0x7B,0x7B,0x03,0x7B,0xB7,0xB7,0x7B,0x79,0xFD,0xFF
};
uchar code ye[]={
0xFB,0xFB,0xFB,0xFB,0xBB,0xDB,0xDB,0xEB,0xEB,0xEB,0xEB,0xFB,0xFB,0xFB,0x00,0xFF,
0xBF,0xBF,0xBF,0xBF,0xBB,0xBB,0xB7,0xB7,0xAF,0xAF,0x9F,0xBF,0xBF,0xBB,0x01,0xFF
};
uchar code xue[]={
0xDD,0xEE,0xEE,0xFF,0x80,0xBF,0x7F,0xE0,0xFF,0xFE,0x00,0xFE,0xFE,0xFE,0xFA,0xFD,
0xF7,0xF7,0xEF,0xDF,0x01,0xFD,0xFB,0x1F,0xBF,0x7B,0x01,0xFF,0xFF,0xFF,0xFF,0xFF
};
uchar code yuan[]={
0xFF,0x87,0xB0,0xAB,0xA7,0x9C,0xAF,0xB7,0xB0,0xB7,0x97,0xAF,0xBE,0xBE,0xBD,0xB3,
0x7F,0xBF,0x01,0xFD,0xEB,0x07,0xFF,0xF7,0x03,0x5F,0x5F,0x5F,0xDD,0xDD,0xE1,0xFF
};
uchar code dian[]={
0xFD,0xFD,0xFD,0x80,0xBD,0xBD,0x80,0xBD,0xBD,0x80,0xBD,0xFD,0xFD,0xFD,0xFE,0xFF,
0xFF,0xFF,0xEF,0x07,0xEF,0xEF,0x0F,0xEF,0xEF,0x0F,0xEF,0xFF,0xFB,0xFB,0x03,0xFF
};
uchar code zi[]={
0xFF,0xC0,0xFF,0xFF,0xFF,0xFE,0xFE,0x00,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFA,0xFD,
0xFF,0x0F,0xEF,0xDF,0xBF,0x7F,0xFB,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
uchar code gong[]={
0xFF,0xFF,0x80,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0xFF,0xFF,
0xFF,0xF7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x01,0xFF,0xFF
};
uchar code cheng[]={
0xF7,0xE2,0x0E,0xEE,0xEE,0x00,0xEE,0xC7,0xC8,0xAB,0xAF,0x6E,0xEF,0xEF,0xE8,0xEF,
0xFB,0x01,0xFB,0xFB,0xFB,0xFB,0x03,0xFF,0x01,0xDF,0xD7,0x03,0xDF,0xDB,0x01,0xFF
};
uchar code xi[]={
0xFF,0x80,0xFB,0xFB,0xF7,0xC0,0xFE,0xFD,0xFB,0xC0,0xFE,0xF6,0xF6,0xEE,0xDA,0xFD,
0xC7,0x3F,0xFF,0xEF,0xDF,0x3F,0xFF,0xDF,0xEF,0x07,0xF7,0xDF,0xEF,0xF7,0xF7,0xFF
};
uchar code qi[]={
0xEF,0xEF,0xE0,0xDF,0xD0,0xBF,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF7,0x03,0xFF,0x0F,0xFF,0x1F,0xDF,0xDF,0xDF,0xDF,0xDF,0xDD,0xED,0xF5,0xFB
};
uchar code er[]={
0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,
0xFF,0xFF,0xEF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x01,0xFF,0xFF,0xFF
};
uchar code ban[]={
0xFE,0xF6,0x02,0xDE,0xDA,0xDA,0xDA,0x0A,0xDA,0xD6,0xDE,0xDD,0xC5,0x1D,0xBB,0xF7,
0xFF,0xFB,0x81,0xEF,0xEF,0xEF,0xEF,0x83,0xEF,0xEF,0xEF,0xEF,0xEF,0xEB,0x01,0xFF
};
uchar code zhu[]={
0xFE,0xEE,0xEE,0xE0,0xEE,0xDE,0xFE,0x00,0xFC,0xFA,0xF6,0xEE,0xDE,0x3E,0xFE,0xFE,
0xFF,0xFF,0xEF,0x07,0xFF,0xFF,0xFB,0x01,0xFF,0x7F,0xBF,0xCF,0xF1,0xFB,0xFF,0xFF
};
uchar code zhi2[]={
0xFE,0xFE,0xFE,0x00,0xFE,0xFE,0xFE,0xC0,0xFF,0xFD,0xEE,0xAF,0xAF,0x6F,0xF0,0xFF,
0xFF,0xFF,0xFB,0x01,0xFF,0xFF,0xEF,0x07,0xFF,0xFF,0x7F,0x7B,0xED,0xED,0x0F,0xFF
};
uchar code qiang[]={
0xF7,0x02,0xF6,0xF6,0xF6,0x86,0xB7,0xBC,0xBD,0x85,0xF4,0xF5,0xF7,0x77,0xAC,0xDF,
0xFB,0x01,0xFB,0xFB,0x03,0xDB,0xDF,0x01,0xDD,0xDD,0x01,0xDD,0xDF,0xDB,0x01,0xFD
};
uchar code zuo[]={
0xEF,0xED,0xED,0xDD,0xC0,0x9D,0x5D,0xDD,0xD0,0xD7,0xD7,0xD7,0xD7,0xD0,0xD7,0xDF,
0xDF,0xDF,0xDF,0xDB,0x01,0x7B,0xBB,0xBB,0x37,0x57,0x57,0x6F,0x57,0x57,0xB9,0x7B
};
void delay(unsigned char ms)
{
unsigned int i;
while(ms--)
{
for(i = 0; i<10; i++)
{ }
}
}
void disp(unsigned char word[])
{
uint m;
for(m=0;m<20;m++)
{
unsigned int i;
P2=0x01;
for(i=0;i<8;i++)
{
P0=word;//显示左边前八行
P1=word[i+16];//右边的前八行
delay(5);
P2<<=1;
}
P3=0x01;
for(i=8;i<16;i++)
{
P0=word;//左半边后八行
P1=word[i+16];//右边后八行
delay(5);
P3<<=1;
}
}
}
void main()
{
delay(500);
while(1)
{
disp(ji);//济
disp(nan);//南
disp(zhi1);//职
disp(ye);//业
disp(xue);//学
disp(yuan);//院
disp(dian);//电
disp(zi);//子
disp(gong);//工
disp(cheng);//程
disp(xi);//系
disp(dian);//电
disp(qi);//气
disp(er);//二
disp(ban);//班
disp(zhu);//朱
disp(zhi2);//志
disp(qiang);//强
disp(zuo); // 做
}
}
时间:2009.12
文章评论(0条评论)
登录后参与讨论