freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

nrf24l01無線溫度傳感_畢業(yè)論文-資料下載頁

2025-08-23 16:48本頁面

【導讀】隨著工農業(yè)生產對溫度的要求越來越高,準確測量溫度變得至關重要。系統(tǒng)的設計主要是針對惡劣環(huán)境下的工業(yè)現場以及高科技大范圍的農業(yè)現場,布線困難,浪費資源,占用空間,可操作性差等問題做出的一個解決方案。該系統(tǒng)采用低功耗、高性能單片機及單總線數字式測溫器件DS18B20. 樣,引腳也相同。但是STC89C52RC可以通過STC_ISP軟件下載進行燒錄。線收發(fā)器,工作于GHz全球開放ISM頻段。此外,溫度傳感器DS18B20. 以"一線總線"的數字方式傳輸,可大大提高系統(tǒng)的抗干擾性。

  

【正文】 P0=0xC6。 led0=0。 delay1(40)。 led0=1。 P0=seg[dispaly[0]]。 //顯示小數位 led1=0。 delay1(40)。 led1=1。 P0=seg1 [dispaly[1]]。 //顯示個位 led2=0。 34 delay1(40)。 led2=1。 P0=seg[ dispaly[2]]。 //顯示十位 led3=0。 delay1(40)。 led3=1。 } LED 數碼管顯示 把數據處理之后, 在 dispaly()顯示相應的值,通過 seg[dispaly]數組 顯示對應數據。 //********溫度顯示 **************************************************** void disdignit() { P0=0xC6。 led0=0。 delay1(40)。 led0=1。 P0=seg[dispaly[0]]。 led1=0。 delay1(40)。 led1=1。 P0=seg1 [dispaly[1]]。 led2=0。 delay1(40)。 led2=1。 35 P0=seg[ dispaly[2]]。 led3=0。 delay1(40)。 led3=1。 } 無線模塊 NRF24L01( 發(fā)送 ) 該部分代碼見附錄。 接收部分軟件設計 首先 初始化 NRF24L01 無線模塊,開啟串口,設置 4800 的波特率。 . 無線模塊 NRF24L01(接收) 該部分代碼見附錄。 LED 數碼管顯示 把 接收到的 溫度 數據存放在 temp[]數組,然后通過 disdignit()函數顯示出來。 //*****數碼動態(tài)掃描顯示 *********************************************** void disdignit() { P0=0xC6。 //C led0=0。 Delay(80)。 led0=1。 P0=seg[temp[1]]。 //小數位 led1=0。 Delay(80)。 led1=1。 P0=seg1[temp[5]]。 //十位 36 led2=0。 Delay(80)。 led2=1。 P0=seg[temp[4]]。 //個位 led3=0。 Delay(80)。 led3=1。 } 串口通信 首先對串口進行初始化,設置波特率為 4800,將溫度數 據轉化為 ASCII 通過串口發(fā)送至 PC 機。 當 MFC 發(fā)送報警溫度上下限時,單片機采用中斷的方式逐一接收,并采用開頭“ $”符號作為通信的開始標志。 //**********串口初始化 *********************************************** void StartUART( void ) { SCON = 0x50。 TMOD = 0x20。 TH1 = 0xFA。 TL1 = 0xFA。 //波特率 4800 IE |= 0x90 。 //Enable Serial Interrupt PCON = 0x00。 TR1 = 1。 } //***通過串口向 PC 發(fā)送 ************************************************ void R_S_Byte(uchar R_Byte) { SBUF = R_Byte。 37 while( TI == 0 )。 //查詢法 TI = 0。 } void serial() interrupt 4 using 3 { uchar js。 if (RI) { RI = 0 。 js=SBUF。 if(js==39。$39。) { mode=1。 count=0。 } if(mode==1) { tempbj[count]=js。 count++。 if(count==5) { mode=0。 count=0。 } } } } 38 無線溫度采集軟件設計 串口設置 串 口 設 置 對 話 框 是 利 用 CSERIALPORT 類 中 的 初 始 化 函 數 InitPort (this,nport,nbtl,39。N39。,8,1,m_dwCommEvents,512), 其中主要的參數 nport 為串口號 , nbtl 為波特率,利用串口設置對話框中的串口號和波特率兩個組合框分別得到初始化函數中的 nport 和 nbtl。 void CComsetDlg::OnButtonClose() { // TODO: Add your control notification handler code here GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(TRUE)。// 將開啟串口按鈕由灰變亮 GetDlgItem(IDC_BUTTON_CLOSE)EnableWindow(FALSE)。// 將關閉串口按鈕由亮變灰 //()。//關閉串口 m_onoff=FALSE。//將串口的全局變量設定為關閉 } void CComsetDlg::OnButtonOpen() { // TODO: Add your control notification handler code here m_dwCommEvents = EV_RXFLAG | EV_RXCHAR。 int nport=()+1。//得到串口號 int nbtl=()。//組合框得到波特率選項 switch(nbtl)//波特率的幾種參數 { case 0: nbtl=2400。break。 case 1: nbtl=4800。break。 39 case 2: nbtl=9600。break。 case 3: nbtl=19200。break。 case 4: nbtl=38400。break。 default:break。 } if((this,nport,nbtl,39。N39。,8,1,m_dwCommEvents,512))// 初 始 化串口 (括號中為具體參數 )用 CserialPort 類 { GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(FALSE)。//將開啟串口按鈕由 亮 變 灰 GetDlgItem(IDC_BUTTON_CLOSE)EnableWindow(TRUE)。// 將關閉串口按鈕由灰變亮 //()。 m_onoff=TRUE。//將串口的全局變量設定為啟用 } else { AfxMessageBox(沒有發(fā)現此串口或被占用 )。 } } void CComsetDlg::OnSelchangeComboComnum() { // TODO: Add your control notification handler code here posnum=()。//串口號組合框選擇 CString str。 40 (posnum,str)。 MessageBox(str)。 } void CComsetDlg::OnSelchangeComboCombtl() { // TODO: Add your control notification handler code here posbtl=()。//波特率組合框選擇 CString str。 (posbtl,str)。 MessageBox(str)。 } BOOL CComsetDlg::OnInitDialog() { CDialog::OnInitDialog()。 // TODO: Add extra initialization here if(m_onoff)//如果串口已經開啟 { GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(FALSE)。//將開啟串口按鈕由 亮 變 灰 GetDlgItem(IDC_BUTTON_CLOSE)EnableWindow(TRUE)。//將關閉串口按鈕由灰變亮 (posnum)。 //初始化時將之前選擇的串口號顯示出來 (posbtl)。 //初始化時將之前選擇的波特率顯示出來 41 } else//如果串口已經關閉,所有的串口設置恢復到 1 和 2400 波特率也就是每樣都是默認第一個狀態(tài) { GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(TRUE)。//將 “ 串口開啟 ”按鈕狀態(tài)改為正常 GetDlgItem(IDC_BUTTON_CLOSE)EnableWindow(FALSE)。// 將 “ 串口關閉 ” 按鈕狀態(tài)變成灰色 (0)。 //默認選第一個 (0)。//默認選第一個 } return TRUE。 // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } 溫度上下限設置 溫度上下限設置對話框是利用 CSERIALPORT 類中的 啟動串口監(jiān)測進程函數StartMonitoring 和發(fā)送字符串函數 WriteToPort 以 及 關 閉 串 口 進 程StopMonitoring,溫度上下限的設置信息通過這些函數發(fā)送到串口上去,單片機從RS232 上收到數據后與自身的溫度相比較后再進行相應的處理。 void CTempBjDlg::OnButtonWdbj() { // TODO: Add your control notification handler code here //char* strh,strl。 UpdateData(TRUE)。 if(m_temphighm_templow)//溫度上下限比較 { ()。//啟動串口檢測進程 42 ($)。//串口輸出“ $” Sleep(50)。//等待,否則數據在串口輸出緩沖器中會重疊 ()。//關閉監(jiān)測線程 ()。 ((LPCTSTR)m_temphigh)。//發(fā)送上限溫度 Sleep(50)。 ()。//關閉監(jiān)測線程 ()。//開啟監(jiān)測線程 ((LPCTSTR)m_templow)。//發(fā)送下限溫度 Sleep(50)。 ()。//關閉串口線程 } else { AfxMessageBox(溫度上下限顛倒,請重新設置 )。 } } 曲線顯示 動態(tài) 曲線顯示:動態(tài)曲線顯示是利用 CHistogram 類中的 SetRange(200, 400),SetPos(temp)函數, SetRange 設置圖的上下極限值, SetPos 是在圖上顯示相應得點,temp 是從單片機傳過來的 DS18B20 的溫度數據的處理結果,具體的移動的曲線是由CHistogram 類中函數實現,在此不深入研究。 BOOL CXstemp::OnInitDialog() //初始化對話框 { CDialog::OnInitDialog()。 // TODO: Add extra initialization here 43 if(m_onoff) { ()。//開啟串口檢測進程 } else { AfxMessageBox(你還沒有設置串口 )。 } CRect rect1。 GetDlgItem(IDC_STATIC_XS)GetWindowRect(rect1)。 //將直方圖加載到對話框中去 ScreenToClient(rect1)。 (WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect1, this, IDC_STATIC_XS)。
點擊復制文檔內容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1