lcdfyd12864.txt

来自「keil c51所用的能由单片机驱动的fyd12864lcd」· 文本 代码 · 共 175 行

TXT
175
字号
#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 + =
减小字号Ctrl + -
显示快捷键?