主题 : MINI2440的LCD显示设置问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 82145
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2012-11-18
最后登录: 2013-01-14
楼主  发表于: 2012-11-20 22:19

 MINI2440的LCD显示设置问题

描述:显示图片形式
图片:
本人用mini2440裸机驱动LCD(T35),想让其显示取模的图片数组,倒是可以显示,就是图片显示分成两部分,上一半,下一半,左面还有空出来的,不知道什么原因,求高手指点一下。
先将部分代码贴出来,谢谢大家。

/*******LCD初始化******/
void init_lcd(void)
{
    //配置LCD相关引脚
    rGPCUP  = 0xffffffff;    //使能附加上拉
    rGPCCON = 0xaaaa02a9;    //选择VD[7~0]
    rGPDUP  = 0x00000000;    //禁止使能附加上拉
    rGPDCON = 0xaaaaaaaa;    

    //设置时钟信号 TFT型LCD 24位
    rLCDCON1 = (3<<8)|(0<<7)|(3<<5)|(13<<1)|0;

    //设置LCD参数
    rLCDCON2 = (10<<24)|(239<<14)|(4<<6)|(1);    //设置屏幕的垂直长度
    rLCDCON3 = (0x44<<19)|(319<<8)|(0X04);        //设置屏幕的水平长度
    rLCDCON4 = (1);
    rLCDCON5 = (BPP24BL<<12)|(INVVCLK<<10)|(INVVLINE<<9)|
            (INVVFRAME<<8)|(INVVD<<7)|(INVVDEN<<6)|
            (PWREN<<3)|(BSWP<<1)|(HWSWP);

    //用于设置显示缓存区时,取低21位地址
    //U32 LCD_BUFFER[320][240];
    rLCDSADDR1 = (((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
    rLCDSADDR2 = M5D(((U32)LCD_BUFFER + (320*240*4))>>1 );

    rLCDINTMSK |= (3);      //屏蔽LCD中断

    rTCONSEL = 0;             //无效LPC3600

    rGPGUP &= (~(1<<4))|(1<<4);        //GPG4上拉电阻无效
    rGPGCON &= (~(3<<8))|(3<<8);     //设置GPG4为LCD_PWREN
    rGPGDAT |= (1<<4);                //GPG4置1
    rLCDCON5 &= (~(1<<3))|(1<<3);   //有效PWREN信号
    rLCDCON5 &= (~(1<<5))|(0<<5);   //PWREN信号极性不翻转

    rLCDCON1|=1;                   //LCD开启    
}


/*******************************************
在LCD屏幕上画一个图片 24位图片
********************************************/
void draw_picture(const unsigned char picture[])
{
    int x, y, t = 0;
    for(y = 0; y < 240; y++)
    {
        for(x = 0; x < 320; x++)
        {
            LCD_BUFFER[y][x] = (picture[t]<<16)|(picture[t+1]<<8)|(picture[t+2]);
            t += 3;
        }
    }
}


的到得显示结果 如图中,请大家一起来探讨一下原因。
级别: 新手上路
UID: 85397
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2013-01-04
最后登录: 2013-03-23
1楼  发表于: 2013-02-25 09:18
你可以参考下天嵌的《裸奔三部曲》,里面应该有你要的答案。
级别: 新手上路
UID: 11371
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2009-12-05
最后登录: 2015-08-16
2楼  发表于: 2013-05-15 22:30
初始化显示区域的时候,前肩和后肩没有设置好。

修改关于display部分的代码,cfw.c中关于LCD寄存器的配置,s2440.h中寄存器的参

mini2440 T35屏:
//垂直同步信号
#define VBPD                    (1)//后肩
#define VFPD                    (5)//前肩
#define VSPW                    (1)//脉宽

//水平同步信号
#define HBPD                    (24)//前肩
#define HFPD                    (19)//后肩
#define HSPW                    (5)//脉宽
[ 此帖被luoben137在2013-05-15 22:47重新编辑 ]
级别: 侠客
UID: 22542
精华: 0
发帖: 70
金钱: 355 两
威望: 71 点
贡献值: 0 点
综合积分: 140 分
注册时间: 2010-06-02
最后登录: 2017-03-10
3楼  发表于: 2013-10-08 13:44
楼上正解
级别: 新手上路
UID: 85742
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
贡献值: 0 点
综合积分: 50 分
注册时间: 2013-01-08
最后登录: 2014-02-26
4楼  发表于: 2013-12-02 22:30
大侠们,T35屏也是这种问题,垂直同步信号怎么设置啊?