项目五串行通信系统 任务5-3温度信息上传
任务描述:DS18B20测量温度,单片机采集温度数据转换显示代码,并通过串行口发送到上位机显示。
底层文件:
/*********************************************
ds18b20底层函数:能完成一次温度数据读取
**********************************************/
#include<reg51.h>
#include<intrins.h>
sbit dq=P3^7;//ds18b20数据线
unsigned char tl,th;//tl记录温度数据低8位,th记录温度数据高8位
/***********************************************/
void init_18b20();
void write_18b20(int dat);
char read_18b20();
void ds18b20();
/***********************************************/
void delayus(int i)//微秒级延时:12us
{
// i=i*10;while(i--);
}
/***********************************************/
void delayms(int i) //毫秒级延时 :3ms
{int j;while(i--){for(j=255;j>0;j--); }
}
/***********************************************/
void init_18b20() //初始化
{dq=0; //拉低数据线delayus(50);//因为串行口时钟为11.0592MHz,延时时间增加了,所以循环次数减小到50次dq=1; //拉高数据线 while(1) //不断查询数据线{if(dq==0) break; //若数据线变低,退出查询}delayus(5); //延时60usdq=1; //拉高数据线delayus(5); //延时
}
/***********************************************/void write_18b20(int dat) //向18B20写1字节命令
{int i;for(i=0;i<8;i++){dq=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//因为串行口时钟为11.0592MHz,延时时间增加了,所以改用空操作完成延时12usdq=dat&0x01;//逻辑与运算取dat最低位给数据线dqdelayus(3);//延时60usdq=1;//拉高数据线dat>>=1;//dat=dat>>1;将命令字dat右移一位}
}
/***********************************************/
char read_18b20()//从18b20读取1字节数据
{int i,temp=0;for(i=0;i<8;i++){dq=0;dq=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//因为串行口时钟为11.0592MHz,延时时间增加了,所以改用空操作完成延时12ustemp>>=1;if(dq==1)temp=temp|0x80;//逻辑加10000000delayus(4);}
return(temp);
}
/***********************************************/
void ds18b20()//完成一次温度数据读取(16位二进制数,高8位给变量th,低8位给变量tl)
{init_18b20();write_18b20(0xcc);write_18b20(0x44);init_18b20();write_18b20(0xcc);write_18b20(0xbe);tl=read_18b20();//读取温度低8位th=read_18b20();//读取温度高8位
}
extern void init_18b20();
extern void write_18b20(int dat);
extern int read_18b20();
extern void ds18b20();
extern void delayus(int i);
extern void delayms(int i);
extern unsigned char tl,th;//tl记录温度数据低8位,th记录温度数据高8位
实物:
接线:
/*************************
项目名称:项目五串行通信系统
任务名称:任务5-2火焰报警器
任务描述:DS18B20测量温度,单片机采集温度数据转换显示代码,并通过串行口发送到上位机显示。*************************/
#include<reg51.h>
#include<stdio.h>
#include<ds18b20.h>int t;//存放16位温度数据
void init_uart();//异步串行口初始化
void send(unsigned char x);//串口发送一帧数据/************************************/
void init_uart()//init初始化,uart异步串行口
{SCON=0X40;//定义时必须要大写,选择工作方式。0x40,9位1帧,只允许发送,不允许接收TMOD=0X20;//定时器1方式2:8位自动重装初值PCON=0X00;//波特率不倍增TH1=TL1=0Xfd;//波特率节奏器,数三下产生波特率,9600bps,fosc=11.0592MHzTI=0;//允许发送TR1=1;//启动定时器1,开始数数,产生波特率
}
/************************************/
void send(unsigned char x)
{SBUF=x;//自动拆字,按照定时器的节奏自动发送(P3.1),//自动添加结束标志,1帧数据发送完成后TI自动置1while(TI==0);//1帧发送未结束,就等待TI=0;//允许下一次发送
}
/************************************/
char putchar(char x)
{send(x);return x;
}
/************************************/void main()
{init_uart();ds18b20();delayms(500);//延时避让开机错误温度数据,只测量不显示while(1){ds18b20();t=(th<<8)|tl;//合成16位温度数据,最低刻度0.0625℃printf("温度: %.1foC\r\n",t*0.0625);delayms(500);}
}
注意要11.0592MHz
仪器要9600
温度传感器要精确到0.1
可以定义温度初始值:
下面的符号也可以改变温度:
接线 接上蓝牙与温度传感器:
效果:用手捏住温度传感器就可以实现升温
相关文章:
项目五串行通信系统 任务5-3温度信息上传
任务描述:DS18B20测量温度,单片机采集温度数据转换显示代码,并通过串行口发送到上位机显示。 底层文件: /********************************************* ds18b20底层函数:能完成一次温度数据读取 ***************************…...
前端 JS 经典:统一 Vite 中图片转换逻辑
在 Vue Vite 项目中有这样一段代码如下,引入了两个图片,一大一小。然后 console 出来引入结果。 import bigImg from "./assets/big.png"; import smallImg from "./assets/small.png";console.log(bigImg); console.log(smallImg…...
DOM-获取元素
获取元素的方法: 方法一:根据id获取元素document.getElementById <div id"time">2024-6-4</div> 在script标签中:注意getElementById括号里面必须要有引号,获得的是对象类型 var timer document.getEle…...
【安装笔记-20240612-Linux-内网穿透服务之cpolar极点云】
安装笔记-系列文章目录 安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 文章目录 安装笔记-系列文章目录安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 前言一、软件介绍名称:cpolar极点云主页官方介绍 二、安装步骤测试版本:openwrt-…...
Java 泛型与集合的深入解析:原理、应用与实践
泛型的基本原理 为什么需要泛型 在Java 5之前,Java的集合类只能存储Object类型的对象。这意味着,存储在集合中的对象在取出时需要进行类型转换,这不仅繁琐,而且容易出错。泛型通过在编译时进行类型检查,确保类型安全…...
Oracle 数据库的自动化工具:AWR 和 ASM
Oracle 数据库提供了一系列工具和技术,以提高数据库管理的效率和性能。其中,AWR和 ASM是两个关键组件。本文将详细介绍 AWR 和 ASM 的功能及其在数据库管理中的重要性。 AWR AWR 是 Oracle 数据库的一个核心部分,用于收集、处理和维护数据库…...
java技术专家面试指南50问【java学习+面试宝典】(五)
Dubbo需要 Web 容器吗? 不需要,如果硬要用 Web 容器,只会增加复杂性,也浪费资源。 一个字符串类型的值能存储最大容量是多少? 512M 什么是Kubectl? Kubectl是一个平台,您可以使用该平台将命…...
Elasticsearch之深入聚合查询
1、正排索引 1.1 正排索引(doc values )和倒排索引 概念:从广义来说,doc values 本质上是一个序列化的 列式存储 。列式存储 适用于聚合、排序、脚本等操作,所有的数字、地理坐标、日期、IP 和不分词( no…...
大模型:分本分割模型
目录 一、文本分割 二、BERT文本分割模型 三、部署模型 3.1 下载模型 3.2 安装依赖 3.3 部署模型 3.4 运行服务 四、测试模型 一、文本分割 文本分割是自然语言处理中的一项基础任务,目标是将连续的文本切分成有意义的片段,这些片段可以是句子、…...
数据预处理 #数据挖掘 #python
数据分析中的预处理步骤是数据分析流程中的重要环节,它的目的是清洗、转换和整理原始数据,以便后续的分析能够准确、有效。预处理通常包括以下几个关键步骤: 数据收集:确定数据来源,可能是数据库、文件、API或网络抓取…...
VS2022 使用C++访问 mariadb 数据库
首先,下载 MariaDB Connector/C++ 库 MariaDB Products & Tools Downloads | MariaDB 第二步,安装后 第三步,写代码 #include <iostream> #include <cstring> #include <memory> #include <windows.h>#include <mariadb/conncpp.hpp>…...
kotlin 语法糖
Use of “when” Expression Instead of “switch” fun getDayOfWeek(day: Int): String {return when (day) {1 -> "Monday"2 -> "Tuesday"3 -> "Wednesday"4 -> "Thursday"5 -> "Friday"6 -> "Sa…...
.NET MAUI Sqlite数据库操作(一)
一、安装 NuGet 包 安装 sqlite-net-pcl 安装 SQLitePCLRawEx.bundle_green 二、配置数据库(数据库文件名和路径) namespace TodoSQLite; public static class Constants {public const string DatabaseFilename "TodoSQLite.db3";//数据库…...
SQL 窗口函数
1.窗口函数之排序函数 RANK, DENSE_RANK, ROW_NUMBER RANK函数 计算排序时,如果存在相同位次的记录,则会跳过之后的位次 有 3 条记录排在第 1 位时: 1 位、1 位、1 位、4 位…DENSE_RANK函数 同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次 有 3 条记录排在…...
staruml怎么合并多个Project工程文件
如图现在有两个staruml文件 现在我想要把project2合并到project1里面 步骤如下: 1、首先打开project2 2、如图选择导出Fragment 3、选中自己想导出的模块(可以不止一个) 4、将其保存在桌面 5、打开project1 6、选择导入 7、选中刚刚…...
设计模式——外观模式
外观模式(Facade) 为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 #include <iostream>using namespace std;// 四个系统子类 class SubSystemOne { public:void MethodOne(){cout <&l…...
开源-Docker部署Cook菜谱工具
开源-Docker部署Cook菜谱工具 文章目录 开源-Docker部署Cook菜谱工具介绍资源列表基础环境一、安装Docker二、配置加速器三、查看Docker版本四、拉取cook镜像五、部署cook菜谱工具5.1、创建cook容器5.2、查看容器运行状态5.3、查看cook容器日志 六、访问cook菜谱服务6.1、访问c…...
使用PHP对接企业微信审批接口的问题与解决办法(二)
在现代企业中,审批流程是非常重要的一环,它涉及到企业内部各种业务流程的规范和高效运转。而随着企业微信的流行,许多企业希望将审批流程整合到企业微信中,以实现更便捷的审批操作。本文将介绍如何使用PHP对接企业微信审批接口&am…...
RK3288 android7.1 实现ota升级时清除用户数据
一,OTA简介(整包,差分包) OTA全称为Over-The-Air technology(空中下载技术),通过移动通信的接口实现对软件进行远程管理。 1. 用途: OTA两种类型最大的区别莫过于他们的”出发点“(我们对两种不同升级包的创建&…...
okHttp的https请求忽略ssl证书认证
使用okhttp请求第三方https接口返回异常 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target意思就是非安全的调用&#…...
在Java中使用Spring Boot设置全局的BusinessException
在线工具站 推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。 程序员资料站 推荐一个程序员编程资料站:…...
Java 异常处理 -- Java 语言的异常、异常链与断言
大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 009 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台 Spring Cloud Nacos 是 Spring Cloud 生态系统中的一个子项目,提供了服务注册与发现、配置管理等功能,基于 Alibaba 开源的 Nacos 项目。Nacos 是一个易于使用的动态服务发现、配置管…...
java多线程临界区介绍
在Java多线程编程中,"临界区"是指一段必须互斥执行的代码区域。当多个线程访问共享资源时,为了防止数据不一致或逻辑错误,需要确保同一时刻只有一个线程可以进入临界区。Java提供了多种机制来实现这一点,例如synchroniz…...
基于JSP的超市管理系统
你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP MyBatis 工具:IDEA/Eclipse、Navicat、Maven 系统展示 员工管理界面图 管…...
一文讲清:生产报工系统的功能、报价以及如何选择
最近这几年,企业越来越注重生产的速度和成本,尤其是“性价比”,生产报工系统已经变成了制造业里不可或缺的一部分。不过,市场上生产报工系统的选择太多,价格也都不一样,这就给很多企业出了个难题࿱…...
blender bpy将顶点颜色转换为UV纹理vertex color to texture
一、关于环境 安装blender的bpy,不需要额外再安装blender软件。在python控制台中直接输入pip install bpy即可。 二、关于代码 本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。 本文所给出的例子是https://download.csdn.net/downl…...
Flink Sql:四种Join方式详解(基于flink1.15官方文档)
JOINs flink sql主要有四种连接方式,分别是Regular Joins、Interval Joins、Temporal Joins、lookup join 1、Regular Joins(常规连接 ) 这种连接方式和hive sql中的join是一样的,包括inner join,left joinÿ…...
(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第3节(泛型约束)
14.3 泛型约束 正如我们所看到的,您在泛型类的方法中可以做的事情非常少。您可以传递它(即分配它)并执行上面我介绍的泛型类型函数允许的有限操作。 为了能够执行泛型类的实际操作,通常需要对其进行约束。例如,…...
C语言详解(预编译)
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
网上接手袋做是哪一个网站/跨境电商怎么做
用dockerfile构建一个Java的web环境,主要分为2步,第一步是在镜像中安装jdk并配置环境变量,第二步是安装tomcat。先贴一下完整的dockerfileFROM ubuntu:14.04MAINTAINER *** "*********.com"RUN apt-get updateADD jdk-8u77-linux-x…...
wordpress php解密算法/郑州百度公司地址
涉及到的类主要有FileInputStream ,InputStreamReader ,BufferedReader 。涉及到的设计模式主要有适配器模式以及装饰者模式。下面分别展开介绍。 举例如下: 1、适配器模式 //file 为已定义好的文件流 FileInputStream fileInput new Fil…...
建设银行不良资产处置网站/长沙百度推广公司电话
RAW协议用于在IP层上实现自己的协议,该协议需要自己填充IP头和数据部分,内核只负责填充MAC头和源ip字段,该版本还没实现通过参数让内核填充IP头的功能。该协议的位置和TCP类似,内核在创建一个socket的时候,在底层会创建…...
网站开发人员工作内容/互联网运营推广
var n 3;console.log(n.toString());/*3的小游戏,练习使用循环和条件语句,实现如下需求:从1到100,以此在console输出各数字,但是,当数字为3的倍数或者含有3的时候,输出“PA”比如:1…...
哈尔滨微网站建设公司/网站死链检测工具
注:对于最重要的两类回归模型,之前总结了逻辑回归模型,这里总结一下"线性回归"模型。 0. 概述 线性回归应该是我们听过次数最多的机器学习算法了。在一般的统计学教科书中,最后都会提到这种方法。因此该算法也算是架起了…...
电子商务网站的建设流程/goole官网
近日,国内领先的金融科技公司信也科技(NYSE:FINV)主办的首届合作伙伴大会在上海顺利召开。大会以“新业态信未来”为主题,国务院发展研究中心金融研究所副所长陈道富分享了关于金融科技和金融行业发展的两点看法。 科技如何赋能金融 陈道富认为…...