python 清屏_用Python控制硬件16-字符型LCD模块GDM1602

62d71450814f1544da89c59c48e91f1f.png

GDM1602是双行16字符并口驱动的液晶显示模块,接口简单,常用于设备仪器实现简单的交互。这次演示用GPIO命令驱动该模块。

2fcd7565038679680a0f85e0e236f38a.png

硬件连接:

  • VDD - 5V
  • VSS - GND
  • V0 - 控制对比度,为了演示直接接地
  • RS - PA10
  • RW - PA9
  • E - PA8
  • DB0 - PA0
  • DB1 - PA1
  • DB2 - PA2
  • DB3 - PA3
  • DB4 - PA4
  • DB5 - PA5
  • DB6 - PA6
  • DB7 - PA7

需要注意的是因为模块5V供电,所以控制端口全部选择了5V兼容的PA口,为了提高8位总线控制效率,将数据线选用连续的低8位PA0~PA7。

Python的封装比较容易,就是读写两个动作,再根据手册寄存器初始化,写入屏幕数据。

import time
from mcush import *

s = Mcush.Mcush('/dev/ttyACM0')

DP = '0'  # PA端口,用于并行控制
D0 = '0.0'
D1 = '0.1'
D2 = '0.2'
D3 = '0.3'
D4 = '0.4'
D5 = '0.5'
D6 = '0.6'
D7 = '0.7'
E = '0.8'
RW = '0.9'
RS = '0.10'

s.pinOutputLow( [E, RW, RS, D0, D1, D2, D3, D4, D5, D6, D7] )

def write( rs, rw, dat ):
    s.pinSetVal( RS, rs )
    s.pinSetVal( RW, rw )
    s.gpio( DP, o=0xFF, s=dat&0xFF, c=(~dat)&0xFF )  # 低8位输出数据
    s.pinSet( E )
    s.pinClr( E )
       
def read( rs, rw ):
    s.pinSetVal( RS, rs )
    s.pinSetVal( RW, rw )
    s.gpio( DP, i=0xFF )  # 低8位输入模式
    s.pinSet( E )
    r = s.gpio( DP ) & 0xFF    # 读低8位数据
    s.pinClr( E )
    return r

def readBusyAddress():
    r = read( 0, 1 ) 
    return bool(r&0x80), (r&0x7F)

# 初始化
write( 0, 0, 1 )  # 清屏
write( 0, 0, 2 )  # 光标返回左上角
write( 0, 0, 6 )  # 写内存地址自动递增模式
write( 0, 0, 0x0F )  # 开显示,开光标,闪烁模式
write( 0, 0, 0x3C )  # 8位总线, 2行显示模式
write( 0, 0, 0x40 )  # CGRAM地址: 0
    
def writeLine( line, offset, string ):
    if line == 1:
        addr = 0x00
    else:
        addr = 0x40
    addr += offset
    # 写数据DDRAM地址
    write( 0, 0, 0x80+(addr&0x7F) )
    # 逐个写入字符,数据地址会自动递增
    for c in string:
        write( 1, 0, ord(c) )
        time.sleep(0.1)  # 适当延时,模拟打字效果

while True: 
    write( 0, 0, 1 )  # 清屏
    write( 0, 0, 2 )  # 光标返回左上角
    writeLine( 1, 0, 'Hardware control' )  # 第一行
    writeLine( 2, 0, '  with Python' )  # 第二行
    time.sleep(10)

运行效果:

2540538161befaad534ac509f6bedf1c.png
驱动LCD模块GDM1602https://www.zhihu.com/video/1166310954077306880
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值