1,接线顺序
#引脚定义
cs=Pin(4) #片选
reset=Pin(5) #复位
rs=Pin(16) #数据/指令 1数据 0 指令 #DC
sda=Pin(13) #数据信号
sck=Pin(14) #时钟信号
对照GPIO 按照下图链接即可
如图
2 驱动代码
·初始化
def init():
rs.init(rs.OUT, value=0)
reset.init(reset.OUT, value=0)
cs.init(cs.OUT, value=1)
reset.off()# /*低电平复位*/
time.sleep_us(100)#
reset.on()# /*复位完毕*/
time.sleep_us(100)#
write_cmd(0xe2)# /*软复位*/
time.sleep_us(5)#
write_cmd(0x2c)# /*升压步聚 1*/
time.sleep_us(5)#
write_cmd(0x2e)# /*升压步聚 2*/
time.sleep_us(5)#
write_cmd(0x2f)# /*升压步聚 3*/
time.sleep_us(5)#
write_cmd(0x27)# /*粗调对比度,可设置范围 0x20~0x27*/
write_cmd(0x81)# /*微调对比度*/
write_cmd(0x2a)# /*0x1a,微调对比度的值,可设置范围 0x00~0x3f*/
write_cmd(0xa2)# /*1/9 偏压比(bias)*/
write_cmd(0xc8)# /*行扫描顺序:从上到下*/
write_cmd(0xa0)# /*列扫描顺序:从左到右*/
write_cmd(0x40)# /*起始行:第一行开始*/
write_cmd(0xaf)# /*开显示*/
time.sleep(1)
# 初始化渐变效果 不需要的可以不要
for a in range(1,3):
time.sleep_ms(100)
write_cmd(0x27-a)
write_cmd(0xA7) #反显
write_cmd(0x24)
#0xA0:常规 列地址从左到右,
#0xA1:反转:列地址从右到左
#0xA6:常规:正显
#0xA7:反显
#0xA4:常规 显示全部点阵
#0xA5:显示全部点阵
#0XE2 :软件复位。
#0XC0:普通扫描顺序:从上到下
#0XC8:反转扫描顺序:从下到上
#0x20~0x27,粗调 数值越大对比度越浓,越小越淡
#0x00~0x3F,微调 值越大对比 度越浓,越小越淡
#0xAC: 关, 0xAD: 开。静态图标的开关设置
· 写入指令
cs.off() 选片低电压
rs.off() 低电压写入指令
spi.write(bytearray([cmd])) 已bytearray 写入指令
· 写入需要绘画的图片或者字符串:
cs.off() 选片低电压
rs.on() 高电压写入屏幕数据
spi.write(bytearray([cmd])) 已bytearray 写入数据
·开始绘画
1.设置列地址 页地址,行地址
write_cmd(0xb0+page); #设置页地址。每页是 8 行。一个画面的 64 行被分成 8 个页。我们平常所说的第 1 页,在 LCD驱动 IC 里是第 0 页,所以在这里减去 1*/
write_cmd(((column>>4)&0x0f)+0x10) #设置列地址的高 4 位
write_cmd(column&0x0f) #设置列地址的低 4 位
2 写入数据(行列式)
def draw(arr,width,x=0,column=1):
#arr : 16进制数组 0xff
#width: 字符画宽度
#x: x坐标
#column:y坐标
index=0
for a in range(0,len(arr)/width):
lcd_address(x,column)
column+=1
write_data(arr[index:index+width])
index+=width
从第一个像素往下画8个像素
然后在画第二列的8个像素 以此类推
用一个十六进制表示 一列的8个像素
* | 1 | 不显示 | |||||
* | * | 不显示 | |||||
* | 1 | 不显示 | |||||
* | 1 | 不显示 | |||||
* | 1 | 不显示 | |||||
* | 1 | 不显示 | |||||
* | 1 | 不显示 | |||||
* | 1 | 不显示 | |||||
0XFF | 0X00 |
所有代码 直接丢8266 可以直接跑