|
发表于 2019-6-5 20:05:28
|
显示全部楼层
这里就涉及到一个问题,1602 或者说 HD44780 的 4 位驱动原理你摸清楚了么?
一开始,HD44780 主控可能处于三种状态之一
1、8 位总线模式
2、4 位总线模式,等待输入第一个 4 位数据(高 4 位)
3、4 位总线模式,等待输入第二个 4 位数据(低 4 位)
4 位总线模式下,低 4 位悬空(默认下拉)或接地,恒为 0000,高 4 位接到总线。
开始写入第一个 4 位指令 0x03(0011)
如果主控处于 8 位总线模式,则认为写入了 00110000,此指令为设置总线为 8 位总线模式指令,因此还是 8 位总线不变
如果主控处于 4 位总线模式且等待输入第一个 4 位数据(高 4 位),那么输入了高 4 位的 0011,变为第三种状态
如果主控处于 4 位总线模式且等待输入第二个 4 位数据(低 4 位),则执行一个未知的指令(因为高 4 位不可知),变为第二种状态
然后写入第二个 4 位指令 0x03(0011)
第一状态还是不变
如果主控一开始处于状态 2,现在处于状态 3,那么写入的指令将主控至于 8 位总线模式
如果主控一开始处于状态 3,现在处于状态 2,那么写入了一个 0011 的高位指令
继续写入第三个 1 位指令 0x03(0011)
第一状态还是不变
如果主控一开始处于状态 2,在第二步中处于状态 3 并收到完整的指令变为 8 位模式,那么此时再收到高 4 位 0011 指令,则被认为收到完整的 00110000 指令,还是处于 8 位总线模式
如果主控一开始处于状态 3,在第二步中处于状态 2 并收到低 4 位指令 0011,则收到的总指令是 00110011,它还是将主控至于 8 位总线模式
至此,主控被恢复为 8 位总线模式,这是初始化 HD44780 至关重要的地方。完毕后,输入高位指令 0010,将主控至于 4 位总线模式,然后就可以按 4 位总线模式操作了。所以,总的顺序就是写入 0011,0011,0011,0010。由于写指令函数是按照 4 位总线模式编写的,总是一次写入两个 4 位(高位在前先写入,低位后写入),所以只要用写指令函数写入 0x33、0x32 就可以了。
最后写入 0x28,高位(0010)指令继续将主控至于 4 位总线模式不变,低位 1000 将主控至于 2 行、5*7 点的模式。
|
评分
-
1
查看全部评分
-
|