2.6寸TFT显示少一块,驱动芯片ILI9320

2020-02-05 08:58发布

用51驱动2.6寸彩屏,驱动芯片是ILI9320,可以显示,但总是少一块显示不了,调整寄存器参数还是依旧,有经验的朋友指点一下! 263.jpg (118.22 KB, 下载次数: 1) 下载附件 2012-3-24 18:32 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lanqilove
1楼-- · 2020-02-05 12:46
首先看看屏幕是不是正常,如果屏幕正常的话那肯定是你FOR循环少了点什么。你也不传代码上来看看
szyy
2楼-- · 2020-02-05 14:06
我遇到过类似的问题,也是屏幕一边有白条区域不显示。最后是发现初始化的时候一个寄存器的地址搞错了,改正后就好了。
weavr
3楼-- · 2020-02-05 14:49
 精彩回答 2  元偷偷看……
WZW
4楼-- · 2020-02-05 15:56
你好,我的TFT遇到了和你的不一样的问题,看能不能帮忙看一下,好像和你的TFT是一样的,驱动芯片和长相都一样(我的是在淘宝买的,给了例程驱动,51的,我的是STM32),我把51的移植过来,就是驱动不了,一直白屏。
我修改的代码:(只拿了我修改的部分)
//**************51控制端口定义********************
//#define DataPort P0     //数据口使用DataPort

//sbit RS    =P2^5;                //数据/命令选择
//sbit RW    =P2^4;       //写数据/命令
//sbit nRD   =P2^3;       //读控制
//sbit CS    =P2^2;                //片选
//sbit RES   =P2^1;                //复位

//sbit LE    =P2^0;       //74HC573锁存控制

//**************STM32控制端口定义********************
#define RS_SET GPIO_SetBits(GPIOE,GPIO_Pin_14)                //RS
#define RS_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_14)
#define RW_SET GPIO_SetBits(GPIOE,GPIO_Pin_13)                //RW
#define RW_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_13)
#define RD_SET GPIO_SetBits(GPIOE,GPIO_Pin_12)                //RD
#define RD_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_12)
#define CS_SET GPIO_SetBits(GPIOD,GPIO_Pin_0)                 //CS
#define CS_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_0)
#define RES_SET GPIO_SetBits(GPIOD,GPIO_Pin_1)                //RES
#define RES_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_1)
#define LE_SET GPIO_SetBits(GPIOD,GPIO_Pin_2)                        //LE
#define LE_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_2)
//================================================================================================
//        实现功能:        写命令
//        输入参数:  DH 需要输入16bits命令的高8位
//              DL 需要输入16bits命令的低8位
//================================================================================================
void Write_Cmd(unsigned char DH,unsigned char DL)
{
                u16 readdata;
               
   // RD_SET;//nRD=1;
   // RW_SET;//RW=0;==
                //delay_ms(1);//delayms(1);
    //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
                readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
                readdata &= 0X00FF;
                readdata |= (((u16)DL)<<8)&0XFF00;
    GPIO_Write(GPIOD,readdata);//DataPort=DL;            //送低8位命令给573待锁存
                //delay_ms(1);
    LE_SET;//LE=1;                   //锁存位
                //delay_ms(1);//delayms(1);
    LE_RSET;//LE=0;                   //断开锁存,位选573的Q7~Q0仍保持
                //delay_ms(1);//delayms(1);
                readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
                readdata &= 0X00FF;
                readdata |= (((u16)DH)<<8)&0XFF00;
    GPIO_Write(GPIOD,readdata);//DataPort=DH;            //送高8位命令给TFT
                //delay_ms(1);
                //delayms(1);
        /*
    //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
    DataPort_L=DL;
    DataPort_H=DH;
        */
                CS_RSET;//CS=0; 使能TFT操作
                RS_RSET;//RS=0;        低电平写地址
                RW_RSET;
                RW_SET;//RW=1;给低脉冲写操作 <500ns
                CS_SET;//CS=1;TFT关使能
}

//================================================================================================
//        实现功能:        写数据(2*8bits)
//        输入参数:  DH 需要输入16bits数据的高8位
//              DL 需要输入16bits数据的低8位
//================================================================================================
void Write_Data(unsigned char DH,unsigned char DL)
{
                u16 readdata;
               
                //delay_ms(1);//delayms(1);
    //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
                readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
                readdata &= 0X00FF;
                readdata |= (((u16)DL)<<8)&0XFF00;
    GPIO_Write(GPIOD,readdata);//DataPort=DL;            //送低8位命令给573待锁存
                //delay_ms(1);//delayms(1);
    LE_SET;//LE=1;                   //锁存位
                //delay_ms(1);//delayms(1);
    LE_RSET;//LE=0;                   //断开锁存,位选573的Q7~Q0仍保持
                //delay_ms(1);//delayms(1);
                readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
                readdata &= 0X00FF;
                readdata |= (((u16)DH)<<8)&0XFF00;
    GPIO_Write(GPIOD,readdata);//DataPort=DH;            //送高8位命令给TFT
                //delay_ms(1);//delayms(1);
        /*
    //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
    DataPort_L=DL;
    DataPort_H=DH;
        */
                CS_RSET;//CS=0;使能TFT操作
                RS_SET;//RS=1;高电平写数据
                RW_RSET;//RW=0;
                RW_SET;//RW=1;给个低脉冲,写操作  <500ns
                CS_SET;//CS=1;关使能
}

51代码:
//**************控制端口定义********************
#define DataPort P4     //数据口使用DataPort

#define RS  P35                //数据/命令选择
#define RW  P34         //写数据/命令
#define nRD P33         //读控制
#define CS  P32                //片选
#define RES P31                //复位

#define LE  P30                //74HC573锁存控制
//================================================================================================
//        实现功能:  写命令
//        输入参数:  DH 需要输入16bits命令的高8位
//                  DL 需要输入16bits命令的低8位
//================================================================================================
void Write_Cmd(unsigned char DH,unsigned char DL)
{
        CS=0;
        RS=0;
    nRD=1;
    RW=0;

    //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
    DataPort=DL;            //送低8位命令给573待锁存
    LE=1;                   //锁存位
    LE=0;                   //断开锁存,位选573的Q7~Q0仍保持

        DataPort=DH;        //送高8位命令给TFT

        /*
    //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
    DataPort_L=DL;
    DataPort_H=DH;
        */

        RW=1;
        CS=1;
}

//================================================================================================
//        实现功能:  写数据(2*8bits)
//        输入参数:  DH 需要输入16bits数据的高8位
//                  DL 需要输入16bits数据的低8位
//================================================================================================
void Write_Data(unsigned char DH,unsigned char DL)
{
       
        CS=0;
        RS=1;

    //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
        DataPort=DL;            //送低8位数据给573待锁存
        LE=1;                   //锁存位
        LE=0;                   //断开锁存,位选573的Q7~Q0仍保持

        DataPort=DH;            //送高8位数据给TFT

        /*
    //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
    DataPort_L=DL;
    DataPort_H=DH;
        */

        RW=0;
        RW=1;
        CS=1;
}
WZW
5楼-- · 2020-02-05 20:38
请把你的驱动程序传上来我参考一下,可以吗?谢谢!
loohoo0302
6楼-- · 2020-02-05 23:46
如果右边刚好有64个象素空白,考虑下是不是把short给char了?

一周热门 更多>