项目五串行通信系统 任务5-3温度信息上传

news2024/10/5 15:26:24

任务描述: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); //延时60us
  dq=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,延时时间增加了,所以改用空操作完成延时12us
 dq=dat&0x01;//逻辑与运算取dat最低位给数据线dq
 delayus(3);//延时60us
 dq=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,延时时间增加了,所以改用空操作完成延时12us
 temp>>=1;
 if(dq==1)
 temp=temp|0x80;//逻辑加10000000
 delayus(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.0592MHz
	TI=0;//允许发送
	TR1=1;//启动定时器1,开始数数,产生波特率
}
/************************************/
void send(unsigned char x)
{
	SBUF=x;//自动拆字,按照定时器的节奏自动发送(P3.1),
	//自动添加结束标志,1帧数据发送完成后TI自动置1
	while(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 

 

可以定义温度初始值:

下面的符号也可以改变温度: 

 

接线   接上蓝牙与温度传感器:

 

效果:用手捏住温度传感器就可以实现升温

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

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

相关文章

算法课程笔记——线段树动态开点

算法课程笔记——线段树动态开点 、

大模型高考数学测评结果,国内AI大模型成绩超GPT-4o!

每年高考都是备受全社会关注的一件大事&#xff0c;而今年略有不同&#xff0c;因为除了鱼跃龙门的高三学子们&#xff0c;还多了许多陪他们一同参加考试的 AI 大模型。 在所有的考试科目中&#xff0c;数学显然一直都是最难的那一门&#xff0c;不论是对考生还是对大模型。因…

设备管理系统——设备台账管理

设备管理系统中的设备台账管理是一项关键的功能&#xff0c;它涵盖了设备从购入、使用、维护到报废的全生命周期管理。以下是设备台账管理在设备管理系统中的详细功能和重要性&#xff1a; 一、设备台账管理的基本功能 设备信息录入&#xff1a; 录入设备的基本信息&#xff0…

B端系统的颜值问题:成也框架,败也框架!

B端UI框架和前端框架的出现&#xff0c;让系统的搭建就像堆积木一样&#xff0c;十分的容易了。这也一下子把程序员的设计和审美水平拔高到了UI框架能够达到的高度。伴随而来的则是系统的堆砌、同质化、糟糕的体验&#xff0c;以及各种违和的组件被生搬硬套的绑定在一块&#x…

传统工厂该如何做数字化转型?

传统工厂实现数字化转型需多方面着手&#xff0c;包括树立战略意识、明确目标规划&#xff0c;加强信息化建设、提升数据能力&#xff0c;培养引进人才、推动技术创新&#xff0c;优化业务流程、提高生产效率与质量管控&#xff0c;加强协同合作、实现产业链整合&#xff0c;建…

男士内裤买便宜还是贵的?2024年高性价比男士内裤汇总分享

男生内裤&#xff0c;作为贴身衣物&#xff0c;承载着男性的私密与舒适。然而&#xff0c;许多男士的内裤状况却让人大跌眼镜&#xff1a;穿到变形、腰部松垮无弹性&#xff0c;屁股后面甚至出现破洞&#xff0c;这样的景象已然屡见不鲜。更有些男士的内裤&#xff0c;中间一个…

lnmp的介绍与源码部署以及 |什么是正向、反向、透明代理 | 常见的集群有哪些

lnmp 文章目录 lnmp1.LNMP是什么2. lnmp简介3.系统特点4.优点5.lnmp部署5.1 nginx安装5.2 mysql安装5.3 php安装5.4配置nginx服务处理php 6.扩展知识点1.什么是集群2.常见的集群有哪些集群的分类1、高可用集群2、负载均衡集群3、分布式计算集群4、高性能集群(High Performance …

你为什么不相信 LLM 模型评测:深入评测 LLM 接口

我相信你已经看过很多机构发布的 LLM&#xff08;大语言模型&#xff09; 的模型效果质量的评测文章了。 其实呢&#xff0c;大家看了很多自称权威&#xff0c;或者不怎么权威的评测文章&#xff0c;基本上也就看看就完了&#xff0c;很少有人真的相信这些测试结果。 为什么你…

基于Simufact Welding定向沉积增材仿真的几何变形补偿

在DED&#xff08;Directed energy deposition定向能量沉积&#xff0c;下述简称DED&#xff09;增材工艺过程中&#xff0c;由于零部件的重复加热&#xff0c;极易产生部件的变形问题。借助专业的金属定向能量沉积仿真软件Simufact Welding&#xff0c;能够对目标件进行瞬态数…

线稳源极跟随 线性电源前端降压

功率MOSFET线性电源涉及跟随.ms14 根本原理是Vgs对Id的控制&#xff0c;Vgs越大&#xff0c;Id越大&#xff0c;反之亦然。 观察转移特性曲线&#xff0c;结合接线图可知&#xff0c;电路稳定后&#xff0c;如果负载电阻增大&#xff0c;则Vsgnd增大&#xff0c;由于Vggnd有稳…

负压式水帘风机和一体式水帘风机的特点

负压式水帘风机和一体式水帘风机各有其独特的特点&#xff0c;以下是它们的特点归纳&#xff1a; 负压式水帘风机特点&#xff1a; 高效节能&#xff1a; 通过水帘与负压风机的配合&#xff0c;模拟自然界的蒸发降温过程&#xff0c;耗电量仅为传统空调的十分之一&#xff0c…

Liinux:进程程序替换

替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用e…

Java常用的设计模式,如单例模式、工厂模式、观察者模式等

设计模式是软件工程中的一种解决方案&#xff0c;用于应对常见的设计问题和挑战。它们提供了一种标准化的方式来解决设计难题&#xff0c;使代码更加灵活、可扩展和易于维护。 单例模式&#xff08;Singleton Pattern&#xff09; 概述 单例模式确保一个类只有一个实例&…

Lua解释器裁剪

本文目录 1、引言2、文件功能3、选择需要初始化的库4、结论 文章对应视频教程&#xff1a; 已更新。见下方 点击图片或链接访问我的B站主页~~~ Lua解释器裁剪&#xff0c;很简单~ 1、引言 在嵌入式中使用lua解释器&#xff0c;很多时候会面临资源紧张的情况。 同时&#xff0c…

木头姐预测:2029年特斯拉股价将达2600美元,市值8.2万亿美元

ARK预计特斯拉将在未来两年内推出robotaxi服务&#xff0c;并估计到2029年特斯拉近90%的市值和盈利将归功于robotaxi业务。此外研究表明&#xff0c;FSD模式下的特斯拉比人类驾驶的特斯拉安全约5倍&#xff0c;比道路上的普通汽车安全约16倍。 北京时间12日晚&#xff0c;木头姐…

如何识别和管理软件测试风险?

TestComplete 是一款自动化UI测试工具&#xff0c;这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的自动化测试。 TestComplete 集成了一种精心设计的自动化引擎&#xff0c;可以自动记录和回放用户的操作&#xff0c;方便用户进行UI&#xff08;用户界面&…

通用大模型和垂直大模型,如何选择?

通用大模型和垂直大模型在多个方面存在显著的区别。就像生活中的全才能手和行业里的高精专家&#xff0c;各有千秋&#xff0c;各有魅力。从专业角度分析&#xff0c;他们有以下这些区别&#xff1a; 1.定义与特点&#xff1a; 通用大模型&#xff1a; 是一…

跨界合作机会:通过淘宝数据挖掘潜在的合作伙伴与市场拓展方向

淘宝平台汇聚了众多商家和消费者&#xff0c;生成了大量的交易数据&#xff0c;这些数据为商家提供了挖掘跨界合作机会和市场拓展方向的丰富线索。以下是如何利用淘宝数据来寻找潜在的合作伙伴和探索新的市场机会的一些策略&#xff1a; 消费者行为分析&#xff1a;通过跟踪消费…

1.Element的table表高度自适应vue3+js写法

解决方法 在页面table上添加id&#xff0c;动态计算每页table的最大高度 &#xff0c;将高度保存在store中&#xff0c;每次切换路由时进行计算。 文章目录 解决方法前言一、页面table使用二、store状态库1.引入库 效果 前言 提示&#xff1a;状态管理使用的是pinia,用法参考…

湿气难除?可能是方法用错了!看完这篇,精准祛湿!

立夏过后&#xff0c;你是不是也经常有这样的感觉&#xff1a; 早上睡不醒&#xff0c;越睡越累 脑袋变得沉沉甸甸 手脚像灌了铅&#xff0c;抬不起胳膊&#xff0c;迈不开步子 面对一桌美味也没有胃口 脸上还容易冒油、长痘&#xff0c;浑身有湿漉漉、黏糊糊的感觉&a…