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

📄 lcd2.41_s6d1121_qvga_16_v1.c

📁 三星S6D1121驱动 三星S6D1121驱动
💻 C
字号:
//******************************************************************************
#define     _IN_LCD_LTPS
//------------------------------------------------------------------------------
#include "Memap.h"
#include "Macro.h"
#include "Global.h"
#include "MsgDef.h"
#include "Lcd.h"
#include "LcdChar.h"
#include "Dma.h"
//---------driver program ILI9320---TFT2.0-------------------------------------------------------------------
#undef   Parallel8
#define  UINT16     unsigned short
#define LCD_INIT_NORMAL 0
#define MP4_LCD_INIT    2


void LCD_Init(unsigned int type) ;
void LCD_SetDispAddr(unsigned int x,unsigned int y);
void LCDDEV_SetWindow(int x0, int y0, int x1, int y1);
void LCDDEV_RevertWindow(int x0, int y0, int x1, int y1);
void Display_off(void) ;

unsigned int LcdScanType=0;

//Ver1.8 2007-03-20 zyz 支持Camera功能
#ifndef CAM_MODULE
void LCD_Command(unsigned int cmd)
{
    write_mem(LCD_COMMAND,cmd);
}

void LCD_Data(unsigned int data)
{
    write_mem(LCD_DATA,data);
}
#endif

//Ver1.8 2007-03-20 zyz 支持Camera功能
void LCD_Reg_Set(unsigned int cmd,unsigned int data)
{
	LCD_Command(cmd);
	LCD_Data(data);
}       

unsigned int LCD_StatusRead(void)
{
//    unsigned int i,j;
//    i = read_XDATA(LCD_COMMAND);
//#ifdef  Parallel8
//    j = read_XDATA(LCD_COMMAND);
//    i = ((i & 0xff00) | (j >> 8));
//#endif
//    return i;
}



void LCD_SetDispAddr(unsigned int x,unsigned int y)
{
	LCD_Reg_Set(0x0020, y);
	LCD_Reg_Set(0x0021, x);
	LCD_Command(0x0022);
}

void LCD_SetPixel(unsigned int x, unsigned int y, unsigned int color)
{
    LCD_SetDispAddr(x,y);	
	LCD_Data(color);	        //color表示RGB值, 这个函数的功能是往(x,y)写入color值
}


unsigned int LCD_GetPixel(unsigned int x, unsigned int y)
{
//	unsigned int color;
//	unsigned int i;
//
//	LCD_SetDispAddr(x,y);		
//	color = read_XDATA(LCD_DATA);
//	//for(i=10; i>0; i--);
//	color = read_XDATA(LCD_DATA);
//	//color = DataChange(color);
//	return(color);
}


void LCD_XorPixel(unsigned int x, unsigned int y)
{
//	unsigned int color;
//	color = LCD_GetPixel(x,y);
//	LCD_SetPixel(x,y,0xFFFF-color);	
}

void LCD_Init(unsigned int type)
{
	//************* Start Initial Sequence **********//
	if(type == MP4_LCD_INIT){
	    LCD_Reg_Set(0x0003, 0x0003);	// set GRAM write direction and BGR=1.
	}
	else{
	    LCD_Reg_Set(0x0003, 0x000B);	// set GRAM write direction and BGR=1.
	}
//	LCD_Reg_Set(0x0002, 0x0300);		// set 1 line inversion
//	LCD_Reg_Set(0x0008, 0x0404);		// set the back porch and front porch
//	LCD_Reg_Set(0x000A, 0x0008);		// RGB interface setting

	LCDDEV_SetWindow(0, 0, LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1);
}

__attribute__((section(".sys_init_text, \"ax\"")))//添加文件属性
void  PowerOnLcdinit()
{
	//LCD_Reg_Set(0x0004,0x0a01);
	Delay1Ms(20);

	LCD_Reg_Set(0x0011, 0x2004);
	LCD_Reg_Set(0x0013, 0xCC00);
	LCD_Reg_Set(0x0015, 0x8000);	//0x382E//0x8000
	LCD_Reg_Set(0x0014, 0x002A);	//0x0028
	LCD_Reg_Set(0x0012, 0x0033);
	LCD_Reg_Set(0x0013, 0xCC04);
	Delay1Ms(10);

	LCD_Reg_Set(0x0013, 0xCC06);
	Delay1Ms(50);

	LCD_Reg_Set(0x0013, 0xCC4F);
	Delay1Ms(10);
	LCD_Reg_Set(0x0013, 0x674F);
	LCD_Reg_Set(0x0011, 0x1803);	//0x1803//Contrast Setting 
	Delay1Ms(80);

	// ---------- Gamma Control  ---------- //
  	LCD_Reg_Set(0x0030, 0x0100);//0x2609
  	LCD_Reg_Set(0x0031, 0x220E);//0x242C
  	LCD_Reg_Set(0x0032, 0x211F);//0x262B
  	LCD_Reg_Set(0x0033, 0x2423);//0x2021
  	LCD_Reg_Set(0x0034, 0x2628);//0x1C22
  	LCD_Reg_Set(0x0035, 0x3127);//0x211E
  	LCD_Reg_Set(0x0036, 0x211E);//0x211E
  	LCD_Reg_Set(0x0037, 0x1723);//0x1723
  	LCD_Reg_Set(0x0038, 0x0F15);//0x0F15
  	LCD_Reg_Set(0x0039, 0x0A0A);//0x0A0A
  	LCD_Reg_Set(0x003A, 0x1315);//0x1315
  	LCD_Reg_Set(0x003B, 0x3619);//0x3619
  	LCD_Reg_Set(0x003C, 0x0D10);//0x0D00
  	LCD_Reg_Set(0x003D, 0x0002);//0x000D

	//************* Start Initial Sequence **********//
	LCD_Reg_Set(0x0016,0x0006);	//0x0007
	LCD_Reg_Set(0x0002,0x0013);	//0x0011
	LCD_Reg_Set(0x0001,0x0027);
	LCD_Reg_Set(0x0003,0x000B);
	LCD_Reg_Set(0x0008,0x0303);
	LCD_Reg_Set(0x000A,0x050B);	//0x050B->0x0508->0x0507
	LCD_Reg_Set(0x000B,0x0003);	//0x0000
	LCD_Reg_Set(0x000C,0x0000);
	LCD_Reg_Set(0x0041,0x0000);
	LCD_Reg_Set(0x0050,0x0000);
	LCD_Reg_Set(0x0060,0x0005);
	LCD_Reg_Set(0x0070,0x000B);
	LCD_Reg_Set(0x0071,0x0000);
	LCD_Reg_Set(0x0078,0x0000);
	LCD_Reg_Set(0x0079,0x0000);//0x0007
	LCD_Reg_Set(0x007A,0x0000);
	Delay1Ms(50);

	LCD_Reg_Set(0x0007,0x0051);
	Delay1Ms(50);
	LCD_Reg_Set(0x0007,0x0053);
	Delay1Ms(20);

	// ---------- GRAM Address Set ---------- //
	LCD_SetDispAddr(0,0);
}

void Standby_lcd(void)
{
//	Display_off();
}


void  standby_return()
{
//	PowerOnLcdinit();
}

void Display_off(void)
{
	LCD_Reg_Set(0x0007,0x0052);
	Delay1Ms(40);
	LCD_Reg_Set(0x0007,0x0010);
	Delay1Ms(10);
	LCD_Reg_Set(0x0012,0x0000);
	LCD_Reg_Set(0x0013,0xCC46);
	Delay1Ms(50);
	LCD_Reg_Set(0x0013,0xCC44);
	Delay1Ms(10);
	LCD_Reg_Set(0x0013,0xCC40);
}


void LCDDEV_SetWindow(int x0, int y0, int x1, int y1)
{
#ifdef LCD_MEMORY_DEV
	while(DmaFillImage2LcdFlag);
#endif    

	LCD_Reg_Set(0x0046, y1<<8 | y0);
	LCD_Reg_Set(0x0047, x1);
	LCD_Reg_Set(0x0048, x0);
	LCD_SetDispAddr(x0, y0);
}


void LCDDEV_RevertWindow(int x0, int y0, int x1, int y1)
{
	LCDDEV_SetWindow(x0, y0, x1, y1);
}


//void LCD_ReadBitmap(int x0, int y0, int xsize, int ysize, unsigned int *pData)
//{
//	int x1, y1;
//	x1 = x0+xsize-1; 
//	y1 = y0+ysize-1; 
//	LCDDEV_SetWindow(x0, y0, x1, y1);
//	read_XDATA(LCD_DATA);
//	for(y1=0; y1<ysize; y1++){
//		for(x1=0; x1<xsize; x1++){
//			*pData++ = read_XDATA(LCD_DATA);
//		}
//	}
//
//	LCDDEV_RevertWindow(0, 0, LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1);
//}


unsigned int LCDDEV_GetPixel(int x, int y)
{
//	unsigned int color;
//	
//	LCD_SetDispAddr(x,y);	
//	color = read_XDATA(LCD_DATA);
//	color = read_XDATA(LCD_DATA);
//	return(color);	
}


void LCDDEV_SetPixel(int x, int y, unsigned int color)
{
	LCD_SetDispAddr(x,y);	
	LCD_Data(color);	        //color表示RGB值, 这个函数的功能是往(x,y)写入color值
}


void LCDDEV_XorPixel(int x, int y)
{
//	unsigned int color;
//	color = LCDDEV_GetPixel(x,y);
//	LCDDEV_SetPixel(x,y,0xFFFF-color);			
}


//length
void DMA_LcdJpegInitX(void)
{
	LCD_Reg_Set(0x0003, 0x000B); //0x1038); //0x1028); //0x1038);		// set GRAM write direction and BGR=1.
	LCDDEV_SetWindow(0, 0,  LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1); 
}


//weight
void DMA_LcdJpegInit(void)
{
	LCD_Reg_Set(0x0003, 0x0002); //0x1020); //0x1028); //0x1038);		// set GRAM write direction and BGR=1.
	LCDDEV_SetWindow(0, 0,  LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1); 	
	LCD_SetDispAddr(0,LCD_MAX_YSIZE-1);
}

void MP4_LCD_Init(void)
{
	LCD_Init(MP4_LCD_INIT);
}

void DMA_LcdBMPInitX(void)
{
	LCD_Reg_Set(0x0003, 0x000A);
	LCDDEV_SetWindow(0, 0,  LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1); 
	LCD_SetDispAddr(0,LCD_MAX_YSIZE-1);
}

void DMA_LcdBMPInitInvX(void)
{
	LCD_Reg_Set(0x0003, 0x000B);
	LCDDEV_SetWindow(0, 0,  LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1); 
}

//weight
void DMA_LcdBMPInit(void)
{
	LCD_Reg_Set(0x0003, 0x0000);
	LCDDEV_SetWindow(0, 0,  LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1);
	LCD_SetDispAddr( LCD_MAX_XSIZE-1,LCD_MAX_YSIZE-1);
}

//weight
void DMA_LcdBMPInitInv(void)
{
	LCD_Reg_Set(0x0003, 0x0002);
	LCDDEV_SetWindow(0, 0,  LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1); 	
	LCD_SetDispAddr(0,LCD_MAX_YSIZE-1);
}         
//******************************************************************************


        

⌨️ 快捷键说明

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