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

正文內(nèi)容

基于mcu無線溫度傳感畢業(yè)設(shè)計(jì)-資料下載頁

2025-06-20 12:32本頁面
  

【正文】 DJNZ R1,WR18201 。字節(jié)是否發(fā)送完 SETB DQ RET24 聲 報(bào) 警 電 路 設(shè) 計(jì)當(dāng)外界溫度超過預(yù)設(shè)溫度上下限時(shí),為更加有效的引起用戶的注意,及時(shí)關(guān)注溫度的變化,本系統(tǒng)設(shè)計(jì)了聲報(bào)警電路。該電路由蜂鳴器組成,具體電路如圖所示。 報(bào)警電路圖 無 線 溫 度 采 集 軟 件 界 面 ( MFC)該軟件分為串口設(shè)置、實(shí)時(shí)數(shù)據(jù)顯示、溫度上下限設(shè)置和退出四部分。雙擊,:25 無線溫度采集軟件主界面圖首先點(diǎn)擊選擇串口設(shè)置,選擇相應(yīng)的串口號(hào)和波特率之后,然后點(diǎn)擊“開啟串口”按鈕,即初始化串口設(shè)備。:26 串口設(shè)置串口設(shè)置好之后,選擇菜單中的溫度報(bào)警按鈕,對(duì)溫度上下限進(jìn)行設(shè)置。如圖所示實(shí)例,超過35攝氏度或者低于25攝氏度都會(huì)報(bào)警。:27 溫度上下限設(shè)置除上述功能外,還有實(shí)時(shí)曲線圖的功能。通過曲線圖,可以觀測(cè)到溫度的變化,作出具體的數(shù)據(jù)圖,便于分析。如果不是借助外力,溫度會(huì)幾乎不發(fā)生變化。具體如下圖所示:28 實(shí)時(shí)數(shù)據(jù)曲線圖29第三章 軟件設(shè)計(jì)報(bào)告 單 片 機(jī) 軟 件 設(shè) 計(jì) 發(fā) 送 部 分 軟 件 設(shè) 計(jì)單片機(jī)對(duì) NRF24L01 無線模塊以及 DS18B20 進(jìn)行初始化之后,從 DS18B20 讀取溫度數(shù)據(jù)。然后經(jīng)過溫度處理之后在 4 個(gè)八段數(shù)碼管上顯示,最后通過調(diào)用無線發(fā)送程序?qū)囟葦?shù)據(jù)發(fā)送給接收端。 溫 度 傳 感 DS18B20對(duì) DSl8B20 進(jìn) 行 操 作 , 首 先 通 過 調(diào) 用 ds_reset()函數(shù)對(duì) DS18B20 進(jìn) 行 復(fù) 位 。然 后 調(diào) 用 write_byte()向 DS18B20 發(fā) 送 一 條 ROM 指 令 。 最 后 發(fā) 送 RAM 指 令 , 這 樣 才 能 對(duì) DSl8B20 進(jìn) 行 預(yù) 定 的 操 作 。//**************DS1820 復(fù)位函數(shù)***************************************void ds_reset(void){char temp=1。while(temp){ while(temp){ DQ=1。_nop_()。_nop_()。 //復(fù)位時(shí)序DQ=0。delay1(80)。DQ=1。 //復(fù)位電平結(jié)束后,將數(shù)據(jù)單總線拉高delay1(9)。temp=DQ。30 } delay1(64)。 temp=~DQ。 //存在脈沖,60240us 低電平信號(hào)}DQ=1。 }//**********DS1820 寫函數(shù)*********************************************void write_byte(uchar value){uchar i。for(i=8。i0。i) / /8 位數(shù)據(jù)一位一位寫{ DQ=1。_nop_()。_nop_()。 DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。_nop_()。 DQ=valueamp。0x01。 delay1(9)。 value=1。} DQ=1。delay1(1)。}//**************DS1820 讀函數(shù)*****************************************uchar read_byte(void){uchar i。uchar value1=0。for(i=8。i0。i) //8 位數(shù)據(jù)一位一位讀31{DQ=1。_nop_()。_nop_()。value1=1。DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。DQ=1。_nop_()。_nop_()。_nop_()。_nop_()。if(DQ) value1|=0x80。 delay1(9)。}DQ=1。return(value1)。}//**************讀取溫度**********************************************void read_temp(){ds_reset()。write_byte(0xcc)。 //跳躍 ROM 指令write_byte(0xbe)。 //從 RAM 中讀數(shù)據(jù)temp_data[0]=read_byte()。temp_data[1]=read_byte()。 //只讀前兩個(gè)字節(jié),一二兩個(gè)字節(jié)是溫度轉(zhuǎn)換后的數(shù)據(jù)信息ds_reset()。write_byte(0xcc)。 //跳躍 ROM 指令write_byte(0x44)。 //溫度轉(zhuǎn)換}32//***************溫度處理*********************************************void work_temp(){uchar n=0。if(temp_data[1]127) //第一位是符號(hào)位{temp_data[1]=(256temp_data[1])。 //負(fù)值temp_data[0]=(256temp_data[0])。n=1。}dispaly[6]=((temp_data[0]amp。0xf0)4)|((temp_data[1]amp。0x0f)4)。dispaly[5]=dispaly[6]/100。 //百位dispaly[4]=dispaly[6]%100。 //dispaly[2]=dispaly[4]/10。 //十位dispaly[1]=dispaly[4]%10。 //個(gè)位switch (temp_data[0]amp。0x0f) //小數(shù)位{case 0x0f:dispaly[0]=9。break。case 0x0e:dispaly[0]=9。break。case 0x0d:dispaly[0]=8。break。case 0x0c:dispaly[0]=8。break。case 0x0b:dispaly[0]=7。break。case 0x0a:dispaly[0]=6。break。case 0x09:dispaly[0]=6。break。case 0x08:dispaly[0]=5。break。case 0x07:dispaly[0]=4。break。case 0x06:dispaly[0]=4。break。33case 0x05:dispaly[0]=3。break。case 0x04:dispaly[0]=3。break。case 0x03:dispaly[0]=2。break。case 0x02:dispaly[0]=1。break。case 0x01:dispaly[0]=1。break。case 0x00:dispaly[0]=1。break。default:break。}if(n) //負(fù)值時(shí)顯示 a,正直顯示 c{dispaly[3]=0x11。}else dispaly[3]=0x22。}//********溫度顯示****************************************************void disdignit(){P0=0xC6。led0=0。delay1(40)。led0=1。P0=seg[dispaly[0]]。 //顯示小數(shù)位led1=0。delay1(40)。led1=1。P0=seg1[dispaly[1]]。 //顯示個(gè)位led2=0。34delay1(40)。led2=1。P0=seg[ dispaly[2]]。 //顯示十位led3=0。delay1(40)。led3=1。} LED 數(shù) 碼 管 顯 示把數(shù)據(jù)處理之后,在 dispaly()顯示相應(yīng)的值,通過 seg[dispaly]數(shù)組顯示對(duì)應(yīng)數(shù)據(jù)。//********溫度顯示****************************************************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。35P0=seg[ dispaly[2]]。led3=0。delay1(40)。led3=1。} 無線模塊 NRF24L01(發(fā)送) 該部分代碼見附錄。 接 收 部 分 軟 件 設(shè) 計(jì)首先初始化 NRF24L01 無線模塊,開啟串口,設(shè)置 4800 的波特率。. 無 線 模 塊 NRF24L01( 接 收 )該部分代碼見附錄。 LED 數(shù) 碼 管 顯 示把接收到的溫度數(shù)據(jù)存放在 temp[]數(shù)組,然后通過 disdignit()函數(shù)顯示出來。//*****數(shù)碼動(dòng)態(tài)掃描顯示***********************************************void disdignit(){P0=0xC6。 //Cled0=0。Delay(80)。led0=1。P0=seg[temp[1]]。 //小數(shù)位led1=0。Delay(80)。led1=1。P0=seg1[temp[5]]。 //十位36led2=0。Delay(80)。led2=1。P0=seg[temp[4]]。 //個(gè)位led3=0。Delay(80)。led3=1。} 串 口 通 信首先對(duì)串口進(jìn)行初始化,設(shè)置波特率為 4800,將溫度數(shù)據(jù)轉(zhuǎn)化為 ASCII 通過串口發(fā)送至 PC 機(jī)。當(dāng) MFC 發(fā)送報(bào)警溫度上下限時(shí),單片機(jī)采用中斷的方式逐一接收,并采用開頭“$”符號(hào)作為通信的開始標(biāo)志。//**********串口初始化***********************************************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){37 SBUF = R_Byte。 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} 無 線 溫 度 采 集 軟 件 設(shè) 計(jì) 串 口 設(shè) 置串口設(shè)置對(duì)話框是利用 CSERIALPORT 類中的初始化函數(shù) InitPort (this,nport,nbtl,39。N39。,8,1,m_dwCommEvents,512),其中主要的參數(shù) nport 為串口號(hào),nbtl 為波特率,利用串口設(shè)置對(duì)話框中的串口號(hào)和波特率兩個(gè)組合框分別得到初始化函數(shù)中的 nport 和 nbtl。void CComsetDlg::OnButtonClose() {// TODO: Add your control notification handler code hereGetDlgItem(IDC_BUTTON_OPEN)EnableWindow(TRUE)。//將開啟串口按鈕由灰變亮GetDlgItem(IDC_BUTTON_CLOSE)EnableWindow(FALSE)。//將關(guān)閉串口按鈕由亮變灰//()。//關(guān)閉串口m_onoff=FALSE。//將串口的全局變量設(shè)定為關(guān)閉}void CComsetDlg::OnButtonOpen() {// TODO: Add your control notification handler code herem_dwCommEvents = EV_RXFLAG | EV_RXCHAR。int nport=()+1。//得到串口號(hào)int nbtl=()。//組合框得到波特率選項(xiàng)switch(nbtl)//波特率的幾種參數(shù){case 0: nbtl=2400。break。39case 1: nbtl=4800。break。case 2: nbtl=9600。break。case 3: nbtl=19200。break。case 4: nbtl=38400。break。default:break。}if((this,nport,nbtl,39。N39。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1