當前位置:編程學習大全網 - 編程語言 - 妳好,謝謝,我完善壹下,主芯片類型89c51采用四個74hc595作為16*16點陣顯示芯片,采用c語言編程,

妳好,謝謝,我完善壹下,主芯片類型89c51采用四個74hc595作為16*16點陣顯示芯片,采用c語言編程,

關鍵程序如下:

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端)

  • 上一篇:蘇教版五年級下冊語文第三單元作文
  • 下一篇:電腦高手請進!
  • copyright 2024編程學習大全網