void TFT_WR_CMD(u8 dbw,u8 index,u16 val)
{
TFT_WR_REG(index);
if(dbw)
{
TFT_WR_DATA(val>>8);
}
TFT_WR_DATA(val&0xff);
}
这里有一个参数,DBW,值为0或者1,判断数据是右移8位或者左边补8个11111111吧\
然后,后面有这样的写寄存器操作
TFT_WR_CMD(0,0x72,0xA3);
TFT_WR_CMD(0,0x73,0x04);
TFT_WR_CMD(0,0x75,0x45);
TFT_WR_CMD(0,0x76,0x23);
TFT_WR_CMD(0,0x77,0x08);
TFT_WR_CMD(0,0x78,0x08);
TFT_WR_CMD(0,0x79,0x00);
TFT_WR_CMD(0,0x7F,0xF0);
TFT_WR_CMD(0,0x71,0x81);
delay_ms(2);
TFT_WR_CMD(0,0x0D,0x23);
TFT_WR_CMD(0,0x11,0x00);
TFT_WR_CMD(0,0x12,0x00);
TFT_WR_CMD(0,0x21,0x37);
TFT_WR_CMD(0,0x22,0x02);
TFT_WR_CMD(0,0x23,0x24);
TFT_WR_CMD(0,0x24,0x13);
TFT_WR_CMD(0,0x25,0x0A);
TFT_WR_CMD(0,0x26,0x82);
TFT_WR_CMD(0,0x27,0x01);
TFT_WR_CMD(0,0x1E,0x25);
TFT_WR_CMD(0,0x1F,0x59);//有影响
//GAMMA设置
TFT_WR_CMD(1,0x30,0x0777);
TFT_WR_CMD(1,0x31,0x0444);
TFT_WR_CMD(1,0x32,0x0555);
我不解的是,哪些该是1,哪些该是0
比如下面的不完全手册里面的初始化代码
LCD_WriteReg(0x00e7,0x0010);
LCD_WriteReg(0x0000,0x0001);//开启内部时钟
LCD_WriteReg(0x0001,0x0100);
LCD_WriteReg(0x0002,0x0700);//电源开启
//LCD_WriteReg(0x0003,(1<<3)|(1<<4) ); //65K RGB
//DRIVE TABLE(寄存器 03H)
//BIT3=AM BIT4:5=ID0:1
//AM ID0 ID1 FUNCATION
// 0 0 0 R->L D->U
// 1 0 0 D->U R->L
// 0 1 0 L->R D->U
// 1 1 0 D->U L->R
// 0 0 1 R->L U->D
// 1 0 1 U->D R->L
// 0 1 1 L->R U->D 正常就用这个.
// 1 1 1 U->D L->R
LCD_WriteReg(0x0003,(1<<12)|(3<<4)|(0<<3) );//65K
LCD_WriteReg(0x0004,0x0000);
LCD_WriteReg(0x0008,0x0207);
LCD_WriteReg(0x0009,0x0000);
LCD_WriteReg(0x000a,0x0000);//display setting
LCD_WriteReg(0x000c,0x0001);//display setting
LCD_WriteReg(0x000d,0x0000);//0f3c
LCD_WriteReg(0x000f,0x0000);
//电源配置
LCD_WriteReg(0x0010,0x0000);
LCD_WriteReg(0x0011,0x0007);
LCD_WriteReg(0x0012,0x0000);
LCD_WriteReg(0x0013,0x0000);
LCD_Delay(5);
LCD_WriteReg(0x0010,0x1590);
LCD_WriteReg(0x0011,0x0227);
LCD_Delay(5);
LCD_WriteReg(0x0012,0x009c);
LCD_Delay(5);
LCD_WriteReg(0x0013,0x1900);
LCD_WriteReg(0x0029,0x0023);
LCD_WriteReg(0x002b,0x000e);
LCD_Delay(5);
LCD_WriteReg(0x0020,0x0000);
LCD_WriteReg(0x0021,0x013f);
LCD_Delay(5);
//伽马校正
LCD_WriteReg(0x0030,0x0007);
LCD_WriteReg(0x0031,0x0707);
LCD_WriteReg(0x0032,0x0006);
LCD_WriteReg(0x0035,0x0704);
LCD_WriteReg(0x0036,0x1f04);
LCD_WriteReg(0x0037,0x0004);
LCD_WriteReg(0x0038,0x0000);
LCD_WriteReg(0x0039,0x0706);
LCD_WriteReg(0x003c,0x0701);
LCD_WriteReg(0x003d,0x000f);
LCD_Delay(5);
LCD_WriteReg(0x0050,0x0000); //水平GRAM起始位置
LCD_WriteReg(0x0051,0x00ef); //水平GRAM终止位置
LCD_WriteReg(0x0052,0x0000); //垂直GRAM起始位置
LCD_WriteReg(0x0053,0x013f); //垂直GRAM终止位置
LCD_WriteReg(0x0060,0xa700);
LCD_WriteReg(0x0061,0x0001);
LCD_WriteReg(0x006a,0x0000);
LCD_WriteReg(0x0080,0x0000);
LCD_WriteReg(0x0081,0x0000);
LCD_WriteReg(0x0082,0x0000);
LCD_WriteReg(0x0083,0x0000);
LCD_WriteReg(0x0084,0x0000);
LCD_WriteReg(0x0085,0x0000);
LCD_WriteReg(0x0090,0x0010);
LCD_WriteReg(0x0092,0x0000);
LCD_WriteReg(0x0093,0x0003);
LCD_WriteReg(0x0095,0x0110);
LCD_WriteReg(0x0097,0x0000);
LCD_WriteReg(0x0098,0x0000);
//开启显示设置
LCD_WriteReg(0x0007,0x0133);
LCD_WriteReg(0x0020,0x0000);
LCD_WriteReg(0x0021,0x013f);
要怎样才能改为8位操作模式
硬件上,我调了电阻,拉高im0了,应该进入8位模式了,
8位模式用的是D8-D15
那么D0-D7是空着还是接地??
最后一个问题
工程打开有问题,要怎样改一下,我模拟建立相关目录,还是出错
|