?? 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);/*初始化設(shè)置*/
write_dat(0x30);/*設(shè)置參數(shù)*/
write_dat(0x87);write_dat(0x07);write_dat(0x27);
write_dat(0x36);write_dat(239);write_dat(0x28);
write_dat(0x00);/*設(shè)置參數(shù)*/
write_com(0x44);/*顯示域設(shè)置*/
write_dat(0x00);write_dat(0x00);/*設(shè)置參數(shù)*/
write_dat(0x0f0);write_dat(0x80);write_dat(0x25);
write_dat(0xf0); write_dat(0x00);write_dat(0x4b);
write_dat(0x80);write_dat(0x70);/*設(shè)置參數(shù)*/
write_com(0x5a);/*點(diǎn)位移設(shè)置*/
write_dat(0x00);/*設(shè)置參數(shù)*/
write_com(0x5b);/*顯示合成設(shè)置*/
write_dat(0x1D);/*設(shè)置參數(shù)*/
lcd_clear();/*清屏子程序*/
write_com(0x59);/*開顯示*/
write_dat(0x57);/*01 11 01 11*/
}
void lcd_clear(void)/*清屏程序*/
{
uint idata i;
write_com(0x4c);//光標(biāo)右移
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)/*設(shè)定光標(biāo),允許顯示*/
{
//MyDelay(0x9);
//PageEcode(PagSel,CurHIGH,CurLOW);//光標(biāo)指針地址轉(zhuǎn)換為顯示屏坐標(biāo)地址
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; /*設(shè)定光標(biāo)位置命令*/
W_DAT=ScrAdrL; /*從0000位置開始*/
W_DAT=ScrAdrH;
//MyDelay(0x9);
W_COM =0x42; /*允許MPU連續(xù)地把顯示數(shù)據(jù)寫入顯示區(qū)內(nèi)命令*/
}
void WriteOneHZ(uint PagSel,uchar CurHIGH,uchar CurLOW,uchar*ZiKu)/*在指定位置顯示=個(gè)漢字*/
{ 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)/*延時(shí)子程序*/
{ uint i=0;
while(i<delx)
{i++;}
}
/*光棒產(chǎn)生函數(shù)*/
/*屏編號,屏坐標(biāo)X,屏坐標(biāo)Y,光棒長度*/
/*屏編號取值有1,2,3三種*/
/*橫向坐標(biāo)以8個(gè)點(diǎn)為單位,因此字符為1漢字為2*/
/*縱向坐標(biāo)以1個(gè)點(diǎn)行為單位,漢字換行以0x10為單位*/
void MoveCursor(uchar PagSel,uchar CurHIGH,uchar CurLOW,uchar State)//光棒移動函數(shù)
{
//SetCursor(PagSel,CurHIGH,CurLOW);
uchar i;
uchar rd_dat;
do {
SetCursor(PagSel,CurHIGH,CurLOW);
i=0;
do
{rd_dat=read_dat();
W_DAT=!rd_dat;
i++;}while(i<0x10);
i=16;
SetCursor(PagSel,CurHIGH+1,CurLOW);
do{rd_dat=read_dat();
W_DAT=!rd_dat;
i++;}while(i<0x20);
CurHIGH++;
CurHIGH++;
}while(--State);
}
/*光棒消失函數(shù)*/
/*屏編號,屏坐標(biāo)X,屏坐標(biāo)Y,光棒長度*/
/*屏編號取值有1,2,3三種*/
/*橫向坐標(biāo)以8個(gè)點(diǎn)為單位,因此字符為1漢字為2*/
/*縱向坐標(biāo)以1個(gè)點(diǎn)行為單位,漢字換行以0x10為單位*/
void MoveCursorFar(uchar PagSel,uchar CurHIGH,uchar CurLOW,uchar State)//光棒消失函數(shù)
{
//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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -