找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3979|回复: 0
收起左侧

LCD1602在51单片机中的简单程序应用

[复制链接]
ID:202738 发表于 2017-5-20 00:56 | 显示全部楼层 |阅读模式
/**
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);
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表