找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3544|回復: 7
打印 上一主題 下一主題
收起左側(cè)

怎么實現(xiàn)單片機超溫報警?

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83006 發(fā)表于 2015-6-14 21:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
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();  //延時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讀到的溫度當超過80時進行報警,那我該如何設置這個判斷條件?
為什么我這樣不對:
void Alarm(void)
{
unsigned int temp,;
  temp=ReadTemperature();
if(temp>80)
{
   Alarm_LED=0;
  Alarm=0;
}
}為什么我自proteus上我把溫度調(diào)在80以下還是執(zhí)行了報警
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:79908 發(fā)表于 2015-6-15 08:34 | 只看該作者
讀出的溫度值用uchar能夠儲存,但左移八位后就不能了,此時b = 0,所以t的值就是a的值。

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:82841 發(fā)表于 2015-6-15 10:24 | 只看該作者
溫度傳感器
回復

使用道具 舉報

地板
ID:83006 發(fā)表于 2015-6-16 13:20 | 只看該作者
電子愛好者life 發(fā)表于 2015-6-15 08:34
讀出的溫度值用uchar能夠儲存,但左移八位后就不能了,此時b = 0,所以t的值就是a的值。

嗯,后來我修改了,uint b=0,已經(jīng)能實現(xiàn)讀取到  的溫度了
回復

使用道具 舉報

5#
ID:83149 發(fā)表于 2015-6-16 13:43 | 只看該作者
50527978 發(fā)表于 2015-6-16 13:20
嗯,后來我修改了,uint b=0,已經(jīng)能實現(xiàn)讀取到  的溫度了

恭喜恭喜!就是有交流才有提高。!
回復

使用道具 舉報

6#
ID:81118 發(fā)表于 2015-6-22 22:14 | 只看該作者
DS18B20 剛上電讀取數(shù)值是85

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:83349 發(fā)表于 2015-6-27 13:35 | 只看該作者
單片機自身報警還是外部環(huán)境?
回復

使用道具 舉報

8#
ID:84179 發(fā)表于 2015-6-28 20:09 | 只看該作者
樓上真厲害
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表