|
发表于 2011-4-16 20:11:47
|
显示全部楼层
给你个8*8的这是左移的思路!定义一个要显示的数组:例如a[]={};将a[0]的元素赋值给a[7];a[1]的赋值给a[0];a[2]的赋值给a[1];a[3]的赋值给a[2];一次类推!反过来右移动的是将a[0]的赋值给a[1];a[1]的赋值给a[2];a[2]的赋值给a[3]给你个程序看看!
#include <reg52.H>
unsigned char dis[][8]={ //注:不同的硬件电路,字模也不一样
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//黑屏
{0x3C,0x66,0x66,0x66,0x66,0x66,0x66,0x3C},//0
{0x18,0x1C,0x18,0x18,0x18,0x18,0x18,0x3C},//1
{0x1C,0x3E,0x36,0x30,0x18,0x0C,0x3E,0x3E},//2
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//黑屏
};
unsigned char ROW[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //选通行
void delay(unsigned int time)
{
while(time>0)
time--;
}
main()
{
unsigned char x=0,speed,j,k,n=0;
speed=5;//修改这里可以改变移动速度;值越大越慢
while(1){
for(k=0;k<speed;k++){
for(j=0;j<8;j++){
P2=~((dis[n][j]>>x)|(dis[n+1][j]<<(8-x)));//实现移动主要是这句话
P0=ROW[j];
delay(300);
}
}
x++;
if(x==8){
x=0;
n++;
if(n>3)
n=0;
}
}
} |
|