1.44tft(128*128) ST7735S屏幕micropython esp32驱动

本文介绍了如何在Windows10环境中,通过Thonny开发工具和ESP32,配合ST7735128*128TFT屏幕,利用MicroPython实现LCD显示控制,包括初始化、接线、设置颜色模式和显示文本等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

平台:windows10,thonny,esp32s3wroom1u,1.44寸tft(128*128)st7735s lcd屏幕

接线:BL->3.3v, VCC->3.3v, CS->GPIO42, DC->GPIO41, RES->GPIO40, SDA->GPIO38, SCL->GPIO37

代码

复制即用

更新时间:2025.1.1

from time import sleep_ms,sleep
from ustruct import pack
from machine import SPI,Pin
import framebuf
from framebuf import FrameBuffer
from array import array

class ST7735():
    '''
    :spi: spi对象
    :dc: dc引脚对应的GPIO编号
    :rst: rst引脚对应的GPIO编号
    :cs: cs引脚对应的GPIO编号
    '''
    def __init__(self,spi,dc:int,rst:int,cs:int,bl:int=None):
        self.spi = spi
        self.dc=Pin(dc,Pin.OUT,value=0)
        self.rst=Pin(rst,Pin.OUT,value=1)
        self.cs=Pin(cs,Pin.OUT,value=1)
        if bl is not None:
            self.bl=Pin(bl,Pin.OUT,value=0) # 默认开启背光
        self.framebuf = framebuf.FrameBuffer(bytearray(128*128*2), 128, 128,framebuf.RGB565)
        self.reset()
        self._write(0x11)
        sleep_ms(100)
        buf=bytearray(128)
        for i in range(32):
            buf[i]=i*2
            buf[i+96]=i*2
        for i in range(64):
            buf[i+32]=i
        for command, data in (
            (0x3A, b"\x05"), # 选择16位颜色模式
            (0x36, pack(">B",0x08)), # 显示相对位置(0xc0)
            (0x20, None), #关闭反转
            (0x29, None),#开启显示
            (0x2d, buf),# RGB
            ):
            self._write(command, data)
        self.clear()
        
    def clear(self):
        self.framebuf.fill(0)
        self.show()
    
    def reset(self):
        self._write(0x01)

    def _write(self, command, data=None):
        self.cs.off() # 开启片选信号
        self.dc.off() # 低电平写命令
        self.spi.write(bytearray([command]))
        if data is not None:
            self.cs.on() # 释放片选信号
            self.cs.off() # 开启片选信号
            self.dc.on() # 高电平写参数
            self.spi.write(data)
            self.cs.on() # 释放片选信号

    def show(self):
        self._write(0x2a,pack(">HH", 0,127))
        self._write(0x2b,pack(">HH", 0,127))
        self._write(0x2c,self.framebuf)

    def sleep(self):
        self._write(0x28)
        self._write(0x10)
        if self.bl is not None:
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值