DS18B20溫度傳感器 一、簡(jiǎn)介:
1.png (22.48 KB, 下載次數(shù): 60)
下載附件
2020-3-30 14:12 上傳
圖示有字的一面,注意GND 和VCC不要接反。工作電壓3.0v~5.5V,采集溫度-55度到正125度,可編程溫度9-12位,精度分別是0.5度,0.25度,0.125度0.0625度,默認(rèn)都是12位,12位轉(zhuǎn)換時(shí)間是750ms,9位是93.75ms,電壓負(fù)壓特性(不會(huì)因電源接反發(fā)熱燒壞)。 二、電路連接:
2.png (37.48 KB, 下載次數(shù): 79)
下載附件
2020-3-30 14:12 上傳
接一個(gè)上拉電阻。 三、通信方式: 單總線通信: 單總線是一種具有一個(gè)總線主機(jī)和一個(gè)或若干個(gè)從機(jī)的系統(tǒng)。嚴(yán)格按照器件的時(shí)間要求進(jìn)行復(fù)位,寫命令,讀寫數(shù)據(jù)等。整個(gè)過(guò)程在一條線上進(jìn)行。 四、DS18B20的內(nèi)部結(jié)構(gòu):
3.png (247.47 KB, 下載次數(shù): 67)
下載附件
2020-3-30 14:12 上傳
64位光刻ROM,溫度傳感器,非易失性的溫度報(bào)警觸發(fā)器TH和TL,配置寄存器。出廠前ROM的排列是:開始8位產(chǎn)品類型標(biāo)號(hào)(28H),接著48位是DS18B20全球唯一序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼。 DS18B20存儲(chǔ)器:
4.png (350.65 KB, 下載次數(shù): 62)
下載附件
2020-3-30 14:12 上傳
Byte0和Byte1分別存儲(chǔ)溫度寄存器的低字節(jié)和高字節(jié),這兩個(gè)字節(jié)是只讀的。我們一般只操作這兩個(gè)字節(jié)。
5.png (256.61 KB, 下載次數(shù): 58)
下載附件
2020-3-30 14:12 上傳
五、DS18B20的指令: 命令有兩種,一種ROM的指令,一種暫存器的指令。
6.png (788.7 KB, 下載次數(shù): 57)
下載附件
2020-3-30 14:12 上傳
六、操作時(shí)序: 分為4個(gè)步驟: 1. 復(fù)位:?jiǎn)纹瑱C(jī)發(fā)一個(gè)低電平給DS18B20,DS18B20返回一個(gè)低電平給單片機(jī),完成喚醒握手。 2. 發(fā)送ROM命令 3. 發(fā)送暫存器指令 4. 發(fā)送數(shù)據(jù)或接受數(shù)據(jù) 單個(gè)溫度測(cè)試代碼: 多點(diǎn)測(cè)試:(兩個(gè)) 步驟: 1. 先讀出每個(gè)傳感器的唯一ROM序列; - /*********************************
- * @函數(shù)名:DS18B20_Read_64Rom
- * @描 述:讀64位的ROM 唯一標(biāo)識(shí)
- * @說(shuō) 明:
- * @參 數(shù):*buffer 讀出的8個(gè)字節(jié)的數(shù)據(jù)
- * @返回值:無(wú)
- *********************************/
- void DS18B20_Read_64Rom(uchar *buffer)
- {
- uchar i;
- DS18B20_Reset();//復(fù)位
- DS18B20_Write_Com(0x33);//讀64位ROM
- for(i=0;i<8;i++) //讀取64個(gè)字節(jié)
- buffer[i]=DS18B20_Read_Data();
- }
復(fù)制代碼
7.png (40.36 KB, 下載次數(shù): 62)
下載附件
2020-3-30 14:12 上傳
2. 用兩個(gè)數(shù)組存讀出來(lái)的序列號(hào):
8.png (88.7 KB, 下載次數(shù): 70)
下載附件
2020-3-30 14:12 上傳
3.寫入ROm序列號(hào),并啟動(dòng)轉(zhuǎn)換溫度: - /*********************************
- * @函數(shù)名:DS18B20_Write_Rom
- * @描 述:寫64ROM
- * @說(shuō) 明:發(fā)送匹配ROM命令 0x55再寫入8字節(jié)的ROM
- * @參 數(shù):*buffer 要發(fā)送的存放ROM的數(shù)組
- * @返回值:無(wú)
- *********************************/
- void DS18B20_Write_Rom(uchar *buffer)
- {
- uchar i;
- DS18B20_Write_Com(0x55); //ROM匹配
- for(i = 0;i < 8;i++)
- DS18B20_Write_Com(buffer[i]); //寫入8個(gè)字節(jié)的ROM
- }
- /*********************************
- * @函數(shù)名:DS18B20_Handle
- * @描 述:溫度處理
- * @說(shuō) 明:1. 復(fù)位 2.發(fā)送ROM命令 3.發(fā)送暫存器指令 讀RAM 4.數(shù)據(jù)
- * @參 數(shù):無(wú)
- * @返回值:無(wú)
- *********************************/
- void DS18B20_Handle(uchar *buffer)
- {
- uchar xdata value_High,value_Low;
- float num;//保存小數(shù)
- DS18B20_Reset();//復(fù)位
- //DS18B20_Write_Com(0xcc);//發(fā)送指令CCH,跳過(guò)ROM操作
- //DS18B20_Write_Com(0x33);//讀64位ROM
- DS18B20_Write_Rom(buffer); //匹配ROM 并寫入64ROM
- DS18B20_Write_Com(0x44);//發(fā)送指令44H,啟動(dòng)溫度轉(zhuǎn)換
- Delay10us();
- DS18B20_Reset();//復(fù)位
- DS18B20_Write_Rom(buffer); //匹配ROM 并寫入64ROM
- DS18B20_Write_Com(0xbe);//發(fā)送指令BEH,讀取9字節(jié)RAM數(shù)據(jù)的前兩個(gè)數(shù)據(jù)
- Delay10us();
- value_Low=DS18B20_Read_Data();//先讀低字節(jié)Byte0
- value_High=DS18B20_Read_Data();//高字節(jié)Byte1
- value_High<<=4;//整數(shù)的高3位
- value_High+=(value_Low&0xf0)>>4;//整數(shù)的低4位
- DS18B20_Buffer[0]=value_High;//整數(shù)
- num=(value_Low&0x0f)*0.0625;//小數(shù)
- DS18B20_Buffer[1]=(uchar)(num*100);//小數(shù)
- }
復(fù)制代碼其他的都和單個(gè)測(cè)試是一樣的。 測(cè)試結(jié)果:
9.png (12.09 KB, 下載次數(shù): 71)
下載附件
2020-3-30 14:12 上傳
另外附上主函數(shù): - /*********************************
- * @函數(shù)名:main
- * @描 述:main函數(shù),程序入口
- * @說(shuō) 明:
- * @參 數(shù):無(wú)
- * @返回值:無(wú)
- *********************************/
- void main()
- {
- //uchar a[8];//存放讀出來(lái)的ROM
- Uart1_Init();//串口初始化
- Send_String("多點(diǎn)溫度測(cè)試:\n");
- while(1)
- {
- DS18B20_Handle(DS18B20_Rom1);
- printf("溫度1:%bd.%bd",DS18B20_Buffer[0],DS18B20_Buffer[1]);//串口打印溫度
- putchar_End();//換行
- // DS18B20_Read_64Rom(a);
- // Send_String(a);
- Delay1000ms();
- DS18B20_Handle(DS18B20_Rom2);
- printf("溫度2:%bd.%bd",DS18B20_Buffer[0],DS18B20_Buffer[1]);//串口打印溫度
- Delay1000ms();
- putchar_End();//換行
- }
- }
-
復(fù)制代碼DS18B20程序和資料:
DS18B20.zip
(4.21 MB, 下載次數(shù): 113)
2020-3-30 14:21 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|