//一共有16行,每次刷一行的代码 uchar code NUM_HANG[]={
0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,}; //汉字“机”的字码 uchar code ji[]=
{8,0,136,15,136,8,190,8,136,8,136,8,156,8,172,8,138,8,136,8,136,8,72,40,72,40,40,48,0,0,0,0}; //汉字“电”的字码 uchar code dian[]=
{128,0,128,0,128,0,252,31,132,16,132,16,252,31,132,16,132,16,252,31,132,0,128,32,128,32,0,63,0,0,0,0}; //汉字”工“的字码 Uchar code gong[]=
{0,0,252,31,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,254,63,0,0,0,0,0,0} ; //汉字\程” 的字码 Uchar code cheng[]=
{0,0,176,31,142,16,136,16,136,31,62,0,8,0,152,31,44,2,12,2,138,31,8,2,8,2,200,63,0,0,0,0} ; //汉字\学“的字码 Uchar code xue[]=
{72,8,144,4,0,2,254,63,2,32,2,32,248,7,0,2,128,1,254,63,128,0,128,0,128,0,224,0,0,0,0,0} ; //汉字”院“的字码 Uchar code yuan[]=
{0,2,30,4,210,63,82,32,10,0,138,31,18,0,18,0,210,63,18,9,14,9,130,8,66,40,34,48,0,0,0,0} ;
14
void HC595_Send(uchar dat1,uchar dat0,uchar dat2,uchar dat3); void main() {
uchar i,j; while(1) {
for(j=255;j>0;j--)
//一个字显示的次数,刷256次然后刷第
二个字。
{
for(i=0;i<32;i=i+2) //一共有16行,所以刷16次 {
HC595_Send(~ji[i],~ji[i+1],NUM_HANG[i],NUM_HANG[i+1]);
}
HC595_Send(0xff,0xff,0x00,0x00); for(j=255;j>0;j--) {
for(i=0;i<32;i=i+2) { }
HC595_Send(~dian[i],~dian[i+1],NUM_HANG[i],NUM_HANG[i+1]);
}
}
for(j=255;j>0;j--)
{
for(i=0;i<32;i=i+2) {
HC595_Send(~gong[i],~gong[i+1],NUM_HANG[i],NUM_HANG[i+1]);
}
15
}
for(j=255;j>0;j--)
{
for(i=0;i<32;i=i+2) {
HC595_Send(~cheng[i],~cheng[i+1],NUM_HANG[i],NUM_HANG[i+1]);
}
}
HC595_Send(0xff,0xff,0x00,0x00);
for(j=255;j>0;j--)
{
for(i=0;i<32;i=i+2) {
HC595_Send(~xue[i],~xue[i+1],NUM_HANG[i],NUM_HANG[i+1]);
}
}
for(j=255;j>0;j--) {
for(i=0;i<32;i=i+2) {
HC595_Send(~yuan[i],~yuan[i+1],NUM_HANG[i],NUM_HANG[i+1]); }
}
} }
void HC595_Send(uchar dat1,uchar dat0,uchar dat3,uchar dat2) {
uchar i; SCK=1; LCK=1;
16
for(i=0;i<8;i++) { SDI=dat0&0x01;
dat0>>=1; SCK=0; _nop_(); _nop_(); SCK=1; _nop_(); _nop_();
}
for(i=0;i<8;i++) { SDI=dat1&0x01;
dat1>>=1; SCK=0; _nop_(); _nop_(); SCK=1; _nop_(); _nop_();
}
for(i=0;i<8;i++) { SDI=dat2&0x01;
dat2>>=1; SCK=0; _nop_();
_nop_();
//从高位到低位
//从高位到低位
//从高位到低位
17
}
}
SCK=1; _nop_(); _nop_();
for(i=0;i<8;i++) { }
LCK=0; //下面是输出时钟 _nop_(); _nop_(); LCK=1; _nop_(); _nop_();
SDI=dat3&0x01; dat3>>=1; SCK=0; _nop_(); _nop_(); SCK=1; _nop_(); _nop_();
//从高位到低位
18