74HC165读取按键键值的问题
时间:10-02
整理:3721RD
点击:
3 片74HC165读取按键,单片机与3片74HC165通过短线连接时没有问题,通过超过两米长的连接时,单片机只能识别一片74HC165的一个按键(D8键)!这是怎么原因造成的?有什么办法解决?
原理图如下:
![](../imgqa/ele/mcu/mcu-3721rd.com-29595hrb14drnhoo.png)
程序如下:
- ulong hc165_cascade_drive(void)
- {
- uchar i=0;
- ulong read_data=0;
- HC165_PL_dr=0; //置入控制有效,锁存端口值
- _nop_();
- HC165_PL_dr=1;
- _nop_();
- for(i=0;i<32;i++)
- {
- read_data<<=1;
- if(HC165_QH_dr)
- {
- read_data|=HC165_QH_dr;
- }
- HC165_CLK_dr=0;
- _nop_();
- HC165_CLK_dr=1; //上升沿
- _nop_();
- }
- return ~read_data;
- }
吧延时改长点试试
x线太长……
如果短线可以而长线不可以的话,应该是驱动能力不够,可以考虑加非门,增加驱动能力。
感谢楼上的热心回答!@武力戡乱 @sin88
小编的主意也不错,只是手中没有非门。没办法实验!
最终改写了驱动程序!
呵呵,基本上应该是驱动能力不够!可以加其他放大!
留个记号!