点阵原理就是一个LED的两端都接IO,当正极为1,负极为0时点亮相应的LED。
下面是8×8的LED点阵程序,参考一下吧
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0x00,0x82,0xFE,0x82,0x80,0xC0,0x00,0x00,
0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x00,
0x02,0x0E,0x72,0x80,0x70,0x0E,0x02,0x00,
0x00,0x82,0xFE,0x92,0xBA,0x82,0xC6,0x00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
}
/*delay(uint t)
{
uint a,b
for(a=0a<ta++)
for(b=0b<110b++)
} */
void main(void)
{
uint i,j,xx
uchar bittemp=0x01
while(1)
{
for(i=0i<40i++)
{
for(xx=0xx<500xx++)
{
bittemp=0x80
for(j=0j<8j++)
{
P2=0x00 //消隐
P0= ~TAB[i+8-j]
P2 = bittemp
bittemp >>= 1
}
}
}
}
}
这不仅仅是简单的移位,我也做过,你生成字型码的时候是横着扫描吗?如果是,移位也会横向,如果不是,移位的话会乱码。存放字型码的最好是Uchar code,这样占用数据空间会减小。你移位的时候用中间变量和指针进行 *** 作。还有,你扫码方式,我做的是1/4行扫。你的如果是逐行扫描就不太一样 了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)