void ili9320_vline(int ys, int ye, int x, int c) { switch(lcd_id) { case 0x9320: write_reg(0x03,(0<<5)|(0<<4)|(1<<3)|(1<<12)); write_reg(0x0020, x); write_reg(0x0021, ys); WMLCDCOM(0x0022); while(ys < ye) { WMLCDDATA(c); ys++; } // write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12)); break; case 0x8989: write_reg(0x11,(0<<5)|(0<<4)|(1<<3)); write_reg(0x004e, x); write_reg(0x004f, ys); WMLCDCOM(0x0022); while(ys < ye) { WMLCDDATA(c); ys++; } // write_reg(0x11,(1<<5)|(1<<4)|(0<<3)); break; default: break; } }
void ili9320_hline(int xs, int xe, int y, int c) { switch(lcd_id) { case 0x9320: write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12)); write_reg(0x0020, xs); write_reg(0x0021, y); WMLCDCOM(0x0022); while(xs < xe) { WMLCDDATA(c); xs++; } // write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12)); break; case 0x8989: write_reg(0x11,(1<<5)|(1<<4)|(0<<3)); write_reg(0x004e, xs); write_reg(0x004f, y); WMLCDCOM(0x0022); while(xs < xe) { WMLCDDATA(c); xs++; } write_reg(0x11,(1<<5)|(1<<4)|(0<<3)); break; default: break; } }
void ili9325_write_pixel(int x, int y, int c) { write_reg(0x0020, x); write_reg(0x0021, y); WMLCDCOM(0x0022); WMLCDDATA(c); }
void ili9320_write_gram(uint16_t *buf, int len) { WMLCDCOM(0x0022); while(len--) { WMLCDDATA(*buf++); } }
void ili9325_clear(int c) { int i; ili9325_set_window(0, 0, LCD_X_MAX, LCD_Y_MAX); WMLCDCOM(0x22); for(i = 0; i < (LCD_X_MAX * LCD_Y_MAX); i++) { WMLCDDATA(c); } }
void ili9320_write_pixel(int x, int y, int c) { switch(lcd_id) { case 0x9320: write_reg(0x0020, x); write_reg(0x0021, y); WMLCDCOM(0x0022); WMLCDDATA(c); break; case 0x8989: write_reg(0x004e,x); write_reg(0x004f,y); WMLCDCOM(0x0022); WMLCDDATA(c); break; default: break; } }
void GUI_DrawPixel(int color, int x, int y) { switch(lcd_id) { case 0x9320: write_reg(0x0020, x); write_reg(0x0021, y); WMLCDCOM(0x0022); WMLCDDATA(color); break; case 0x8989: write_reg(0x004e,x); write_reg(0x004f,y); WMLCDCOM(0x0022); WMLCDDATA(color); break; default: break; } }
void ili9320_hline(int xs, int xe, int y, int c) { write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12)); write_reg(0x0020, xs); write_reg(0x0021, y); WMLCDCOM(0x0022); while(xs < xe) { WMLCDDATA(c); xs++; } }
void ili9320_vline(int ys, int ye, int x, int c) { write_reg(0x03,(0<<5)|(0<<4)|(1<<3)|(1<<12)); write_reg(0x0020, x); write_reg(0x0021, ys); WMLCDCOM(0x0022); while(ys < ye) { WMLCDDATA(c); ys++; } write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12)); }
static void write_reg(uint16_t addr, uint16_t val) { WMLCDCOM(addr); WMLCDDATA(val); }
void LCD_SPI_Init(void) { spi_Open(); //SPI status initialize, Ray 13-09-24 WMLCDCOMD(0xB0); // Manufacturer Command Access Protect -ok WMLCDDATA(0x3F); WMLCDDATA(0x3F); //Sleep(5); LcdSleep(5); WMLCDCOMD(0xFE); //?? WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0x21); WMLCDDATA(0xB4); WMLCDCOMD(0xB3); // Frame Memory Access and Interface Setting WMLCDDATA(0x00); WMLCDDATA(0x10); WMLCDCOMD(0xE0); // NVM Access Control WMLCDDATA(0x00); // NVAE: NVM access enable register. NVM access is enabled when NVAE=1 WMLCDDATA(0x40); // FTT: NVM control bit. //Sleep(10); LcdSleep(10); WMLCDCOMD(0xB3); // Frame Memory Access and Interface Setting WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDCOMD(0xFE); // MAGIC - TODO WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0x21); WMLCDDATA(0x30); WMLCDCOMD(0xB0); // Manufacturer Command Access Protect WMLCDDATA(0x3F); WMLCDDATA(0x3F); //?? WMLCDCOMD(0xB3); // Frame Memory Access and Interface Setting -ok WMLCDDATA(0x02); WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDCOMD(0xB4); //SET interface -ok WMLCDDATA(0x10); WMLCDCOMD(0xC0); //Panel Driving Setting -ok WMLCDDATA(0x03); //GIP REV SM GS BGR SS WMLCDDATA(0x4F); WMLCDDATA(0x00); WMLCDDATA(0x10); WMLCDDATA(0xA2); //BLV=0 LINE WMLCDDATA(0x00); WMLCDDATA(0x01); WMLCDDATA(0x00); WMLCDCOMD(0xC1); //Display Timing Setting for Normal/Partial Mode WMLCDDATA(0x01); WMLCDDATA(0x02); WMLCDDATA(0x19); WMLCDDATA(0x08); WMLCDDATA(0x08); //Sleep(25); LcdSleep(25); WMLCDCOMD(0xC3); //PRTIAL MODE -ok WMLCDDATA(0x01); WMLCDDATA(0x00); WMLCDDATA(0x28); WMLCDDATA(0x08); WMLCDDATA(0x08); //Sleep(25); LcdSleep(25); WMLCDCOMD(0xC4); //-ok WMLCDDATA(0x11); WMLCDDATA(0x01); WMLCDDATA(0x43); WMLCDDATA(0x04); WMLCDCOMD(0xC8); //set gamma WMLCDDATA(0x0C); WMLCDDATA(0x0C); WMLCDDATA(0x0D); WMLCDDATA(0x14); WMLCDDATA(0x18); WMLCDDATA(0x0E); WMLCDDATA(0x09); WMLCDDATA(0x09); WMLCDDATA(0x03); WMLCDDATA(0x05); WMLCDDATA(0x00); WMLCDDATA(0x03); WMLCDDATA(0x08); WMLCDDATA(0x07); WMLCDDATA(0x0E); WMLCDDATA(0x15); WMLCDDATA(0x12); WMLCDDATA(0x0A); WMLCDDATA(0x0E); WMLCDDATA(0x0A); WMLCDDATA(0x0A); WMLCDDATA(0x00); WMLCDCOMD(0xC9); //set gamma WMLCDDATA(0x0C); WMLCDDATA(0x0C); WMLCDDATA(0x0D); WMLCDDATA(0x14); WMLCDDATA(0x18); WMLCDDATA(0x0E); WMLCDDATA(0x09); WMLCDDATA(0x09); WMLCDDATA(0x03); WMLCDDATA(0x05); WMLCDDATA(0x00); WMLCDDATA(0x03); WMLCDDATA(0x08); WMLCDDATA(0x07); WMLCDDATA(0x0E); WMLCDDATA(0x15); WMLCDDATA(0x12); WMLCDDATA(0x0A); WMLCDDATA(0x0E); WMLCDDATA(0x0A); WMLCDDATA(0x0A); WMLCDDATA(0x00); WMLCDCOMD(0xCA); //set gamma WMLCDDATA(0x0C); WMLCDDATA(0x0C); WMLCDDATA(0x0D); WMLCDDATA(0x14); WMLCDDATA(0x18); WMLCDDATA(0x0E); WMLCDDATA(0x09); WMLCDDATA(0x09); WMLCDDATA(0x03); WMLCDDATA(0x05); WMLCDDATA(0x00); WMLCDDATA(0x03); WMLCDDATA(0x08); WMLCDDATA(0x07); WMLCDDATA(0x0E); WMLCDDATA(0x15); WMLCDDATA(0x12); WMLCDDATA(0x0A); WMLCDDATA(0x0E); WMLCDDATA(0x0A); WMLCDDATA(0x0A); WMLCDDATA(0x00); // -ok WMLCDCOMD(0xD0); //Power Setting -ok WMLCDDATA(0x63); //BT[2:0]=110 VCI+VCI2¡Á2 :5 -(VCI2¡Á2): //?? WMLCDDATA(0x53); WMLCDDATA(0x82); //VC2[2:0]=010,VCI2=5V WMLCDDATA(0x3F); //VREG=5.0V //?? WMLCDCOMD(0xD1); //set vcom //-ok WMLCDDATA(0x6A); //VCOMH WMLCDDATA(0x64); //VDV WMLCDCOMD(0xD2); //Power Setting (Note 1) for Normal/Partial Mode WMLCDDATA(0x03); WMLCDDATA(0x24); WMLCDCOMD(0xD4); //Power Setting (Note 1) for Idle Mode WMLCDDATA(0x03); WMLCDDATA(0x24); WMLCDCOMD(0xE2); //NVM Load Control WMLCDDATA(0x3F); WMLCDCOMD(0x35); //set_tear_on WMLCDDATA(0x00); WMLCDCOMD(0x36); WMLCDDATA(0x00); WMLCDCOMD(0x3A); //set_pixel_format WMLCDDATA(0x66); // 66 18-bits WMLCDCOMD(0x2A); //set_column_address WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0xEF); WMLCDCOMD(0x2B); //set_page_address: WMLCDDATA(0x00); WMLCDDATA(0x00); WMLCDDATA(0x01); WMLCDDATA(0x3F); WMLCDCOMD(0x11); //exit_sleep_mode //Sleep(120); LcdSleep(120); WMLCDCOMD(0x29); //set_display_on //Sleep(30); LcdSleep(30); //WMLCDCOMD(0xFF); //send DDRAM set WMLCDCOMD(0x2C); //ShowLogo(); //13-09-27 //SPIClose(hSPI); }