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--*/
};