在刚开始接触液晶的时候,很多人会选择液晶模块,而1602液晶模块是一种选择,下面推荐我第一次使用液晶的时候,所用的一块模块:
16*2液晶显示模块
外形尺寸:80*36mm
有效显示尺寸:57.7(W)Χ9.4(H)
外形尺寸:8.0×3.6CM
背光:白色LED
控制器:HD44780
引脚定义
1– Vss 电源
2–Vcc 电源+5V
3–Vo 对比度调节
4–RS 寄存器选择 ,H = 数据选择,L = 指令选择
5–R/W 读写信号
6–E 致能信号
7~14– DB0 ~ DB7 数据线
15–A LED+
16–K LED-
下面是它与51单片机的底层驱动代码:
#include “intrins.h”
sbit rs=0x85;//与1602控制口通信的端口
sbit rw=0x86;
sbit ep=0x87;
//液晶显示数据缓存
unsigned char dis1[17]={“03-11 19:57:00 2\0”};
unsigned char dis2[17]={“NOW TEMP: 015.0 \0”};
void lcd_delay(unsigned char ms)
{
unsigned char i;
while(ms–)
{
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
bit lcd_bz()
{
bit result;
rs=0;
rw=1;
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
result=(bit)(P2&0x80);
ep=0;
return result;
}
lcd_wcmd(unsigned char cmd)
{
while(lcd_bz());
rs=0;
rw=0;
ep=0;
_nop_();
_nop_();
P2=cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
lcd_pos(unsigned char pos)//设定显示位置
{
lcd_wcmd(pos|0x80);
}
lcd_wdat(unsigned char dat)
{
while(lcd_bz());
rs=1;
rw=0;
ep=0;
P2=dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
lcd_init()//模块初始化,不显示光标
{
lcd_wcmd(0x38);
lcd_delay(1);
lcd_wcmd(0x0c);
lcd_delay(1);
lcd_wcmd(0x06);
lcd_delay(1);
lcd_wcmd(0x01);
lcd_delay(1);
}