任务实施
一、任务分析
根据电路分析可知:单片机的P0端口作为LCD1602的数据,LCD1602控制端口RS、RW、EN分别连单片机的P2.0、P2.1、P2.2这3个端口。
LCD1602驱动函数如下:
●判忙函数void busy()
该函数用于读取LCD1602的状态,“忙”就继续读取状态,“闲”就执行后面的命令。
●写命令函数 void Write_cmd()
该函数用于向LCD1602发送命令。
●写数据函数 void Write_data()
该函数用于向LCD1602写入数据。
●初始化程序void Lcd_init()
该函数用于初始化LCD1602。
设置地址指针、数据指针:
“I Like LCD”字符在LCD1602第一行中间显示,所以数据地址为:0x80+0x03。
二、程序设计
程序执行流程图如图7-1-5所示。
参考程序:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define DATA P0
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit BF=P0^7; //用于判忙
void delayms (uint x) //延时函数(https://www.daowen.com)
{

图7-1-5 程序流程图



三、电路仿真
1.绘制电路图
打开Proteus软件,建立“LCD1602”文件,放置元器件,所需元件见表7-1-3。
表7-1-3 元件清单

把所需元件放置完后,连接电路,完成后的电路图如图7-1-6所示。

图7-1-6 绘制电路图
2.编写程序
打开Keil软件,新建“LCD1602”工程文件,新建“1602.c”文件,编写程序,并生成hex文件。编写完成后的部分程序如图7-1-7所示。
3.电路仿真
双击“AT89C51”元件,在“Program File”栏中选择已经生成的“1602.hex”文件,导入单片机中,单击“仿真”按钮进行电路程序仿真。仿真结果如图7-1-8所示。
仿真结果显示:1602显示“I Like LCD”,同时在单片机、显示屏和排阻的每个引脚旁边会出现一个小方块,红色的方块表示高电平,蓝色的方块表示低电平。通过方块颜色的变化可以很直观地知道每个引脚电平的变化。

仿真视频

图7-1-7 编写程序

图7-1-8 仿真结果