TFTLCD
TDTLCD即在液晶显示屏的每个像素上设置薄膜晶体管液晶显示器(TFT),图像质量高
一般TFTLCD模块位3.3V供电,不支持5V电压MCU,如果使用5V MCU信号线串联120R电阻使用
LCD与16位80并口驱动OLED并口驱动相似
使用电容触摸模块SPI串口驱动
制造商可以提供配置文件或参考数据手册LCD以及触摸屏的驱动配置
LCD驱动流程
- 硬复位
- 发送初始化序列(根据制造商提供的设置)
- 设置坐标
- 写点或读点
- 写一些步骤:
- 写GRAM指令
- 写入颜色数据
- LCD显示点
- 读GRAM指令
- 阅读颜色数据
- 输出数据给单片机处理
RGB565格式
LCD模块采用16位80并口,颜色深度为16,格式为RGB565
对应关系如下:5位R、6位G、5位B——RGB565
| 数据线 | D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LCD GRAM | R[4] | R[3] | R[2] | R[1] | R[0] | G[5] | G[4] | G[3] | G[2] | G[1] | G[0] | B[4] | B[3] | B[2] | B[1] | B[0] |
重点代码
font.h
///这里省略///可以使用字符点阵绘图软件或已有字库导出相应字符的点阵集//应#include到lcd.c文件中 lcd.h
#ifndef __LCD_H#define __LCD_H #include "sys.h" #include "stdlib.h"/*-----------------LCD定义重要参数集----------------*/typedef struct{ u16 width; //LCD 宽度 u16 height; //LCD 高度 u16 id; //LCD ID u8 dir; //横屏或竖屏控制:0,竖屏;1.横屏 u16 wramcmd; //开始写gram指令 u16 setxcmd; //设置x坐标指令 u16 setycmd; //设置y坐标指令 }_lcd_dev; //LCD参数extern _lcd_dev lcddev;//管理LCD重要参数extern u16 POINT_COLOR;///画笔颜色,默认红色 extern u16 BACK_COLOR;//背景色.默认为白色/*-----------------LCD定义重要参数集----------------*//*-----------------LCD端口定义----------------*/#define LCD_LED PBout(15) //LCD背光 PB15/*-----------------LCD端口定义----------------*//*-----------------LCD地址定义----------------*///LCD地址结构体typedef struct{ vu16 LCD_REG; vu16 LCD_RAM;} LCD_TypeDef;//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A6作为数据命令区分线 //注意设置时STM32内部会右移一位对其! 111 1110=0X7E #define LCD_BASE ((u32)(0x6C000000|0x0000007E))//Bank1Sector4基地址为0x6C000000,A10的偏移地址为0x000007EF#define LCD ((LCD_TypeDef *) LCD_BASE)//将上述地址强制转换为LCD地址结构体指针,即得到LCD->LCD_REG的地址,实现对RS的控制/*-----------------LCD地址定义----------------*///扫描方向定义#define L2R_U2D 0 //从左到右,从上到下#define L2R_D2U 1 //从左到右,从下到上#define R2L_U2D 2 //从右到左,从上到下#define R2L_D2U 3 //从右到左,从下到上#define U2D_L2R 4 //从上到下,从左到右#define U2D_R2L 5 //从上到下,从右到左#define D2U_L2R 6 //从下到上,从左到右#define D2U_R2L 7 //从下到上,从右到左#define DFT_SCAN_DIR L2R_U2D//默认的扫描方向//画笔颜色#define WHITE 0xFFFF#define BLACK 0x0000 #define BLUE 0x001F #define BRED 0XF81F#define