打印
[其他ST产品]

ESP32实验03:0.96tft液晶显示屏驱动

[复制链接]
楼主: 范德萨发额
手机看帖
扫描二维码
随时随地手机跟帖
21
范德萨发额|  楼主 | 2023-12-27 19:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览

使用特权

评论回复
22
范德萨发额|  楼主 | 2023-12-27 19:44 | 只看该作者
初始化时,只需要在31h中写入5,即可将其设置为64K色模式。

使用特权

评论回复
23
范德萨发额|  楼主 | 2023-12-27 19:44 | 只看该作者
2.4液晶显示原理分析
与屏幕显示位置及显示方向相关的寄存器主要有:

36h Memory Data Access Control 内存数据控制,用于控制,屏幕(0,0)原点的位置,及x轴和y轴的方向
2ah 列地址设置寄存器
2bh 行地址设置寄存器
2c 内存写入寄存器,某个像素点显示的颜色数据
其中最需要耗时也最需要深入了解的是36h寄存器,其涉及到屏幕的显示方向及显示位置。

使用特权

评论回复
24
范德萨发额|  楼主 | 2023-12-27 19:44 | 只看该作者
36h 寄存器 在谈寄存器具体内容及含义前,先说明下一般比较推荐的显示方式。
一般是针对屏幕,将屏幕的左上脚默认为屏幕原点(0,0),X轴往右,Y轴往下。扫描方向,从左到右,从上到下,这比较符合人正常的书写顺序。

使用特权

评论回复
25
范德萨发额|  楼主 | 2023-12-27 19:45 | 只看该作者
可能不太好理解扫描,举个简单的例子
比如要在屏幕上显示8bit英文 HELLO WORLD
那么 H 起始坐标 (0,0),终点坐标 (7,7)
E 起始坐标 (8,0),终点坐标(15,7)
。。。。。
依次类推,那么D的起始和终点坐标分别是(80,0)(87,7)
显示的步骤如下

使用特权

评论回复
26
范德萨发额|  楼主 | 2023-12-27 19:45 | 只看该作者
1、 设置行列地址,起始坐标和终点坐标
2、向屏幕内存写入每个像素点的颜色数据
3、屏幕将内存中的数据按照扫描顺序显示在屏幕上
扫描顺序从左到右,则先显示(0,0)到(7,7)区域的 H,显示顺序 H -> E -> …-> D
如果是从右向左,则先显示(80,0)(87,7)的D-> L … -> H
上下扫描也是如此,如果有多行,上下扫描,显示上衣行再显示下一行,如果是下上扫描,则先显示下一行再显示上一行。

使用特权

评论回复
27
范德萨发额|  楼主 | 2023-12-27 19:45 | 只看该作者
一般情况下,不影响最终显示结果,但是为了便于理解和习惯,推荐扫描顺序从左到右,从上到小

使用特权

评论回复
28
范德萨发额|  楼主 | 2023-12-27 19:45 | 只看该作者
再回到36h寄存器本身
MY 是镜像Y轴
MX是镜像X轴
MV是XY轴调换位置
以上图为例,假设此时 MY =0; MX =0 ,MV =0 则
当MY=1 MX =0 ,MV =0,坐标原点在左下角
当MY=0 MX =1 ,MV =0,坐标原点在右上角
当MY=1 MX =1 ,MV =0,坐标原点在右下角

ML 竖直方向扫描顺序
MH水平方向扫描顺序
通常都设置为0 从左到右,从上到下

屏幕原点的方向就依靠36H寄存器进行调整,当拿到一个新的屏幕的时候,就要选择屏幕的坐标原点,通过调整36H,实现正对屏幕,原点位于左上角。

使用特权

评论回复
29
范德萨发额|  楼主 | 2023-12-27 19:46 | 只看该作者
**2ah列地址设置 **

列地址对应的是X轴,其由4个字节组成,第一个字节是起始地址高8位,第二个字节是起始地址低8为,第三个字节是终点坐标高8位,第四个字节是终点坐标低8位。

使用特权

评论回复
30
范德萨发额|  楼主 | 2023-12-27 19:46 | 只看该作者
这一值得注意的是,采用的大端模式,低地址存储的高位字节,高地址存储的低位字节。
比如如果地址是0xa0b1,则传输大端模式是应该先传输0xa0,然后是0xb1;通常的用小端模式都是先传输0xb1然后是0xa0

使用特权

评论回复
31
范德萨发额|  楼主 | 2023-12-27 19:46 | 只看该作者
**2bh行地址设置 **

使用特权

评论回复
32
范德萨发额|  楼主 | 2023-12-27 19:46 | 只看该作者
行地址方式与列地址完全一致,就不过多说明。

再说下st7735屏幕分辩率的选择。ST7735最大支持两种分辨率 132162和128160
到底最大支持哪种分辨率是在屏幕模块一出厂就确定了的,其取决月GM1和GM0两个引脚

使用特权

评论回复
33
范德萨发额|  楼主 | 2023-12-27 19:46 | 只看该作者
由于笔者用的屏幕是160*80所以不管是哪种方式,都不受影响。这主要是山寨屏幕,没有出场说明书,不知道出场的配置是怎么样的。这里当时也想了好久才想明白。

使用特权

评论回复
34
范德萨发额|  楼主 | 2023-12-27 19:47 | 只看该作者
这张图里面实际上就将36h的设置写明白了。看图吧就不多赘述了。

使用特权

评论回复
35
范德萨发额|  楼主 | 2023-12-27 19:47 | 只看该作者
3、文字取模和图片取模软件
文字取模和图片取模软件都是将要在屏幕上显示的转化成为一个色彩集合数组。显示是设置好地址后将该数组按照顺序写入屏幕内存,最终在屏幕上显示。这里面也有一些坑,如果没注意,可能会显示不正常。在此一次将这两种取模软件整理清楚。

使用特权

评论回复
36
范德萨发额|  楼主 | 2023-12-27 19:47 | 只看该作者
3.1文字取模软件
文字取模软件通常使用的是PCtoLCD2002,界面如下图

使用特权

评论回复
37
范德萨发额|  楼主 | 2023-12-27 19:47 | 只看该作者
其中的关键点主要是在设置选项里面。
那么一个一个来测试,以生活的“生”字为例:

使用特权

评论回复
38
范德萨发额|  楼主 | 2023-12-27 19:47 | 只看该作者

使用特权

评论回复
39
范德萨发额|  楼主 | 2023-12-27 19:47 | 只看该作者
阴码:需要点亮的点为1,如上图,生活的“生”字最上面一个点占的bit7,如果是左往右写点就是0x80。
逐行就是从左往右一个bit一个bit点亮数码管,逆向是低位在前,顺向是高位在前
分析表格最上面两行,逆向第一个字节是0x80,顺向第一个字节是0x01,将二者转换为二进制

使用特权

评论回复
40
范德萨发额|  楼主 | 2023-12-27 19:48 | 只看该作者
逆向顺向的区别是转成二进制后,二者顺序颠倒。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则