51单片机和74hc595驱动8位数码管的程序,哪错了?显示乱码?

2024-12-12 20:28:17
推荐回答(2个)
回答1:

你的这个不是乱码就有问题了!~
你仔细理解一下这段

void wr595(uchar dat)
{
uchar a;
for(a=8;a>0;a--)
{
SH_CP=0;
DS=dat&0x80;
dat<<=1;
SH_CP=1;
_nop_();
_nop_();
SH_CP=0;
_nop_();
_nop_();
SH_CP=1;
}
}

你的for循环是有问题的
以为你的每个字节移了多次
所以就乱码了

void wr595(uchar dat)
{
uchar a;
for(a=8;a>0;a--)
{
SH_CP=0;
DS=dat&0x80;
dat<<=1;
SH_CP=1;
_nop_();
_nop_();
}
}
你看看下面的
去掉一个

回答2:

注意数码管共阴还是共阳