标题: 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