📄 lcd2.41_s6d1121_qvga_16_v1.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 + -