跟我学51单片机(七)——LCD1602液晶显示模块
如图2 所示,1602 液晶的控制管脚都接到了单片机管脚上,前文提到,在功能设置指令中可以将液晶设为8 位数据接口和4 位数据接口,图中采用的是8位的数据接口,当然也可以当四位数据接口来用。液晶电源正端接5V,负端接地,背光正端接5V,负端接地。此外,液晶的偏压管脚(VO)接到一个电位器的中间抽头,电位器的两端分别接5V 和地,这样就可通过调节电位器来实现对1602 液晶对比度的调节。经实验测试,笔者手里的1602 液晶的偏压管脚的电压调节到0.3~0.4V 时对比度效果最好,也可以将该管脚通过一个1k 的电阻下拉到地。读者可以自己实践测试。
图2 1602液晶与单片机的连接图
三、程序设计
在对1602 液晶设计程序前,我们先看下其读写时序图,从图3 和图4 可以看出,1602 液晶的读写操作时序可总结成表4 所示。
图3 1602液晶读操作的时序图
图4 1602液晶写操作的时序图
对照时序,我们可以很容易的写出驱动液晶的各个子函数,如下所示。
写命令函数:向寄存器写入控制字
参数:command - 控制字
void LCD_en_command(unsigned char command)
{
LCD_delay(); // 延时一段时间
LCD1602_RW=LOW; // 写命令时,R/W 为低电平
LCD1602_RS=LOW; // 写入指令,RS 为低电平
LCD1602_EN=HIGH; // 置高使能线
LCDIO=command; // 接收命令字并送到数据总线上
LCD1602_EN=LOW; // 在使能线的下降沿写入数据
}
写数据函数:向寄存器写入数据
参数:dat - 待要显示数据
void LCD_en_dat(unsigned char dat)
{
LCD_delay(); // 延时一段时间
LCD1602_RW=LOW; // 写指令时,R/W 为低电平
LCD1602_RS=LOW; // 写入数据,RS 为高电平
LCD1602_EN=HIGH; // 置高使能线
LCDIO=dat; // 接收数据并送到数据总线上
LCD1602_EN=LOW; // 在使能线的下降沿写入数据
}
红外遥控器相关文章:红外遥控器原理
评论