?? qgj.h
字號:
#define uchar unsigned char
#define uint unsigned int
uchar CurAdrL,CurAdrH ;
uchar ScrAdrL;
uchar ScrAdrH;
#define W_COM XBYTE[0x7FFF]
#define W_DAT XBYTE[0x7eFF]
#define R_DAT XBYTE[0x7FFF]
void write_com(uchar);
void write_dat(uchar);
void lcd_clear(void);
void write_com(uchar com)
{
W_COM=com;
}
void write_dat(uchar dat)
{
W_DAT=dat;
}
uint read_dat()
{
uint dat;
dat=R_DAT;
return(dat);
}
void lcd_init(void)
{
write_com(0x40);/*初始化設置*/
write_dat(0x30);/*設置參數*/
write_dat(0x87);write_dat(0x07);write_dat(0x27);
write_dat(0x36);write_dat(239);write_dat(0x28);
write_dat(0x00);/*設置參數*/
write_com(0x44);/*顯示域設置*/
write_dat(0x00);write_dat(0x00);/*設置參數*/
write_dat(0x0f0);write_dat(0x80);write_dat(0x25);
write_dat(0xf0); write_dat(0x00);write_dat(0x4b);
write_dat(0x80);write_dat(0x70);/*設置參數*/
write_com(0x5a);/*點位移設置*/
write_dat(0x00);/*設置參數*/
write_com(0x5b);/*顯示合成設置*/
write_dat(0x1D);/*設置參數*/
lcd_clear();/*清屏子程序*/
write_com(0x59);/*開顯示*/
write_dat(0x57);/*01 11 01 11*/
}
void lcd_clear(void)/*清屏程序*/
{
uint idata i;
write_com(0x4c);//光標右移
write_com(0x46);
write_dat(0x00);
write_dat(0x00);
write_com(0x42);
for(i=0;i<0x8000;i++)
{write_dat(0x00);}
}
void SetCursor(uint PagSel,uchar OrdinatX,uchar OrdinatY)/*設定光標,允許顯示*/
{
//MyDelay(0x9);
//PageEcode(PagSel,CurHIGH,CurLOW);//光標指針地址轉換為顯示屏坐標地址
unsigned int PageTemp=0;
switch(PagSel)
{case 1://第l屏
PageTemp= OrdinatY*0x28+OrdinatX;
ScrAdrL=(unsigned char)(PageTemp%256);
ScrAdrH= (unsigned char)(PageTemp/256);
break;
case 2://第2屏
PageTemp = OrdinatY*0x28+ OrdinatX+0x2580;
ScrAdrL= (unsigned char)(PageTemp%256);
ScrAdrH= (unsigned char)(PageTemp/256);
break;
case 3://第3屏
PageTemp = OrdinatY*0x28+ OrdinatX + 0x4b00;
ScrAdrL= (unsigned char)(PageTemp%256);
ScrAdrH=(unsigned char)(PageTemp/256);
break;
default:
break;
}
W_COM =0x46; /*設定光標位置命令*/
W_DAT=ScrAdrL; /*從0000位置開始*/
W_DAT=ScrAdrH;
//MyDelay(0x9);
W_COM =0x42; /*允許MPU連續地把顯示數據寫入顯示區內命令*/
}
void WriteOneHZ(uint PagSel,uchar CurHIGH,uchar CurLOW,uchar*ZiKu)/*在指定位置顯示=個漢字*/
{ uchar i;
SetCursor(PagSel,CurHIGH,CurLOW);
i=0;
do{W_DAT=ZiKu[i];
i++;}while(i<0x10);
SetCursor(PagSel,CurHIGH+1,CurLOW);
i=16;
do{W_DAT=ZiKu[i];
i++;}while(i<0x20);
}
void MyDelay(uint delx)/*延時子程序*/
{ uint i=0;
while(i<delx)
{i++;}
}
/*光棒消失函數,即求得實際顯示數據的原碼*/
/*屏編號,屏坐標X,屏坐標Y,光棒長度*/
/*屏編號取值有1,2,3三種*/
/*橫向坐標以8個點為單位,因此字符為1漢字為2*/
/*縱向坐標以1個點行為單位,漢字換行以0x10為單位*/
void MoveCursorFar(uchar PagSel,uchar CurHIGH,uchar CurLOW,uchar State)//光棒消失函數
{
//SetCursor(PagSel,CurHIGH,CurLOW);
uchar i;
do {
SetCursor(PagSel,CurHIGH,CurLOW);
i=0;
do
{W_DAT=0x00;
i++;}while(i<0x10);
i=16;
SetCursor(PagSel,CurHIGH+1,CurLOW);
do{
W_DAT=0x00;
i++;}while(i<0x20);
CurHIGH++;
CurHIGH++;
}while(--State);
}
/*光棒產生函數,即求得實際顯示數據的反碼*/
/*屏編號,屏坐標X,屏坐標Y,光棒長度*/
/*屏編號取值有1,2,3三種*/
/*橫向坐標以8個點為單位,因此字符為1漢字為2*/
/*縱向坐標以1個點行為單位,漢字換行以0x10為單位*/
void MoveCursor(uchar PagSel,uchar CurHIGH,uchar CurLOW,int Length)//光棒移動函數
{
//SetCursor(PagSel,CurHIGH,CurLOW);
uchar i;
if(Length<0) return;
else
{
while(Length/2){
Length-=2;
SetCursor(PagSel,CurHIGH,CurLOW);
i=0;
do
{W_DAT=0xff;
i++;}while(i<0x10);
i=16;
SetCursor(PagSel,CurHIGH+1,CurLOW);
do{W_DAT=0xff;
i++;}while(i<0x20);
CurHIGH++;
CurHIGH++;
};
if(Length%2==1)
{
SetCursor(PagSel,CurHIGH,CurLOW);
i=0;
do
{W_DAT=0xff;
i++;}while(i<0x10);
i=16;
}
}
}
void WriteOneChar(uint PagSel,uchar CurHIGH,uchar CurLOW,uchar*ZiKu)/*在指定位置顯示1個字符*/
{ uchar i;
SetCursor(PagSel,CurHIGH,CurLOW);
i=0;
do{W_DAT=ZiKu[i];
i++;}while(i<0x10);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -