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

📄 display.c

📁 台湾联咏科技NT7553E液晶资料、驱动、工具等。
💻 C
📖 第 1 页 / 共 5 页
字号:
/**********************Copyright (C), 2008-2009, Aiding Digital. Co., Ltd.*****************************
文 件 名:Dislpay.c
功    能:液晶显示相关C函数
作    者:EDU
版    本:ECS-10 V01
日    期:2008-08-29 AM, edu_xy
修改历史:2008-11-07 PM, edu_syc
******************************************************************************************************/

//By Sunplus
#include "./System/include/system/GPL162002.h"
#include "./System/include/system/Display.h"
#include "./Component/Include/FS/typedef.h"
//By EDU
#include "./System.h"
#include "./System/include/system/PS2Key.h"
#include "./System/include/system/User.h"

#define STEP_AMOUNT		9			//级别数量//它必须为奇数
#define STEP_V0			(4*5)		//每级别改变的电压量0x04v*n,
#define MEDIUM_V0		(360+4*300)	//14.72v屏幕亮度最佳时的电压值,300这个数为实验得出(待定)
#define MIN_V0			(MEDIUM_V0-((STEP_AMOUNT-1)/2 * STEP_V0))  //屏幕亮度最小时的电压值

//函数声明
void DelayTime(void);
void PutPoint(int x, int y, int data);
void Save_set(void);
unsigned int RevisedProfile(int *str1, int key, LPSTR fullpath, unsigned int mode);

//变量声明
extern unsigned int _RES_EDU_12X12_FONT_FON_sa;		//12x12点阵字模在NorFlash中的地址
extern unsigned int _RES_EDU_16X16_FONT_FON_sa;		//16x16点阵字模在NorFlash中的地址
extern unsigned int _RES_EDU_16X8_FONT_FON_sa;		//16x8点阵字模在NorFlash中的地址
extern unsigned int _RES_EDU_12X6_FONT_FON_sa;		//12x6点阵字模在NorFlash中的地址
extern unsigned int _RES_EDU_NEW_FONT_FON_sa;		//16x16日文点阵字模在NorFlash中的地址

#define __NT7553E__
#ifdef __NT7553E__

#define Delay(ms) DelayMS(ms)

void NT7553E_RST(void)
{
	*P_IOD_Dir |= 0x0800;
	*P_IOD_Attrib |= 0x0800;

	*P_IOD_Data |= 0x0800;		//IOD11(RES) Output High
	Delay(1);
	*P_IOD_Data &= 0xF7FF;		//IOD11(RES) Output Low
	Delay(100);
	*P_IOD_Data |= 0x0800;		//IOD11(RES) Output High
	Delay(1);
}

void NT7553E_RXX_WR(UINT16 Rxx,UINT16 dat)
{
    NT7553E_CMD_WR(Rxx);
    NT7553E_DAT_WR(dat);
}

#define NT7553E_HWM_ENABLE()	NT7553E_RXX_WR(R05,0x0230)
#define NT7553E_HWM_DISABLE()	NT7553E_RXX_WR(R05,0x0030)

//Initial--------------------------------------------------------------
void NT7553E_INITIAL(UINT16 CT)
{
    NT7553E_RXX_WR(R00,0x0001);	//Start oscillation
    Delay(50);//10ms
    NT7553E_RXX_WR(R01,0x0013);	//Driver output control//set com1<->com160 and set seg1<->320
    NT7553E_RXX_WR(R02,0x030F);	//Driving Waveform Control
    Delay(20);//20ms
    NT7553E_RXX_WR(R03,0xFD0C);	//Power Control 1
    NT7553E_RXX_WR(R04,    CT);	//Contrast Control
    NT7553E_RXX_WR(R05,0x0030);	//Entry mode
    NT7553E_RXX_WR(R06,0x0000);	//Compare Register
    NT7553E_RXX_WR(R07,0xC003);	//Display Control
    NT7553E_RXX_WR(R0B,0x7001);	//Frame Cycle Control
    NT7553E_RXX_WR(R0C,0x0010);	//Power control 2
    NT7553E_RXX_WR(R0D,0x0000);	//Multi-Time Calibration Setting and Programming
    NT7553E_RXX_WR(R0E,0x0000);	//Multi-Time Calibration Setting and Programming
    NT7553E_RXX_WR(R11,0x0000);	//Vertical Scroll Control
    NT7553E_RXX_WR(R14,0x9f00);	//1st Screen Driving Position
    NT7553E_RXX_WR(R15,0x0000);	//2st Screen Driving Position
    NT7553E_RXX_WR(R20,0x0000);	//RAM Write Data Mask
    NT7553E_RXX_WR(R21,0x0000);	//RAM Address Set
    NT7553E_RXX_WR(R22,0x0000);	//Write/Read  Data to DDRAM
    NT7553E_RXX_WR(R30,0x0000);	//Grayscale Palette Control
    NT7553E_RXX_WR(R31,0x0806);
    NT7553E_RXX_WR(R32,0x0C0A);
    NT7553E_RXX_WR(R33,0x100E);
    NT7553E_RXX_WR(R34,0x1211);
    NT7553E_RXX_WR(R35,0x1413);
    NT7553E_RXX_WR(R36,0x1615);
    NT7553E_RXX_WR(R37,0x1918);
    NT7553E_RXX_WR(R38,0x1B1A);
    NT7553E_RXX_WR(R39,0x1D1C);
    NT7553E_RXX_WR(R3A,0x201E);
    NT7553E_RXX_WR(R3B,0x2322);
    NT7553E_RXX_WR(R3C,0x2624);
    NT7553E_RXX_WR(R3D,0x2A28);
    NT7553E_RXX_WR(R3E,0x2E2C);
    NT7553E_RXX_WR(R3F,0x3431);
    NT7553E_RXX_WR(R22,0x0000);

}

void NT7553E_WINDOW(UINT16 hsa,UINT16 hea,UINT16 vsa,UINT16 vea,UINT16 HWM)
{
	UINT16 hea_hsa,vea_vsa,vsa_hsa;

	hea_hsa = (hea<<8) | hsa;
	vea_vsa = (vea<<8) | vsa;
	vsa_hsa = (vsa<<8) | hsa;

	NT7553E_RXX_WR(R05,((HWM==0)?0x0030:0x0230));
	NT7553E_RXX_WR(R16,hea_hsa);	//Horizontal RAM Address Position 0h-83h=84h total=132*3=396
	NT7553E_RXX_WR(R17,vea_vsa);	//Vertical RAM Address Position 0h-a1h=a2h  total=162
	NT7553E_RXX_WR(R20,0x0000);
    NT7553E_RXX_WR(R21,vsa_hsa);	//RAM Address Set
	NT7553E_CMD_WR(R22);			//RAM data write/read
}

void NT7553E_DOT(UINT16 H, UINT16 V, UINT16 G)
{
	UINT16 AC,WM,Gray;

	AC = (V<<8)|(H/3);

	if(H%3==0){WM = 0x07ff;}
	else if(H%3==1){WM = 0xf83f;}
	else{WM = 0xffe0;}

	Gray &=0x001f;
	Gray = (G<<11) | (G<<6) | G;

	NT7553E_HWM_DISABLE();
	NT7553E_RXX_WR(R20,WM);
	NT7553E_RXX_WR(R21,AC);
	NT7553E_RXX_WR(R22,Gray);
}

void NT7553E_3DOT(UINT16 H, UINT16 V, UINT16 G)
{
	UINT16 AC;

	AC = (V<<8)|H;

	NT7553E_HWM_DISABLE();
	NT7553E_RXX_WR(R20,0x0000);
	NT7553E_RXX_WR(R21,AC);
	NT7553E_RXX_WR(R22,G);
}

void NT7553E_GRAY(UINT16 Gray)
{
	UINT16 i,j,k,g;

	g = Gray & 0x001f;
	g = (Gray<<11) | (Gray<<6) | Gray;

	NT7553E_WINDOW(0x00,0x83,0x00,0xa1,1);

	for(i=0;i<162;i++)
	{
		for(j=0;j<33;j++)
		{
			for(k=0;k<4;k++)
			{
				NT7553E_DAT_WR(g);
			}
		}
	}
}

void NT7553E_GRAY32(void)
{
	UINT16 i,j,k;

	NT7553E_WINDOW(0x00,0x83,0x00,0xa1,1);

	for(i=0;i<162;i++)
	{
		for(k=0;k<1;k++)
		{
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x0000);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x0841);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x1082);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x18c3);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x2104);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x2945);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x3186);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x38c7);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x4208);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x4a49);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x528a);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x5acb);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x630c);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x6b4d);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x738e);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x7bcf);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x8410);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x8c51);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x9492);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x9cd3);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xa514);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xad55);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xb596);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xbdd7);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xc618);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xce59);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xd69a);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xdedb);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xe71c);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xef5d);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xf79e);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0xffdf);}
			for(j=0;j<4;j++){NT7553E_DAT_WR(0x0000);}
		}
	}
}

void NT7553E_SNOW(void)
{
	UINT16 i,j,k;

	NT7553E_WINDOW(0x00,0x83,0x00,0xa1,1);

	for(i=0;i<162;i++)
	{
		for(j=0;j<33;j++)
		{
			for(k=0;k<2;k++){NT7553E_DAT_WR(0xffdf);}
			for(k=0;k<2;k++){NT7553E_DAT_WR(0x0000);}
			Delay(1);
		}
	}
}

void NT7553E_DOT_ALL(UINT16 G)
{
	UINT16 H,V;
	UINT16 AC,Gray;

	NT7553E_WINDOW(0x00,0x83,0x00,0xa1,0);

	Gray &= 0x001f;
	Gray = (G<<11) | (G<<6) | G;
	for(V=0;V<162;V++)
	{
		AC = V<<8;
		for(H=0;H<132;H++)
		{
			NT7553E_RXX_WR(R21,AC);
			NT7553E_RXX_WR(R22,Gray);
			AC++;
		}
	}
}

void __FONT16_16__(UINT16 *ZiMo,UINT16 H,UINT16 V,UINT16 FG,UINT16 BG)
{
	UINT16 i,j,gray,dot16,AC;

	NT7553E_WINDOW(H/3, (H/3+5), V, (V+15),0);

	if(H%3==0)
	{
		for(i=0;i<16;i++)
		{
			AC = ((V+i)<<8)|(H/3);
			dot16 = ZiMo[i];
			for(j=0;j<5;j++)
			{
				gray = ((((dot16&0x8000)==0)?FG:BG)<<11);
				gray |= ((((dot16&0x4000)==0)?FG:BG)<<6);
				gray |= (((dot16&0x2000)==0)?FG:BG);
				dot16<<=3;
				NT7553E_RXX_WR(R21,AC);
				NT7553E_RXX_WR(R22,gray);
				AC++;
			}
			gray = ((((dot16&0x8000)==0)?FG:BG)<<11);
			gray |= (BG<<6);
			gray |= BG;
			NT7553E_RXX_WR(R21,AC);
			NT7553E_RXX_WR(R22,gray);
		}
	}
	else
	{
		for(i=0;i<16;i++)
		{
			dot16 = ZiMo[i];
			for(j=0;j<16;j++)
			{
				gray = ((dot16&0x8000)==0)?FG:BG;
				NT7553E_DOT((H+j), (V+i), gray);
				dot16<<=1;
			}
		}
	}
}

void __FONT16_8__(UINT16 *ZiMo,UINT16 H,UINT16 V,UINT16 FG,UINT16 BG)
{
	UINT16 i,j,gray,dot16,AC;

	NT7553E_WINDOW(H/3, (H/3+2), V, (V+15),0);

	if(H%3==0)
	{
		for(i=0;i<8;i++)
		{
			dot16 = ZiMo[i];
			for(j=0;j<2;j++)
			{
				AC = ((V+i*2+j)<<8)|(H/3);
				gray = ((((dot16&0x8000)==0)?BG:FG)<<11);
				gray |= ((((dot16&0x4000)==0)?BG:FG)<<6);
				gray |= (((dot16&0x2000)==0)?BG:FG);
				NT7553E_RXX_WR(R20,0x0000);
				NT7553E_RXX_WR(R21,AC);
				NT7553E_RXX_WR(R22,gray);

				AC++;
				gray = ((((dot16&0x1000)==0)?BG:FG)<<11);
				gray |= ((((dot16&0x0800)==0)?BG:FG)<<6);
				gray |= (((dot16&0x0400)==0)?BG:FG);
				NT7553E_RXX_WR(R21,AC);
				NT7553E_RXX_WR(R22,gray);

				AC++;
				gray = ((((dot16&0x0200)==0)?BG:FG)<<11);
				gray |= ((((dot16&0x0100)==0)?BG:FG)<<6);
				NT7553E_RXX_WR(R20,0x001f);
				NT7553E_RXX_WR(R21,AC);
				NT7553E_RXX_WR(R22,gray);
				dot16<<=8;
			}
		}
	}
	else
	{
		for(i=0;i<16;i++)
		{
			dot16 = ZiMo[i/2];
			for(j=0;j<8;j++)
			{
				gray = ((dot16&0x8000)==0)?BG:FG;
				NT7553E_DOT((H+j), (V+i), gray);
				dot16<<=1;
			}
			i++;
			for(j=0;j<8;j++)
			{
				gray = ((dot16&0x8000)==0)?BG:FG;
				NT7553E_DOT((H+j), (V+i), gray);
				dot16<<=1;
			}
		}
	}
}

void __FONT_12_12__(UINT16 *ZiMo,UINT16 H,UINT16 V,UINT16 FG,UINT16 BG)
{
	UINT16 i,j,gray,dot12,AC;
	UINT16 ZiMo12[12];

	NT7553E_WINDOW(H/3, (H/3+3), V, (V+11),0);

	for(i=0;i<3;i++)
	{
		ZiMo12[(i<<2)] = ZiMo[i*3];
		ZiMo12[(i<<2)+1] = (ZiMo[i*3]<<12)|(ZiMo[i*3+1]>>4);
		ZiMo12[(i<<2)+2] = (ZiMo[i*3+1]<<8)|(ZiMo[i*3+2]>>8);
		ZiMo12[(i<<2)+3] = ZiMo[i*3+2]<<4;
	}

	if(H%3==0)
	{
		for(i=0;i<12;i++)
		{
			dot12 = ZiMo12[i];
			for(j=0;j<4;j++)
			{
				AC = ((V+i)<<8)|(H/3+j);
				gray = ((((dot12&0x8000)==0x8000)?FG:BG)<<11);
				gray |= ((((dot12&0x4000)==0x4000)?FG:BG)<<6);
				gray |= (((dot12&0x2000)==0x2000)?FG:BG);
				dot12<<=3;
				NT7553E_RXX_WR(R21,AC);
				NT7553E_RXX_WR(R22,gray);
			}
		}
	}
	else
	{
		for(i=0;i<12;i++)
		{
			dot12 = ZiMo12[i];
			for(j=0;j<12;j++)
			{
				gray = ((dot12&0x8000)==0x8000)?FG:BG;
				NT7553E_DOT((H+j), (V+i), gray);
				dot12<<=1;
			}
		}
	}
}

void __FONT_12_6__(UINT16 *ZiMo,UINT16 H,UINT16 V,UINT16 FG,UINT16 BG)
{
	UINT16 i,j,gray,dot6,AC;

	NT7553E_WINDOW(H/3, (H/3+1), V, (V+11),0);

	if(H%3==0)
	{
		for(i=0;i<6;i++)
		{
			dot6 = ZiMo[i];
			for(j=0;j<2;j++)
			{
				AC = ((V+i*2+j)<<8)|(H/3);
				gray = ((((dot6&0x8000)==0x8000)?FG:BG)<<11);
				gray |= ((((dot6&0x4000)==0x4000)?FG:BG)<<6);
				gray |= (((dot6&0x2000)==0x2000)?FG:BG);
				NT7553E_RXX_WR(R21,AC);
				NT7553E_RXX_WR(R22,gray);

				AC++;
				gray = ((((dot6&0x1000)==0x1000)?FG:BG)<<11);
				gray |= ((((dot6&0x0800)==0x0800)?FG:BG)<<6);
				gray |= (((dot6&0x0400)==0x0400)?FG:BG);
				NT7553E_RXX_WR(R21,AC);
				NT7553E_RXX_WR(R22,gray);
				dot6<<=8;
			}
		}
	}
	else
	{
		for(i=0;i<6;i++)
		{
			dot6 = ZiMo[i];
			for(j=0;j<6;j++)
			{
				gray = ((dot6&0x8000)==0x8000)?FG:BG;
				NT7553E_DOT((H+j), (V+i*2), gray);
				dot6<<=1;
			}

			dot6<<=2;

			for(j=0;j<6;j++)
			{
				gray = ((dot6&0x8000)==0x8000)?FG:BG;
				NT7553E_DOT((H+j), (V+i*2+1), gray);
				dot6<<=1;
			}
		}
	}
}

void __FONT16_16_HWM__(UINT16 *ZiMo,UINT16 H,UINT16 V,UINT16 FG,UINT16 BG)
{

⌨️ 快捷键说明

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