51单片机-LCD液晶显示

目录

前言:

一. LCD1602模块简介

二. 代码功能实现

三.总结


前言:

本文主要是51单片机的LCD液晶显示,使用的是LCD1602.下面是详细介绍和完整代码,欢迎大家的点赞,评论和关注.感谢.

一. LCD1602模块简介

LCD1602 模块具有以下特点:

显示特点

  • 可以显示两行每行 16 个字符。
  • 能清晰地显示字母、数字和一些简单符号。

优点

  • 成本相对较低。
  • 显示内容直观,易于理解。

基本构成

  • 液晶显示屏。
  • 控制电路。

接口类型

  • 常见的有并行接口和串行接口。

工作原理

  • 通过向特定引脚发送指令和数据来控制显示内容。

应用场景

  • 各种小型电子设备的信息显示,如计算器、小型仪器仪表等。
  • 智能家居设备的简单状态显示。

使用注意事项

  • 要注意引脚的正确连接。
  • 按照规格书正确设置初始化参数。
  • 避免在极端温度和湿度环境下使用。

LCD1602 模块因其简单易用且能满足基本的字符显示需求,在很多电子产品中得到了广泛应用。

        引脚:VSS为电源地GND;VDD为电源正极5V;RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器;R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当RS和R/W共同 为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当 RS为高电平R/W为低电平时可以写入数据;E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;D0~D7为8位双向数据线;

二. 代码功能实现

lcd.h

主要是初始化,和写入数据,写入命令

#include "lcd.h"void Lcd1602_Delay1ms(uint c)   //误差 0us
{uchar a,b;for (; c>0; c--){for (b=199;b>0;b--){for(a=1;a>0;a--);}      }}void LcdWriteCom(uchar com)	  //写入命令
{LCD1602_E = 0;     //使能LCD1602_RS = 0;	   //选择发送命令LCD1602_RW = 0;	   //选择写入LCD1602_DATAPINS = com;     //放入命令Lcd1602_Delay1ms(1);		//等待数据稳定LCD1602_E = 1;	          //写入时序Lcd1602_Delay1ms(5);	  //保持时间LCD1602_E = 0;
}void LcdWriteData(uchar dat)			//写入数据
{LCD1602_E = 0;	//使能清零LCD1602_RS = 1;	//选择输入数据LCD1602_RW = 0;	//选择写入LCD1602_DATAPINS = dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E = 1;   //写入时序Lcd1602_Delay1ms(5);   //保持时间LCD1602_E = 0;
}void LcdInit()			
{LcdWriteCom(0x38);  //开显示LcdWriteCom(0x0c);  //开显示不显示光标LcdWriteCom(0x06);  //写一个指针加1LcdWriteCom(0x01);  //清屏LcdWriteCom(0xC0);  //设置数据指针起点
}

lcd.h

#ifndef __LCD_H_
#define __LCD_H_#include<reg52.h>//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint 
#define uint unsigned int
#endif#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^6;
sbit LCD1602_RS=P2^5;void Lcd1602_Delay1ms(uint c); void LcdWriteCom(uchar com);void LcdWriteData(uchar dat);void LcdInit();						  #endif

main.c

封装要输出的字符

u8 Disp[]=" hello work!     ";
u8 Disp2[]=" 2024-05-20     ";


#include "reg52.h"			 
#include "lcd.h"typedef unsigned int u16;	  
typedef unsigned char u8;u8 Disp[]=" hello work!     ";
u8 Disp2[]=" 2024-05-20     ";void main(void)
{u8 i,j;LcdInit();LcdWriteCom(0x80);  //设置数据指针起点for(i=0;i<16;i++){LcdWriteData(Disp[i]);	}LcdWriteCom(0xC0);  //设置数据指针起点for(j=0;j<16;j++){LcdWriteData(Disp2[j]);	}	while(1);				
}

三.总结

以下是关于 51 单片机的 LCD 液晶显示的总结:

优点

  • 可以直观地显示各种信息,如字符、数字、图形等。
  • 提供清晰、稳定的显示效果。
  • 相对容易控制和编程。

基本原理

  • 通过控制单片机的引脚与 LCD 模块进行通信。
  • 发送指令和数据来配置显示模式、显示内容等。

主要步骤

  • 初始化 LCD 模块,包括设置工作模式、显示开关等。
  • 编写代码向 LCD 写入要显示的数据或指令。
  • 根据需要不断更新显示内容。

常见应用

  • 仪器仪表的显示界面。
  • 简单的人机交互界面。
  • 各种数据监测和显示系统。

注意事项

  • 要正确连接单片机和 LCD 模块的引脚。
  • 注意指令和数据的传输格式和时序要求。
  • 考虑显示内容的刷新频率以保证良好的视觉效果。

总之,51 单片机结合 LCD 液晶显示为各种嵌入式应用提供了一种有效的信息展示方式,在很多项目中都有广泛应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/24289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 将null转0 ifnull() coalesce()

做统计报表的时候&#xff0c;有时候不希望查出来的值是null&#xff0c;因为在代码中需要做大量的判空&#xff0c;最后转换成0来处理。既然如此&#xff0c;那在sql中查出来就是0&#xff0c;就不用为空而去判空了。 1.IFNULL() ifnull()只能放2个值。 select IFNULL(null,0…

[240608] Zig 发布 v0.13.0 |AMD 新处理器不支持 Win 10 |DuckDuckgo 发布AI匿名聊天服务

目录 Zig 发布 0.13.0 版本AMD 下一代锐龙处理器不支持 Windows 10DuckDuckgo 发布 AI 匿名聊天服务 Zig 发布 0.13.0 版本 Zig 发布 0.13.0 版本&#xff0c;此次发布的主要目的是升级 zig 工具链&#xff0c;发布重点如下&#xff1a; 工具链升级&#xff1a; LLVM&#xf…

DevOps的原理及应用详解(六)

本系列文章简介&#xff1a; 在当今快速变化的商业环境中&#xff0c;企业对于软件交付的速度、质量和安全性要求日益提高。传统的软件开发和运维模式已经难以满足这些需求&#xff0c;因此&#xff0c;DevOps&#xff08;Development和Operations的组合&#xff09;应运而生&a…

企业建站响应式网站建设平台版源码系统 海量模版可选择 带完整的安装代码以及搭建教程

系统概述 企业建站响应式网站建设平台版源码系统是一款集创新性、实用性和便捷性于一体的建站解决方案。它旨在为用户提供一站式的网站建设服务&#xff0c;无论你是新手还是经验丰富的开发者&#xff0c;都能通过该系统轻松实现网站的构建与部署。 该系统采用先进的技术架构…

单链表复习 (C语言版)

目录 一.顺序表与链表的区别 二.链表概念 三.单链表 1.单链表的开始与初始化 2.单链表的打印 3.单链表的尾插 重难点&#xff1a;单链表实现时的指针详解 4.单链表的头插 5.单链表的尾删 6.单链表的头删 小结&#xff1a; 7.单链表的查找 8.在指定位置前插入数据 …

mingw64,clang,gcc

MinGW-w64、Clang 和 GCC 都是编译器&#xff0c;但它们在功能和设计上有一些区别&#xff1a; MinGW-w64 是一个在 Windows 平台上的开发工具集&#xff0c;它提供了一组 GNU 工具和库&#xff0c;可以用于编译和构建本地的 Windows 应用程序。MinGW-w64 的主要目标是提供类似…

GitHub工程获取第三方PR操作

GitHub工程获取第三方PR操作 1. 源由2. 获取第三方PRStep 1&#xff1a;安装ghStep 2&#xff1a;获取个人TokenStep 3&#xff1a;通过git协议获取代码Step 4&#xff1a;获取第三方PR分支 3. 总结 1. 源由 通常来说&#xff0c;GitHub上通常有三种场景&#xff1a; 工程管理…

STM32 UART 错误代码 HAL_UART_ERROR_PE

HAL_UART_ERROR_PE 是STM32 HAL库&#xff08;硬件抽象层库&#xff09;中UART&#xff08;通用异步收发传输器&#xff09;模块定义的一个错误码&#xff0c;表示“Parity Error”&#xff08;奇偶校验错误&#xff09;。当UART通信过程中检测到奇偶校验不匹配时&#xff0c;会…

自动化喷涂生产线方案三

本文介绍自动化喷涂生产线的另外一种方案&#xff0c;单工作站方案&#xff0c;单工作站配置一台机械臂和一套除尘柜&#xff0c;代替一个工位完成喷涂工艺&#xff0c;其工作原理简要介绍如下。 一套单工作站的主要组成设备有&#xff0c;10kg负载机械臂一台主要负责喷涂工艺&…

源码讲解kafka 如何使用零拷贝技术(zero-copy)

前言 kafka 作为一个高吞吐量的分布式消息系统,广泛应用与实时应用场景中。为了实现高效的数据传输,kafka使用了零拷贝技术(zero-copy)显著提高了性能。本文将详细讲解 Kafka 如何利用零拷贝技术优化数据传输。 什么是零拷贝 零拷贝技术目的是减少数据传输的效率。在传统…

冯喜运:6.8下周伦敦金行情怎么看?黄金原油下周操作建议

【黄金消息面分析】&#xff1a;黄金不是由通胀驱动的。它也不是由通货紧缩驱动的。它也不是由美元驱动的。当股市反弹时&#xff0c;它也不会下跌&#xff0c;反之亦然。黄金是由市场情绪驱动的。而且&#xff0c;它是黄金市场上唯一的常数&#xff0c;使人们能够对黄金价格趋…

vue elementui el-input 正则验证,限制只能输入数字和小数

vue elementui el-input 正则验证 限制只能输入数字和小数&#xff0c;以下两种方法都可以&#xff1a; 1、οninput“value value.replace(/[^0-9.]/g,‘’)” 2、οninput“value value.replace(/[^\d.]/g, ‘’)” 限制只能输入数字&#xff1a; 1、oninput “valuevalu…

c++使用_beginthreadex创建线程

记录使用_beginthreadex()&#xff0c;来创建线程。方便后期的使用。 创建一个线程 相关函数介绍 unsigned long _beginthreadex( void *security, // 安全属性&#xff0c; 为NULL时表示默认安全性 unsigned stack_size, // 线程的堆栈大小&#xff0c; 一般默认为0 u…

3D打印随形透气钢:技术革新引领模具制造新潮流

在模具制造领域&#xff0c;透气钢一直扮演着重要角色&#xff0c;它能够有效解决模具困气问题&#xff0c;提高注塑成型的效率和质量。然而&#xff0c;传统的透气钢制造方法受限于工艺和材料&#xff0c;难以满足复杂模具的需求。随着3D打印技术的飞速发展&#xff0c;3D打印…

Go微服务: 分布式之通过本地消息实现最终一致性

概述 我们的业务场景是可以允许我们一段时间有不一致的消息的状态的&#xff0c;并没有说必须特别高的这个消息的一致性比如说在TCC这个架构中&#xff0c;如果采用了消息的最终一致性&#xff0c;整体架构设计要轻松好多即便我们库存服务挂了&#xff0c;或者我们积分服务挂了…

【2024PythonPycharm详细安装教程】

1.打开官网 https://www.python.org/ downloads——>Windows 2.找到 Download Windows installer (64-bit) 下载 3.下载完成双击安装包 勾选Add python.exe to PATH(自动配置系统变量) 点击Install Now&#xff08;默认安装&#xff09; 然后看到安装成功&#xff0…

LeetCode-day05-3038. 相同分数的最大操作数目 I

LeetCode-day05-3038. 相同分数的最大操作数目 I 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给你一个整数数组 nums &#xff0c;如果 nums 至少 包含 2 个元素&#xff0c;你可以执行以下操作&#xff1a; 选择 nums 中的前两个元素并将它们删除。…

深度学习中2D检测

深度学习中的2D目标检测 2D目标检测是深度学习中的一个关键任务&#xff0c;旨在识别图像中的目标对象&#xff0c;并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。以下是对深度学习中2D目标检测的详细介绍&#xff0c;包括…

通过windbg查看dump文件中静态变量的值

可以使用 WinDbg 和 SOS 扩展来查看它们。下面是如何使用 WinDbg 和 SOS 的步骤&#xff1a; 打开 WinDbg&#xff0c;并用它打开你的 dump 文件。你可以使用 File → Open Crash Dump 来实现。 在命令行中&#xff0c;加载 SOS 扩展。一般来说这可以通过 .loadby sos clr 来完…

Oracle EBS AP发票创建会计科目错误:子分类帐日记帐分录未按输入币种进行平衡

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: 提交“创建会计科目”请求提示错误信息如下: 中文报错: 该子分类帐日记帐分录未按输入币种进行平衡。请检查日记帐分录行中输入的金额。 英文报错:The subledger journal entry does not balance i…