嗨 您把74595的Code改成這樣看看
void HC595SendData(uchar dat1,uchar dat2,uchar dat3) { uchar i; //開始送資料 HC_LATCH = 0; //set dataline low //--发送第一个字节--// for(i=0;i<8;i++) { HC_DATA = dat1 >> 7 ; //从高位到低位 dat1 <<= 1; HC_CLK = 0; HC_CLK = 1; } //--发送第二个字节--// for(i=0;i<8;i++) { HC_DATA = dat2 >>7; //从高位到低位 dat2 <<= 1; HC_CLK = 0; HC_CLK = 1; } //--发送第三个字节--// for(i=0;i<8;i++) { HC_DATA = dat3 >> 7; //从高位到低位 dat3 <<= 1; HC_CLK = 0; HC_CLK = 1; } //--输出--// HC_LATCH = 1; //片选 }
那再改為以下試看看
void HC595SendData(uchar dat1,uchar dat2,uchar dat3) { uchar i; //開始送資料 HC_LATCH = 0; //set dataline low //--发送第一个字节--// for(i=0;i<8;i++) { HC_DATA = dat1 >> 7 ; //从高位到低位 dat1 <<= 1; HC_CLK = 0; HC_CLK = 1; } //--发送第二个字节--// for(i=0;i<8;i++) { HC_DATA = dat2 >>7; //从高位到低位 dat2 <<= 1; HC_CLK = 0; HC_CLK = 1; } //--发送第三个字节--// for(i=0;i<8;i++) { HC_DATA = dat3 >> 7; //从高位到低位 dat3 <<= 1; HC_CLK = 0; HC_CLK = 1; } //--输出--// HC_LATCH = 1; //片选 Delay(50); HC_LATCH = 0; //set dataline low }