📄 display.c
字号:
/**********************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 + -