ds18b20

stm32--温度传感器DS18B20使用

只谈情不闲聊 提交于 2020-03-17 07:56:54
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃。主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值.本例VCC用3.3V 供电,将DQ连接结到stm32的PA1口, DB18B20ForStm32.c #include "ds18b20.h" #define EnableINT() #define DisableINT() #define DS_PORT GPIOA //DS18B20连接口 #define DS_DQIO GPIO_Pin_1 //GPIOA1 #define DS_RCC_PORT RCC_APB2Periph_GPIOA #define DS_PRECISION 0x7f //精度配置寄存器 1f=9位; 3f=10位; 5f=11位; 7f=12位; #define DS_AlarmTH 0x64 #define DS

DS18B20温度传感器实现代码

寵の児 提交于 2020-03-17 07:55:42
平台: freescale CodeWarrior MCU:MC9S12G128(汽车级芯片) #include "Ds18b20.h" /************************************************************ * DS18B20 status initialization ************************************************************/ #pragma MESSAGE DISABLE C12056 //屏蔽警告 INT8U Ds18b20StsInit(void) { INT8U ack = DB_OK; INT16U outTime = 500; //DisableInterrupts /* 初始化状态 */ BUS_DIR = HIGH; BUS = HIGH; DelayUs(8); /* 拉低BUS,延时500us */ BUS = LOW; DelayUs(480); /* BUS上拉,延时15us-60us */ BUS = HIGH; DelayUs(30); /* BUS设置为输入 */ BUS_DIR = LOW; /* 等待DS18B20存在脉冲做出回应,0正常,60-240us */ DelayUs(8); while(BUS) { --outTime

Linux编程实现DS18B20对树莓派温度的探测

 ̄綄美尐妖づ 提交于 2020-03-04 07:14:00
目录 (一)项目简介 (二)代码以及调试 (三)总结 (一)项目简介 DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点,本次实验项目是依据树莓派对DS18B20 1线温度传感器的支持(一线协议),再通过编程实现温度的探测。 DQ 为数字信号输入/输出端; GND 为电源地; VCC 为外接供电电源输入端; 其中两者端口的连接方式如下: 树莓派 的 ground 端(pin 06脚)------------连接DS18B20的 GND的端口; 树莓派的 gpio 04 端(pin 07 脚)--------------连接DS18B20的 DQ的端口; 树莓派的 3.3V 端(pin 01脚)-------------连接DS18B20的 VCC端口; (二)代码以及调试 1.通过SecurtCRT远程登录到树莓派服务器上,并找到该文件所在的位置,如下图在根目录下的w1_slave文件中: 先调用 open() , read() , close() 三个基本的文件I/O函数进行文件内容的读取: int main ( int argc , char * * argv ) { int fd ; char buf [ 128 ] ; fd = open ( "/sys/bus/w1/devices/28-041731f7c0ff

环境参数智能监测站设计(说明书篇)

非 Y 不嫁゛ 提交于 2020-01-22 17:01:08
摘要 环境参数监控系统,价格高,功耗较大,移动性较差,需要较高的硬件与软件支持,数据采集端与监控端需要通过很多很长的通信线进行连接,从而使得系统稳定性不高,对于多参数多点监控的场所,传统设备不能满足其节点数量的要求,可行度不高,空间占用率较大。鉴于以上不足之处,我们设计一种多节点组网一监控终端的智能环境参数监控系统,以方便和适应现代化的信息管理模式。该系统采用数字化数据采集,模块化处理,便于系统维护以及数据收集。 本系统设计是从低成本、低功耗、高效率等概念出发,采用12位单片机STM32F103C8T6为处理核心,在数据采集节点端控制一系列的传感器(如DS18B20、DHT11、MQ-135、光敏二极管、雨滴传感器、土壤水分传感器等)来采集环境参数,使用蜂鸣器与STM32F103C8T6连接做为系统的报警器,如有参数超标就发出声响进行警报,同时使用NRF24L01发送数据到监控终端。具有实时性、稳定性、高效性、操作简单等特点,这样便于解决环境参数的采集和监控。本文以STM32F103C8T6超低功耗单片机为核心,设计了多个环境数据采集节点和监控终端即环境参数智能监测站,重点介绍了该系统的设计任务、硬件、软件以及控制算法的设计与实现。硬件方面,介绍了系统各个部分的设计思想、原理电路以及系统总硬件原理图;另外,为了实现系统低成本和低功耗,满足设计要求的前提下

51单片机复习:DS18B20

北战南征 提交于 2019-12-31 19:57:24
DS18B20温度传感器:(初始化,写字节,读字节,发送温度转换命令,发送读取温度命令,读取温度) 1.一些注意点: .适应电压范围更宽,电压范围:3.0~5.5V .测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃ .可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃ 和0.0625℃,可实现高精度测温。 .在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms 内把温度值转换为数字,速度更快。(非常显然,分辨率越高,也就意味着精度越高,肯定耗费时间更多啦) .这里特别需要注意的是,DS18B20采用的是单总线 .注意不要接反 2.内部结构: .64位激光刻只读寄存器(rom) 64位光刻ROM的排列是:开始8位(28H)是产品类型标号(产品什么类型的),接着的48位是该DS18B20自身的序列号 (有了序列号同一类型就分得清了), 最后8位是前面56位的循环冗余校验码(也就是CRC,对通信的可靠性检查就需要‘校验’, 校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠, 如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。)。 光刻ROM的作用是使每一个DS18B20都各不相同, 这样就可以 实现一根总线上挂接多个DS18B20的目的。 .温度转换规则

DS18B20 for STM32 源代码 【worldsing笔记】

不羁岁月 提交于 2019-12-21 09:08:12
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃。主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值.本例VCC用3.3V 供电,将DQ连接结到stm32的PA1口, DS18B20 STM32 源代码下载 DB18B20ForStm32.c #include "ds18b20.h" #define EnableINT() #define DisableINT() #define DS_PORT GPIOA //DS18B20连接口 #define DS_DQIO GPIO_Pin_1 //GPIOA1 #define DS_RCC_PORT RCC_APB2Periph_GPIOA #define DS_PRECISION 0x7f //精度配置寄存器 1f=9位; 3f=10位; 5f=11位; 7f=12位; #define DS_AlarmTH

温度传感器--DS18B20的使用

你离开我真会死。 提交于 2019-12-09 12:59:26
一、DS18B20简介 1.DS18B20是由达拉斯半导体公司生产的可编程分辨率的单总线数字温度计。 2.特征 a>通过单总线协议进行通信。 b>每个器件有唯一的 64位 的序列号存储在内部存储器中。 c>多点分布式测温应用。 d>通过数据线供电,供电范围为3.0 ~ 5.5 V。 e>测温范围为 -55 ~ +125℃ ,其中在-10 ~ +85℃范围内精确度为 ±5 ℃。 ???? f>温度计分辨率可以被使用者选择为 9 ~ 12位。 g>最多在750 ms内将温度转换为12位数字。 3.工作状态下的两种供电方式 4.内部结构图 DS18B20内部 = 64位ROM(地址序列码) + 9字节暂存器。 9字节暂存器包括:温度传感器、上限触发TH高温报警器、下限触发TL低温报警器、高速暂存器、8位CRC产生器。 9字节暂存器结构图如下所示, byte 0 : 温度 LSB (50h) byte 1 : 温度 MSB(05h) EEPROM byte 2 : TH用户定义字节1 <---> TH用户字节1 byte 3 : TL用户定义字节2 <---> TL用户字节2 byte 4 : 配置寄存器 <---> 配置寄存器 byte 5 : 保留位(FFh) byte 6 : 保留位(0Ch) byte 7 : 保留位(10h) byte 8 : CRC校验位 64位ROM结构 =

单片机综合练习 - 多功能时钟

大兔子大兔子 提交于 2019-11-29 06:33:27
结合前几天来写过的文章, 今天总算写了一个功能较多的应用 - 多功能时钟, 集时钟, 秒表, 温度计一体. 基础文章: 1. 单片机练习 - DS18B20温度转换与显示 2. 用C51编写单片机延时函数 3. 单片机练习 - 定时器 4. 单片机练习 - 计时器 实验板: TX-1B实验板 6位数码管与单片机的连接电路图 按键S2, S3与单片机的连接电路图: 其中S2与P3.4连, S3与P3.5连接... DS18B20与单片机连接电路图: 具体按键功能分配请看源代码注释部分: 多功能时钟 1 // 多功能时钟, 精确到小数0.01秒, 即10ms 2 // 功能: 时钟, 秒表, 温度计 3 4 /**/ /* 5 S5键为功能选择键, 上电默认使用时钟功能 6 功能顺序为: 时钟, 温度计, 秒表 7 8 mode = 1. 时钟(每次掉电后都要重新设置时间) 9 1)当选中时钟功能时, 具体按键功能如下: 10 11 2)可设置时分秒, 时利用发光二极管显示, 分秒用数码管显示 12 13 3)时钟: 采用定时器0计时, 工作方式1 14 15 mode = 2. 时钟设置模式 16 当选中时钟设置模式 17 S2为位选, S3为增加选中位的值 18 S4确定更改, S5放弃更改, 进入秒表模式 19 20 mode = 3. 秒表 21 1)当选中秒表功能时,

单片机练习 - 使用1602LCD显示DS18B20的温度值

会有一股神秘感。 提交于 2019-11-26 15:51:15
关于DS18B20电子温度器件可查看 单片机练习 - DS18B20温度转换与显示 . 本文主要讲述如何使用LCD. 具体过程解释可查看代码注释. 程序代码: 1602LCD 1 // 1602液晶显示程序, TX-1B实验板上的1602LCD的R/W读写端接地, 即始终只写, 不读数据 2 // 使用1602LCD显示DS18B20转换的温度值 3 #include < reg52.H > 4 #include < intrins.H > 5 #include < math.H > 6 7 #define uchar unsigned char 8 #define uint unsigned int 9 sbit dula = P2 ^ 6 ; 10 sbit wela = P2 ^ 7 ; 11 12 sbit RS = P3 ^ 5 ; // 数据/命令选择端(H/L) 13 sbit LCDEN = P3 ^ 4 ; // 使能端 14 15 void delayUs() 16 { 17 _nop_(); 18 } 19 20 void delayMs( uint a) 21 { 22 uint i, j; 23 for (i = a; i > 0 ; i -- ) 24 for (j = 100 ; j > 0 ; j -- ); 25 } 26 27 //