畢業(yè)設(shè)計(jì)論文-無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)_第1頁(yè)
畢業(yè)設(shè)計(jì)論文-無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)_第2頁(yè)
畢業(yè)設(shè)計(jì)論文-無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)_第3頁(yè)
畢業(yè)設(shè)計(jì)論文-無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)_第4頁(yè)
畢業(yè)設(shè)計(jì)論文-無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

..>河南科技學(xué)院2014屆本科畢業(yè)論文〔設(shè)計(jì)〕論文〔設(shè)計(jì)〕題目:無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)學(xué)生姓名:所在學(xué)院:機(jī)電學(xué)院所學(xué)專(zhuān)業(yè):電氣工程及其自動(dòng)化導(dǎo)師姓名:完成時(shí)間:2014年5月18日無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)摘要靜脈輸液是常用的醫(yī)療手段之一,傳統(tǒng)輸液過(guò)程中存在著輸液容易異常,需要人工監(jiān)護(hù)等弊端。因此,本文設(shè)計(jì)了無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)以解決此問(wèn)題。系統(tǒng)以AT89S53單片機(jī)為下位機(jī)核心,上位機(jī)和CAN總線組成有線監(jiān)控系統(tǒng),實(shí)現(xiàn)主機(jī)對(duì)從機(jī)的控制。從機(jī)通過(guò)外圍電路檢測(cè)儲(chǔ)液瓶中液面高度和液體點(diǎn)滴速度,并通過(guò)控制步進(jìn)電機(jī)實(shí)現(xiàn)對(duì)輸液速度的控制。當(dāng)輸液完畢或輸液速度發(fā)生異常時(shí),發(fā)光二極管和蜂鳴器進(jìn)展報(bào)警,并將報(bào)警信號(hào)通過(guò)串行口傳送至主站。關(guān)鍵詞:無(wú)人監(jiān)守,自動(dòng)監(jiān)控,單片機(jī),CAN總線DESIGNOFAUTOMATICMONITORINGSYSTEMFORUNATTENDEDDRIPSAbstractIntravenousinfusionisoneofthecommonlymeansusedinmedical,thereissomeabnormalitiesintraditioninfusionandrequiremanualmonitoringandotherdefects.Therefore,wedesignedtheunmannedautomaticdripguardmonitoringsystemtosolvethisproblem.ThissystembasedonAT89S53MCUasthecoreofthene*tcrew,consistingofPCandCANbuscablemonitoringsystem,fromthecontrolofthehostmachine.Fromthemachinethroughthee*ternalcircuittodetectliquidlevelreservoirbottleandliquiddrop,andachievecontroloftheinfusionratebycontrollingthesteppermotor.Whentheendoftheinfusionorinfusionrateabnormal,LEDsandbuzzeralarm,andthealarmsignalissentviatheserialporttothemainstation.KeyWords:Unmanned,AutomaticMonitor,MCU,CANbus..>目錄1緒論11.1研究背景及意義②通信接口電路。3系統(tǒng)從站硬件設(shè)計(jì)3.1從站硬件系統(tǒng)框圖根據(jù)從站系統(tǒng)所要實(shí)現(xiàn)的功能,為從站系統(tǒng)設(shè)計(jì)出硬件系統(tǒng)框圖[4],如圖2所示:AT89S53AT89S53鍵盤(pán)控制電路單元點(diǎn)滴信號(hào)檢測(cè)單元液體檢測(cè)單元單元通信電路單元報(bào)警電路單元電源電路單元點(diǎn)滴信號(hào)整形單元圖2從站硬件系統(tǒng)框圖3.2從站系統(tǒng)各單元設(shè)計(jì)有上面的框圖可以知道,從站系統(tǒng)所包含的子模塊較多,因此下面進(jìn)展逐一介紹。3.2.1點(diǎn)滴信號(hào)檢測(cè)單元此單元模塊是通過(guò)固定在輸液瓶外側(cè)的紅外傳感器來(lái)檢測(cè)是否有點(diǎn)滴滴下,電路圖如圖3所示。圖3點(diǎn)滴信號(hào)檢測(cè)電路紅外傳感器是有發(fā)射管和受光管二者構(gòu)成,其主要功能是實(shí)現(xiàn)光和電之間的轉(zhuǎn)換。紅外系統(tǒng)具有尺寸小、重量輕、易于安裝等優(yōu)點(diǎn),且紅外光波長(zhǎng)長(zhǎng)與可見(jiàn)光,受后者的影響較小,因此選用紅外傳感器來(lái)檢測(cè)液體點(diǎn)滴滴速。增強(qiáng)信噪比以減少環(huán)境光源的干擾,并采用脈沖調(diào)制的方式。發(fā)射、承受的簡(jiǎn)化原理電路如圖4所示。圖4脈沖產(chǎn)生電路74HC14是具有施密特功能的六反相器,圖5是74HC14所構(gòu)成的多諧振蕩電路。施密特觸發(fā)器具有上限閾值電壓V2、下限閾值V1的特性,且受芯片電源VDD的限制。多諧振蕩器電路產(chǎn)生信號(hào)的周期頻率滿足f=1/{RCln[V2〔VDD-V1〕/V1〔VDD-V2〕]},令ln[V2〔VDD-V1〕/V1〔VDD-V2〕]為k,則f=1/kRC,即T=kRC。對(duì)于74HC14而言,當(dāng)VDD=5V時(shí),下限閩值電壓V1=1.4V,上限閩值電壓V2=3.6V,所以有k=1.89??紤]到脈寬可調(diào)的狀況進(jìn)而可以得出1.89〔R1//R2+R2〕C=T,T表示方形脈沖的一個(gè)周期大小,〔R1//R2〕:〔R1//R2+R2〕=1:5。圖5多諧振蕩電路3.2.2點(diǎn)滴信號(hào)整形單元在實(shí)際操作中,當(dāng)點(diǎn)滴落下時(shí),接收到的信號(hào)會(huì)產(chǎn)生相距很近的雙脈沖,這極大的干擾了計(jì)數(shù)。為了消除這種干擾,減小虛假信息的影響,提高采樣的可靠性,用軟件濾波的方式濾去兩個(gè)脈沖中的一個(gè),這樣就確保了計(jì)數(shù)的準(zhǔn)確性。圖6是信號(hào)整形原理電路圖,同過(guò)原理圖,可以對(duì)整形有簡(jiǎn)單的了解。圖6點(diǎn)滴信號(hào)整形電路3.2.3液位檢測(cè)單元按照醫(yī)用衛(wèi)生標(biāo)準(zhǔn),吊瓶中應(yīng)盡可能防止異物進(jìn)入,所以在紅外有損探測(cè)和無(wú)損探測(cè)中我們選擇后者。液位檢測(cè)電路是利用安裝在輸液瓶頸部的紅外對(duì)射管對(duì)瓶?jī)?nèi)無(wú)液空間與有液空間光的折射差異來(lái)判斷輸液是否完畢。光電轉(zhuǎn)換原理類(lèi)似以滴速檢測(cè),但紅外接收管輸出的電信號(hào)是電平信號(hào),而不是脈沖信號(hào)。電平信號(hào)經(jīng)放大后輸入到比較器與門(mén)限電路比較,輸出后送至單片機(jī)外部中斷接口INT1。因考慮到儲(chǔ)液瓶壁較厚,可利用紅外無(wú)損探測(cè)方式,增大紅外發(fā)射功率來(lái)加強(qiáng)接收信號(hào)以保證對(duì)液位進(jìn)展準(zhǔn)確檢測(cè),儲(chǔ)液瓶有液空間和無(wú)液空間信號(hào)差異電壓比較差可以到達(dá)40mV左右,說(shuō)明該電路在液位下降到紅外對(duì)射管以下時(shí)系統(tǒng)即能發(fā)出警越限報(bào)。該電路接收到的信號(hào)只需對(duì)其放大不需濾波處理,所以本電路構(gòu)造單間,安裝簡(jiǎn)易。其系統(tǒng)框圖及電路圖如以下列圖7和圖8所示。放大放大比較紅外發(fā)射門(mén)限信號(hào)紅外接收輸液瓶至單片機(jī)圖7液位檢測(cè)框圖圖8液位檢測(cè)電路3.2.4鍵盤(pán)控制電路本設(shè)計(jì)中所采用的鍵盤(pán)為非編碼機(jī)械觸點(diǎn)式按鍵開(kāi)關(guān),其主要功能是把機(jī)械上的通斷轉(zhuǎn)換成為電氣上的邏輯關(guān)系。觸點(diǎn)式開(kāi)關(guān)按鍵在最常見(jiàn),且壽命長(zhǎng)。非編碼鍵盤(pán)只簡(jiǎn)單地提供行和列的矩陣,其它工作均由軟件完成,因此既經(jīng)濟(jì)又實(shí)用。在機(jī)械鍵盤(pán)按鍵按下或釋放時(shí),由于機(jī)械彈性作用的影響,通常伴隨一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后才穩(wěn)定下來(lái)。其抖動(dòng)過(guò)程如圖9所示,抖動(dòng)時(shí)間的長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性有關(guān),一般為5~l0ms。按鍵抖動(dòng)會(huì)導(dǎo)致錯(cuò)誤判斷按鍵通或斷的狀態(tài),這種情況是絕對(duì)不允許出現(xiàn)的。所以在設(shè)計(jì)中必須采取去抖動(dòng)措施,由于按鍵數(shù)較多,故采用軟件去抖。軟件去抖采取的措施是:在檢測(cè)到有按鍵按下時(shí),執(zhí)行一個(gè)l0ms左右的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,假設(shè)仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài);同理,在檢測(cè)到該鍵釋放后,也應(yīng)采用一樣的步驟進(jìn)展確認(rèn),從而可消除抖動(dòng)的影響。一個(gè)完善的鍵盤(pán)控制程序應(yīng)具備以下功能:〔1〕檢測(cè)有無(wú)按鍵按下,并采取硬件或軟件措施,消除鍵盤(pán)按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響?!?〕有可靠的邏輯處理方法。每次只處理一個(gè)按鍵,其間對(duì)任何按鍵的操作對(duì)系統(tǒng)不產(chǎn)生影響,且無(wú)論一次按鍵時(shí)間有多長(zhǎng),系統(tǒng)僅執(zhí)行一次按鍵功能程序?!?〕準(zhǔn)確輸出按鍵值〔或鍵號(hào)〕,以滿足跳轉(zhuǎn)指令要求。圖9按鍵抖動(dòng)過(guò)程由于本系統(tǒng)按鍵數(shù)較多,故采用4×4行、列構(gòu)造的16位矩陣鍵盤(pán),如圖10所示。矩陣式鍵盤(pán)中,行、列線分別連接到按鍵開(kāi)關(guān)的兩端,行線通過(guò)上拉電阻接到+5V上。當(dāng)無(wú)鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這是識(shí)別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤(pán)中的行線、列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號(hào)配合起來(lái)作適當(dāng)處理,才能確定閉合鍵的位置。圖10矩陣鍵盤(pán)電路3.2.5聲光報(bào)警單元本設(shè)計(jì)采用蜂鳴器與發(fā)光二極管實(shí)現(xiàn)聲光報(bào)警。當(dāng)傳感器檢測(cè)到液位低于預(yù)設(shè)值或傳感器檢測(cè)不到有液滴下落時(shí),從站單片機(jī)控制蜂鳴器和報(bào)警燈工作,在發(fā)出聲光報(bào)警的同時(shí)向主站發(fā)出報(bào)警信息。在實(shí)際應(yīng)用中,如果設(shè)定的滴速過(guò)高,輸液瓶上升到支架頂部時(shí),仍達(dá)不到設(shè)定的滴速,輸液瓶繼續(xù)上升有可能會(huì)拉倒支架,造成危險(xiǎn)。所以在支架的頂部安裝一個(gè)紅外探測(cè)器,如檢測(cè)到輸液瓶上升到支架頂部,則發(fā)出信號(hào),通知單片機(jī)控制電機(jī)停轉(zhuǎn),同時(shí)發(fā)出聲光報(bào)警并向主站發(fā)送報(bào)警信號(hào)。以下列圖11為聲光報(bào)警電路。圖11聲光報(bào)警電路3.2.6電源電路單元~+46V之間,考慮到用電平安及設(shè)計(jì)方便等因素,將其設(shè)定在+15V。因此我們的目標(biāo)是設(shè)計(jì)出一個(gè)能夠提供+5V與+15V的電源,其電路如圖12所示。圖12電源電路由上圖可以知,此電源電路可以將220V的交流市電轉(zhuǎn)換為+5V和+15V直流電輸出。從原理上看,首先將通過(guò)變壓器的220V交流市電轉(zhuǎn)換為24V交流電,然后經(jīng)過(guò)二極管橋式整流電路和濾波電容C3對(duì)其進(jìn)展整流,獲得略低于24V的直流電輸出,經(jīng)過(guò)C4濾除紋波電壓后進(jìn)入集成穩(wěn)壓源L7815產(chǎn)生+15V直流電壓供L298N使用,同時(shí)此電壓又作為MC7805的輸入電壓,通過(guò)MC7805產(chǎn)生+5V電壓供系統(tǒng)邏輯電路和各模塊使用。這種做法的好處是只使用一個(gè)變壓器,降低了本錢(qián)的同時(shí)還減小了+5V直流電源的紋波電壓。3.3通信電路單元本系統(tǒng)所采用的是CAN總線作為通信總線,以下就對(duì)CAN總線的適配芯片以及通信接口連接做簡(jiǎn)要介紹。3.3.1CAN總線適配芯片連接電路系統(tǒng)主控制器系統(tǒng)主控制器MPC2510CAN收發(fā)器CAN收發(fā)器CAN收發(fā)器CAN收發(fā)器CAN收發(fā)器MPC2510MPC2510MPC2510MPC2510節(jié)點(diǎn)控制器節(jié)點(diǎn)控制器節(jié)點(diǎn)控制器節(jié)點(diǎn)控制器圖13CAN總線通信原理圖以CAN總線作為通信系統(tǒng)的典型實(shí)現(xiàn)方法如圖13所示。由系統(tǒng)框圖中的CAN接口局部可以得知,CAN接口由兩個(gè)局部組成:CAN控制器和CAN收發(fā)器。其中前者主要用于實(shí)現(xiàn)物理信令子層和數(shù)據(jù)鏈路層,而后者則是CAN控制器與物理傳輸媒體之間連接的子層接口。在本設(shè)計(jì)中,采用MCP2510作為CAN控制器,CAN收發(fā)器采用TJA1050。MCP2510是MicrochipTechnologyInc.〔美國(guó)微芯科技〕生產(chǎn)的一款控制器局域網(wǎng)絡(luò)協(xié)議控制器,完全支持CAN總線V2.0A/B技術(shù)標(biāo)準(zhǔn)。該器件支持CAN1.2、CAN2.0A、主動(dòng)和被動(dòng)CAN2.0B等版本的協(xié)議,能夠發(fā)送和接收標(biāo)準(zhǔn)和擴(kuò)展報(bào)文。同時(shí)它還具備驗(yàn)收過(guò)濾以及報(bào)文管理功能。該器件包含三個(gè)發(fā)送緩沖器和兩個(gè)接收緩沖器,減少了單片機(jī)的管理負(fù)擔(dān)。TJA1050是控制器區(qū)域網(wǎng)絡(luò)協(xié)議控制器和物理總線之間的接口,是一種標(biāo)準(zhǔn)的高速CAN收發(fā)器。TJA1050可以為總線提供差動(dòng)發(fā)送性能,為CAN控制器提供差動(dòng)接收性能,是PCA82C250和PCA82C251高速CAN收發(fā)器的后繼產(chǎn)品。3.3.2通信接口電路通信接口電路即適配芯片連接電路其連接方法如圖14所示:圖14通信接口電路適配芯片各引腳連接情況如下:(1)CAN收發(fā)器TJA1050引腳連接情況:CANL為低電平CAN總線,CANH為高電平CAN總線,T*D為發(fā)送數(shù)據(jù)輸入引腳,R*D為接收數(shù)據(jù)輸入引腳。(2)CAN協(xié)議控制器MCP2510各引腳的連接情況:T*0RS為通用數(shù)字輸入或發(fā)送緩沖器〔T*B0〕請(qǐng)求發(fā)送引腳,T*1BF為接收緩沖器,R*B1的通用數(shù)字輸出或中斷引腳T*CAN引腳與CAN總線的發(fā)送輸出引腳〔T*D〕連接,R*CAN引腳與CAN總線的接收輸入引腳〔R*D〕連接。TJA1050具有高速模式和靜音模式兩種工作模式,通過(guò)引腳"8〞的得取來(lái)選擇模式。假設(shè)引腳"8〞接地則進(jìn)入高速模式;假設(shè)引腳"8〞沒(méi)有接地則進(jìn)入靜音模式;假設(shè)引腳"8〞不連接,則默認(rèn)高速模式。4系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì)是基于單片機(jī)硬件進(jìn)展的。軟件設(shè)計(jì)是系統(tǒng)的主要組成局部,軟件的好壞將直接影響到系統(tǒng)的性能指標(biāo)。無(wú)人堅(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)采用模塊化構(gòu)造的方式,模塊化編程是分別對(duì)各模塊程序進(jìn)展編寫(xiě)、編譯,最后通過(guò)主程序?qū)⒏髂F嗷フ{(diào)用的軟件設(shè)計(jì)方法。本系統(tǒng)包含從站軟件設(shè)計(jì)和主站軟件設(shè)計(jì),主站程序主要是對(duì)從從站各程序模塊的協(xié)調(diào)管理。4.1從站軟件系統(tǒng)總體設(shè)計(jì)從站軟件設(shè)計(jì)是對(duì)從站各模塊進(jìn)展嵌入式程序編譯,本系統(tǒng)中需要進(jìn)展程序編譯的模塊主要有:〔1〕主控模塊即初始化模塊;〔2〕鍵盤(pán)控制模塊;〔3〕點(diǎn)滴速控制模塊;〔4〕電機(jī)控制模塊;〔5〕報(bào)警模塊;〔6〕主從通信模塊。4.2從站各模塊軟件設(shè)計(jì)從站系統(tǒng)程序由一個(gè)主控程序模塊和假設(shè)干個(gè)子程序模塊組成,其中主控程序模塊為軟件系統(tǒng)的核心,其作用是管理協(xié)調(diào)各子模塊,使之按照總體設(shè)計(jì)流程工作。4.2.1主控模塊主控模塊是從站軟件系統(tǒng)的核心,其主要負(fù)責(zé)調(diào)度各子模塊程序。工作時(shí),首先對(duì)串口局部和數(shù)據(jù)緩沖區(qū)進(jìn)展初始化,然后調(diào)用各子模塊程序來(lái)協(xié)調(diào)各子模塊工作。系統(tǒng)初始化有兩方面的工作內(nèi)容:〔1〕串口初始化,即讓串口工作處方式"1〞。通過(guò)定時(shí)器T1來(lái)設(shè)定波特率的溢出率值為1200bit/s,串口處于接收的狀態(tài)。此時(shí)把定時(shí)器T1的初始值設(shè)定為248(0E8),MUC外圍電路使用的晶振頻率為11.0592MHz?!?〕外部中斷"0〞的設(shè)置,串口數(shù)據(jù)通信通過(guò)中斷來(lái)進(jìn)展實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收,所以初始化程序還需設(shè)定串口的中斷方式。在從站系統(tǒng)中,當(dāng)有液滴滴下時(shí),液滴檢測(cè)電路就會(huì)捕捉到一個(gè)電信號(hào),將捕捉的電信號(hào)送到A/D轉(zhuǎn)換電路中對(duì)其整形,最后產(chǎn)生一個(gè)數(shù)字脈沖信號(hào),將脈沖信號(hào)送至單片機(jī)內(nèi)部處理使之產(chǎn)生一個(gè)外部中斷"0〞。系統(tǒng)進(jìn)展中斷計(jì)數(shù)時(shí),必須開(kāi)啟外部中斷"0〞和R4存放器。同時(shí),還需將外部中斷"0〞設(shè)置為電平觸發(fā)模式。串口初始化程序局部源碼如下:#include<reg53.h>#include<stdlib.h>#include"〞#ifdefevalboard//采用硬件目標(biāo)板時(shí)需要使用以下外部函數(shù)e*ternvoidDNPUT(unsignedcharaa,unsignedcharbb);e*ternvoidDISPLY(unsignedchardata*cc);staticunsignedchardatadg[]={0,0,10,0,0,10,0,0};#endifvoidmain(void){unsignedi;for(i=0;i<1000;i++);//延時(shí),等待系統(tǒng)上電穩(wěn)定timer0_initialize();//定時(shí)器0初始化_initialize();//串行口初始化#ifdefevalboard//采用硬件目標(biāo)板時(shí)DINPUT(0*0A,0*07);//需要對(duì)板上MA*7219初始化DNPUT(0*0B,0*07);DINPUT(0*09,0*0FF);DINPUT(0*0c,0*01);DISPLY(dg);//板上LCD顯示00-00-00#endiftimer0_wait(TIMER0_TICKS_PER_SEC/10);clock_init();_puts("TDPVl.0\r\n〞);while(1){constchar*cmd;cmdb_init();cmdb_prompt();for(cmd=NULL;cmd==NULL;cmd=cmdb_scan()){clock_update();}cmd_proc(cmd);}}4.2.2鍵盤(pán)控制模塊鍵盤(pán)掃描采用行列式矩陣接口,子程序采用中斷方式進(jìn)展行列掃描,以獲得鍵值輸入。由于鍵盤(pán)抖動(dòng)會(huì)對(duì)結(jié)果造成影響,因此必須消除。程序流程圖如圖15所示,鍵盤(pán)掃描程序和防抖子程序如下:〔1〕鍵盤(pán)掃描程序:bytekey_scan(void){bytektrnp,key;key=0;key_4*4_line_output();key_4*4_row_input();key_4*4_get_row(ktmp);while((ktrnp&0*0f)==0*0f)key_4*4_get_row(ktmp);delay_ms(10);key_4*4_get_row(ktmp);if((ktmp&0*0f)!=0*0f){key=(ktmp&0*0)key_4*4_row_okey_4*4_line_indelay_ms(10);key_4*4_get_linif((ktmp&0*f0)!{while((ktmpkey_4*4_linkey_4*4_rokey+=(ktmfor(ktmp=0;{if(key==kreturn(0*ff)}elsereturn(0*ff)}elsereturn(0*ff);}〔2〕防抖子程序:#include<reg51.h>#include<intrins.h>sbitP34=0*B4;sbitP35=0*B5;unsignedcharget_char(void);//函數(shù)說(shuō)明voiddelay(void);main(){unsignedcharkeybuf[16],count;//鍵盤(pán)緩沖區(qū)和讀鍵計(jì)數(shù)變量SCON=0;//將串行口設(shè)置成工作方式0ES=0;//制止串口中斷EA=0;count=0;while(count<16)keybuf[count++]=get_char();//讀入16個(gè)按鍵的鍵值}unsignedcharget_char(void){//定義表示列號(hào)、鍵序號(hào)和待發(fā)送數(shù)據(jù)的變量column,key_code和maskunsignedcharkey_code,column=0,mask=0*00;//以下語(yǔ)句從串行口向74LS164移位輸出8個(gè)0T1=0;SBUF=mask;while(TI==0);//等待發(fā)送完畢//以下語(yǔ)句通過(guò)檢測(cè)P3.4和P3.5是否為0來(lái)判斷是否有鍵按下,假設(shè)有則延時(shí)l0ms消除按鍵抖動(dòng)。然后再次檢測(cè)P3.4和P3.5是否為0,假設(shè)不為0則說(shuō)明有干擾信號(hào)并繼續(xù)等待按鍵,否則表示有鍵被按下并退出循環(huán)while(1){while((P3.4&P3.5)!=0);delay();if((P3.4&P3.5)!=0)continue;elsebreak;}//下面語(yǔ)句分析被按下鍵所在的列號(hào)mask=0*fe;while(1){TI=0;SBUF=mask;while(TI==0);if((P3.4&P3.5)!=0){mask=_crol_(mask,1);//將mask的值循環(huán)左移一位column++;if(column>=8)column=0;continue;{elsebreak://下面語(yǔ)句分析被按下鍵所在行號(hào)并計(jì)算鍵序號(hào)if(P34==0)key_code=column;else key_code=8+column;return(key_code);}voiddelay(void){unsignedinti=10;//延時(shí)10mswhile(i--);}開(kāi)始開(kāi)始參數(shù)初始化調(diào)用key_scan掃描函數(shù)是否為功能鍵?進(jìn)入中斷調(diào)用key_scan掃描函數(shù)調(diào)用防抖子程序退出中斷N完畢"YYN圖15鍵盤(pán)掃描流程圖4.2.3點(diǎn)滴速度監(jiān)測(cè)模塊中斷計(jì)數(shù)中斷計(jì)數(shù)中斷計(jì)數(shù)中斷計(jì)數(shù)圖16速度計(jì)算原理系統(tǒng)用的定時(shí)器T0定時(shí)時(shí)間為200us。當(dāng)系統(tǒng)檢測(cè)到第一個(gè)脈沖信號(hào)時(shí),程序立即進(jìn)展中斷處理,讀出此時(shí)計(jì)數(shù)器存儲(chǔ)的內(nèi)容,然后清零,記脈沖信號(hào)的初始值為COUNT=0。當(dāng)定時(shí)器定時(shí)到達(dá)200us時(shí),程序中斷檢測(cè)輸入信號(hào)是否有脈沖信號(hào)到來(lái),把計(jì)數(shù)器加1為COUNT=1。由計(jì)數(shù)器COUNT=1檢測(cè)到的脈沖信號(hào)個(gè)數(shù)而設(shè)定計(jì)數(shù)器COUNT=1的存儲(chǔ)單元是10,通過(guò)循環(huán)存儲(chǔ)脈沖個(gè)數(shù)。在定時(shí)器COUNT=1中取5個(gè)相臨的脈沖信號(hào)點(diǎn),設(shè)起始脈沖點(diǎn)對(duì)應(yīng)的計(jì)數(shù)器COUNT值是n1,最后一個(gè)脈沖點(diǎn)對(duì)應(yīng)的值是n2。從而計(jì)算出5個(gè)脈沖點(diǎn)所需時(shí)間為:t=(n2-n1)×200us,則兩相臨脈沖信號(hào)時(shí)間間隔的平均值為T(mén)=t/5。由此可得到點(diǎn)滴速度:V=60s/T,即V=1500/(n2-n1)[5]。根據(jù)上面的理論分析和計(jì)算,得到點(diǎn)滴速度測(cè)量流程圖,如圖17所示。NN開(kāi)場(chǎng)定時(shí)200us設(shè)置計(jì)算器COUNT=0退出中斷COUNT加1設(shè)置計(jì)算器COUNT1=0定時(shí)完畢"檢測(cè)到脈沖信號(hào)"COUNT加1NYY圖17點(diǎn)滴速度測(cè)量流程圖點(diǎn)滴速度檢測(cè)程序如下:#include<reg53.h>#include<stdio.h>#defineulongunsignedlongunsignedintT0_ISR_count=0;//定義T0中斷次數(shù)voidT0_ISR(void)interrupt1{TO_ISR_count++;//每次T0中斷時(shí),中斷次數(shù)加1TF0=0;}voidmain(void){SCON=0*50;//串行口初始化TMOD|=0*20;//利用定時(shí)器Tl作為波特率發(fā)生器THl=0*FA;//晶振為11.0592MHz時(shí)波特率為9600TRl=1;TI=1;PCON|=0*80;printf("\nPulseWidthE*ampleProgram\n\n〞);//輸出標(biāo)題信息ET0=1;EA=l;//開(kāi)中斷TMOD=(TMOD&0*F0)|0*09;//設(shè)置T0為16位定時(shí)器方式while(1){T0_ISR_count=0;TH0=0;TL0=0;TR0=1;printf("\nStartapulse.\n");//輸出提示信息while(!INTO);//等待脈沖上升沿,開(kāi)場(chǎng)測(cè)量while(INTO);//等待脈沖下降沿,停頓測(cè)量//以每個(gè)T0計(jì)數(shù)值為200us計(jì)算脈沖寬度并輸出printf("Thewidthpulseis:%1duSec\n",(ulong)((TH0<<8)|TL0|((ulong)T0_ISR_count<<16)));}}4.2.4電機(jī)控制模塊本系統(tǒng)采用了工業(yè)上較為流行的PID控制算法,實(shí)現(xiàn)了步進(jìn)電機(jī)的準(zhǔn)確控制,其算法公式為:ΔP=Pout(k)-Pout(k-1)=Kp×[e(k)-e(k-1)]+Ki×e(k)+Kd×[e(k)-2e(k-1)+e(k-1)],Kp=5,Ki=5,Kd=2步進(jìn)電機(jī)的正、反轉(zhuǎn)靠正向、反向驅(qū)動(dòng)兩個(gè)函數(shù)來(lái)實(shí)現(xiàn),當(dāng)函數(shù)中變量direction=1時(shí),步進(jìn)電機(jī)正轉(zhuǎn);direction=0時(shí),步進(jìn)電機(jī)反轉(zhuǎn)。步進(jìn)電機(jī)正、反驅(qū)動(dòng)程序如下:voidmoto_one_step(bytedirection,wordpulse〕{if(direction){if(moto_state==moto_state_a)moto_state=moto_state_da;elsemoto_state--;}else{if(moto_state==moto_state_da)moto_state=moto_state_a;elsemoto_state++;}PORTC=(PORTC&0*C3)|moto_tab[moto_state];DelayMs(pulse);}4.2.5報(bào)警模塊開(kāi)場(chǎng)初始化開(kāi)場(chǎng)初始化調(diào)用外部函數(shù)滴速是否有異常?報(bào)警程序驅(qū)動(dòng)報(bào)警NY圖18報(bào)警程序流程圖報(bào)警程序如下:#include<iom53v.h>#include<macros.h>voiddelay_nus(unsignedintn)voiddelay_nms(unsignedintn);voidmain(void)//主函數(shù){unsignedinti;unsignedcharn;OSCCAL=0*9E;//系統(tǒng)時(shí)鐘校準(zhǔn)TCCRO=BIT(CS01);//T/C0時(shí)鐘8分頻TIMSK=BIT(TOIE0);//允許定時(shí)器T/C0溢出中斷SEI();//開(kāi)中斷DDRD-=BIT(0)-BIT(7);DDRC&=~BIT(5);//設(shè)置PC5為輸入口DDIZB-=BIT(1)-BIT(0);//定義B口的PB0,PB1為輸出口PORTB-=BIT(1);//PB1口輸出高電平,綠燈亮4.2.6主從通信模塊對(duì)于主、從通信模塊的程序設(shè)計(jì),主要有三個(gè)局部?jī)?nèi)容組成:1、串行通信接口的參數(shù)設(shè)置,如通信線路上的邏輯狀態(tài)、波特率等的設(shè)置;2、通信協(xié)議的約定,如通信的根本參數(shù),數(shù)據(jù)的傳輸格式以及數(shù)據(jù)流的控制方式等;3、CAN總線節(jié)點(diǎn)的程序設(shè)計(jì),包括CAN節(jié)點(diǎn)初始化、報(bào)文發(fā)送、報(bào)文接收;根據(jù)以上設(shè)計(jì)內(nèi)容,本模塊可以應(yīng)用MSComm控件通過(guò)串行端口發(fā)送和接收數(shù)據(jù)來(lái)實(shí)現(xiàn)串行通信,其方法只需要對(duì)串口進(jìn)展簡(jiǎn)單配置,以下給出了實(shí)現(xiàn)串口通信的方案。與上位機(jī)通信程序流程圖,如圖19所示。MSComm控件的程序如下:串口初始化并翻開(kāi)串口:m-Com.SetCommPort(2);//選擇COM2m-Com.SetInBufferSize(1024);//設(shè)置輸入緩沖區(qū)的大小m-Com.SetOutBufferSize(512);//設(shè)置輸出緩沖區(qū)的大小if(!m-Com.GetPortOpen());m-Com.SetPortOpen(TRUE);//翻開(kāi)串口m-Com.SetlnputMode(0);//設(shè)置輸入模式m-Com.SetSettings("9600,n,8,1");//設(shè)置數(shù)據(jù)傳輸速率等參數(shù)m-Com.SetRThreshold(1);//為1表示有一個(gè)字符引發(fā)一個(gè)事件發(fā)送數(shù)據(jù):m-Com.SetOutput(C0leVariant(outstring));//發(fā)送outstring字符串接收數(shù)據(jù):m-Com.SetInputLen(1);//每次讀取一個(gè)字符VARIANTVI=m-Com.GetInput()://讀取字符YYYNY延時(shí)NNN發(fā)送數(shù)據(jù)接收數(shù)據(jù)下位機(jī)回應(yīng)?查詢(xún)完否?地址碼返回開(kāi)場(chǎng)串口初始化送下位機(jī)地址下位機(jī)應(yīng)答?應(yīng)答正確?發(fā)送?地址加碼1下位機(jī)復(fù)位NYYN圖19通信流程圖5完畢語(yǔ)本文是基于AT89S53單片機(jī)設(shè)計(jì)的無(wú)人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng),其主要目的是在無(wú)人看護(hù)的情況下,實(shí)現(xiàn)輸液異常、輸液完畢報(bào)警提示以及液速自動(dòng)調(diào)節(jié)等功能。本文所研究與設(shè)計(jì)的內(nèi)容如下:〔1〕分析了課題的背景及意義?!?〕介紹了點(diǎn)滴監(jiān)控的開(kāi)展和研究現(xiàn)狀?!?〕比較幾種方案從中選擇適宜的方案?!?〕分析系統(tǒng)硬件組成,完成系統(tǒng)從站硬件各模塊的設(shè)計(jì)?!?〕根據(jù)系統(tǒng)硬件設(shè)計(jì)相應(yīng)的軟件程序。由于個(gè)人知識(shí),精力,能力有限,本設(shè)計(jì)中還有許多不完美之處。監(jiān)控系統(tǒng)功能的實(shí)現(xiàn)不夠完整,主、從站之間的通信連接認(rèn)識(shí)不夠全面,主站的設(shè)計(jì)方面還有很多欠缺。這些都需要在以后的學(xué)習(xí)中去補(bǔ)充、完善,使自己在日后的設(shè)計(jì)中游刃有余。同時(shí)也要學(xué)習(xí)教師和同學(xué)的長(zhǎng)處,矯正自己的缺點(diǎn),提高自己分析和解決問(wèn)題的能力。..

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論