踏入树莓派世界——驱动LCD1602

145 Views 

前言

本文章用到的设备:树莓派、杜邦线、面包板、电阻、10K电位器、LCD1602。

让树莓派拥有一块显示屏是一个好的想法——有的时候,我们想及时的获取一些简单的输出,使用一块1602(16*2字符显示,与之相似的还有2004)显示屏是个经济的选择。

你可以用不到十元钱买到一块LCD1602,只需要单显示屏,不需要驱动模块。

组装电路

LCD1602的引脚定义如下:

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同 为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当 RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

我们将使用四位输入法,所以第7-10脚不用连接。第1、16脚接地,第2、15脚接5V,第3脚串联一个10K电位器(就是滑动变阻器)接地,第4-6、11-14脚接树莓派的GPIO引脚,记得记下这些引脚的值。

全部接好后如上图所示。

使用Python输出文字

python下有一个十分好用的库:RPLCD。使用它可以方便的输出文字,而不用考虑其背后的运作方式。

这里是RPLCD的英文文档: https://rplcd.readthedocs.io/en/stable/index.html

在终端输入

pip3 install RPLCD

以安装该库。

下面是输出键盘输入文字的代码:

import RPi.GPIO as GPIO
from RPLCD import CharLCD
from time import sleep
lcd = CharLCD(pin_rs=21, pin_rw=20, pin_e=16, pins_data=[26, 19, 13, 6],   #设置为你使用的GPIO引脚
              numbering_mode=GPIO.BCM,   #使用BCM编号
              cols=16, rows=2,  #16*2,如果你用的LCD2004那就是20*4
              auto_linebreaks=True,  #LCD1602是会自动换行的
              )
def main():
    while True:
        lcd.clear() #清空屏幕
        lcd.write_string(input('please enter:'))
        input('press any key to continue...')

if __name__ == '__main__':
  try:
    main()
  except KeyboardInterrupt: #检测到ctrl+c结束程序
    pass
  finally:
    lcd.clear() 
    lcd.write_string("Goodbye!")
    sleep(0.5)
    lcd.clear() 
    GPIO.cleanup()  #最后要清空GPIO使用

执行后输入 Hello world!,输出结果:

自定义文字

LCD1602本身支持英文、拉丁字符和日文假名的输出,同时能存储八个用户的自定义字符

0x00~0x0f是未定义的,但用户只能使用0x00~0x07或0x08~0x0f之一。

下面是自定义字符的演示代码:

import RPi.GPIO as GPIO
from RPLCD import CharLCD
from time import sleep
lcd = CharLCD(pin_rs=21, pin_rw=20, pin_e=16, pins_data=[26, 19, 13, 6],
              numbering_mode=GPIO.BCM,
              cols=16, rows=2
              auto_linebreaks=True,
              )
def CreateChar():
    smiley = (   #0b之后的数字表示对应位置的像素点,一共5*8个,1表示显示
        0b00000,
        0b01010,
        0b01010,
        0b00000,
        0b10001,
        0b10001,
        0b01110,
        0b00000,
    )
    lcd.create_char(0, smiley) #0表示存储的序号,可以使用0~7。定义后写入到了LCD的RAM中,断电清空
        
def main():
    while True:
        lcd.clear() 
        lcd.write_string("\x00")  #使用转义符可以直接显示该位置的字符,x00对应第一个,也就是上文定义的
        input('press any key to continue...')

if __name__ == '__main__':
  try:
    CreateChar()
    main()
  except KeyboardInterrupt:
    pass
  finally:
    lcd.clear() 
    lcd.write_string("Goodbye!")
    sleep(0.5)
    lcd.clear() 
    GPIO.cleanup()

执行后的效果:

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

   
隐藏