PutGB3232(180,200,"机",Blue,Cyan);
为什么显示是酱紫的?
改I/D位也不对,因为她总是从屏幕的下面开始往上显示起呀,这要怎么改呢?
我觉得是初始化函数或坐标函数的问题吧:
用的是厂家提供的程序。初始化函数是这样的:
//===================== 初始化代码 =======================//
void ILI9325_Initial(void)
{
//////////////////////////////////////////////////////////
delayms(150); //根据不同晶振速度可以调整延时,保障稳定显示
Init_data(0x00E5, 0x8000); // 设置核心电压,这个设置是必须的
Init_data(0x0000, 0x0001); // 开启内部时钟OSC(振荡器) R0位
Init_data(0x0001, 0x0010); // 设置SS和SM位
Init_data(0x0002, 0x0700); // 电源开启(设置一行反转?)
Init_data(0x0003, 0x0030); // 设置GRAM写入方向
//BGR=0 GRAM:graphics RAM,即图像寄存器,在驱动TFT——LCD显示的芯片ILI9325中,存储要显示的图像信息。
// R3位:入口模式命令
// AM=0.行方向更新 I/D[1:0]控制显示方向
Init_data(0x0004, 0x0000); // 调整寄存器大小
Init_data(0x0008, 0x0202); // 设置后沿和前沿
Init_data(0x0009, 0x0000); // 设置不显示的区域,更新循环ISC【3:0】
Init_data(0x000A, 0x0000); // FMARK 函数(显示设置)
Init_data(0x000C, 0x0000); // RGB 界面设置(显示设置)
Init_data(0x000D, 0x0000); // 0f3c 画面标记位置
Init_data(0x000F, 0x0000); // RGB 界面极性
//*************电源配置 ****************//
Init_data(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
Init_data(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
Init_data(0x0012, 0x0000); // VREG1OUT 电压
Init_data(0x0013, 0x0000); // VDV[4:0] 为了 VCOM 振幅
delayms(200); // 排放电容器电源电压
Init_data(0x0010, 0x17B0); // SAP, BT[3:0], AP, DSTB, SLP, STB
Init_data(0x0011, 0x0037); // DC1[2:0], DC0[2:0], VC[2:0]
delayms(50); // Delay 50ms
Init_data(0x0012, 0x013E); // VREG1OUT 电压
delayms(50); // Delay 50ms
Init_data(0x0013, 0x1F00); // VDV[4:0] 为了 VCOM 振幅
Init_data(0x0029, 0x0013); // VCM[4:0] 为了 VCOMH
delayms(50);
Init_data(0x0020, 0x0000); // GRAM 水平地址
Init_data(0x0021, 0x0000); // GRAM 垂直地址
// ----------- 伽马校正 ----------//
Init_data(0x0030, 0x0000);
Init_data(0x0031, 0x0404);
Init_data(0x0032, 0x0404);
Init_data(0x0035, 0x0004);
Init_data(0x0036, 0x0404);
Init_data(0x0037, 0x0404);
Init_data(0x0038, 0x0404);
Init_data(0x0039, 0x0707);
Init_data(0x003C, 0x0500);
Init_data(0x003D, 0x0607);
//------------------ 设置 GRAM 区域 ---------------//
Init_data(0x0050, 0x0000); // 水平 GRAM 起始地址
Init_data(0x0051, 0x00EF); // 水平 GRAM 终止地址
Init_data(0x0052, 0x0000); // 垂直 GRAM 起始地址
Init_data(0x0053, 0x013F); // 垂直 GRAM 终止位置
Init_data(0x0060, 0x2700); // 门扫描线
Init_data(0x0061, 0x0001); // NDL,VLE, REV
Init_data(0x006A, 0x0000); // 设置卷动线
//-------------- 局部显示控制 ---------//
Init_data(0x0080, 0x0000);//显示位置?局部显示1
Init_data(0x0081, 0x0000);//起始RAM地址?局部显示1
Init_data(0x0082, 0x0000);//终止RAM地址?局部显示1
Init_data(0x0083, 0x0000);//显示位置?局部显示2
Init_data(0x0084, 0x0000);// 起始RAM地址?局部显示2
Init_data(0x0085, 0x0000);//终止RAM地址?局部显示2
//-------------- 面板控制 -------------------//
Init_data(0x0090, 0x0010);//画面循环控制
Init_data(0x0092, 0x0000);//面板界面控制2
Init_data(0x0093, 0x0003);//面板界面控制3
Init_data(0x0095, 0x0110);//画面循环控制
Init_data(0x0097, 0x0000);//
Init_data(0x0098, 0x0000);// 画面循环控制
Init_data(0x0007, 0x0173); // 262K 颜色 和 开启显示
// Write_Cmd_Data(0x0022);//
}
显示坐标的函数是这样子的:
其中有:#define WINDOW_XADDR_START
0x0050 // 水平GRAM起始位置
#define WINDOW_XADDR_END 0x0051 // 水平GRAM终止位置
#define WINDOW_YADDR_START 0x0052 // 垂直GRAM起始位置
#define WINDOW_YADDR_END 0x0053 // 垂直GRAM终止位置
#define GRAM_XADDR 0x0020 // GRAM 水平地址设置
#define GRAM_YADDR 0x0021 // GRAM 垂直地址设置
#define GRAMWR 0x0022 // 记忆写入
/*===========================================================*/
/*************************************************************
函数名称
CD_DefineDispWindow
功 能:定义显示窗体
参 数:x0: 窗体中X坐标中较小者
x1: 窗体中X坐标中较大者
y0: 窗体中Y坐标中较小者
y1: 窗体中Y坐标中较大者
返 回 值:无
*************************************************************/
static void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
{
Init_data(WINDOW_XADDR_START,x0);
Init_data(WINDOW_XADDR_END,x1);
Init_data(WINDOW_YADDR_START,y0);
Init_data(WINDOW_YADDR_END,y1);
Init_data(GRAM_XADDR,x0);
Init_data(GRAM_YADDR,y0);
Write_Cmd (0x00,0x22);//LCD_WriteCMD(GRAMWR);
}