Ⅰ 單片機里I2C溫度感測器採集的溫度如何傳到上位機上位機怎麼處理數據
1、利用串口通訊將單片機採集的溫度數據傳給上位機,譬如上位機可以用VC++開發2、上位機在串口接收數據事件中,可參考如下代碼:voidCSCommTestDlg::OnComm(){//TODO:_inp;COleSafeArraysafearray_inp;LONGlen,k;BYTErxdata[2048];//設置BYTE數組An8-bitintegerthatisnotsigned.CStringstrtemp;if(m_ctrlComm.GetCommEvent()==2)//事件值為2表示接收緩沖區內有字元{variant_inp=m_ctrlComm.GetInput();//讀緩沖區safearray_inp=variant_inp;//VARIANT型變數轉換為ColeSafeArray型變數len=safearray_inp.GetOneDimSize();//得到有效數據長度for(k=0;k<len;k++)safearray_inp.GetElement(&k,rxdata+k);//轉換為BYTE型數組for(k=0;k<len;k++)//將數組轉換為Cstring型變數{BYTEbt=*(char*)(rxdata+k);//字元型strtemp.Format("%d",bt);//將字元送入臨時變數strtemp存放m_strRXData=strtemp;//加入接收編輯框對應字元串}}UpdateData(FALSE);//更新編輯框內容}Ⅱ 單片機上18b20溫度感測器的工作原理是什麼
我對DS18B20還是很熟悉的,前一陣才用過。如果你是應用這個的,那麼你不需要搞清楚它的內部原理,內部主要有ROM.RAM和溫度感測器。DS18B20是使用一根數據線進行通信,首先你要先向它發送一系列脈沖信號。一般我們用的步驟大致為:初始化--跳過ROM操作--啟動溫度轉換--(延時)--初始化--跳過ROM操作--讀溫度寄存器命令然後就可以讀出溫度的數據了。先讀出的是低8位,然後是高位。由於是單線通信,所以對時序的要求相對較高,所以你要根據時序圖和自己的晶振頻率好好計算一下。最後還要注意的是,它的數據線平時是要拉到高電平的。以上都是我自己打出來的,希望對你有幫助!
Ⅲ 用單片機控制DS18B20溫度感測器採集溫度的工作過程是不是這樣
整體時序
匯流排上只有一個感測器18B20時,
時序:復位→忽略ROM匹配(0xcc)→溫度轉換(0x44)→延時→復位→忽略ROM匹配→讀指令→分別讀取溫度兩個位元組
匯流排上有多個感測器18B20時,
時序:復位→ROM匹配(0x55)→發送8位元組ROM ID →溫度轉換(0x44)→延時→復位→ROM匹配→再次發送8位元組ROMID→讀指令→分別讀取溫度兩個位元組
當然,在第一次發送溫度轉換之前 可以忽略ROM匹配,此時所有的感測器都進行溫度轉換
Ⅳ 急!!單片機遠程溫度採集系統(回答滿意追加分)
1撥碼開關改變波特率
撥碼開關的檢測就是讀取IO口狀態即可,通過讀取的值可以判斷撥碼開關的值,然後主機再改變波特率即可。
2從機波特率自適應
從機波特率自適應要通過軟體設定,下面我舉一個方法:例如主機檢測到撥碼開關變化後,用原來的波特路發一個信息給從機,告訴從機波特路發生變化了,並且把下一要用的波特率是多少告訴從機。這樣從機就可以重新設定新的波特率了。
3顯示
這個沒有什麼好說的了,就是數碼管顯示,網上一大把,自己找找吧
4 超時報警
開個定時器,如果在6s內任意時間收到信息了,就把計數器清零。否則就繼續計時,當計數到6s了,就用一個埠驅動蜂鳴器即可。
這塊東西網上都有現成的,主要是看你如何組合應用了。
這些東西都是我一個字一個字的敲上去的,不管怎麼樣給點分吧。謝謝了。有問題再問了。
Ⅳ 單片機怎麼採集溫度輸入信號
問題有點籠統,要看用什麼樣的溫度感測器和什麼樣的單片機,數字溫度感測器按感測器提供的介面連接。模擬溫度感測器需要通過模擬介面連接,如果你的單片機自帶AD,而且滿足精度要求,則可以用單片機自帶的AD採集,如果單片機不帶AD,則需要擴一個AD,通過AD採集溫度。
Ⅵ 單片機怎麼接模擬溫度感測器,能不能直接連接,為什麼,中間要加什麼電路,誰做過這個的能不能發個電路圖到
這個很簡單,如果你用的單片機內核有AD轉換電路的話,就可以直接接模擬溫度感測器,注意模擬溫度感測器在感知溫度時,會給出不同的模擬電壓,這個模擬電壓還不能超過單片機的埠的最高承受電平
如果單片機沒有AD轉換電路,則需要外接AD轉換電路來實現模擬電壓轉換數字電壓。溫度感測器可以選擇最常用的就夠了,電路很簡單,把輸出端連出來就行了!注意供電和接地
Ⅶ 單片機怎麼識別溫度感測器傳給它的信號對應的實際溫度
如果是模擬的溫度感測器,它會把溫度轉化為對應范圍的電壓或電流,比如感測器的測溫范圍是0到100°,那對應輸出的電壓是0到5V或者4到20mA,如果用單片機識別還要加AD轉換器。
如果是數字的溫度感測器,它會把溫度轉化為對應范圍的二進制代碼,比如感測器的測溫范圍是0到100°,那對應輸出的二進制代碼是0x00到0xFF,因為已經是數字信號,單片機可以直接識別,不需要ADC
上面只是舉例而已,具體的參考器件手冊
Ⅷ 凌陽單片機怎麼與溫度感測器連接
你說的溫度感測器可能是數字溫度感測器吧,如果是的話,可以直接把信號端接到單片機的I/O口上,通過單片機給感測器發指令,溫度感測器識別後,再傳送溫度信號就可以了,GND一定要和單片機的地相連。
如果不是的話,就要根據你的感測器的情況而定的,一般是選
經過AD轉換,再與單片機相連