51单片机玩转物联网基础篇06-LCD1602液晶显示器

2024-01-27 15:50

本文主要是介绍51单片机玩转物联网基础篇06-LCD1602液晶显示器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

本节我们开始学习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文件烧录到板子中,板子显示如下:
在这里插入图片描述

四、结语

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

源码获取:扫描下方二维码,关注公众号,回复"51单片机"即可

硬件获取:淘宝搜索店铺"小驿物联"。
在这里插入图片描述
一叶孤沙出品:一沙一世界,一叶一菩提

这篇关于51单片机玩转物联网基础篇06-LCD1602液晶显示器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/650735

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显