25. [Micropython]TPYBoard v10X 控制LCD1602显示字符

版权声明:翻译整理属于TPYBoard,转载时请以超链接形式标明文章原始出处和作者信息及本声明

25.1. 实验目的

  • 学习在PC机系统中扩展简单I/O 接口的方法。
  • 进一步学习编制数据输出程序的设计方法。
  • LCD1602的硬件接线方法。
  • TPYboard控制Lcd1602显示字符 。

25.2. 所需元器件

  • TPYBoard v102开发板 1块
  • LCD1602液晶屏 1块
  • 电位器3296 1个
  • 面包板 1块
  • micro USB数据线 1条
  • 杜邦线 若干

25.3. 硬件接线方法

LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表所示:

../../../../_images/1602.png

25.4. LCD1602液晶模块引脚说明

第1脚:VSS为地电源

第2脚:VDD接5V正电源

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

下面是实物图与针脚图对应的关系:

http://tpyboard.com/ueditor/php/upload/image/20161226/1482730709264212.png http://tpyboard.com/ueditor/php/upload/image/20161226/1482730716949140.png

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

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

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

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

第15脚:背光源正极

第16脚:背光源负极

http://tpyboard.com/ueditor/php/upload/image/20161226/1482730747525623.png http://tpyboard.com/ueditor/php/upload/image/20161226/1482730757499647.png

按照上面针脚对应关系接线OK后,并且导入tpyb_lcd1602.py文件和tpyb_gpio_lcd1602.py文件再可运行main.py了(tpyb_lcd1602.py和pyb_gpio_lcd1602..py可以从官网上下载,最后会告诉下载地址)。

http://www.micropython.net.cn/ueditor/php/upload/image/20161226/1482730789766757.png

25.5. main.py源代码:

    # main.py -- put your code here!
    import pyb
    from pyb import Pin
    from pyb import delay, udelay,millis
    from tpyb_lcd1602 import TPYBoardLcd1602Api
    from tpyb_gpio_lcd1602 import TPYBoardGpioLcd1602


    def main():
            lcd = TPYBoardGpioLcd1602(rs_pin=Pin.board.Y10,
                                      enable_pin=Pin.board.Y9,
                                      d4_pin=Pin.board.Y5,
                                      d5_pin=Pin.board.Y6,
                                      d6_pin=Pin.board.Y7,
                                      d7_pin=Pin.board.Y8,
                                      num_lines=2, num_columns=16)
    lcd.lcd1602_write_string("Hi,TurnipSmart!\n This TPYBoard!")
    delay(5000)
    lcd.clear()
    lcd.lcd1602_write_string("This  lcd1602!\n Start Work!")
    delay(5000)
    lcd.clear()
    count = 0
    while True:
        lcd.move_to(0, 0)
        #%1d 宽度  返回运行当前程序的累计时间,单位是毫秒
        lcd.lcd1602_write_string("%1d" % (millis() // 1000))
        delay(1000)
        count += 1
        print(count)

if __name__ == "__main__":
    main()