标题:
LCD1602在51单片机中的简单程序应用
[打印本页]
作者:
啊哈小明1234
时间:
2017-5-20 00:56
标题:
LCD1602在51单片机中的简单程序应用
/**
LCD1602基本显示 12345
**/
#include <reg52.h>
/**/
typedef unsigned char uchar;
typedef unsigned int uint;
sbit EN = P3^4;//使能信号
sbit RS = P3^5;//数据/命令选择端
sbit RW = P3^6;//读/写选择端
//判断液晶忙,如果忙则等待
void Read_Busy()
{
uchar busy;
P0 = 0xff;//复位P0
RS = 0;
RW = 1;
do
{
EN = 1;// RS = 0; RW = 1;EN = 1;读状态,输出P0=D0~D7状态字
busy = P0;//P0是啥?busy=0x80才跳出来
EN = 0;
}while(busy & 0x80);
}
//写LCD1602命令一个字节
void Write_Cmd(uchar cmd)
{
Read_Busy();//判断忙
RS = 0;
RW = 0;
P0 = cmd;//cmd是变量
EN = 1;//这是高脉冲?**写指令无输出
EN = 0;
}
//写一个字节数据
void Write_Dat(uchar dat)
{
Read_Busy();
RS = 1;
RW = 0;
P0 = dat;
EN = 1; //写数据,高脉冲。。。D0~D7=P0
EN = 0;
}
void main()
{
Write_Cmd(0x38);//设置16*2显示
Write_Cmd(0x0f);//开显示 显示光标,光标闪烁
Write_Cmd(0x01);//清屏
Write_Cmd(0x06);//地址指针移位命令
Write_Cmd(0x80 | 0x06);//显示地址
//80H按位与地址码,这里是从第六位之后显示
Write_Dat(1 + '0');
Write_Dat(2 + '0');
Write_Dat(3 + '0');
Write_Dat(4 + '0');
Write_Dat(5 + '0');
while(1);
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1