OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6535|回复: 1

TFT代码移植无法显示ID

[复制链接]

27

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
329
金钱
329
注册时间
2013-5-12
在线时间
26 小时
发表于 2013-10-2 19:28:19 | 显示全部楼层 |阅读模式

屏ID为0X8989,3.2寸。基于原子的TFT程序稍作修改,修改后无法显示ID,取消FSMC后可打印ID但是始终为0.
#define  LCD_BUS    GPIOE->ODR
#define  LCD_nRST   GPIOE->BRR=GPIO_Pin_1
#define  LCD_nCS    GPIOD->BRR=GPIO_Pin_7
#define  LCD_nRS    GPIOD->BRR=GPIO_Pin_11
#define  LCD_nWR    GPIOD->BRR=GPIO_Pin_5
#define  LCD_nRD    GPIOD->BRR=GPIO_Pin_4

#define  LCD_RST    GPIOE->BSRR=GPIO_Pin_1
#define  LCD_CS     GPIOD->BSRR=GPIO_Pin_7
#define  LCD_RS     GPIOD->BSRR=GPIO_Pin_11
#define  LCD_WR     GPIOD->BSRR=GPIO_Pin_5
#define  LCD_RD     GPIOD->BSRR=GPIO_Pin_4
//LCD的画笔颜色和背景色   
u16 POINT_COLOR=0x0000; //画笔颜色
u16 BACK_COLOR=0xFFFF;  //背景色

//管理LCD重要参数
//默认为竖屏
_lcd_dev lcddev;
 
//写寄存器函数
//regval:寄存器值
void LCD_WR_REG(u16 regval)
{
 LCD->LCD_REG=regval;//写入要写的寄存器序号 
}
//写LCD数据
//data:要写入的值
void LCD_WR_DATA(u16 data)
{                 
 LCD->LCD_RAM=data;  
}
//读LCD数据
//返回值:读到的值
u16 LCD_RD_DATA(void)
{                 
 return LCD->LCD_RAM;  
}       
//写寄存器
//LCD_Reg:寄存器地址
//LCD_RegValue:要写入的数据
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)

 LCD->LCD_REG = LCD_Reg;  //写入要写的寄存器序号 
 LCD->LCD_RAM = LCD_RegValue;//写入数据       
}   
//读寄存器
//LCD_Reg:寄存器地址
//返回值:读到的数据
u16 LCD_ReadReg(u8 LCD_Reg)
{            
 LCD_WR_REG(LCD_Reg);  //写入要读的寄存器序号
 delay_us(5);   
 return LCD_RD_DATA();  //返回读到的值

//开始写GRAM
void LCD_WriteRAM_Prepare(void)
{
  LCD->LCD_REG=lcddev.wramcmd;  

//LCD写GRAM
//RGB_Code:颜色值
void LCD_WriteRAM(u16 RGB_Code)
{          
 LCD->LCD_RAM = RGB_Code;//写十六位GRAM
}
//从ILI93xx读出的数据为GBR格式,而我们写入的时候为RGB格式。
//通过该函数转换
//c:GBR格式的颜色值
//返回值:RGB格式的颜色值
u16 LCD_BGR2RGB(u16 c)
{
 u16  r,g,b,rgb;  
 b=(c>>0)&0x1f;
 g=(c>>5)&0x3f;
 r=(c>>11)&0x1f; 
 rgb=(b<<11)+(g<<5)+(r<<0);  
 return(rgb);
}
//当mdk -O1时间优化时需要设置
//延时i
void opt_delay(u8 i)
{
 while(i--);
}
//读取个某点的颜色值 
//x,y:坐标
//返回值:此点的颜色
u16 LCD_ReadPoint(u16 x,u16 y)
{
  u16 r=0,g=0,b=0;
 if(x>=lcddev.width||y>=lcddev.height)return 0; //超过了范围,直接返回    
 LCD_SetCursor(x,y);    
 if(lcddev.id==0X9341||lcddev.id==0X6804)LCD_WR_REG(0X2E);//9341/6804 发送读GRAM指令
 else LCD_WR_REG(R34);             //其他IC发送读GRAM指令
  if(lcddev.id==0X9320)opt_delay(2);    //FOR 9320,延时2us    
 if(LCD->LCD_RAM)r=0;       //dummy Read   
 opt_delay(2);  
  r=LCD->LCD_RAM;            //实际坐标颜色
  if(lcddev.id==0X9341)//9341要分2次读出
  {
  opt_delay(2);  
  b=LCD->LCD_RAM;
  g=r&0XFF;//对于9341,第一次读取的是RG的值,R在前,G在后,各占8位
  g<<=8;
 }else if(lcddev.id==0X6804)r=LCD->LCD_RAM;  //6804第二次读取的才是真实值
 if(lcddev.id==0X9325||lcddev.id==0X4535||lcddev.id==0X4531||lcddev.id==0X8989||lcddev.id==0XB505)return r;//这几种IC直接返回颜色值
 else if(lcddev.id==0X9341)return (((r>>11)<<11)|((g>>10)<<5)|(b>>11)); //ILI9341需要公式转换一下
 else return LCD_BGR2RGB(r);            //其他IC
}   
//LCD开启显示
void LCD_DisplayOn(void)
{       
 if(lcddev.id==0X9341||lcddev.id==0X6804)LCD_WR_REG(0X29); //开启显示
 else LCD_WriteReg(R7,0x0173);         //开启显示

//LCD关闭显示
void LCD_DisplayOff(void)
{   
 if(lcddev.id==0X9341||lcddev.id==0X6804)LCD_WR_REG(0X28); //关闭显示
 else LCD_WriteReg(R7,0x0);//关闭显示
}  
//设置光标位置
//Xpos:横坐标
//Ypos:纵坐标
void LCD_SetCursor(u16 Xpos, u16 Ypos)

  if(lcddev.id==0X9341)
 {     
  LCD_WR_REG(lcddev.setxcmd);
  LCD_WR_DATA(Xpos>>8);
  LCD_WR_DATA(Xpos&0XFF); 
  LCD_WR_REG(lcddev.setycmd);
  LCD_WR_DATA(Ypos>>8);
  LCD_WR_DATA(Ypos&0XFF);
 }else if(lcddev.id==0X6804)
 {
  if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏时处理
  LCD_WR_REG(lcddev.setxcmd);
  LCD_WR_DATA(Xpos>>8);
  LCD_WR_DATA(Xpos&0XFF); 
  LCD_WR_REG(lcddev.setycmd);
  LCD_WR_DATA(Ypos>>8);
  LCD_WR_DATA(Ypos&0XFF);
 }else
 {
  if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏其实就是调转x,y坐标
  LCD_WriteReg(lcddev.setxcmd, Xpos);
  LCD_WriteReg(lcddev.setycmd, Ypos);
 } 
}   
//设置LCD的自动扫描方向
//注意:其他函数可能会受到此函数设置的影响(尤其是9341/6804这两个奇葩),
//所以,一般设置为L2R_U2D即可,如果设置为其他扫描方式,可能导致显示不正常.
//dir:0~7,代表8个方向(具体定义见lcd.h)
//9320/9325/9328/4531/4535/1505/b505/8989/5408/9341等IC已经实际测试       
void LCD_Scan_Dir(u8 dir)
{
 u16 regval=0;
 u8 dirreg=0;
 u16 temp; 
 if(lcddev.dir==1&&lcddev.id!=0X6804)//横屏时,对6804不改变扫描方向!
 {     
  switch(dir)//方向转换
  {
   case 0:dir=6;break;
   case 1:dir=7;break;
   case 2:dir=4;break;
   case 3:dir=5;break;
   case 4:dir=1;break;
   case 5:dir=0;break;
   case 6:dir=3;break;
   case 7:dir=2;break;     
  }
 }
 if(lcddev.id==0x9341||lcddev.id==0X6804)//9341/6804,很特殊
 {
  switch(dir)
  {
   case L2R_U2D://从左到右,从上到下
    regval|=(0<<7)|(0<<6)|(0<<5);
    break;
   case L2R_D2U://从左到右,从下到上
    regval|=(1<<7)|(0<<6)|(0<<5);
    break;
   case R2L_U2D://从右到左,从上到下
    regval|=(0<<7)|(1<<6)|(0<<5);
    break;
   case R2L_D2U://从右到左,从下到上
    regval|=(1<<7)|(1<<6)|(0<<5);
    break; 
   case U2D_L2R://从上到下,从左到右
    regval|=(0<<7)|(0<<6)|(1<<5);
    break;
   case U2D_R2L://从上到下,从右到左
    regval|=(0<<7)|(1<<6)|(1<<5);
    break;
   case D2U_L2R://从下到上,从左到右
    regval|=(1<<7)|(0<<6)|(1<<5);
    break;
   case D2U_R2L://从下到上,从右到左
    regval|=(1<<7)|(1<<6)|(1<<5);
    break; 
  }
  dirreg=0X36;
   regval|=0X08;//BGR  
  if(lcddev.id==0X6804)regval|=0x02;//6804的BIT6和9341的反了   
  LCD_WriteReg(dirreg,regval);
   if((regval&0X20)||lcddev.dir==1)
  {
   if(lcddev.width<lcddev.height)//交换X,Y
   {
    temp=lcddev.width;
    lcddev.width=lcddev.height;
    lcddev.height=temp;
    }
  }else 
  {
   if(lcddev.width>lcddev.height)//交换X,Y
   {
    temp=lcddev.width;
    lcddev.width=lcddev.height;
    lcddev.height=temp;
    }
  } 
  LCD_WR_REG(lcddev.setxcmd);
  LCD_WR_DATA(0);LCD_WR_DATA(0);
  LCD_WR_DATA((lcddev.width-1)>>8);LCD_WR_DATA((lcddev.width-1)&0XFF);
  LCD_WR_REG(lcddev.setycmd);
  LCD_WR_DATA(0);LCD_WR_DATA(0);
  LCD_WR_DATA((lcddev.height-1)>>8);LCD_WR_DATA((lcddev.height-1)&0XFF); 
   }else
 {
  switch(dir)
  {
   case L2R_U2D://从左到右,从上到下
    regval|=(1<<5)|(1<<4)|(0<<3);
    break;
   case L2R_D2U://从左到右,从下到上
    regval|=(0<<5)|(1<<4)|(0<<3);
    break;
   case R2L_U2D://从右到左,从上到下
    regval|=(1<<5)|(0<<4)|(0<<3);
    break;
   case R2L_D2U://从右到左,从下到上
    regval|=(0<<5)|(0<<4)|(0<<3);
    break; 
   case U2D_L2R://从上到下,从左到右
    regval|=(1<<5)|(1<<4)|(1<<3);
    break;
   case U2D_R2L://从上到下,从右到左
    regval|=(1<<5)|(0<<4)|(1<<3);
    break;
   case D2U_L2R://从下到上,从左到右
    regval|=(0<<5)|(1<<4)|(1<<3);
    break;
   case D2U_R2L://从下到上,从右到左
    regval|=(0<<5)|(0<<4)|(1<<3);
    break; 
  }
  if(lcddev.id==0x8989)//8989 IC
  {
   dirreg=0X11;
   regval|=0X6040; //65K  
   }else//其他驱动IC   
  {
   dirreg=0X03;
   regval|=1<<12; 
  }
  LCD_WriteReg(dirreg,regval);
 }
}  
//画点
//x,y:坐标
//POINT_COLOR:此点的颜色
void LCD_DrawPoint(u16 x,u16 y)
{
 LCD_SetCursor(x,y);  //设置光标位置
 LCD_WriteRAM_Prepare(); //开始写入GRAM
 LCD->LCD_RAM=POINT_COLOR;
}
//快速画点
//x,y:坐标
//color:颜色
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)
{   
 if(lcddev.id==0X9341)
 {
  LCD_WR_REG(lcddev.setxcmd);
  LCD_WR_DATA(x>>8);
  LCD_WR_DATA(x&0XFF); 
  LCD_WR_REG(lcddev.setycmd);
  LCD_WR_DATA(y>>8);
  LCD_WR_DATA(y&0XFF);
 }else if(lcddev.id==0X6804)
 {     
  if(lcddev.dir==1)x=lcddev.width-1-x;//横屏时处理
  LCD_WR_REG(lcddev.setxcmd);
  LCD_WR_DATA(x>>8);
  LCD_WR_DATA(x&0XFF); 
  LCD_WR_REG(lcddev.setycmd);
  LCD_WR_DATA(y>>8);
  LCD_WR_DATA(y&0XFF);
 }else
 {
   if(lcddev.dir==1)x=lcddev.width-1-x;//横屏其实就是调转x,y坐标
  LCD_WriteReg(lcddev.setxcmd,x);
  LCD_WriteReg(lcddev.setycmd,y);
 }   
 LCD->LCD_REG=lcddev.wramcmd;
 LCD->LCD_RAM=color;


//设置LCD显示方向
//dir:0,竖屏;1,横屏
void LCD_Display_Dir(u8 dir)
{
 if(dir==0)   //竖屏
 {
  lcddev.dir=0; //竖屏
  lcddev.width=240;
  lcddev.height=320;
  if(lcddev.id==0X9341||lcddev.id==0X6804)
  {
   lcddev.wramcmd=0X2C;
    lcddev.setxcmd=0X2A;
   lcddev.setycmd=0X2B;   
   if(lcddev.id==0X6804)
   {
    lcddev.width=320;
    lcddev.height=480;
   }
  }else if(lcddev.id==0X8989)
  {
   lcddev.wramcmd=R34;
    lcddev.setxcmd=0X4E;
   lcddev.setycmd=0X4F;
  }else
  {
   lcddev.wramcmd=R34;
    lcddev.setxcmd=R32;
   lcddev.setycmd=R33; 
  }
 }else     //横屏
 {       
  lcddev.dir=1; //横屏
  lcddev.width=320;
  lcddev.height=240;
  if(lcddev.id==0X9341)
  {
   lcddev.wramcmd=0X2C;
    lcddev.setxcmd=0X2A;
   lcddev.setycmd=0X2B;   
  }else if(lcddev.id==0X6804) 
  {
    lcddev.wramcmd=0X2C;
    lcddev.setxcmd=0X2B;
   lcddev.setycmd=0X2A;   
   lcddev.width=480;
   lcddev.height=320;
  }else if(lcddev.id==0X8989)
  {
   lcddev.wramcmd=R34;
    lcddev.setxcmd=0X4F;
   lcddev.setycmd=0X4E;  
  }else
  {
   lcddev.wramcmd=R34;
    lcddev.setxcmd=R33;
   lcddev.setycmd=R32; 
  }
 }
 LCD_Scan_Dir(DFT_SCAN_DIR); //默认扫描方向

//初始化LCD
void LCD_Init(u8 dir)
{            

  GPIO_InitTypeDef GPIO_InitStructure;
  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  readWriteTiming;
  FSMC_NORSRAMTimingInitTypeDef  writeTiming;
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
                         RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);
      
/*===========GPIO For the LCD_Bus========================*/ 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
          GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |
          GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
/*===========GPIO For the LCD_RESET=======================*/
/** 
 * E1 -> LCD_RESET
 */ 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);

/*===========GPIO For the Control========================*/
/** 
 * D13 -> Light
 * D4 -> OE , D5 -> WE
 * D7 -> CS , D11 -> RS
 */ 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
  GPIO_Init(GPIOD, &GPIO_InitStructure);

 

  //GPIO_ResetBits(GPIOD, GPIO_Pin_13);
/*===========GPIO For the LED ========================*/
/**
 *  LED2 -> PE2 , LED3 -> PE0
 */  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
 
  GPIO_ResetBits(GPIOE, GPIO_Pin_1);
  delay_ms(75);       
  GPIO_SetBits(GPIOE, GPIO_Pin_1 );    
  delay_ms(75);


//////////////////////////////////////////////////////////////////////////////
    readWriteTiming.FSMC_AddressSetupTime = 0x01;  //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns
    readWriteTiming.FSMC_AddressHoldTime = 0x00;  //地址保持时间(ADDHLD)模式A未用到 
    readWriteTiming.FSMC_DataSetupTime = 0x0f;   // 数据保存时间为16个HCLK,因为液晶驱动IC的读数据的时候,速度不能太快,尤其对1289这个IC。
    readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
    readWriteTiming.FSMC_CLKDivision = 0x00;
    readWriteTiming.FSMC_DataLatency = 0x00;
    readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_B;  //模式B 
  

 writeTiming.FSMC_AddressSetupTime = 0x02;  //地址建立时间(ADDSET)为1个HCLK 
    writeTiming.FSMC_AddressHoldTime = 0x00;  //地址保持时间(A  
    writeTiming.FSMC_DataSetupTime = 0x05;   ////数据保存时间为4个HCLK 
    writeTiming.FSMC_BusTurnAroundDuration = 0x00;
    writeTiming.FSMC_CLKDivision = 0x00;
    writeTiming.FSMC_DataLatency = 0x00;
    writeTiming.FSMC_AccessMode = FSMC_AccessMode_B;  //模式B

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming;  

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); 

  delay_ms(50); // delay 50 ms
  LCD_WriteReg(0x0000,0x0001);
 delay_ms(50); // delay 50 ms
   lcddev.id =LCD_ReadReg(0x0000);  
 if(lcddev.id<0XFF||lcddev.id==0XFFFF||lcddev.id==0X9328)//读到ID不正确,新增lcddev.id==0X9300判断,因为9341在未被复位的情况下会被读成9300
 { 
   //尝试9341 ID的读取  
  LCD_WR_REG(0XD3);      
  LCD_RD_DATA();     //dummy read  
   LCD_RD_DATA();         //读到0X00
    lcddev.id=LCD_RD_DATA();    //读取93          
   lcddev.id<<=8;
  lcddev.id|=LCD_RD_DATA();   //读取41          
   if(lcddev.id!=0X9341)  //非9341,尝试是不是6804
  { 
    LCD_WR_REG(0XBF);      
   LCD_RD_DATA();    //dummy read  
    LCD_RD_DATA();        //读回0X01     
    LCD_RD_DATA();    //读回0XD0       
     lcddev.id=LCD_RD_DATA();//这里读回0X68
   lcddev.id<<=8;
     lcddev.id|=LCD_RD_DATA();//这里读回0X04      
   }
  if(lcddev.id!=0X9341&&lcddev.id!=0X6804)lcddev.id=0x9341;//新增,用于识别9341      
 }
  printf(" LCD ID:%x\r\n",lcddev.id); //打印LCD ID 






else if(lcddev.id==0x8989)
 {   
  LCD_WriteReg(0x0000,0x0001);//打开晶振
     LCD_WriteReg(0x0003,0xA8A4);//0xA8A4
     LCD_WriteReg(0x000C,0x0000);   
     LCD_WriteReg(0x000D,0x080C);  
     LCD_WriteReg(0x000E,0x2B00);   
     LCD_WriteReg(0x001E,0x00B0);   
     LCD_WriteReg(0x0001,0x2B3F);//驱动输出控制320*240  0x6B3F
     LCD_WriteReg(0x0002,0x0600);
     LCD_WriteReg(0x0010,0x0000); 
     LCD_WriteReg(0x0011,0x6070); //定义数据格式  16位色   横屏 0x6058
     LCD_WriteReg(0x0005,0x0000); 
     LCD_WriteReg(0x0006,0x0000); 
     LCD_WriteReg(0x0016,0xEF1C); 
     LCD_WriteReg(0x0017,0x0003); 
     LCD_WriteReg(0x0007,0x0233); //0x0233      
     LCD_WriteReg(0x000B,0x0000); 
     LCD_WriteReg(0x000F,0x0000); //扫描开始地址
     LCD_WriteReg(0x0041,0x0000); 
     LCD_WriteReg(0x0042,0x0000); 
     LCD_WriteReg(0x0048,0x0000); 
     LCD_WriteReg(0x0049,0x013F); 
     LCD_WriteReg(0x004A,0x0000); 
     LCD_WriteReg(0x004B,0x0000); 
     LCD_WriteReg(0x0044,0xEF00); 
     LCD_WriteReg(0x0045,0x0000); 
     LCD_WriteReg(0x0046,0x013F); 
     LCD_WriteReg(0x0030,0x0707); 
     LCD_WriteReg(0x0031,0x0204); 
     LCD_WriteReg(0x0032,0x0204); 
     LCD_WriteReg(0x0033,0x0502); 
     LCD_WriteReg(0x0034,0x0507); 
     LCD_WriteReg(0x0035,0x0204); 
     LCD_WriteReg(0x0036,0x0204); 
     LCD_WriteReg(0x0037,0x0502); 
     LCD_WriteReg(0x003A,0x0302); 
     LCD_WriteReg(0x003B,0x0302); 
     LCD_WriteReg(0x0023,0x0000); 
     LCD_WriteReg(0x0024,0x0000); 
     LCD_WriteReg(0x0025,0x8000); 
     LCD_WriteReg(0x004f,0);        //行首址0
     LCD_WriteReg(0x004e,0);        //列首址0
 }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
329
金钱
329
注册时间
2013-5-12
在线时间
26 小时
 楼主| 发表于 2013-10-2 19:31:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 03:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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