查看: 1097|回复: 5

彩屏驱动—彩屏扩展库(80并口—SPI)

[复制链接]

28

主题

66

帖子

1149

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1149
发表于 2023-10-9 11:28:07 | 显示全部楼层 |阅读模式
本帖最后由 LZY825597017 于 2024-4-22 09:33 编辑

1.扩展库介绍
本扩展库适用于ST7789/GC9A01A等驱动的80并口或SPI接口的屏幕。彩屏驱动使用C++编写,继承TWEN_GFX类,因此天问库中大多数彩屏使用方法都类似。

图形化模块
1、80并口彩屏初始化

image.png
参数说明:
W(屏幕水平像素点数量)H(屏幕垂直像素点数量)
RD(从 TFTLCD 读取数据)
WR(向 TFTLCD 写入数据)
RS(命令/数据标志(0,读写命令;1,读写数据))
CS(TFTLCD 片选信号)
RST(硬复位 TFTLCD)
DATA(数据口D0~D7) 可选GPIOA/B/C:请根据实际情况选择端口  高/低8位:指的是引脚号,例如PA8、PA9...PA15(高)PB0、PB1...PB7(低)
注意:选择某一个端口或者引脚时,需要注意是否与特殊引脚冲突(如串口、SWIO等等),若无法避免请将特殊功能复用到其他IO口
2、彩屏初始化SPI(硬件)
image.png
参数说明:
W(屏幕水平像素点数量)H(屏幕垂直像素点数量)
RST(硬复位 TFTLCD)
DC(命令/数据标志(0,读写命令;1,读写数据))
CS(TFTLCD 片选信号)
BLK/LED(TFTLCD 背光控制信号)
注意:某一些屏幕可能不存在片选信号(CS)或者背光信号(BLK),但是在图形化中应当添加一个空闲的IO
硬件SPI:
注意:CH32V003 :SDA->PC6     SCL->PC5
           CH32V103 :SDA->PA7     SCL->PA5
           TW32F003 :SDA->PA1     SCL->PA2

如有特殊需求请自行在LIB文件中复用到其他IO口
3、彩屏初始化SPI(软件)
image.png
参数说明:
W(屏幕水平像素点数量)H(屏幕垂直像素点数量)
SCL(SPI时钟线)
SDA(SPI数据线)
RST(硬复位 TFTLCD)
DC(命令/数据标志(0,读写命令;1,读写数据))
CS(TFTLCD 片选信号)
BLK(TFTLCD 背光控制信号)

注意:新版初始化增加版本选择功能,即初始化序列分为ST7789和ST7789_v2,当发现屏幕红蓝绿三颜色不对时,可以选择另外一个初始化版本序列。
image.png
4、图形化颜色选择块
image.png
5、屏幕清除并设置背景颜色
image.png
6、设置文本字体颜色以及字体背景颜色(在此图形化之后的文本文字都按照此图形化显示)
image.png
7、设置文本字体颜色是否与背景重叠(重叠:忽略字体背景颜色,字体背景颜色与整体背景颜色相同)
image.png
8、设置彩屏方向(0/180:竖屏   90/270:横屏)
image.png
(新版增加)为了适应不同尺寸屏幕旋转正常显示,偏移量接口开放,当使用上面的图形块旋转后显示不完全,需要自己修改行列偏移量,具体参数要自己调试

image.png
范例:240*240的屏幕
image.png

9、设置文本是否自动换行(开启:当文本快超出边界时,从下一行继续打印)
image.png
10、设置彩屏颜色显示模式(0:RGB     1:BGR)
image.png
11、设置彩屏文本字体大小(可选12/16/24/32号字体)
image.png
12、设置光标位置(应当添加在打印以及显示汉字前)
image.png
13、设置彩屏打印字符串等,可设置是否答应完成是否换行(字体大小受设置彩屏文本字体大小块限制
image.png
14、设置彩屏打印汉字,大小可选(12/16/24/32)
image.png
15、彩屏画点,在X,Y坐标上画一个指定颜色的点
image.png
16、彩屏画线,从(X1,Y1)到X2,Y2坐标上画一根指定颜色的线
image.png
17、彩屏画矩形或填充矩形,从左上顶点(X1,Y1)到右下顶点X2,Y2坐标上画一个或者填充指定颜色的矩形
image.png

18、彩屏画圆形或填充圆形,从圆心(X,Y)以指定半径画一个或者填充指定颜色的圆形
image.png
19、彩屏画三角形或填充三角形
image.png
20、彩屏画圆角矩形或填充圆角矩形
image.png


2.扩展库范例-TW32F003(硬件SPI)
(1)硬件连接(TW32F003
    image.png
(2)范例(TW32F003)
image.png

下面介绍图片显示
第一步:准备一张需要显示的图片
第二步:使用Image2Lcd软件获取图片数组 注意:图像像素宽度和高度不要超过128*64 软件设置如下所示

image.png
第三步:保存文件,名字自定义即可,注意删除逗号,复制粘贴数组到程序
第四步:使用图形化显示(注意图像的长宽度)
image.png


常见问题与注意事项
1、连接线路检查,杜邦线等确定能正常使用。
2、驱动方式不要选错,否则可能无法显示,某些屏幕没有片选或者背光也应该添加一个未使用IO。
3、显示内容超出界限。X Y不要超过(X Y方向的分辨率-1
4、某些IO被用作特殊功能,如串口、SWIO等,不能用作SDA和SCL。如有需要可以关闭特殊功能,复用成普通IO即可。
5、型号选择错误,可能出现显示异常等情况。
6、使用ASRPRO时,PC(1-4)号引脚要设置为数字引脚。

7、TWEN32使用二维码,需要传入const char*,例如:const char buf[10]="ABC";

image.png
8、使用GC9A01库时,注意板子供电只能为3.3V,5V供电可能屏幕不会亮并且初始化完成后需要手动打开背光。



image.png

TW32F003_ST7789范例.zip

6.62 KB, 下载次数: 42

回复

使用道具 举报

0

主题

1

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2024-3-20 11:30:48 | 显示全部楼层
0.0.5版本的CH32V103下编译报错
回复

使用道具 举报

0

主题

4

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2024-3-31 22:10:58 | 显示全部楼层
请教一下,我用的ASRPro开发板2M,采用您的ST7789库,连接2.0寸SPI TFT屏,引脚定义:
SCL PA_3, SDA PA_5 ,RST PC_4, DC PA_6 ,CS PA_2 ,BLK PA_1。
有几个问题请教下:
1、屏幕经常无法点亮,给ASRPro开发板,断电、开点,有机会点亮屏幕。
2、ASRPro休眠后,再唤醒,屏幕无反应,不变化,不按指令刷新。
3、添加黑色,编译会报错,提示TFT_LCD_BLACK未定义。请问如何定义?
4、能采用RGB(R,G,B);指定任意颜色吗?目前只能设定有限内置颜色。
5、二维码输出不显示,能给一个ASRPro的ST7789演示例程吗?非常感谢。
回复

使用道具 举报

28

主题

66

帖子

1149

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1149
 楼主| 发表于 2024-4-8 16:08:44 | 显示全部楼层
cytd 发表于 2024-3-20 11:30
0.0.5版本的CH32V103下编译报错

已经修改了哈,新版本你再试试
回复

使用道具 举报

28

主题

66

帖子

1149

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1149
 楼主| 发表于 2024-4-8 17:05:33 | 显示全部楼层
redleafe 发表于 2024-3-31 22:10
请教一下,我用的ASRPro开发板2M,采用您的ST7789库,连接2.0寸SPI TFT屏,引脚定义:
SCL PA_3, SDA PA_5 ...

我这测试是没有问题的啊,可以正常使用的,条件允许的话屏幕单独供电(要共地),头文件里有部分宏定义
//颜色
#define ST7789_WHITE                          0xFFFF
#define ST7789_BLACK                          0x0000          
#define ST7789_BLUE                     0x001F  
#define ST7789_BRED                     0XF81F
#define ST7789_GBLUE                    0X07FF
#define ST7789_RED                            0xF800
#define ST7789_MAGENTA                        0xF81F
#define ST7789_GREEN                          0x07E0
#define ST7789_CYAN                           0x7FFF
#define ST7789_YELLOW                         0xFFE0
#define ST7789_BROWN                    0XBC40 //棕色
#define ST7789_BRRED                    0XFC07 //棕红色
#define ST7789_GRAY                     0X8430 //灰色
#define ST7789_DARKBLUE                       0X01CF        //深蓝色
#define ST7789_LIGHTBLUE                       0X7D7C        //浅蓝色  
#define ST7789_GRAYBLUE                        0X5458 //灰蓝色
#define ST7789_LIGHTGREEN                      0X841F //浅绿色
#define ST7789_LGRAY                    0XC618 //浅灰色(PANNEL),窗体背景色
#define ST7789_LGRAYBLUE                0XA651 //浅灰蓝色(中间层颜色)
#define ST7789_LBBLUE                   0X2B12 //浅棕蓝色(选择条目的反色)

没有的你可以自己添加头文件里,采用RGB565的格式例如0X0000就是纯黑,0X07E0就是纯绿
回复

使用道具 举报

28

主题

66

帖子

1149

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1149
 楼主| 发表于 2024-4-8 17:07:16 | 显示全部楼层
redleafe 发表于 2024-3-31 22:10
请教一下,我用的ASRPro开发板2M,采用您的ST7789库,连接2.0寸SPI TFT屏,引脚定义:
SCL PA_3, SDA PA_5 ...

7789显示二维码

7789.zip

2.92 KB, 下载次数: 0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-4-29 07:20 , Processed in 0.334164 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表