1.8寸TFT学习

Posted ReCclay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.8寸TFT学习相关的知识,希望对你有一定的参考价值。

一入侯门深似海

都有它的妙处,仔细体会。。

话说网上对于TFT学习的资料,特别是中文加详细讲解的实在是少。。。

仅以此分享自己的学习历程,希望您可以尽快上手。。

介绍:

ST7735S 是一个单片机控制器/驱动器为 262 k 色, 图形型 TFT 液晶显示器。它包括396
源线和162门线路驱动电路。此芯片能够直接连接到外部微处理器, 并接受串行外设接口 (SPI), 8 位/9 位/16 位/18 位并行接口。显示数据可以存储在芯片上显示数据 RAM 132 x 162 x 18 位。它可以执行显示数据RAM 读/写操作, 没有外部操作时钟, 以尽量减少功耗。另外由于驱动液晶所需的集成电源电路, 因此可以进行显示系统的组件较少。

扫盲:

1、关于RGB
在我们的计算机中图像是以RGB888格式显示图像的,24位图每个像素保存了32bit的数据,即RGB888+Alpha,Alpha就是半透明填充字节……但是对于真彩的图像而言,肉眼在16bit的时候已经难以分辨了,因此,有些时候,可以讲RGB888转换为RGB565来存储,减少了存储器的容量的同时,降低了数据量;在后端显示的时候,再次把RGB565转换为RGB888,实现数据宽度的匹配!!

转换的总的原则:
RGB888 -> RGB565: 取888三个字节的高5位,高6位,高5位
RGB565 -> RGB888: 反过来,自己想

eg:

RGB888:
R7 R6 R5 R4 R3 R2 R1 R0 G7 G6 G5 G4 G3 G2 G1 G0 B7 B6 B5 B4 B3 B2 B1 B0
RG565:
R7 R6 R5 R4 R3 G7 G6 G5 G4 G3 G2 B7 B6 B5 B4 B3

再贴两篇好文章,
有关RGB的,以及精度损失,补偿之类的
http://blog.csdn.net/happy08god/article/details/10516871
http://blog.csdn.net/u013316124/article/details/50126289

所以也就理解了,为啥TFT里面的RGB是两个字节,并且两个字节是怎么的到的。。。

emmmmm,,,,再说的更细一点吧,上个例子,比如RGB888对应的是红色0xFF0000 那么化成二进制为 11111111
00000000 00000000 分别取高5位高6位高5位,得到11111 000000 00000即11111000 00000000
对应的十六进制为 0xF800,所以F800在TFT底层就是红色了。。

主要看一下ST7735.H文件吧。。

#ifndef __ST7735_H_
#define __ST7735_H_

#define uchar unsigned char
#define uint unsigned int

//void LCD_CtrlWrite_IC(uchar c);
//void LCD_DataWrite_IC(uchar d);  
void LCD_DataWrite(uchar LCD_DataH,uchar LCD_DataL);
void write_command(uchar c);
void write_data(uchar d);
void Reset(void);
void RamAdressSet(void);
void Output_Pixel(uint x,uint y);
void PutPixel(uint x_start,uint y_start,uint color);



//对应.c文件中196~199行可以调TFT显示的方向
void lcd_initial(void);
void Display_Desc(void);//显示 - 设置信息
void dsp_single_colour(DH,DL);//设置底色 //这个颜色怎么算呢? RGB-888到RGB-565的转化即可
/*
  DH=0x84, DL=0x10;//灰色
  DH=0xFF, DL=0xFF;//白色
  DH=0x00, DL=0x00;//黑色
  DH=0xF8, DL=0x00;//红色
  DH=0x07, DL=0xE0;//绿色
  DH=0x00, DL=0x1F;//蓝色
*/
void Display_ASCII8X16(uint x0,uint y0,uchar *s);//显示字符串(英文),参数(x, y, "str")
void Display_CN16x16(uint x0,uint y0,uint z0);//显示中文,参数(x,y,ID) ID是在字库中的ID(可自行加入) 
void show_pic(uchar *s);//显示图片
#endif

图库,以及字库自行在程序中加入,下面在来写一下关于如何加入的过程

加入字库

然后把这段代码加入到字库中去就可以了,。。

在程序中调用就行了。。

然后加入图片的方法

然后保存生成C语言数组,,,粘贴到程序中对应的位置就行了!!!

以上是关于1.8寸TFT学习的主要内容,如果未能解决你的问题,请参考以下文章

1.8寸TFT LCD128X160 ST7735S SPI串口屏驱动示例

STC32G单片机驱动1.8寸TFT LCD128X160 ST7735S SPI串口驱动示例

microbit成功点亮1.8寸TFT LCD彩屏液晶运行“平衡飞船 Lunar Lander”游戏

STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

STM32CubeIDESTM32F103硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

LVGL移植STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT ST7735S跑LVGL图形demo