//************************************************************************* // init SainSmart 3.2 LCD //************************************************************************* void init_LCD(void) { // set LCD Reset and CS SET_RESET; _delay_ms(10); CLR_RESET; _delay_ms(30); SET_RESET; _delay_ms(30); CLR_CS; // write command and data write_com_data(0x00, 0x0001); // OSCEN _delay_us(1); write_com_data(0x03, 0xA8A4); // Powercontrol _delay_us(1); write_com_data(0x0C, 0x0000); // Powercontrol 2 // 5,1V _delay_us(1); write_com_data(0x0D, 0x080C); // Powercontrol 3 // Vref 2.0 * 2.5 _delay_us(1); write_com_data(0x0E, 0x2B00); // Powercontrol 4 _delay_us(1); write_com_data(0x1E, 0x00B7); // Powercontrol 5 _delay_us(1); write_com_data(0x01, 0x2B3F); // 240x320 format Porträt //write_com_data(0x01, 0x293F); // 320x240 format Landscape _delay_us(1); write_com_data(0x02, 0x0600); // LCD Driving Waveform Control _delay_us(1); write_com_data(0x10, 0x0000); // Sleepmode _delay_us(1); write_com_data(0x11, 0x6070); // 240x320 format Porträt //write_com_data(0x11, 0x6078); // 320x240 format Landscape //write_com_data(0x11, 0x6838); // 320x240 format Landscape _delay_us(1); write_com_data(0x05, 0x0000); // Compare register _delay_us(1); write_com_data(0x06, 0x0000); // Compare register _delay_us(1); write_com_data(0x16, 0xEF1C); // Horizontal Porch _delay_us(1); write_com_data(0x17, 0x0003); // Vertical Porch _delay_us(1); write_com_data(0x07, 0x0233); // Display Control (first display) _delay_us(1); write_com_data(0x0B, 0x0000); // Frame Cycle Control _delay_us(1); write_com_data(0x0F, 0x0000); // Gate Scan Position _delay_us(1); write_com_data(0x41, 0x0000); _delay_us(1); write_com_data(0x42, 0x0000); _delay_us(1); write_com_data(0x48, 0x0000); _delay_us(1); write_com_data(0x49, 0x013F); _delay_us(1); write_com_data(0x4A, 0x0000); _delay_us(1); write_com_data(0x4B, 0x0000); _delay_us(1); write_com_data(0x44, 0xEF00); _delay_us(1); write_com_data(0x45, 0x0000); _delay_us(1); write_com_data(0x46, 0x013F); _delay_us(1); write_com_data(0x30, 0x0707); _delay_us(1); write_com_data(0x31, 0x0204); _delay_us(1); write_com_data(0x32, 0x0204); _delay_us(1); write_com_data(0x33, 0x0502); _delay_us(1); write_com_data(0x34, 0x0507); _delay_us(1); write_com_data(0x35, 0x0204); _delay_us(1); write_com_data(0x36, 0x0204); _delay_us(1); write_com_data(0x37, 0x0502); _delay_us(1); write_com_data(0x3A, 0x0302); _delay_us(1); write_com_data(0x3B, 0x0302); _delay_us(1); write_com_data(0x23, 0x0000); _delay_us(1); write_com_data(0x24, 0x0000); _delay_us(1); write_com_data(0x25, 0x8000); _delay_us(1); write_com_data(0x4F, 0x0000); // set GDDRAM Y address _delay_us(1); write_com_data(0x4E, 0x0000); // set GDDRAM X address _delay_us(1); write_com(0x22); _delay_us(1); } //************************************************************************* // write command and data for SainSmart 3.2 LCD //************************************************************************* void write_com_data(uint8_t address, uint16_t num) { //send_command(address); LCD_CLR_RS; // send 8Bit com data to LCD-Port //VPORT0.OUT = 0x00; //SET_LE; //CLR_LE; VPORT0.OUT = address; // set LCD WR Signal //CLR_CS; CLR_WR; nop(); SET_WR; nop(); //SET_CS; // Set lcd RS LCD_SET_RS; // send 16Bit Data to LCD-Port VPORT0.OUT = num >> 8; SET_LE; CLR_LE; VPORT0.OUT = num; // set LCD WR Signal //CLR_CS; CLR_WR; nop(); SET_WR; //SET_CS; }