這次學習到了ds18b20溫度感測器
由於藍橋杯比賽時給出了ds18b20的驅動程式onewire.c, 所以我們不再敘述ds18b20的時序圖.
直接上ds18b20的rom指令表:
由於開發板只有乙個溫度感測器, 所以上表中我們只有cch,44h,beh指令我們用的到.
控制思路是:先初始化ds18b20, 然後寫入指令cch,和44h,等待溫度轉化完成, 這時候感測器所採集到的溫度值儲存在了9位元組的rom中. 所以我們要再寫入指令cch和beh來獲取12位的溫度值.
其中比較重要的點就是關於12位資料的溫度值轉換問題: 12位資料中,高8位是整數資料,低4位是小數部分,精度為2的-4次方,即0.0625.
因為這次學的比較簡單, 所以我們直接貼 main.c 的**:
//在數碼管實時顯示ds18b20讀取到的溫度數值
#include #include "onewire.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit buzz=p0^6;
sbit relay=p0^4;
uchar code table=;
uchar disbuff[8]=;
uchar displaydata=;
uchar discom,n;
void closebuzz();
void display();
void closeled();
void temppros();
//自己寫讀取溫度程式
unsigned int ds18b20readtemp();
void main()
}void closebuzz()
void closeled()
void timeoint() interrupt 1
}//自己寫讀取溫度程式
unsigned int ds18b20readtemp()
void temppros()
void display()
{ p0=0xff;
p2=(p2&0x1f)|0xe0;
p2&=0x1f;
p0=(1實驗效果為在數碼管實時顯示ds18b20讀取到的溫度數值.
藍橋杯溫度DS18b20的驅動直觀理解
對於藍橋杯比賽,很多人對於比賽官方給出的三個驅動不知道怎麼具體使用。其實官方給出的驅動是在原有的晶元基礎上做出的驅動,但是後來比賽官方對比賽專用版ct107d上使用了iap1f2k61s2轉接板,驅動的一些位置都相應的做出了該變。首先對於驅動,我們的看法是去建立乙個存在主函式的c 檔案去呼叫這個驅動...
DS18B20溫度測量
1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入開始轉換的功能命令,0x44。4.延遲大約 750 900 毫秒 1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入讀暫存的功能命令,0xbe。4.讀入第 0 個位元組 ls byte,轉換...
DS18B20溫度換算
dsi8b20接收到溫度轉換命令後,開始啟動轉換。轉換完成後的溫度值就以16位帶符號擴充套件的二進位制補碼形式儲存在高速暫存儲存器的0,1位元組。微控制器可通過單線介面讀到該資料,讀取時低位在前,高位在後,資料格式以0 062 5 lsb形式表示。溫度值格式如表2.2.1所示,其中 s 為標誌位,對...