版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
②通信接口電路。3系統(tǒng)從站硬件設(shè)計(jì)3.1從站硬件系統(tǒng)框圖根據(jù)從站系統(tǒng)所要實(shí)現(xiàn)的功能,為從站系統(tǒng)設(shè)計(jì)出硬件系統(tǒng)框圖[4],如圖2所示: AT89S53AT89S53鍵盤控制電路單元點(diǎn)滴信號檢測單元液體檢測單元單元通信電路單元報(bào)警電路單元電源電路單元點(diǎn)滴信號整形單元 圖2從站硬件系統(tǒng)框圖3.2從站系統(tǒng)各單元設(shè)計(jì)有上面的框圖能夠知道,從站系統(tǒng)所包含的子模塊較多,因此下面進(jìn)行逐一介紹。3.2.1點(diǎn)滴信號檢測單元此單元模塊是經(jīng)過固定在輸液瓶外側(cè)的紅外傳感器來檢測是否有點(diǎn)滴滴下,電路圖如圖3所示。圖3點(diǎn)滴信號檢測電路紅外傳感器是有發(fā)射管和受光管二者構(gòu)成,其主要功能是實(shí)現(xiàn)光和電之間的轉(zhuǎn)換。紅外系統(tǒng)具有尺寸小、重量輕、易于安裝等優(yōu)點(diǎn),且紅外光波長長與可見光,受后者的影響較小,因此選用紅外傳感器來檢測液體點(diǎn)滴滴速。增強(qiáng)信噪比以減少環(huán)境光源的干擾,并采用脈沖調(diào)制的方式。發(fā)射、接受的簡化原理電路如圖4所示。圖4脈沖產(chǎn)生電路74HC14是具有施密特功能的六反相器,圖5是74HC14所構(gòu)成的多諧振蕩電路。施密特觸發(fā)器具有上限閾值電壓V2、下限閾值V1的特性,且受芯片電源VDD的限制。多諧振蕩器電路產(chǎn)生信號的周期頻率滿足f=1/{RCln[V2(VDD-V1)/V1(VDD-V2)]},令ln[V2(VDD-V1)/V1(VDD-V2)]為k,則f=1/kRC,即T=kRC。對于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)滴信號整形單元在實(shí)際操作中,當(dāng)點(diǎn)滴落下時(shí),接收到的信號會(huì)產(chǎn)生相距很近的雙脈沖,這極大的干擾了計(jì)數(shù)。為了消除這種干擾,減小虛假信息的影響,提高采樣的可靠性,用軟件濾波的方式濾去兩個(gè)脈沖中的一個(gè),這樣就確保了計(jì)數(shù)的精確性。圖6是信號整形原理電路圖,同過原理圖,能夠?qū)φ斡泻唵蔚牧私?。圖6點(diǎn)滴信號整形電路3.2.3液位檢測單元按照醫(yī)用衛(wèi)生標(biāo)準(zhǔn),吊瓶中應(yīng)盡可能避免異物進(jìn)入,因此在紅外有損探測和無損探測中我們選擇后者。液位檢測電路是利用安裝在輸液瓶頸部的紅外對射管對瓶內(nèi)無液空間與有液空間光的折射差異來判斷輸液是否結(jié)束。光電轉(zhuǎn)換原理類似以滴速檢測,但紅外接收管輸出的電信號是電平信號,而不是脈沖信號。電平信號經(jīng)放大后輸入到比較器與門限電路比較,輸出后送至單片機(jī)外部中斷接口INT1。因考慮到儲(chǔ)液瓶壁較厚,可利用紅外無損探測方式,增大紅外發(fā)射功率來加強(qiáng)接收信號以保證對液位進(jìn)行精確檢測,儲(chǔ)液瓶有液空間和無液空間信號差異電壓比較差能夠達(dá)到40mV左右,說明該電路在液位下降到紅外對射管以下時(shí)系統(tǒng)即能發(fā)出警越限報(bào)。該電路接收到的信號只需對其放大不需濾波處理,因此本電路結(jié)構(gòu)單間,安裝簡易。其系統(tǒng)框圖及電路圖如下圖7和圖8所示。放大放大比較紅外發(fā)射門限信號紅外接收輸液瓶至單片機(jī) 圖7液位檢測框圖 圖8液位檢測電路3.2.4鍵盤控制電路本設(shè)計(jì)中所采用的鍵盤為非編碼機(jī)械觸點(diǎn)式按鍵開關(guān),其主要功能是把機(jī)械上的通斷轉(zhuǎn)換成為電氣上的邏輯關(guān)系。觸點(diǎn)式開關(guān)按鍵在最常見,且壽命長。非編碼鍵盤只簡單地提供行和列的矩陣,其它工作均由軟件完成,因此既經(jīng)濟(jì)又實(shí)用。在機(jī)械鍵盤按鍵按下或釋放時(shí),由于機(jī)械彈性作用的影響,一般伴隨一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后才穩(wěn)定下來。其抖動(dòng)過程如圖9所示,抖動(dòng)時(shí)間的長短與開關(guān)的機(jī)械特性有關(guān),一般為5~l0ms。按鍵抖動(dòng)會(huì)導(dǎo)致錯(cuò)誤判斷按鍵通或斷的狀態(tài),這種情況是絕對不允許出現(xiàn)的。因此在設(shè)計(jì)中必須采取去抖動(dòng)措施,由于按鍵數(shù)較多,故采用軟件去抖。軟件去抖采取的措施是:在檢測到有按鍵按下時(shí),執(zhí)行一個(gè)l0ms左右的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài);同理,在檢測到該鍵釋放后,也應(yīng)采用相同的步驟進(jìn)行確認(rèn),從而可消除抖動(dòng)的影響。一個(gè)完善的鍵盤控制程序應(yīng)具備以下功能:(1)檢測有無按鍵按下,并采取硬件或軟件措施,消除鍵盤按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響。(2)有可靠的邏輯處理辦法。每次只處理一個(gè)按鍵,其間對任何按鍵的操作對系統(tǒng)不產(chǎn)生影響,且無論一次按鍵時(shí)間有多長,系統(tǒng)僅執(zhí)行一次按鍵功能程序。(3)準(zhǔn)確輸出按鍵值(或鍵號),以滿足跳轉(zhuǎn)指令要求。圖9按鍵抖動(dòng)過程由于本系統(tǒng)按鍵數(shù)較多,故采用4×4行、列結(jié)構(gòu)的16位矩陣鍵盤,如圖10所示。矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線經(jīng)過上拉電阻接到+5V上。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這是識別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號配合起來作適當(dāng)處理,才能確定閉合鍵的位置。圖10矩陣鍵盤電路3.2.5聲光報(bào)警單元本設(shè)計(jì)采用蜂鳴器與發(fā)光二極管實(shí)現(xiàn)聲光報(bào)警。當(dāng)傳感器檢測到液位低于預(yù)設(shè)值或傳感器檢測不到有液滴下落時(shí),從站單片機(jī)控制蜂鳴器和報(bào)警燈工作,在發(fā)出聲光報(bào)警的同時(shí)向主站發(fā)出報(bào)警信息。在實(shí)際應(yīng)用中,如果設(shè)定的滴速過高,輸液瓶上升到支架頂部時(shí),仍達(dá)不到設(shè)定的滴速,輸液瓶繼續(xù)上升有可能會(huì)拉倒支架,造成危險(xiǎn)。因此在支架的頂部安裝一個(gè)紅外探測器,如檢測到輸液瓶上升到支架頂部,則發(fā)出信號,通知單片機(jī)控制電機(jī)停轉(zhuǎn),同時(shí)發(fā)出聲光報(bào)警并向主站發(fā)送報(bào)警信號。下圖11為聲光報(bào)警電路。圖11聲光報(bào)警電路3.2.6電源電路單元任何電氣設(shè)備的使用都離不開供電系統(tǒng),在整個(gè)單片機(jī)系統(tǒng)設(shè)計(jì)中,電源的設(shè)計(jì)是必須要考慮的。電源的設(shè)計(jì)取決于系統(tǒng)所要求的供電方式,如是采用單電源方案,還是多電源方案,系統(tǒng)的功耗有無特殊規(guī)定等等。本系統(tǒng)所選用的單片機(jī)是AT89S53,其標(biāo)準(zhǔn)工作電壓為+5V,且發(fā)光二極管和光敏三極管以及通訊所用的CAN總線適配器等電路的工作電壓都是+5V,因此在本設(shè)計(jì)中采用單電源方案。單電源方案的優(yōu)點(diǎn)是系統(tǒng)簡單、工作可靠。另外還涉及到對步進(jìn)電機(jī)的控制,步進(jìn)電機(jī)及驅(qū)動(dòng)電路由L297和L298N組成,L297的工作電壓為+5V,L298N除邏輯電路工作電壓+5V外,因此還需加入一個(gè)較高的電源電壓來增強(qiáng)電機(jī)的驅(qū)動(dòng)能力。根據(jù)L298N的相關(guān)資料,這個(gè)電源電壓的范圍在+2.5V~+46V之間,考慮到用電安全及設(shè)計(jì)方便等因素,將其設(shè)定在+15V。因此我們的目標(biāo)是設(shè)計(jì)出一個(gè)能夠提供+5V與+15V的電源,其電路如圖12所示。圖12電源電路由上圖能夠知,此電源電路能夠?qū)?20V的交流市電轉(zhuǎn)換為+5V和+15V直流電輸出。從原理上看,首先將經(jīng)過變壓器的220V交流市電轉(zhuǎn)換為24V交流電,然后經(jīng)過二極管橋式整流電路和濾波電容C3對其進(jìn)行整流,獲得略低于24V的直流電輸出,經(jīng)過C4濾除紋波電壓后進(jìn)入集成穩(wěn)壓源L7815產(chǎn)生+15V直流電壓供L298N使用,同時(shí)此電壓又作為MC7805的輸入電壓,經(jīng)過MC7805產(chǎn)生+5V電壓供系統(tǒng)邏輯電路和各模塊使用。這種做法的好處是只使用一個(gè)變壓器,降低了成本的同時(shí)還減小了+5V直流電源的紋波電壓。3.3通信電路單元本系統(tǒng)所采用的是CAN總線作為通信總線,以下就對CAN總線的適配芯片以及通信接口連接做簡要介紹。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.(美國微芯科技有限公司)生產(chǎn)的一款控制器局域網(wǎng)絡(luò)協(xié)議控制器,完全支持CAN總線V2.0A/B技術(shù)規(guī)范。該器件支持CAN1.2、CAN2.0A、主動(dòng)和被動(dòng)CAN2.0B等版本的協(xié)議,能夠發(fā)送和接收標(biāo)準(zhǔn)和擴(kuò)展報(bào)文。同時(shí)它還具備驗(yàn)收過濾以及報(bào)文管理功能。該器件包含三個(gè)發(fā)送緩沖器和兩個(gè)接收緩沖器,減少了單片機(jī)的管理負(fù)擔(dān)。TJA1050是控制器區(qū)域網(wǎng)絡(luò)協(xié)議控制器和物理總線之間的接口,是一種標(biāo)準(zhǔn)的高速CAN收發(fā)器。TJA1050能夠?yàn)榭偩€提供差動(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總線,TXD為發(fā)送數(shù)據(jù)輸入引腳,RXD為接收數(shù)據(jù)輸入引腳。(2)CAN協(xié)議控制器MCP2510各引腳的連接情況:TX0RS為通用數(shù)字輸入或發(fā)送緩沖器(TXB0)請求發(fā)送引腳,TX1BF為接收緩沖器,RXB1的通用數(shù)字輸出或中斷引腳TXCAN引腳與CAN總線的發(fā)送輸出引腳(TXD)連接,RXCAN引腳與CAN總線的接收輸入引腳(RXD)連接。TJA1050具有高速模式和靜音模式兩種工作模式,經(jīng)過引腳“8”的得取來選擇模式。若引腳“8”接地則進(jìn)入高速模式;若引腳“8”沒有接地則進(jìn)入靜音模式;若引腳“8”不連接,則默認(rèn)高速模式。4系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì)是基于單片機(jī)硬件進(jìn)行的。軟件設(shè)計(jì)是系統(tǒng)的主要組成部分,軟件的好壞將直接影響到系統(tǒng)的性能指標(biāo)。無人堅(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)采用模塊化結(jié)構(gòu)的方式,模塊化編程是分別對各模塊程序進(jìn)行編寫、編譯,最后經(jīng)過主程序?qū)⒏髂F嗷フ{(diào)用的軟件設(shè)計(jì)方法。本系統(tǒng)包含從站軟件設(shè)計(jì)和主站軟件設(shè)計(jì),主站程序主要是對從從站各程序模塊的協(xié)調(diào)管理。4.1從站軟件系統(tǒng)總體設(shè)計(jì)從站軟件設(shè)計(jì)是對從站各模塊進(jìn)行嵌入式程序編譯,本系統(tǒng)中需要進(jìn)行程序編譯的模塊主要有:(1)主控模塊即初始化模塊;(2)鍵盤控制模塊;(3)點(diǎn)滴速控制模塊;(4)電機(jī)控制模塊;(5)報(bào)警模塊;(6)主從通信模塊。4.2從站各模塊軟件設(shè)計(jì)從站系統(tǒng)程序由一個(gè)主控程序模塊和若干個(gè)子程序模塊組成,其中主控程序模塊為軟件系統(tǒng)的核心,其作用是管理協(xié)調(diào)各子模塊,使之按照總體設(shè)計(jì)流程工作。4.2.1主控模塊主控模塊是從站軟件系統(tǒng)的核心,其主要負(fù)責(zé)調(diào)度各子模塊程序。工作時(shí),首先對串口部分和數(shù)據(jù)緩沖區(qū)進(jìn)行初始化,然后調(diào)用各子模塊程序來協(xié)調(diào)各子模塊工作。系統(tǒng)初始化有兩方面的工作內(nèi)容:(1)串口初始化,即讓串口工作處方式“1”。經(jīng)過定時(shí)器T1來設(shè)定波特率的溢出率值為1200bit/s,串口處于接收的狀態(tài)。此時(shí)把定時(shí)器T1的初始值設(shè)定為248(0E8),MUC外圍電路使用的晶振頻率為11.0592MHz。(2)外部中斷“0”的設(shè)置,串口數(shù)據(jù)通信經(jīng)過中斷來進(jìn)行實(shí)現(xiàn)數(shù)據(jù)的發(fā)送與接收,因此初始化程序還需設(shè)定串口的中斷方式。在從站系統(tǒng)中,當(dāng)有液滴滴下時(shí),液滴檢測電路就會(huì)捕捉到一個(gè)電信號,將捕捉的電信號送到A/D轉(zhuǎn)換電路中對其整形,最后產(chǎn)生一個(gè)數(shù)字脈沖信號,將脈沖信號送至單片機(jī)內(nèi)部處理使之產(chǎn)生一個(gè)外部中斷“0”。系統(tǒng)進(jìn)行中斷計(jì)數(shù)時(shí),必須開啟外部中斷“0”和R4寄存器。同時(shí),還需將外部中斷“0”設(shè)置為電平觸發(fā)模式。串口初始化程序部分源碼如下:#include<reg53.h>#include<stdlib.h>#include“tdp.h”#ifdefevalboard//采用硬件目標(biāo)板時(shí)需要使用以下外部函數(shù)externvoidDNPUT(unsignedcharaa,unsignedcharbb);externvoidDISPLY(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初始化com_initialize();//串行口初始化#ifdefevalboard//采用硬件目標(biāo)板時(shí)DINPUT(0X0A,0X07);//需要對板上MAX7219初始化DNPUT(0X0B,0X07);DINPUT(0X09,0X0FF);DINPUT(0X0c,0X01);DISPLY(dg);//板上LCD顯示00-00-00#endiftimer0_wait(TIMER0_TICKS_PER_SEC/10);clock_init();com_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鍵盤控制模塊鍵盤掃描采用行列式矩陣接口,子程序采用中斷方式進(jìn)行行列掃描,以獲得鍵值輸入。由于鍵盤抖動(dòng)會(huì)對結(jié)果造成影響,因此必須消除。程序流程圖如圖15所示,鍵盤掃描程序和防抖子程序如下:(1)鍵盤掃描程序:bytekey_scan(void){bytektrnp,key;key=0;key_4x4_line_output();key_4x4_row_input();key_4x4_get_row(ktmp);while((ktrnp&0x0f)==0x0f)key_4x4_get_row(ktmp);delay_ms(10);key_4x4_get_row(ktmp);if((ktmp&0x0f)!=0x0f){key=(ktmp&0x0)key_4x4_row_okey_4x4_line_indelay_ms(10);key_4x4_get_linif((ktmp&0xf0)!{while((ktmpkey_4x4_linkey_4x4_rokey+=(ktmfor(ktmp=0;{if(key==kreturn(0xff)}elsereturn(0xff)}elsereturn(0xff);}(2)防抖子程序:#include<reg51.h>#include<intrins.h>sbitP34=0xB4;sbitP35=0xB5;unsignedcharget_char(void);//函數(shù)說明voiddelay(void);main(){unsignedcharkeybuf[16],count;//鍵盤緩沖區(qū)和讀鍵計(jì)數(shù)變量SCON=0;//將串行口設(shè)置成工作方式0ES=0;//禁止串口中斷EA=0;count=0;while(count<16)keybuf[count++]=get_char();//讀入16個(gè)按鍵的鍵值}unsignedcharget_char(void){//定義表示列號、鍵序號和待發(fā)送數(shù)據(jù)的變量column,key_code和maskunsignedcharkey_code,column=0,mask=0x00;//下列語句從串行口向74LS164移位輸出8個(gè)0T1=0;SBUF=mask;while(TI==0);//等待發(fā)送完畢//下列語句經(jīng)過檢測P3.4和P3.5是否為0來判斷是否有鍵按下,若有則延時(shí)l0ms消除按鍵抖動(dòng)。然后再次檢測P3.4和P3.5是否為0,若不為0則表明有干擾信號并繼續(xù)等待按鍵,否則表示有鍵被按下并退出循環(huán)while(1){while((P3.4&P3.5)!=0);delay();if((P3.4&P3.5)!=0)continue;elsebreak;}//下面語句分析被按下鍵所在的列號mask=0xfe;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://下面語句分析被按下鍵所在行號并計(jì)算鍵序號if(P34==0)key_code=column;else key_code=8+column;return(key_code);}voiddelay(void){unsignedinti=10;//延時(shí)10mswhile(i--);}開始開始參數(shù)初始化調(diào)用key_scan掃描函數(shù)是否為功能鍵?進(jìn)入中斷調(diào)用key_scan掃描函數(shù)調(diào)用防抖子程序退出中斷N結(jié)束?YYN圖15鍵盤掃描流程圖4.2.3點(diǎn)滴速度監(jiān)測模塊中斷計(jì)數(shù)中斷計(jì)數(shù)中斷計(jì)數(shù)中斷計(jì)數(shù) 圖16速度計(jì)算原理系統(tǒng)用的定時(shí)器T0定時(shí)時(shí)間為200us。當(dāng)系統(tǒng)檢測到第一個(gè)脈沖信號時(shí),程序立即進(jìn)行中斷處理,讀出此時(shí)計(jì)數(shù)器存儲(chǔ)的內(nèi)容,然后清零,記脈沖信號的初始值為COUNT=0。當(dāng)定時(shí)器定時(shí)到達(dá)200us時(shí),程序中斷檢測輸入信號是否有脈沖信號到來,把計(jì)數(shù)器加1為COUNT=1。由計(jì)數(shù)器COUNT=1檢測到的脈沖信號個(gè)數(shù)而設(shè)定計(jì)數(shù)器COUNT=1的存儲(chǔ)單元是10,經(jīng)過循環(huán)存儲(chǔ)脈沖個(gè)數(shù)。在定時(shí)器COUNT=1中取5個(gè)相臨的脈沖信號點(diǎn),設(shè)起始脈沖點(diǎn)對應(yīng)的計(jì)數(shù)器COUNT值是n1,最后一個(gè)脈沖點(diǎn)對應(yīng)的值是n2。從而計(jì)算出5個(gè)脈沖點(diǎn)所需時(shí)間為:t=(n2-n1)×200us,那么兩相臨脈沖信號時(shí)間間隔的平均值為T=t/5。由此可得到點(diǎn)滴速度:V=60s/T,即V=1500/(n2-n1)[5]。根據(jù)上面的理論分析和計(jì)算,得到點(diǎn)滴速度測量流程圖,如圖17所示。NN開始定時(shí)200us設(shè)置計(jì)算器COUNT=0退出中斷COUNT加1設(shè)置計(jì)算器COUNT1=0定時(shí)結(jié)束?檢測到脈沖信號?COUNT加1NYY 圖17點(diǎn)滴速度測量流程圖點(diǎn)滴速度檢測程序如下:#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=0x50;//串行口初始化TMOD|=0x20;//利用定時(shí)器Tl作為波特率發(fā)生器THl=0xFA;//晶振為11.0592MHz時(shí)波特率為9600TRl=1;TI=1;PCON|=0x80;printf(“\nPulseWidthExampleProgram\n\n”);//輸出標(biāo)題信息ET0=1;EA=l;//開中斷TMOD=(TMOD&0xF0)|0x09;//設(shè)置T0為16位定時(shí)器方式while(1){T0_ISR_count=0;TH0=0;TL0=0;TR0=1;printf("\nStartapulse.\n");//輸出提示信息while(!INTO);//等待脈沖上升沿,開始測量while(INTO);//等待脈沖下降沿,停止測量//以每個(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ī)的精確控制,其算法公式為:Δ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ù)來實(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&0xC3)|moto_tab[moto_state];DelayMs(pulse);}4.2.5報(bào)警模塊開始初始化調(diào)用外部函數(shù)滴速是否有異常?報(bào)警程序驅(qū)動(dòng)報(bào)警NY在輸液中時(shí)常有輸液過慢或過快等故障,此時(shí)報(bào)警系統(tǒng)發(fā)出報(bào)警。檢測輸液異常是經(jīng)過4s定時(shí)中斷來實(shí)現(xiàn)的。分析滴速數(shù)據(jù),若滴速大于設(shè)定滴速,則輸液過快,單片機(jī)的P0.7端輸出高電平,并把單片機(jī)的P0.7腳置“1”和P3.0腳置“0”,驅(qū)動(dòng)蜂鳴器和發(fā)光二極管發(fā)出聲光報(bào)警;反之,則輸液過緩。若在4s內(nèi)無點(diǎn)滴落下,則為輸液中斷或輸液結(jié)束,單片機(jī)的P0.7端輸出高電平,并把單片機(jī)的P0.7腳置“1”和P3.0腳置“開始初始化調(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=0X9E;//系統(tǒng)時(shí)鐘校準(zhǔn)TCCRO=BIT(CS01);//T/C0時(shí)鐘8分頻TIMSK=BIT(TOIE0);//允許定時(shí)器T/C0溢出中斷SEI();//開中斷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主從通信模塊對于主、從通信模塊的程序設(shè)計(jì),主要有三個(gè)部分內(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控件經(jīng)過串行端口發(fā)送和接收數(shù)據(jù)來實(shí)現(xiàn)串行通信,其方法只需要對串口進(jìn)行簡單配置,以下給出了實(shí)現(xiàn)串口通信的方案。與上位機(jī)通信程序流程圖,如圖19所示。MSComm控件的程序如下:串口初始化并打開串口:m-Com.SetCommPort(2);//選擇COM2m-Com.SetInBufferSize(1024);//設(shè)置輸入緩沖區(qū)的大小m-Com.SetOutBufferSize(512);//設(shè)置輸出緩沖區(qū)的大小if(!m-Com.GetPortOpen());m-Com.SetPortOpen(TRUE);//打開串口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)?查詢完否?地址碼返回開始串口初始化送下位機(jī)地址下位機(jī)應(yīng)答?應(yīng)答正確?發(fā)送?地址加碼1下位機(jī)復(fù)位NYYN圖19通信流程圖5結(jié)束語本文是基于AT89S53單片機(jī)設(shè)計(jì)的無人監(jiān)守點(diǎn)滴自動(dòng)監(jiān)控系統(tǒng),其主要目的是在無人看護(hù)的情況下,實(shí)現(xiàn)輸液異常、輸液結(jié)束報(bào)警提示以及液速自動(dòng)調(diào)節(jié)等功能。本文所研究與設(shè)計(jì)的內(nèi)容如下:(1)分析了課題的背景及意義。(2)介紹了點(diǎn)滴監(jiān)控的發(fā)展和研究現(xiàn)狀。(3)比較幾種方案從中選擇合適的方案。(4)分析系統(tǒng)硬件組成,完成系統(tǒng)從站硬件各模塊的設(shè)計(jì)。(5)根據(jù)系統(tǒng)硬件設(shè)計(jì)相應(yīng)的軟件程序。由于個(gè)人知識,精力,能力有限,本設(shè)計(jì)中還有許多不完美之處。監(jiān)控系統(tǒng)功能的實(shí)現(xiàn)不夠完整,主、從站之間的通信連接認(rèn)識不夠全面,主站的設(shè)計(jì)方面還有很多欠缺。這些都需要在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)民工工資拖欠專項(xiàng)整改協(xié)議3篇
- 減肥方法及其效果研究綜述
- 二零二五年度房產(chǎn)代持保密協(xié)議范本3篇
- 新生兒心肺復(fù)蘇知識
- 臨床引起雙硫侖樣反應(yīng)特點(diǎn)、診斷標(biāo)準(zhǔn)、分度、鑒別診斷及處理要點(diǎn)
- 二零二五年度信息安全管理責(zé)任承諾(含應(yīng)急預(yù)案)2篇
- 二零二五年度his系統(tǒng)與藥品供應(yīng)鏈系統(tǒng)對接合同
- 河南省商丘市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版質(zhì)量測試(上學(xué)期)試卷及答案
- 黑龍江大慶市(2024年-2025年小學(xué)六年級語文)部編版能力評測((上下)學(xué)期)試卷及答案
- 貴州商學(xué)院《概率論與隨機(jī)過程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2022年中國農(nóng)業(yè)銀行(廣東分行)校園招聘筆試試題及答案解析
- 品牌管理第五章品牌體驗(yàn)課件
- 基于CAN通訊的儲(chǔ)能變流器并機(jī)方案及應(yīng)用分析報(bào)告-培訓(xùn)課件
- 外科醫(yī)師手術(shù)技能評分標(biāo)準(zhǔn)
- 保姆級別CDH安裝運(yùn)維手冊
- 菌草技術(shù)及產(chǎn)業(yè)化應(yīng)用課件
- GB∕T 14527-2021 復(fù)合阻尼隔振器和復(fù)合阻尼器
- 隧道二襯、仰拱施工方案
- 顫?。ㄅ两鹕。┲嗅t(yī)護(hù)理常規(guī)
- 果膠項(xiàng)目商業(yè)計(jì)劃書(模板范本)
- 旋挖鉆成孔掏渣筒沉渣處理施工工藝
評論
0/150
提交評論