STM32F103RCT6学习之六:TFT_LCD的使用

1.TFT介绍

 该模块支持65K色显示,显示分辨率为320×240,接口为Intel提出的16位8080总线标准,自带触摸屏,其中xpt2046为触摸控制器。

其引脚功能为:

  • LCD_DB[15:0];数据信号
  • LCD_RD:读数据信号,低电平有效
  • LCD_RS:数据/命令信号,高电平时,D[15:0]表示的是数据(RGB像素数据或命令数据),低电平时D[15:0]表示控制命令
  • LCD_RESET:复位信号,低电平有效
  • LCD_WR:写数据信号,低电平有效
  • LCD_CS:片选信号,低电平有效
  • LEDA:背光电源 
  • LEDK1-4:背光控制

共需要定义22个管脚

1)进行基本配置 

2)编辑代码

编写LCD驱动

LCD头文件

#ifndef __LCD_H
#define __LCD_H		

#include "main.h"

//LCD重要参数集
typedef struct  
{
	uint16_t width;		//LCD 宽度
	uint16_t height;		//LCD 高度
	uint16_t id;				//LCD ID
	uint8_t  dir;			//横屏还是竖屏控制:0,竖屏;1,横屏。
	uint16_t wramcmd;	//开始写gram指令
	uint16_t setxcmd;	//设置x坐标指令
	uint16_t  setycmd;	//设置y坐标指令
} _lcd_dev;

//LCD参数
extern _lcd_dev lcddev;		//管理LCD重要参数
//LCD的画笔颜色和背景色
extern uint16_t  POINT_COLOR;	//默认红色
extern uint16_t  BACK_COLOR;		//背景颜色.默认为白色

//-----------------LCD端口定义----------------
#define LCD_LED PCout(10)										//LCD背光			PC10
 
#define LCD_CS_SET GPIOC -> BSRR = 1 << 9		//片选端口		PC9
#define LCD_RS_SET GPIOC -> BSRR = 1 << 8		//数据/命令		PC8
#define LCD_WR_SET GPIOC -> BSRR = 1 << 7		//写数据			PC7
#define LCD_RD_SET GPIOC -> BSRR = 1 << 6		//读数据			PC6

#define LCD_CS_CLR GPIOC -> BRR = 1 << 9		//片选端口		PC9
#define LCD_RS_CLR GPIOC -> BRR = 1 << 8		//数据/命令		PC8
#define LCD_WR_CLR GPIOC -> BRR = 1 << 7		//写数据			PC7
#define LCD_RD_CLR GPIOC -> BRR = 1 << 6		//读数据			PC6

//PB0~15,作为数据线
#define DATAOUT(x) GPIOB -> ODR = x;	//数据输出
#define DATAIN     GPIOB -> IDR;			//数据输入
 
//扫描方向定义
#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 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 GRED            0XFFE0
#define GBLUE           0X07FF
#define RED             0xF800
#define MAGENTA         0xF81F
#define GREEN           0x07E0
#define CYAN            0x7FFF
#define YELLOW          0xFFE0
#define BROWN           0XBC40  //棕色
#define BRRED           0XFC07  //棕红色
#define GRAY            0X8430  //灰色
//GUI颜色

#define DARKBLUE        0X01CF  //深蓝色
#define LIGHTBLUE       0X7D7C  //浅蓝色  
#define GRAYBLUE        0X5458  //灰蓝色
//以上三色为PANEL的颜色

#define LIGHTGREEN      0X841F  //浅绿色 
#define LGRAY           0XC618  //浅灰色(PANNEL),窗体背景色

#define LGRAYBLUE       0XA651  //浅灰蓝色(中间层颜色)
#define LBBLUE          0X2B12  //浅棕蓝色(选择条目的反色)


void LCD_Init(void);                                                        //初始化
void LCD_DisplayOn(void);                                                   //开显示
void LCD_DisplayOff(void);                                                  //关显示
void LCD_Clear(uint16_t Color);                                                  //清屏
void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos);                                     //设置光标
void LCD_DrawPoint(uint16_t x, uint16_t y);                                           //画点
void LCD_Fast_DrawPoint(uint16_t x, uint16_t y, uint16_t color);                           //快速画点
uint16_t  LCD_ReadPoint(uint16_t x, uint16_t y);                                           //读点
void LCD_Draw_Circle(uint16_t x0, uint16_t y0, uint8_t r);                                 //画圆
void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);                          //画线
void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);                     //画矩形
void LCD_Fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t color);                   //填充单色
void LCD_Color_Fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *color);            //填充指定颜色
void LCD_ShowChar(uint16_t x, uint16_t y, uint8_t num, uint8_t size, uint8_t mode);                  //显
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和风化雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值