📄 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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -