题
我有一个HD44780 LCD屏幕,并且我已经使用设置有Arduino的开发包的LiquidCrystal库。然而,这是不可靠的。我注意到一些问题,它,而不是被中断驱动的,它只是睡觉,只要开发者认为该芯片应该执行的操作。
从规格表中,BUSY标志将被设置,同时它被执行时,这意味着它能够被中断驱动。
没有人知道,它实际执行这个文库的,并且它要求所有8位要连接或我可以保持它在4个引脚?
解决方案
我认为这不是在默认的代码完成的原因是,这些LCD的许多用户只是扎R / W到接地,以便显示总是在写入模式下,使得不可能读BUSY信号。然而,这被传递到库通过_rw_pin设置为-1,所以脉冲和写代码可以有条件地使用R / W销作为检测忙作为速度优化的一种方法。
其他提示
有可能使用8位上三个销;你只需要一个移位寄存器。我使用从mouser.com一个HEF4094BP(航运是要花费多于实际芯片)
有关移位寄存器中的接线图和代码修改在这里:的http:// WWW。 arduino.cc/playground/Code/LCD3wires
前一段时间我修改LiquidCrystal LIB支持忙标志。
请注意,真正的中断驱动操作的不可以可能 - 每个阅读你需要切换E
nable线的两倍。因此,您需要轮询忙标志。
然后我做一些基准的发现,即轮询忙碌标志是的慢强>不仅仅是等待最命令。 (唯一的例外是“清除”和“家”命令)。其原因是,该读出模式和写入模式之间的切换等需要8个附加呼叫digitaWrite
和8个附加呼叫pinMode
aditional的步骤。即使使用16MHz的Arduinos这不仅仅是等待100μs的慢。
在我写直接和在体模式操纵销寄存器库 - 所有8个管脚与一个寄存器访问。之后,我在球场通过查询得到一些好处。