ds18b20温度传感器应用实例
扫描二维码
随时随地手机看文章
/*
*******************************************************************************
*文件名:main.c
*描述:温度传感器DS18B20示例
*备注:控制DS18B20测量温度并将温度值显示到液晶上
*******************************************************************************
*/
#include
#include"stdint.h"
externbitstartDs18b20();
externbitgetDs18b20Temperature(int*temp);
externvoidinitLcd1602();
externvoidlcd1602ShowStr(uint8_tx,uint8_ty,uint8_t*str);
externuint8_tgetIntPart(int16_ttemp);
externuint8_tgetDecPart(int16_ttemp);
bitflag1s=0;//1s定时标志
uint8_tT0RH=0,T0RL=0;
voidConfigTimer0(uint16_tms);
uint8_tIntToString(uint8_t*str,int16_tdat);
voidmain(){
bitres;
int16_ttemp;//读取到的当前温度值
uint8_tintT,decT;//温度值的整数和小数部分
uint8_tlen;
uint8_tstr[12];
EA=1;//开总中断
ConfigTimer0(10);//T0定时10ms
startDs18b20();//启动DS18B20
initLcd1602();//初始化液晶
while(1){
if(flag1s){//每秒更新一次温度(软实时)
flag1s=0;
res=getDs18b20Temperature(&temp);//启动转换后至少要再等750ms之后读取当前温度
if(res){//读取成功时,刷新当前温度显示
intT=getIntPart(temp);//分离出温度值整数部分
decT=getDecPart(temp);//分离出温度值小数部分
len=IntToString(str,intT);//整数部分转换为字符串
str[len++]='.';//添加小数点
str[len++]=decT+'0';//十进制小数位再转换为ASCII字符
while(len<6){//用空格补齐到6个字符长度
str[len++]='';
}
str[len]='