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

正文內(nèi)容

nrf24l01無線溫度傳感_畢業(yè)論文(參考版)

2024-09-05 16:48本頁面
  

【正文】 (WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect1, this, IDC_STATIC_XS)。 GetDlgItem(IDC_STATIC_XS)GetWindowRect(rect1)。//開啟串口檢測進(jìn)程 } else { AfxMessageBox(你還沒有設(shè)置串口 )。 BOOL CXstemp::OnInitDialog() //初始化對話框 { CDialog::OnInitDialog()。//關(guān)閉串口線程 } else { AfxMessageBox(溫度上下限顛倒,請重新設(shè)置 )。//發(fā)送下限溫度 Sleep(50)。//關(guān)閉監(jiān)測線程 ()。//發(fā)送上限溫度 Sleep(50)。//關(guān)閉監(jiān)測線程 ()。//串口輸出“ $” Sleep(50)。 if(m_temphighm_templow)//溫度上下限比較 { ()。 void CTempBjDlg::OnButtonWdbj() { // TODO: Add your control notification handler code here //char* strh,strl。//默認(rèn)選第一個 } return TRUE。// 將 “ 串口關(guān)閉 ” 按鈕狀態(tài)變成灰色 (0)。 //初始化時將之前選擇的波特率顯示出來 41 } else//如果串口已經(jīng)關(guān)閉,所有的串口設(shè)置恢復(fù)到 1 和 2400 波特率也就是每樣都是默認(rèn)第一個狀態(tài) { GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(TRUE)。//將關(guān)閉串口按鈕由灰變亮 (posnum)。 // TODO: Add extra initialization here if(m_onoff)//如果串口已經(jīng)開啟 { GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(FALSE)。 MessageBox(str)。//波特率組合框選擇 CString str。 MessageBox(str)。//串口號組合框選擇 CString str。//將串口的全局變量設(shè)定為啟用 } else { AfxMessageBox(沒有發(fā)現(xiàn)此串口或被占用 )。// 將關(guān)閉串口按鈕由灰變亮 //()。,8,1,m_dwCommEvents,512))// 初 始 化串口 (括號中為具體參數(shù) )用 CserialPort 類 { GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(FALSE)。 } if((this,nport,nbtl,39。break。break。break。break。break。//得到串口號 int nbtl=()。//將串口的全局變量設(shè)定為關(guān)閉 } void CComsetDlg::OnButtonOpen() { // TODO: Add your control notification handler code here m_dwCommEvents = EV_RXFLAG | EV_RXCHAR。// 將關(guān)閉串口按鈕由亮變灰 //()。 void CComsetDlg::OnButtonClose() { // TODO: Add your control notification handler code here GetDlgItem(IDC_BUTTON_OPEN)EnableWindow(TRUE)。N39。 count=0。 count++。 count=0。$39。 js=SBUF。 } void serial() interrupt 4 using 3 { uchar js。 37 while( TI == 0 )。 TR1 = 1。 //波特率 4800 IE |= 0x90 。 TH1 = 0xFA。 //**********串口初始化 *********************************************** void StartUART( void ) { SCON = 0x50。 } 串口通信 首先對串口進(jìn)行初始化,設(shè)置波特率為 4800,將溫度數(shù) 據(jù)轉(zhuǎn)化為 ASCII 通過串口發(fā)送至 PC 機(jī)。 Delay(80)。 P0=seg[temp[4]]。 Delay(80)。 P0=seg1[temp[5]]。 Delay(80)。 P0=seg[temp[1]]。 Delay(80)。 //*****數(shù)碼動態(tài)掃描顯示 *********************************************** void disdignit() { P0=0xC6。 . 無線模塊 NRF24L01(接收) 該部分代碼見附錄。 } 無線模塊 NRF24L01( 發(fā)送 ) 該部分代碼見附錄。 delay1(40)。 35 P0=seg[ dispaly[2]]。 delay1(40)。 P0=seg1 [dispaly[1]]。 delay1(40)。 P0=seg[dispaly[0]]。 delay1(40)。 //********溫度顯示 **************************************************** void disdignit() { P0=0xC6。 led3=1。 //顯示十位 led3=0。 led2=1。 //顯示個位 led2=0。 led1=1。 //顯示小數(shù)位 led1=0。 led0=1。 led0=0。 } else dispaly[3]=0x22。 default:break。 case 0x00:dispaly[0]=1。 case 0x01:dispaly[0]=1。 case 0x02:dispaly[0]=1。 case 0x03:dispaly[0]=2。 case 0x04:dispaly[0]=3。 33 case 0x05:dispaly[0]=3。 case 0x06:dispaly[0]=4。 case 0x07:dispaly[0]=4。 case 0x08:dispaly[0]=5。 case 0x09:dispaly[0]=6。 case 0x0a:dispaly[0]=6。 case 0x0b:dispaly[0]=7。 case 0x0c:dispaly[0]=8。 case 0x0d:dispaly[0]=8。 case 0x0e:dispaly[0]=9。0x0f) //小數(shù)位 { case 0x0f:dispaly[0]=9。 //十位 dispaly[1]=dispaly[4]%10。 //百位 dispaly[4]=dispaly[6]%100。0x0f)4)。 } dispaly[6]=((temp_data[0]amp。 //負(fù)值 temp_data[0]=(256temp_data[0])。 //溫度轉(zhuǎn)換 } 32 //***************溫度處理 ********************************************* void work_temp() { uchar n=0。 write_byte(0xcc)。 temp_data[1]=read_byte()。 //跳躍 ROM 指令 write_byte(0xbe)。 } //**************讀取溫度 ********************************************** void read_temp() { ds_reset()。 } DQ=1。 if(DQ) value1|=0x80。_nop_()。 _nop_()。_nop_()。_nop_()。 DQ=0。_nop_()。i) //8 位數(shù)據(jù)一位一位讀 31 { DQ=1。 for(i=8。 } //**************DS1820 讀函數(shù) ***************************************** uchar read_byte(void) { uchar i。 } DQ=1。 delay1(9)。 DQ=valueamp。_nop_()。_nop_()。 DQ=0。_nop_()。i0。 } //**********DS1820 寫函數(shù) ********************************************* void write_byte(uchar value) { uchar i。 temp=~DQ。 temp=DQ。 DQ=1。 //復(fù)位時序 DQ=0。_nop_()。 //**************DS1820 復(fù)位函數(shù) *************************************** void ds_reset(void) { char temp=1。然后調(diào)用 write_byte()向 DS18B20 發(fā)送一條 ROM 指令 。然后經(jīng)過溫度處理之后在 4 個八段數(shù)碼管上顯示,最后通過調(diào)用無線發(fā)送程序?qū)囟葦?shù)據(jù)發(fā)送給接收端。如果不是借助外力,溫度會幾乎不發(fā)生變化。如圖 : 27 圖 溫度上下限設(shè)置 除上述功能外,還有實(shí)時曲線圖的功能。 如圖 : 26 圖 串口設(shè)置 串口 設(shè)置好之后, 選擇菜單中的溫度報警按鈕,對溫度上下限進(jìn)行設(shè)置。 圖 報警電路圖 軟件界面 ( MFC) 該軟件 分為串口設(shè)置、實(shí)時數(shù)據(jù)顯示、溫度上下限設(shè)置 和退出四部分。字節(jié)是否發(fā)送完 SETB DQ RET 24 聲報警電路設(shè)計 當(dāng)外界溫度超 過預(yù)設(shè)溫度上下限時,為更加有效的引起用戶的注意,及時關(guān)注溫度的變化,本系統(tǒng)設(shè)計了聲報警電路。發(fā)送一位數(shù)據(jù)給 DS18B20 MOV R7,! LCALL DELAY15 。產(chǎn)生寫信號 MOV R7,1 LCALL DELAY15 。寫時隙起始于單片機(jī)拉低總線。延時 17μ S MOV C,DQ RRC A MOV R7,3 LCALL DELAY15 。存放數(shù)據(jù)的地址 RD18201:MOV R2,8 RD18202:SETB DQ NOP NOP 23 CLR DQ 。以單片機(jī)讀取 2 B的數(shù)據(jù)為例。讀時隙起始于單片機(jī)拉低總線至少 1 μs 。程序代碼如下: 22 RESET:CLR DQ 。應(yīng)答脈沖能保持 60~240μs 。然后,單片機(jī)釋放總線,等待 DS18B20的應(yīng)答脈沖。 復(fù)位時序 : 圖 復(fù)位時序 與 DS18B20的所有通訊都是由一個單片機(jī)的復(fù)位脈沖和一個 DS18B20的應(yīng)答脈沖開始的。此后由于芯片忙于溫度轉(zhuǎn)換處理,當(dāng)控制器發(fā)一個讀時間隙時,總線上輸出“ 0”,當(dāng)儲 存工作完成時,總線將輸出“ 1”。芯片允許在讀過程中用復(fù)位信號中止讀取,即可以不讀后面不需要的字節(jié)以減少讀取時間。如果在多芯片掛接時使用此指令將會出現(xiàn)數(shù)據(jù)沖突, 21 導(dǎo)致錯誤出現(xiàn)。數(shù)據(jù)的讀寫方法將有下文有詳細(xì)介紹。如執(zhí)行溫度轉(zhuǎn)換指令則控制器(單片機(jī))必須等待 18B20 執(zhí)行其指令,一般轉(zhuǎn)換時間為500uS。存儲器操作指令的功能是命令 18B20 作什么樣的工作,是芯片控制的關(guān)鍵。 ( 4) 控制器發(fā)送存儲器操作指令:在 ROM 指令發(fā)送給 18B20 之后,緊接著(不間斷)就是發(fā)送存儲器操作指令了。其主要目的是為了分辨一條總線上掛接的多個器件并作處理。 ( 3) 控制器發(fā)送 ROM 指令:雙方打完了招呼之后最要將進(jìn)行交流了, ROM指令共有 5 條,每一個工作周期只能發(fā)一條, ROM 指令分別是讀 ROM數(shù)據(jù)、指定匹配芯片、跳躍 ROM、芯片搜索、報警芯片搜索。至此,通信雙方已經(jīng)達(dá)成 了基本的協(xié)議,接下來將會是控
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1