lcd1602.h

来自「用KEIL编译」· C头文件 代码 · 共 120 行

H
120
字号
//   该头文件定义了LCD1602的操作函数
/********************************************************************
功能:LCD1602驱动,4线连接,控制线和数据线共用一个端口:PtCD
*********************************************************************/

#define PtCD P0  //定义连接口线,

sbit DB7=PtCD^7;//数据口
sbit DB6=PtCD^6;//
sbit DB5=PtCD^5;//
sbit DB4=PtCD^4;//
sbit RS=P1^0;//控制口
sbit RW=P1^1;//
sbit E=P1^2; //

/********************声明LCD1602函数*****************************/
void InitialLcd();
void WriteLcdInstr(uchar);
void WriteLcdData(uchar);
void CheckLcdBusy();
void WriteLcdBit(uchar t);

/********************定义LCD1602函数*****************************/
//-1--初始化函数
void InitialLcd()
{Delay(600);
RS=0;
RW=0;nop;
E=0;nop;

E=1;nop;
DB7=0;DB6=0;DB5=1;DB4=0;
nop;nop;nop;

E=0;
Delay(200);

E=1;nop;
DB7=0;DB6=0;DB5=1;DB4=0;
nop;nop;nop;
E=0;
Delay(5);

E=1;nop;
DB7=0;DB6=0;DB5=1;DB4=0;
nop;nop;nop;
E=0;//设置4位操作;

WriteLcdInstr(0x01);//清屏
WriteLcdInstr(0x28);//设置4位操作,1行显示,5x8
WriteLcdInstr(0x02);//光标归位
WriteLcdInstr(0x06);//AC自动加1,画面不动
WriteLcdInstr(0x0c);//显示开,光标、闪烁关
}

//-2--写指令函数
void WriteLcdInstr(uchar Temp)
{CheckLcdBusy();
RS=0;
RW=0;
E=0;nop;

E=1;nop;//写字节高四位
WriteLcdBit(Temp);
E=0;nop;

E=1;nop;//写字节低四位
WriteLcdBit(Temp<<4);
E=0;nop;
}

//-3--写数据函数
void WriteLcdData(uchar Temp)
{CheckLcdBusy();
RS=1;
RW=0;
E=0;nop;

E=1;nop;//写字节高四位
WriteLcdBit(Temp);
E=0;nop;

E=1;nop;//写字节低四位
WriteLcdBit(Temp<<4);
E=0;nop;
}

//-4--查忙函数
void CheckLcdBusy()
{uchar Temp,t;
DB7=1;DB6=1;DB5=1;DB4=1;
RW=1;
RS=0;nop;
E=0;nop;
do	{nop;
	E=1;nop;nop;
	Temp=PtCD;nop;nop;
	E=0;nop;nop;

	E=1;nop;nop;
	t=PtCD;nop;nop;
	E=0;nop;nop;

	Temp&=0x80;
	}while(Temp==0x80);
}

//-5--写数据到四位数据口
sbit DBt=ACC^7;
void WriteLcdBit(uchar t)
{ACC=t;
DB7=DBt;
ACC<<=1;
DB6=DBt;
ACC<<=1;
DB5=DBt;
ACC<<=1;
DB4=DBt;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?