下載手機(jī)汽配人

請(qǐng)教關(guān)于DS18B20溫度傳感器的溫度讀取

我想用P1口的8個(gè)引腳每個(gè)引腳掛1個(gè)DS18B20傳感器,然后從P1.0開始順序讀取溫度數(shù)值,溫度讀取的程序我有,請(qǐng)大俠們幫助給些端口輪流讀取數(shù)據(jù)的例程,謝謝。 我的程序中只有如下定義1個(gè)端口,請(qǐng)幫助改寫: sbitDQ=P3^7;//ds18b20端口
提問者:網(wǎng)友 2018-07-23
最佳回答
我這有個(gè)現(xiàn)成的C源程序,你參考一下吧! 三通道18B20溫度測(cè)量數(shù)碼管顯示。-55-+125℃,用1位數(shù)碼管顯示當(dāng)前通道號(hào),4位數(shù)碼管顯示18B20當(dāng)前通道溫度值(一位小數(shù)),負(fù)號(hào)位與正溫度百位1用同一位數(shù)碼管顯示,該位為0不顯示,如:0 27.9、1 123.1、2 -35.6。連接方法:三個(gè)18B20均接P3.7,P0口(JP10)接8位數(shù)碼管段碼口(J12)。 #include #include typedefunsignedcharuint8; typedefunsignedintuint16; sbitADDR0=P2^2; sbitADDR1=P2^3;//定義38譯碼器地址 sbitADDR2=P2^4; uint8x,h;//定義通道 uint16ans,ansb[3],f,g,p;//ans各通道溫度值,f符號(hào)值,g為小數(shù)部分,p為1秒的計(jì)數(shù)變量 codeuint8number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x80};//0,1,2,3,4,5,6,7,8,9,-,滅,小數(shù)點(diǎn) sbitDQ=P3^7;//溫度DQ一線輸入口 #definenops();{_nop_();_nop_();_nop_();_nop_();}//定義空指令 uint8romid[3][8]={//romid二維數(shù)組存放每個(gè)芯片ROM編號(hào) {0x28,0xA2,0xb4,0x0A,0x00,0x00,0x00,0x83},//0通道 {0x28,0xA2,0xb4,0x0A,0x03,0x00,0x00,0x83},//1通道 {0x28,0xA2,0xb4,0x0A,0x05,0x00,0x00,0x83},//2通道 }; //定時(shí)器初始化 voidT1_init(void) { TMOD=0x10;//定時(shí)器1工作在方式1(顯示掃描定時(shí)) TH1=0xfc; TL1=0x67;//T1定時(shí)1ms初值 TR1=1;//啟動(dòng)T1 } voiddelay(uint16n) { while(n--); } //18B20復(fù)位函數(shù) voidDS18b20_reset(void) { bitflag=1; while(flag) { while(flag) { DQ=1; delay(1);
回答者:網(wǎng)友
產(chǎn)品精選
搜索問答
還沒有汽配人賬號(hào)?立即注冊(cè)

我要提問

汽配限時(shí)折扣

本頁是網(wǎng)友提供的關(guān)于“請(qǐng)教關(guān)于DS18B20溫度傳感器的溫度讀取”的解答,僅供您參考,汽配人網(wǎng)不保證該解答的準(zhǔn)確性。