/*****************************************************************************************************************************************
*Author:JYW
*Time:2019_02_12
*Describe:LetAllLinesOfCodeSpeak
//******************************************************
#include<reg52.h>
#define Lcd1602_DB P0
sbit Lcd1602_RS = P1^0;
sbit Lcd1602_RW = P1^1;
sbit Lcd1602_E = P1^5;
/*等待1602准备好即STA7为0*/
void LcdYorN()
{
unsigned char buf;
Lcd1602_DB = 0x00;
Lcd1602_RS = 0;
Lcd1602_RW = 1;
do{
Lcd1602_E = 1;
buf = Lcd1602_DB;
Lcd1602_E = 0;
}while(buf & 0x80);
}
//向1602液晶中写入命令
void LcdWriteCmd(unsigned char cmd)
{
LcdYorN();
Lcd1602_RS = 0;
Lcd1602_RW= 0;
Lcd1602_DB= cmd;
Lcd1602_E= 1;//高脉冲
Lcd1602_E= 0;
}
//向1602中写入数据
void LcdWriteDat(unsigned char dat)
{
LcdYorN();
Lcd1602_RS = 1;
Lcd1602_RW= 0;
Lcd1602_DB= dat;
Lcd1602_E=1;
Lcd1602_E=0;
}
//设置显示的位置((一个位置)(x,y)对应坐标
void LcdStartAdr(unsigned char x,unsigned char y)
{
unsigned char addr;
if(y == 0)
{ addr = 0x00 + x;}
else
{ addr = 0x40+x;}
LcdWriteCmd(addr | 0x80);
//设置地址;
}
//(x,y)指的是显示的开始位置
//str字符串指针,len显示的长度
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str, unsigned char len)
{
LcdStartAdr(x, y);
while(len--)
{
LcdWriteDat(*str++);
//先取数值然后地址加1;
}
}
//1602初始化
void LcdInit()
{
LcdWriteCmd(0x38);
LcdWriteCmd(0x0C);//开显示关光标
LcdWriteCmd(0x06);//文字不动地址加1
LcdWriteCmd(0x01);//清屏
}
**************************************************************************************************************************************/