小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng)PID控制器設(shè)計(jì)概要_第1頁
小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng)PID控制器設(shè)計(jì)概要_第2頁
小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng)PID控制器設(shè)計(jì)概要_第3頁
小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng)PID控制器設(shè)計(jì)概要_第4頁
小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng)PID控制器設(shè)計(jì)概要_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理及接口技術(shù)課程設(shè)計(jì)報(bào)告微機(jī)原理及接口技術(shù)課程設(shè)計(jì)報(bào)告小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng)PID控制器設(shè)計(jì)目錄一、課程設(shè)計(jì)的目的及意義…………1二、課程設(shè)計(jì)的題目與要求…………1三、基本原理…………11.PID算法…………12.霍爾元件測速原理………………43.轉(zhuǎn)速調(diào)節(jié)原理……………………5四、基于80x86芯片微機(jī)接口控制電路的設(shè)計(jì)……61.實(shí)現(xiàn)功能 ………………………62.設(shè)計(jì)思想 ………………………73.模塊介紹(附流程圖)……………7(1)電機(jī)控制模塊………………71)測速模塊…………………92)PWN波產(chǎn)生模塊…………103)PID計(jì)算模塊 ……………11(2)鍵盤掃描與顯示單元………141)鍵盤掃描模塊……………14五、基于80c51單片機(jī)控制電路的仿真設(shè)計(jì)………181.實(shí)現(xiàn)功能………………………182.設(shè)計(jì)思想………………………183.模塊介紹………………………19(1)測速反饋模塊……………19(2)PID模塊…………………19(3)鍵盤掃描模塊……………204.相關(guān)流程圖……………………21結(jié)束語 …………23附件:程序代碼一、課程設(shè)計(jì)的目的及意義通過本次課程設(shè)計(jì)要掌握80x86、8255、8251等芯片及基本輸入輸出電路的使用方法,靈活運(yùn)用課本知識,加深對所學(xué)的知識理解,對所學(xué)的相關(guān)芯片的原理、內(nèi)部結(jié)構(gòu)、使用方法等有更加深刻的了解,學(xué)會利用課本知識聯(lián)系實(shí)際應(yīng)用及編程。同時(shí)并了解綜合問題的程序設(shè)計(jì)掌握實(shí)時(shí)處理程序的編制和調(diào)試方法,掌握一般的設(shè)計(jì)步驟和流程,使我們以后設(shè)計(jì)時(shí)邏輯更加清晰。二、課程設(shè)計(jì)的題目與要求1.題目小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng)PID控制器設(shè)計(jì)2.設(shè)計(jì)要求(1)設(shè)計(jì)基于80x86微機(jī)接口控制電路;(2)分別用C語言或匯編語言或VC++編程完成硬件接口功能設(shè)計(jì);(3)程序功能要求:電機(jī)速度由按鍵分段給定或電位器連續(xù)給定,計(jì)算機(jī)屏幕和數(shù)碼管同步跟蹤顯示當(dāng)前給定速度和電機(jī)實(shí)際運(yùn)行速度,實(shí)現(xiàn)PID參數(shù)在線顯示和修改。(4)具備本地及遠(yuǎn)程(串行方式)監(jiān)控功能。三、基本原理1.PID算法及相關(guān)內(nèi)容在DDC系統(tǒng)中,用計(jì)算機(jī)取代了模擬器件,控制規(guī)律的實(shí)現(xiàn)是由計(jì)算機(jī)軟件來完成的。因此,系統(tǒng)中數(shù)字控制的設(shè)計(jì),實(shí)際上是計(jì)算機(jī)算法的設(shè)計(jì)。由于計(jì)算機(jī)只能識別數(shù)字量,不能對連續(xù)的控制算式直接進(jìn)行運(yùn)算,故在計(jì)算機(jī)控制系統(tǒng)中,首先必須對控制規(guī)律進(jìn)行離散化的算法設(shè)計(jì)。為將模擬PID控制規(guī)律按式(1.2)離散化,我們把圖1.1中、、、在第n次采樣的數(shù)據(jù)分別用、、、表示,于是式(1.1)變?yōu)椋?-(1.4)當(dāng)采樣周期T很小時(shí)可以用T近似代替,可用近似代替,“積分”用“求和”近似代替,即可作如下近似(1.5)(1.6)這樣,式(1.2)便可離散化以下差分方程(1.7)上式中是偏差為零時(shí)的初值,上式中的第一項(xiàng)起比例控制作用,稱為比例(P)項(xiàng),即(1.8)第二項(xiàng)起積分控制作用,稱為積分(I)項(xiàng)即(1.9)第三項(xiàng)起微分控制作用,稱為微分(D)項(xiàng)即(1.10)這三種作用可單獨(dú)使用(微分作用一般不單獨(dú)使用)或合并使用,常用的組合有:P控制:(1.11)PI控制:(1.12)PD控制:(1.13)PID控制:(1.14)式(1.7)的輸出量為全量輸出,它對于被控對象的執(zhí)行機(jī)構(gòu)每次采樣時(shí)刻應(yīng)達(dá)到的位置。因此,式(1.7)又稱為位置型PID算式。由(1.7)可看出,位置型控制算式不夠方便,這是因?yàn)橐奂悠?不僅要占用較多的存儲單元,而且不便于編寫程序,為此對式(1.7)進(jìn)行改進(jìn)。根據(jù)式(1.7)不難看出u(n-1)的表達(dá)式,即(1.15)將式(1.7)和式(1.15)相減,即得數(shù)字PID增量型控制算式為(1.16)從上式可得數(shù)字PID位置型控制算式為(1.17)式中:稱為比例增益;稱為積分系數(shù);稱為微分系數(shù)[1]。數(shù)字PID位置型示意圖和數(shù)字PID增量型示意圖分別如圖所示:數(shù)字PID位置型控制示意圖數(shù)字PID增量型控制示意圖2.霍爾元件測速原理霍爾傳感器是對磁敏感的傳感元件,由磁鋼、霍耳元件等組成。測量系統(tǒng)的轉(zhuǎn)速傳感器選用SiKO的NJK-8002D的霍爾傳感器,其響應(yīng)頻率為100KHz,額定電壓為5-30(V)、檢測距離為10(mm)。其在大電流磁場或磁鋼磁場的作用下,能測量高頻、工頻、直流等各種波形電流。該傳感器具有測量精度高、電壓范圍寬、功耗小、輸出功率大等優(yōu)點(diǎn),廣泛應(yīng)用在高速計(jì)數(shù)、測頻率、測轉(zhuǎn)速等領(lǐng)域。輸出電壓4~25V,直流電源要有足夠的濾波電容,測量極性為N極。安裝時(shí)將一非磁性圓盤固定在電動(dòng)機(jī)的轉(zhuǎn)軸上,將磁鋼粘貼在圓盤邊緣,磁鋼采用永久磁鐵,其磁力較強(qiáng),霍爾元件固定在距圓盤1-10mm處。當(dāng)磁鋼與霍爾元件相對位置發(fā)生變化時(shí),通過霍爾元件感磁面的磁場強(qiáng)度就會發(fā)生變化。圓盤轉(zhuǎn)動(dòng),磁鋼靠近霍爾元件,穿過霍爾元件的磁場較強(qiáng),霍爾元件輸出低電平;當(dāng)磁場減弱時(shí),輸出高電平,從而使得在圓盤轉(zhuǎn)動(dòng)過程中,霍爾元件輸出連續(xù)脈沖信號。這種傳感器不怕灰塵、油污,在工業(yè)現(xiàn)場應(yīng)用廣泛?;魻柶骷怯砂雽?dǎo)體材料制成的一種薄片,器件的長、寬、高分別為l、b、d。若在垂直于薄片平面(沿厚度d)方向施加外磁場B,在沿l方向的兩個(gè)端面加一外電場,則有一定的電流流過。由于電子在磁場中運(yùn)動(dòng),所以將受到一個(gè)洛侖磁力,其大小為:式中:f—洛侖磁力,q—載流子電荷,V—載流子運(yùn)動(dòng)速度,B—磁感應(yīng)強(qiáng)度。這樣使電子的運(yùn)動(dòng)軌跡發(fā)生偏移,在霍爾元器件薄片的兩個(gè)側(cè)面分別產(chǎn)生電子積聚或電荷過剩,形成霍爾電場,霍爾元器件兩個(gè)側(cè)面間的電位差稱為霍爾電壓?;魻栯妷捍笮椋?mV)式中:—霍爾常數(shù),d—元件厚度,B—磁感應(yīng)強(qiáng)度,I—控制電流設(shè),則=(mV) 為霍爾器件的靈敏系數(shù)(mV/mA/T),它表示該霍爾元件在單位磁感應(yīng)強(qiáng)度和單位控制電流下輸出霍爾電動(dòng)勢的大小。應(yīng)注意,當(dāng)電磁感應(yīng)強(qiáng)度B反向時(shí),霍爾電動(dòng)勢也反向。圖2.3為霍耳元件的原理結(jié)構(gòu)圖。若控制電流保持不變,則霍爾感應(yīng)電壓將隨外界磁場強(qiáng)度而變化,根據(jù)這一原理, 可以將兩塊永久磁鋼固定在電動(dòng)機(jī)轉(zhuǎn)軸上轉(zhuǎn)盤的邊沿,轉(zhuǎn)盤隨被測軸旋轉(zhuǎn),磁鋼也將跟著同步旋轉(zhuǎn),在轉(zhuǎn)盤附近安裝一個(gè)霍爾元件,轉(zhuǎn)盤隨軸旋轉(zhuǎn)時(shí),霍爾元件受到磁鋼所產(chǎn)生的磁場影響,輸出脈沖信號。傳感器內(nèi)置電路對該信號進(jìn)行放大、整形,輸出良好的矩形脈沖信號,測量頻率范圍更寬,輸出信號更精確穩(wěn)定,已在工業(yè),汽車,航空等測速領(lǐng)域中得到廣泛的應(yīng)用。其頻率和轉(zhuǎn)速成正比,測出脈沖的周期或頻率即可計(jì)算出轉(zhuǎn)速。 圖2.3霍耳元件的原理結(jié)構(gòu)圖3.轉(zhuǎn)速調(diào)節(jié)原理PWM的占空比決定輸出到直流電機(jī)的平均電壓.PWM不是調(diào)節(jié)電流的.PWM的意思是脈寬調(diào)節(jié),也就是調(diào)節(jié)方波高電平和低電平的時(shí)間比,一個(gè)20%占空比波形,會有20%的高電平時(shí)間和80%的低電平時(shí)間,而一個(gè)60%占空比的波形則具有60%的高電平時(shí)間和40%的低電平時(shí)間,占空比越大,高電平時(shí)間越長,則輸出的脈沖幅度越高,即電壓越高.如果占空比為0%,那么高電平時(shí)間為0,則沒有電壓輸出.如果占空比為100%,那么輸出全部電壓.

所以通過調(diào)節(jié)占空比,可以實(shí)現(xiàn)調(diào)節(jié)輸出電壓的目的,而且輸出電壓可以無級連續(xù)調(diào)節(jié).在使用PWM控制的直流無刷電動(dòng)機(jī)中,PWM控制有兩種方式:使用PWM信號,控制三極管的導(dǎo)通時(shí)間,導(dǎo)通的時(shí)間越長,那么做功的時(shí)間越長,電機(jī)的轉(zhuǎn)速就越高。

(2)使用PWM控制信號控制三極管導(dǎo)通時(shí)間,改變控制電壓高低來實(shí)現(xiàn)直流電機(jī)單元由DC12V、1.1W的直流電機(jī),小磁鋼,霍爾元件及輸出電路構(gòu)成。PWM示意圖如圖1-1-3所示。通過調(diào)節(jié)T1的脈沖寬度,改變T1的占空比,從而改變輸出,達(dá)到改變直流電機(jī)轉(zhuǎn)速的目的。圖1-1-3PWM示意圖利用8255的PB0產(chǎn)生脈沖信號作為控制量,經(jīng)驅(qū)動(dòng)電路驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)。霍爾測速元件輸出的脈沖信號記錄電機(jī)轉(zhuǎn)速構(gòu)成反饋量。在參數(shù)給定的情況下,經(jīng)PID運(yùn)算,電機(jī)可在控制量的作用下,按PC機(jī)累加器給定的轉(zhuǎn)速運(yùn)轉(zhuǎn)。通過PC的0號通道,設(shè)置為輸出1ms方波,作為采樣時(shí)鐘,PB0產(chǎn)生PWM脈沖計(jì)時(shí)及轉(zhuǎn)速累加,系統(tǒng)總線上INTR中斷用于測量電機(jī)轉(zhuǎn)速。四、基于80x86芯片微機(jī)接口控制電路的設(shè)計(jì)1.實(shí)現(xiàn)功能1)實(shí)現(xiàn)小型直流電機(jī)閉環(huán)PID控制調(diào)速;2)使用匯編語言完成硬件接口功能的設(shè)計(jì);3)使用小鍵盤實(shí)現(xiàn)現(xiàn)場設(shè)置設(shè)定速度v、比例參數(shù)p、積分參數(shù)i、微分?jǐn)?shù)d;4)使用4位數(shù)碼管實(shí)現(xiàn)現(xiàn)場顯示實(shí)時(shí)速度s、設(shè)定速度v、比例參數(shù)p、積分參數(shù)i、微分參數(shù)d;5)實(shí)現(xiàn)控制臺屏幕顯示設(shè)置速度v與實(shí)時(shí)速度s2.設(shè)計(jì)思想整個(gè)系統(tǒng)可以的劃分為兩部分,一部分是直流電機(jī)閉環(huán)PID調(diào)速單元,一部分是鍵盤掃描和數(shù)碼管顯示單元。直流電機(jī)閉環(huán)PID調(diào)速單元運(yùn)用PID算法通過對P、I、D、S、V參數(shù)的運(yùn)算得出PID控制量,并將PID控制量轉(zhuǎn)化為PWM通過8255單元輸出給直流電機(jī)從而實(shí)現(xiàn)對直流電機(jī)的控制。鍵盤掃描單元通過對鍵盤的重復(fù)掃描讀取用戶的輸入數(shù)據(jù)P、I、D、V并進(jìn)行相應(yīng)的存儲,數(shù)碼管顯示單元分析當(dāng)前選擇狀態(tài)、讀取P、I、D、S、V參數(shù)并通過基本輸入輸出單元進(jìn)行相應(yīng)的顯示。具體實(shí)施過程:將電機(jī)閉環(huán)調(diào)速的PWM波產(chǎn)生模塊、PID控制量產(chǎn)生模塊、測速生成模塊、初始化模塊和鍵盤掃描和數(shù)碼管顯示實(shí)驗(yàn)中的鍵盤掃描模塊、數(shù)碼管顯示模塊分別編寫為子過程;將以上模塊進(jìn)行適當(dāng)?shù)慕M合即可完成指定功能,具體可見代碼。3.模塊介紹(1)電機(jī)控制模塊這是一個(gè)主要的模塊,完成PID反饋控制調(diào)速小型直流電機(jī)。用8255單元來產(chǎn)生正弦波控制直流電機(jī)。通過控制高電平的時(shí)間就可以控制電機(jī)轉(zhuǎn)速了。其中驅(qū)動(dòng)電路由達(dá)林頓管組成。測速元件是霍爾傳感器,具體的測度原理見《先行知識》,模塊原理圖如下:電機(jī)控制模塊原理圖利用實(shí)驗(yàn)平臺上8255的PB0產(chǎn)生脈沖信號作為控制量,經(jīng)驅(qū)動(dòng)電路驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)?;魻枩y速元件輸出的脈沖信號記錄電機(jī)轉(zhuǎn)速構(gòu)成反饋量。在參數(shù)給定情況下,經(jīng)PID運(yùn)算,電機(jī)可在控制量作用下,按給定轉(zhuǎn)速運(yùn)轉(zhuǎn)。實(shí)驗(yàn)利用PC機(jī)定時(shí)器0號通道,設(shè)置為輸出1ms方波,作為采樣時(shí)鐘,PB0產(chǎn)生PWM脈沖計(jì)時(shí)及轉(zhuǎn)速累加。系統(tǒng)總線上INTR中斷用于測量電機(jī)轉(zhuǎn)速。程序流程如圖所示:測速中斷流程圖定時(shí)采樣中斷流程圖直流電機(jī)閉環(huán)調(diào)速流程圖1)測速模塊基本原理霍爾傳感器產(chǎn)生一系列反應(yīng)電機(jī)轉(zhuǎn)速的矩形波,矩形波是中斷定時(shí)器的中斷控制信號。通過中斷頻率就可以知道電機(jī)的速度了。程序代碼MYISRPROCNEARPUSHAXPUSHCXPUSHDXMOVAX,DATAMOVDS,AXMOVAL,MARKCMPAL,01HJZIN1MOVMARK,01HJMPIN2IN1:MOVMARK,00H ;計(jì)算轉(zhuǎn)速VV:MOVDX,0000HMOVAX,03E8HMOVCX,VADDCMPCX,0000HJZMM1DIVCXMM:MOVZV,ALMOVVADD,0000HMM1:MOVAL,ZVMOVZVV,ALIN2:MOVDX,PCI_INTCSR;清PCI卡控制寄存器標(biāo)志位SUBDX,19HINAL,DXMOVDX,PCI_INTCSRADDDX,2MOVAX,003FHOUTDX,AXMOVDX,INTR_OCW2;向PC機(jī)內(nèi)部8259發(fā)送中斷結(jié)束命令MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPDXPOPCXPOPAXIRETMYISRENDP2)PWM波產(chǎn)生模塊基本原理PWM波的輸出高電平的時(shí)間點(diǎn)一個(gè)周期的比例越大,則輸出的平均電壓就越大,通過速度反饋及PID計(jì)算,然后輸出相應(yīng)占空比的PWM波,占空比越大,則電機(jī)兩端獲得的電壓也越大,這里PWM波的信號是通過8255芯的PB0端輸出到驅(qū)動(dòng)電路的A端口的程序代碼KJPROCNEARPUSHAXCMPFPWM,01H;PWM為1,產(chǎn)生PWM的高電平JNZTEST2CMPVAA,00HJNZANOT0MOVFPWM,02HMOVAL,BBBCLCRCRAL,01HMOVVBB,ALJMPTEST2ANOT0:DECVAAMOVAL,01H;PB0=1電機(jī)轉(zhuǎn)動(dòng)MOVDX,MY8255_BOUTDX,ALTEST2:CMPFPWM,02H;PWM為2,產(chǎn)生PWM的低電平JNZOUTTCMPVBB,00HJNZBNOT0MOVFPWM,01HMOVAL,AAAACLCRCRAL,01HMOVVAA,ALJMPOUTTBNOT0:DECVBBMOVAL,00H;PB0=0電機(jī)停止MOVDX,MY8255_BOUTDX,ALOUTT:POPAXRETKJENDP3)PID計(jì)算模塊基本原理PID計(jì)算模塊就是通過測速反饋得來的實(shí)時(shí)速度反應(yīng)量YK來計(jì)算相關(guān)的比例項(xiàng)、積分項(xiàng)、微分項(xiàng)。最后得到控制量CK,送給PWM模塊,用于產(chǎn)生控制波。PIDPROCNEARMOVAX,SPECSUBAX,YK;求偏差EKMOVR0,AXMOVR1,AXSUBAX,EK_1MOVR2,AXSUBAX,AEK_1;求BEKMOVBEK,AXMOVR8,AXMOVAX,R1;求偏差變化量AEKMOVEK_1,AXMOVAX,R2MOVAEK_1,AXTESTR1,8000HJZEK1;若偏差EK為正數(shù),則不需要求補(bǔ)碼NEGR1;若偏差EK為負(fù)數(shù),則求偏差EK的補(bǔ)碼EK1:MOVAX,R1;判斷偏差EK是否在積分分離值的范圍內(nèi)SUBAX,IBANDJCII;在積分分離值范圍內(nèi),則跳轉(zhuǎn)到II,計(jì)算積分項(xiàng)MOVR3,00H;若不在積分分離值范圍內(nèi),則將積分項(xiàng)清0JMPDDD;計(jì)算微分項(xiàng)II:MOVAL,TS;計(jì)算積分項(xiàng),結(jié)果放在R3變量中(R3=EK*TS/KII)MOVAH,00H;其中TS和KII均為正數(shù),所以R3的正負(fù)由EK決定MOVCX,R1MULCXMOVCX,KIIDIVCXMOVR3,AXTESTR0,8000H;判斷積分項(xiàng)的正負(fù)JZDDD;為正數(shù),則跳轉(zhuǎn)去計(jì)算微分項(xiàng)NEGR3;為負(fù)數(shù),則將積分項(xiàng)的結(jié)果求補(bǔ)碼DDD:TESTBEK,8000H;判斷BEK的正負(fù)JZDDD1;為正數(shù),則BEK不變NEGBEK;為負(fù)數(shù),則求BEK的補(bǔ)碼DDD1:MOVAX,BEK;計(jì)算微分項(xiàng)(R4=KDD*BEK/8TS)MOVCX,KDDMULCXPUSHAXPUSHDXMOVAL,TSMOVAH,00H;將微分項(xiàng)縮小8倍,防止溢出MOVCX,0008HMULCXMOVCX,AXPOPDXPOPAXDIVCXMOVR4,AXTESTR8,8000H;判斷微分項(xiàng)的正負(fù)JZDD1;為正數(shù),則結(jié)果不需要求補(bǔ)碼NEGR4;為負(fù)數(shù),則微分項(xiàng)結(jié)果R4求補(bǔ)碼DD1:MOVAX,R3;積分項(xiàng)和微分項(xiàng)相加,結(jié)果放在R5變量中ADDAX,R4MOVR5,AXJOL9;判斷溢出L2:MOVAX,R5ADDAX,R2MOVR6,AX;R6=R5+R2=積分項(xiàng)+微分項(xiàng)+AEKJOL3L5:MOVAX,R6;計(jì)算KPP*R6MOVCX,KPPIMULCXMOVCX,1000HIDIVCXMOVCX,AXRCLAH,01H;判斷溢出,溢出賦極值PUSHFRCRAL,01HPOPFJCLLL1CMPCH,00HJZLLL2MOVAL,7FHJMPLLL2LLL1:CMPCH,0FFHJZLLL2MOVAL,80HLLL2:MOVR7,AL;CK=CK_1+CKADDAL,CK_1JOL8L18:MOVCK_1,ALADDAL,80HMOVCK,ALRETL8:TESTR7,80H;CK溢出處理程序JNZL17MOVAL,7FH;若為正溢出,則賦給正極值7FHJMPL18L17:MOVAL,80H;若為負(fù)溢出,則賦給賦極值80HJMPL18L9:TESTR3,8000HJNZL1MOVR5,7FFFH;若為正溢出,則賦給正極值7FFFHJMPL2L1:MOVR5,8000H;若為負(fù)溢出,則賦給負(fù)極值8000HJMPL2L3:TESTR2,8000HJNZL4MOVR6,7FFFHJMPL5L4:MOVR6,8000HJMPL5RETPIDENDP2.鍵盤掃描與顯示單元鍵盤及數(shù)碼管顯示單元通過基本輸入輸出單元與80x86CPU總線連接,選通信號CS_A、CS_B分別與IOY1、IOY2連接,地址分別為3040H、3080H。通過OA0-OA3與X1-X3相連選通指定行,IA0-IA3與Y1-Y3連接讀取當(dāng)前閉合列,從而確定當(dāng)前閉合按鍵。A-G、DP與0B0-OB7連接,根據(jù)按鍵使數(shù)碼管選通顯示相應(yīng)的數(shù)據(jù)。鍵盤掃描與顯示原理圖如下圖所示:鍵盤掃描與顯示原理圖鍵盤掃描模塊基本原理鍵盤掃描模塊,實(shí)現(xiàn)了判斷是否有按鍵,并且如果有按鍵獲取按鍵碼的功能,4×4鍵盤的編碼,從左到右,從上到下,依次編碼為0~F,如果有按鍵,則轉(zhuǎn)入到按鍵處理子程序模塊執(zhí)行,如果沒有,則返回主程序循環(huán)。程序代碼KEYSCANPROCNEARPUSHAXPUSHDXMOVAX,DATAMOVDS,AX BEGIN:CALLDIS;顯示刷新CALLCLEAR;清屏CALLCCSCAN;掃描按鍵JNZGETKEY1;有鍵按下則跳置GETKEY1 GETKEY1:CALLDIS;顯示刷新CALLDALLY1CALLDALLY1CALLCLEAR;清屏CALLCCSCAN;再次掃描按鍵JNZGETKEY2;有鍵按下則跳置GETKEY2JMPENDKEYSCAN;否則跳回開始繼續(xù)循環(huán) GETKEY2:MOVCH,0FEHMOVCL,00H;設(shè)置當(dāng)前檢測的是第幾列COLUM:MOVAL,CH;選取一列,將X1~X4中一個(gè)置0MOVDX,MYIO_AOUTDX,ALINAL,DX LP1:TESTAL,01H;是否為第1行JNZLP2;不是則繼續(xù)判斷MOVAL,00H;設(shè)置第1行第1列的對應(yīng)的鍵值JMPKCODE LP2:TESTAL,02H;是否為第2行JNZLP3;不是則繼續(xù)判斷MOVAL,04H;設(shè)置第2行第1列的對應(yīng)的鍵值JMPKCODE LP3:TESTAL,04H;是否為第3行JNZLP4;不是則繼續(xù)判斷MOVAL,08H;設(shè)置第3行第1列的對應(yīng)的鍵值JMPKCODE LP4:TESTAL,08H;是否為第4行JNZNEXT;不是則繼續(xù)判斷MOVAL,0CH;設(shè)置第4行第1列的對應(yīng)的鍵值 KCODE:ADDAL,CL;將第1列的值加上當(dāng)前列數(shù),確定按鍵值 ; CALLCALLINPUTDEAL;保存按鍵值,進(jìn)入相應(yīng)的按鍵處理程序 PUSHAXKON:CALLDIS;顯示刷新CALLCLEAR;清屏CALLCCSCAN;掃描按鍵,判斷按鍵是否彈起JNZKON;未彈起則繼續(xù)循環(huán)等待彈起POPAX NEXT:INCCL;當(dāng)前檢測的列數(shù)遞增MOVAL,CHTESTAL,08H;檢測是否掃描到第4列JZKERR;是則跳回到開始處 ROLAL,1;沒檢測到第4列則準(zhǔn)備檢測下一列MOVCH,ALJMPCOLUMKERR:;JMPBEGIN ENDKEYSCAN:POPDXPOPAXRETKEYSCANENDP鍵盤掃描程序流程圖五、基于80c51單片機(jī)控制電路的仿真設(shè)計(jì)1.實(shí)現(xiàn)功能基本功能1)用仿真基于80c51實(shí)現(xiàn)小型直流電機(jī)閉環(huán)PID控制調(diào)速;2)使用C語言完成硬件接口功能的設(shè)計(jì);3)使用小鍵盤實(shí)現(xiàn)現(xiàn)場設(shè)置設(shè)定速度v、比例參數(shù)p、積分參數(shù)i、微分?jǐn)?shù)d;4)使用4位數(shù)碼管實(shí)現(xiàn)現(xiàn)場顯示實(shí)時(shí)速度s、設(shè)定速度v、比例參數(shù)p、積分參數(shù)i、微分參數(shù)d;5)實(shí)現(xiàn)控制臺屏幕顯示設(shè)置速度v與實(shí)時(shí)速度s。附加功能1)通過按鍵實(shí)現(xiàn)直流電機(jī)的正反轉(zhuǎn)控制;2)通過按鍵實(shí)現(xiàn)直流電機(jī)的快速停車。2.設(shè)計(jì)思想與80x86芯片微機(jī)接口控制電路系統(tǒng)類似,整個(gè)系統(tǒng)可以的劃分為兩部分,一部分是直流電機(jī)閉環(huán)PID調(diào)速單元,一部分是鍵盤掃描和數(shù)碼管顯示單元。直流電機(jī)閉環(huán)PID調(diào)速單元運(yùn)用PID算法通過對P、I、D、S、V參數(shù)的運(yùn)算得出PID控制量,并將PID控制量轉(zhuǎn)化為PWM通過8255單元輸出給直流電機(jī)從而實(shí)現(xiàn)對直流電機(jī)的控制。鍵盤掃描單元通過對鍵盤的重復(fù)掃描讀取用戶的輸入數(shù)據(jù)P、I、D、V并進(jìn)行相應(yīng)的存儲,數(shù)碼管顯示單元分析當(dāng)前選擇狀態(tài)、讀取P、I、D、S、V參數(shù)并通過基本輸入輸出單元進(jìn)行相應(yīng)的顯示。與80x86芯片微機(jī)接口控制電路系統(tǒng)不同之處在于,通過設(shè)置15號按鍵,通過對驅(qū)動(dòng)芯片L298輸入端IN1、IN2的控制實(shí)現(xiàn)直流電機(jī)的快速停車與正反轉(zhuǎn)控制。具體實(shí)施過程:將電機(jī)閉環(huán)調(diào)速的PWM波產(chǎn)生模塊、PID控制量產(chǎn)生模塊、測速生成模塊、初始化模塊和鍵盤掃描和數(shù)碼管顯示實(shí)驗(yàn)中的鍵盤掃描模塊、數(shù)碼管顯示模塊分別編寫為子過程;將以上模塊進(jìn)行適當(dāng)?shù)慕M合即可完成指定功能,具體可見代碼。3.模塊介紹(1)測速反饋模塊基本原理測速反饋是通過一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器來完成的給定時(shí)中斷一定的時(shí)間(計(jì)算得來),當(dāng)定時(shí)器還未溢出時(shí),計(jì)數(shù)器通過接受motorencoderd的正弦波來產(chǎn)生與速度相關(guān)的計(jì)數(shù)量,當(dāng)定時(shí)中斷到達(dá)時(shí),將其賦給實(shí)時(shí)速度變量就行。程序代碼oidt0(void)interrupt1using0//定時(shí)T0中斷服務(wù)函數(shù){ tcnt++;//每過250usttcnt加一 if(tcnt==40)//計(jì)滿40次(1/100秒)時(shí) { tcnt=0;//重新再計(jì) sec++; if(sec==10)//定時(shí)0.1秒,在從零開始計(jì)時(shí) { sec=0; TH0=0x06;//對TH0TL0賦值 TL0=0x06; miaoshu=count;//測速給相關(guān)變量 count=0; } }}voidsdf(void)interrupt2using0//計(jì)數(shù)T1中斷服務(wù)函數(shù){ count=count+1; }(2)PID模塊基本原理該模塊與80x86系統(tǒng)中匯編程序思路類似,但溢出處理要簡單很多。程序代碼voidpid(void) //PID計(jì)算輸出量{ek=sv1-miaoshu;uk=uk_1+q0*ek+q1*ek_1+q2*ek_2;ek_2=ek_1;ek_1=ek;uk_1=uk;if(uk>400)uk=400;//限定輸出上限if(uk<5)uk=5;//限定輸出下限}(3)鍵盤掃描程序基本原理選通相應(yīng)的行,逐次讀取各列判斷是否閉合,若沒有按鍵閉合則確定按鍵,若沒有按鍵閉合則選通下一行重復(fù)上述操作,知道找到閉合按鍵為止。程序代碼voidkey(){ uchari,temp,lie,hang,shu; for(i=0;i<4;i++) { P1=choose[i];//掃描行,給定列 temp=P1; temp=temp&0xf0; if(temp!=0xf0)//通過檢測低電平來確定列 { hang=i; if(temp==0xe0) lie=1; elseif(temp==0xd0) lie=2; elseif(temp==0xb0) lie=3; elseif(temp==0x70) lie=4; break; } } shu=hang*4+lie; //數(shù)為對應(yīng)的按鍵voidkeyscan(){ uchartemp; P1=0xf0; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); //消除抖動(dòng) P1=0xf0; temp=P1; temp=temp&0xf0; if(temp!=0xf0) key(); } }相關(guān)流程圖定時(shí)中斷流程圖計(jì)時(shí)中斷流程圖鍵盤掃描模塊流程圖結(jié)束語這次微機(jī)原理課程設(shè)計(jì)學(xué)到很多很多的的東西。不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。深入細(xì)致的了解了80x86CPU的使用,以及以80x86CPU和80c51單片機(jī)為基礎(chǔ)的小型系統(tǒng)的設(shè)計(jì)。特別的,在上課的時(shí)候,老師經(jīng)常強(qiáng)調(diào)在寫一個(gè)程序的時(shí)候,一定要事先把程序原理方框圖化出來,但是我開始總覺得這樣做沒必要,很浪費(fèi)時(shí)間。但是,這次課程設(shè)計(jì)完全改變了我以前的那種錯(cuò)誤的認(rèn)識,以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計(jì)中碰到的那些需要很多代碼才能完成的任務(wù),畫程序方框圖是很有必要的。因?yàn)橥ㄟ^程序方框圖,在做設(shè)計(jì)的過程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個(gè)很清楚的思路,而且在程序測試的過程中也有利于查錯(cuò)。這次課程設(shè)計(jì)并不是很難,主要的困難來自對程序的理解。功夫不負(fù)有心人,經(jīng)過努力,我們最后對課程設(shè)計(jì)的原理有了清晰的認(rèn)識。雖然剛開始覺得不知如何下手,不過,最后我覺得我做的還是不錯(cuò)的。

這次課設(shè)卻讓我們對微機(jī)原理有了足夠的了解,讓我們知道了程序上各個(gè)模塊的用法;而且它還讓我們對自己動(dòng)手寫程序來控制系統(tǒng)的運(yùn)作有了一定的基礎(chǔ)。我們對有關(guān)微機(jī)原理與接口技術(shù)的知識將會有一個(gè)更廣泛的認(rèn)識,而且它對我們以后的學(xué)習(xí)也會有幫助的。

總之,這次課程設(shè)計(jì)對于我們有很大的幫助,通過課程設(shè)計(jì),我更加深入地理解了,微機(jī)原理課程上講到的各種部分的功能,同時(shí)熟悉了匯編程序的編寫過程和運(yùn)行過程,最后還提高了自己的動(dòng)手能力。感謝老師的悉心指導(dǎo)。附件1:;***************根據(jù)CHECK配置信息修改下列符號值*******************INTR_IVADDEQU003CH;INTR對應(yīng)的中斷矢量地址INTR_OCW1EQU0A1H;INTR對應(yīng)PC機(jī)內(nèi)部8259的OCW1地址INTR_OCW2EQU0A0H;INTR對應(yīng)PC機(jī)內(nèi)部8259的OCW2地址INTR_IMEQU0FBH;INTR對應(yīng)的中斷屏蔽字PCI_INTCSREQU0CC38H;PCI卡中斷控制寄存器地址IOY0EQU3000H;片選IOY0對應(yīng)的端口始地址IOY1EQU3040H;片選IOY1對應(yīng)的端口始地址IOY2EQU3080H;片選IOY2對應(yīng)的端口始地址;*****************************************************************MY8255_AEQUIOY0+00H*4;8255的A口地址MY8255_BEQUIOY0+01H*4;8255的B口地址MY8255_CEQUIOY0+02H*4;8255的C口地址MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址MYIO_AEQUIOY1+00H*4;基本輸入輸出單元A組端口地址MYIO_BEQUIOY2+00H*4;基本輸入輸出單元B組端口地址PC8254_COUNT0EQU40H;PC機(jī)內(nèi)8254定時(shí)器0端口地址PC8254_MODEEQU43H;PC機(jī)內(nèi)8254控制寄存器端口地址;堆棧段STACK1SEGMENTSTACKDW64DUP(?)TOPLABELWORDSTACK1ENDS;數(shù)據(jù)段DATASEGMENTTABLE1DB'AssumedFanSpeed:(/s)AndCurrentFanSpeed:(/s)',0AH,0DH,'$';字符串變量;TABLE2DB'CurrentFanSpeed:(/s)',0AH,0DH,'$';字符串變量TABLE3DB'','$'ENTDB0AH,0DH,'$';換行,回車CS_BAKDW?;保存INTR原中斷處理程序入口段地址的變量IP_BAKDW?;保存INTR原中斷處理程序入口偏移地址的變量IM_BAKDB?;保存INTR原中斷屏蔽字的變量CS_BAK1DW?;保存定時(shí)器0中斷處理程序入口段地址的變量IP_BAK1DW?;保存定時(shí)器0中斷處理程序入口偏移地址的變量IM_BAK1DB?;保存定時(shí)器0中斷屏蔽字的變量TSDB14H;采樣周期SPECDW45;轉(zhuǎn)速給定值CSPDDW?IBANDDW0060H;積分分離值KPPDW1060H;比例系數(shù)KIIDW0010H;積分系數(shù)KDDDW0020H;微分系數(shù)YKDW?CKDB?VADDDW?ZVDB?ZVVDB?TCDB?FPWMDB?CK_1DB?EK_1DW?AEK_1DW?BEKDW?AAAADB?VAADB?BBBDB?VBBDB?MARKDB?R0DW?R1DW?R2DW?R3DW?R4DW?R5DW?R6DW?R7DB?R8DW?;****MYDATA****DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;鍵值表,0~F對應(yīng)的7段數(shù)碼管的段位值DTABLEKDB06DH,77H,73H,30H,5EH;存放數(shù)碼管要顯示的類型號,'s':實(shí)時(shí)速度'A':設(shè)置的速度'P':參數(shù)KPP'I':參數(shù)KII'd':參數(shù)KDDSHOWTYPEDB0;存放顯示類型號,0在數(shù)碼管處顯示實(shí)時(shí)速度,1在數(shù)碼管處顯示設(shè)置速度,2在數(shù)碼管處顯示KPP參數(shù),3在數(shù)碼管處顯示KII參數(shù),4在數(shù)碼管處顯示KDD參數(shù)LEDBITDB3;數(shù)碼的列位,0,1,2,3KEYDB?;1或2,按下了1號鍵,則置1,按下了2號鍵則置2TEMP1DW00FFH;臨時(shí)變量BUFDB8DUP(?);緩沖區(qū)DATAENDS;代碼段CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AX;主程序MAIN:MOVDX,OFFSETTABLE1MOVAH,09HINT21HCALLINIT ;程序初始化;開始處理M1:MOVAL,TS;判斷采樣周期到否?SUBAL,TCJNCM1;沒到則繼續(xù)等待MOV AX,SPEC CALL DECSHOW ;輸出轉(zhuǎn)速M(fèi)OV DX,OFFSETTABLE3MOV AH,09HINT 21H ;輸出空格,調(diào)整格式MOVTC,00H;采樣周期到,將采樣周期變量清0MOVAL,ZVVMOVAH,00HMOVYK,AXCALLPID;調(diào)用PID子程序,得到控制量CKMOVAL,CK;把控制量轉(zhuǎn)化成PWM輸出SUBAL,80HJCIS0MOVAAAA,ALJMPCOUIS0:MOVAL,10H;電機(jī)的啟動(dòng)值不能低于10HMOVAAAA,ALCOU:MOVAL,7FHSUBAL,AAAAMOVBBB,ALMOVAX,YK;將反饋值YK送到屏幕顯示MOVDI,OFFSETCSPDMOV[DI],AXCALLDECSHOWMOVDL,0DH;回車MOVAH,02HINT21HCALLKEYSCANMOVAH,1INT16HJZM1EXIT:CALLDESTROY;銷毀程序,恢復(fù)現(xiàn)場,停止電機(jī)運(yùn)轉(zhuǎn)MOVAX,4C00HINT21H;鍵盤掃描子程序KEYSCANPROCNEARPUSHAXPUSHDXMOVAX,DATAMOVDS,AX BEGIN:CALLDIS;顯示刷新CALLCLEAR;清屏CALLCCSCAN;掃描按鍵JNZGETKEY1;有鍵按下則跳置GETKEY1 GETKEY1:CALLDIS;顯示刷新CALLDALLY1CALLDALLY1CALLCLEAR;清屏CALLCCSCAN;再次掃描按鍵JNZGETKEY2;有鍵按下則跳置GETKEY2JMPBEGIN;否則跳回開始繼續(xù)循環(huán)GETKEY2:MOVCH,0FEHMOVCL,00H;設(shè)置當(dāng)前檢測的是第幾列COLUM:MOVAL,CH;選取一列,將X1~X4中一個(gè)置0MOVDX,MYIO_AOUTDX,ALINAL,DX LP1:TESTAL,01H;是否為第1行JNZLP2;不是則繼續(xù)判斷MOVAL,00H;設(shè)置第1行第1列的對應(yīng)的鍵值JMPKCODE LP2:TESTAL,02H;是否為第2行JNZLP3;不是則繼續(xù)判斷MOVAL,04H;設(shè)置第2行第1列的對應(yīng)的鍵值JMPKCODE LP3:TESTAL,04H;是否為第3行JNZLP4;不是則繼續(xù)判斷MOVAL,08H;設(shè)置第3行第1列的對應(yīng)的鍵值JMPKCODE LP4:TESTAL,08H;是否為第4行JNZNEXT;不是則繼續(xù)判斷MOVAL,0CH;設(shè)置第4行第1列的對應(yīng)的鍵值 KCODE:ADDAL,CL;將第1列的值加上當(dāng)前列數(shù),確定按鍵值CALLINPUTDEAL;保存按鍵值 PUSHAXKON:CALLDIS;顯示刷新CALLCLEAR;清屏CALLCCSCAN;掃描按鍵,判斷按鍵是否彈起JNZKON;未彈起則繼續(xù)循環(huán)等待彈起POPAX NEXT:INCCL;當(dāng)前檢測的列數(shù)遞增MOVAL,CHTESTAL,08H;檢測是否掃描到第4列JZENDKEYSCAN;是則跳回到開始處 ROLAL,1;沒檢測到第4列則準(zhǔn)備檢測下一列MOVCH,ALJMPCOLUM;KERR:;JMPBEGIN ENDKEYSCAN:POPDXPOPAXRETKEYSCANENDP;按鍵處理子程序INPUTDEALPROCNEAR CMPAL,0JZINPUTZEROCMPAL,1JZINPUTONECMPAL,2JZINPUTTWOJMPENDINPUTINPUTZERO:;按小鍵盤0,執(zhí)行功能轉(zhuǎn)換MOVDI,OFFSETKEYMOVAL,0MOV[DI],ALMOVSI,OFFSETSHOWTYPEMOVAL,[SI]CMPAL,4JZISFOURADDAL,1MOV[SI],ALJMPENDINPUTISFOUR:MOVAL,0MOV[SI],ALJMPENDINPUTINPUTONE:;按小鍵盤1,根據(jù)功能鍵,增加參數(shù)的值MOVDI,OFFSETKEYMOVAL,1MOV[DI],ALCALLKDEAL;調(diào)用參數(shù)處理函數(shù)JMPENDINPUT INPUTTWO:;按小鍵盤2,根據(jù)功能芻,減少參數(shù)的值MOVDI,OFFSETKEYMOVAL,2MOV[DI],ALCALLKDEAL;調(diào)用參數(shù)處理函數(shù)JMPENDINPUTENDINPUT:RETINPUTDEALENDP;ASPD,KPP,KII,KDD參數(shù)修改子程序KDEALPROCNEARMOVSI,OFFSETSHOWTYPEMOVAL,[SI]CMPAL,1;功能1,更改速度JZDEALASPDCMPAL,2;功能2,更改KPPJZDEALKPPCMPAL,3;功能3,更改KIIJZDEALKIICMPAL,4;功能4,更改KDDJZDEALKDDJMPENDKDEAL ;修改ASPD(設(shè)置速度)DEALASPD:;根據(jù)按鍵修改SPECMOVSI,OFFSETKEYMOVAL,[SI]CMPAL,1;如果按了小鍵盤1,速度就增加1JZINCSPECCMPAL,2JZDECSPEC;如果按了小鍵盤2,速度就減少1JMPENDKDEALINCSPEC:MOVSI,OFFSETSPECMOVDX,[SI]INCDX;速度加1MOV[SI],DXJMPENDKDEALDECSPEC:MOVSI,OFFSETSPECMOVDX,[SI]DECDX;速度減1MOV[SI],DXJMPENDKDEAL ;修改KPPDEALKPP:MOVSI,OFFSETKEYMOVAL,[SI]CMPAL,1;如果按的是一號鍵,則跳轉(zhuǎn)到INCKPP處,KPP加5JZINCKPPCMPAL,2;如果按的是二號鍵,則跳轉(zhuǎn)到DECKPP處,KPP減5JZDECKPPJMPENDKDEALINCKPP:MOVSI,OFFSETKPPMOVDX,[SI]MOVAX,5HADDDX,AX;KPP加5MOV[SI],DXJMPENDKDEALDECKPP:MOVSI,OFFSETKPPMOVDX,[SI]MOVAX,5HSUBDX,AX;KPP減5MOV[SI],DXJMPENDKDEAL ;修改KIIDEALKII:MOVSI,OFFSETKEYMOVAL,[SI]CMPAL,1;如果按了1號鍵,則跳轉(zhuǎn)到INCKII標(biāo)號處,KII加1JZ

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論