void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2) { LCD_WR_REG(0x2a); LCD_WR_DATA8(x1>>8); LCD_WR_DATA8(x1); LCD_WR_DATA8(x2>>8); LCD_WR_DATA8(x2); LCD_WR_REG(0x2b); LCD_WR_DATA8(y1>>8); LCD_WR_DATA8(y1); LCD_WR_DATA8(y2>>8); LCD_WR_DATA8(y2); LCD_WR_REG(0x2C); }
//设置光标位置 //Xpos:横坐标 //Ypos:纵坐标 void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos) { uint8_t temp; LCD_WR_REG(lcddev.setxcmd); LCD_WR_DATA8(Xpos>>8); LCD_WR_DATA8(Xpos&0XFF); Xpos = 159; LCD_WR_DATA8(Xpos>>8); LCD_WR_DATA8(Xpos&0XFF); LCD_WR_REG(lcddev.setycmd); LCD_WR_DATA8(Ypos>>8); LCD_WR_DATA8(Ypos&0XFF); Ypos = 127; LCD_WR_DATA8(Ypos>>8); LCD_WR_DATA8(Ypos&0XFF); }
//清屏函数 //Color:要清屏的填充色 void LCD_Clear(u16 Color) { u8 VH,VL; u16 i,j; VH=Color>>8; VL=Color; Address_set(0,0,LCD_W-1,LCD_H-1); for(i=0; i<LCD_W; i++) { for (j=0; j<LCD_H; j++) { LCD_WR_DATA8(VH); LCD_WR_DATA8(VL); } } }
void LCD_Clear(uint Color) { uchar VH,VL; uint i,j; VH=Color>>8; VL=Color; LCD_Address_set(0,0,LCD_W-1,LCD_H-1); for(i=0;i<LCD_W;i++) { for (j=0;j<LCD_H;j++) { LCD_WR_DATA8(VH,VL); } } }
//初始化lcd void LCD_Init(void) { // Power on sequence first, HW/SW reset LCD_REST=0; delay_ms(50); // delay 20 ms LCD_REST=1; delay_ms(50); // delay 20 ms SPILCD_RST_RESET ; //LCD_RST=0 //SPI接口复位 delay_ms(20); // delay 20 ms SPILCD_RST_SET ; //LCD_RST=1 delay_ms(20); lcddev.width=128; lcddev.height=160; lcddev.wramcmd=0X2C; lcddev.setxcmd=0X2A; lcddev.setycmd=0X2B; //Sleep out LCD_WR_REG(0x11); delay_ms(120); //Delay 120ms //------------------------------------ST7735S Frame Rate-----------------------------------------// LCD_WR_REG(0xB1); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3C); LCD_WR_DATA8(0x3C); LCD_WR_REG(0xB2); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3C); LCD_WR_DATA8(0x3C); LCD_WR_REG(0xB3); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3C); LCD_WR_DATA8(0x3C); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x3C); LCD_WR_DATA8(0x3C); //------------------------------------End ST7735S Frame Rate-----------------------------------------// LCD_WR_REG(0xB4); //Dot inversion LCD_WR_DATA8(0x00); // 0x03 LCD_WR_REG(0xC0); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x08); LCD_WR_DATA8(0x04); LCD_WR_REG(0xC1); LCD_WR_DATA8(0XC0); LCD_WR_REG(0xC2); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x00); LCD_WR_REG(0xC3); LCD_WR_DATA8(0x8D); LCD_WR_DATA8(0x2A); LCD_WR_REG(0xC4); LCD_WR_DATA8(0x8D); LCD_WR_DATA8(0xEE); //---------------------------------End ST7735S Power Sequence-------------------------------------// LCD_WR_REG(0xC5); //VCOM LCD_WR_DATA8(0x1A); LCD_WR_REG(0x36); //MX, MY, RGB mode LCD_WR_DATA8(0x20); // invert raw/column //------------------------------------ST7735S Gamma Sequence-----------------------------------------// LCD_WR_REG(0xE0); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x22); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x0A); LCD_WR_DATA8(0x2E); LCD_WR_DATA8(0x30); LCD_WR_DATA8(0x25); LCD_WR_DATA8(0x2A); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x26); LCD_WR_DATA8(0x2E); LCD_WR_DATA8(0x3A); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x01); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0x13); LCD_WR_REG(0xE1); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x16); LCD_WR_DATA8(0x06); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x2D); LCD_WR_DATA8(0x26); LCD_WR_DATA8(0x23); LCD_WR_DATA8(0x27); LCD_WR_DATA8(0x27); LCD_WR_DATA8(0x25); LCD_WR_DATA8(0x2D); LCD_WR_DATA8(0x3B); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x01); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x13); //------------------------------------End ST7735S Gamma Sequence-----------------------------------------// LCD_WR_REG(0x3A); //65k mode LCD_WR_DATA8(0x05); LCD_WR_REG(0x29); //Display on LCD_Clear(WHITE); }
void Lcd_Init(void) { //调用一次这些函数,免得编译的时候提示警告 LCD_CS =1; if(LCD_CS==0) { LCD_WR_REG_DATA(0,0); LCD_ShowString(0,0," "); LCD_ShowNum(0,0,0,0); LCD_Show2Num(0,0,0,0); LCD_DrawPoint_big(0,0); LCD_DrawRectangle(0,0,0,0); Draw_Circle(0,0,0); } LCD_REST=0; delayms(20); LCD_REST=1; delayms(20); LCD_CS =0; //打开片选使能 LCD_WR_REG(0xCB); LCD_WR_DATA8(0x39); LCD_WR_DATA8(0x2C); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x34); LCD_WR_DATA8(0x02); LCD_WR_REG(0xCF); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0XC1); LCD_WR_DATA8(0X30); LCD_WR_REG(0xE8); LCD_WR_DATA8(0x85); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x78); LCD_WR_REG(0xEA); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x00); LCD_WR_REG(0xED); LCD_WR_DATA8(0x64); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0X12); LCD_WR_DATA8(0X81); LCD_WR_REG(0xF7); LCD_WR_DATA8(0x20); LCD_WR_REG(0xC0); //Power control LCD_WR_DATA8(0x23); //VRH[5:0] LCD_WR_REG(0xC1); //Power control LCD_WR_DATA8(0x10); //SAP[2:0];BT[3:0] LCD_WR_REG(0xC5); //VCM control LCD_WR_DATA8(0x3e); //对比度调节 LCD_WR_DATA8(0x28); LCD_WR_REG(0xC7); //VCM control2 LCD_WR_DATA8(0x86); //-- LCD_WR_REG(0x36); // Memory Access Control LCD_WR_DATA8(0x48); // //48 68竖屏//28 E8 横屏 LCD_WR_REG(0x3A); LCD_WR_DATA8(0x55); LCD_WR_REG(0xB1); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x18); LCD_WR_REG(0xB6); // Display Function Control LCD_WR_DATA8(0x08); LCD_WR_DATA8(0x82); LCD_WR_DATA8(0x27); LCD_WR_REG(0xF2); // 3Gamma Function Disable LCD_WR_DATA8(0x00); LCD_WR_REG(0x26); //Gamma curve selected LCD_WR_DATA8(0x01); LCD_WR_REG(0xE0); //Set Gamma LCD_WR_DATA8(0x0F); LCD_WR_DATA8(0x31); LCD_WR_DATA8(0x2B); LCD_WR_DATA8(0x0C); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x08); LCD_WR_DATA8(0x4E); LCD_WR_DATA8(0xF1); LCD_WR_DATA8(0x37); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x10); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x09); LCD_WR_DATA8(0x00); LCD_WR_REG(0XE1); //Set Gamma LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x0E); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x03); LCD_WR_DATA8(0x11); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x31); LCD_WR_DATA8(0xC1); LCD_WR_DATA8(0x48); LCD_WR_DATA8(0x08); LCD_WR_DATA8(0x0F); LCD_WR_DATA8(0x0C); LCD_WR_DATA8(0x31); LCD_WR_DATA8(0x36); LCD_WR_DATA8(0x0F); LCD_WR_REG(0x2A); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0xEF); LCD_WR_REG(0x2B); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x01); LCD_WR_DATA8(0x3F); LCD_WR_REG(0x11); //Exit Sleep delayms(120); LCD_WR_REG(0x29); //Display on LCD_WR_REG(0x2c); }