本文使用1.8‘’128*160RGB_TFT ST7735S主控的液晶屏来操作
参考blog:http://blog.mangolovecarrot.net/2017/03/05/raspi-study1102
文中使用同类型液晶屏显示了纯色和制作点阵来显示文字,但是这实在是太麻烦了。
本文主要介绍如何使用PIL库来辅助显示,想要了解更多细节建议先看原文。
PIL库的安装
sudo apt-get install python-pil python3-pil
代码
在原作者的代码上增加了两个函数,用于图片的转换(侵删),关于RGB565请看原文
import RPi.GPIO as GPIO
import time
import math
from PIL import Image
cs = 23 # 片选
rs = 17 # 数据 / 命令 切换
sda = 13 # 数据
scl = 19 # 时钟
reset = 27 # 复位
# 传输byte
def setByteData(data):
# print ""
# print "S-----------setByte---------------:", hex(data)
for bit in range(0, 8):
# 传入的数字从高位到低位依次判断是否为1,若为1则设置高电平,否则设置低电平
# 判断的方法是先向左移位,把要判断的位移动到最高位然后跟0x80(1000 0000)相与,
# 如果结果仍然是0x80(1000 0000)就表示最高位是1,否则最高位就是0
if ((data << bit) & 0x80 == 0x80):
setBitData(True)
# print "1",
else:
setBitData(False)
# print "0",
# print ""
# print "E-----------setByte---------------"
def setBitData(data):
GPIO.output(scl, False)
GPIO.output(sda, data)
GPIO.output(scl, True)
def write_command(cmd):
GPIO.output(cs, False)
GPIO.output(rs, False)
setByteData(cmd)
GPIO.output(cs, True)
def write_data(data):
GPIO.output(cs, False)
GPIO.output(rs, True)
setByteData(data)
GPIO.output(cs, True)
def write_data_16bit(dataH, dataL):
write_data(dataH)
write_data(dataL)
def lcd_reset():
GPIO.output(reset, False)
time.sleep(0.1)
GPIO.output(reset, True)
time.sleep(0.1