ILI9342驱动的液晶屏颜 {MOD}显示异常

2019-08-14 03:29发布

本帖最后由 Dennis-Zhou 于 2017-5-24 18:45 编辑

使用的液晶屏是2.2英寸横屏,分辨率320*240,驱动芯片是ILI9342。但无论如何怎么调,屏幕显示的颜 {MOD}都不正确
请各位帮我看看,是什么原因造成的。

当0x36寄存器配置为0x00:蓝 {MOD}显示为红 {MOD},绿 {MOD}显示为深绿 {MOD},红 {MOD}则无法显示(红框本来是要显示红 {MOD}的,但没有显示);
A3.jpg

当0x36寄存器配置为0x08:蓝 {MOD}显示正常,绿 {MOD}显示为深绿 {MOD},红 {MOD}则无法显示(红框本来是要显示红 {MOD}的,但没有显示);
A2.jpg


0x21和0x20寄存器都切换过,反正RGB也无法同时显示。

0x36寄存器:
A1.png



LCD的初始化程序如下:
////======================================
//        //Software Reset
//        TFT8K6204_WriteReg(0x0001);   

        //Backlight Control 2
        TFT8K6204_WriteReg(0x00B9);   
        TFT8K6204_WriteData(0x00FF);
        TFT8K6204_WriteData(0x0093);
        TFT8K6204_WriteData(0x0042);
        
        //Display Inversion ON        
        TFT8K6204_WriteReg(0x0021);   
//        //Display Inversion OFF
//        TFT8K6204_WriteReg(0x0020);   

        
        //Memory Access Control
        TFT8K6204_WriteReg(0x0036);   
        TFT8K6204_WriteData(0x0008);
//        TFT8K6204_WriteData(0x0028); //绿蓝
//        TFT8K6204_WriteData(0x0020); //红绿
//        TFT8K6204_WriteData(0x0000);

        //Pixel Format Set
        TFT8K6204_WriteReg(0x003A);   
        TFT8K6204_WriteData(0x00055);
         
        //Power Control 1
        TFT8K6204_WriteReg(0x00C0);   
        TFT8K6204_WriteData(0x0025);   
        TFT8K6204_WriteData(0x000A);   
         
        //Power Control 2
        TFT8K6204_WriteReg(0x00C1);   
        TFT8K6204_WriteData(0x0001);
        
        //VCOM Control 1
        TFT8K6204_WriteReg(0x00C5);   
        TFT8K6204_WriteData(0x002F);   
        TFT8K6204_WriteData(0x0027);   
         
        //VCOM Control 2
        TFT8K6204_WriteReg(0x00C7);
        TFT8K6204_WriteData(0x00BE);
         
        //Backlight Control 1
        TFT8K6204_WriteReg(0x00B8);   
        TFT8K6204_WriteData(0x000B);

        //Positive Gamma Correction
        TFT8K6204_WriteReg(0x00E0);   
        TFT8K6204_WriteData(0x000F);   
        TFT8K6204_WriteData(0x002A);   
        TFT8K6204_WriteData(0x0027);   
        TFT8K6204_WriteData(0x000C);   
        TFT8K6204_WriteData(0x000F);   
        TFT8K6204_WriteData(0x0007);   
        TFT8K6204_WriteData(0x0058);   
        TFT8K6204_WriteData(0x0086);   
        TFT8K6204_WriteData(0x0048);   
        TFT8K6204_WriteData(0x0009);   
        TFT8K6204_WriteData(0x0018);   
        TFT8K6204_WriteData(0x000B);   
        TFT8K6204_WriteData(0x001B);   
        TFT8K6204_WriteData(0x000E);   
        TFT8K6204_WriteData(0x0008);
        
        //Negative Gamma Correction
        TFT8K6204_WriteReg(0x00E1);   
        TFT8K6204_WriteData(0x0008);   
        TFT8K6204_WriteData(0x0017);   
        TFT8K6204_WriteData(0x001A);   
        TFT8K6204_WriteData(0x0002);   
        TFT8K6204_WriteData(0x000E);   
        TFT8K6204_WriteData(0x0003);   
        TFT8K6204_WriteData(0x0029);   
        TFT8K6204_WriteData(0x0013);   
        TFT8K6204_WriteData(0x0039);   
        TFT8K6204_WriteData(0x0001);   
        TFT8K6204_WriteData(0x0005);   
        TFT8K6204_WriteData(0x0003);   
        TFT8K6204_WriteData(0x0026);   
        TFT8K6204_WriteData(0x0033);   
        TFT8K6204_WriteData(0x000F);   

        //Display Function Control
        TFT8K6204_WriteReg(0x00B6);
        TFT8K6204_WriteData(0x0000);
        TFT8K6204_WriteData(0x0060);
        TFT8K6204_WriteData(0x0027);   
        TFT8K6204_WriteData(0x0000);   
         
        TFT8K6204_WriteReg(0x0011);        //退出睡眠状态
        delay_ms(10);
        TFT8K6204_WriteReg(0x0011);
        delay_ms(10);         
        TFT8K6204_WriteReg(0x0029);        //开启显示

////======================================




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
Dennis-Zhou
1楼-- · 2019-08-15 19:26
cromarti 发表于 2017-5-26 23:45
手机排版的锅……还是先看看接口输出的有没有问题吧

你是指DB0-DB15? 怎么检查, 如果接错了,应该字符不会显示出来吧
Dennis-Zhou
2楼-- · 2019-08-16 01:12
 精彩回答 2  元偷偷看……
cromarti
3楼-- · 2019-08-16 05:05
Dennis-Zhou 发表于 2017-5-27 09:38
你是指DB0-DB15? 怎么检查, 如果接错了,应该字符不会显示出来吧

逻辑分析仪,仿真都可以。接错了不一定完全不能用,我看datasheet里面写寄存器只需要低八位而且没有格式要求。我今天就遇到个问题,led正常闪烁但是串口发送乱码,检查了一下发现是hse设置错了……
Dennis-Zhou
4楼-- · 2019-08-16 10:27
cromarti 发表于 2017-5-27 16:59
逻辑分析仪,仿真都可以。接错了不一定完全不能用,我看datasheet里面写寄存器只需要低八位而且没有格式 ...

嗯,我准备着重检查这些数据端口。
luoqice1
5楼-- · 2019-08-16 15:00
我上次也是用的9342,IMI的8/16位数据选择线漏了,出现无法显示完整信息的情况,检查一下硬件吧。
Dennis-Zhou
6楼-- · 2019-08-16 18:42
几周前已经解决问题了,原来是写数据时,要16位一次性写进去。
(原来的屏幕是分2次写进去的。移植时忽略了这点,搞了好几天才明白 QQ截图20170825111708.png

一周热门 更多>