求高手解答一个单片机的数组问题 50
我的一个关于点阵显示的小项目。我编程操作六个级联的74LS595(可锁存的移位寄存器,串行输入,并行输出),我用一个子函数WriteByte(uchardat)连续用六次...
我的一个关于点阵显示的小项目。
我编程操作六个级联的74LS595(可锁存的移位寄存器,串行输入,并行输出),我用一个子函数WriteByte(uchar dat)连续用六次来一个个的给595写入串行数据,但是:
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
这样,只有一闪而过,然后就不正常显示了,而且其中一块595开始发热。
但是我只要将其中一个 WriteByte(Number[ i ]); 中的Number[ i ],中的 i 改为一个常数(1或2或3……),显示就正常了(**Number[ ]是我定义的一个uchar型数组)。
另外我还发现,把Number[ i ]改为Number[ i / 2 ]也能正常显示,但是改成Number[ i / 1 ]却不行。
敢问各位高手,这是怎么回事?
能解释解释么?或者给出解决方案? 展开
我编程操作六个级联的74LS595(可锁存的移位寄存器,串行输入,并行输出),我用一个子函数WriteByte(uchar dat)连续用六次来一个个的给595写入串行数据,但是:
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
WriteByte(Number[ i ]);
这样,只有一闪而过,然后就不正常显示了,而且其中一块595开始发热。
但是我只要将其中一个 WriteByte(Number[ i ]); 中的Number[ i ],中的 i 改为一个常数(1或2或3……),显示就正常了(**Number[ ]是我定义的一个uchar型数组)。
另外我还发现,把Number[ i ]改为Number[ i / 2 ]也能正常显示,但是改成Number[ i / 1 ]却不行。
敢问各位高手,这是怎么回事?
能解释解释么?或者给出解决方案? 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询