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

正文內(nèi)容

基于cc2530的溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)畢業(yè)論文(編輯修改稿)

2025-07-23 16:48 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ampleApp_ProcessEvent()函數(shù)主要內(nèi)容如下:uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ){…… case ZDO_STATE_CHANGE://只要網(wǎng)絡(luò)狀態(tài)發(fā)生改變,就通過(guò)ZDO_STATE_CHANGE事件通知所有任務(wù)。同時(shí)完成對(duì)協(xié)調(diào)器、終端的設(shè)置 SampleApp_NwkState = (devStates_t)(MSGpkt)。 if ((SampleApp_NwkState == DEV_END_DEVICE) ) { // 啟動(dòng)初始化后開(kāi)始有規(guī)律的發(fā)送周期信息 osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT )。 }…… if ( events amp。 SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) { //處理周期性事件,每10s喚醒1次 SampleApp_Send_P2P_Message()。 osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, 10000 )?!瓆開(kāi)發(fā)板A作為協(xié)調(diào)器,上電啟動(dòng)后自動(dòng)建立網(wǎng)絡(luò)并周期性向終端設(shè)備發(fā)送數(shù)據(jù)包;開(kāi)發(fā)板B作為終端設(shè)備,上電啟動(dòng)后加入網(wǎng)絡(luò),并且也周期性向協(xié)調(diào)器發(fā)送數(shù)據(jù)包。①啟動(dòng)過(guò)程分析無(wú)論是協(xié)調(diào)器還是終端設(shè)備,啟動(dòng)過(guò)程和網(wǎng)絡(luò)初始化的步驟都是一樣的,只是配置文件在編譯時(shí)會(huì)根據(jù)設(shè)備的不同類型而有所區(qū)別。啟動(dòng)過(guò)程如下:;;;()設(shè)備對(duì)象初始化函數(shù)主要內(nèi)容包括:保存任務(wù)ID,分配地址,初始化ZDO,為設(shè)備注冊(cè)端點(diǎn)描述符;()函數(shù)在網(wǎng)絡(luò)啟動(dòng)中,會(huì)完成初始化設(shè)備網(wǎng)絡(luò)狀態(tài),初始化RAM項(xiàng)目表,初始化控制邏輯,確定設(shè)備類型,初始化設(shè)備安全屬性,形成網(wǎng)絡(luò)這些工作;()函數(shù)用于啟動(dòng)連接網(wǎng)絡(luò);()函數(shù)是主函數(shù)循環(huán)的ZigBee設(shè)備對(duì)象的任務(wù),功能是網(wǎng)絡(luò)初始化事件處理;②協(xié)調(diào)器建網(wǎng)在設(shè)備初始化結(jié)束后,由協(xié)調(diào)器建立無(wú)線網(wǎng)絡(luò)。如果協(xié)調(diào)器新建網(wǎng)絡(luò)成功,允許協(xié)調(diào)器設(shè)定為綁定。此時(shí)協(xié)調(diào)器檢測(cè)是否有節(jié)點(diǎn)要求加入網(wǎng)絡(luò),如果有,協(xié)調(diào)器建立綁定表,建立綁定,同時(shí)發(fā)出請(qǐng)求,節(jié)點(diǎn)確認(rèn)后,協(xié)調(diào)器開(kāi)始接收數(shù)據(jù),最后通過(guò)串口發(fā)送給上位機(jī)。 協(xié)調(diào)器流程圖③終端設(shè)備入網(wǎng)設(shè)備初始化后,終端節(jié)點(diǎn)會(huì)根據(jù)ZigBee協(xié)議棧搜尋附近的網(wǎng)絡(luò),并請(qǐng)求加入網(wǎng)絡(luò)。當(dāng)請(qǐng)求得到協(xié)調(diào)器確認(rèn)后,終端設(shè)備會(huì)將自己的地址發(fā)給協(xié)調(diào)器,并自動(dòng)與協(xié)調(diào)器建立綁定。在接受到數(shù)據(jù)傳送請(qǐng)求之后,終端設(shè)備就會(huì)將所測(cè)量的溫度值周期性的傳送給協(xié)調(diào)器。 終端設(shè)備流程圖①DS18B20驅(qū)動(dòng)程序。::define Ds18b20IO P0_7;:void Ds18b20Delay(unsigned int k){ while (k) { asm(NOP)。 ……(省略31次asm(NOP)。) }}:P0DIR amp。= 0x7f;:P0DIR amp。= 0x7f;;://溫度讀取函數(shù) 帶1位小數(shù)位unsigned int floatReadDs18B20(void){ unsigned char V1,V2。 //定義高低8位 緩沖 unsigned int temp。 //定義溫度緩沖寄存器 float fValue。 Ds18b20Initial()。 Ds18b20Write(0xcc)。 // 跳過(guò)讀序號(hào)列號(hào)的操作 Ds18b20Write(0x44)。 // 啟動(dòng)溫度轉(zhuǎn)換 Ds18b20Initial()。 Ds18b20Write(0xcc)。 //跳過(guò)讀序號(hào)列號(hào)的操作 Ds18b20Write(0xbe)。 //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度 V1 = Ds18b20Read()。 //低位 V2 = Ds18b20Read()。 //高位 temp=V2*0xFF+V1。 fValue = temp*。 return (unsigned int)fValue。}②初始化串口和溫度傳感器引腳()處寫入語(yǔ)句:Void SampleApp_Init(uint8 task_id){ …… MT_UartInit()。 //串口初始化; MT_UartRegisterTaskID(task_id)。 //注冊(cè)串口任務(wù); POSELamp。=0x7f。 //DS18B20的I/……}③讀取溫度數(shù)據(jù)()函數(shù)負(fù)責(zé)溫度的讀取和傳輸:void SampleApp_Send_P2P_Message( void ){char str[4]。unsigned int temp。temp = floatReadDs18B20()。 //讀取溫度數(shù)據(jù) str[0] = temp%1000/100+ 48。str[1] = temp%100/10+48。str[2] = 39。.39。str[3] = temp%10 + 48。if ( AF_DataRequest( amp。SampleApp_P2P_DstAddr, amp。SampleApp_epDesc, SAMPLEAPP_P2P_CLUSTERID, 4, str, amp。SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )}④接收數(shù)據(jù) ()函數(shù)負(fù)責(zé)對(duì)溫度數(shù)據(jù)的接收,并且發(fā)送給上位機(jī)顯示:void SampleApp_MessageMSGCB( afIningMSGPacket_t *pkt ){ uint16 flashTime。 switch ( pktclusterId ) { case SAMPLEAPP_P2P_CLUSTERID: HalUARTWrite(0,$,1)。 HalUARTWrite(0, pkt, pkt)。 //輸出接收到的數(shù)據(jù) HalUARTWrite(0,1)。 break。 …… }}由于在實(shí)際應(yīng)用中終端節(jié)點(diǎn)是由電池供電,所以為保證低功耗,必須設(shè)計(jì)程序使節(jié)點(diǎn)能夠休眠,本設(shè)計(jì)中采用定時(shí)器中斷方式,一次休眠時(shí)間10秒。在OSAL中是使用睡眠定時(shí)器來(lái)控制睡眠時(shí)間的,在系統(tǒng)初始化的時(shí)候要將電源控制結(jié)構(gòu)體中的pwrmgr_device設(shè)備屬性設(shè)置為PWRMGR_BATTERY(電源管理設(shè)備屬性有有PWRMGR_ALWAYS_ON和PWRMGR_BATTERY兩種,選擇PWRMGR_ALWAYS_ON的話將不會(huì)進(jìn)入睡眠模式,選擇PWRMGR_BATTERY將允許HAL管理CPU進(jìn)入SLEEP LITE或者SLEEP DEEP狀態(tài))。()調(diào)用,將電源管理模式調(diào)成可以進(jìn)入睡眠模式:void osal_pwrmgr_init( void ){ = PWRMGR_BATTERY。 //設(shè)置睡眠模式 = 0。 //清零}osal_pwrmgr_powerconserve()這個(gè)函數(shù)在OSAL循環(huán)中如果沒(méi)有任何事件需要執(zhí)行的話將被調(diào)用,將設(shè)備進(jìn)入睡眠模式,不可以在其他地方調(diào)用該函數(shù)。需要打開(kāi)POWER_SAVING的宏定義:void osal_pwrmgr_powerconserve( void ){ uint16 next。 halIntState_t intState if ( != PWRMGR_ALWAYS_ON ) // 首先檢查是否支持低功 {if ( == 0 ) //是否所有任務(wù)支持低功耗 { HAL_ENTER_CRITICAL_SECTION( intState )。 //關(guān)中斷 next = osal_next_timeout()。 //查詢軟件定時(shí)器鏈表得到最近一次溢出時(shí)間 HAL_EXIT_CRITICAL_SECTION( intState )。 //開(kāi)中斷 OSAL_SET_CPU_INTO_SLEEP( next )。 //將系統(tǒng)進(jìn)入睡眠模式 } }}在檢查完所有的任務(wù)事件之后發(fā)現(xiàn)沒(méi)有事件需要處理,這樣在POWER_SAVING宏定義打開(kāi)的情況下將在OSAL的主循環(huán)中void osal_start_system()調(diào)用osal_pwrmgr_powerconserve()這個(gè)函數(shù),在這函數(shù)中將會(huì)根據(jù)選擇系統(tǒng)進(jìn)入休眠:void osal_start_system( void ){ …… if defined( POWER_SAVING ) else { osal_pwrmgr_powerconserve()。 //設(shè)置系統(tǒng)睡眠 }endif}在休眠定時(shí)器中斷時(shí)候?qū)?huì)退出休眠。如果是IO中斷或者休眠定時(shí)器中斷退出之后將回到進(jìn)入休眠的地方繼續(xù)向下執(zhí)行,復(fù)位退出的話進(jìn)入程序的初部分執(zhí)行:uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ){……if ( events amp。 SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) …… osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,10000 )。// 定時(shí)10s喚醒終端,并向串口寫命令,然后進(jìn)入休眠……}本上位機(jī)軟件采用Microsoft Visual 。,功能強(qiáng)大,可以支撐上位機(jī)軟件的開(kāi)發(fā)和設(shè)計(jì)。本設(shè)計(jì)中,采集到的數(shù)據(jù)通過(guò)串口讀入,同時(shí)數(shù)據(jù)實(shí)施的顯示在文本框中。 上位機(jī)工作流程圖由于以上功能的需要,設(shè)計(jì)中共采用了3個(gè)Label控件、1個(gè)test控件、1個(gè)Combo控件、1個(gè)CmdOpen控件等。 上位機(jī)軟件界面由于波特率、校驗(yàn)位、數(shù)據(jù)位等都在上位機(jī)程序中進(jìn)行設(shè)置,在開(kāi)啟軟件后,只需要對(duì)串口號(hào)進(jìn)行設(shè)置,然后點(diǎn)擊開(kāi)始測(cè)溫便能顯示出所測(cè)溫度值。上位機(jī)主要程序如下:①Private Sub CmdOpen_Click() If = 停止測(cè)溫 Then = False = 開(kāi)始測(cè)溫 39。按鈕文字改變 = amp。HFFFFC0 39。燈顏色改變 Else = + 1 = True = 停止測(cè)溫 = amp。HFF End If Exit Sub②Private Sub Form_Load() If = True Then = False End If COM1 …… COM8 = 0 = + 1 = 115200,n,8,1 39。設(shè)置波特率、校驗(yàn)位、數(shù)據(jù)位 flag = FalseEnd Sub③Private Sub MSComm1_OnComm() Dim str As String Select Case 39。事件發(fā)生 Case 2 = 1 39。讀入緩沖區(qū)全部?jī)?nèi)容 str = 39。讀入到緩沖區(qū)…… End SelectPOINT:End Sub 在測(cè)試中采用點(diǎn)對(duì)點(diǎn)通信的模式,由1個(gè)協(xié)調(diào)器和1個(gè)終端設(shè)備(溫度傳感節(jié)點(diǎn))組成,協(xié)調(diào)器通過(guò)串口與PC機(jī)連接,由上位機(jī)軟件顯示測(cè)量結(jié)果,終端節(jié)點(diǎn)主動(dòng)向協(xié)調(diào)器周期性向協(xié)調(diào)器發(fā)送溫度數(shù)據(jù)。測(cè)試地點(diǎn)為宿舍,以便可以改變環(huán)境溫度,進(jìn)行多組測(cè)量。①編譯文件
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1