//配置检查
#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
我的液晶型号是: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;
}
看着都没错,那估计是横竖屏切换的时候命令的问题了
具体一点,是指那8种扫描方式吗?还是指哪里呢?
估计是吧,你在仔细看看吧
一周热门 更多>