打印
[其他ST产品]

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

[复制链接]
24151|56
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
基于ST7735s的0.96寸tft屏幕显示效果展示


  • 实现了时钟显示,基于ds1307模块,时钟字体采用的模拟数码管字体
  • 实现了图标显示,后续用于天气以及状态指示
  • 暂未添加网络校时,以及网络获取天气数据等功能
  • 界面显示没有采用第三方库(暂未找到合适的),采用原始的一个一个图标画点显示


使用特权

评论回复
沙发
范德萨发额|  楼主 | 2023-12-27 19:36 | 只看该作者
整个实验断断续续耗时接近快2周时间,主要消耗的精力的有几个方面

熟悉和了解ST7735原理接口,及操控方法。难点在于理解其初始化代码和显示原理。
屏幕点亮画点调试,这一部分难点在于找到屏幕的(0,0)坐标,以及屏幕的偏移量,由于该屏幕的分辨率不是ST7735默认的两种分辨率,故存在x轴或者y轴的偏移量,这一点也是在不停的测试过程中测试出来的,这一部分耗了相当一大部分的精力。
文字及图片取模软件的深入了解,及测试。这里面特别坑的一点是,图片取模软件直接取得单色图片直接显示是有问题的,图片先要用图片取模软件转成要求尺寸的bmp图片,然后再将该图片导入文字取模软件取模,最终才能正常显示,这个坑也卡了很久。剩下就是取模扫描方式以及取模的高低字节顺序。
本文的重点讲解的方面也就是上述3个采坑较多的地方,最后一部分就简单展示下关键的代码,具体的代码连接间本文末尾。话不多讲,开始正文部分。

使用特权

评论回复
板凳
范德萨发额|  楼主 | 2023-12-27 19:37 | 只看该作者
1、模块及开发环境简介


tft屏幕参数

分辨率:160*80
驱动芯片:ST7735S
通信接口:SPI
供电电压:3.3V

使用特权

评论回复
地板
范德萨发额|  楼主 | 2023-12-27 19:37 | 只看该作者
tft屏幕与ESP32模块连线


其中
DC引脚用于控制spi总线传输的是命令还是数据。
DC:0传送命令,DC:1传送数数据,可以这么理解,要向st7735某个寄存器写入值,那么一般的逻辑是,先传输寄存器地址,再传输数据。当传输地址前,DC引脚置为low,当传输数据前,DC引脚置为high。也就是说DC引脚实际控制的是接下来是要写地址还是写数据。

RST引脚是硬件复位tft屏幕,当RST=0时,硬件复位。需要将RST=1然后重新初始化屏幕,才能正常显示。正常如果不用该引脚可以直接用上拉电阻拉高。在程序中,初始化前,需要将该引脚拉高。

使用特权

评论回复
5
范德萨发额|  楼主 | 2023-12-27 19:37 | 只看该作者
开发环境

开发环境 vscode + platformIO
开发框架 esp-idf
开发语言 C

使用特权

评论回复
6
范德萨发额|  楼主 | 2023-12-27 19:38 | 只看该作者
2、ST7735S说明
备注:ST775S是内置的tft屏幕面板内部的,一般情况下是看不到该芯片的样子。 所以不要拿到了屏幕模块后就想拆开看下ST7735芯片长啥样子,其实,笔者也很好奇芯片的样子。

使用特权

评论回复
7
范德萨发额|  楼主 | 2023-12-27 19:38 | 只看该作者
2.1主要特性
支持3线或者4线SPI(区别在于3线没有用DC pin)
支持8位/16位并行接口
数据显示RAM 132H18RGB162V bits
颜色深度最高支持262K颜色,通常用的是64K
供电电压3.15V to 5V
最大分辨率132*162

使用特权

评论回复
8
范德萨发额|  楼主 | 2023-12-27 19:38 | 只看该作者
2.2 3&4线spi数据图

使用特权

评论回复
9
范德萨发额|  楼主 | 2023-12-27 19:42 | 只看该作者
3线spi实际每次传输的数据是9bit,最高为实现的就是DC引脚功能。

使用特权

评论回复
10
范德萨发额|  楼主 | 2023-12-27 19:43 | 只看该作者
4线spi采用DC硬件引脚控制写命令和写数据。正常来说选择3线还是4线,屏幕在出厂的时候就确定了。3线还是4线是由ST7735内部的SPI4W引脚来决定的。目前市面上默认的液晶屏都是采用4线模式

使用特权

评论回复
11
范德萨发额|  楼主 | 2023-12-27 19:43 | 只看该作者
选择是串口还是spi实际也是出厂就设置好了的,其由内部的IM2引脚来确定。

使用特权

评论回复
12
范德萨发额|  楼主 | 2023-12-27 19:43 | 只看该作者
所以不要妄想将买到的并口屏幕改为spi串行通信,除非将整个屏幕拆开,重新连线,这基本是不现实的。

使用特权

评论回复
13
范德萨发额|  楼主 | 2023-12-27 19:43 | 只看该作者
2.3初始化注意事项
在屏幕初始化过程中,会对st7735中的多个寄存器进行赋值,其中有一些寄存器的值直接影响到屏幕的点亮和显示,现将调试过程中出现的一些重要的寄存器初始化进行说明。

使用特权

评论回复
14
范德萨发额|  楼主 | 2023-12-27 19:43 | 只看该作者
**10h Sleep In & 11h Sleep Out **
进入睡眠模式,上电后,或者软件或者硬件重置后,屏幕默认进入sleep 模式,此时屏幕是不会有任何显示的。

使用特权

评论回复
15
范德萨发额|  楼主 | 2023-12-27 19:43 | 只看该作者
退出睡眠模式只有一个方式,通过设置11h

使用特权

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

使用特权

评论回复
17
范德萨发额|  楼主 | 2023-12-27 19:43 | 只看该作者
初始化时只需要将11h中写入0 即可。

**28h DisplayOff & 29h Display On **
上电默认是显示关闭模式,初始化时需要将液晶设置为显示开启模式

使用特权

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

使用特权

评论回复
19
范德萨发额|  楼主 | 2023-12-27 19:44 | 只看该作者
初始化时只需要将 29h中写入0即可打开显示开启模式。

使用特权

评论回复
20
范德萨发额|  楼主 | 2023-12-27 19:44 | 只看该作者
** 3ah Interface Pixel Format **
屏幕色彩格式,设置屏幕的色彩位数。通常应用情况下,采用的都是16bit色彩模式,也就是常说的64K颜色。上电默认是18bit颜色。

使用特权

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

本版积分规则

52

主题

935

帖子

2

粉丝