無線病房病床呼叫系統(tǒng)_第1頁
無線病房病床呼叫系統(tǒng)_第2頁
無線病房病床呼叫系統(tǒng)_第3頁
無線病房病床呼叫系統(tǒng)_第4頁
無線病房病床呼叫系統(tǒng)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章緒論在該章節(jié)中的第一部分,對系統(tǒng)的設計意義進行介紹,第二部分對國內外的發(fā)展狀況進行敘述,第三部分對該論文的整體構成進行分析,論述其意義。在本章的最后組成結構進行論述。1.1研究目的及意義病床病房呼叫系統(tǒng)是為了提高醫(yī)療服務質量和效率而設計的,其目的是為醫(yī)院提供一種快速、可靠的病床呼叫和管理解決方案,幫助醫(yī)護人員更好地管理病人,提高病人的滿意度和醫(yī)院的整體服務質量[1]。具體而言,病床病房呼叫系統(tǒng)的意義包括:快速響應病人需求:病人需要及時得到醫(yī)護人員的關注和幫助,病床病房呼叫系統(tǒng)可以通過呼叫器和顯示屏等設備,快速響應病人的呼叫需求,幫助病人及時得到幫助和治療。提高醫(yī)療服務效率:病床病房呼叫系統(tǒng)可以幫助醫(yī)護人員更快地找到病人,更好地管理和協(xié)調病人的護理和治療,從而提高醫(yī)療服務效率和減輕醫(yī)護人員的工作壓力[2]。提高病人滿意度:病床病房呼叫系統(tǒng)可以幫助病人及時得到醫(yī)護人員的關注和幫助,提高病人的滿意度和治療效果,從而增強醫(yī)院的聲譽和競爭力。提高醫(yī)院管理水平:病床病房呼叫系統(tǒng)可以幫助醫(yī)院實現對病人的實時管理和監(jiān)控,加強醫(yī)院的管理和協(xié)調能力,提高醫(yī)院的整體管理水平和運營效率。因此,病床病房呼叫系統(tǒng)在提高醫(yī)療服務質量和效率、提高病人滿意度、提高醫(yī)院管理水平等方面都具有重要的意義和價值。1.2國內外現狀分析隨著通信技術的快速發(fā)展,無線通信技術已逐漸深入人們生活的方方面面。在現代醫(yī)學領域,醫(yī)療設備也開始逐步運用無線傳輸來代替?zhèn)鹘y(tǒng)的有線傳輸[3]。2021年,唐建華在《基于物聯網技術的臨床醫(yī)療護理監(jiān)測系統(tǒng)的研究與設計》文中談到目前,許多醫(yī)療機構所使用的病床呼叫系統(tǒng)基本都屬于有線系統(tǒng),該系統(tǒng)不僅占用空間較大,而且整個系統(tǒng)的發(fā)射端和接收端的連線也較為復雜。同時,整個系統(tǒng)后期的維護維修難度與費用都相對較高,因此大大地降低了有線呼叫系統(tǒng)的實用價值[4]。2022年,姜濤;楊學存在《基于Wifi的嵌入式多功能病房呼叫系統(tǒng)》文中講到,每一病區(qū)構成一個呼叫子系統(tǒng),全院各病區(qū)呼叫子系統(tǒng)與計算機可組成網絡,通過軟件設計實現呼叫系統(tǒng)的病床信息管理,形成病房監(jiān)護管理中心。由醫(yī)院管理部門及時了解和掌握各病區(qū)的工作情況,調配醫(yī)護人員[5]。2022年,江琳在《基于NRF24L01的簡易病房呼救系統(tǒng)設計與實現》文中介紹了整個無線病床呼叫系統(tǒng)主要由發(fā)射端和接收端兩部分組成。其中,發(fā)射端主要由單片機控制模塊、無線通信模塊、呼叫按鍵模塊及顯示模塊組成;接收端主要由單片機控制模塊、無線通信模塊、應答按鍵模塊、液晶顯示模塊及蜂鳴器報警模塊組成[6]。2021年,KormosWilliam.Oncall在《Myfeetarealwayscold,especiallywhenIgotobed.CouldIhaveaproblemwithmycirculation?》文章中講到病床呼叫系統(tǒng)由從機、主機等兩部分組成。從機(呼叫源)即病床按鈕,主機包括PLC及顯示和監(jiān)護系統(tǒng)。2022年,EddyChristopher、JonesSusanC在《Bedbugs,publichealth,andsocialjustice:Part1,Acalltoaction》文中,醫(yī)院病床呼叫裝置大多由單片機及低壓電力線等傳輸媒質所構成。本研究擬從可編程控制器(PLC)的應用出發(fā),提出一種以PLC為核心的智能化病床呼叫系統(tǒng)。2020年,ChristinaScott在《Youcallitamenialtask,Icallitholisticcare》文中談論到病床呼叫是醫(yī)院每張病床不可或缺的一個貼心服務功能,它能及時準確地將病人的求助信息通知到醫(yī)護人員,使病人得到快速準確的幫助。為了保障病人的生命安全,避免醫(yī)療事故及糾紛,所以病床呼叫系統(tǒng)一定要穩(wěn)定可靠,準確及時快速傳遞呼叫信息,而且要求便于操作。綜上所述,當今社會科學技術發(fā)展迅速,患者在住院期間,可能會在任意時間請求醫(yī)生或護士進行診斷或護理。臨床求助呼叫是傳送臨床信息的重要手段[7]。1.3主要研究內容本文設計的無線病床病房呼叫系統(tǒng)是基于WiFi通信技術的一個方案,系統(tǒng)利用WiFi無線通信技術構建無線通信網絡。下位機利用STM32微處理器進行信息的檢測、處理和顯示,實現了靜脈輸液的自動檢測、無煙病房的自動報警、TFT彩屏顯示、病床的升降控制、按鈕呼叫、紅外遙控呼叫、病房的語音呼叫和報警指示燈等功能。上位機為護士站監(jiān)控畫面,監(jiān)控畫面由VisualBasic開發(fā)工具制作,進行病房號,床號,呼叫內容的顯示。實驗表明,本系統(tǒng)增強了主控中心的功能,使主控中心免除了布線的困難,呼叫的可靠性提高,適合現代醫(yī)院的需要。該系統(tǒng)應完成的主要功能有:主機:無線接收并通過1602液晶顯示病房呼叫的床位和報警。從機:八個按鍵對應8個不同的病床號,從左到右分別為1到8號病床;檢測病人呼叫信號的采集和無線發(fā)射;(從機)當有病床上的病人要呼叫時,按下按鍵,(主機)LCD1602液晶顯示屏上會對應的顯示病人的床位號,同時對應的指示燈會亮,蜂鳴產生報警提示醫(yī)務人員,醫(yī)務人員按下“響應鍵”可以取消本次的呼叫,對應的指示燈會滅,同時液晶上會清除病床號。(從機)如果同時有多人同時呼叫時,(主機)液晶上會按先后順序顯示出不同的床位號,并對應的指示燈會亮。醫(yī)務人員按鍵“響應鍵“會按先后順序依次取消病人的呼叫,按一下取消一位病人,直到全部取消。1.4論文構成論文在開始部分對系統(tǒng)管理開發(fā)背景中,使用相應的開發(fā)技術進行論述,在對系統(tǒng)的生產和市場需求等分析,完成詳細的論述,最后實現系統(tǒng)各個模塊的設計、編輯,實現對功能模塊的搭建,最后在這些基礎上,對其開發(fā)流程完成論述。本論文的組織結構如下。第1章主要的內容是完成系統(tǒng)開發(fā)狀況的分析,對當前國內外的狀況分析,研究其開發(fā)的意義。第2章主要內容是系統(tǒng)開發(fā)過程中所用到的核心技術以及、系統(tǒng)開發(fā)過程中使用的開發(fā)平臺以及需求分析。第3章主要是對系統(tǒng)的硬件進行了分析。第4章主要是系統(tǒng)軟件設計邏輯說明。第5章主要是系統(tǒng)功能實現的測試說明。第6章主要是對系統(tǒng)設計的總結和展望。

第2章系統(tǒng)總體結構設計在功能結構模塊設計的基礎上,系統(tǒng)設計會詳細展現每個功能模塊具體的實現流程,并詳細描述出系統(tǒng)功能模塊的輸入、輸出和處理過程,這可以有效避免在系統(tǒng)實施階段對程序進行設計時,用特定傳感器進行硬件設計,從而實現系統(tǒng)的整體功能。2.1設計方案本設計是STM32單片機為控制核心,顯示屏、指示燈、蜂鳴器、按鍵、藍牙遠程APP模塊實現病床病房呼叫系統(tǒng)。系統(tǒng)框圖如下圖:圖2-1結構框圖2.2功能需求分析所謂系統(tǒng)的功?能?分析,就是分析用戶提出的?具?體的功?能需求,分析這些?功能是否???合理?,通?過現有的?技術能實現這些需求。為了系統(tǒng)的完整性需求?分析是必?不可少的?,因?此,在需求分?析過程中,分?析的??問題越透?徹系統(tǒng)就越完整[8]。傳感器與計算機技術和通信技術被稱為信息技術的三大支柱,因為硬件系統(tǒng)不能直??接獲取所需的各種信息,因此硬件系統(tǒng)中獲取數據信息常常通過傳感器來實?現。傳感器在硬件系統(tǒng)中將?測量測得的生物量,物理量,化學?量等。?利用生物,物理和化學效應將其轉換為?需的電量[9]。本系統(tǒng)采用的模塊如下。顯示屏模塊:顯示病床號:系統(tǒng)需要在顯示屏上顯示每個病床的編號,方便醫(yī)護人員查看和管理;實時更新:系統(tǒng)需要能夠實時更新病床號信息,例如當患者更換病床或者新患者入住時,系統(tǒng)需要能夠及時更新顯示屏上的病床號信息;顯示屏幕清晰:系統(tǒng)需要保證顯示屏幕清晰,字體大小適中,顏色鮮艷,以便醫(yī)護人員在不同光線環(huán)境下都能清晰地看到病床號信息;顯示格式規(guī)范:系統(tǒng)需要規(guī)范病床號的顯示格式,例如使用數字表示,且每個病床的編號必須唯一,避免出現混淆和錯誤;顯示方式可定制化:系統(tǒng)需要提供顯示方式的可定制化,例如可以設置不同顏色、字體大小等,以便醫(yī)護人員根據自己的需求進行調整;顯示內容簡潔明了:系統(tǒng)需要保證顯示內容簡潔明了,病床號信息的顯示應該盡量減少冗余信息,讓醫(yī)護人員能夠快速地獲取所需信息??傊?,基于STM32的病床病房呼叫系統(tǒng)中顯示屏顯示病床號的功能需求是為了方便醫(yī)護人員進行病床管理和病人救治,提高醫(yī)療服務質量和效率[10]。指示燈模塊:系統(tǒng)需要檢測到病人的呼叫請求;當有呼叫請求時,系統(tǒng)需要向指定的護士呼叫并通知其到該病床進行處理;系統(tǒng)需要控制指示燈的狀態(tài),在有呼叫請求時點亮相應的指示燈,以便護士能夠快速發(fā)現呼叫請求;當護士響應呼叫請求并處理完畢后,系統(tǒng)需要及時關閉指示燈[11]。蜂鳴器模塊:響鈴功能:當有病人呼叫時,蜂鳴器應該能夠發(fā)出清晰的響鈴聲音,以吸引醫(yī)護人員的注意;可調音量功能:蜂鳴器應該具有可調節(jié)音量的功能,以便根據實際情況調整聲音大??;可控制開關功能:蜂鳴器應該能夠通過系統(tǒng)的控制信號進行開關控制,以便在不需要響鈴的時候關閉蜂鳴器;報警功能:如果系統(tǒng)檢測到蜂鳴器故障或異常,應該能夠通過顯示屏或其他途徑發(fā)出相應的警報信號,以提示工作人員進行維修或更換[12]。綜上所述,基于STM32的病床病房呼叫系統(tǒng)中蜂鳴器的主要功能是在有病人呼叫時發(fā)出響鈴聲音,具有可調音量、可控制開關和報警功能[13]。2.2.1技術路線(1)硬件部分需要單片機STM32、顯示屏、按鍵、蜂鳴器、藍牙遠程APP模塊;(2)軟件平臺程序用keil5;(3)畫原理圖用AD;(4)編程語言用C語言;(5)用戶信息顯示查看。2.2.2預期結果通過對系統(tǒng)的布設和完善,最終完成的無線病床病房呼叫系統(tǒng)預期有如下成果:主機:無線接收并通過1602液晶顯示病房呼叫的床位和報警。從機:八個按鍵對應8個不同的病床號,從左到右分別為1到8號病床;檢測病人呼叫信號的采集和無線發(fā)射;(從機)當有病床上的病人要呼叫時,按下按鍵,(主機)LCD1602液晶顯示屏上會對應的顯示病人的床位號,同時對應的指示燈會亮,蜂鳴產生報警提示醫(yī)務人員,醫(yī)務人員按下“響應鍵”可以取消本次的呼叫,對應的指示燈會滅,同時液晶上會清除病床號。(從機)如果同時有多人同時呼叫時,(主機)液晶上會按先后順序顯示出不同的床位號,并對應的指示燈會亮。醫(yī)務人員按鍵“響應鍵“會按先后順序依次取消病人的呼叫,按一下取消一位病人,直到全部取消。2.3單片機型號選型51單片機的AD、EEPROM等功能需要靠擴展,增加了硬件和軟件負擔;雖然I/O腳使用簡單,但高電平時無輸出能力,這也是51系列單片機的最大軟肋;運行速度過慢,特別是雙數據指針,如能改進能給編程帶來很大的便利;51單片機保護能力很差,很容易燒壞芯片;目前在教學場合和對性能要求不高的場合大量被采用[14]。32單片機可以直接驅動數碼管顯示且外電路簡單,它的A/D為10位,能滿足精度要求。具有在線調試及編程(ISP)功能。并且具有低工作電壓、低功耗、驅動能力強等特點。PIC系列單片機的I/O口是雙向的,其輸出電路為CMOS互補推挽輸出電路。I/O腳增加了用于設置輸入或輸出狀態(tài)的方向寄存器,從而解決了51系列I/O腳為高電平時同為輸入和輸出的狀態(tài)。當置位1時為輸入狀態(tài),且不管該腳呈高電平或低電平,對外均呈高阻狀態(tài);置位0時為輸出狀態(tài),不管該腳為何種電平,均呈低阻狀態(tài),有相當的驅動能力,低電平吸入電流達25mA,高電平輸出電流可達20mA。相對于51系列而言,這是一個很大的優(yōu)點[15]。2.4系統(tǒng)運行環(huán)境該病床病房呼叫系統(tǒng),是基于STM32系列單片機搭載各種硬件設備實現的。2.4.1硬件環(huán)境本系統(tǒng)需要一定的硬件設備支持。(1)STM32單片機核心板模塊;(2)顯示屏模塊;(3)蜂鳴器、按鍵、LED燈;(4)硬件間排線等若干。2.4.2軟件環(huán)境系統(tǒng)對軟件環(huán)境的要求如下。(1)電腦操作系統(tǒng):Windows10;(2)開發(fā)軟件:KeiluVision5;(3)程序語言:C語言;(4)程序下載串口軟件:FlyMcu;(5)網絡協(xié)議:TCP/IP。2.5總體方案設計第一步:通過圖書館和網絡查詢到所需要的資科,要各個硬件器件的詳細資料,包括STM32芯片的資料、傳感器模塊的詳細資料及其介紹和各個品種的優(yōu)缺點。第二步:確定系統(tǒng)各個模塊,理清各個模塊之間的關系,收集相關得到軟硬件資料;第三步:規(guī)劃課題,確定系統(tǒng)組成結構,勾畫出大體系統(tǒng)框架并在結構框架的基礎上提出原理框圖;第四步:利用軟件完成硬件電路部分設計并畫出各部分電路圖,將系統(tǒng)部件通過接口電路集合在一起,并畫出電路圖;第五步:根據系統(tǒng)控制過程完成軟件設計部分,繪制出主流程圖;第六步:進行模擬仿真,檢查系統(tǒng)是否能夠按照要求實現控制功能,整理論文。

第3章系統(tǒng)硬件部分設計3.1系統(tǒng)總體設計本系統(tǒng)設計一個病床病房呼叫系統(tǒng)設計,全部硬件開發(fā)主要包含顯示屏、按鍵、LED燈、蜂鳴器,硬件系統(tǒng)設計需要完成以下個功能模塊設計組成:3-1總體原理圖(主、從)3.2系統(tǒng)主要功能模塊設計3.2.1顯示屏功能模塊設計基于STM32的病床病房呼叫系統(tǒng)中顯示屏的硬件設計需要考慮以下幾個方面的需求:顯示屏類型:選擇合適的顯示屏類型,例如字符型液晶顯示屏、彩色TFT液晶顯示屏等;分辨率和尺寸:根據實際需要選擇合適的分辨率和尺寸,以保證信息的清晰可見[16??];顯示接口:選擇適合的顯示接口,例如串口、并口、I2C總線等;控制器:選擇合適的控制器SSD1306,以實現顯示屏的控制;硬件連接:將顯示屏與STM32主控板進行硬件連接,包括VCC、GND、數據線等。根據以上需求,可以進行如下的硬件設計流程:選擇合適的顯示屏類型和尺寸,并確定顯示接口和控制器[17]。根據顯示屏的接口和控制器,設計連接顯示屏的電路,包括電源電路和信號電路。根據STM32的GPIO輸出控制信號,設計驅動顯示屏的電路,包括控制信號的輸出電路和數據傳輸電路。將顯示屏電路和STM32主控板電路進行連接。編寫相應的軟件代碼,實現控制顯示屏的功能。需要注意的是,在設計顯示屏的硬件時,需要根據具體的使用場景和系統(tǒng)功能,選擇合適的顯示屏類型和尺寸,以及控制器和接口,以實現最佳的用戶體驗和系統(tǒng)性能[18]。3.2.2蜂鳴器功能模塊設計基于STM32的病床病房呼叫系統(tǒng)中,蜂鳴器的硬件設計主要涉及到連接方式和驅動電路的設計。連接方式:蜂鳴器通常具有兩個引腳,分別為正極和負極。在連接蜂鳴器時,正極應該連接到STM32的一個GPIO輸出引腳,負極則應該連接到STM32的GND引腳上。驅動電路:圖3-2蜂鳴器報警電路3.2.3按鍵功能模塊設計按鍵類型:選擇適合應用場景的按鍵類型,例如矩形按鍵、圓形按鍵、輕觸開關等。按鍵數量:根據系統(tǒng)需要,確定需要幾個按鍵。接口類型:選擇適合的接口類型,例如GPIO、ADC等。按鍵防抖:使用硬件或軟件方式實現按鍵防抖,防止誤觸發(fā)[19]。按鍵狀態(tài)檢測:通過輪詢或中斷方式檢測按鍵狀態(tài),實現按鍵的功能。外部上拉/下拉電阻:設置外部上拉/下拉電阻,確保按鍵在空閑狀態(tài)下處于穩(wěn)定狀態(tài)[20]。以上內容應該結合具體的系統(tǒng)需求進行設計,并且需要注意硬件的可靠性和穩(wěn)定性。3.3本章小結基于STM32單片機的病床病房呼叫系統(tǒng)分析,基于現有的技術和經濟條件系統(tǒng)功能均可實現;將整個系統(tǒng)劃分為兩個功能模塊進行分析,使得對系統(tǒng)的分析能夠細致入微,同時也有利于后續(xù)工作的進行。

第4章軟件系統(tǒng)設計功能模塊系統(tǒng)功能的設計是滿足需求設計的,如果能告訴所有處理特別程序需要的設備,如果該系統(tǒng)對投入、產出和模塊作了準確的描述,就能使程序更有效地避免該系統(tǒng)的應用階段。4.1軟件主流程圖主程序首先對單片機進行初始化,使得相應的IO口以及中斷寄存器置位,以滿足接下來的操作。圖4-1系統(tǒng)軟件主流程圖4.2顯示屏程序的設計硬件初始化:首先需要對OLED顯示模塊進行初始化設置,包括引腳配置、SPI接口設置、顯示模式等。字符庫設計:為了在OLED顯示屏上顯示各種文字和圖標,需要提前設計好相應的字符庫,包括漢字、英文字母、數字、符號等。顯示函數實現:根據具體需求,設計相應的顯示函數,比如顯示實時測量值、歷史數據、報警信息等。顯示控制:根據系統(tǒng)需求,設計相應的顯示控制函數,包括顯示區(qū)域控制、顯示內容更新、清屏等。優(yōu)化和調試:對程序進行優(yōu)化和調試,保證其穩(wěn)定性和正確性,同時確保程序的可擴展性和可維護性。在具體實現中,可以使用OLED驅動庫來快速實現OLED的初始化、字符庫設計、顯示函數實現和顯示控制等功能,以節(jié)省開發(fā)時間和提高開發(fā)效率。同時,需要針對具體的傳感器和數據采集系統(tǒng),設計相應的數據處理和顯示程序,將采集到的數據實時顯示在OLED屏幕上,并提供相應的操作界面和功能。圖4-2顯示屏流程圖4.3蜂鳴器程序的設計1、配置蜂鳴器引腳為輸出模式;2、初始化定時器,將其配置為自動重裝載模式;3、設置定時器的預分頻器和計數器值,以實現需要的定時時間;4、在按鍵按下時,開啟定時器并輸出高電平到蜂鳴器引腳;5、當定時器溢出時,輸出低電平到蜂鳴器引腳,關閉定時器。圖4-3蜂鳴器流程圖4.4按鍵程序的設計目前各種結構的鍵盤,主要是利用機械觸點的合、斷作用,產生一個電壓信號,然后將這個電信號傳送給CPU。由于機械觸點的彈性作用,在閉合及斷開的瞬間均有抖動過程。抖動時間長短,與開關的機械特性有關,一般約5~10ms之間。圖4-4為閉合及斷開時的電壓抖動波形:圖4-4鍵閉合及斷開時的電壓抖動波形按鍵的穩(wěn)定閉合期,由操作人員的按鍵動作所確定,一般為十分之幾秒至幾秒時間。為保證CPU對鍵的一次操作僅作一次輸入處理,必須去除抖動影響及人為的操作時問長短的影響。通常去抖動影響的措施有硬、軟件兩種;可用基本R-S觸發(fā)器或單穩(wěn)態(tài)電路構成硬件去抖動電路如圖4-所示。也可采用軟件延時的方法除去鍵盤抖動產生的影響。采用軟件除去抖動影響的辦法是,在檢測到有鍵按下時,執(zhí)行一個10ms左右的延時程序,然后再去判斷該鍵電平是否仍保持閉合狀態(tài)電平,如保持閉合狀態(tài)電平則可確認該鍵為按下狀態(tài),從而消除了抖動影響。圖4-5RC去抖動電路4.5本章小結對系統(tǒng)的功能進行分析,論述各個功能模塊的需求,對其中功能模塊的設計進行流程化,可以使得系統(tǒng)具有完整性,可以實現相應的功能,利于后期的系統(tǒng)開發(fā),簡化后期的工作。第5章系統(tǒng)測試5.1系統(tǒng)實物圖無線病床病房呼叫系統(tǒng)實物圖如圖5-1所示。圖5-1系統(tǒng)完整實物圖5.2測試目的軟件測試是為了發(fā)現系統(tǒng)中可能存在的缺陷,有的人認為在測試過程中發(fā)現的錯誤越少越好,但事實并不是這樣的,只有在測試階段發(fā)現更多的問題才有利于提高軟件的完整性。軟件測試是一個破壞性的過程,其目的是為了盡可能多地發(fā)現軟件中的錯誤,而不是為了演示軟件的正確功能。5.3測試原則軟件測試應當遵循四個原則,分別為:測試應基于系統(tǒng)的需求;測試要盡早的進行;在編寫測試用例時,要考慮極端的條件,如特殊值、邊界值的輸入;測試用例編寫應當包括合理的輸入條件和不合理的輸入條件;充分注意測試中的群集現象。5.4功能測試啟動電源,顯示屏顯示0000,在按下8號鍵時,界下部分顯示病床(即8號病床呼叫);界面上部分代表共有一個病床按下,在起始位置顯示(循環(huán)顯示);如果現在不按清零鍵,再按下3號鍵時,按鍵號循環(huán)顯示,可以看出該系統(tǒng)具有記憶功能,以至于不會忽略之前按下的按鍵。綜上所述,本系統(tǒng)實現了主要功能:顯示病床號,亮報警提醒值班人員,若有多個病床同時呼叫,則循環(huán)顯示病床號,確保性息不丟失,待值班人員處理呼叫信息。通過PROTEUS軟件仿真,能達到上述結論,滿足課題目目的,達到要求。圖5-2功能測試圖5.5本章小結在該章中,對系統(tǒng)的功能模塊進行測試,對其獲得的測試進行詳細的記錄,并且進行分析,可以使得系統(tǒng)具有正常運行的特性,在模塊控制中,通過正常的使用,可以符合要求,使得該系統(tǒng)通過測試。第6章總結與展望本章主要對整個系統(tǒng)的開發(fā)過程進行了總結敘述和系統(tǒng)開發(fā)完成后的心得體會,整個開發(fā)工程中從開始的選題到最后項目完成這使我從中受益匪淺。6.1總結基于STM32的病床病房呼叫系統(tǒng)的開發(fā)需要涉及硬件設計、軟件編程、系統(tǒng)測試等多個方面,需要具備一定的技術水平和經驗。在開發(fā)過程中,需要注重系統(tǒng)的穩(wěn)定性和可靠性,同時考慮用戶的實際需求,確保系統(tǒng)的功能實用性和可行性。該系統(tǒng)具有以下優(yōu)點:實時性強:系統(tǒng)使用STM32作為核心處理器,可以快速響應用戶的操作請求,保證系統(tǒng)的實時性;穩(wěn)定性高:系統(tǒng)硬件設計合理,軟件編程嚴謹,可以保證系統(tǒng)的穩(wěn)定性和可靠性;操作簡單:系統(tǒng)界面簡潔明了,易于操作和維護,使用方便;靈活性強:系統(tǒng)具有良好的可擴展性和可定制性,可以根據用戶的需求進行擴展和定制。此時畢業(yè)設計,充分利用單片機開發(fā)上的靈活、快速的特點,來實現智能控制的設計。通過本次畢業(yè)論文的設計,使我認識到作為科技人員,重要的是思維縝密,知識經驗積累深厚,堅強的意志,同時還要創(chuàng)新的精神,當你覺得一種做法可能可以實現的時候就應該勇于嘗試,遇到問題的時候應該多問多想,不輕易放棄。在以后的工作和學習中,要勤奮踏實,善于思考,才能在競爭激烈的社會中提升自我的實用價值。這次的畢業(yè)設計給了我一個很好的學習機會,我在這里面學習到很多東西,受益匪淺。6.2展望基于STM32的病床病房呼叫系統(tǒng)可以進一步擴展和改進,以提高其功能和性能。以下是一些展望:添加網絡通信功能:可以通過網絡將病床呼叫信息發(fā)送到護士站,從而加快呼叫響應速度,減少護士的工作負擔。引入聲音提示功能:當病床呼叫被觸發(fā)時,可以通過內置的揚聲器播放聲音提示,以吸引護士的注意。增加安全性:可以添加身份驗證和訪問控制功能,以確保只有授權的人員才能訪問病床呼叫系統(tǒng)。提高數據記錄和分析能力:可以將病床呼叫數據記錄到內部存儲器中,并使用數據分析算法進行處理,以提供有關病人呼叫的有用信息和趨勢分析。應用機器學習算法:可以使用機器學習算法來識別病人的呼叫行為和呼叫緊急程度,并自動調度護士響應不同級別的呼叫。

參考文獻[1]唐建華.基于物聯網技術的臨床醫(yī)療護理監(jiān)測系統(tǒng)的研究與設計[M].浙江工業(yè)大學.2021.[2]姜濤;楊學存.基于Wifi的嵌入式多功能病房呼叫系統(tǒng)[C],電子測試.2022.[3]江琳.基于NRF24L01的簡易病房呼救系統(tǒng)設計與實現[C],電腦知識與技術.2022.[4]張昊;常盼.便攜式病房無線呼叫系統(tǒng)的設計.科技信息,2020.[5]黎一強.基于PLC控制的病床呼叫系統(tǒng)設計與應用[P].機電工程技術,2020.[6]呂曉穎.一種短距離無線數據通信的病床呼叫系統(tǒng)[M].單片機與嵌入式系統(tǒng)應用,2020.[7]劉會敏.無線病床呼叫系統(tǒng)設計[P].信息通信,2020.[8]邵婷婷;張明;范圣花.基于單片機的太陽能病床呼叫系統(tǒng)設計[P].信息技術,2020,.[9]梁春美;胡云琴.基于單片機的“病床呼叫和輸液監(jiān)控系統(tǒng)”設計[J].福建電腦.2021[10]崔巍;曹新亮;王孟德;呂忠亭.一種低成本的病床呼叫系統(tǒng)[M].現代電子技術.2020[11]廖春藍.基于Multisim的病床呼叫電路仿真設計與研究[J].山西電子技術,2021(06):88-90+93.[12]宋昕一,田璐羽,羅其波.基于proteus的病房呼叫系統(tǒng)[J].電子制作,2021(10):74-75.DOI:10.16589/11-3571/tn.2021.10.025.[13]鄧澤軍,孫志鋒.基于NB-IOT的無線病房呼叫系統(tǒng)[J].工業(yè)控制計算機,2020,33(01):61-62+66.[14]郭春梅,周興朝.基于語音識別的病房呼叫系統(tǒng)的分類呼叫設計[J].醫(yī)療裝備,2021,34(01):27-29.[15]唐建華.基于物聯網技術的臨床醫(yī)療護理監(jiān)測系統(tǒng)的研究與設計[D].浙江工業(yè)大學,2019.DOI:10.27463/ki.gzgyu.2019.000930.[16]KormosWilliam.Oncall.Myfeetarealwayscold,especiallywhenIgotobed.CouldIhaveaproblemwithmycirculation?.[M].2021[17]EddyChristopher;;JonesSusanC.Bedbugs,publichealth,andsocialjustice:Part1,Acalltoaction.2022.[18]Toone,Stephanie.Where'sthecaller?Nextyear,sixtestbedswillhelpanswerthatquestionforindoor911calls.2019[19]ChristinaScott.Youcallitamenialtask,Icallitholisticcare[P].NursingStandard.2020[20]Vassou,Andrea.Callfromyourhospitalbed[P].ComputerAct!ve.2019.

附錄A總原理圖主機:從機:圖A-1總原理圖附錄B程序#include<reg52.h> //調用單片機頭文件#defineucharunsignedchar//無符號字符型宏定義 變量范圍0~255#defineuintunsignedint //無符號整型宏定義 變量范圍0~65535sbitrs=P1^0; //寄存器選擇信號H:數據寄存器 L:指令寄存器sbitrw=P1^1; //寄存器選擇信號H:數據寄存器 L:指令寄存器sbite=P1^2; //片選信號下降沿觸發(fā)sbitbeep=P3^2; //蜂鳴器IO口定義sbitkey_quxiao=P3^4; //取消鍵IO口定義uintflag_200ms;//300ms的標志位uchardis_lcd[8];//8個病房數據顯示的緩沖區(qū)ucharbr_geshu;//報警病人數//****************************************IO端口定義***************************************sbitCE=P2^2;sbitSCK=P2^1;sbitMISO=P2^0;sbitCSN=P2^3;sbitMOSI=P2^4;sbitIRQ=P2^5;//******************************************************************************************ucharbdatasta;//狀態(tài)標志sbitRX_DR=sta^6;sbitTX_DS=sta^5;sbitMAX_RT=sta^4;//*********************************************NRF24L01*************************************#defineTX_ADR_WIDTH5//5uintsTXaddresswidth#defineRX_ADR_WIDTH5//5uintsRXaddresswidth#defineTX_PLOAD_WIDTH32//32uintsTXpayload#defineRX_PLOAD_WIDTH32//32uintsTXpayloaducharcodeTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x41,0x10,0x15,0x05};//本地地址ucharcodeRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x12,0x10,0x75};//接收地址ucharTx_Buf[TX_PLOAD_WIDTH];//發(fā)送數據ucharRx_Buf[RX_PLOAD_WIDTH];//接收數據//***************************************NRF24L01寄存器指令*******************************************************#defineREAD_REG0x00//讀寄存器指令#defineWRITE_REG0x20//寫寄存器指令#defineRD_RX_PLOAD0x61//讀取接收數據指令#defineWR_TX_PLOAD0xA0//寫待發(fā)數據指令#defineFLUSH_TX0xE1//沖洗發(fā)送FIFO指令#defineFLUSH_RX0xE2//沖洗接收FIFO指令#defineREUSE_TX_PL0xE3//定義重復裝載數據指令#defineNOP0xFF//保留//*************************************SPI(nRF24L01)寄存器地址****************************************************#defineCONFIG0x00//配置收發(fā)狀態(tài),CRC校驗模式以及收發(fā)狀態(tài)響應方式#defineEN_AA0x01//自動應答功能設置#defineEN_RXADDR0x02//可用信道設置#defineSETUP_AW0x03//收發(fā)地址寬度設置#defineSETUP_RETR0x04//自動重發(fā)功能設置#defineRF_CH0x05//工作頻率設置#defineRF_SETUP0x06//發(fā)射速率、功耗功能設置#defineSTATUS0x07//狀態(tài)寄存器#defineOBSERVE_TX0x08//發(fā)送監(jiān)測功能#defineCD0x09//地址檢測#defineRX_ADDR_P00x0A//頻道0接收數據地址#defineTX_ADDR0x10//發(fā)送地址寄存器#defineRX_PW_P00x11//接收頻道0接收數據長度#defineFIFO_STATUS0x17//FIFO棧入棧出狀態(tài)寄存器設置/************************************IO口模擬SPI總線代碼************************************************/ucharSPI_RW(ucharbyte){ uchari; for(i=0;i<8;i++) { MOSI=(byte&0x80); byte=(byte<<1); SCK=1; byte|=MISO; //led=MISO;Delay(150); SCK=0; } return(byte);}ucharSPI_RW_Reg(ucharreg,ucharvalue)//向寄存器REG寫一個字節(jié),同時返回狀態(tài)字節(jié){ ucharstatus; CSN=0; status=SPI_RW(reg); SPI_RW(value); CSN=1; return(status);}ucharSPI_Read(ucharreg){ ucharreg_val; CSN=0; SPI_RW(reg); reg_val=SPI_RW(0); CSN=1; return(reg_val);}ucharSPI_Write_Buf(ucharreg,uchar*pBuf,ucharbytes){ ucharstatus,byte_ctr; CSN=0;//SetCSNlow,initSPItranaction status=SPI_RW(reg);//選擇寄存器寫入和讀取狀態(tài)字節(jié) for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)//然后寫所有字節(jié)在緩沖區(qū)(*pBuf) SPI_RW(*pBuf++); CSN=1;//SetCSNhighagain return(status);//nRF24L01返回狀態(tài)字節(jié)}/*******************************發(fā)*****送*****模*****式*****代*****碼*************************************/voidTX_Mode(void){ CE=0; SPI_RW_Reg(FLUSH_TX,0x00); SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);//tx地址來nRF24L01寫道 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//RX_Addr0txadr一樣為自動ack SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);//EnablePipe0 SPI_RW_Reg(WRITE_REG+SETUP_RETR,0x1a);//500us+86us,10重發(fā)...1a SPI_RW_Reg(WRITE_REG+RF_CH,40);//選擇RF信道40 SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//設置接收數據長度,本次設置為2字節(jié) SPI_RW_Reg(WRITE_REG+CONFIG,0x0e); CE=1;}voidTransmit(unsignedchar*tx_buf){ //傳輸 CE=0;//StandByI模式 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//裝載接收端地址 SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);//裝載數據 SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);//IRQ收發(fā)完成中斷響應,16位CRC,主發(fā)送 CE=1;//置高CE,激發(fā)數據發(fā)送}/*******************************接*****收*****模*****式*****代*****碼*************************************/ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars){ ucharstatus,i; //交易 CSN=0;//SetCSNlow,initSPItranaction status=SPI_RW(reg);//選擇寄存器寫入和讀取的狀態(tài)uchar for(i=0;i<uchars;i++) pBuf[i]=SPI_RW(0);// CSN=1; return(status);//returnnRF24L01statusuchar}/******************************************************************************************************//*函數:unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf)/*功能:數據讀取后放如rx_buf接收緩沖區(qū)中/******************************************************************************************************/unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf){ unsignedcharrevale=0; sta=SPI_Read(STATUS);//讀取狀態(tài)寄存其來判斷數據接收狀況 if(RX_DR)//判斷是否接收到數據 { //CE=0;//SPI使能 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,RX_PLOAD_WIDTH);//readreceivepayloadfromRX_FIFObuffer revale=1;//讀取數據完成標志 //Delay(100); } SPI_RW_Reg(WRITE_REG+STATUS,sta);//接收到數據后RX_DR,TX_DS,MAX_PT都置高為1,通過寫1來清楚中斷標志 returnrevale;}/****************************************************************************************************//*函數:voidRX_Mode(void)/*功能:數據接收配置/****************************************************************************************************/voidRX_Mode(void){ CE=0; SPI_RW_Reg(FLUSH_RX,0x00); SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//RX_Addr0sameasTX_AdrforAuto.Ack SPI_RW_Reg(WRITE_REG+EN_AA,0x01);//EnableAuto.Ack:Pipe0 SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);//EnablePipe0 SPI_RW_Reg(WRITE_REG+RF_CH,40);//SelectRFchannel40 SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//設置接收數據長度,本次設置為32字節(jié) SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);//TX_PWR:0dBm,Datarate:1Mbps,LNA:HCURR SPI_RW_Reg(WRITE_REG+CONFIG,0x0F); CE=1;}/*********************************************************************名稱:delay_1ms()*功能:延時1ms函數*輸入:q*輸出:無***********************************************************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/***********************延時函數************************/voiddelay_uint(uintq){ while(q--);}/***********************lcd1602寫命令函數************************/voidwrite_com(ucharcom){ rs=0; //寫命令 rw=0; //對1602寫操作 P0=com; //P0口對1602寫命令數據 delay_uint(25); e=1; //e=1使能信號 delay_uint(100);//延時一下等1602完成操作 e=0;}/***********************lcd1602寫數據函數************************/voidwrite_data(uchardat){ rs=1; //寫數據 rw=0; //對1602寫操作 P0=dat; //P0口對1602寫數據 delay_uint(25); e=1; //e=1使能信號 delay_uint(100);//延時一下等1602完成操作 e=0; }/***********************lcd1602上顯示這字符函數************************/voidwrite_string(ucharhang,ucharadd,uchar*p){ if(hang==1) write_com(0x80+add); //1602寫第一行的地址 else write_com(0x80+0x40+add);//1602寫第二行的地址 while(1) { if(*p=='\0')break; //\0字符串的結尾標志break結束while循環(huán)結束寫字符 write_data(*p); //寫數據 p++; //指針地址加1 } }/***********************lcd1602上顯示這字符函數************************/voidwrite_string_ge(ucharhang,ucharadd,uchar*p,ucharge){ uchari; if(hang==1) write_com(0x80+add); //1602寫第一行的地址 else write_com(0x80+0x40+add);//1602寫第二行的地址 for(i=0;i<ge;i++) { write_data(0x30+*p); //寫數據 p++; //指針地址加1 }}/***********************lcd1602初始化設置************************/voidinit_1602() //lcd1602初始化設置{ write_com(0x38);//顯示模式設置:16×2顯示,5×7點陣,8位數據接口不檢測忙信號 write_com(0x0c);//開顯示不顯示光標 write_com(0x06);//當寫一個字符是,地址指針加1 write_string(1,0,"bingfanghujiao"); //初始化顯示 write_string(2,0,"wubingren"); //初始化顯示}ucharkey_can; voidkey_qx() //取消按鍵程序{ key_quxiao=1;//對應的按鍵IO口輸出為1 if(key_quxiao==0) //按鍵按下 { delay_1ms(1); //按鍵消抖動 if(key_quxiao==0) { //確認是按鍵按下 key_can=9; } }} /**********************按鍵處理函數************************/voidkey_with(){ uchari; if(key_can<=8) { if(br_geshu<8) { br_geshu++; //呼叫病人的人數加1 for(i=7;i>0;i--) dis_lcd[i]=dis_lcd[i-1];//把病人的數據向后移一位 dis_lcd[0]=key_can; //把病人的號碼保存起來 write_string_ge(2,0,dis_lcd,br_geshu); //顯示出來 } } if(key_can==9)//取消鍵的處理 { if(br_geshu>0) { key_can=dis_lcd[br_geshu-1]; //讀出最前一個病人號 dis_lcd[br_geshu-1]=0;//把最前一個病人號清零 br_geshu--; //呼叫病人的人數減1 write_string_ge(2,0,dis_lcd,br_geshu); if(br_geshu==0) //取消到最后一次清顯示屏 { write_string(2,0,"wubingren"); } //24L01無線發(fā)射信號 TX_Mode(); //24L01設置成無線發(fā)射模式 Tx_Buf[0]=0xa1; //起始數據 Tx_Buf[1]=key_can; //呼叫病人號 Tx_Buf[2]=br_geshu; //呼叫病人的人數 Transmit(Tx_Buf); //24L01無線發(fā)射數據 RX_Mode(); //24L01設置成無線接收模式 } }}/*****************主函數********************/voidmain(){ beep=0; //開機叫一聲 delay_1ms(150); beep=1; init_1602(); //lcd1602初始化 RX_Mode(); //24L01設置成無線接收模式 while(1) { key_qx(); //取消按鍵程序 key_with(); //病房處理函數 flag_200ms++; if(flag_200ms>=200) { flag_200ms=0; if(br_geshu>0) //有人呼叫 beep=~beep;//蜂鳴器報警 else beep=1;//取消報警 if(nRF24L01_RxPacket(Rx_Buf)) //24L01無線接收 { if(Rx_Buf[0]==0xa1) { key_can=Rx_Buf[1];//接收病人號 } } } delay_1ms(1); }}#include<reg52.h> //調用單片機頭文件#defineucharunsignedchar//無符號字符型宏定義 變量范圍0~255#defineuintunsignedint //無符號整型宏定義 變量范圍0~65535ucharflag_en;uchari;bitflag_300ms;//300ms的標志位sbitled1=P1^0;//第1號病房指示燈sbitled2=P1^1;//第2號病房指示燈sbitled3=P1^2;//第3號病房指示燈sbitled4=P1^3;//第4號病房指示燈sbitled5=P1^4;//第5號病房指示燈sbitled6=P1^5;//第6號病房指示燈sbitled7=P1^6;//第7號病房指示燈sbitled8=P1^7;//第8號病房指示燈ucharbr_geshu;//報警病人數uchardis_lcd[8];//8個病房數據顯示的緩沖區(qū)uintflag_200ms; //****************************************IO端口定義***************************************sbitCE=P2^2;sbitSCK=P2^1;sbitMISO=P2^0;sbitCSN=P2^3;sbitMOSI=P2^4;sbitIRQ=P2^5;//******************************************************************************************ucharbdatasta;//狀態(tài)標志sbitRX_DR=sta^6;sbitTX_DS=sta^5;sbitMAX_RT=sta^4;//*********************************************NRF24L01*************************************#defineTX_ADR_WIDTH5//5uintsTXaddresswidth#defineRX_ADR_WIDTH5//5uintsRXaddresswidth#defineTX_PLOAD_WIDTH32//32uintsTXpayload#defineRX_PLOAD_WIDTH32//32uintsTXpayloaducharcodeTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x41,0x10,0x15,0x05};//本地地址ucharcodeRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x12,0x10,0x75};//接收地址ucharTx_Buf[TX_PLOAD_WIDTH]={0};//發(fā)送數據ucharRx_Buf[RX_PLOAD_WIDTH];//接收數據//***************************************NRF24L01寄存器指令*******************************************************#defineREAD_REG0x00//讀寄存器指令#defineWRITE_REG0x20//寫寄存器指令#defineRD_RX_PLOAD0x61//讀取接收數據指令#defineWR_TX_PLOAD0xA0//寫待發(fā)數據指令#defineFLUSH_TX0xE1//沖洗發(fā)送FIFO指令#defineFLUSH_RX0xE2//沖洗接收FIFO指令#defineREUSE_TX_PL0xE3//定義重復裝載數據指令#defineNOP0xFF//保留//*************************************SPI(nRF24L01)寄存器地址****************************************************#defineCONFIG0x00//配置收發(fā)狀態(tài),CRC校驗模式以及收發(fā)狀態(tài)響應方式#defineEN_AA0x01//自動應答功能設置#defineEN_RXADDR0x02//可用信道設置#defineSETUP_AW0x03//收發(fā)地址寬度設置#defineSETUP_RETR0x04//自動重發(fā)功能設置#defineRF_CH0x05//工作頻率設置#defineRF_SETUP0x06//發(fā)射速率、功耗功能設置#defineSTATUS0x07//狀態(tài)寄存器#defineOBSERVE_TX0x08//發(fā)送監(jiān)測功能#defineCD0x09//地址檢測#defineRX_ADDR_P00x0A//頻道0接收數據地址#defineRX_ADDR_P10x0B//頻道1接收數據地址#defineRX_ADDR_P20x0C//頻道2接收數據地址#defineRX_ADDR_P30x0D//頻道3接收數據地址#defineRX_ADDR_P40x0E//頻道4接收數據地址#defineRX_ADDR_P50x0F//頻道5接收數據地址#defineTX_ADDR0x10//發(fā)送地址寄存器#defineRX_PW_P00x11//接收頻道0接收數據長度#defineRX_PW_P10x12//接收頻道0接收數據長度#defineRX_PW_P20x13//接收頻道0接收數據長度#defineRX_PW_P30x14//接收頻道0接收數據長度#defineRX_PW_P40x15//接收頻道0接收數據長度#defineRX_PW_P50x16//接收頻道0接收數據長度#defineFIFO_STATUS0x17//FIFO棧入棧出狀態(tài)寄存器設置/*********************************************************************名稱:delay_1ms()*功能:延時1ms函數*輸入:q*輸出:無***********************************************************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}//短延時voiddelay_ms(unsignedintx){ unsignedinti,j; for(i=0;i<x;i++) { j=108;; while(j--); }}/************************************IO口模擬SPI總線代碼************************************************/ucharSPI_RW(ucharbyte){ uchari; for(i=0;i<8;i++) { MOSI=(byte&0x80); byte=(byte<<1); SCK=1; byte|=MISO; //led=MISO;Delay(150); SCK=0; } return(byte);}ucharSPI_RW_Reg(ucharreg,ucharvalue)//向寄存器REG寫一個字節(jié),同時返回狀態(tài)字節(jié){ ucharstatus; CSN=0; status=SPI_RW(reg); SPI_RW(value); CSN=1; return(status);}ucharSPI_Read(ucharreg){ ucharreg_val; CSN=0; SPI_RW(reg); reg_val=SPI_RW(0); CSN=1; return(reg_val);}ucharSPI_Write_Buf(ucharreg,uchar*pBuf,ucharbytes){ ucharstatus,byte_ctr; CSN=0;//SetCSNlow,initSPItranaction status=SPI_RW(reg);//選擇寄存器寫入和讀取狀態(tài)字節(jié) for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)//然后寫所有字節(jié)在緩沖區(qū)(*pBuf) SPI_RW(*pBuf++); CSN=1;//SetCSNhighagain return(status);//nRF24L01返回狀態(tài)字節(jié)}/*******************************發(fā)*****送*****模*****式*****代*****碼*************************************/voidTX_Mode(void){ CE=0; SPI_RW_Reg(FLUSH_TX,0x00); SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);//tx地址來nRF24L01寫道 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//RX_Addr0txadr一樣為自動ack SPI_RW_Reg(WRITE_REG+EN_AA,0x01);//EnableAuto.Ack:Pipe0 SPI_RW_Reg(WRITE_REG+SETUP_RETR,0x1a);//500us+86us,10重發(fā)...1a SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);//TX_PWR:0dBm,Datarate:1Mbps,LNA:HCURR SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//設置接收數據長度,本次設置為2字節(jié) SPI_RW_Reg(WRITE_REG+CONFIG,0x0e); CE=1; delay_ms(100);}voidTransmit(unsignedchar*tx_buf){ //傳輸 CE=0;//StandByI模式 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//裝載接收端地址 SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);//裝載數據 SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);//IRQ收發(fā)完成中斷響應,16位CRC,主發(fā)送 CE=1;//置高CE,激發(fā)數據發(fā)送 delay_ms(150);}/*******************************接*****收*****模*****式*****代*****碼*************************************/ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars){ ucharstatus,i; //交易 CSN=0;//SetCSNlow,initSPItranaction status=SPI_RW(reg);//選擇寄存器寫入和讀取的狀態(tài)uchar for(i=0;i<uchars;i++) pBuf[i]=SPI_RW(0);// CSN=1; return(status);//returnnRF24L01statusuchar}/******************************************************************************************************//*函數:unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf)/*功能:數據讀取后放如rx_buf接收緩沖區(qū)中/******************************************************************************************************/unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf){ unsignedcharrevale=0; sta=SPI_Read(STATUS);//讀取狀態(tài)寄存其來判斷數據接收狀況 if(RX_DR)//判斷是否接收到數據 { //CE=0;//SPI使能 SPI_Read_Buf(RD_RX_PLOAD,rx_buf,RX_PLOAD_WIDTH);//readreceivepayloadfromRX_FIFObuffer revale=1;//讀取數據完成標志 //Delay(100); } SPI_RW_Reg(WRITE_REG+STATUS,sta);//接收到數據后R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論