该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
刚学,基本看不懂
希望改成显示6个汉字的
#include
#include
#define uchar unsigned char
sbit SCK=P3^6;
sbit LCK=P3^5;
sbit SDI=P3^4;
//一共有16行,每次刷一行的代码
uchar code NUM_HANG[]={};
//数字1的字码
uchar code NUM_ONE[]={};
//汉字“昊”的字码
uchar code CH_CHAR_PU[]={};
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(~NUM_ONE[i],~NUM_ONE[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(~CH_CHAR_PU[i],~CH_CHAR_PU[i+1],NUM_HANG[i],NUM_HANG[i+1]);
}
}
HC595_Send(0xff,0xff,0x00,0x00);
}
}
void HC595_Send(uchar dat1,uchar dat0,uchar dat3,uchar dat2)
{
uchar i;
SCK=1;
LCK=1;
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_();
SCK=1;
_nop_();
_nop_();
}
for(i=0;i<8;i++)
{
SDI=dat3&0x01;//从高位到低位
dat3>>=1;
SCK=0;
_nop_();
_nop_();
SCK=1;
_nop_();
_nop_();
}
LCK=0;//下面是输出时钟
_nop_();
_nop_();
LCK=1;
_nop_();
_nop_();
}