下載手機汽配人

請教關于DS18B20溫度傳感器的溫度讀取

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

我要提問

汽配限時折扣

本頁是網友提供的關于“請教關于DS18B20溫度傳感器的溫度讀取”的解答,僅供您參考,汽配人網不保證該解答的準確性。