LCD1602最好最详细的中文资料 下载本文

内容发布更新时间 : 2024/5/15 5:12:05星期一 下面是文章的全部内容请认真阅读。

图10-58 字符代码与图形对应图

10.8.2.5 1602LCD的一般初始化(复位)过程 延时15mS

写指令38H(不检测忙信号) 延时5mS

写指令38H(不检测忙信号) 延时5mS

写指令38H(不检测忙信号)

以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏

写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置 10.8.3 1602LCD的软硬件设计实例

在1602LCD第一行显示网站名:www.hificat.com在第二行显示联系电话:0571-85956028。实验前应先将显示切换开关切换到LCD工作状态。

图10-59 1602LCD实验演示图

10.8.3.1 硬件原理图

1602液晶显示模块可以和单片机AT89C51直接接口,电路如图10-60所示。

图10-60 硬件原理图

10.8.3.2 程序流程图

图10-61 软件流程图

10.8.3.3 软件代码

#include #include sbit rs= P2^0; sbit rw = P2^1; sbit ep = P2^2;

unsigned char code dis1[] = {%unsigned char code dis2[] = {\void 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)(P0 & 0x80); ep = 0;

return result; }

void lcd_wcmd(unsigned char cmd) {

while(lcd_bz());//判断LCD是否忙碌 rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }

void lcd_pos(unsigned char pos) {

lcd_wcmd(pos | 0x80); }

void lcd_wdat(unsigned char dat) {

while(lcd_bz());//判断LCD是否忙碌