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模块以其低功耗、高性价比的特…...
Wan2.1 VAE效果对比:不同潜在空间维度下的生成图像质量分析
Wan2.1 VAE效果对比:不同潜在空间维度下的生成图像质量分析 最近在折腾图像生成模型时,我发现一个挺有意思的问题:模型里那个叫“潜在空间维度”的参数,到底该怎么选?是越大越好,还是够用就行?…...
Z-Image-GGUF模型解析:C语言视角下的文件读写与GGUF格式处理
Z-Image-GGUF模型解析:C语言视角下的文件读写与GGUF格式处理 你是不是也好奇,那些动辄几十GB的大模型文件,计算机到底是怎么“看懂”并加载它们的?今天我们不聊高层的API调用,而是拿起C语言这把“手术刀”,…...
嵌入式系统调试常见问题与解决方案
嵌入式系统调试中的典型问题分析与解决策略1. 常见调试问题案例分析1.1 程序文件版本错误在嵌入式开发过程中,一个常见的低级错误是使用了错误的程序文件版本。某工程师在调试时发现单片机完全不执行程序,即使是最基本的GPIO控制也无法实现。经过以下排查…...
UniHacker:跨平台支持的开源工具快速部署方案
UniHacker:跨平台支持的开源工具快速部署方案 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker UniHacker作为一款专业的开源工具,凭借…...
快速找回Chrome密码:ChromePass终极使用指南
快速找回Chrome密码:ChromePass终极使用指南 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾经因为忘记Chrome浏览器中保存的重要登录密码而感到困扰&#…...
3分钟快速上手:免费高效的Elasticsearch可视化工具Elasticvue终极指南
3分钟快速上手:免费高效的Elasticsearch可视化工具Elasticvue终极指南 【免费下载链接】elasticvue Elasticsearch gui for the browser 项目地址: https://gitcode.com/gh_mirrors/el/elasticvue 你是否曾经为复杂的Elasticsearch集群管理而烦恼?…...
【硬核】让所有AI Agent自动进化!港大开源OpenSpace,一个命令让你的Claude Code/Cursor/OpenClaw秒变超级智能体
最近刷 GitHub,发现了一个让我眼前一亮的项目——OpenSpace。 它解决了一个超级痛点:现在的 AI Agent(比如 Claude Code、OpenClaw、Cursor)都很强大,但它们从不学习、永不进化——每次任务都是从头开始,浪…...
从IMU初始化到点云去畸变:深入Fast-LIO2的传感器融合核心流程
从IMU初始化到点云去畸变:Fast-LIO2传感器融合全流程解析 在自动驾驶和机器人定位领域,激光雷达与IMU的紧耦合系统正成为高精度状态估计的主流方案。Fast-LIO2作为这一技术路线的代表,其核心创新在于将IMU的动力学特性与激光点云几何特征深度…...
LWIP内存管理踩坑实录:从pbuf泄漏到pcb耗尽,我的嵌入式网络调试日记
LWIP内存管理踩坑实录:从pbuf泄漏到pcb耗尽,我的嵌入式网络调试日记 凌晨三点,调试器上的红色LED还在闪烁。这是我连续第三个通宵追踪LWIP的内存问题——设备在运行48小时后必然崩溃,日志里满是"pbuf_alloc failed"和&q…...
ai辅助开发comfyui:让快马ai成为你构建复杂工作流的智能编程伙伴
最近在折腾ComfyUI时,发现构建复杂工作流特别容易卡在细节问题上。比如想同时用Canny边缘检测和Openpose控制生成效果,光是调试节点连接和参数就花了大半天。后来尝试用InsCode(快马)平台的AI辅助功能,发现能省下不少重复劳动。这里分享下用A…...
