?? lcdfyd12864.txt
字號:
#include <reg51.h>
#include "12864.h"
void InitP0(bit i)
{
if(i==1) P0=0xff;
else P0=0x00;
}
void ShortDelay(uchar i)
{
for(;i>0;i--);
}
void LongDelay(uint i)
{
uint j;
for(;i>0;i--)
{
for(j=1000;j>0;j--);
}
}
void SetLCD_RS(bit i)
{
if(i==1) PinRS=1;
else PinRS=0;
}
void SetLCD_RW(bit i)
{
if(i==1) PinRW=1;
else PinRW=0;
}
void SetLCD_EN(bit i)
{
if(i==1) PinE=1;
else PinE=0;
}
void SetLCD_RST(bit i)
{
if(i==1) PinRST=1;
else PinRST=0;
}
uchar ReadStatus(void)
{
uchar i;
InitP0(1);
SetLCD_RW(1);
SetLCD_RS(0);
SetLCD_EN(0);
ShortDelay(10);
SetLCD_EN(1);
ShortDelay(20);
i=P0;
ShortDelay(40);
SetLCD_EN(0);
return(i);
}
uchar ReadOneByte(void)
{
uchar i;
InitP0(1);
SetLCD_RW(1);
SetLCD_RS(1);
SetLCD_EN(0);
ShortDelay(10);
SetLCD_EN(1);
ShortDelay(20);
i=P0;
ShortDelay(40);
SetLCD_EN(0);
return(i);
}
void WriteInstruc(uchar Instruction)
{
while((ReadStatus()&0x80)!=0x00);
InitP0(0);
SetLCD_RW(0);
SetLCD_RS(0);
SetLCD_EN(0);
P0=Instruction;
ShortDelay(100);
SetLCD_EN(1);
ShortDelay(100);
SetLCD_EN(0);
}
void WriteOneByte (uchar Data)
{
while((ReadStatus()&0x80)!=0x00);
InitP0(0);
SetLCD_RW(0);
SetLCD_RS(1);
SetLCD_EN(0);
P0=Data;
ShortDelay(100);
SetLCD_EN(1);
ShortDelay(100);
SetLCD_EN(0);
}
void ResetLCD(void)
{
LongDelay(40);
SetLCD_RST(0);
LongDelay(1);
SetLCD_RST(1);
LongDelay(1);
}
void InitLCD(void)
{
ResetLCD();
FunctionSet(0x30);
LongDelay(1);
FunctionSet(0x30);
LongDelay(1);
Disp_OnOff(0x0c);
LongDelay(1);
PointSet(0x06);
LongDelay(1);
}
void DispOneWord(uchar X,uchar Y,uint Word)
{
uchar Disp_Address;
uchar Address_H;
uchar Address_L;
if((X==0x00)||(X==0x02))
Address_H=0x80;
else
Address_H=0x90;
if((X==0x00)||(X==0x01))
Address_L=Y;
else
Address_L=Y+0x08;
Disp_Address=(Address_H|Address_L)&0xff;
SetDDRAM_Add(Disp_Address);
WriteOneByte(((Word&0xff00)>>8)&0xff);
WriteOneByte(Word&0xff);
}
void DispTwoCharacter(uchar X,uchar Y,uchar Character1,uchar Character2)
{
uchar Disp_Address;
uchar Address_H;
uchar Address_L;
if((X==0x00)||(X==0x02))
Address_H=0x80;
else
Address_H=0x90;
if((X==0x00)||(X==0x01))
Address_L=Y;
else
Address_L=Y+0x08;
Disp_Address=Address_H|Address_L;
SetDDRAM_Add(Disp_Address);
WriteOneByte(Character1);
WriteOneByte(Character2);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -