搜索
bottom↓
回复: 11

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

[复制链接]

出0入0汤圆

发表于 2012-3-24 18:32:39 | 显示全部楼层 |阅读模式
用51驱动2.6寸彩屏,驱动芯片是ILI9320,可以显示,但总是少一块显示不了,调整寄存器参数还是依旧,有经验的朋友指点一下!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2012-3-25 23:42:05 | 显示全部楼层
首先看看屏幕是不是正常,如果屏幕正常的话那肯定是你FOR循环少了点什么。你也不传代码上来看看

出0入0汤圆

发表于 2012-3-26 01:06:27 | 显示全部楼层
我遇到过类似的问题,也是屏幕一边有白条区域不显示。最后是发现初始化的时候一个寄存器的地址搞错了,改正后就好了。

出0入0汤圆

 楼主| 发表于 2012-3-26 19:57:06 | 显示全部楼层
谢谢两位,已经搞定,如szyy所说,是寄存器60h初始化的问题。

出0入0汤圆

发表于 2012-6-17 00:03:28 | 显示全部楼层
你好,我的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;
}

出0入0汤圆

发表于 2012-6-17 13:01:34 | 显示全部楼层
请把你的驱动程序传上来我参考一下,可以吗?谢谢!

出0入0汤圆

发表于 2012-6-17 14:13:56 | 显示全部楼层
如果右边刚好有64个象素空白,考虑下是不是把short给char了?

出0入0汤圆

 楼主| 发表于 2012-6-18 07:57:28 | 显示全部楼层
WZW 发表于 2012-6-17 13:01
请把你的驱动程序传上来我参考一下,可以吗?谢谢!

我后来没有研究这个屏了,所以很多网上找的驱动程序放在一起乱七八糟不知是哪个了,你将你全部的程序传上来给大家帮你看看。

出0入0汤圆

发表于 2012-6-18 11:20:08 | 显示全部楼层
weavr 发表于 2012-6-18 07:57
我后来没有研究这个屏了,所以很多网上找的驱动程序放在一起乱七八糟不知是哪个了,你将你全部的程序传上 ...

好的马上传:
我的是STM32平台,TFT ILI9320为16位操作模式,STM32 总线为8位,锁存器573锁存至低8位,所以每次往总线挂数据都要操作两次
附件为我从51移植过来的驱动

我做过的工作:
1、所有IO口都正常连接,电平操作正常,用示波器看过
2、因为用到锁存器,所以只能读出高8位的数据,我能读出芯片的型号高8位,“93”
3、试过很多网友的初始化代码,都没有成功,
4、操作时序也做过很多次微调(主要是加点延时,变更CS和RS操作顺序等) ,失败……

TFT的现象一直是白屏不动

有出现过类似问题的网友,请说说你们的解决方案,有可能我没有注意的地方请大侠们提出指教,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-6-18 13:34:49 | 显示全部楼层
WZW 发表于 2012-6-18 11:20
好的马上传:
我的是STM32平台,TFT ILI9320为16位操作模式,STM32 总线为8位,锁存器573锁存至低8位,所 ...

初始化代码里有一个判断驱动芯片型号的动作,如果读不全代码,初始化不是没办法成功吗?

出0入0汤圆

发表于 2012-6-19 13:05:02 | 显示全部楼层
weavr 发表于 2012-6-18 13:34
初始化代码里有一个判断驱动芯片型号的动作,如果读不全代码,初始化不是没办法成功吗? ...

问题已解决,程序应该没有问题了,是8位和16位操作模式出错了

出0入0汤圆

发表于 2012-6-27 11:58:55 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 16:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表