51单片机-LCD1602显示屏
简介
是一个液晶显示屏,通过电压对显示区域进行控制,有电就显示。
能够同时显示32个字符,分为两行,一行显示16个字符。可以显示的内容只能是字母、数字或者一些特殊符号。
使用ASCII码来让LCD1602来显示对应的字符。
电路图
图示:

引脚说明
第1引脚:GND是接地引脚。
第2引脚:VCC是电源引脚。
第3引脚:VO/VL是液晶显示器的对比度调整,接正电源时对比度比较高, 接地的时候对比度比较低。
第4引脚:RS为寄存器选择,高电平选择的是数据寄存器,低电平选择的是指令寄存器。(高数低命)
第5引脚:RW读写信号线,高电平代表进行读操作,低电平代表进行写操作。
RS低电平,RW为高电平:读命令
RS高电平,RW为低电平:写数据
第6引脚:E端使能端,当E由高电平变为低电平,液晶模块就不再输出显示了,而是执行命令或者写入数据。
第7~14引脚:D0~D7为8位的双向数据线。
第15引脚:背光源正极。
第16引脚:背光源负极。
LCD1602的显示方式
图示:

LCD1602的基本操作方式
图示:

读状态:输入RS=0,RW=1,E=1.输出D0~D7为状态字,读忙信号,D7引脚为标志位(BF), 高电平表示忙,低电平表示不忙。
读数据:输入RS=1,RW=1,E=1.输出D0~D7的八位数字为数据。
写命令:输入RS=0,RW=0,E=0.输出:无。将指令或者显示地址写入到LCD1602中。
写数据:输入RS=1,RW=0,E=0 输出:无。写入数据。
LCD1602的时序图
图示:

由于DS18B20是单总线设计,只能通过一个引脚来读取和写入命令或数据,但是LCD1602是由8个引脚来传输数据,所以不需要像DS18B20一样有严格的时序时间要求。
练习:
1、将DS18B20的温度显示到LCD1602中;
2、使用按键来改变DS18B20的报警阈值,并更新显示在LCD1602中。报警时机会根据阈值的改变而改变,可以对报警的频率进行不同的设置,比如20度报警音调低,30度稍高,40度更高。
#include <reg51.h>
#define uchar unsigned char
#define DataPort P2
sbit RS =P0^7;
sbit RW =P0^6;
sbit E =P0^5; //lcd显示屏sbit DQ=P3^7; //温度
sbit BEE = P3^6;//蜂鸣器sbit KEY1=P3^5; //按键
sbit KEY2=P3^4;
sbit KEY3=P3^3;//unsigned char arr1[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};unsigned char arr1[10] = {'0','1','2','3','4','5','6','7','8','9'};//unsigned char arr2[10] = {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10};unsigned char tempL = 0;
unsigned char tempH = 0;unsigned char flag=1;unsigned int sdata;unsigned char xiaoshu1;
unsigned char xiaoshu2;void delay(unsigned char i)
{for(i; i > 0; i--);
}void Delay10ms() //@11.0592MHz
{unsigned char i, j;i = 18;j = 235;do{while (--j);} while (--i);
}unsigned char Init_DS18B20()
{unsigned char x = 0;DQ=1; delay(8); DQ=0; delay(80); DQ=1; delay(5); x = DQ; delay(30); return x;
}// 写函数void writeOneChar(unsigned char dat)
{unsigned char i=0;for(i = 8;i > 0;i--) {DQ=0; DQ=dat&0x01;delay(5); DQ=1; dat>>=1; delay(2); }
}// 读函数unsigned char readOneChar()
{unsigned char dat=0; unsigned int i ;for(i = 0; i < 8 ;i++){DQ=1;delay(1); DQ=0;delay(1); dat>>=1; DQ=1; if(DQ){ dat|=0x80;}delay(4);}return dat;
}// 读取温度值
void readTemperature()
{while(Init_Ds18B20()); writeOneChar(0xcc); writeOneChar(0x44); delay(124); while(Init_Ds18B20());writeOneChar(0xcc); writeOneChar(0xbe); tempL = readOneChar(); tempH = readOneChar(); if(tempH>0x7f){tempL = ~tempL + 1;tempH = ~tempH;flag = 0;}sdata = (float)(tempH << 8 | tempL) / 16.0; xiaoshu1 = (tempL&0x0f)*10/16;xiaoshu2 = (tempL&0x0f)*100/16%10;}//检测LCD是否忙
void BusyCheck()
{uchar sta;DataPort = 0xff;RS=0;RW=1;do{E=1;sta=DataPort;E=0;}while(sta&0x80);
}//写数据
void WriteData(uchar dat)
{BusyCheck(); RS = 1;RW = 0;DataPort = dat;E=1;E=0;}
//写命令
void WriteCMD(uchar cmd)
{BusyCheck(); RS=0;RW=0;DataPort = cmd;E=1;E=0;
}
//lcd屏幕
void lcd()
{WriteCMD(0x06);WriteCMD(0x0c);WriteCMD(0x38);WriteCMD(0x80);WriteData(arr1[sdata/10]);WriteData(arr1[sdata%10]);WriteData('.');WriteData(arr1[xiaoshu1]);WriteData(arr1[xiaoshu2]);WriteData(' ');WriteData(' ');
}蜂鸣器
//void beef()
//{
// BEE=1;
// if(sdata >= 50)
// {
// BEE = !BEE;
// }
// else
// {
// BEE = 1;
// }
//}
//
//按键
void key()
{//定义两个字符unsigned char ch1='0';unsigned char ch2='0';int i;if(KEY1==0)//20-30{KEY1=0;KEY2=1;KEY3=1;Delay10ms();ch1='2';ch2='0';if(sdata>=20 && sdata <30){for(i=0;i<300;i++){BEE = !BEE;delay(100);}}}if(KEY2==0)//30-40{KEY1=1;KEY2=0;KEY3=1;Delay10ms();ch1='3';ch2='0';if(sdata>=30 && sdata <40){for(i=0;i<300;i++){BEE =! BEE;delay(300);delay(300);}}}if(KEY3==0)//大于40{KEY1=1;KEY2=1;KEY3=0;Delay10ms();ch1='4';ch2='0';if(sdata>=40){for(i=0;i<300;i++){BEE =! BEE;delay(300);delay(300);delay(300);}}}WriteData(ch1);WriteData(ch2);}void main()
{WriteCMD(0x01);while(1){readTemperature();lcd();// beef();key();}}
相关文章:
51单片机-LCD1602显示屏
简介 是一个液晶显示屏,通过电压对显示区域进行控制,有电就显示。 能够同时显示32个字符,分为两行,一行显示16个字符。可以显示的内容只能是字母、数字或者一些特殊符号。 使用ASCII码来让LCD1602来显示对应的字符。 电路图 …...
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题 论文:https://arxiv.org/pdf/2404.14394 代码:https://github.com/multimodal-interpretability/maia 提出背景 神经网络方法提取的特征,没有可解释性。 数据在通过多个层…...
AT360-6T杭州中科微单频高精度授时模块场景应用
AT360-6T是一款高性能多系统卫星定位授时模块,基于自主研发的北斗多系统SOC芯片,可以同时接收中国的BDS(北斗二号和北斗三号)、美国的GPS、俄罗斯的GLONASS、欧盟的 GALILEO 和日本的QZSS等多个卫星导航系统的GNSS信号来实现多系统联合定位授时ÿ…...
Python酷库之旅-第三方库Pandas(081)
目录 一、用法精讲 336、pandas.Series.str.rpartition方法 336-1、语法 336-2、参数 336-3、功能 336-4、返回值 336-5、说明 336-6、用法 336-6-1、数据准备 336-6-2、代码示例 336-6-3、结果输出 337、pandas.Series.str.slice方法 337-1、语法 337-2、参数 …...
C语言基础⑩——构造类型(结构体)
一、数据类型分类 1、基本类型 整数型 短整型:short(2个字节);整型(默认):int(4个字节);长整型:long(8个字节)…...
宝兰德荣获openEuler项目群青铜捐赠人称号,共筑开源生态繁荣新篇章
近日,开放原子开源基金会正式公布了新增捐赠人名单,宝兰德凭借在开源领域的卓越贡献与深厚实力,被授予openEuler项目群青铜捐赠人称号。 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构,于2020年6月在北京成立。开放…...
【Python单元测试】学习笔记3
文章目录 08.PyTest框架什么是PyTestPyTest的优点PyTest的测试环境PyTest常用参数跳过测试 09.PyTest fixture基础PyTest fixture定义和使用引用多个Fixture 10. conftest.pyconftest.py的用途 11. 参数化测试用例为什么需要参数化测试用例使用parameterizer插件实现使用pytest…...
OpenSSL源码编译及Debug
** 1. 环境 Linux 5.19.0-14-generic 22.04.1-Ubuntu 2. 所需工具 gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) cmake version 3.22.1 3. 步骤 3.1 获取openssl源码 方法可以git clone获得源码,或者直接去GitHub上下载压缩包,GitHub网址…...
go之goburrow/modbus 学习
goburrow/modbus 是一个用Go语言实现的Modbus协议库,提供了Modbus主机(Master)和从机(Slave)的实现,支持两种主要的Modbus传输模式:Modbus TCP和Modbus RTU。 功能介绍 1. 支持的传输模式 Mod…...
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么? 随着计算机视觉技术的快速发展,目标检测(Object Detection)已经在各种应用场景中得到了广泛的应用。然而,传统的目标检…...
【教程】Ubuntu给pycharm添加侧边栏快捷方式
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 以下教程不仅限于pycharm,其他软件也是一样操作 1、进入到pycharm的目录,先通过命令行打开pycharm: ./bin/pycharm…...
三个月外贸小白好迷茫,该何去何从?
最近看到一个共性的问题,也许对于大多数外贸新人来说,都有过这样的困扰和无力感,也许对于每一个没有强大背景的外贸小伙伴来说,可能都是这样一路成长起来的。 大家好,我是一名普通二本英专生,八月中旬入职…...
MySQL数据库——基本查询(Create)
CRUD:Create(创建)Retrieve(读取)Update(更新)Delete(删除) 1.Create ①单行数据全列插入 insert [into] table_name [(colume[,colume]……)] values (value_list) […...
spring-security-1-快速入门
1 功能 身份认证(authentication)授权(authorization)防御常见攻击 身份认证:常见账号密码登录,短信登录 授权:什么样的角色,能看见什么菜单,能访问哪些接口。 2 pom <dependency><groupId>org.springf…...
5 大场景上手通义灵码企业知识库 RAG
大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至 Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性…...
免费远程控制电脑的软件有哪些?
什么是远程控制? 远程控制是一种通过网络从一台设备操作另一台设备的技术。连接后,用户可以直接远程操作那台电脑进行各种操作。随着科技的不断进步和用户需求的增加,远程控制市场日益蓬勃。远程控制不仅应用于远程办公和远程教学࿰…...
Linux软件包yum
目录 Linux软件包管理器 yum关于rzsz注意事项查看软件包如何安装软件卸载命令 Linux开发工具Linux编辑器-vim使用1. vim的基本概念2. vim的基本操作3. vim正常模式命令集4. vim末行模式命令集5. vim操作总结 小彩蛋 Linux软件包管理器 yum 软件包 在Linux下安装软件ÿ…...
网页的切换与嵌套
网页的切换与嵌套 网页的切换 在浏览器窗口中如果点击超链接标签会在当前的浏览器窗口中显示新的数据,但有些超链接标签点击后却会在一个新的窗口显示数据,这种情况下就无法对新的开的窗口页面进行操作了。 基于这种情况,我们就需要使用dri…...
基于飞桨框架的稀疏计算使用指南
本文作者-是 Yu 欸,华科在读博士生,定期记录并分享所学知识,博客关注者5w。本文将详细介绍如何在 PaddlePaddle 中利用稀疏计算应用稀疏 ResNet,涵盖稀疏数据格式的础知识、如何创建和操作稀疏张量,以及如何开发和训练…...
启明云端WT32C3-S6物联网模块,乐鑫ESP32-C3芯片技术应用
随着物联网技术的飞速发展,智能设备在我们生活中的应用越来越广泛。从智能电网到远程医疗,从楼宇自动化到智能家居,这些技术正在改变我们的生活方式。 在这样的背景下,启明云端推出的WT32C3-S6 WiFi模块以其低功耗、高性价比的特…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
