【ESP32_Py_Board】LCD显示图片,文字,B站粉丝数

上篇文章我们介绍了【】开发环境搭建及基本板载外设的使用 , 文末介绍了显示屏的测试方法 , 仅仅实现了颜色填充 , 这篇文章我们就来介绍下如何使用显示屏显示图片和文字 , 最后在显示屏上显示出B站某个UP主的粉丝数 , 练习一下显示屏的使用!
如果有小伙伴还不太熟悉ESP32的开发环境搭建 , 可以翻看下上一篇文章:
ESP32开发板开发环境搭建 , 驱动示例代码
显示屏驱动
显示屏采用的是中景园SPI接口屏幕 , 分辨率240*240 , 控制芯片是 , 原厂提供了基于51、STM32的C语言驱动代码 , 下载地址如下:
提取码:8888
我参考了原厂代码 , 将驱动移植到了上 , 舍弃了一些不必要的功能 , 驱动代码如下:
文件名:.py
from machine import Pin, SPIimport timeimport machineimport espclass LCD_240_240(object):def __init__(self):self.hspi = SPI(1, 10000000,polarity=1, phase=0, sck=Pin(21), mosi=Pin(19))self.lcd_bk = Pin(23, Pin.OUT)self.lcd_dc = Pin(22, Pin.OUT)self.lcd_res= Pin(17, Pin.OUT)self.lcd_bk.value(1)self.lcd_res.value(0)time.sleep(0.1)self.lcd_res.value(1)time.sleep(0.05)self.lcd_dc.off()self.hspi.write(b'\x11')time.sleep(0.05)self.LCD_Cmd_Data(b'\x36',b'\x70')self.LCD_Cmd_Data(b'\x3A',b'\x05')self.LCD_Cmd_Data(b'\xB2',b'\x0C\x0C\x00\x33\x33')self.LCD_Cmd_Data(b'\xB7',b'\x35')self.LCD_Cmd_Data(b'\xBB',b'\x19')self.LCD_Cmd_Data(b'\xC0',b'\x2C')self.LCD_Cmd_Data(b'\xC2',b'\x01')self.LCD_Cmd_Data(b'\xC3',b'\x12')self.LCD_Cmd_Data(b'\xC4',b'\x20')self.LCD_Cmd_Data(b'\xC6',b'\x0F')self.LCD_Cmd_Data(b'\xD0',b'\xA4\xA1')self.LCD_Cmd_Data(b'\xE0',b'\xD0\x04\x0D\x11\x13\x2B\x3F\x54\x4C\x18\x0D\x0B\x1F\x23')self.LCD_Cmd_Data(b'\xE1',b'\xD0\x04\x0C\x11\x13\x2C\x3F\x44\x51\x2F\x1F\x1F\x20\x23')self.lcd_dc.off()self.hspi.write(b'\x21\x29')def LCD_Cmd_Data(self,cmd, data):self.lcd_dc.off()self.hspi.write(cmd)self.lcd_dc.on()self.hspi.write(data)def SetDisArea(self,xStart,yStart,xEnd,yEnd):buf = bytearray(4)buf[0] = 0buf[1] = xStartbuf[2] = 0buf[3] = xEndself.LCD_Cmd_Data(b'\x2A',buf)buf[1] = yStartbuf[3] = yEndself.LCD_Cmd_Data(b'\x2B',buf)self.lcd_dc.off()self.hspi.write(b'\x2C')def Disp_Color(self,Color):self.SetDisArea(0,0,239,239)self.lcd_dc.on()buf = bytearray(480)for j in range(240):buf[j*2] = Color >> 8buf[j*2+1] = Color & 0xFFfor i in range(240):self.hspi.write(buf)def DrawPoint(self,x,y,color):buf = bytearray(2)buf[0] = 0buf[1] = xself.LCD_Cmd_Data(b'\x2A',buf)buf[1] = yself.LCD_Cmd_Data(b'\x2B',buf)buf[0] = color >> 8buf[1] = color &0xFFself.LCD_Cmd_Data(b'\x2C',buf)def Disp_Str(self,x,y,str_datda):font_buf = bytearray(64)for c in str_datda:start_addr = 0x300000 + 64*(c - 0x20)esp.flash_read(start_addr, font_buf)self.SetDisArea(x,y,x+15,y+31)x+=16self.lcd_dc.on()for j in range(64):for k in range(8):if (font_buf[j] & (0x01<
上述代码主要实现了四个函数 , 刷屏 , 显示图片 , 显示文字 , 打点 , 具体用法如下:
from ST7789V import LCD_240_240 #导入显示屏的功能lcd = LCD_240_240() #创建一个显示屏lcd.Disp_Color(0x8563)#整屏填充颜色lcd.Disp_Pic(0x320000)#显示存储在0x320000的图片lcd.Disp_Str(30,50, b'abc123')#在(30,50)起始位置显示文字abc123lcd.DrawPoint(100, 100, 0xF800)#在(100,100)处显示一个红色的点 作者:我是鹏老师 https://www.bilibili.com/read/cv13645588 出处:bilibili