我一直试图在FASMARM程序中使用16x2 LCD显示器。 LCD显示器的确切型号为tc1602a-21t
。我还在这个项目中使用树莓派3。
因此,为了使生活更轻松,我编写了一些函数turn_gpio_on
和turn_gpio_off
,将位于r0的Pin编号分别转换为HIGH
或LOW
。还具有sleep
函数,该函数可使程序休眠r0
毫秒。最后,我还有另一个名为set_gpio_to_output
和set_gpio_to_input
的功能,它们依次将r0
中的引脚设置为任一输出输入模式。
我之所以列出这些功能是因为它们在我的代码中相当常见。
我的项目代码位于here。
首先,我声明R / S,使能和最后4个数据引脚的引脚号。我确保正确连接所有电线并进行了全面测试,以便可以肯定地说接线没有问题。
然后从start
方法中调用init_display
函数,该函数应设置显示。但是,液晶显示器什么也没有发生。由于电源引脚的作用,它只是打开了第一行,但似乎数据引脚从未做任何事情。
我主要遵循this Python脚本,该脚本执行与我想做的相同的事情,但是使用python。
它说在那里初始化将数字0x33作为命令,然后写入0x32。我分别在第30行和第34行上做它们。这些行之前的mov r1, #0
命令表示应将传递的整数作为命令发送到显示器。
我用LED多次测试了所有内容,但延迟时间较慢,并且它们始终正确显示。每次我呼叫write8
时,LED都会先打开高4位,然后再低4位。因此,理论上应该正确初始化显示器并显示闪烁的灯光。但是什么也没发生,它只是停留在蓝色背光灯下,而第一行高亮显示。就像您将其设置为除了电源引脚外没有其他引脚一样。
我写错了什么吗?如果是这样呢?我现在非常困惑。