⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glcd.c

📁 TI DSPTI DSPTI DSPTI DSPTI DSP
💻 C
字号:
#include "glcd.h"
#include "base.h"
#include "glcd.h"

extern GPIO_Handle hgpio5_;
void LCD_Write_CMD(uint32_t CMD)
{
GPIO_pinWrite(hgpio5_,GPIO_PIN7,0);

	LCD_CMD_W = CMD >> 8;
	LCD_CMD_W = CMD;
}

void LCD_Write_DATA(uint32_t DATA)
{
	GPIO_pinWrite(hgpio5_,GPIO_PIN7,1);
	LCD_DATA_W = DATA >> 8;
	LCD_DATA_W = DATA;
}

 void LCD_Write_IMG(uint8_t DATA)
{
	GPIO_pinWrite(hgpio5_,GPIO_PIN7,1);
	LCD_DATA_W = DATA;
}

void TFTLCD_init(void)
{

	delay_us(1000);

	GPIO_pinWrite(hgpio5_,GPIO_PIN4,0);
	
	delay_us(1000);
	GPIO_pinWrite(hgpio5_,GPIO_PIN4,1);


	LCD_Write_CMD(0x0110);			//Start oscillation
	
	LCD_Write_CMD(0x00A0);			//Standby mode cancel

	LCD_Write_CMD(0x0301);			//Reset register 1
	delay_us(10000);
	
	LCD_Write_CMD(0x0300);	
	
	LCD_Write_CMD(0x2B02);			//Osc resistance control
	
	LCD_Write_CMD(0x5901);			//Test register setting enable

	LCD_Write_CMD(0x6022);			//Test register setting 

	LCD_Write_CMD(0x5900);			//Test register setting disable

	LCD_Write_CMD(0x2818);			//DC/DC clock frequency adjust setting

	LCD_Write_CMD(0x1A05);			//Step up circuit frequency adjust setting
      	
	LCD_Write_CMD(0x2518);			//Step up factor in step up circuit 3 setting

	LCD_Write_CMD(0x1900);			//VR1 and VR2 regulator factor setting
	
 	LCD_Write_CMD(0x1C33);			//Step up circuit operating current setting

	LCD_Write_CMD(0x2474);			//V18 and VCOM regulator current setting
	
	LCD_Write_CMD(0x1E01);			//Extra step up circuit 1 operation
	
	LCD_Write_CMD(0x18C1);			//V18 and VCOM regulator on 
	delay_us(10000);
	
	LCD_Write_CMD(0x18E1);			//VCL turn on
	
	LCD_Write_CMD(0x18F1);			//VGH and VGL turn on
	delay_us(60000);

	LCD_Write_CMD(0x18F5);			//DDVDH turn on
	delay_us(60000);

	LCD_Write_CMD(0x1B09);			//VS/VDH turn on and set
	delay_us(10000);
	
	LCD_Write_CMD(0x1F13);			//VCOM amplitude voltage setting

	LCD_Write_CMD(0x2011);			//VCOMH voltage setting   2011
	
	LCD_Write_CMD(0x1E81);	    
	delay_us(10000);
	
	LCD_Write_CMD(0x9D00);			//Extend mode register 

	LCD_Write_CMD(0xC101);			//off mode register 

	LCD_Write_CMD(0x0510);

	LCD_Write_CMD(0xC101);			//RGB mode rsgister
	
	LCD_Write_CMD(0x0E00);			//Partial non-display area color register 1

	LCD_Write_CMD(0x0F00);			//Partial non-display area color register 2

	LCD_Write_CMD(0x1000);			//First display window area starting register 1
	
	LCD_Write_CMD(0x1100);			//First display window area starting register 2

	LCD_Write_CMD(0x1200);			//Second display window area starting register 1

	LCD_Write_CMD(0x1300);			//Second display window area starting register 2   
		
	LCD_Write_CMD(0x1400);			//First display window area display line number 1  

	LCD_Write_CMD(0x1500);			//First display window area display line number 2     
	
	LCD_Write_CMD(0x1600);			//second display window area display line number 1    

	LCD_Write_CMD(0x1700);			//second display window area display line number 2 

	LCD_Write_CMD(0x3401);			//Partial gate register 1

	LCD_Write_CMD(0x3500);			//Partial gate register 2 
		
	LCD_Write_CMD(0x4B00);			//Scroll area start register 1

	LCD_Write_CMD(0x4C00);			//Scroll area start register 2 
	
	LCD_Write_CMD(0x4E00);			//Scroll area line number register 2 

	LCD_Write_CMD(0x4F00);			//Scroll area step number register 1

	LCD_Write_CMD(0x5000);			//Scroll area step number register 2

	LCD_Write_CMD(0x3C00);			//RGB start line register 1

	LCD_Write_CMD(0x3D00);			//RGB start line register 2
		
	LCD_Write_CMD(0x3E01);			//RGB end line register 1

	LCD_Write_CMD(0x3F3F);			//RGB end line register 1
	
	LCD_Write_CMD(0x4002);			//Horizontal back porch setting register

	LCD_Write_CMD(0x4102);			//Vertical back porch setting register
    
	LCD_Write_CMD(0x4200);			//X address register

	LCD_Write_CMD(0x4300);			//Y address register

	LCD_Write_CMD(0x4400);			//Y address register

	LCD_Write_CMD(0x4500);			//MIN X address register
		
	LCD_Write_CMD(0x46EF);			//MAX X address register

	LCD_Write_CMD(0x4700);			//MIN Y address register
	
	LCD_Write_CMD(0x4800);			//MIN Y address register

	LCD_Write_CMD(0x4901);			//MAX Y address register

	LCD_Write_CMD(0x4A3F);			//MAX Y address register

	LCD_Write_CMD(0x1D08);			//specifies the gate scan direction

	LCD_Write_CMD(0x8600);			//Gate on interval control register

	LCD_Write_CMD(0x8730);			//Gate on interval control register

	LCD_Write_CMD(0x8802);			//Source on interval control register
		
	LCD_Write_CMD(0x8905);			//Gate on interval control register

	LCD_Write_CMD(0x8D01);			//Line frequency control register
	
	LCD_Write_CMD(0x8B30);			//Line clock register 1 

	LCD_Write_CMD(0x3301);			//N line inversion register

	LCD_Write_CMD(0x3701);			//Gate scan selection register
    
	LCD_Write_CMD(0x7600);			//specify the number of dummy lines

	LCD_Write_CMD(0x8F30);			//gamma adjustment register
		
	LCD_Write_CMD(0x9002);			//gamma adjustment register

	LCD_Write_CMD(0x9110);			//gamma adjustment register
	
	LCD_Write_CMD(0x9230);			//gamma adjustment register,center adjust

	LCD_Write_CMD(0x9302);			//gamma adjustment register

	LCD_Write_CMD(0x9451);			//gamma adjustment register
    
	LCD_Write_CMD(0x9577);			//gamma adjustment register

	LCD_Write_CMD(0x9620);			//gamma adjustment register
	
	LCD_Write_CMD(0x9700);			//gamma adjustment register

	LCD_Write_CMD(0x9800);			//gamma adjustment register

 	LCD_Write_CMD(0x9900);			//gamma adjustment register
    
	LCD_Write_CMD(0x9A00);			//gamma adjustment register

 	LCD_Write_CMD(0x3B01);       
	delay_us(40000);
	LCD_Write_CMD(0x0020);

}


void LCD_Position(uint16_t S_X , uint16_t S_Y ,  uint16_t E_X, uint16_t E_Y)
{

	LCD_Write_CMD(0x4200 | S_X);					//X address register

	LCD_Write_CMD(0x4300 | ((S_Y & 0x0100) >> 8));		//Y address register

	LCD_Write_CMD(0x4400 | (S_Y&0xFF));				//Y address register
	
	LCD_Write_CMD(0x4500 | S_X);					//MIN X address register
		
	LCD_Write_CMD(0x4600 | E_X);					//MAX X address register

	LCD_Write_CMD(0x4700 | ((S_Y & 0x0100) >> 8));		//MIN Y address register
	
	LCD_Write_CMD(0x4800 | (S_Y & 0xFF));				//MIN Y address register

	LCD_Write_CMD(0x4900 | ((E_Y & 0x0100) >> 8));		//MAX Y address register

	LCD_Write_CMD(0x4A00 | (E_Y & 0xFF));				//MAX Y address register
}

void LCD_SCROLL_init(uint16_t AREA_START, uint16_t DRIVING_LINE)
{

	LCD_Write_CMD(0x4B00 | ((AREA_START & 0x0100) >> 8));
	
	LCD_Write_CMD(0x4C00 | (AREA_START & 0x00FF));
	
	LCD_Write_CMD(0x4D00 | ((DRIVING_LINE & 0x0100) >> 8));
	
	LCD_Write_CMD(0x4E00 | (DRIVING_LINE & 0x00FF));
}

void pixelput(uint8_t x,uint16_t y,uint16_t col)
{
	GPIO_pinWrite(hgpio5_,GPIO_PIN7,0);

	LCD_CMD_W = 0x00000042;
	LCD_CMD_W = (uint32_t)x;
	LCD_CMD_W = 0x00000043 ; 
	LCD_CMD_W = (uint32_t)(y>>8);
	LCD_CMD_W = 0x00000044;
	LCD_CMD_W = (uint32_t)y;
	
	LCD_Write_DATA(col);


}



void bar(uint8_t x,uint16_t y,uint8_t x_,uint16_t y_,uint16_t Col)
{
	uint16_t temp, i;
	
	LCD_Position(x, y, x_, y_);
	temp = ((uint16_t)(x_ - x+1) * (uint16_t)(y_ - y+1));
	for(i = 0 ; i < temp ; i++)
	LCD_Write_DATA(Col);


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -