你好,谢谢,我完善一下,主芯片类型89c51采用四个74hc595作为16*16点阵显示芯片,采用c语言编程,
你好,谢谢,我完善一下,主芯片类型89c51采用四个74hc595作为16*16点阵显示芯片,采用c语言编程,不要求可循环,也不要求颜色,静态显示。显示“你好中国”。...
你好,谢谢,我完善一下,主芯片类型89c51采用四个74hc595作为16*16点阵显示芯片,采用c语言编程,不要求可循环,也不要求颜色,静态显示。显示“你好中国”。
展开
1个回答
展开全部
关键程序如下:
uint arr[]={ 0x7fff,0xffff,0xffff,0xffff},*p=arr ;
void delay (void)
{
TMOD=0X01;
TR0=1;
TH0=0X63;
TL0=0X18;
while(!TF0);
TF0=0;
TR0=0;
}
void ST595(void)
{
ST=0;
_nop_();
_nop_();
ST=1;
_nop_();
_nop_();
ST=0;
}
void tiaoduan (void)
{
uchar i;
}
void main (void)
{
uint x1,i, x3=0x0001;
PK8255=0x80;
while(1)
{
for(b=0;b<64;b++)
{
for(c=0;c<5;c++)
for(a=0;a<16;a++)
{
for(i=0;i<4;i++)
{
for(x1=0;x1<16;x1++)
{
SH=0;
DS=p[i]&x3;
_nop_();
_nop_();
SH=1;
x3=x3<<1|x3>>15;
SH=0;
}
arr[i]=arr[i]<<15|arr[i]>>1;
}
ST595();
PA8255=0x00;
PB8255=0x00;
if((a+b)<64)
{
PA8255=hzdot[a+b+(a+b)/16*16];
PB8255=hzdot[a+b+(a+b)/16*16+16];
}
else
{
PA8255=hzdot[a+b+(a+b)/16*16-64];
PB8255=hzdot[a+b+(a+b)/16*16-48];
}
}
for(i=0;i<4;i++)
{
if(p[3]&0x0001==0) //goto LP;
{
p[0]=0x7fff;
p[3]=0xffff;
break;
}
if((~p[i]!=0)&&(p[i]&0x0001!=0))
{
p[i]=p[i]<<15|p[i]>>1;
}
else if((~p[i]!=0)&&(p[i]&0x0001==0))
{
p[i]=0xffff;
p[i+1]=0x7fff;
break;
}
}
}
// LP:arr[0]=0x7fff; arr[1]=0xffff;
}
两个74HC595接线图如下:
sbit DS=P1^0; DS 串行数据输入
sbit SH=P1^1; SHCP 移位寄存器时钟输入
sbit ST=P1^2; STCP 存储寄存器时钟输入
MR 主复位(接高电平)
OE 输出有效(接低电平)
Q7’ 串行数据输出(本土采用两级级联,Q7接下级的DS端)
uint arr[]={ 0x7fff,0xffff,0xffff,0xffff},*p=arr ;
void delay (void)
{
TMOD=0X01;
TR0=1;
TH0=0X63;
TL0=0X18;
while(!TF0);
TF0=0;
TR0=0;
}
void ST595(void)
{
ST=0;
_nop_();
_nop_();
ST=1;
_nop_();
_nop_();
ST=0;
}
void tiaoduan (void)
{
uchar i;
}
void main (void)
{
uint x1,i, x3=0x0001;
PK8255=0x80;
while(1)
{
for(b=0;b<64;b++)
{
for(c=0;c<5;c++)
for(a=0;a<16;a++)
{
for(i=0;i<4;i++)
{
for(x1=0;x1<16;x1++)
{
SH=0;
DS=p[i]&x3;
_nop_();
_nop_();
SH=1;
x3=x3<<1|x3>>15;
SH=0;
}
arr[i]=arr[i]<<15|arr[i]>>1;
}
ST595();
PA8255=0x00;
PB8255=0x00;
if((a+b)<64)
{
PA8255=hzdot[a+b+(a+b)/16*16];
PB8255=hzdot[a+b+(a+b)/16*16+16];
}
else
{
PA8255=hzdot[a+b+(a+b)/16*16-64];
PB8255=hzdot[a+b+(a+b)/16*16-48];
}
}
for(i=0;i<4;i++)
{
if(p[3]&0x0001==0) //goto LP;
{
p[0]=0x7fff;
p[3]=0xffff;
break;
}
if((~p[i]!=0)&&(p[i]&0x0001!=0))
{
p[i]=p[i]<<15|p[i]>>1;
}
else if((~p[i]!=0)&&(p[i]&0x0001==0))
{
p[i]=0xffff;
p[i+1]=0x7fff;
break;
}
}
}
// LP:arr[0]=0x7fff; arr[1]=0xffff;
}
两个74HC595接线图如下:
sbit DS=P1^0; DS 串行数据输入
sbit SH=P1^1; SHCP 移位寄存器时钟输入
sbit ST=P1^2; STCP 存储寄存器时钟输入
MR 主复位(接高电平)
OE 输出有效(接低电平)
Q7’ 串行数据输出(本土采用两级级联,Q7接下级的DS端)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询