StemWi使用横屏显示时出错,各种尝试无果,请大神搭救。。。

2019-10-16 00:32发布

   前一阵子移植好emWin到stm32之后移植没有使用,今天把程序拿出来使用,然后改成横屏试试看效果,擦,这是怎么回事。看下图:
显示不全,右下角很奇怪 显示不全,右下角很奇怪        IMG_20160105_171846.jpg
使用竖屏时候没有任何问题,看图:
IMG_20160105_172310.jpg



情况说明:液晶驱动拿出来单独测试过,横屏竖屏时显示数字,字符串,画线画圆一点问题没有。按理说只要液晶显示正常,那么留给StemWin的函数接口没问题就可以跑起来了,现在遇到了这样子的问题,真是奇怪。希望知道的朋友提点建议,不然就只能使用竖屏了。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
1201yuge
1楼-- · 2019-10-17 19:59
孤心寒 发表于 2016-1-6 17:05
读点函数发上来看一下,还有LCDConf_FlexColor_Template.c文件。



我的液晶型号是:9841



#include "GUI.h"
#include "ILI94xx.h"
#include "touch.h"
#include "GUIDRV_Template.h"
#include "GUIDRV_FlexColor.h"

//与触摸屏有关定义,根据实际情况填写
#define TOUCH_AD_TOP                  3940          //按下触摸屏的顶部,写下 Y 轴模拟输入值。
#define TOUCH_AD_BOTTOM                488         //按下触摸屏的底部,写下 Y 轴模拟输入值。
#define TOUCH_AD_LEFT                 3883                //按下触摸屏的左侧,写下 X 轴模拟输入值。
#define TOUCH_AD_RIGHT                150        //按下触摸屏的右侧,写下 X 轴模拟输入值。


//屏幕大小
#define XSIZE_PHYS  320 //X轴
#define YSIZE_PHYS  480 //Y轴
#define VXSIZE_PHYS        480
#define VYSIZE_PHYS 320


//配置检查
#ifndef   VXSIZE_PHYS
  #define VXSIZE_PHYS XSIZE_PHYS
#endif
#ifndef   VYSIZE_PHYS
  #define VYSIZE_PHYS YSIZE_PHYS
#endif
#ifndef   XSIZE_PHYS
  #error Physical X size of display is not defined!
#endif
#ifndef   YSIZE_PHYS
  #error Physical Y size of display is not defined!
#endif
#ifndef   GUICC_565
  #error Color conversion not defined!
#endif
#ifndef   GUIDRV_FLEXCOLOR
  #error No display driver defined!
#endif



//配置程序,用于创建显示驱动器件,设置颜 {MOD}转换程序和显示尺寸
void LCD_X_Config(void) {
        GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0); //创建显示驱动器件
        LCD_SetSizeEx    (0, lcddev.width, lcddev.height);
        LCD_SetVSizeEx   (0, lcddev.width, lcddev.height);
        if(lcddev.id == 0X5510) //0X5510为4.3寸 800x480的屏
        {
                if(lcddev.dir == 0) //竖屏  // 2001:3520 6352
                        {                                            // 9147:3832 6288
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,480,0,479);
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,800,0,799);
                }else //横屏
                {
                        //GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,480,0,479);                
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,800,0,799);
                }
        }else if(lcddev.id == 0X1963)//1963为7寸屏 800*480
        {
                if(lcddev.dir == 0) //竖屏
                {                                        // 6368 3816
                        //GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,800,0,799);                
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,0,479);
                }else //横屏
                {
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,800,0,799);                
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,0,479);
                }
        }else if(lcddev.id == 0X5310 || lcddev.id == 0X6804 || lcddev.id == 0X9481) //0X5510 0X6804为3.5寸 320x480
        {
    if(lcddev.dir == 0) //竖屏        
                {                                                       
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,TOUCH_AD_LEFT,TOUCH_AD_RIGHT);
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,TOUCH_AD_TOP,TOUCH_AD_BOTTOM);
                }else //横屏
                {
                        GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,480,TOUCH_AD_LEFT,TOUCH_AD_RIGHT);
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,320,TOUCH_AD_TOP,TOUCH_AD_BOTTOM);        
                }
        }
        else             //其他屏幕全部默认为2.8寸 320X240
        {
                if(lcddev.dir == 0) //竖屏
                {                                       
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,lcddev.width,155,3903);
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,lcddev.height,188,3935);
                }else //横屏
                {
                        GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y);
                        GUI_TOUCH_Calibrate(GUI_COORD_X,0,240,155,3903);        
                        GUI_TOUCH_Calibrate(GUI_COORD_Y,0,320,188,3935);
                }
        }
}

//显示器驱动的回调函数
int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
  int r;
  (void) LayerIndex;
  (void) pData;

  switch (Cmd) {
  case LCD_X_INITCONTROLLER: {
        //当初始化的时候被调用,主要是设置显示控制器,如果显示控制器在外部初始化则需要用户初始化
               
        //        TFTLCD_Init(); //初始化LCD 已经在开始初始化了,所以此处不需要初始化。
    return 0;
  }
                default:
    r = -1;
        }
  return r;
}


孤心寒
2楼-- · 2019-10-18 01:57
1201yuge 发表于 2016-1-6 18:10
我的液晶型号是:9841

看着都没错,那估计是横竖屏切换的时候命令的问题了
1201yuge
3楼-- · 2019-10-18 02:04
孤心寒 发表于 2016-1-7 16:56
看着都没错,那估计是横竖屏切换的时候命令的问题了

具体一点,是指那8种扫描方式吗?还是指哪里呢?
孤心寒
4楼-- · 2019-10-18 03:33
1201yuge 发表于 2016-1-7 18:04
具体一点,是指那8种扫描方式吗?还是指哪里呢?

估计是吧,你在仔细看看吧
1201yuge
5楼-- · 2019-10-18 07:28
 精彩回答 2  元偷偷看……
倩宝宝咿呀咿呀呦
6楼-- · 2019-10-18 09:29
我遇到和你一样的问题,屏的型号不一样,加入demo就不正常,不加就正常,现在你的问题解决了没?

一周热门 更多>