STM32F407入门开发: DS18B20温度传感器应用

一、ds18b20硬件原理图与功能介绍 ds18b20是数字温度传感器,单总线接口,读取温度只需要一个io口,还有不同的封装形式,支持不同的环境。每个ds18b20还有64位的光刻rom序列号,支持一个io口上挂载多个ds18b20时,区分设备,也就是支持级联,非常方便,不费io口。
下面就介绍在stm32f407上面如果驱动ds18b20读取温度,代码采用keil编写,采用多文件的形式,代码分为3个部分:
ds18b20.c文件,主要是核心函数的实现。 ds18b20.h文件,函数的声明。 main.c文件。主函数,调用ds18b20读取文件,并换算之后打印出来。 下面是ds18b20在开发板上的原理图:
二、ds18b20核心代码 2.1 ds18b20.c源码#include ds18b20.h/*函数功能:ds18b20io口初始化硬件连接:pg9复用表示自动输出数据通用表示手动输出数据*/void ds18b20_init(void){ /*1. 开时钟*/ rcc->ahb1enr|=1<=1; if(ds18b20_in) { data|=0x80; } delayus(50); } return data;}/*写一个字节到ds18b20dat:要写入的字节*/void ds18b20_writebyte(u8 dat) { u8 i; ds18b20_output(); //初始化io为输出模式 for(i=0;i>=1; }}/*从ds18b20得到温度值精度:0.1c返回值:温度值 (-550~1250) */short ds18b20_get_temp(void){ u16 temp; u8 tl,th; ds18b20_output(); ds18b20_out=0; //输出0 //拉低dq delayus(750); //拉低750us ds18b20_out=1; //输出1 //dq=1 delayus(15); //15us ds18b20_check(); ds18b20_writebyte(0xcc); //跳过芯片id检测 ds18b20_writebyte(0x44); //转换一次温度 ds18b20_output(); ds18b20_out=0; //输出0 //拉低dq delayus(750); //拉低750us ds18b20_out=1; //输出1 //dq=1 delayus(15); //15us ds18b20_check(); ds18b20_writebyte(0xcc);// 跳过芯片id检测 ds18b20_writebyte(0xbe);// 读取转换成功的温度数据 tl=ds18b20_readbyte(); // lsb th=ds18b20_readbyte(); // msb temp=((u16)th 4; //分离出温度值整数部分 dect = temp & 0xf; //分离出温度值小数部分 printf(ds18b20: %d.%d *c\r\n,(int)intt,(int)dect); delayms(1000); }}复制代码 温度读取效果

气密性检测仪在手机防水检测中的应用
鸿利智汇获评“2022年度科技创新示范企业”
骁龙888等多款5G芯片均支持三ISP,捕捉景物如钻石般璀璨切面
STM32单片机是怎样执行中断函数中的应用的
派拓网络帮助企业了解和防范可能面临勒索软件威胁
STM32F407入门开发: DS18B20温度传感器应用
虹科免拆诊断 | 2019 款起亚福瑞迪车发动机故障灯偶尔异常点亮
全球最大NOR闪存芯片企业收购“镇江隆智”
如何用ATTINY45制作SD卡音乐播放器
屏幕与电脑连接的方式
WiFi对比ZigBee,谁更适合智能家居
益莱储最新5G测试解决方案一览
电流保险丝在压敏电阻中的错误应用
鸿利智汇发布年度业绩预告,LED封装、汽车照明业务快速发展
EDI助力JIT和精益生产,为汽车行业带来广泛好处
801!致所有FPGA初学者们
Intersil推出新型高速模数转换器ISLA214P50
韩国前9个月对华半导体出口总额大幅下降
户外电源测试测什么?如何用电源模块测试系统测试户外电源?
Autodesk工作流程:工作站到平板电脑