器件DS18B20
STM32开发板
DS18B20数据手册
采集电路设计分析:由其数据手册知,DS18B20支持多点采集设计,我们参考基本原理设计了多点采集。目前设计由两个DS18B20传感器构成的电路。
报警电路分析:一个温度采集系统,离不开温度报警。当所采集的温度超过所设定的温度时,我们可以立即对当前警告做出响应。比如当电饭煲中已经把饭煮好了,那么报警电路发出“滴滴滴”告诉人们饭已经做好了。道理是相同的。
时钟复位电路分析:在很多时候,一个系统并不是很稳定,常常容易出现程序跑飞的情况。那么我们应该通过复位来使得程序回归正常。就像我们常常在电脑出错时,把电脑还原了一样。
启动温度转换:DS18B20_Rst(); DS18B20_Check(); DS18B20_Write_Byte(0xcc);// skip romDS18B20_Write_Byte(0x44);// convert先发出温度转换命令,让所有温度传感器接收温度转换命令。此时并不会发生“与”错误,器件不会对命令做出回答,而执行命令。
匹配ROM://附ROM内存表static u8 DS18_ROM[2][8] = {{0x28,0x16,0xEB,0x67,0x05,0x00,0x00,0x7E}, {0x28,0x75,0x7F,0x68,0x05,0x00,0x00,0xD6}};DS18B20_Rst();DS18B20_Check(); DS18B20_Write_Byte(0x55);// skip romfor(i=0;i<8;i++){ DS18B20_Write_Byte(DS18_ROM[cnt][i]);}在发出温度转换命令之后,重新复位搜索DS18B20器件,然后匹配相同的ROM ,之后便是寄存器操纵。
读取数据:DS18B20_Write_Byte(0xbe);// convert TL=DS18B20_Read_Byte(); // LSB TH=DS18B20_Read_Byte(); // MSB tem=TH; //获得高八位 tem<<=8; tem+=TL;//获得低八位 tem=(float)tem*0.625;//转换 扩大了10倍寄存器操作时,发出读命令,然后对数据的寄存器低、高字节进行数据读取。然后对所读到的数据进行处理。
底层程序的编写请参考下面程序。https://jingyan.baidu.com/article/14bd256e606d52bb6d2612d4.html
如果本经验帮到了您,请点击右侧“双箭头”分享给您的朋友吧!想了解更多经验内容,请在右上角“关注”我吧!