while(DS18B20_Init()) //DS18B20³õʼ»¯ while(1)

时间: 2023-12-10 10:02:23 浏览: 20
这是一段 C 语言代码,其中使用了一个函数 DS18B20_Init() 进行 DS18B20 温度传感器的初始化,该函数的返回值为一个布尔值。当 DS18B20_Init() 函数返回真值时,while 循环会一直执行,直到函数返回假值。在 while 循环中,程序会一直等待 DS18B20 传感器准备就绪。一旦传感器准备就绪,程序将跳出 while 循环并执行下一条指令。程序的主函数将一直执行,直到程序被手动终止。
相关问题

#ifndef __DS18B20_H #define __DS18B20_H #include "sys.h" ////IO²Ù×÷º¯Êý #define DS18B20_DQ_IN GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11) //Êý¾Ý¶Ë¿Ú PA0 #define DS18B20_DQ_OUT(x) x ? GPIO_SetBits(GPIOA, GPIO_Pin_11): GPIO_ResetBits(GPIOA, GPIO_Pin_11) u8 DS18B20_Init(void);//³õʼ»¯DS18B20 short DS18B20_Get_Temp(void);//»ñÈ¡ÎÂ¶È short DS18B20_Get_Temp_WithID(uint8_t * ds18b20_id); void DS18B20_Start(void);//¿ªÊ¼Î¶Èת»» void DS18B20_Write_Byte(u8 dat);//дÈëÒ»¸ö×Ö½Ú u8 DS18B20_Read_Byte(void);//¶Á³öÒ»¸ö×Ö½Ú u8 DS18B20_Read_Bit(void);//¶Á³öÒ»¸öλ u8 DS18B20_Check(void);//¼ì²âÊÇ·ñ´æÔÚDS18B20 void DS18B20_Rst(void);//¸´Î»DS18B20 #endif

这是一个头文件 `DS18B20.h`,其中包含了一些宏定义和函数声明。 1. 宏定义: - `DS18B20_DQ_IN`:用于读取 DS18B20 的数据引脚状态,对应的是 PA11。 - `DS18B20_DQ_OUT(x)`:用于设置 DS18B20 的数据引脚状态,x 为 1 时输出高电平,为 0 时输出低电平。 2. 函数声明: - `u8 DS18B20_Init(void)`:DS18B20 初始化函数,返回值为 8 位无符号整数。 - `short DS18B20_Get_Temp(void)`:获取 DS18B20 的温度值,返回值为 16 位有符号整数。 - `short DS18B20_Get_Temp_WithID(uint8_t * ds18b20_id)`:获取带有 DS18B20 ID 的温度值,ds18b20_id 为 DS18B20 的 ID,返回值为 16 位有符号整数。 - `void DS18B20_Start(void)`:启动 DS18B20 的温度转换。 - `void DS18B20_Write_Byte(u8 dat)`:向 DS18B20 写入一个字节。 - `u8 DS18B20_Read_Byte(void)`:从 DS18B20 中读取一个字节。 - `u8 DS18B20_Read_Bit(void)`:从 DS18B20 中读取一个位。 - `u8 DS18B20_Check(void)`:检查 DS18B20 是否存在。 - `void DS18B20_Rst(void)`:复位操作,将 DS18B20 数据引脚拉低一段时间。

void main() { u8 i=0; int temp_value; u8 temp_buf[5]; ds18b20_init();//³õʼ»¯DS18B20 while(1) { i++; if(i%50==0)//¼ä¸ôÒ»¶Îʱ¼ä¶ÁȡζÈÖµ£¬¼ä¸ôʱ¼äÒª´óÓÚζȴ«¸ÐÆ÷ת»»Î¶Èʱ¼ä temp_value=ds18b20_read_temperture()*10;//±£ÁôζÈֵСÊýºóһλ if(temp_value<0)//¸ºÎÂ¶È { temp_value=-temp_value; temp_buf[0]=0x40;//ÏÔʾ¸ººÅ } else temp_buf[0]=0x00;//²»ÏÔʾ temp_buf[1]=gsmg_code[temp_value/1000];//°Ùλ temp_buf[2]=gsmg_code[temp_value%1000/100];//ʮλ temp_buf[3]=gsmg_code[temp_value%1000%100/10]|0x80;//¸öλ+СÊýµã temp_buf[4]=gsmg_code[temp_value%1000%100%10];//СÊýµãºóһλ smg_display(temp_buf,4); } }优化使在32度使蜂鸣器响

您可以参考下面的代码实现在温度达到32度时使蜂鸣器响起,并将温度显示在数码管上。 ```c #include <REG52.H> #include <DS18B20.h> #define uchar unsigned char #define uint unsigned int sbit DSPORT = P3^7; // DS18B20数据线 sbit beep = P1^7; // 蜂鸣器 uchar code smgduan[] = { // 0~9的段码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, // A~F的段码 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; uchar code gsmg_code[] = { // 0~9的码表,共10个 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; void delay(uint z) { uint x, y; for(x = z; x > 0; x--) { for(y = 114; y > 0; y--); } } void smg_display(uchar *dat, uchar num) { uchar i; for(i = 0; i < num; i++) { P0 = dat[i]; P2 = 0x7f ^ (1 << i); delay(1); } } void main() { uchar TL, TH, i = 0; int temp_value; uchar temp_buf[5]; ds18b20_init(); while(1) { i++; if(i % 50 == 0) { ds18b20_init(); delay(1); DS18B20WriteByte(0xcc); DS18B20WriteByte(0x44); delay(1); ds18b20_init(); delay(1); DS18B20WriteByte(0xcc); DS18B20WriteByte(0xbe); TL = DS18B20ReadByte(); TH = DS18B20ReadByte(); temp_value = TH; temp_value <<= 8; temp_value |= TL; temp_value = temp_value / 16; if(temp_value >= 32) { beep = 0; } else { beep = 1; } temp_buf[0] = gsmg_code[temp_value / 1000]; temp_buf[1] = gsmg_code[temp_value % 1000 / 100]; temp_buf[2] = gsmg_code[temp_value % 1000 % 100 / 10] | 0x80; temp_buf[3] = gsmg_code[temp_value % 1000 % 100 % 10]; smg_display(temp_buf, 4); } } } ``` 需要注意的是,上述代码中的`DS18B20.h`文件中需要包含DS18B20的相关函数实现,您需要根据自己的实际情况进行修改。另外,代码中使用了数码管和蜂鸣器,请根据自己实际的电路连接进行修改。

相关推荐

最新推荐

recommend-type

一种基于DS18B20的温度采集系统设计

在数字式温度传感器的内部一般包含有温度传感器、接口电路、存储器(或寄存器)、信号处理器和A/D转换器。与传统的模拟温度传感器相比,数字式温度传感器在器件微小化、抗干扰能力、可靠性、分辨率以及精度方面都具有...
recommend-type

DS18B20数据手册-中文版(带目录)

使用参见:https://handsome-man.blog.csdn.net/article/details/104530051
recommend-type

基于89C51和DS18B20的温度采集系统设计

本系统是以89C51单片机为控制核心技术的温度采集控制系统,介绍了与DS18B20温度传感器组成温度采集系统的设计方案。本温度采集系统的下位机采用89C51单片机为主控制器,利用DS18B20温度传感器进行溫度测量,采用...
recommend-type

基于AT89C51和DS18B20的最简温度测量系统

本文介绍一种新型的可编程温度传感器DS18B20,他能代替模拟温度传感器和信号处理电路,直接与单片机沟通,完成温度采集和数据处理。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合...
recommend-type

51单片机DS18B20测量温度实验

实验任务 用一片DS18B20构成测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+50度之间,用4位数码管显示出来。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。