您当前的位置:钢材 > 型钢 > 市场分析

stm32f4内部温度传感器,stm32温度传感器工作原理

2024-03-24 18:11:26 来源:头条 作者: chanong
分享到
关注德勤钢铁网在线:
  • 扫描二维码

    关注√

    德勤钢铁网微信

在线咨询:
  • 扫描或点击关注德勤钢铁网在线客服

STM32本身内置了温度传感器,但是由于芯片温升较高等问题,与实际温度相差很大,所以本章介绍如何利用STM32读取芯片的温度来做。使用外部数字温度传感器获得更准确的环境温度。在本章中,您将学**如何使用单总线技术实现STM32与外部温度传感器(DS18B20)之间的通信,并将从温度传感器获取的温度数据通过printf 输出到串口助手上。本章分为以下学**目标: 1. 学**操作DS18B20。 1.1 DS18B20 概述DS18B20 是达拉斯半导体公司推出的一款具有“单线总线”接口的温度传感器。与传统热敏电阻等测温元件相比,它是一种新型数字温度传感器,具有体积小、适用电压范围广、与微处理器接口简单等优点。简单、经济的1线总线结构可以轻松构建传感器网络,并引入了构建测量系统的新概念。测量温度范围为-55至+125C,精度为0。 5。现场温度通过“一线总线”直接数字化传输,大大提高了系统的抗干扰能力。可直接读取被测温度,并可根据实际需求通过简单编程实现9-12位数字值读取模式。我的工作时间为3:00 至5:00。 5V电压范围有多种封装格式,使系统设计灵活方便,设置的分辨率和用户设置的报警温度存储在EEPROM中,即使断电也能保留。该图显示了其内部结构。

ROM中的64位序列号是出厂前光刻的,可以认为是DS18B20的地址序列号。每个DS18B20 的64 位序列号都是唯一的。 64 位ROM 包括:前8 位是产品系列代码,接下来的48 位是DS18B20 序列号,最后8 位是之前的56 位循环冗余校验码(CRC=X8)。 +X5+X4+1)。 ROM的功能是使每个DS18B20都是独一无二的,并允许多个DS18B20连接到一条总线上。所有单总线设备都需要严格的信号时序以确保数据完整性。 DS18B20有六种信号类型:复位脉冲、确认脉冲、写0、写1、读0和读1。除确认脉冲外,所有这些信号均由主机同步。所有命令和数据首先发送字节的低位。这里我们简单介绍一下这些信号的时序。 1) 复位脉冲和响应脉冲单个总线上的所有通信都以初始化序列开始。主机输出低电平并保持低电平至少480us,以产生复位脉冲。然后主机释放总线,4.7K 上拉电阻将单总线拉高,延迟15-60 us,进入接收模式(Rx)。然后,DS18B20 将总线拉低60 至240 us,并生成低电平响应脉冲,如果为低电平,则延迟480 us。 2)写时序包括写0时序和写1时序。所有写入序列至少需要60微秒,并且两个独立写入序列之间至少需要1微秒恢复时间。两个序列均以主机将总线拉低开始。写1时序:主机输出低电平,延时2us,然后释放总线,延时60us。写0时序:主机输出低电平,延时60us,然后释放总线,延时2us。 3)读时序单总线设备只有在主机发出读时序时才向主机发送数据,因此主机发出数据读命令后,从机立即产生读时序,以便发送数据。所有读取序列至少需要60s,并且两个独立读取序列之间需要至少1s的恢复时间。每个读取序列均由主机发起,主机将总线拉低至少1us。主设备必须在读取序列期间释放总线,并在序列开始后15us 内采样总线状态。一般读取时序流程如下:主机延时2us输出低电平,延时12us切换到输入模式,然后读取单总线当前电平,延时50us。了解完单总线时序后,我们来看一下DS18B20 的典型温度读取流程: DS18B20 的典型温度读取流程为: 复位发出SKIP ROM 命令(0XCC) 启动转换命令(0X44) 延迟复位SKIP 发送ROM 命令(0XCC) 发送存储器读命令(0XBE) 连续读取2 个字节的数据(温度等)。结尾。我们在这里对DS18B20 进行介绍,但更详细的介绍请参阅DS18B20 技术手册。 1.2 DS18B20电路图

从原理图中我们可以看出,DS18B20 使用的是单片机PG11。 1.3 初始化DS18B20 1. 在初始化之前,我们需要先初始化IO 端口。

/**************************************************** * **** ************************************* 函数名称: ds18b20_init* 函数功能: IO端口时钟初始化功能* 输入: 无* 输出: 无******************************************** **** * **** ******************************/void ds18b20_init(){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOG,ENABLE) ) ;GPIO_InitStructure.GPIO_Pin=dq;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIO_ds18b20,GPIO_InitStructure);}引脚定义在头文件中。

#define dq (GPIO_Pin_11) //PG11#define GPIO_ds18b20 GPIOG#define ds18b20_dq_H GPIO_SetBits(GPIO_ds18b20,dq)#define ds18b20_dq_L GPIO_ResetBits(GPIO_ds18b20,dq) 2. DS18B20 初始化主机发送第一次。 480 到960 微秒的低电平脉冲,然后将总线释放到高电平,并在接下来的480 微秒内检测总线。如果看到低电平,则表示总线上的设备已响应。当没有低电平时,始终存在高电平,表示总线上没有任何设备响应。 DS18B20作为从设备,一上电就检测总线上是否有低电平480到960微秒,如果有,则等待15到60微秒后总线变为高电平。关闭总线电源并通过持续60 至240 微秒的低脉冲进行响应,向主机发出设备已准备就绪的信号。如果没有检测到,则继续检查并等待。 3.初始化时序图

4、例程代码:

/**************************************************** * **** ************************************* 函数名称: ds18b20init* 函数功能: DS18B20初始化时序* 输入: 无* 输出: 无******************************************** ************** * ****** ****************************** **/void ds18b20init(){DQOUTINT();//输出ds18b20_dq_L;lay_us(480);//延迟480 微秒ds18b20_dq_H;lay_us(480);//延迟480 微秒}1.4 DS18B20 读操作下发的各种操作命令主机包括向DS18B20 写入0 和1。由写入组成的命令字节。接收数据时,进程读取同样从DS18B20 发送的0 或1。因此,首先要了解主机是如何写0、写1、读0、读1的。写入周期最短为60 微秒,最长为120 微秒。当写周期开始时,主器件将总线拉低1 微秒,以指示写周期开始。然后,如果主机想要写入0,则将总线设置为低电平,如果主机想要写入1,则将总线设置为高电平至少60微秒,直到写入周期完成,然后释放它。为了恢复总线,允许总线变高至少1 微秒。 DS18B20 检测到总线被拉低后,会等待15 微秒,并开始对总线进行15 s 至45 s 采样。采样期间总线处于高电平。这是1。如果采样期间总线为低电平,1. 读操作时序图

2. 加载运行程序

/**************************************************** * **** ************************************* 函数名称: DS18b20rd* 函数功能: DS18B20读取数据时序* 输入: 无* 输出: 值**************************************** ********** ** *** ********************************** **********/u8 DS18b20rd(){u8 i=0,value=0; for( i=0 ;i8;i++){value=1;DQOUTINT();//输出ds18b20_dq_L;//下拉Late_us(4);//延迟4 微米ds18b20_dq_H;lay_us(10);//延迟10 微米DQININT() ;//输入设置if(GPIO_ReadInputDataBit(GPIO_ds18b20,dq)==1){ value|=0x80; //从低位读取数据}delay_us(45);//delay 45的微妙之处}返回值; }1.5 DS18B20写数据读操作的时序也分为两个过程:读0时序和读1时序。读周期开始于主机将单总线拉低1微秒,然后将单总线释放到高电平,允许DS18B20在单总线上发送数据。作为从机,DS18B20在检测到总线为低电平1微秒后开始发送数据,如果要发送0,则将总线拉低,直到读周期结束。如果要发送1,则将总线释放到高电平。主机首先将总线拉低1微秒,释放总线,并在15微秒内完成总线采样和检测,包括之前1微秒的总线电平下拉。为低电平,确认为0。如果采样期间总线为高电平,则检查为1。读取计时过程至少需要60 微秒才能完成。 1、写操作时序图

2.编写运行程序

/**************************************************** * **** ************************************* 函数名称: ds18b20wr* 函数功能: DS18B20写入数据时序* 输入: dat* 输出: 无******************************************** ********** * **** ********************************** *****/void ds18b20wr(u8 dat){u8 i=0;DQOUTINT(); //输出for(i=0;i8;i++){ds18b20_dq_L;//下拉延迟15 if((dat0x01)==1){ds18b20_dq_H;}else{ds18b20_dq_L;}delay_us( 60) ;//延迟60 Subtle ds18b20_dq_H;dat=1;//准备发送下一位数据}} 1.6 DS18B20寄存器介绍1. 内部结构DS18B20主要由四部分组成。 1)64位光刻ROM 刻刻ROM中的64位序列号是在出厂前照相刻刻的,可以认为是DS18B20的地址序列号。 64位光刻ROM的配置是前8位(地址:28H)是产品型号,接下来的48位是DS18B20的序列号,每个DS18B20都有不同的序列号。因此,这可以认为是DS18B20的地址序列码,最后8位是前面的56位循环冗余校验码(CRC=X8+X5+X4+1)。由于每个DS18B20都有不同的ROM数据,因此单片机可以通过一条总线对多个DS18B20进行寻址,从而达到一条总线上有多个DS18B20的目的。

2) 温度传感器3) 非易失性温度报警触发器TH 和TL4) 配置寄存器。 2. DS18B20 的存储器由高速暂存RAM 和非易失性电可擦除(E2) RAM 组成。

我们来看一下配置寄存器的第四个字节(CONFIG)。

R0 和R1 的默认设置为11。这是12 位分辨率,因此1 位代表0.0625 摄氏度。 1.7DS18B20命令介绍

1.8 温度读取操作1. 温度读取操作DS18B20 转换后的温度值以2 字节补码格式存储在高速缓存的字节0 和1 中。所以如果你只是想读取温度值,你可以只读取临时寄存器的第0和第1字节。读取一次D18B20的温度: a) 初始化DS18B20。 b) 跳过ROM操作(可以在ROM中读取DS18B20的地址、型号、配置分辨率;由于只使用了一颗DS18B20,所以不需要读取地址型号,默认的12位分辨率即可直接使用。) c) 发送温度转换命令。 d) 跳过ROM 操作。 e) 发送温度读取命令。 f) 读取温度值。 2 补码简介什么是补码? 1) 正数的补码就是正数本身。 2) 负数的补码是将原数的符号反转并加1。 DS18B20 中存储的温度值是以补码格式存储的,因此读出的温度值将是实际温度值的补码,必须转换为原始代码。 1)如果温度为正,则原码就是补码本身,所以在12位分辨率下,温度公式为:温度值=读数值*0.06252)如果温度为负,则原码减去补码。因此,在12 位分辨率下,公式为: 温度值=-(读数减1 并取反)* 0.06253。 读取温度编程功能

/**************************************************** * **** ******************************** 函数名称: readtemp* 函数功能: DS18B2 温度寄存器设置,温度读取* 输入: 无* 输出: 值******************************************** * ****** ************************************/double readtemp() //读取温度需要复位{u16 temp;u8 a,b;double value;ds18b20init(); //初始化ds18b20wr(0xcc); //忽略发送ROM 命令ds18b20wr(0x44); //发送温度转换命令Send Late_ms (800); ds18b20init(); //ds18b20wr(0xcc); //发送ROM忽略命令ds18b20wr(0xbe); //发送临时寄存器读命令a=DS18b20rd(); //寄存器温度的低8位b=DS18b20rd();//温度位的高8位temp=b;temp=(temp8)+a;if((temp0xf800)==0xf800){temp=(~temp)+1;value=temp* (-0.0625);}else{ value=temp*0.0625; }返回值;}1.9 例程主函数

/**************************************************** * **** ***************************************** 函数名称: main* 说明: 主程序。 * 输入: 无* 输出: 无* 返回值: 无***************************************** ****************************************************** *****************/int main(){double temp;printf_init();//printf初始化ds18b20_init();//DS18B20初始化while(1){temp=readtemp (); //读取温度printf('当前温度为: %0.4lf \r \n',temp);}}主程序的作用是读取温度。其值通过printf 输出打印到串口助手,如下所示:

下载程序后,打开串口,查看DTR,然后取消。可以通过发送字符来显示。

责任编辑:德勤钢铁网 标签:

热门搜索

相关文章

广告
德勤钢铁网 |市场分析

stm32f4内部温度传感器,stm32温度传感器工作原理

chanong

|

STM32本身内置了温度传感器,但是由于芯片温升较高等问题,与实际温度相差很大,所以本章介绍如何利用STM32读取芯片的温度来做。使用外部数字温度传感器获得更准确的环境温度。在本章中,您将学**如何使用单总线技术实现STM32与外部温度传感器(DS18B20)之间的通信,并将从温度传感器获取的温度数据通过printf 输出到串口助手上。本章分为以下学**目标: 1. 学**操作DS18B20。 1.1 DS18B20 概述DS18B20 是达拉斯半导体公司推出的一款具有“单线总线”接口的温度传感器。与传统热敏电阻等测温元件相比,它是一种新型数字温度传感器,具有体积小、适用电压范围广、与微处理器接口简单等优点。简单、经济的1线总线结构可以轻松构建传感器网络,并引入了构建测量系统的新概念。测量温度范围为-55至+125C,精度为0。 5。现场温度通过“一线总线”直接数字化传输,大大提高了系统的抗干扰能力。可直接读取被测温度,并可根据实际需求通过简单编程实现9-12位数字值读取模式。我的工作时间为3:00 至5:00。 5V电压范围有多种封装格式,使系统设计灵活方便,设置的分辨率和用户设置的报警温度存储在EEPROM中,即使断电也能保留。该图显示了其内部结构。

ROM中的64位序列号是出厂前光刻的,可以认为是DS18B20的地址序列号。每个DS18B20 的64 位序列号都是唯一的。 64 位ROM 包括:前8 位是产品系列代码,接下来的48 位是DS18B20 序列号,最后8 位是之前的56 位循环冗余校验码(CRC=X8)。 +X5+X4+1)。 ROM的功能是使每个DS18B20都是独一无二的,并允许多个DS18B20连接到一条总线上。所有单总线设备都需要严格的信号时序以确保数据完整性。 DS18B20有六种信号类型:复位脉冲、确认脉冲、写0、写1、读0和读1。除确认脉冲外,所有这些信号均由主机同步。所有命令和数据首先发送字节的低位。这里我们简单介绍一下这些信号的时序。 1) 复位脉冲和响应脉冲单个总线上的所有通信都以初始化序列开始。主机输出低电平并保持低电平至少480us,以产生复位脉冲。然后主机释放总线,4.7K 上拉电阻将单总线拉高,延迟15-60 us,进入接收模式(Rx)。然后,DS18B20 将总线拉低60 至240 us,并生成低电平响应脉冲,如果为低电平,则延迟480 us。 2)写时序包括写0时序和写1时序。所有写入序列至少需要60微秒,并且两个独立写入序列之间至少需要1微秒恢复时间。两个序列均以主机将总线拉低开始。写1时序:主机输出低电平,延时2us,然后释放总线,延时60us。写0时序:主机输出低电平,延时60us,然后释放总线,延时2us。 3)读时序单总线设备只有在主机发出读时序时才向主机发送数据,因此主机发出数据读命令后,从机立即产生读时序,以便发送数据。所有读取序列至少需要60s,并且两个独立读取序列之间需要至少1s的恢复时间。每个读取序列均由主机发起,主机将总线拉低至少1us。主设备必须在读取序列期间释放总线,并在序列开始后15us 内采样总线状态。一般读取时序流程如下:主机延时2us输出低电平,延时12us切换到输入模式,然后读取单总线当前电平,延时50us。了解完单总线时序后,我们来看一下DS18B20 的典型温度读取流程: DS18B20 的典型温度读取流程为: 复位发出SKIP ROM 命令(0XCC) 启动转换命令(0X44) 延迟复位SKIP 发送ROM 命令(0XCC) 发送存储器读命令(0XBE) 连续读取2 个字节的数据(温度等)。结尾。我们在这里对DS18B20 进行介绍,但更详细的介绍请参阅DS18B20 技术手册。 1.2 DS18B20电路图

从原理图中我们可以看出,DS18B20 使用的是单片机PG11。 1.3 初始化DS18B20 1. 在初始化之前,我们需要先初始化IO 端口。

/**************************************************** * **** ************************************* 函数名称: ds18b20_init* 函数功能: IO端口时钟初始化功能* 输入: 无* 输出: 无******************************************** **** * **** ******************************/void ds18b20_init(){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOG,ENABLE) ) ;GPIO_InitStructure.GPIO_Pin=dq;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIO_ds18b20,GPIO_InitStructure);}引脚定义在头文件中。

#define dq (GPIO_Pin_11) //PG11#define GPIO_ds18b20 GPIOG#define ds18b20_dq_H GPIO_SetBits(GPIO_ds18b20,dq)#define ds18b20_dq_L GPIO_ResetBits(GPIO_ds18b20,dq) 2. DS18B20 初始化主机发送第一次。 480 到960 微秒的低电平脉冲,然后将总线释放到高电平,并在接下来的480 微秒内检测总线。如果看到低电平,则表示总线上的设备已响应。当没有低电平时,始终存在高电平,表示总线上没有任何设备响应。 DS18B20作为从设备,一上电就检测总线上是否有低电平480到960微秒,如果有,则等待15到60微秒后总线变为高电平。关闭总线电源并通过持续60 至240 微秒的低脉冲进行响应,向主机发出设备已准备就绪的信号。如果没有检测到,则继续检查并等待。 3.初始化时序图

4、例程代码:

/**************************************************** * **** ************************************* 函数名称: ds18b20init* 函数功能: DS18B20初始化时序* 输入: 无* 输出: 无******************************************** ************** * ****** ****************************** **/void ds18b20init(){DQOUTINT();//输出ds18b20_dq_L;lay_us(480);//延迟480 微秒ds18b20_dq_H;lay_us(480);//延迟480 微秒}1.4 DS18B20 读操作下发的各种操作命令主机包括向DS18B20 写入0 和1。由写入组成的命令字节。接收数据时,进程读取同样从DS18B20 发送的0 或1。因此,首先要了解主机是如何写0、写1、读0、读1的。写入周期最短为60 微秒,最长为120 微秒。当写周期开始时,主器件将总线拉低1 微秒,以指示写周期开始。然后,如果主机想要写入0,则将总线设置为低电平,如果主机想要写入1,则将总线设置为高电平至少60微秒,直到写入周期完成,然后释放它。为了恢复总线,允许总线变高至少1 微秒。 DS18B20 检测到总线被拉低后,会等待15 微秒,并开始对总线进行15 s 至45 s 采样。采样期间总线处于高电平。这是1。如果采样期间总线为低电平,1. 读操作时序图

2. 加载运行程序

/**************************************************** * **** ************************************* 函数名称: DS18b20rd* 函数功能: DS18B20读取数据时序* 输入: 无* 输出: 值**************************************** ********** ** *** ********************************** **********/u8 DS18b20rd(){u8 i=0,value=0; for( i=0 ;i8;i++){value=1;DQOUTINT();//输出ds18b20_dq_L;//下拉Late_us(4);//延迟4 微米ds18b20_dq_H;lay_us(10);//延迟10 微米DQININT() ;//输入设置if(GPIO_ReadInputDataBit(GPIO_ds18b20,dq)==1){ value|=0x80; //从低位读取数据}delay_us(45);//delay 45的微妙之处}返回值; }1.5 DS18B20写数据读操作的时序也分为两个过程:读0时序和读1时序。读周期开始于主机将单总线拉低1微秒,然后将单总线释放到高电平,允许DS18B20在单总线上发送数据。作为从机,DS18B20在检测到总线为低电平1微秒后开始发送数据,如果要发送0,则将总线拉低,直到读周期结束。如果要发送1,则将总线释放到高电平。主机首先将总线拉低1微秒,释放总线,并在15微秒内完成总线采样和检测,包括之前1微秒的总线电平下拉。为低电平,确认为0。如果采样期间总线为高电平,则检查为1。读取计时过程至少需要60 微秒才能完成。 1、写操作时序图

2.编写运行程序

/**************************************************** * **** ************************************* 函数名称: ds18b20wr* 函数功能: DS18B20写入数据时序* 输入: dat* 输出: 无******************************************** ********** * **** ********************************** *****/void ds18b20wr(u8 dat){u8 i=0;DQOUTINT(); //输出for(i=0;i8;i++){ds18b20_dq_L;//下拉延迟15 if((dat0x01)==1){ds18b20_dq_H;}else{ds18b20_dq_L;}delay_us( 60) ;//延迟60 Subtle ds18b20_dq_H;dat=1;//准备发送下一位数据}} 1.6 DS18B20寄存器介绍1. 内部结构DS18B20主要由四部分组成。 1)64位光刻ROM 刻刻ROM中的64位序列号是在出厂前照相刻刻的,可以认为是DS18B20的地址序列号。 64位光刻ROM的配置是前8位(地址:28H)是产品型号,接下来的48位是DS18B20的序列号,每个DS18B20都有不同的序列号。因此,这可以认为是DS18B20的地址序列码,最后8位是前面的56位循环冗余校验码(CRC=X8+X5+X4+1)。由于每个DS18B20都有不同的ROM数据,因此单片机可以通过一条总线对多个DS18B20进行寻址,从而达到一条总线上有多个DS18B20的目的。

2) 温度传感器3) 非易失性温度报警触发器TH 和TL4) 配置寄存器。 2. DS18B20 的存储器由高速暂存RAM 和非易失性电可擦除(E2) RAM 组成。

我们来看一下配置寄存器的第四个字节(CONFIG)。

R0 和R1 的默认设置为11。这是12 位分辨率,因此1 位代表0.0625 摄氏度。 1.7DS18B20命令介绍

1.8 温度读取操作1. 温度读取操作DS18B20 转换后的温度值以2 字节补码格式存储在高速缓存的字节0 和1 中。所以如果你只是想读取温度值,你可以只读取临时寄存器的第0和第1字节。读取一次D18B20的温度: a) 初始化DS18B20。 b) 跳过ROM操作(可以在ROM中读取DS18B20的地址、型号、配置分辨率;由于只使用了一颗DS18B20,所以不需要读取地址型号,默认的12位分辨率即可直接使用。) c) 发送温度转换命令。 d) 跳过ROM 操作。 e) 发送温度读取命令。 f) 读取温度值。 2 补码简介什么是补码? 1) 正数的补码就是正数本身。 2) 负数的补码是将原数的符号反转并加1。 DS18B20 中存储的温度值是以补码格式存储的,因此读出的温度值将是实际温度值的补码,必须转换为原始代码。 1)如果温度为正,则原码就是补码本身,所以在12位分辨率下,温度公式为:温度值=读数值*0.06252)如果温度为负,则原码减去补码。因此,在12 位分辨率下,公式为: 温度值=-(读数减1 并取反)* 0.06253。 读取温度编程功能

/**************************************************** * **** ******************************** 函数名称: readtemp* 函数功能: DS18B2 温度寄存器设置,温度读取* 输入: 无* 输出: 值******************************************** * ****** ************************************/double readtemp() //读取温度需要复位{u16 temp;u8 a,b;double value;ds18b20init(); //初始化ds18b20wr(0xcc); //忽略发送ROM 命令ds18b20wr(0x44); //发送温度转换命令Send Late_ms (800); ds18b20init(); //ds18b20wr(0xcc); //发送ROM忽略命令ds18b20wr(0xbe); //发送临时寄存器读命令a=DS18b20rd(); //寄存器温度的低8位b=DS18b20rd();//温度位的高8位temp=b;temp=(temp8)+a;if((temp0xf800)==0xf800){temp=(~temp)+1;value=temp* (-0.0625);}else{ value=temp*0.0625; }返回值;}1.9 例程主函数

/**************************************************** * **** ***************************************** 函数名称: main* 说明: 主程序。 * 输入: 无* 输出: 无* 返回值: 无***************************************** ****************************************************** *****************/int main(){double temp;printf_init();//printf初始化ds18b20_init();//DS18B20初始化while(1){temp=readtemp (); //读取温度printf('当前温度为: %0.4lf \r \n',temp);}}主程序的作用是读取温度。其值通过printf 输出打印到串口助手,如下所示:

下载程序后,打开串口,查看DTR,然后取消。可以通过发送字符来显示。


市场分析