📄 cstn1.5_st7637_128x128_8_v1.c
字号:
/******************************************************************
Author: Ivan Dong(Dzh)
File name:
Start : 2006/08/01
End :
Description:
******************************************************************/
//#define _IN_LCD_LTPS
//------------------------------------------------------------------------------
#include "Memap.h"
#include "Macro.h"
#include "Lcd.h"
#define LCD_OFFSET_X 4
#define LCD_OFFSET_Y 4
#define LCD_SendPara LCD_SendData8
#define LCD_SendData LCD_SendData16
//#define LCD_SendCommand LCD_SendData8
/******************************************
// Function: LCD_SendCommand()
//
// input: Set Control Register, 16bit,
//
// Description: RS(DC) is Low active when write Index Register, and High Byte First
//
*******************************************/
/*void LCD_SendCommand(unsigned int cmd)
{
// write_XDATA(LCD_COMMAND,cmd >> 8);
write_XDATA(LCD_COMMAND,cmd);
}*/
/******************************************
// Function: LCD_SendPara()
//
// input: Send command parameter , 16bit,
//
// Output: None
//
// Description: RS(DC) is High active when write Data, and High Byte First
*******************************************/
/*void LCD_SendPara(unsigned int para)
{
// write_XDATA(LCD_DATA,para >> 8);
write_XDATA(LCD_DATA,para);
}*/
/******************************************
// Function: LCD_SendData()
//
// input: Send data , 16bit,
//
// Output: None
//
// Description: RS(DC) is High active when write Data, and High Byte First
*******************************************/
/*void LCD_SendData(unsigned int data)
{
// LCD_SendCommand(0x2c);
write_XDATA(LCD_DATA,data >> 8);
write_XDATA(LCD_DATA,data);
}
void AVILCD_SendData(unsigned int data)
{
// LCD_SendCommand(0x2c);
write_XDATA(LCD_DATA,data);
write_XDATA(LCD_DATA,data >> 8);
}*/
// dzh, to fill the whole screen in one color
void Display_Sub(unsigned int RGB_Data)
{
unsigned int i,j;
for(i = 131; i>0; i--){
for(j = 131; j>0; j--)
LCD_SendData(RGB_Data);
}
}
/*******************************************
// Function: PowerOnLcdinit()
//
// Input : None
//
// Output: None
//
// Description: Lcd Initial Code
********************************************/
__attribute__((section(".sys_init_text, \"ax\"")))
void PowerOnLcdinit()
{
//-----------------------------------------------------------------------------------//
//------------------------------------ST7637 Initial Code----------------------------//
//--------------------------------Date/Time : 2006-11-16 12:19:23----------------//
//--------------------------------Interface : 80-8bit--------------------------------//
//----------------------------------------------------------
LCD_SendCommand(0x01); //Software Reset
Delay1Ms (150); //Delay 150mS
LCD_SendCommand(0xD7); //Autoread control
LCD_SendPara (0x9F); //Disable Autoread
LCD_SendCommand(0xE0); //Control OTP/MTP
LCD_SendPara (0x00); //Read Mode
Delay1Ms (10); //Delay 10mS
LCD_SendCommand(0xE3); //Control OTP/MTP
Delay1Ms (20); //Delay 20mS
LCD_SendCommand(0xE1); //Close Read Mode
//-----------------------------------------------------------------------------------//
//------------------------------OTP/MTP Set [XXXX/OTPB/MTP ]-------------------------//
//-----------------------------------------------------------------------------------//
//------------------------------------OTPB Set---------------------------------------//
LCD_SendCommand(0xC3); //Bias Set
LCD_SendPara (0x00); //
LCD_SendCommand(0xC4); //Booster Set
LCD_SendPara (0x05); //
LCD_SendCommand(0xC5); //Booster Efficiency Set
LCD_SendPara (0x11); //
LCD_SendCommand(0xCB); //VG Booster Set
LCD_SendPara (0x01); //
LCD_SendCommand(0xCC); //ID1 Set
LCD_SendPara (0x45); //
LCD_SendCommand(0xCE); //ID3 Set
LCD_SendPara (0x00); //
LCD_SendCommand(0xB7); //Glass Direction
LCD_SendPara (0xC8); //
LCD_SendCommand(0xD0); //Follower Type set
LCD_SendPara (0x1D); //
//------------------------------------MTP Set----------------------------------------//
LCD_SendCommand(0xD7); //Autoread control
LCD_SendPara (0xBF); //
LCD_SendCommand(0xC7); //V0 Offset Voltage Set
LCD_SendPara (0x00); //
LCD_SendPara (0x00); //
LCD_SendCommand(0xB5); //N-line Set
LCD_SendPara (0xA4); //
LCD_SendCommand(0xCD); //ID2 Set
LCD_SendPara (0xD2); //
LCD_SendCommand(0xD0); //Set Vg Source
LCD_SendPara (0x1D); //
LCD_SendCommand(0xB4); //PTL Saving Mode Set
LCD_SendPara (0x18); //Power Normal Mode
//-----------------------------------------------------------------------------------//
//----------------------------Command Table 1----------------------------------------//
//-----------------------------------------------------------------------------------//
LCD_SendCommand(0x11); //Sleep Out
LCD_SendCommand(0x20); //Normal Display
LCD_SendCommand(0x38); //Idle Mode Off
LCD_SendCommand(0x25); //Contrast Difference Set
LCD_SendPara (0x3F); //
LCD_SendCommand(0x13); //Partial Mode Off
LCD_SendCommand(0x2A); //Column Range
LCD_SendPara (0x00); //Start Address-0
LCD_SendPara (0x04); //Start Address-4
LCD_SendPara (0x00); //End Address-0
LCD_SendPara (0x83); //End Address-131
LCD_SendCommand(0x2B); //Page Range
LCD_SendPara (0x00); //Start Address-0
LCD_SendPara (0x04); //Start Address-4
LCD_SendPara (0x00); //End Address-0
LCD_SendPara (0x83); //End Address-131
LCD_SendCommand(0x34); //TE Off
LCD_SendCommand(0x33); //Scroll Area Set
LCD_SendPara (0x00); //Top Address
LCD_SendPara (0x84); //Height Address
LCD_SendPara (0x00); //Botton Address
LCD_SendCommand(0x37); //Scroll Start Address Set
LCD_SendPara (0x00); //
LCD_SendCommand(0x3A); //Pixel Format Set
LCD_SendPara (0x05); //
LCD_SendCommand(0x36); //Memory Access Control
LCD_SendPara (0x00); //
LCD_SendCommand(0x29); //Display On
//-----------------------------------------------------------------------------------//
//------------------------Command Table 2 [XXXX/XXXX/GAMM]---------------------------//
//-----------------------------------------------------------------------------------//
LCD_SendCommand(0xB0); //Duty Set
LCD_SendPara (0x7F); //
LCD_SendCommand(0xB1); //First COM Set
LCD_SendPara (0x00); //
LCD_SendCommand(0xB3); //OSC Div. Set
LCD_SendPara (0x00); //
LCD_SendCommand(0xC0); //V0 Voltage Set
LCD_SendPara (0x02); //
LCD_SendPara (0x01); //
LCD_SendCommand(0xC6); //V0 Bias Set
LCD_SendPara (0x00); //
LCD_SendCommand(0xB7); //Glass Direction
LCD_SendPara (0xC8); //
//------------------------------Gamma Table Set--------------------------------------//
LCD_SendCommand(0xF9); //Gamma
LCD_SendPara (0x00); //
LCD_SendPara (0x02); //
LCD_SendPara (0x04); //
LCD_SendPara (0x06); //
LCD_SendPara (0x08); //
LCD_SendPara (0x0A); //
LCD_SendPara (0x0C); //
LCD_SendPara (0x0E); //
LCD_SendPara (0x10); //
LCD_SendPara (0x12); //
LCD_SendPara (0x14); //
LCD_SendPara (0x16); //
LCD_SendPara (0x18); //
LCD_SendPara (0x1A); //
LCD_SendPara (0x1C); //
LCD_SendPara (0x1E); //
Display_Sub(0);
}
void LCD_SetWindow(int x0, int y0, int x1, int y1)
{
LCD_SendCommand(0x2A); //horizontal address area set
LCD_SendPara(x0 + LCD_OFFSET_X);
LCD_SendPara(x1 + LCD_OFFSET_X);
LCD_SendCommand(0x2B); //vertical address area set
LCD_SendPara(y0 + LCD_OFFSET_Y);
LCD_SendPara(y1 + LCD_OFFSET_Y);
LCD_SendCommand(0x2c);
}
void LCDDEV_SetWindow(int x0, int y0, int x1, int y1)
{
LCD_SetWindow(x0,y0,x1,y1);
/* LCD_SendCommand(0x15); //horizontal address area set
LCD_SendPara(x0+4);
LCD_SendPara(x1+4);
LCD_SendCommand(0x75); //vertical address area set
LCD_SendPara(y0+4);
LCD_SendPara(y1+4); */
}
void LCDDEV_RevertWindow(int x0, int y0, int x1, int y1)
{
LCDDEV_SetWindow(x0,y0,x1,y1);
}
void LCD_SetDispAddr(unsigned int x,unsigned int y)
{
LCD_SetWindow(x,y,LCD_MAX_XSIZE-x-1,LCD_MAX_YSIZE-y-1);
}
#if 0
void LCD_ReadBitmap(int x0, int y0, int xsize, int ysize, unsigned int *pData)
{
int x1, y1;
x1 = x0+xsize-1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -