野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10631|回复: 2

为什么设置TFT液晶屏的行列起始地址对液晶屏显示无影响

[复制链接]
发表于 2017-7-3 10:38:00 | 显示全部楼层 |阅读模式
void ILI9341_GramScan ( uint8_t ucOption )
{   
    // 参数检查,只可输入0-7
    if(ucOption > 7 )
    {
        return;
    }
    // 根据模式更新LCD_SCAN_MODE的值,主要用于触摸屏选择计算参数
    LCD_SCAN_MODE = ucOption;
   
    // 根据模式更新XY方向的像素宽度
    if(ucOption % 2 == 0)   
    {
        // 0 2 4 6模式下X方向像素宽度为240,Y方向为320
        LCD_X_LENGTH = ILI9341_LESS_PIXEL;
        LCD_Y_LENGTH = ILI9341_MORE_PIXEL;
    }
    else               
    {
        // 1 3 5 7模式下X方向像素宽度为320,Y方向为240
        LCD_X_LENGTH = ILI9341_MORE_PIXEL;
        LCD_Y_LENGTH = ILI9341_LESS_PIXEL;
    }

    // 0x36命令参数的高3位可用于设置GRAM扫描方向
    ILI9341_Write_Cmd   ( 0x36 );
    ILI9341_Write_Data  ( 0x08 |(ucOption << 5));       // 根据ucOption的值设置LCD参数,共0-7种模式
   
    // 设置列地址范围
    ILI9341_Write_Cmd   ( CMD_SetCoordinateX );
    ILI9341_Write_Data  ( 0x00 );                       /* x 起始坐标高8位 SC:Start Column address */
    ILI9341_Write_Data  ( 0x80 );                       /* x 起始坐标低8位 */
    ILI9341_Write_Data  ( ((LCD_X_LENGTH-1)>>8)&0xFF ); /* x 结束坐标高8位 EC:End Column address */   
    ILI9341_Write_Data  ( (LCD_X_LENGTH-1)&0xFF );      /* x 结束坐标低8位 */
   
    // 设置行地址范围
    ILI9341_Write_Cmd   ( CMD_SetCoordinateY );
    ILI9341_Write_Data  ( 0x00 );                       /* y 起始坐标高8位 SC:Start Column address */
    ILI9341_Write_Data  ( 0x70 );                       /* y 起始坐标低8位 */
    ILI9341_Write_Data  ( ((LCD_Y_LENGTH-1)>>8)&0xFF ); /* y 结束坐标高8位 EC:End Column address */     
    ILI9341_Write_Data  ( (LCD_Y_LENGTH-1)&0xFF );      /* y 结束坐标低8位 */

    /* write gram start */
    ILI9341_Write_Cmd ( CMD_SetPixel );   
}

改变行列的起始地址数值,对显示无影响,把设置行列起始地址的命令行注释掉也没有影响,为什么呢?
回复

使用道具 举报

 楼主| 发表于 2017-7-3 10:46:25 | 显示全部楼层
发现问题了,可能是下面的函数影响的
void ILI9341_OpenWindow ( uint16_t usX, uint16_t usY, uint16_t usWidth, uint16_t usHeight )
{   
    ILI9341_Write_Cmd   ( CMD_SetCoordinateX );         /* 设置X坐标 */
    ILI9341_Write_Data  ( usX >> 8  );                  /* 先高8位,然后低8位 */
    ILI9341_Write_Data  ( usX & 0xff  );                /* 设置起始点和结束点*/
    ILI9341_Write_Data  ( ( usX + usWidth - 1 ) >> 8  );
    ILI9341_Write_Data  ( ( usX + usWidth - 1 ) & 0xff  );

    ILI9341_Write_Cmd   ( CMD_SetCoordinateY );         /* 设置Y坐标*/
    ILI9341_Write_Data  ( usY >> 8  );
    ILI9341_Write_Data  ( usY & 0xff  );
    ILI9341_Write_Data  ( ( usY + usHeight - 1 ) >> 8 );
    ILI9341_Write_Data  ( ( usY + usHeight - 1) & 0xff );   
}
回复 支持 反对

使用道具 举报

发表于 2017-7-3 14:19:01 | 显示全部楼层
是的,openwindow函数会重新设置坐标
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 12:51 , Processed in 0.032463 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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