测测屏幕,有一些需要显示的东西我们也可以做了。
1.54寸液晶屏st7789 spi
基本信息 | 说明 |
---|---|
尺寸 | 1.54寸 |
材料 | 高清IPS彩色屏 |
分辨率 | 240*240显示方向可调整 |
控制芯片 | ST7789 |
显示区域 | 27.72*27.72MM |
物理尺寸 | 43.72*32MM |
接口类型 | 4线SPI接口 |
工作电压 | 3.3V |
管脚数量 | 8PIN |
引脚定义
符号 | 定义 | 与板接 |
---|---|---|
GND | 电源地 | GND |
VCC | 3.3V | 3.3V |
SCL | SPI时钟线(SCK) | A5 |
SDA | SPI数据线(MOSI) | A7 |
RES | 显示屏复位管脚 | C4 |
DC | SPI数据/命令选择角 | C5 |
CS | SPI数据片选,低电平有效 | B11 |
BLK | LED背光控制,默认可以悬空,低电平关闭背光(LED) | B10 |
micropython下SPI通讯
基本用法
有些微控制器的 SPI 接口支持标准连接方式和半双工连接方式 (MISO 和MOSI信号合二为一),在MicroPython中,目前只支持标准方式。
SPI.init(mode,baudrate=1000000,polarity=0,phase=0,bits=8,
firstbit=SPI.MSB,pins= (CLK,MOSI,MISO))
mian.py
# 项目:基于ST7789的1.54 TFT lcd 屏
# ST7789以及apx202,来自lewis师兄提供,st7789的部分功能
# 参考https://github.com/jeffmer/micropython-ili9341
import time
import ustruct
import framebuf
import tt14
import bauhs93
from utime import sleep_us
from micropython import const
from machine import Pin
from pyb import SPI
from ztst7789class import ST7789
#---------TFT pin 定义
TFT_RST_PIN = Pin('C4')
TFT_LED_PIN = Pin('B10')
TFT_DC_PIN = Pin('C5')
TFT_CS_PIN = Pin('B11')
TFT_CLK_PIN = Pin('A5')
TFT_MISO_PIN = Pin('A6')
TFT_MOSI_PIN = Pin('A7')
bl = Pin(TFT_LED_PIN, Pin.OUT)
display = None
#按键默认是1,按下是0
sw2=Pin('C13',Pin.IN,Pin.PULL_UP)
sw5=Pin('B3',Pin.IN,Pin.PULL_UP)
def lcdinit():
#lcdinit()
global display
bl.value(1) #屏幕背光打开
spi = SPI(1,SPI.MASTER,baudrate=7800000,polarity=0,phase=0)
display = ST7789(spi, cs=Pin(TFT_CS_PIN), dc=Pin(TFT_DC_PIN), rst=TFT_RST_PIN)
def ztdisplay():
#显示彩色文字 前景红0xF800 黑背景是 0x0000
display.set_color(0xF800,0x0000)
display.set_font(bauhs93)
display.set_pos(0,10)
display.print('1.qingdao zetu')
display.set_font(tt14)
display.set_pos(0,40)
display.print('2.qingdao zetu')
display.set_color(color565(35,88,238),color565(0,0,0))
display.draw_cn('我爱你祖国',0,60,5)#0 x值 60 y 5间距
display.set_color(color565(238,246,14),color565(0,0,0))
display.draw_zh20_str('我爱你祖国',0,80,5)
display.show_img('zt.pbm',0,110,128,64)
display.show_img('ztlog.pbm',0,180,30,30)
def color565(r, g, b):
return (r & 0xf8) << 8 | (g & 0xfc) << 3 | b >> 3
def drawbutton():
#显示按钮以及文字
#display.erase()
display.set_pos(150,20)
display.set_font(tt14)
display.print('CORR')
display.rect(130,10,80,30,0xF700) #button_CORR
def main():
global display
lcdinit()
time.sleep_ms(100)
while True:
time.sleep_ms(100)
if sw2.value()==0:
#print(display)
display.erase()
if sw5.value()==0:
ztdisplay()
#drawbutton()
if __name__ == '__main__':
main()