標(biāo)題: 怎么實(shí)現(xiàn)單片機(jī)超溫報(bào)警? [打印本頁]

作者: 50527978    時(shí)間: 2015-6-14 21:43
標(biāo)題: 怎么實(shí)現(xiàn)單片機(jī)超溫報(bào)警?
DS18B20的初始化,讀字節(jié),寫字節(jié)已省略
unsigned int ReadTemperature(void)   //讀取溫度
{
uchar a=0,b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xcc); //跳過讀序號列表的操作
WriteOneChar(0x44); //啟動溫度轉(zhuǎn)換
time_delay();  //延時(shí)10ms
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0xbf);   //讀取溫度
a=ReadOneChar();  //  低位
b=ReadOneChar();  //   高位
b<<=8;
t=a+b;
t=t*0.0625*10+0.5;
return(t);
}
問題:我想讓DS18B20讀到的溫度當(dāng)超過80時(shí)進(jìn)行報(bào)警,那我該如何設(shè)置這個判斷條件?
為什么我這樣不對:
void Alarm(void)
{
unsigned int temp,;
  temp=ReadTemperature();
if(temp>80)
{
   Alarm_LED=0;
  Alarm=0;
}
}為什么我自proteus上我把溫度調(diào)在80以下還是執(zhí)行了報(bào)警

作者: 電子愛好者life    時(shí)間: 2015-6-15 08:34
讀出的溫度值用uchar能夠儲存,但左移八位后就不能了,此時(shí)b = 0,所以t的值就是a的值。
作者: 韓清    時(shí)間: 2015-6-15 10:24
溫度傳感器
作者: 50527978    時(shí)間: 2015-6-16 13:20
電子愛好者life 發(fā)表于 2015-6-15 08:34
讀出的溫度值用uchar能夠儲存,但左移八位后就不能了,此時(shí)b = 0,所以t的值就是a的值。

嗯,后來我修改了,uint b=0,已經(jīng)能實(shí)現(xiàn)讀取到  的溫度了
作者: bolang0927    時(shí)間: 2015-6-16 13:43
50527978 發(fā)表于 2015-6-16 13:20
嗯,后來我修改了,uint b=0,已經(jīng)能實(shí)現(xiàn)讀取到  的溫度了

恭喜恭喜!就是有交流才有提高!!
作者: 歡騰智能科技    時(shí)間: 2015-6-22 22:14
DS18B20 剛上電讀取數(shù)值是85
作者: jasone    時(shí)間: 2015-6-27 13:35
單片機(jī)自身報(bào)警還是外部環(huán)境?
作者: angerliudan    時(shí)間: 2015-6-28 20:09
樓上真厲害




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1