单片机控制74hc595问题。。。

2025-03-01 23:23:52
推荐回答(3个)
回答1:

595的数据发送是这样的:
void HC595_senddata(unsigned char dat)
{ unsigned char i; for(i=0;i<8;i++) //发送一个八位数据
{ if((dat< else MOSIO=1; //否则发送1;
SH_CLK=0; //SH_CLK的上升沿,将数据送进移位寄存器;
NOP();
NOP();
SH_CLK=1;
}
ST_CLK=0; //ST_CLK的上升沿,将数据由移位寄存器送到存储寄存器
NOP(); //并输出到Q0—Q7并口
NOP();
ST_CLK=1;
}

你上面的程序里有问题 的,还有一个不要用累加器作变量用.累加器的值一直变化的.

回答2:

void clr_595(uchar d1)有问题
这个。。不大清楚

回答3:

改好了,试试看:
void clr_595(uchar d1)
{
uchar c;
ACC = d1;
stp = 0;
for(c = 8; c > 0; c--) {
ds1 = acc0;
shp = 1;
ACC = ACC >> 1;
shp = 0;
// delay(5); //删除此行。移动输出一个位,不应该延时的
// c--; //删除此行。它是错误的,难道你想仅仅输出四位数?
}
stp = 1;
}