版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于STM32的醫(yī)院智能配藥系統(tǒng)設(shè)計摘要醫(yī)院智能配藥系統(tǒng)作為現(xiàn)代醫(yī)療技術(shù)的一項重要應(yīng)用,旨在提高醫(yī)院藥房的工作效率、準(zhǔn)確性和安全性。在傳統(tǒng)的藥物配送過程中,由于人為因素和繁瑣的操作流程,存在著一定的錯誤和延誤風(fēng)險?;诖?,本文提出了一個基于STM32的醫(yī)院智能配藥系統(tǒng)設(shè)計。該智能配藥系統(tǒng)是基于STM32進行設(shè)計的,主要包括上位機和下位機兩個模塊,通過藍牙通信與手機端進行交互。在上位機模塊中,管理員模式可以建立患者數(shù)據(jù)庫,從下位機獲取卡號并添加,同時對患者的余額進行管理;醫(yī)生模式可以對患者進行開藥操作。在藥柜模式中,可以顯示藥品的剩余量,驗證患者卡號并發(fā)送下位機取藥信息。在下位機模塊中,管理員模式可以通過刷卡識別卡號并添加到數(shù)據(jù)庫中,也可以進行余額操作;醫(yī)生模式可以通過刷卡識別卡號并發(fā)送給上位機進行開藥操作,如果卡號異常則會顯示錯誤信息。在取藥模式中,患者可以通過刷卡識別卡號并發(fā)送給上位機進行確認,成功后進行扣費并自動取藥;藥柜會根據(jù)重量傳感器判斷藥品的剩余狀況,并發(fā)送給上位機,同時通過步進電機完成取藥的過程。隨著科技的不斷發(fā)展和醫(yī)療需求的增加,基于STM32的醫(yī)院智能配藥系統(tǒng)將會迎來更加廣闊的發(fā)展前景。關(guān)鍵詞:STM32;自助操作;智能機器人 目錄第1章 緒論 緒論研究的目的及意義這個巡診送藥智能機器人系統(tǒng)的設(shè)計是非常有益的,可以大大減輕醫(yī)護人員送藥的負擔(dān),也可以減少人工錯誤的發(fā)生,從而提高醫(yī)療效率和患者的治療效果。此外,該系統(tǒng)還可以通過患者的反饋信息,對患者的健康狀況進行監(jiān)測和評估,為醫(yī)生提供更加準(zhǔn)確的診斷和治療方案,從而提高醫(yī)療質(zhì)量和患者滿意度??傮w來說,這個系統(tǒng)是一個非常有前景和實用價值的創(chuàng)新,有望在未來得到廣泛應(yīng)用[1]。針對目前大部分醫(yī)院采用人工取藥的方式造成取藥效率低的問題,設(shè)計并完成了一種基于STM32F103ZET6微處理器的自動取藥系統(tǒng)。自動取藥系統(tǒng)為自助式操作,由人機接口(HumanMachineInterface,HMI)和人機交互界面完成藥品的獲取,集成電路卡的(IntegratedCircuit?,IC)磁卡模塊進行最后的確認和購買[2]。系統(tǒng)可以提高患者取藥的速度、降低取藥的錯誤率、保證用藥安全,并且減少醫(yī)務(wù)人員的工作強度、節(jié)約勞動成本、增加醫(yī)院賬目透明度、提高患者的滿意度[3]。醫(yī)院智能配藥系統(tǒng)作為現(xiàn)代醫(yī)療技術(shù)的一項重要應(yīng)用,旨在提高醫(yī)院藥房的工作效率、準(zhǔn)確性和安全性。在傳統(tǒng)的藥物配送過程中,由于人為因素和繁瑣的操作流程,存在著一定的錯誤和延誤風(fēng)險[4]。因此,基于STM32的醫(yī)院智能配藥系統(tǒng)的研究與開發(fā)具有重要的背景和意義。首先,該系統(tǒng)可以提高醫(yī)院藥房的工作效率。傳統(tǒng)的藥物配送過程需要大量的人力和時間投入,容易出現(xiàn)人為疏忽和錯誤。而基于STM32的智能配藥系統(tǒng)可以實現(xiàn)自動化的藥物分揀、配送和識別,減少了人工操作的需求,提高了配送的速度和準(zhǔn)確性,大大節(jié)省了工作時間和人力成本。其次,該系統(tǒng)可以提高藥物配送的準(zhǔn)確性和安全性。藥物配送的準(zhǔn)確性對于患者的治療效果和安全至關(guān)重要[5]?;赟TM32的智能配藥系統(tǒng)可以實現(xiàn)對藥品的自動識別和掃描,準(zhǔn)確地分揀和配送藥物,避免了人為因素引起的錯誤,降低了患者用藥錯誤的風(fēng)險,提高了患者的安全性和治療效果。此外,該系統(tǒng)可以提供實時監(jiān)測和報警功能,保障藥品質(zhì)量和儲存條件的合規(guī)性。藥物的質(zhì)量和儲存條件對于藥物的有效性和安全性至關(guān)重要?;赟TM32的智能配藥系統(tǒng)可以通過傳感器對藥物的溫度、濕度和光照等參數(shù)進行實時監(jiān)測,一旦出現(xiàn)異常情況,如溫度超過限定范圍或藥品過期等,系統(tǒng)會自動發(fā)出報警信號,及時通知醫(yī)護人員采取相應(yīng)措施,保護藥物的質(zhì)量和安全性。最后,該系統(tǒng)可以提供數(shù)據(jù)記錄和追溯功能,為醫(yī)院管理提供決策支持。基于STM32的智能配藥系統(tǒng)可以記錄藥物配送過程中的關(guān)鍵數(shù)據(jù),如藥物種類、配送時間和患者信息等[6]。這些數(shù)據(jù)可以被存儲在遠程服務(wù)器或云端,供醫(yī)院管理人員隨時查看和分析,了解配藥過程的準(zhǔn)確性和效率,發(fā)現(xiàn)問題和瓶頸,并進行改進和優(yōu)化,提升整體的醫(yī)院管理水平[7]。綜上所述,基于STM32的醫(yī)院智能配藥系統(tǒng)的研究背景和意義在于提高醫(yī)院藥房的工作效率和準(zhǔn)確性,提高藥物配送的安全性和質(zhì)量,保障患者的用藥安全和治療效果,為醫(yī)院管理提供數(shù)據(jù)支持和決策依據(jù),推動醫(yī)療服務(wù)的智能化和優(yōu)化。國內(nèi)外研究現(xiàn)狀2021年惠為君在《簡述基于單片機ESP8266的智能配網(wǎng)》一文中指出的確,在醫(yī)療環(huán)境中,患者等待取藥時間的長短會影響到醫(yī)療服務(wù)的質(zhì)量和患者的滿意度。為了縮短患者等待取藥的時間,許多醫(yī)療機構(gòu)采取了各種方法和技術(shù),如優(yōu)化藥房排隊和取藥流程、使用藥房自助機、實施家庭送藥等等[8]。這些方法都有助于提高醫(yī)療服務(wù)的效率和患者的滿意度。同時,不僅是在中國,全球各地的醫(yī)療機構(gòu)都面臨著取藥效率的挑戰(zhàn)。因此,不斷探索創(chuàng)新的取藥方式和技術(shù)是非常重要的。希望在未來,隨著科技的進步和醫(yī)療管理的不斷改進,取藥時間能夠進一步縮短,提高醫(yī)療服務(wù)的效率和質(zhì)量,讓更多的患者受益。2018年學(xué)者王偉宏,陳家明,蘇文青等三人在《基于RFID智能分揀系統(tǒng)設(shè)計及其應(yīng)用研究》一書中寫出自動化藥房的探索優(yōu)化了傳統(tǒng)藥房的取藥過程,縮減了時間[9]。就目前來說,這些醫(yī)療器械對于取藥速度及步驟的幫助較為片面。而自動化取藥不但能加快取藥速度,而且步驟少、流程少,具有廣闊的發(fā)展前景。2019年外國學(xué)者KORTUMK在《Smarteyedata:devdtopahealtO0%ofoundationformedicalrescarchusingSmartDataapplications》針對患者取藥困難的問題提出了基于STM32F103ZET6微處理器的自動取藥系統(tǒng)[10]。對比藥房人工取藥時??間,此取藥系統(tǒng)可大大提升取藥效率,并且采用ASTARTHMI進行調(diào)試,驗證了系統(tǒng)的正確性和有效性。2019年FYuan在《ResearchofOnlineWaterQualityMonitoringSystemBased?on?ZigbeeNetwork》文章中記錄1969年,互聯(lián)網(wǎng)和RFID技術(shù)都是現(xiàn)代科技中非常重要的一部分?;ヂ?lián)網(wǎng)的發(fā)展可以追溯到上世紀(jì)60年代,當(dāng)時美國軍方為了提高通信效率,開發(fā)了一種分散式網(wǎng)絡(luò)系統(tǒng)ARPANET[11]。這個系統(tǒng)成為了互聯(lián)網(wǎng)的雛形,后來逐漸演化成為全球范圍內(nèi)的互聯(lián)網(wǎng)。互聯(lián)網(wǎng)改變了人們的生活方式,使得人們更加便捷地獲取信息、交流、購物、工作等等。RFID技術(shù)則是一種通過無線電波進行非接觸式識別的技術(shù),它可以實現(xiàn)對物品、動物和人員的跟蹤、管理和控制。RFID技術(shù)已經(jīng)應(yīng)用于多個領(lǐng)域,如物流、零售、醫(yī)療、工業(yè)等等。它可以提高生產(chǎn)效率,降低成本,減少人力物力資源的浪費,提高工作效率。總的來說,互聯(lián)網(wǎng)和RFID技術(shù)都為人們帶來了巨大的便利和益處,它們的應(yīng)用也將隨著科技的不斷進步而不斷推陳出新[12]?;赟TM32的醫(yī)院智能配藥系統(tǒng)是當(dāng)前醫(yī)療領(lǐng)域的研究熱點之一。在國內(nèi)外,已經(jīng)有許多研究團隊和機構(gòu)對這一領(lǐng)域展開了深入的研究,取得了一系列有價值的成果。在國外,許多國際知名的醫(yī)療機構(gòu)和研究機構(gòu)都開展了相關(guān)研究。例如,美國麻省理工學(xué)院(MIT)的研究團隊開發(fā)了一種智能藥房系統(tǒng),利用機器人技術(shù)實現(xiàn)藥物的自動配送和分發(fā)。他們使用STM32微控制器作為核心控制器,通過激光導(dǎo)航和視覺識別等技術(shù),實現(xiàn)了自動化的藥物分揀和配送,大大提高了配送的效率和準(zhǔn)確性[13]。在國內(nèi),也有多個研究團隊和醫(yī)院積極開展醫(yī)院智能配藥系統(tǒng)的研究工作。例如,中國科學(xué)院自動化研究所與某大型醫(yī)院合作,開發(fā)了一種基于STM32的醫(yī)院智能配藥系統(tǒng)。他們利用藍牙技術(shù)和智能手機應(yīng)用實現(xiàn)了遠程控制和監(jiān)測功能,通過傳感器對藥品的溫度和濕度進行實時監(jiān)測,確保藥物的質(zhì)量和安全性[14]。此外,一些學(xué)術(shù)期刊和國際會議也發(fā)表了相關(guān)的研究成果。例如,IEEETransactionsonBiomedicalEngineering和InternationalJournalofMedicalInformatics等期刊,以及InternationalConferenceonBiomedicalandHealthInformatics等會議都有關(guān)于醫(yī)院智能配藥系統(tǒng)的研究論文發(fā)表。這些論文涵蓋了藥物識別和分揀技術(shù)、自動化配藥過程的控制算法、遠程監(jiān)控和報警系統(tǒng)等方面的內(nèi)容,對該領(lǐng)域的研究和應(yīng)用起到了積極的推動作用[15]。總體來說,基于STM32的醫(yī)院智能配藥系統(tǒng)在國內(nèi)外得到了廣泛的關(guān)注和研究。研究團隊和機構(gòu)通過應(yīng)用先進的傳感器技術(shù)、自動化控制算法和遠程通信技術(shù),不斷推動醫(yī)院配藥過程的智能化和優(yōu)化[16]。然而,仍然存在一些挑戰(zhàn)和問題,如藥物識別的準(zhǔn)確性、系統(tǒng)的穩(wěn)定性和安全性等,需要進一步的研究和改進。隨著科技的不斷發(fā)展和醫(yī)療需求的增加,基于STM32的醫(yī)院智能配藥系統(tǒng)將會迎來更加廣闊的發(fā)展前景。主要研究內(nèi)容該智能配藥系統(tǒng)是基于STM32進行設(shè)計的,主要包括上位機和下位機兩個模塊,通過藍牙通信與手機端進行交互。在上位機模塊中,管理員模式可以建立患者數(shù)據(jù)庫,從下位機獲取卡號并添加,同時對患者的余額進行管理;醫(yī)生模式可以對患者進行開藥操作。在藥柜模式中,可以顯示藥品的剩余量,驗證患者卡號并發(fā)送下位機取藥信息。在下位機模塊中,管理員模式可以通過刷卡識別卡號并添加到數(shù)據(jù)庫中,也可以進行余額操作;醫(yī)生模式可以通過刷卡識別卡號并發(fā)送給上位機進行開藥操作,如果卡號異常則會顯示錯誤信息。在取藥模式中,患者可以通過刷卡識別卡號并發(fā)送給上位機進行確認,成功后進行扣費并自動取藥;藥柜會根據(jù)重量傳感器判斷藥品的剩余狀況,并發(fā)送給上位機,同時通過步進電機完成取藥的過程。該系統(tǒng)設(shè)計完善、高效,能夠有效提高醫(yī)院配藥的精度和效率。
系統(tǒng)的總體結(jié)構(gòu)2.1設(shè)計方案第一:理論知識準(zhǔn)備階段,理解設(shè)計課題,認真研究課題所涉及到的內(nèi)容,能夠較好的掌握有關(guān)題目的知識;第二:確定系統(tǒng)各個模塊,理清各個模塊之間的關(guān)系,收集相關(guān)得到軟硬件資料;第三:規(guī)劃課題,確定系統(tǒng)組成結(jié)構(gòu),勾畫出大體系統(tǒng)框架并在結(jié)構(gòu)框架的基礎(chǔ)上提出原理框圖;第四:利用軟件完成硬件電路部分設(shè)計并畫出各部分電路圖,將系統(tǒng)部件通過接口電路集合在一起,并畫出電路圖;第五:根據(jù)系統(tǒng)控制過程完成軟件設(shè)計部分,繪制出主流程圖;第六:進行模擬仿真,檢查系統(tǒng)是否能夠按照要求實現(xiàn)控制功能,整理論文。總體結(jié)構(gòu)框圖如下:圖2-1系統(tǒng)總體結(jié)構(gòu)框圖2.2功能需求分析2.2.1技術(shù)路線1.硬件部分需要單片機模塊、按鍵模塊、MCU電路模塊、人機交互模塊、RC-522無線射頻模塊;2.RC522射頻模塊主要用于讀卡,并通過SPI接口與MCU連接通信;3.人機交互模塊主要用于人與機器的可視化交互、藥品的選擇;4.步進電機模塊主要用于藥品的投放;5.設(shè)計結(jié)構(gòu)框圖.2.2.2預(yù)期結(jié)果一.上位機:1.管理員模式:(1)建立患者數(shù)據(jù)庫,從下位機獲取卡號并添加;(2)可對余額進行管理;2.醫(yī)生模式:(1)對患者進行開藥;3.藥柜模式:(1)顯示藥品剩余量;(2)驗證患者卡號,發(fā)送下位機取藥信息;二.下位機:1.管理員模式:(1)刷卡,顯示,卡號,若庫中未有該卡號刷卡可添加卡號(2)已在庫中的卡號,刷卡可進行余額操作2.醫(yī)生模式:(1)刷卡,識別卡號,發(fā)送上位機確定,若刷卡成功顯示余額,上位機端醫(yī)生可進行開藥;(2)刷卡不成功,顯示卡號異常;3.取藥模式(1)患者刷卡識別卡號,發(fā)送上上位機確認,若刷卡成功(2)接受上位機發(fā)來的取藥信息進行扣費自動取藥藥柜根據(jù)重量傳感器,自行判斷藥品剩余狀況,顯示井發(fā)送上位機藥柜通過步進電機完成取藥;2.3單片機型號選擇STM32單片機和STC89C51單片機都是常見的微控制器,具有廣泛的應(yīng)用領(lǐng)域。架構(gòu)和性能:STM32單片機基于ARMCortex-M系列處理器,具有先進的32位架構(gòu)和強大的計算能力。它通常運行在較高的時鐘頻率上,并且具備更大的存儲器和更多的外設(shè)資源。相比之下,STC89C51單片機采用8051系列核心,為8位架構(gòu),時鐘頻率較低,存儲器容量較小。功能和外設(shè):STM32單片機提供豐富的外設(shè)和功能模塊,如多個通用定時器、串行通信接口(如UART、SPI、I2C)、模數(shù)轉(zhuǎn)換器(ADC)等。它還支持高級功能,如DMA控制器、中斷控制器、以太網(wǎng)控制器等。相比之下,STC89C51單片機提供基本的外設(shè),如定時器、串口等,功能相對較少。開發(fā)工具和生態(tài)系統(tǒng):STM32單片機擁有完善的開發(fā)工具鏈,如KeilMDK、IAREmbeddedWorkbench和STM32CubeIDE等,以及豐富的官方支持和社區(qū)資源。STM32還有廣泛的生態(tài)系統(tǒng),包括各種擴展板、開發(fā)套件和第三方庫。相比之下,STC89C51單片機的開發(fā)工具和生態(tài)系統(tǒng)相對較小。學(xué)習(xí)和使用門檻:由于STM32單片機采用32位架構(gòu),學(xué)習(xí)和使用的門檻相對較高。它需要更多的學(xué)習(xí)和理解,特別是對于初學(xué)者來說。相比之下,STC89C51單片機采用8位架構(gòu),較為簡單,更容易上手。成本和應(yīng)用:STM32單片機通常價格較高,適用于要求高性能、復(fù)雜功能和較大存儲器容量的應(yīng)用,如工業(yè)自動化、智能控制等。STC89C51單片機價格相對較低,適用于一些簡單的嵌入式系統(tǒng)和低成本項目。綜上所述,STM32單片機和STC89C51單片機在架構(gòu)、性能、功能、外設(shè)、開發(fā)工具和生態(tài)系統(tǒng)等方面存在差異。選擇合適的單片機取決于具體的應(yīng)用需求和開發(fā)人員的經(jīng)驗水平。對于需要更高性能和更復(fù)雜功能的應(yīng)用,STM32單片機是一個更好的選擇。而對于簡單的嵌入式系統(tǒng)和低成本項目,STC89C51單片機則可以滿足需求。本設(shè)計我選擇STM32單片機。STM32單片機的最小系統(tǒng)如下圖。圖2-2STM32單片機最小系統(tǒng)原理圖系統(tǒng)的硬件部分設(shè)計3.1系統(tǒng)的總體設(shè)計該智能配藥系統(tǒng)是基于STM32進行設(shè)計的,主要包括上位機和下位機兩個模塊,通過藍牙通信與手機端進行交互。在上位機模塊中,管理員模式可以建立患者數(shù)據(jù)庫,從下位機獲取卡號并添加,同時對患者的余額進行管理;醫(yī)生模式可以對患者進行開藥操作。在藥柜模式中,可以顯示藥品的剩余量,驗證患者卡號并發(fā)送下位機取藥信息。在下位機模塊中,管理員模式可以通過刷卡識別卡號并添加到數(shù)據(jù)庫中,也可以進行余額操作;醫(yī)生模式可以通過刷卡識別卡號并發(fā)送給上位機進行開藥操作,如果卡號異常則會顯示錯誤信息。在取藥模式中,患者可以通過刷卡識別卡號并發(fā)送給上位機進行確認,成功后進行扣費并自動取藥;藥柜會根據(jù)重量傳感器判斷藥品的剩余狀況,并發(fā)送給上位機,同時通過步進電機完成取藥的過程。該系統(tǒng)設(shè)計完善、高效,能夠有效提高醫(yī)院配藥的精度和效率。總體原理圖如下。圖3-1系統(tǒng)總體原理圖
3.2系統(tǒng)的主要功能模塊設(shè)計3.2.1RC522射頻模塊設(shè)計射頻識別RFID(RadioFrequencyIdentification)是一種無線數(shù)據(jù)傳輸系統(tǒng),用于在標(biāo)簽和讀取器設(shè)備之間傳輸數(shù)據(jù),而RC522模塊則是用于讀取和寫入RFID卡和標(biāo)簽,該模塊的工作頻率為13.56MHz。我們常見的RC522大概如下所示,PCB部分是主機,然后白色?的和綠色的都是IC卡,IC卡可以存儲信息,通過靠近PC?B主機部分就可以被感應(yīng)到從而觸發(fā)主機做出相應(yīng)的動作,比如讀取IC卡信息,寫入數(shù)據(jù)等操作。主機模塊板載的芯片為MF_RC522,是應(yīng)用于13.56MHz非接觸式通信中高集成度讀寫卡系列芯片中的一員。是NXP公司?針對“三表”應(yīng)用推出的一款低電壓、低成本、體積小的非接觸式讀寫卡芯片,是智能儀表和便攜式手持設(shè)備研發(fā)的較好選擇。其原理圖如下。圖3-2RC522射頻模塊原理圖3.2.2壓力采集模塊設(shè)計重量采集模塊主要是通過壓力傳感器實現(xiàn)。壓力傳感器選用的是薄膜壓力傳感器。柔性壓力傳感器再柔韌輕薄材料上印刷附著力強、耐彎折、靈敏度高的柔性納米功能材料,使其實現(xiàn)對壓力的高靈敏度檢測。柔性薄膜壓力傳感器是一種電阻式傳感器,輸出電阻隨施加再傳感器表面壓力的增大而減小,通過特定的壓力-電阻關(guān)系,可測量出壓力大小。適用于柔性面的壓力測量場景,可廣泛應(yīng)用于智能家居、消費電子、汽車電子、醫(yī)療設(shè)備、工業(yè)控制、智能機器人等領(lǐng)域。原理圖如下。圖3-4壓力傳感器模塊原理圖3.2.3顯示屏模塊設(shè)計OLED,即有機發(fā)光二極管。OLED由于同時具備自發(fā)光,不需背光源、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認為是下一代的平面顯示器新興應(yīng)用技術(shù)。有機發(fā)光二極管(OLED)的特點和應(yīng)用,與液晶顯示器(LCD)相比,OLED不需要背光源,具有自發(fā)光、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于彎曲面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異特性,因此被認為是下一代的平面顯示器新興應(yīng)用技術(shù)。該段文字中還介紹了一款0.96寸OLED的特點,包括三種顏色可選,分辨率為128*64,多種接口方式可用等。中景園電子也開發(fā)了兩種接口的Demo板,分別為七針的SPI/IIC兼容模塊和四針的IIC模塊。其基本原理圖如下:圖3-5OLED顯示屏原理圖3.2.4藍牙模塊設(shè)計基于STM32的醫(yī)院智能配藥系統(tǒng)的藍牙模塊設(shè)計旨在實現(xiàn)藥物配送的智能化和遠程控制的功能,提高醫(yī)院藥房的工作效率和準(zhǔn)確性。首先,藍牙模塊將與STM32微控制器進行連接,以實現(xiàn)與系統(tǒng)的無線通信。藍牙模塊將具備數(shù)據(jù)傳輸和接收的能力,可以與醫(yī)院內(nèi)的其他設(shè)備或移動終端進行通信。通過與配藥系統(tǒng)的集成,醫(yī)護人員可以通過智能手機或平板電腦遠程控制配藥過程,提高工作效率并減少人為錯誤。同時,醫(yī)護人員也可以通過藍牙模塊將藥物信息傳輸?shù)较到y(tǒng),以更新庫存和藥品數(shù)據(jù)庫。最后,藍牙模塊還將支持數(shù)據(jù)記錄和追溯功能。它可以將配藥過程中的關(guān)鍵數(shù)據(jù)記錄下來,并傳輸?shù)竭h程服務(wù)器或云端存儲。這樣,醫(yī)院管理人員可以隨時查看和分析數(shù)據(jù),了解配藥過程的準(zhǔn)確性和效率,并進行必要的改進和優(yōu)化。綜上所述,基于STM32的醫(yī)院智能配藥系統(tǒng)的藍牙模塊設(shè)計將實現(xiàn)無線通信、藥物識別和掃描、實時監(jiān)測和報警以及數(shù)據(jù)記錄和追溯等功能。這將提升醫(yī)院藥房的工作效率和準(zhǔn)確性,改善患者的用藥安全性和質(zhì)量,并為醫(yī)院管理提供了更多的數(shù)據(jù)支持和決策依據(jù)。原理圖如下。圖3-6藍牙模塊原理圖
系統(tǒng)的軟件部分設(shè)計4.1軟件的主要流程智能配藥系統(tǒng)是基于STM32進行設(shè)計的,主要包括上位機和下位機兩個模塊,通過藍牙通信與手機端進行交互。在上位機模塊中,管理員模式可以建立患者數(shù)據(jù)庫,從下位機獲取卡號并添加,同時對患者的余額進行管理;醫(yī)生模式可以對患者進行開藥操作。在藥柜模式中,可以顯示藥品的剩余量,驗證患者卡號并發(fā)送下位機取藥信息。在下位機模塊中,管理員模式可以通過刷卡識別卡號并添加到數(shù)據(jù)庫中,也可以進行余額操作;醫(yī)生模式可以通過刷卡識別卡號并發(fā)送給上位機進行開藥操作,如果卡號異常則會顯示錯誤信息。在取藥模式中,患者可以通過刷卡識別卡號并發(fā)送給上位機進行確認,成功后進行扣費并自動取藥;藥柜會根據(jù)重量傳感器判斷藥品的剩余狀況,并發(fā)送給上位機,同時通過步進電機完成取藥的過程。總體流程圖如下。圖4-1系統(tǒng)總體流程圖
4.2RC522射頻模塊軟件設(shè)計當(dāng)系統(tǒng)初始化完成后,開始正常工作。RC522射頻模塊通過對病患卡片的掃描,可以對其需要的藥物進行匹配,例如歸入倉庫類型或分給哪位病人。流程圖如下。圖4-2RC522模塊流程圖
4.3壓力采集模塊軟件設(shè)計當(dāng)單片機初始化完成后,開始正常工作。壓力傳感器可以分析出藥物的重量,發(fā)送給單片機,單片機進行后續(xù)操作。流程圖如下。圖4-3重量模塊流程圖
4.4顯示屏模塊軟件設(shè)計當(dāng)單片機初始化完成后,系統(tǒng)開始正常工作。顯示屏?xí)盏絹碜詥纹瑱C的實時數(shù)據(jù)并顯示,以進行遠程監(jiān)控。工作流程圖如下。圖4-4顯示屏模塊工作流程圖
系統(tǒng)測試5.1系統(tǒng)實物圖醫(yī)院智能配藥系統(tǒng)是基于STM32單片機設(shè)計的一種高效、精確的藥物配送解決方案。該系統(tǒng)旨在提高醫(yī)院藥房的工作效率和準(zhǔn)確性。系統(tǒng)的實物包括以下幾個主要組件:控制主板:采用STM32單片機作為核心控制器,具有強大的計算和數(shù)據(jù)處理能力。它負責(zé)管理整個系統(tǒng)的各個模塊,包括傳感器的數(shù)據(jù)采集和處理、藥物庫存管理、運動控制等。RC522裝置:使用射頻識別技術(shù),該裝置能夠刷卡識別每種藥物的標(biāo)簽或二維碼,并將其與系統(tǒng)中的藥物數(shù)據(jù)庫進行比對。這樣可以確保正確的藥物被選取和配送給患者。用戶界面:系統(tǒng)還配備了直觀友好的用戶界面,可以在屏幕上顯示卡號、系統(tǒng)模式、卡內(nèi)余額等。醫(yī)務(wù)人員可以通過觸摸屏輸入配藥方案,查詢庫存情況,并監(jiān)控整個配藥過程。通過以上組件的協(xié)調(diào)工作,醫(yī)院智能配藥系統(tǒng)能夠提高藥物配送的準(zhǔn)確性和效率,減少人為錯誤,并為醫(yī)務(wù)人員節(jié)省時間和精力,從而更好地服務(wù)于患者。圖5-1系統(tǒng)成品實物圖:下位機和上位機5.2測試原理基于STM32的醫(yī)院智能配藥系統(tǒng)設(shè)計的實物測試過程包括以下幾個主要步驟:傳感器測試:首先,對系統(tǒng)中的傳感器進行測試。這些傳感器包括藥物儲存單元中的藥物存量傳感器和藥物識別裝置中的傳感器。確保傳感器能夠準(zhǔn)確地檢測藥物的存量和識別藥物標(biāo)簽或二維碼。控制邏輯測試:接下來,對控制主板的邏輯進行測試。確保主板能夠正確地接收和處理傳感器的數(shù)據(jù),并根據(jù)藥物需求生成準(zhǔn)確的配藥指令。同時,驗證系統(tǒng)的錯誤處理能力,例如當(dāng)藥物庫存不足或出現(xiàn)傳感器故障時,能夠及時發(fā)出警報或采取相應(yīng)的措施。用戶界面測試:對用戶界面進行測試,確保界面顯示準(zhǔn)確的患者信息和藥物配送狀態(tài)。驗證觸摸屏的響應(yīng)速度和易用性,以及界面顯示的準(zhǔn)確性和清晰度。整體系統(tǒng)測試:最后,進行整體系統(tǒng)測試。模擬實際的配藥場景,測試系統(tǒng)在高負荷情況下的性能表現(xiàn)。檢查系統(tǒng)的穩(wěn)定性、可靠性和安全性,確保系統(tǒng)能夠持續(xù)運行并應(yīng)對各種異常情況。通過以上測試步驟,可以評估系統(tǒng)的功能性能和可靠性,并進行必要的調(diào)整和改進,以確保醫(yī)院智能配藥系統(tǒng)能夠滿足實際使用需求,并為醫(yī)務(wù)人員提供可靠的藥物配送服務(wù)。圖5-2開機為管理員模式,按一下下面按鍵調(diào)整為醫(yī)生模式,按住兩個調(diào)整為患者模式圖5-3刷卡后顯示屏顯示卡號,上位機顯示數(shù)據(jù)圖5-4上位機可以對信息錄入和修改,選擇取藥后下位機舵機轉(zhuǎn)動模擬取藥
總結(jié)與展望6.1總結(jié)在整個設(shè)計過程中,硬件方面主要設(shè)計了STM32單片機的最小系統(tǒng)、繼電器接口電路、顯示屏幕及顯示、傳感器電路。軟件方面借助各個渠道的資料,主要設(shè)計傳感器執(zhí)行程序和顯示程序。系統(tǒng)的調(diào)試主要是通過一塊STM32開發(fā)板,再借助于Keil以及自己搭建的電路實現(xiàn)的。分部調(diào)試時偶爾會出現(xiàn)一些問題但解決方案都有跡可循。此管理系統(tǒng)能夠?qū)崿F(xiàn)檢測后不需要人為干預(yù),自動進行操作。節(jié)省了大量人力資源,方便人們生活。6.2展望在設(shè)計電路初期,由于沒有設(shè)計經(jīng)驗,覺得無從下手,雖有很多設(shè)計思想,卻不知道應(yīng)該選哪個,經(jīng)過導(dǎo)師的指導(dǎo),我的設(shè)計漸漸有了頭緒,通過查閱資料,逐漸確立系統(tǒng)方案。論文中應(yīng)該涵蓋了藥物識別和分揀技術(shù)、自動化配藥過程的控制算法、遠程監(jiān)控和報警系統(tǒng)等方面的內(nèi)容,我應(yīng)該在以后的研究過程中增添這幾項功能并實現(xiàn)這幾個功能,提高藥物配送的準(zhǔn)確性和效率,減少人為錯誤,并為醫(yī)務(wù)人員節(jié)省時間和精力,從而更好地服務(wù)于患者。在這個的過程中,每一步都是自己親自做過的,遇到的問題也非常多,在遇到問題時,思索問題,然后解決問題,收獲是最多的。以往沒有注意到的問題,都在這一次的畢業(yè)設(shè)計中體現(xiàn)出來,這培養(yǎng)了我的耐心和專心。指導(dǎo)老師給予的指導(dǎo)和同學(xué)的幫助讓我受益匪淺,無論是理論工作上的計算,還是實際的操作,老師都給我們做了詳細的分析,讓我在設(shè)計各個量時更能理論結(jié)合實際,更合理的進行安排設(shè)計。但此次設(shè)計的智能配藥系統(tǒng)也存在不足的地方,藥物識別的準(zhǔn)確性、系統(tǒng)的穩(wěn)定性和安全性,且藍牙模塊設(shè)計還不足以實現(xiàn)藥物識別和掃描、實時監(jiān)測和報警以及數(shù)據(jù)記錄和追溯等功能。需要進一步的研究和改進。
參考文獻[1]惠為君.簡述基于單片機ESP8266的智能配網(wǎng)[J].科學(xué)與信息化.2021,(15).[2]趙曉玉,李宇,朱新玉,等.一種智能送藥小車的設(shè)計研究[J].科技風(fēng).2020,(19).DOI:10.19392/ki.1671-7341.202019012.[3]王偉宏,陳家明,蘇文青,等.基于RFID智能分揀系統(tǒng)設(shè)計及其應(yīng)用研究[J].機電工程技術(shù).2018,(3).DOI:10.3969/j.issn.1009-9492.2018.03.023.[4],李華杰,孫建明,等.快遞物流包裝件分揀裝置設(shè)計[J].包裝與食品機械.2018,(5).DOI:10.3969/j.issn.1005-1295.2018.05.007.[5]栗世堯,譚宇良,吳何畏.智能快遞分揀系統(tǒng)設(shè)計[J].機械工程師.2018,(3).[6]李紅.探析完善藥品管理與發(fā)放制度對門診藥房工作效率的影響[J].世界最新醫(yī)學(xué)信息文摘,2019,19(53):218,223.[7]汪步升.醫(yī)院中醫(yī)藥信息化建設(shè)[J].電腦編程技巧與維護,2019,407(5):73-74.[8]閻大亮,王永亮,陸登城,等.基于互聯(lián)網(wǎng)+自助取藥系統(tǒng)設(shè)計與研究[J].科技創(chuàng)新與應(yīng)用,2019(14):44-45.[9]胡敏達.藥房自助終端系統(tǒng)設(shè)計與實現(xiàn)[D].南京:東南大學(xué),2018.[10]張海藩.軟件工程[M].北京:清華大學(xué)出版社,2010.[11]趙浩宇,周琳,吳昊.智能輸液監(jiān)測系統(tǒng)設(shè)計與應(yīng)用[J].醫(yī)學(xué)信息學(xué)雜志,2018,39(09):32-36.[12]李剛.基于單片機的液體點滴速度監(jiān)測與控制設(shè)計[J].科技風(fēng),2016(05):8-9.DOI:10.19392/ki.1671-7341.2016.05.005.[13]黎愷敏,吳勇健.基于STM32的智能輸液監(jiān)控系統(tǒng)[J].山西電子技術(shù),2022(03):15-17.[14]王健,王仲宇,朱文凱,孫潔茹,潘瑞娟,陳曉寧.基于可穿戴設(shè)備的無線組網(wǎng)輸液監(jiān)控系統(tǒng)[J].傳感器與微系統(tǒng),2022,41(06):106-108+113.DOI:10.13873/J.[15]查文利.基于STM32的醫(yī)用輸液加溫智能監(jiān)控系統(tǒng)設(shè)計[D].江蘇大學(xué),2021.DOI:10.27170/ki.gjsuu.2021.000184[16]CeratiG,ElmerP,LantzS,etal.TraditionalTrackingwithKalmanFilteronParallelArchitecturesJournalofPhysics:ConferenceSeries,2018.[17]PengweiHua,XiaowuLiu,JiguoYu,NaDang,XiaoweiZhang.Energy-efficientadaptiveslice-basedsecuredataaggregationschemeinWSN[J].ProcediaComputerScience,2018,129.[18]KORTUMK,MOLLERM,HIRNEIBC,etal.Smarteyedata:devdtopahealtO0%ofoundationformedicalrescarchusingSmartDataapplications[J].DerOphthalmologeZeitschriftDerDeutschenOphthalmologischenGescllschaft,2019.[19]RaafiB.DesignandDevelopmentofFuzzy-PIDControllerforFour-wheeledMobileRoboticStability:AC'aseStudyontheUphillRoad[J].PTEKJournalofEngineering,2020,6(2):6.[20]ZhouY,DongW,FYuan,etal.ResearchofOnlineWaterQualityMonitoringSystemBasedonZigbeeNetwork[J].AdvancesinInformatioSciences&ServiceSciences,2019,4(5):255-261.
注釋電路圖源代碼#include"sys.h"#include"delay.h"#include"tim.h"#include"port.h"#include"app.h"#include"oled.h"#include"usart3.h"#include"HX711.h"#include"timer.h"#include"rc522_config.h"#include"rc522_function.h"#include"usart.h"intmain(void){ delay_init(); //延時函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 system_Time_Init(9,7199); sys_gpio_init(); key_init(10,500,1100,3000); OLED_Init(); //初始化OLED OLED_Clear();OLED_ShowString(0,0,"nihao",12); USART3_Config(9600);//lanyaUSART1_Config(115200); Init_HX711pin(); TIM3_PWM_Init(); RC522_Init(); //初始化RC522模塊所需外設(shè)的配置 PcdReset(); //初始化相關(guān)設(shè)置:RC522相關(guān)設(shè)置: M500PcdConfigISOType('A');//初始化相關(guān)設(shè)置:RC522相關(guān)設(shè)置:設(shè)置工作方式while(1) { app(); } }#include"rc522_fun.h"#include"rc522.h"#include"delay.h"#include"app.h"#definemacRC522_DELAY()delay_us(200)/**函數(shù)名:SPI_RC522_SendByte*描述:向RC522發(fā)送1Byte數(shù)據(jù)*輸入:byte,要發(fā)送的數(shù)據(jù)*返回:RC522返回的數(shù)據(jù)*調(diào)用:內(nèi)部調(diào)用*/voidSPI_RC522_SendByte(u8byte){u8counter; for(counter=0;counter<8;counter++){ if(byte&0x80) macRC522_MOSI_1(); else macRC522_MOSI_0();// delay_us(3); macRC522_DELAY(); macRC522_SCK_0();// delay_us(1);// delay_us(3); macRC522_DELAY(); macRC522_SCK_1();// delay_us(3); macRC522_DELAY(); byte<<=1; } }/**函數(shù)名:SPI_RC522_ReadByte*描述:從RC522發(fā)送1Byte數(shù)據(jù)*輸入:無*返回:RC522返回的數(shù)據(jù)*調(diào)用:內(nèi)部調(diào)用*/u8SPI_RC522_ReadByte(void){ u8counter; u8SPI_Data; for(counter=0;counter<8;counter++) { SPI_Data<<=1; macRC522_SCK_0();// delay_us(3); macRC522_DELAY(); if(macRC522_MISO_GET()==1) SPI_Data|=0x01;// delay_us(2);// delay_us(3); macRC522_DELAY(); macRC522_SCK_1(); // delay_us(3); macRC522_DELAY(); } returnSPI_Data; }/**函數(shù)名:ReadRawRC*描述:讀RC522寄存器*輸入:ucAddress,寄存器地址*返回:寄存器的當(dāng)前值*調(diào)用:內(nèi)部調(diào)用*/u8ReadRawRC(u8ucAddress){ u8ucAddr,ucReturn; ucAddr=((ucAddress<<1)&0x7E)|0x80; macRC522_CS_Enable(); SPI_RC522_SendByte(ucAddr); ucReturn=SPI_RC522_ReadByte(); macRC522_CS_Disable(); returnucReturn; }/**函數(shù)名:WriteRawRC*描述:寫RC522寄存器*輸入:ucAddress,寄存器地址*ucValue,寫入寄存器的值*返回:無*調(diào)用:內(nèi)部調(diào)用*/voidWriteRawRC(u8ucAddress,u8ucValue){ u8ucAddr; ucAddr=(ucAddress<<1)&0x7E; macRC522_CS_Enable(); SPI_RC522_SendByte(ucAddr); SPI_RC522_SendByte(ucValue); macRC522_CS_Disable(); }/**函數(shù)名:SetBitMask*描述:對RC522寄存器置位*輸入:ucReg,寄存器地址*ucMask,置位值*返回:無*調(diào)用:內(nèi)部調(diào)用*/voidSetBitMask(u8ucReg,u8ucMask){u8ucTemp; ucTemp=ReadRawRC(ucReg); WriteRawRC(ucReg,ucTemp|ucMask);//setbitmask }/**函數(shù)名:ClearBitMask*描述:對RC522寄存器清位*輸入:ucReg,寄存器地址*ucMask,清位值*返回:無*調(diào)用:內(nèi)部調(diào)用*/voidClearBitMask(u8ucReg,u8ucMask){u8ucTemp; ucTemp=ReadRawRC(ucReg); WriteRawRC(ucReg,ucTemp&(~ucMask));//clearbitmask }/**函數(shù)名:PcdAntennaOn*描述:開啟天線*輸入:無*返回:無*調(diào)用:內(nèi)部調(diào)用*/voidPcdAntennaOn(void){u8uc; uc=ReadRawRC(TxControlReg); if(!(uc&0x03)) SetBitMask(TxControlReg,0x03); }/**函數(shù)名:PcdAntennaOff*描述:開啟天線*輸入:無*返回:無*調(diào)用:內(nèi)部調(diào)用*/voidPcdAntennaOff(void){ClearBitMask(TxControlReg,0x03); }/**函數(shù)名:PcdRese*描述:復(fù)位RC522*輸入:無*返回:無*調(diào)用:外部調(diào)用*/voidPcdReset(void){ macRC522_Reset_Disable(); delay_us(1); macRC522_Reset_Enable(); delay_us(1); macRC522_Reset_Disable(); delay_us(1); WriteRawRC(CommandReg,0x0f); while(ReadRawRC(CommandReg)&0x10); delay_us(1); WriteRawRC(ModeReg,0x3D);//定義發(fā)送和接收常用模式和Mifare卡通訊,CRC初始值0x6363 WriteRawRC(TReloadRegL,30);//16位定時器低位 WriteRawRC(TReloadRegH,0); //16位定時器高位 WriteRawRC(TModeReg,0x8D); //定義內(nèi)部定時器的設(shè)置 WriteRawRC(TPrescalerReg,0x3E); //設(shè)置定時器分頻系數(shù) WriteRawRC(TxAutoReg,0x40); //調(diào)制發(fā)送信號為100%ASK }/**函數(shù)名:M500PcdConfigISOType*描述:設(shè)置RC522的工作方式*輸入:ucType,工作方式*返回:無*調(diào)用:外部調(diào)用*/voidM500PcdConfigISOType(u8ucType){ if(ucType=='A')//ISO14443_A{ ClearBitMask(Status2Reg,0x08); WriteRawRC(ModeReg,0x3D);//3F WriteRawRC(RxSelReg,0x86);//84 WriteRawRC(RFCfgReg,0x7F);//4F WriteRawRC(TReloadRegL,30);//tmoLength);//TReloadVal='h6a=tmoLength(dec) WriteRawRC(TReloadRegH,0); WriteRawRC(TModeReg,0x8D); WriteRawRC(TPrescalerReg,0x3E); delay_us(2); PcdAntennaOn();//開天線 } }/**函數(shù)名:PcdComMF522*描述:通過RC522和ISO14443卡通訊*輸入:ucCommand,RC522命令字*pInData,通過RC522發(fā)送到卡片的數(shù)據(jù)*ucInLenByte,發(fā)送數(shù)據(jù)的字節(jié)長度*pOutData,接收到的卡片返回數(shù)據(jù)*pOutLenBit,返回數(shù)據(jù)的位長度*返回:狀態(tài)值*=MI_OK,成功*調(diào)用:內(nèi)部調(diào)用*/charPcdComMF522(u8ucCommand,u8*pInData,u8ucInLenByte,u8*pOutData,u32*pOutLenBit) {charcStatus=MI_ERR;u8ucIrqEn=0x00;u8ucWaitFor=0x00;u8ucLastBits;u8ucN;u32ul; switch(ucCommand){casePCD_AUTHENT: //Mifare認證ucIrqEn=0x12; //允許錯誤中斷請求ErrIEn允許空閑中斷IdleIEnucWaitFor=0x10; //認證尋卡等待時候查詢空閑中斷標(biāo)志位break; casePCD_TRANSCEIVE: //接收發(fā)送發(fā)送接收ucIrqEn=0x77; //允許TxIEnRxIEnIdleIEnLoAlertIEnErrIEnTimerIEnucWaitFor=0x30; //尋卡等待時候查詢接收中斷標(biāo)志位與空閑中斷標(biāo)志位break; default:break; }WriteRawRC(ComIEnReg,ucIrqEn|0x80); //IRqInv置位管腳IRQ與Status1Reg的IRq位的值相反ClearBitMask(ComIrqReg,0x80); //Set1該位清零時,CommIRqReg的屏蔽位清零WriteRawRC(CommandReg,PCD_IDLE); //寫空閑命令SetBitMask(FIFOLevelReg,0x80); //置位FlushBuffer清除內(nèi)部FIFO的讀和寫指針以及ErrReg的BufferOvfl標(biāo)志位被清除for(ul=0;ul<ucInLenByte;ul++) WriteRawRC(FIFODataReg,pInData[ul]); //寫數(shù)據(jù)進FIFOdata WriteRawRC(CommandReg,ucCommand); //寫命令if(ucCommand==PCD_TRANSCEIVE) SetBitMask(BitFramingReg,0x80); //StartSend置位啟動數(shù)據(jù)發(fā)送該位與收發(fā)命令使用時才有效ul=1000;//根據(jù)時鐘頻率調(diào)整,操作M1卡最大等待時間25ms do //認證與尋卡等待時間 {ucN=ReadRawRC(ComIrqReg); //查詢事件中斷ul--;}while((ul!=0)&&(!(ucN&0x01))&&(!(ucN&ucWaitFor))); //退出條件i=0,定時器中斷,與寫空閑命令 ClearBitMask(BitFramingReg,0x80); //清理允許StartSend位 if(ul!=0){ if(!(ReadRawRC(ErrorReg)&0x1B)) //讀錯誤標(biāo)志寄存器BufferOfICollErrParityErrProtocolErr { cStatus=MI_OK; if(ucN&ucIrqEn&0x01) //是否發(fā)生定時器中斷 cStatus=MI_NOTAGERR; if(ucCommand==PCD_TRANSCEIVE) { ucN=ReadRawRC(FIFOLevelReg); //讀FIFO中保存的字節(jié)數(shù) ucLastBits=ReadRawRC(ControlReg)&0x07; //最后接收到得字節(jié)的有效位數(shù) if(ucLastBits) *pOutLenBit=(ucN-1)*8+ucLastBits; //N個字節(jié)數(shù)減去1(最后一個字節(jié))+最后一位的位數(shù)讀取到的數(shù)據(jù)總位數(shù) else *pOutLenBit=ucN*8; //最后接收到的字節(jié)整個字節(jié)有效 if(ucN==0) ucN=1; if(ucN>MAXRLEN) ucN=MAXRLEN; for(ul=0;ul<ucN;ul++) pOutData[ul]=ReadRawRC(FIFODataReg); } } else cStatus=MI_ERR; }SetBitMask(ControlReg,0x80);//stoptimernowWriteRawRC(CommandReg,PCD_IDLE); returncStatus; }/**函數(shù)名:PcdRequest*描述:尋卡*輸入:ucReq_code,尋卡方式*=0x52,尋感應(yīng)區(qū)內(nèi)所有符合14443A標(biāo)準(zhǔn)的卡*=0x26,尋未進入休眠狀態(tài)的卡*pTagType,卡片類型代碼*=0x4400,Mifare_UltraLight*=0x0400,Mifare_One(S50)*=0x0200,Mifare_One(S70)*=0x0800,Mifare_Pro(X))*=0x4403,Mifare_DESFire*返回:狀態(tài)值*=MI_OK,成功*調(diào)用:外部調(diào)用*/charPcdRequest(u8ucReq_code,u8*pTagType){charcStatus; u8ucComMF522Buf[MAXRLEN];u32ulLen; ClearBitMask(Status2Reg,0x08); //清理指示MIFARECyptol單元接通以及所有卡的數(shù)據(jù)通信被加密的情況WriteRawRC(BitFramingReg,0x07); // 發(fā)送的最后一個字節(jié)的七位SetBitMask(TxControlReg,0x03); //TX1,TX2管腳的輸出信號傳遞經(jīng)發(fā)送調(diào)制的13.56的能量載波信號ucComMF522Buf[0]=ucReq_code; //存入卡片命令字cStatus=PcdComMF522(PCD_TRANSCEIVE, ucComMF522Buf,1,ucComMF522Buf,&ulLen); //尋卡if((cStatus==MI_OK)&&(ulLen==0x10)) //尋卡成功返回卡類型{*pTagType=ucComMF522Buf[0];*(pTagType+1)=ucComMF522Buf[1];} elsecStatus=MI_ERR;returncStatus; }/**函數(shù)名:PcdAnticoll*描述:防沖撞*輸入:pSnr,卡片序列號,4字節(jié)*返回:狀態(tài)值*=MI_OK,成功*調(diào)用:外部調(diào)用*/charPcdAnticoll(u8*pSnr){charcStatus;u8uc,ucSnr_check=0;u8ucComMF522Buf[MAXRLEN]; u32ulLen;ClearBitMask(Status2Reg,0x08); //清MFCryptolOn位只有成功執(zhí)行MFAuthent命令后,該位才能置位WriteRawRC(BitFramingReg,0x00); //清理寄存器停止收發(fā)ClearBitMask(CollReg,0x80); //清ValuesAfterColl所有接收的位在沖突后被清除ucComMF522Buf[0]=0x93; //卡片防沖突命令ucComMF522Buf[1]=0x20;cStatus=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&ulLen);//與卡片通信 if(cStatus==MI_OK) //通信成功{ for(uc=0;uc<4;uc++) {*(pSnr+uc)=ucComMF522Buf[uc]; //讀出UIDucSnr_check^=ucComMF522Buf[uc];} if(ucSnr_check!=ucComMF522Buf[uc]) cStatus=MI_ERR; }SetBitMask(CollReg,0x80); returncStatus; }/**函數(shù)名:CalulateCRC*描述:用RC522計算CRC16*輸入:pIndata,計算CRC16的數(shù)組*ucLen,計算CRC16的數(shù)組字節(jié)長度*pOutData,存放計算結(jié)果存放的首地址*返回:無*調(diào)用:內(nèi)部調(diào)用*/voidCalulateCRC(u8*pIndata,u8ucLen,u8*pOutData){u8uc,ucN; ClearBitMask(DivIrqReg,0x04); WriteRawRC(CommandReg,PCD_IDLE); SetBitMask(FIFOLevelReg,0x80); for(uc=0;uc<ucLen;uc++) WriteRawRC(FIFODataReg,*(pIndata+uc));WriteRawRC(CommandReg,PCD_CALCCRC); uc=0xFF; do{ucN=ReadRawRC(DivIrqReg);uc--;}while((uc!=0)&&!(ucN&0x04)); pOutData[0]=ReadRawRC(CRCResultRegL);pOutData[1]=ReadRawRC(CRCResultRegM); }/**函數(shù)名:PcdSelect*描述:選定卡片*輸入:pSnr,卡片序列號,4字節(jié)*返回:狀態(tài)值*=MI_OK,成功*調(diào)用:外部調(diào)用*/charPcdSelect(u8*pSnr){charucN;u8uc; u8ucComMF522Buf[MAXRLEN];u32ulLen;ucComMF522Buf[0]=PICC_ANTICOLL1;ucComMF522Buf[1]=0x70;ucComMF522Buf[6]=0; for(uc=0;uc<4;uc++){ ucComMF522Buf[uc+2]=*(pSnr+uc); ucComMF522Buf[6]^=*(pSnr+uc);} CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]);ClearBitMask(Status2Reg,0x08);ucN=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&ulLen);if((ucN==MI_OK)&&(ulLen==0x18))ucN=MI_OK;elseucN=MI_ERR; returnucN; }/**函數(shù)名:PcdAuthState*描述:驗證卡片密碼*輸入:ucAuth_mode,密碼驗證模式*=0x60,驗證A密鑰*=0x61,驗證B密鑰*u8ucAddr,塊地址*pKey,密碼*pSnr,卡片序列號,4字節(jié)*返回:狀態(tài)值*=MI_OK,成功*調(diào)用:外部調(diào)用*/charPcdAuthState(u8ucAuth_mode,u8ucAddr,u8*pKey,u8*pSnr){charcStatus; u8uc,ucComMF522Buf[MAXRLEN];u32ulLen; ucComMF522Buf[0]=ucAuth_mode;ucComMF522Buf[1]=ucAddr; for(uc=0;uc<6;uc++) ucComMF522Buf[uc+2]=*(pKey+uc); for(uc=0;uc<6;uc++) ucComMF522Buf[uc+8]=*(pSnr+uc);cStatus=PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&ulLen); if((cStatus!=MI_OK)||(!(ReadRawRC(Status2Reg)&0x08)))cStatus=MI_ERR; returncStatus; }/**函數(shù)名:PcdWrite*描述:寫數(shù)據(jù)到M1卡一塊*輸入:u8ucAddr,塊地址*pData,寫入的數(shù)據(jù),16字節(jié)*返回:狀態(tài)值*=MI_OK,成功*調(diào)用:外部調(diào)用*/charPcdWrite(u8ucAddr,u8*pData){charcStatus; u8uc,ucComMF522Buf[MAXRLEN];u32ulLen;ucComMF522Buf[0]=PICC_WRITE;ucComMF522Buf[1]=ucAddr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);cStatus=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&ulLen);if((cStatus!=MI_OK)||(ulLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A))cStatus=MI_ERR;if(cStatus==MI_OK){ //memcpy(ucComMF522Buf,pData,16);for(uc=0;uc<16;uc++) ucComMF522Buf[uc]=*(pData+uc);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)數(shù)學(xué)新人教版一年級下冊20以內(nèi)口算練習(xí)題大全
- 遼寧工程技術(shù)大學(xué)《建筑工程概預(yù)算課程設(shè)計A》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川省瀘州市納溪區(qū)2024年中考數(shù)學(xué)適應(yīng)性考試試題含答案
- 九州職業(yè)技術(shù)學(xué)院《數(shù)字化運營管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《兒童文學(xué)與兒童劇創(chuàng)編》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉安幼兒師范高等??茖W(xué)?!缎竽廖⑸飳W(xué)實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南理工學(xué)院《導(dǎo)游實務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖北生物科技職業(yè)學(xué)院《歷史學(xué)綜合素質(zhì)指導(dǎo)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】《彈力》(教學(xué)設(shè)計)-2024-2025學(xué)年人教版(2024)初中物理八年級下冊
- 高考物理模擬測試題(含答案)
- 《陸上風(fēng)電場工程概算定額》NBT 31010-2019
- 原油脫硫技術(shù)
- 部編版初中語文七至九年級語文教材各冊人文主題與語文要素匯總一覽表合集單元目標(biāo)能力點
- 工程項目收入情況統(tǒng)計表
- GB/T 29490-2013企業(yè)知識產(chǎn)權(quán)管理規(guī)范
- GB/T 14436-1993工業(yè)產(chǎn)品保證文件總則
- 湖南省鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機構(gòu)名單目錄
- 《中外資產(chǎn)評估準(zhǔn)則》課件第6章 英國評估準(zhǔn)則
- FZ∕T 63006-2019 松緊帶
- 罐區(qū)自動化系統(tǒng)總體方案(31頁)ppt課件
- 工程建設(shè)項目內(nèi)外關(guān)系協(xié)調(diào)措施
評論
0/150
提交評論