LCD-读液晶型号

    技术2022-05-13  8

    液晶有型号,不同型号的液晶引脚排不同,控制寄存器指令也不同。可以通过发送0x0000指令,读取返回值,来查看。再根据不同的型号配置不同的LCD_WR_REG();

    void LCD_WR_REG(u16 Index,u16 CongfigTemp){ Clr_Cs; Clr_Rs; Set_nRd; GPIO_Write(GPIOE, Index); Clr_nWr; Set_nWr; Set_Rs;        GPIO_Write(GPIOE,CongfigTemp);        Clr_nWr; Set_nWr; Set_Cs;}unsigned short rd_reg (unsigned short reg)

    {

       Clr_Cs; wr_cmd(reg);      reg = rd_dat();        Set_Cs; return reg;}__inline void wr_cmd (unsigned char c) {

     Clr_Rs; Set_nRd; GPIOE->ODR = c; Clr_nWr; Set_nWr;}__inline unsigned short rd_dat (void) {  unsigned short val = 0;

     Set_Rs;  // SPFD之类的芯片在读取ID时RS=0,这一点和ILI之类的RS=1不同。 Set_nWr;  Clr_nRd;    GPIOE->CRH = 0x44444444; GPIOE->CRL = 0x44444444; val = GPIOE->IDR; val = GPIOE->IDR; GPIOE->CRH = 0x33333333; GPIOE->CRL = 0x33333333; Set_nRd; return val;}

    void Lcd_WR_Start(void){ Clr_Cs; Clr_Rs; Set_nRd; GPIO_Write(GPIOE,0x0022); //DataToWrite(0x0022);//GPIOE脚接液晶16个DB数据脚,所以写液晶数据直接写GPIOE。 Clr_nWr; Set_nWr; Set_Rs;}

     

     

    void Lcd_Initialize(void){... ...DriverCode = rd_reg(0x00); if(DeviceCode==0x9325||DeviceCode==0x9328){  LCD_WR_REG(0x00e7,0x0010);        LCD_WR_REG(0x0000,0x0001);   ... .... }   else if(DeviceCode==0x9320||DeviceCode==0x9300){  LCD_WR_REG(0x00,0x0000); LCD_WR_REG(0x01,0x0100);  ... ... }else if(DeviceCode==0x9331){   LCD_WR_REG(0x00E7, 0x1014);  LCD_WR_REG(0x0001, 0x0100);  ... ...}else if(DeviceCode==0x9919){ LCD_WR_REG(0x28,0x0006); LCD_WR_REG(0x00,0x0001); ... ...}else if(DeviceCode==0x1505){ LCD_WR_REG(0x0007,0x0000); ili9320_Delay(5); LCD_WR_REG(0x0012,0x011C); ... ...}else if(DeviceCode==0x8989){ LCD_WR_REG(0x0000,0x0001);    ili9320_Delay(50000);   LCD_WR_REG(0x0003,0xA8A4);    ili9320_Delay(50000);......}

    .....

    }//种类繁多,而且液晶上都不会标出,通过软件查询硬件信息,但是及时同一个型号,在火牛光盘里不同的例程里LCD_WR_REG()也不

    相同,因为不了解这些寄存器,所以看不懂,有待学习。

     

     


    最新回复(0)