首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Arduino的中断驱动HD44780库

Arduino的中断驱动HD44780库
EN

Stack Overflow用户
提问于 2009-12-01 05:36:25
回答 3查看 1.2K关注 0票数 4

我有一个Arduino液晶屏,并且我一直在使用HD44780开发包提供的LiquidCrystal库。然而,它并不可靠。我注意到了它的一些问题,它没有被中断驱动,只要开发人员认为芯片应该执行操作,它就会休眠。

从规格表中,BUSY标志将在其执行时被设置,这意味着它可以被中断驱动。

有没有人知道有一个库可以做到这一点,它需要连接所有的8位,或者我可以将它保持在4个管脚?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-03 06:36:42

我不认为你需要被打断。查看Arduino发行版中的LiquidCrystal.cpp,您只需要更改LiquidCrystal::write4bitsLiquidCrystal::write8bitsLiquidCrystal::pulseEnable代码。前两种方法应首先在写入数据之前监视繁忙线路(BD7),最后一种方法将被修改以消除100us暂停。

我认为在默认代码中没有这样做的原因是,这些LCD的许多用户只是将R/W连接到接地,以便显示器始终处于写入模式,从而无法读取忙碌信号。但是,这是通过将_rw_pin设置为-1传递到库中的,因此脉冲和写入代码可以有条件地使用读/写引脚作为速度优化时检测繁忙的一种方式。

票数 3
EN

Stack Overflow用户

发布于 2010-08-18 00:10:32

可以在三个引脚上使用8位;您只需要一个移位寄存器。我使用的是mouser.com的HEF4094BP (运费比实际的芯片要贵)

移位寄存器的接线图和代码修改如下:http://www.arduino.cc/playground/Code/LCD3wires

票数 1
EN

Stack Overflow用户

发布于 2011-09-15 06:05:17

不久前,我修改了LiquidCrystal库以支持忙标志。请注意,真正的中断驱动操作是不可能的-对于每次读取,您需要切换Enable行两次。因此,您将需要轮询忙标志。

然后我做了一些基准测试,发现轮询忙标志比仅仅等待大多数命令要慢。(例外是'clear‘和'home’命令)。原因是,在读模式和写模式之间切换需要额外的步骤,如对digitaWrite的8个额外调用和对pinMode的8个额外调用。即使使用16 this的Arduinos,速度也比等待100µs要慢。

在那之后,我写了一个库,它直接在批量模式下操作管脚寄存器-所有8个管脚都只需一次寄存器访问。在那之后,我通过投票获得了一些好处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1822571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档