⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdfyd12864.txt

📁 keil c51所用的能由单片机驱动的fyd12864lcd
💻 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 + -