赞
踩
1.读状态操作:状态字的最高位的BF为忙标志位,1表示LCD正在忙,0表示不忙。通过判断最高位BF的0、1状态,就可以知道LCD当前是否处于忙状态,如果LCD一直处于忙状态,则继续查询等待,否则进行下面的操作。查询忙状态程序段如下:
void LcdWaitReady()
{
unsigned char sta;
LCD1602_DB =0xFF;
LCD1602_RS =0;
LCD1602_RW =1;
do {
LCD1602_E= 1;
sta = LCD1602_DB; //读取状态字
LCD1602_E = 0;
} while (sta & 0x80); //bit7等于1表示液晶正忙,重复检测直到其等于0为止
}
2.写指令操作:RS=0;RW=0;D0~D7=指令码;E=高脉冲,首先写数据的时候,E引脚是低电平状态,然后数据准备好之后,E从低电平变为高电平,然后再从高电平变为低电平,出现一个下降沿,1602液晶内部一旦检测到这个下降沿后,并且检测到RS=0;RW=0;就马上读取D0~D7的指令码,完成单片机写1602指令过程。具体代码如下:
void LcdWriteCmd(unsigned char cmd)
{
LcdWaitReady();
LCD1602_RS =0;
LCD1602_RW =0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}
2.写数据操作:RS=1;RW=0;D0~D7=数据;E=高脉冲,操作方式类似写指令,具体代码如下:
void LcdWriteDat(unsigned char dat)
{
LcdWaitReady();
LCD1602_RS =1;
LCD1602_RW =0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}
3.设置显示位置:设置显示RAM起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标,在读写数据之前要先设置好地址,然后进行数据的读写操作。
void LcdSetCursor(unsigned char x, unsigned char y)
{
unsigned char addr;
if (y ==0) //由输入的屏幕坐标计算显示RAM的地址
addr = 0x00 + x; //第一行字符地址从0x00起始
else
addr = 0x40 + x; //第二行字符地址从0x40起始
LcdWriteCmd(addr | 0x80); //设置RAM地址
}
4.LCD1602初始化函数:1602液晶显示屏在使用的时候要先初始化,1602初始化内容主要包括显示模式设置、显示开关光标以及光标设置指令、清屏指令等。具体实现如下:
/* 初始化1602液晶 */
void InitLcd1602()
{
LcdWriteCmd(0x38); //16*2显示,5*7点阵,8位数据接口
LcdWriteCmd(0x0C); //显示器开,光标关闭
LcdWriteCmd(0x06); //文字不动,地址自动+1
LcdWriteCmd(0x01); //清屏
}
5.字符串显示函数:在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针 。
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)
{
LcdSetCursor(x, y); //设置起始地址
while (*str != '\0') //连续写入字符串数据,直到检测到结束符
{
LcdWriteDat(*str++); //先取str指向的数据,然后str自加1
}
}
以上就1602操作的相关函数,下期将用1602实现基本的字符串显示功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。