关于TFT彩屏ILI9325X轴显示镜像问题的解决
这段时间玩转STM32F103ZET6接TFT彩屏ILI9325遇到的轴显示镜像问题,在网上查了很多资料,可能是自己能力问题,看完都没解决问题。自己对ILI9325数据手册[ILI9325DS_V0.29.pdf]详细看完以后,终于解决了,所以分享出来给大家,希望大家少走弯路。
首先说一下TFT彩屏ILI9325的工作模式。(看这个文章,必须要有LED灯点亮的基础)
1、彩屏横轴方向(240)是控制显示颜色的(320X240中的240点位,实际控制是(R线+G线+B线)*240,实际是上3*240=720根线,这720根线为S1-S720,即3根线(RGB)一组控制240个点位)。
2、彩屏竖轴方向(320)是门电路G1-G320,是控制哪一行通电。即当S线设置好颜色了,G哪行亮,哪行就显示S线设置的颜色。
3、TFT屏默认的显示方向是:S1->S720为一行的颜色设置,G1-G320总共有320行(S1->S720),那么总供的输出点实际上是(240*3)*320=230400个点位。
一、只要求X轴镜像恢复正常。把Source即RGB控制扫描方式反过来就可以了。
程序编译完成,下载正常,可是显示却X镜像了,如下图。
在网上多方查找,说要改什么I/D0,I/D1,实践结果根本不行。
后在网上下载了TFT彩屏的ILI9325数据手册,发现,只要改01h下的D8寄存器值就可以了。
相信大家看完就该理解了。
以下是改完以后的显示图片
顺代把源程序复制出来。
[头文件tftlcd.h]
#define TFTLCD_ILI9325
其中这个是更改横竖屏显示方向的。
#define TFTLCD_DIR 0 //0:竖屏 1:横屏 默认竖屏
[文件tftlcd.c]
只写出更改的部分
//设置LCD显示方向
//dir:0,竖屏;1,横屏
void LCD_Display_Dir(u8 dir)
{
if(dir==0) //默认竖屏方向
{
#ifdef TFTLCD_ILI9325
/*这里面是原来的设置
// LCD_WriteCmd(0x0001);
// LCD_WriteData(0x0100);
// LCD_WriteCmd(0x0003); //设置彩屏显示方向的寄存器
// LCD_WriteData(0x1030);
*/
LCD_WriteCmd(0x0001);
LCD_WriteData(0x0000);
LCD_WriteCmd(0x0003); //设置彩屏显示方向的寄存器
LCD_WriteData(0x1030);
tftlcd_data.height=320;
tftlcd_data.width=240;
#endif
}
else {
#ifdef TFTLCD_ILI9325
/*这里面是原来的设置
// LCD_WriteCmd(0x0001);
// LCD_WriteData(0x000);
// LCD_WriteCmd(0x0003); //设置彩屏显示方向的寄存器
// LCD_WriteData(0x1038);
*/
LCD_WriteCmd(0x0001);
LCD_WriteData(0x0100);
LCD_WriteCmd(0x0003); //设置彩屏显示方向的寄存器
LCD_WriteData(0x1038);
tftlcd_data.height=240;
tftlcd_data.width=320;
#endif
}
二、如果要X1,Y1->X240,Y320完全倒过来,那么只要设置S1-S720和Y1-Y320全反过来扫描就可以了。
原始图片是这样的:
而我们希望输出是这样的。
我们发现,只是Y轴的方向显示颠倒了,那么只要改门极电路(G1-G320) 的输出方向即可。
那么怎么改门极方向呢?
查资料,只要改R60H寄存器的D15(GS位)就可以了。
以下是更改的程序关键部分:
#ifdef TFTLCD_ILI9325
u16 ttData;
LCD_WriteCmd(0x0001);
LCD_WriteData(0x0100);
LCD_WriteCmd(0x0003); //设置彩屏显示方向的寄存器
LCD_WriteData(0x1030);
LCD_WriteCmd(0x0060); //指针移到TypeLCDBASE+0x60,即G门的内存偏移地址
ttData=TFTLCD->LCD_DATA;//读取原始数据
LCD_WriteCmd(0x0060);//指针移到TypeLCDBASE+0x60,即G门的内存偏移地址这句有点多余
LCD_WriteData(ttData|0x8000);//[15:0]]第15位置1。当然,如果要反过来,只要15位置0即可。(置0是ttData&0x7FFF,别弄反了。)
tftlcd_data.height=320;
tftlcd_data.width=240;
#endif
本人也是刚开始学习单片机,有不对的地方,还望指教。
关于TFT彩屏ILI9325X轴显示镜像问题的解决相关推荐
- 学习普中的51单片机TFT彩屏篇中遇到的问题和解决办法
如果你出现了把程序下载到单片机中,但是TFT彩屏显示白屏,那你可以试试这个解决办法 检查一下该屏的驱动C文件中的tftlcd.H文件,看一下里面宏定义的显示屏型号是否跟你手中的显示屏型号一致,如果不一 ...
- STM32 F1普中开发板 TFT彩屏指针时间显示及闹钟。
在普中RTC时钟上更改,按KEY键可更改时间.指针圆盘显示时钟,可设置闹钟. #include "stm32f10x.h" #include "led.h" # ...
- 基于STM32F103单片机的生理监控心率脉搏监控TFT彩屏显示
系统功能设计 STM32单片机生理监控心率脉搏TFT彩屏波形曲线65 本系统由STM32F103C8T6单片机核心板.心率传感器.TFT屏显示.按键.蜂鸣器组成. 1.TFT液晶实时显示心率值. 2. ...
- 普中tft彩屏驱动程序下载_51单片机 彩屏TFT-SD例程及资料下载 有FAT 红外遥控显示图片...
EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x 51单片机 彩屏TFT-SD例程及资料下载 有FAT 红外遥控显示图片 9 ` b( o4 r- D. g" ...
- 单片机读取SD卡中BMP图片文件并送往TFT彩屏上显示(测试成功)(二)
二.软件部分 软件中INI_FLAG为设置的一个标志位,通过置1该位可以控制发送或接受数据速度.因为在初始化阶段SD卡操作需要适当放缓,而初始化成功后可以加快数据传动速率. 1>往SD卡写一个字 ...
- ESP32-S2 st7789 SPI TFT彩屏240X320
例子乐鑫官方 esp-iot-solution/examples/hmi/lvgl_example 点左下角齿轮(SDK Configuration Editor)选择开发板为 Saola With ...
- TFT彩屏常见汉字取模方式及相关驱动函数
今天在写智能灯光的界面,用的是STM32和3.2寸TFT 彩屏. 我们在设计一个显示界面时,常常需要考虑一下汉字字体的大小,常见的字体有像素值为16*16.24*24.32*32的,而有时候我们界面用 ...
- STM32F103RBT6+TFT彩屏资料下载|程序
前两星期刚学了1.44寸TFT彩屏,总结一下,不好勿喷,欢迎交流. 先附上效果图 中文测试 ...
- 【物联网初探】- 02 - ESP32 利用 SPI 连通 TFT 彩屏 (Arduino IDE)
文章目录 1. 硬件配置 1.1 ESP32 1.1 TFT 彩屏 1.2 TFT 彩屏上的触摸屏 2. 接线 2.1 SPI 接口简介 2.2 TFT SPI 与 ESP GPIO 连接 3. TF ...
最新文章
- 强烈推荐可以玩上一整天的游戏网站
- asp 执行linux脚本,Shell.Application执行命令的五种方法小结
- awk内建变量示例详解之NR、FNR、NF
- 含有min()函数的栈,各种操作时间复杂度为O(1)
- js公共时间戳方法es6
- Java高并发和多线程系列 - 1. 线程基本概念
- Socket.IO聊天室~简单实用
- 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?
- 2019上半年系统集成项目管理工程师真题与答案
- kdj买卖指标公式源码_通达信kdj买卖指标公式
- android-player 本地服务器联调
- C# 源码 ,使用<switch语句>实现学生成绩评测.
- 你真的了解单点登录(SSO)吗? 单点登录实现方式
- linux shell脚本编写 | 三角形 | 梯形 | 菱形 | 九九乘法表 | 矩形 | 超详细
- 弹性云服务器使用须知
- 嵌入式系统知识和接口技术总结
- win10黑色护眼风格一波带走
- python爬取猫眼_python正则表达式爬取猫眼电影top100
- 设计模式-结构模式-装饰器模式 decorater
- 打包tfrecord文件,并读取