Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >51单片机LCD1602程序详解[通俗易懂]

51单片机LCD1602程序详解[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-13 01:26:44
发布于 2022-09-13 01:26:44
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

LCD1602 工业字符型液晶。1602是指LCD显示的内容为16X2,即可以显示两行,每行16个字符.

特殊接口说明 RS:寄存器选择输入端 RS=1:指向数据寄存器 RS=0:指向指令寄存器

RW:读写控制输入端 RW=0:写操作 RW=1:读操作

E:使能信号输入端 读操作时,高电平有效; 写操作时,下降沿有效;

程序编写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    #include<reg51.h>
    #include<intrins.h>  //其中有nop函数的定义

    /*对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。*/

    #define uchar unsigned char
    #define uint unsigned int

    sbit RS=P2^6;  //定义数据命令选择端
    sbit RW=P2^5;  //定义读写选择端
    sbit E=P2^7;   //定义使能端
    //注意:具体为哪一个IO口由你自己的接线来定,并不是一定要这样写!

    uchar text1[]="Welcome to";   //第一行要显示的字符
    uchar text2[]="Lime House";   //第二行要显示的字符

    void delay_ms(uint z)  //毫秒级延时函数
    {
       uint i,j;
       for(i=z;i>0;i--)
          for(j=110;j>0;j--);
    }

    //为什么要判忙?
    /*因为LCD1602控制芯片也是一个CPU,它在处理上位机发来的某些指令的时候,耗时较长。如复位命令,全屏清除命令等。另外,LCD1602的CPU速度较慢,上位机较快时,LCD1602CPU来不及完成上条命令,会对后续命令不予理睬,这样就造成了命令序列不能正确完整地到达LCD1602CPU,以至于显示不正常。*/

    uchar Lcd1602_ReadBusy()   //判断lcd1602是否处于忙的状态,即读忙
    {
       uchar temp;
       RS=0;
       RW=1;
       _nop_();
       P0=0xff;     //读某IO口数据前,先将该口置为1 

    /*原因:电路中存在的一个普遍的现象:高电平很容易被低电平拉低,而低电平一般不可能被高电平拉高。所以在读数据之前将单片机IO口拉高才不会影响原来数据线上的数据!*/

       _nop_();
       E=1;
       _nop_();
       temp=P0;   //读取此时lcd1602的状态字
       _nop_();
       E=0;
       return (temp&0x80);  //如果忙

       /*状态字为temp(8位2进制数)的最高位,最高位为1表示禁止读写,为0表示允许读写,即temp&0x80得1表示忙,得0表示不忙*/

    }

    /*在lcd1602的资料中,读写操作都有对应的时序图,想要理解lcd1602的具体工作流程还得认真研究时序图!*/

    void Lcd1602_WriteCom(uchar com)  //写命令
    {
       while(Lcd1602_ReadBusy());  //判忙
       RS=0;   //命令
       RW=0;   //写
       _nop_();
       P0=com;   //准备发送命令
       _nop_();
       E=1;      //由时序图知,使能端为高电平时才允许数据交换
       _nop_();
       _nop_();
       E=0;      //由时序图知,使能端在完成数据交换后要拉低
       _nop_();
       _nop_();   
    }

    void Lcd1602_WriteData(uchar dat)  //写数据
    {
       while(Lcd1602_ReadBusy());   //判忙
       RS=1;   //数据
       RW=0;   //写
       _nop_();
       P0=dat;
       _nop_();
       E=1;
       _nop_();
       _nop_();
       E=0;
       _nop_();
       _nop_();   
    }

    void Lcd1602_init()   //初始化函数
    {
       delay_ms(15);
       write_com(0x38);   //显示模式设置
       delay_ms(5);
       write_com(0x38);
       delay_ms(5);
       write_com(0x38);
       write_com(0x0c);  //显示开
       write_com(0x01);  //显示清屏
       write_com(0x06);  //显示光标
    }

    void main()
    {
       uchar i,j;
       Lcd1602_init();
       Lcd1602_WriteCom(0x80);   //0x80是第一行的第一个字符的地址
       for(i=0;i<10;i++)  
          Lcd1602_WriteData(text1[i]);   
       Lcd1602_WriteCom(0x80+0x40);   //0xc0是第二行的第一个字符的地址

       /*表示的方法有很多,可以用0xc0,0x80+0x40,0x80|0x40等等*/

       for(j=0;j<10;j++)
          Lcd1602_WriteData(text2[j]);
    }

其实,LCD1602还有很多很好玩的指令,比如让字符左移右移,大家可以好好看一看lcd1602资料中的相关指令,自己动手去实践一下,才会有更深刻的体会。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160119.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LCD1602
LCD1602是我们常用的一种显示屏,一直想写一些关于元器件的介绍和使用。今天就来从LCD1602开始。
跋扈洋
2021/02/02
1.1K0
LCD1602
(十四)51单片机——LCD1602实现滚动效果
目录 学习目标 成果展示  硬件知识 LCD1602介绍  引脚定义 内部结构 DDRAM 字模库 时序结构 指令集 操作流程 代码  总结  ---- 学习目标         今天我们要学习的是LCD1602液晶显示屏。首先,我们会编写显示各种数据的函数,比如显示字符串、十进制数、二进制数等等,之后我们会让LCD1602显示屏动起来,形成我们日常看到的广告牌的样子。 成果展示  https://live.csdn.net/v/embed/229030 LCD1602 硬件知识 LCD1602介绍 
小点点
2022/12/12
2.6K0
(十四)51单片机——LCD1602实现滚动效果
基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)
当前文章介绍基于51单片机和SHT30传感器设计的环境温度与湿度检测设备。设备采用IIC模拟时序通信协议,能够实时监测环境的温度和湿度,并将数据通过LCD显示屏显示出来;可以广泛应用于室内环境监测、气象观测、农业温室监测等领域。
DS小龙哥
2023/07/11
8160
基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)
8051单片机的LCD1602使用
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/80413153
zy010101
2019/05/25
2.3K0
4.11 51单片机-LCD1602显示屏
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。
DS小龙哥
2022/01/10
7870
4.11 51单片机-LCD1602显示屏
C51单片机LCD1602驱动程序
LCD1602字符型液晶(每行显示16个字符,一共可以显示两行)——一种专门用来显示字母、数字、符号的点阵型液晶模块。它由若干个5×7或者5×10的点阵字符组成,每个点阵字符位都可以用来显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。
全栈程序员站长
2022/09/13
8540
C51单片机LCD1602驱动程序
山东大学单片机原理与应用实验 3.8 ADC0808/9信号采集实验
利用LCD1602和AD0808实现简单的交流信号过零检测与频率分析。要求信号幅度变化时(满量程的5%—95%),不影响检测到结果。频率检测的结果通过LCD1602的第一行显示出来,信号过零时,能够通过P2.6输出一个脉冲宽度为5μs的脉冲信号。
timerring
2022/07/20
9660
山东大学单片机原理与应用实验 3.8 ADC0808/9信号采集实验
51单片机+DS1302设计一个电子钟(LCD1602显示时间)
电子钟是一种能够准确显示时间的设备,广泛应用于家庭、办公场所和公共场所,为人们提供了方便和准确的时间信息。本项目设计一个基于51单片机的电子钟,使用DS1302作为RTC时钟芯片,LCD1602作为显示屏,并通过串口方式连接上位机进行时间设置和闹钟设置。
DS小龙哥
2023/11/15
2K1
51单片机+DS1302设计一个电子钟(LCD1602显示时间)
【常用传感器】LCD1602液晶工作原理详解及例程代码[通俗易懂]
LCD ( Liquid Crystal Display 的简称)液晶显示器。能够同时显示16×2,32个字符,是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
全栈程序员站长
2022/07/28
5.1K0
【常用传感器】LCD1602液晶工作原理详解及例程代码[通俗易懂]
单片机ds1302时钟程序(51单片机液晶显示程序)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129766.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/29
1.4K1
单片机ds1302时钟程序(51单片机液晶显示程序)
接口与通信-LCD1602显示
① 当我们要写指令字,设置LCD1602 的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。
会洗碗的CV工程师
2024/02/17
5300
接口与通信-LCD1602显示
LCD1602为什么不能一次点亮?
LCD 1602 是一种点阵式的字符型液晶屏,它能够同时显示16 x 02即32个字符。LCD 1602 液晶显示屏的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形。1602是指显示的内容为16 x 2,即同时可以显示两行,每行16个字符,但只能显示字符和数字。LCD 1602是通过 HD44780 液晶控制芯片控制的。控制驱动主电路及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法基本都是一样的。
单片机技术宅
2022/11/22
7470
LCD1602为什么不能一次点亮?
设计分享|基于单片机LCD数字测速仪的设计
51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。
电子工程师成长日记
2022/07/27
4510
设计分享|基于单片机LCD数字测速仪的设计
LCD1602液晶使用介绍–(完整版)
所谓的1602是指显示的时候,有2行内容每行有16个字符。其实这类字符型产品都可以这样解读比如:lcd12864就是有128行64列。目前市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理大多相同。因此基于HD44780写的液晶控制程序可以很方便适用于市面上大多数字符型液晶产品。
全栈程序员站长
2022/09/13
1.4K0
LCD1602液晶使用介绍–(完整版)
lcd开机流程图_LCD1602程序代码及显示流程图
前些天弄了最小系统板后就想着学习1602的显示程序,可惜坛子里的或网上的,都没有简单的1602显示程序,无柰在网上下载了一段经过反复修改测试,终于有了下面一段代码:
全栈程序员站长
2022/09/13
1.3K0
lcd开机流程图_LCD1602程序代码及显示流程图
51单片机系列有哪些类型_51单片机1602液晶显示原理
Lcd液晶屏幕带有背光显示,可选择蓝光白光黄光三种背光颜色的屏幕,它更具有美光性,在实际生活中有广泛的应用。 实物图
全栈程序员站长
2022/09/30
8000
51单片机系列有哪些类型_51单片机1602液晶显示原理
1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程
delay_n40us(1);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。
全栈程序员站长
2022/09/13
1.3K0
1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程
DS3231高精度时钟,LCD1602显示,QXmini151版本「建议收藏」
1.时钟方案设计及选择:目前有DS3231、DS302、DS12C887三种时钟芯片。本次设计选择DS3231,
全栈程序员站长
2022/07/29
1.8K0
DS3231高精度时钟,LCD1602显示,QXmini151版本「建议收藏」
基于51单片机的 智能路灯系统 纯原创
2024/10/09
1020
基于51单片机的 智能路灯系统 纯原创
lcd1602使用手册_lcd1602的rs,rw和e三个引脚的功能
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
全栈程序员站长
2022/08/02
8.1K0
lcd1602使用手册_lcd1602的rs,rw和e三个引脚的功能
推荐阅读
相关推荐
LCD1602
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验