当前位置:网站首页>基于正点原子stm32的mini板的TFTLCD显示实验
基于正点原子stm32的mini板的TFTLCD显示实验
2022-06-28 03:28:00 【万丈光芒i】
本章将讲述TFTLCD显示实验,小白总结,如有错误,请大神指教。
一、TFTLCD 简介
1.TFT-LCD 即薄膜晶体管液晶显示器。TFT-LCD具有:亮度好、对比度高、层次感强、颜色鲜艳等特点。是目前最主流的LCD显示器。广泛应用于各种电子产品。
注意:模块是3.3V供电的,不支持5V电压的MCU,如果是5VMCU,必须在信号线串接120欧的电阻使用。
2.2.8寸TFTLCD模块原理图如下:

图上的X-,Y-,Y+,X+应与XPT2046触摸屏相连,触摸屏原理图如下:

我们可能会用到的接口如下:
1.CS:TFTLCD 片选信号。
2.WR:向 TFTLCD 写入数据。
3.RD:从 TFTLCD 读取数据。
4.D[15:0](零到十五的意思):16 位双向数据线。
5.RST:硬复位 TFTLCD。
6.RS:命令/数据标志(0,读写命令;1,读写数据)。
7.BL_CTR:背光控制信号
8.触摸屏接口信号:T_MISO/T_MOSI/T_PEN/T_CS/T_CLK(这些看功能需要来决定,如不需要可不设置)。
3.TFTLCD模块的8080并口读/写的过程:
1.先根据要写入/读取的数据的类型,设置RS为高(数据)/低(命令),然后拉低片选,选中ILI9341,接着我们根据是读数据,还是要写数据置RD/WR为低,然后:
(1)读数据:在RD的上升沿,读取数据线上的数据;
(2)写数据:在WR的上升沿,使数据写入到ILI9341里面。
4.TFTLCD的驱动流程:

5.ILI9341 采用 RGB565 格式存储颜色数据:

R5:指有五个红色,G6:指有六个绿色,B5:指有五个蓝色,合在一起便是RGB565格式。
例如:0xf800即为纯红色。
6.指令简介:
(1)0xD3:是一个检测LCD型号的工具,由于可以检测型号,因此使得代码的可移植性增强。
(2)0x36:为存储访问控制指令,可以控制存储器的读写方向,实现GRAM自增方式,加大速度
(3)0x2A:在从左到右,从上到下的方式下面,设置x的坐标。
(4)0x2B:在从左到右,从上到下的方式下面,设置y的坐标。
(5)0x2C:设置颜色数据的。
(6)0x2E:读取显存,也就是大体颜色。
7.在硬件上,TFTLCD 模块与 MiniSTM32 开发板的IO口对应关系如下:
LCD_LED 对应 PC10;
LCD_CS 对应 PC9;
LCD _RS 对应 PC8;
LCD _WR 对应 PC7;
LCD _RD 对应 PC6;
LCD _D[17:1]对应 PB[15:0];
二、软件设计
1.先介绍一个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 重要参数
2.写数据函数:
//写数据函数
#define LCD_WR_DATA(data){\
LCD_RS_SET;\
LCD_CS_CLR;\
DATAOUT(data);\
LCD_WR_CLR;\
LCD_WR_SET;\
LCD_CS_SET;\
}
3.写寄存器命令函数:
//写寄存器函数
//data:寄存器值
void LCD_WR_REG(u16 data)
{
LCD_RS_CLR;//写地址
LCD_CS_CLR;
DATAOUT(data);
LCD_WR_CLR;
LCD_WR_SET;
LCD_CS_SET;
}4.读寄存器数据函数:
//读 LCD 寄存器数据
//返回值:读到的值
u16 LCD_RD_DATA(void)
{
u16 t;
GPIOB->CRL=0X88888888; //PB0-7 上拉输入
GPIOB->CRH=0X88888888; //PB8-15 上拉输入
GPIOB->ODR=0X0000; //全部输出 0
LCD_RS_SET;
LCD_CS_CLR;
LCD_RD_CLR; //读取数据(读寄存器时,并不需要读 2 次)
if(lcddev.id==0X8989)delay_us(2);//FOR 8989,延时 2us
t=DATAIN;
LCD_RD_SET;
LCD_CS_SET;
GPIOB->CRL=0X33333333; //PB0-7 上拉输出
GPIOB->CRH=0X33333333; //PB8-15 上拉输出
GPIOB->ODR=0XFFFF; //全部输出高
return t;
} 5. LCD 寄存器操作的函数
//LCD_Reg:寄存器编号
//LCD_RegValue:要写入的值
void LCD_WriteReg(u16 LCD_Reg,u16 LCD_RegValue)
{
LCD_WR_REG(LCD_Reg);
LCD_WR_DATA(LCD_RegValue);
}
//读寄存器
//LCD_Reg:寄存器编号
//返回值:读到的值
u16 LCD_ReadReg(u16 LCD_Reg)
{
LCD_WR_REG(LCD_Reg); //写入要读的寄存器号
return LCD_RD_DATA();
} 6.设置光标函数:
//设置光标位置
//Xpos:横坐标
//Ypos:纵坐标
void LCD_SetCursor(u16 Xpos, u16 Ypos)
{
if(lcddev.id==0X9341||lcddev.id==0X5310)
{
LCD_WR_REG(lcddev.setxcmd);
LCD_WR_DATA(Xpos>>8);
LCD_WR_DATA(Xpos&0XFF);
LCD_WR_REG(lcddev.setycmd);
LCD_WR_DATA(Ypos>>8);
LCD_WR_DATA(Ypos&0XFF);
}else if(lcddev.id==0X6804)
{
if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏时处理
LCD_WR_REG(lcddev.setxcmd);
LCD_WR_DATA(Xpos>>8);
LCD_WR_DATA(Xpos&0XFF);
LCD_WR_REG(lcddev.setycmd);
LCD_WR_DATA(Ypos>>8);
LCD_WR_DATA(Ypos&0XFF);
}else if(lcddev.id==0X5510)
{
LCD_WR_REG(lcddev.setxcmd);
LCD_WR_DATA(Xpos>>8);
LCD_WR_REG(lcddev.setxcmd+1);
LCD_WR_DATA(Xpos&0XFF);
LCD_WR_REG(lcddev.setycmd);
LCD_WR_DATA(Ypos>>8);
LCD_WR_REG(lcddev.setycmd+1);
LCD_WR_DATA(Ypos&0XFF);
}else
{
if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏其实就是调转 x,y 坐标
LCD_WriteReg(lcddev.setxcmd, Xpos);
LCD_WriteReg(lcddev.setycmd, Ypos);
}
}由于实际代码过于多,可评论QQ,我把源文件发你,本人接撰写51和32的撰写代码的,可以私聊哇。
边栏推荐
猜你喜欢

解析教育机器人的综合应用能力

Pycharm setting pseudo sublime color scheme

【小程序实战系列】电商平台源码及功能实现

sqlserver 数据库之事物使用入门 案例

Talking about cloud primitiveness, we have to talk about containers
![[graduation season] graduate summary](/img/f6/59134c1dbf70fc809652d925fd528f.jpg)
[graduation season] graduate summary

ambari SSLError: Failed to connect. Please check openssl library versions.

A Preliminary Study of Blackbody radiation

Anaconda command usage

Self use tool unity video player that monkeys can use
随机推荐
MySQL 主从复制、分离解析
PyCharm设置仿sublime配色方案
How to modify a se38 editor theme
No  result  defined& nbsp…
Understanding and learning of parental delegation mechanism
MSC 307(88) (2010 FTPC Code) Part 5低播焰测试
开启创客教育造物学的领域
Particle theory of light (photoelectric effect / Compton effect)
English notes - cause and effect
MySQL configuration of database Series F5 load balancing
基于arm5718的Shell脚本参数传递的2种方法
使用信号分析器
Extensible database (I)
品达通用权限系统(Day 5~Day 6)
Arrangement of basic electrical knowledge (II)
Lamaba表达式学习及常用函数式接口
【Linux】【Mysql】ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘
事件委托的原理
django. core. exceptions. ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3
Pycharm不同项目之间共用第三方模块