songtao0728 发表于 2010-12-30 14:42:42

TFT(ILI9320初始化配置问题)

void ILI9320Init(void)
{
    TFTDelay(100);//根据不同晶振速度可以调整延时,保障稳定显示
   
         TFTInit_Data(0x00e5, 0x8000);       
        TFTInit_Data(0x0000, 0x0001);       
        TFTInit_Data(0x0001, 0x0100);
        TFTInit_Data(0x0002, 0x0700);
        TFTInit_Data(0x0003, 0x1030);
        TFTInit_Data(0x0004, 0x0000);
        TFTInit_Data(0x0008, 0x0202);       
        TFTInit_Data(0x0009, 0x0000);       
        TFTInit_Data(0x000A, 0x0000);
        TFTInit_Data(0x000C, 0x0000);       
        TFTInit_Data(0x000D, 0x0000);       
        TFTInit_Data(0x000F, 0x0000);       
//-----Power On sequence-----------------------       
        TFTInit_Data(0x0010, 0x0000);       
        TFTInit_Data(0x0011, 0x0007);       
        TFTInit_Data(0x0012, 0x0000);       
        TFTInit_Data(0x0013, 0x0000);       
        TFTDelay(50);
        TFTInit_Data(0x0010, 0x17B0);       
        TFTInit_Data(0x0011, 0x0007);       
        TFTDelay(10);
        TFTInit_Data(0x0012, 0x013A);       
        TFTDelay(10);
        TFTInit_Data(0x0013, 0x1A00);       
        TFTInit_Data(0x0029, 0x000c);               
        TFTDelay(10);
//-----Gamma control-----------------------       
        TFTInit_Data(0x0030, 0x0000);       
        TFTInit_Data(0x0031, 0x0505);       
        TFTInit_Data(0x0032, 0x0004);       
        TFTInit_Data(0x0035, 0x0006);       
        TFTInit_Data(0x0036, 0x0707);       
        TFTInit_Data(0x0037, 0x0105);       
        TFTInit_Data(0x0038, 0x0002);       
        TFTInit_Data(0x0039, 0x0707);       
        TFTInit_Data(0x003C, 0x0704);       
        TFTInit_Data(0x003D, 0x0807);       
//-----Set RAM area-----------------------       
        TFTInit_Data(0x0050, 0x0000);
        TFTInit_Data(0x0051, 0x00EF);
        TFTInit_Data(0x0052, 0x0000);
        TFTInit_Data(0x0053, 0x013F);
        TFTInit_Data(0x0060, 0x2700);
        TFTInit_Data(0x0061, 0x0001);
        TFTInit_Data(0x006A, 0x0000);
        TFTInit_Data(0x0021, 0x0000);       
        TFTInit_Data(0x0020, 0x0000);       
//-----Partial Display Control------------       
        TFTInit_Data(0x0080, 0x0000);       
        TFTInit_Data(0x0081, 0x0000);
        TFTInit_Data(0x0082, 0x0000);
        TFTInit_Data(0x0083, 0x0000);
        TFTInit_Data(0x0084, 0x0000);       
        TFTInit_Data(0x0085, 0x0000);
//-----Panel Control----------------------
        TFTInit_Data(0x0090, 0x0010);       
        TFTInit_Data(0x0092, 0x0000);
        TFTInit_Data(0x0093, 0x0003);
        TFTInit_Data(0x0095, 0x0110);
        TFTInit_Data(0x0097, 0x0000);       
        TFTInit_Data(0x0098, 0x0000);
//-----Display on-----------------------       
        TFTInit_Data(0x0007, 0x0173);       
        TFTDelay(50);
}

目前不理解的有两个问题:
1 TFTInit_Data(0x00e5, 0x8000); 00e5这个寄存器在手册中没有说明,是不是可以理解为芯片厂家隐藏的寄存器,不方便让用户知道,但用的时候一定要加,可这样的话,至少文档中应该有说明,不知道是我未看仔细还是开发商的问题
2 TFTInit_Data(0x0007, 0x0173);
下面是07H寄存器的各位分布图:

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_608093LI8ZHL.jpg
07H寄存器 (原文件名:123.jpg)

这句是向07寄存器写入0000 0001 0111 0011,各位能对上号吗,我怎么感觉不对劲呀,请指教~~~迷惑中~

tianma666666 发表于 2011-1-15 21:23:14

老大!能否发个ILI9320的完整驱动例程上来?小弟搞了几天了就是点不亮,纠结...

liningmcu 发表于 2011-3-5 18:37:00

ILI9320的驱动网上貌似特别多啊

chxcyou 发表于 2011-3-27 09:48:03

这两个问题我也很纠结,要是老兄知道原因后别忘了大家一起分享哈!(⊙o⊙)

chenzheng123 发表于 2011-4-22 20:37:59

我的没有点亮,哎

1013269594 发表于 2011-4-22 21:23:01

哎!我也是极度郁闷中啊!没点亮啊!看到有的程序貌似没有一般初始化中的那一大串程序

MZ_Guo 发表于 2011-5-16 18:23:53

0x0007用0x0173和0x0133没有区别好像,那些标有“0”的位好像是没有功能的等于可以忽略,那些比如DTE什么才是有控制意义的

其实网上很多例程中都有的啊,都是调试OK的,可以先拿一个来用,然后再根据自己要求对照手册改一下试试看有什么效果,
我就改过0x41,0x42这两个寄存器的初始代码(可以在程序运行中用事件触发来决定怎么修改),是光栅滚屏用的,一般应用没什么实际意义,试了下又改回默认的了。

这里有一个9320的初始化代码,可以试一下,是我买的开发板里的代码,由于我的屏是8989的,我没试这份代码,但应该没问题的

void LCD_9320_9300_Init(void)
{
        LCD_WriteReg(0x00,0x0000);
        LCD_WriteReg(0x01,0x0100);        //Driver Output Contral.
        LCD_WriteReg(0x02,0x0700);        //LCD Driver Waveform Contral.
        LCD_WriteReg(0x03,0x1030); //设置扫描方式,0x1030是从左到右行扫描整体自上至下,如果是0x1038则是列扫描从上到下,整体自左至右
        LCD_WriteReg(0x04,0x0000);        //Scalling Contral.
        LCD_WriteReg(0x08,0x0202);        //Display Contral 2.(0x0207)
        LCD_WriteReg(0x09,0x0000);        //Display Contral 3.(0x0000)
        LCD_WriteReg(0x0a,0x0000);        //Frame Cycle Contal.(0x0000)
        LCD_WriteReg(0x0c,(1<<0));        //Extern Display Interface Contral 1.(0x0000)
        LCD_WriteReg(0x0d,0x0000);        //Frame Maker Position.
        LCD_WriteReg(0x0f,0x0000);        //Extern Display Interface Contral 2.          
        delay_ms(50);
        LCD_WriteReg(0x07,0x0101);        //Display Contral.
        delay_ms(50);                                                                   
        LCD_WriteReg(0x10,(1<<12)|(0<<8)|(1<<7)|(1<<6)|(0<<4));        //Power Control 1.(0x16b0)
        LCD_WriteReg(0x11,0x0007);                                                                //Power Control 2.(0x0001)
        LCD_WriteReg(0x12,(1<<8)|(1<<4)|(0<<0));                                //Power Control 3.(0x0138)
        LCD_WriteReg(0x13,0x0b00);                                                                //Power Control 4.
        LCD_WriteReg(0x29,0x0000);                                                                //Power Control 7.
        LCD_WriteReg(0x2b,(1<<14)|(1<<4));
        LCD_WriteReg(0x50,0x0000); //水平GRAM起始位置
        LCD_WriteReg(0x51,LCD_W_MAX); //水平GRAM终止位置                  
        LCD_WriteReg(0x52,0x0000); //垂直GRAM起始位置                  
        LCD_WriteReg(0x53,LCD_H_MAX); //垂直GRAM终止位置
        LCD_WriteReg(0x60,0x2700);        //Driver Output Control.
        LCD_WriteReg(0x61,0x0001);        //Driver Output Control.
        LCD_WriteReg(0x6a,0x0000);        //Vertical Srcoll Control.

        LCD_WriteReg(0x80,0x0000);        //Display Position? Partial Display 1.
        LCD_WriteReg(0x81,0x0000);        //RAM Address Start? Partial Display 1.
        LCD_WriteReg(0x82,0x0000);        //RAM Address End-Partial Display 1.
        LCD_WriteReg(0x83,0x0000);        //Displsy Position? Partial Display 2.
        LCD_WriteReg(0x84,0x0000);        //RAM Address Start? Partial Display 2.
        LCD_WriteReg(0x85,0x0000);        //RAM Address End? Partial Display 2.

        LCD_WriteReg(0x90,(0<<7)|(16<<0));        //Frame Cycle Contral.(0x0013)
        LCD_WriteReg(0x92,0x0000);        //Panel Interface Contral 2.(0x0000)
        LCD_WriteReg(0x93,0x0001);        //Panel Interface Contral 3.
        LCD_WriteReg(0x95,0x0110);        //Frame Cycle Contral.(0x0110)
        LCD_WriteReg(0x97,(0<<8));        //
        LCD_WriteReg(0x98,0x0000);        //Frame Cycle Contral.          
        LCD_WriteReg(0x07,0x0133);        //(0x0173)
}

你可能也注意到了,没有对0x05这个寄存器的写入,应该是不用管,我没细研究

wo_LKH 发表于 2011-5-22 19:15:57

弄了几天,也没点亮,

lyon_beihua 发表于 2011-5-24 22:54:19

驱动程序一般不会有问题,只要按买液晶的店家的代码用就可以,但TFTDelay(100);这样的延时一定要正确,不正确的延时会造成初始化失败的。如果是有底板的液晶屏,还好;如果是没有底板的,自己焊接时,如果焊不好,也会不亮的

mdq123 发表于 2012-7-22 22:05:53

指令的意义是什么意思啊?
页: [1]
查看完整版本: TFT(ILI9320初始化配置问题)