sbit STR=P1^7; //锁存
sbit SCK=P1^6; //时钟
sbit SERr= P0^4; //数据
sbit SERg= P0^5;
sbit SERr1= P0^6;
sbit SERg1= P0^7;
uchar Move,Speed,line; //时间温度变量
uint zimuo; //字模计数器
uchar BUFF[20]; //缓存
uchar BUFF1[20]; //缓存
void DelayMs(void); // 延时
void in_data(); // 调整移动数据
void rxd_data(); // 串口发送移动数据
/******************************************************/
/**************************延时***********************/
void DelayMs(void)
{
uchar TempCyc;
for(TempCyc=250;TempCyc>1;TempCyc--)
{;}
}
/********************************************/
/*主函数*/
void main()
{
Move=0;
zimuo=0;
P0M0=0XFF;
P0M1=0X00;
P1M0=0X0C;
P1M0=0X00;
while(1)
{
while(zimuo<2048)
{
while(Move<16) //数据移位。
{
for(Speed=0;Speed<3;Speed++) //移动速度
{
for(line=0;line<16;line++)
{
in_data(); //调整移动数据
rxd_data();
P0=sw[line];
STR=1;//锁存
STR=0;
STR=1;
DelayMs(); //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。
DelayMs();
DelayMs();
DelayMs();
}
}
Move++; //移动一步
}
Move=0;
zimuo=zimuo+32;
}
zimuo=0;
}
}
/**********************************************************/
void in_data(void) //调整数据
{
char s;
for(s=8;s>=0;s--) //i为向后先择字节计数器,zimuoo为向后先字计数器
{
BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*line]; //把第一个字模的第一个字节放入BUFF0中,第二个字模和第一个字节放入BUFF2中
BUFF[2*s]=hanzi[zimuo+32*s+2*line]; //把第一个字模的第二个字节放入BUFF1中,第二个字模的第二个字节放入BUFF3中
BUFF1[2*s+1]=hanzi1[zimuo+1+32*s+2*line]; //把第一个字模的第一个字节放入BUFF0中,第二个字模和第一个字节放入BUFF2中
BUFF1[2*s]=hanzi1[zimuo+32*s+2*line]; //把第一个字模的第二个字节放入BUFF1中,第二个字模的第二个字节放入BUFF3中
}
}
/***********************发送移动的数据****************************/
void rxd_data(void) //串行发送数据
{
uchar s;
uchar inc,tempyid,temp,k,temp1;
if(Move<8)
inc=0;
else
inc=1;
for(s=0+inc;s<16+inc;s++) //发送16字节数据
{
if(Move<8)
tempyid=Move;
else
tempyid=Move-8;
temp=(BUFF>>tempyid)|(BUFF[s+1]<<(8-tempyid)); //h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的数据。
temp=255-temp;
temp1=(BUFF1>>tempyid)|(BUFF1[s+1]<<(8-tempyid)); //h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的数据。
temp1=255-temp1;
if(zimuo<256)
{
SERg1=SERg=1;
for(k=0;k<8;k++)
{
SCK=0;
SERr=(bit)(temp&0x01);//这里SERr定义成普通IO口就得了
temp=temp>>1;
SERr1=(bit)(temp1&0x01);
temp1=temp1>>1;
SCK=1;
}
}
else
{
SERr=SERr1=1;
for(k=0;k<8;k++)
{
SCK=0;
SERg=(bit)(temp&0x01);//这里SERr定义成普通IO口就得了
temp=temp>>1;
SERg1=(bit)(temp1&0x01);
temp1=temp1>>1;
SCK=1;
}
}
}
}
const uchar code hanzi[]={/*移动显示汉字字模,*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",2*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",3*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",5*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",6*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",2*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",3*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",5*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",6*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",1*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",2*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",3*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",4*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",5*/
0x00,0x00,0x7E,0x3F,0x40,0x21,0x40,0x21,0x42,0x21,0x24,0x12,0x28,0x12,0x10,0x12,0x30,0x0A,0x68,0x04,0xC8,0x04,0x44,0x0A,0x02,0x11,0x81,0x60,0x40,0x20,0x00,0x00,/*"双",0*/
0x20,0x00,0x20,0x00,0xE0,0x0F,0x10,0x04,0x08,0x02,0xFC,0x0F,0x8A,0x08,0x88,0x08,0x88,0x08,0xF8,0x0F,0x08,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0xF0,0x3F,0x00,0x00,/*"色",1*/
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,/*"点",2*/
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,/*"阵",3*/
0x02,0x40,0xE4,0x43,0x24,0x42,0x21,0x4A,0xA2,0x4A,0xAA,0x4A,0xA8,0x4A,0xA4,0x4A,0xA4,0x4A,0xA4,0x4A,0xA3,0x4A,0x82,0x40,0x42,0x41,0x42,0x42,0x22,0x52,0x12,0x20,/*"测",4*/
0x00,0x04,0x02,0x14,0x04,0x24,0x0C,0x24,0xE4,0x7F,0x00,0x04,0x07,0x04,0xE4,0x07,0x84,0x04,0x84,0x08,0x84,0x08,0x84,0x50,0x94,0x53,0x6C,0x60,0x04,0x40,0x00,0x00,/*"试",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,/*"!",6*/
0x04,0x00,0x88,0x1F,0x88,0x10,0xBF,0x10,0xA0,0x10,0x90,0x10,0x88,0x10,0x9C,0x1F,0x2A,0x09,0x29,0x09,0x08,0x09,0x08,0x09,0x88,0x48,0x88,0x48,0x48,0x48,0x28,0x70,/*"祝",7*/
0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x80,0x00,0x40,0x01,0x40,0x01,0x40,0x02,0x20,0x02,0x20,0x04,0x10,0x08,0x08,0x18,0x04,0x70,0x02,0x20,/*"大",8*/
0x40,0x00,0x80,0x00,0xFC,0x7F,0x02,0x20,0xFA,0x17,0x80,0x00,0x40,0x00,0xF0,0x04,0x4E,0x0D,0x20,0x03,0x98,0x03,0x66,0x0D,0x18,0x71,0x06,0x21,0xA0,0x00,0x40,0x00,/*"家",9*/
0x80,0x10,0x08,0x31,0x30,0x13,0x10,0x09,0xFE,0x7F,0x02,0x20,0xF1,0x17,0x00,0x02,0x00,0x01,0xFE,0x7F,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x40,0x01,0x80,0x00,/*"学",10*/
0x00,0x00,0xFC,0x3F,0x00,0x20,0x10,0x20,0x20,0x20,0xC0,0x20,0x80,0x28,0x00,0x26,0x80,0x21,0x60,0x20,0x1C,0x20,0x08,0x20,0x00,0x20,0x00,0x24,0x00,0x28,0x00,0x10,/*"习",11*/
0x80,0x08,0x82,0x08,0x84,0x08,0xEC,0x3F,0x84,0x08,0x80,0x08,0x80,0x08,0xEF,0x7F,0x88,0x08,0x88,0x08,0x48,0x08,0x48,0x08,0x28,0x08,0x14,0x00,0xE2,0x7F,0x00,0x00,/*"进",12*/
0x00,0x01,0x00,0x01,0x10,0x1F,0x10,0x01,0x10,0x01,0xFE,0x7F,0x00,0x01,0x10,0x01,0x10,0x11,0x08,0x31,0x06,0x09,0x00,0x04,0x00,0x03,0xE0,0x00,0x1E,0x00,0x00,0x00,/*"步",13*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 19--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 17--*/
};