# ST7735
**Repository Path**: cchmpy/st7735
## Basic Information
- **Project Name**: ST7735
- **Description**: 使用MicroPython编写的ST7735S显示驱动程序
- **Primary Language**: Python
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2024-03-20
- **Last Updated**: 2024-09-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: ST7735, MicroPython, ESP32
## README
# ST7735S
### 介绍
使用MicroPython编写的ST7735S显示驱动程序。
### 软件架构
模块名称:st7735s
模块颜色常量:RED,GREEN,BLUE,WHITE,CYAN,YELLOW,PURPLE,GREY
模块显示模式常量:PART,NORMAL,SCROLL,IDLE
#### 1、 辅助函数:
rgb565(R, G, B) #颜色生成函数
#### 2、 构造函数
st7735s.ST7735S(spi,*,dc,rst,cs,bl=None,width=128,height=160)
st7735s.deinit()
#### 3、 功能函数
1. ST7735S.clear(c=0) #用颜色c(默认黑色)填充缓存,并显示
2. ST7735S.backlight(duty) #背光灯亮度调节
3. ST7735S.sleep( ) #显示屏进入休眠
4. ST7735S.wakeup( ) #显示屏被唤醒
5. ST7735S.rotate(angle) #顺时针旋转屏幕,参数为旋转度数,如0°、90°、180°、270°
6. ST7735S.setWindow(xs,ys,xe,ye) #设置数据发送或图像绘制的目标窗口,局部绘图
7. ST7735S.setDisMode(mode,*p) #设置部分\正常\滚动\空闲显示模式
8. ST7735S.setScrollStart(ys) #滚动模式下,设置滚动的开始线
9. ST7735S.show( ) #把ST7735S的内容全部发送到显存,全屏显示
10. ST7735S.showVPart(ys,ye) #刷新显示垂直部分区域
11. ST7735S.showImage(xs,ys,xe,ye,data:bytes) #把data (如相机照片)直接发送到屏幕指定窗口显示
12. ST7735S.bufToBmp(bmpfile:str) #把framebuf缓存上的图像保存为RGB565格式的bmp文件
#### 4、 绘图函数
1. ST7735S.fill(c) #用指定的颜色填充整个ST7735S;
2. ST7735S.pixel(x, y [, c] ) #获取或设置像素的颜色;
3. ST7735S.hline(x, y, w, c) #绘制水平直线;
4. ST7735S.vline(x, y, h, c) #绘制垂直直线;
5. ST7735S.line(x1, y1, x2, y2, c) #两点之间绘制线段,像素宽度为1;
6. ST7735S.rect(x, y, w, h, c [, f]) #绘制矩形,f参数决定是否填充;
7. ST7735S.ellipse(x, y, xr, yr, c[, f, m]) #绘制椭圆或圆, f决定填充,m确定象限;
8. ST7735S.poly(x, y, coords, c[, f]) #绘制任意多边形,f参数决定是否填充;
9. ST7735S.text(s, x, y [, c]) #绘制文本,仅支持8x8像素的英文字符;
10. ST7735S.scroll(xstep, ystep) #将ST7735S的内容移动给定的向量;
11. ST7735S.blit(fbuf, x, y, key=-1, palette=None) #在给定坐标处绘制另一个FrameBuffer。
12. ST7735S.drawText(text,x,y,fontDB,c,bc,alpha) #从左上角(x,y)处开始绘制汉字或字母,bc为背景色
13. ST7735S.drawImage(imgw,imgh,img:bytes,format=RGB565,x=0,y=0) #从(x,y)处开始绘制bytes类型图像
### 使用说明
```python
import st7735s as st
from machine import SPI
from random import randint
import time,gbk
def main():
#spi使用硬件通道1。根据实际情况,修改spi和lcd的连接引脚
try:
font=gbk.font16x16()
spi = SPI(1,baudrate=40000000)
lcd=st.ST7735S(spi,dc=2,rst=0,cs=15,bl=12,width=128,height=160)
lcd.backlight(200)
lcd.rotate(0)
#绘制中间滚动区12行文本
for i in range(20,140,10):
t=f'{i} '
lcd.text(t*(lcd.width//8//len(t)),0,i,st.rgb565(randint(0,255),randint(0,255),randint(0,255)))
#绘制顶部和底部固定区矩形和文字
lcd.rect(0,0,lcd.width,20,st.BLUE,1)
lcd.rect(0,140,lcd.width,20,st.BLUE,1)
lcd.drawText('顶部固定区TFA',10,2,font,st.YELLOW)
lcd.drawText('底部固定区BFA',10,142,font,st.YELLOW)
lcd.show()
#滚动显示10秒
lcd.setDisMode(st.SCROLL,20,120,20)
t,i=time.ticks_ms(),20
while time.ticks_diff(time.ticks_ms(),t)<10000:
lcd.setScrollStart(i)
i=i+1 if i<140 else 20
time.sleep_ms(30)
lcd.setDisMode(st.NORMAL)
finally:
font.deinit() #关闭数据库和相关文件
lcd.deinit() #关闭背光的pwm输出
if __name__=='__main__':
main()
```