我在这个网站上读过:http://www.engineersgarage.com/embedded/avr-microcontroller-projects/interface-lcd-4bit-mode-circuit当我需要以4位发送命令时,我首先发送一个函数集命令,该命令表示4位模式2行和5x7字体,即0x28但是我们不能使用4位模式发送这个,因为较低的半字节不会被读取,所以我认为我们应该使用0x20然后0x80但是这个网站说我需要制作0x02而那个时候2将会在较低的半字节中发送,所以不会被发送怎么会发生这种情况?我一直想知道这怎么可能发生,我非常感谢能花一点时间向我解释这一点的人,我会非常感激。
答案 0 :(得分:0)
如果查看dis_cmd
的代码,您会看到它首先发送高半字节,然后发送低半字节。没有办法让它只发送一个。让我们看看两种可能性:
dis_cmd(0x20)
:写入0x2然后写入0x0
dis_cmd(0x02)
:写入0x0然后写入0x2
如您所见,总会有额外的0发送。如果使用值0x20,则会在模式更改后发送,导致它被解释为命令的高半字节,这会使任何将来的命令错误。通过发送0x2,首先发送额外的0。它被解释为具有高半字节清除的8位命令,然后是进入4位模式的命令。在启动时发送随机命令并不理想,但它确实可以在不破坏未来命令的情况下运行。