前言

本节我们开始学习LCD1602,LCD1602是字符型液晶显示屏,在实际项目中应用非常广泛,学完本节就可以逐步开发一些好玩的应用了。

一、基础知识

1.LCD1602简介

LCD1602是字符型液晶显示模块,专门用于显示字母、数字、符号等点阵式LCD,顾名思义,LCD1602一共可以显示两行,每一行能够显示16个字符数据,采用5V供电,具有低功耗、长寿面、搞可靠性等特性,实物图如下:

(1) 引脚说明

在 LCD1602 内部含有 80 个字节的 DDRAM,它是用来寄存显示字符的。其地址

和屏幕的对应关系如下

从上图可知,LCD1602中80个字节并不是所有的都用来显示数据,只有第一行的00~0F,第二行的40~4F用来显示,其他地址只能用来存储

(2) 指令表

(3) 常用指令说明

  • 清屏指令

功能:清楚屏幕,置AC为0

  • 模式设置指令

功能:光标和显示模式设置

设定每次输入1位数据后光标的移位方向,并且设定每次写入后的字符是否移动。

I/D(光标移动方向): 1:右移 0:左移

S(显示屏整体是否移动): 1 :有效右移 0:无效

  • 显示开关控制指令

功能:控制显示器开/关,光标开/关,光标是否闪烁

D:1,开启显示功能; 0,关闭显示功能

C:1,有光标;0,无光标

B:1,光标闪烁;0,光标不闪烁

  • 功能设定指令

功能:设置数据总线位数、显示行数、字型

DL:1,数据总线为8位; 0,数据总线为4位

N:1,显示2行;0,显示1行

F:1,5X7点阵;0,5X10点阵

2.硬件设计

打开硬件设计电路,LCD相关电路如下

注意:R7控制LCD1602驱动电压,可调,一般设计需要10K可调电阻,也可以字型调试OK后,焊接固定电阻。

二、实例

1.创建工程

将上一节工程复制出来,并修改名字为05-lcd1602

2.修改程序

/*------------------------------------------------------
*店铺网址:https://shop321633213.taobao.com/?spm=a1z10.3-c.0.0.33816af5iLgN2F
*适用于A08开发板
*实验现象:驱动LCD1602
*QQ群:906015840
* ------------------------------------------------------*/ #include<reg51.h> //头文件
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table_xiaoyi[]="XIAOYI IOT";         //
uchar code table_xiaoyi_welcome[]="Welcome!";
sbit LCD_EN=P3^7;   //液晶使能信号
sbit LCD_RS=P3^5;   //数据/命令选择端
sbit LCD_WR=P3^6;void delay_ms(uint ms)
{uint x,y;for(x=ms;x>0;x--)for(y=110;y>0;y--);
}void write_com(uchar com) //命令
{LCD_RS=0;        //选择写命令P0=com;delay_ms(5);LCD_EN=1;        //使能信号LCD_EN=0;         //关闭使能
}void write_data(uchar date) //数据
{LCD_RS=1;        //选择写数据P0=date;delay_ms(5);LCD_EN=1;LCD_EN=0;
}void init()
{LCD_EN=0;write_com(0x38);         //00111000        设置16*2显示,5*7点阵 8为数据接口write_com(0x0c);   //00001100        设置开显示,不显示光标write_com(0x06);         // 00000110        写一个字符后地址指针加 1write_com(0x01);         //00000001        显示清0,数据指针清零
}void main(void) //主函数
{uchar i;LCD_WR=0;init();// 写第一行数据write_com(0x80); for(i=0;i<10;i++){write_data(table_xiaoyi[i]);delay_ms(5);}// 写第二行数据write_com(0x80+0x40);        for(i=0;i<8;i++){write_data(table_xiaoyi_welcome[i]);delay_ms(5);}while(1);
}

程序中将字符串"XIAOYI IOT"显示在第一行,"Welcome"显示在第二行。

三、运行

将上述程序生成的hex文件烧录到板子中,板子显示如下:

硬件获取:

51单片机物联网开发板 STC89C52RC实验板支持连云​item.taobao.com

一叶孤沙出品:一沙一世界,一叶一菩提

51单片机怎么显示当前时间_51单片机玩转物联网基础篇06-LCD1602液晶显示器相关推荐

  1. 51单片机怎么显示当前时间_51单片机LM016L液晶显示实例

    先上仿真图,图比较简单,一个51单片机最小系统,加上一个LM016L液晶显示器,需要注意的是,实际的LM016L芯片内部有上拉电阻,但是仿真中是没有的,如果用P0口传输数据的话,需要给P0口接上拉电阻 ...

  2. 51单片机怎么显示当前时间_51单片机时钟电路图怎么设计?这7个时钟汇聚了所有,看看...

    01 在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式.根据硬件电路的不同,单片机的时 ...

  3. 51单片机怎么显示当前时间_51单片机数码管静态显示和动态显示原理及实验

    数码管 多位数码管,即是两个或两个以上单个数码管并列集中在一起形成一体的数码管.当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一 ...

  4. 51单片机怎么显示当前时间_单片机初学者必看

    写给初学者的一些话 本文原创,仅代表我搞单片机的一些想法,有不妥之处,不承担任何责任. 第一个问题,讲一下初学者到底学习那个系列单片机. 51.AVR.430.ARM(包括嵌入操作系统).FPGA当前 ...

  5. 51单片机玩转物联网基础篇05-控制继电器

    前言 本节我们开始学习如何使用51单片机控制继电器,有了继电器,我们可以使用单片机输出的低电平控制高电平期间工作,比如继电器接到220V用电器上,可通过单片机智能控制用电器. 一.基础知识 1.继电器 ...

  6. 51单片机如何跳出wile循环_51单片机(九)汇编指令

    1 往期链接 Chenglin Li:51单片机(一)Visual Basic串口通信程序 Chenglin Li:51单片机(二)汇编语言设计流水灯 Chenglin Li:51单片机(三)汇编语言 ...

  7. 51单片机怎么显示当前时间_(进阶篇)51单片机之按键控制蜂鸣器、数码管、按键值移位显示...

    一.实操演示- 按键控制蜂鸣器 1.图文详细 独立按键硬件电路 蜂鸣器硬件电路 2.连接方式: J20的第3号引脚连接到J7引脚,即P15连接J7. J29的第7.8号引脚连接到JP1的第1.2号引脚 ...

  8. 51单片机怎么显示当前时间_电子设计模块项目专题:史上讲解最全的51单片机设计万年历项目①

    1.设计任务书: 设计任务书 学生姓名: 班级: 学号: 题目:1602A液晶显示万年历设计 一.设计任务:本设计由数据显示模块.温度采集模块.时间处理模块和调整设置模块四个模块组成.系统以AT89S ...

  9. 51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块

    (用LCD1602做个温度显示装置) https://zhuanlan.zhihu.com/p/145666965​zhuanlan.zhihu.com LCD1602液晶显示模块 原理部分 引脚说明 ...

最新文章

  1. 定时登录下载sftp服务器上的某些有规则的文件
  2. BZOJ1217: [HNOI2003]消防局的设立
  3. 【WIN10】程序內文件讀取與保存
  4. 关于GCD多任务处理
  5. C# addin 开发心得记录
  6. 页面上有两个元素id相同,js中如何取值
  7. ebs r12多少钱 实施oracle_甘肃室外儿童游乐设施报价,室外儿童游乐设施多少钱
  8. 小猿圈之java文件重命名
  9. Mysql 新增用户可访问指定数据库所有权限
  10. 参考的datalist分页helper
  11. 贵阳学python_python学习类
  12. Git 分支 - 分支的新建
  13. oracle sql developer 执行sql语句,如何使用SQL Developer执行SQL语句(上)
  14. PHP 处理换行问题
  15. PHP函数array_intersect_ukey
  16. 调用接口获得地区,再根据地区判断对应编号
  17. 关于怎么计算某一年的第一天为周几的问题
  18. 【滤波专题-第1篇】数字滤波器快速入门——FIR有限冲激响应滤波讲解
  19. 易语言新手入门教程第十五课 - QQ自动登录器第三部分
  20. SQL Server数据库的创建方法

热门文章

  1. bind() c语言,c/c++ 标准库 bind 函数详解
  2. hystrix threadpool coresize_Hystrix断路器 - 求知若渴的蜗牛
  3. 破坏计算机信息系统功能罪,破坏计算机信息系统罪
  4. nginx中的location指令
  5. Oracle GoldenGate简介
  6. JDK源码解析之 java.lang.Long
  7. javascript编译压缩
  8. javaweb中mysql数据库的回滚操作代码
  9. Android之个性化ListView实现
  10. android开源库收集