单片机控制74hc595问题。。。
答案:3 悬赏:20 手机版
解决时间 2021-01-31 01:49
- 提问者网友:听门外雪花风
- 2021-01-30 14:49
单片机控制74hc595问题。。。
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-01-30 16:10
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;
}
你上面的程序里有问题 的,还有一个不要用累加器作变量用.累加器的值一直变化的.
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;
}
你上面的程序里有问题 的,还有一个不要用累加器作变量用.累加器的值一直变化的.
全部回答
- 1楼网友:野味小生
- 2021-01-30 17:06
改好了,试试看:
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;
}
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;
}
- 2楼网友:一叶十三刺
- 2021-01-30 16:17
void clr_595(uchar d1)有问题
这个。。不大清楚
这个。。不大清楚
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯