51单片机与LCD1602接口电路与程序

51单片机与LCD1602接口电路与程序

一、工作方式:间接工作方式。

二、实现功能:显示“Hope the epidemic will pass soon”。

三、仿真电路图:
51单片机与LCD1602接口电路与程序

四、程序源码:
#include<reg52.h>

#define LCD1602_DB P0
sbit LCD1602_RS=P1^0;
sbit LCD1602_RW=P1^1;
sbit LCD1602_E=P1^5;

void InitLcd1602();
void LcdWriteCmd(unsigned char cmd);
void LcdWaitReady();
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str);
void LcdWriteDat(unsigned char dat);
void LcdSetCursor(unsigned char x,unsigned char y);

void main()
{
unsigned char str[]=“Hope the eqidemic”;//显示的字符串

InitLcd1602();//液晶初始化
LcdShowStr(0,0,str);//第一行显示
LcdShowStr(1,1,“will pass soon”);//第二行显示
while(1);
}

void InitLcd1602()//初始化函数
{
LcdWriteCmd(0x38);//显示模式设置
LcdWriteCmd(0x0c);//开显示,不显示光标
LcdWriteCmd(0x06);//指针加一,整屏不移动
LcdWriteCmd(0x01);//指针清零,显示清零
}

void LcdWriteCmd(unsigned char cmd)//写入函数
{
LcdWaitReady();//忙位检测
//写指令
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DB=cmd;
LCD1602_E=1;
LCD1602_E=0;
}

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);//判断sta最高位是否为0
}

void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str)//显示函数
{
LcdSetCursor(x,y);
while(*str!=’\0’)
{
LcdWriteDat(*str++);
}
}

void LcdWriteDat(unsigned char dat)
{
LcdWaitReady();
//写数据
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DB=dat;
LCD1602_E=1;
LCD1602_E=0;
}

void LcdSetCursor(unsigned char x,unsigned char y)//字符显示函数
{
unsigned char addr;
if(y==0)
addr=0x00+x;
else
addr=0x40+x;
LcdWriteCmd(addr|0x80);
}

五、遇到的问题:

1、Proteus 8中网络标号怎么添加?(两个元器件之间不画线,可以通过引脚的网络标号来连接)

(1) 首先,将一个引脚引出较短的引线,再在下一个引脚处双击,则该引脚上会自动画出相同的引线。
51单片机与LCD1602接口电路与程序

(2)点击工具栏左侧的‘LBL’选项,然后再按‘a’键,会弹出对话框。(若按不出来,试换成大写)

‘LBL’的选项位置:
51单片机与LCD1602接口电路与程序

弹出的对话框:
51单片机与LCD1602接口电路与程序

(3)将String中的内容改为:net=××#(例:net=P0#),其中‘#’表示变化的内容,count代表初始值,increment代表增量。
51单片机与LCD1602接口电路与程序

(4)将鼠标移到要添加标签的 引脚处,等鼠标变成小手,且旁边出现方框时单击左键,标号添加成功。

单击左键时图片:
51单片机与LCD1602接口电路与程序

添加后的图片:
51单片机与LCD1602接口电路与程序

2、复制keil4中的程序到word时,注释出现乱码?

解决方法:

(1)在菜单栏中选择‘Edit’选项。
51单片机与LCD1602接口电路与程序

(2)在’Edit’选项下拉菜单中点击’Configuration’选项。
51单片机与LCD1602接口电路与程序

(3)在’Configuration’选项对话框中有ENCODING复选框,在里面设置Chinese GB231,点击OK。
51单片机与LCD1602接口电路与程序