版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
微機原理及接口技術課程設計報告微機原理及接口技術課程設計報告小型直流電機閉環(huán)調速系統(tǒng)PID控制器設計目錄一、課程設計的目的及意義…………1二、課程設計的題目與要求…………1三、基本原理…………11.PID算法…………12.霍爾元件測速原理………………43.轉速調節(jié)原理……………………5四、基于80x86芯片微機接口控制電路的設計……61.實現功能 ………………………62.設計思想 ………………………73.模塊介紹(附流程圖)……………7(1)電機控制模塊………………71)測速模塊…………………92)PWN波產生模塊…………103)PID計算模塊 ……………11(2)鍵盤掃描與顯示單元………141)鍵盤掃描模塊……………14五、基于80c51單片機控制電路的仿真設計………181.實現功能………………………182.設計思想………………………183.模塊介紹………………………19(1)測速反饋模塊……………19(2)PID模塊…………………19(3)鍵盤掃描模塊……………204.相關流程圖……………………21結束語 …………23附件:程序代碼一、課程設計的目的及意義通過本次課程設計要掌握80x86、8255、8251等芯片及基本輸入輸出電路的使用方法,靈活運用課本知識,加深對所學的知識理解,對所學的相關芯片的原理、內部結構、使用方法等有更加深刻的了解,學會利用課本知識聯系實際應用及編程。同時并了解綜合問題的程序設計掌握實時處理程序的編制和調試方法,掌握一般的設計步驟和流程,使我們以后設計時邏輯更加清晰。二、課程設計的題目與要求1.題目小型直流電機閉環(huán)調速系統(tǒng)PID控制器設計2.設計要求(1)設計基于80x86微機接口控制電路;(2)分別用C語言或匯編語言或VC++編程完成硬件接口功能設計;(3)程序功能要求:電機速度由按鍵分段給定或電位器連續(xù)給定,計算機屏幕和數碼管同步跟蹤顯示當前給定速度和電機實際運行速度,實現PID參數在線顯示和修改。(4)具備本地及遠程(串行方式)監(jiān)控功能。三、基本原理1.PID算法及相關內容在DDC系統(tǒng)中,用計算機取代了模擬器件,控制規(guī)律的實現是由計算機軟件來完成的。因此,系統(tǒng)中數字控制的設計,實際上是計算機算法的設計。由于計算機只能識別數字量,不能對連續(xù)的控制算式直接進行運算,故在計算機控制系統(tǒng)中,首先必須對控制規(guī)律進行離散化的算法設計。為將模擬PID控制規(guī)律按式(1.2)離散化,我們把圖1.1中、、、在第n次采樣的數據分別用、、、表示,于是式(1.1)變?yōu)椋?-(1.4)當采樣周期T很小時可以用T近似代替,可用近似代替,“積分”用“求和”近似代替,即可作如下近似(1.5)(1.6)這樣,式(1.2)便可離散化以下差分方程(1.7)上式中是偏差為零時的初值,上式中的第一項起比例控制作用,稱為比例(P)項,即(1.8)第二項起積分控制作用,稱為積分(I)項即(1.9)第三項起微分控制作用,稱為微分(D)項即(1.10)這三種作用可單獨使用(微分作用一般不單獨使用)或合并使用,常用的組合有:P控制:(1.11)PI控制:(1.12)PD控制:(1.13)PID控制:(1.14)式(1.7)的輸出量為全量輸出,它對于被控對象的執(zhí)行機構每次采樣時刻應達到的位置。因此,式(1.7)又稱為位置型PID算式。由(1.7)可看出,位置型控制算式不夠方便,這是因為要累加偏差,不僅要占用較多的存儲單元,而且不便于編寫程序,為此對式(1.7)進行改進。根據式(1.7)不難看出u(n-1)的表達式,即(1.15)將式(1.7)和式(1.15)相減,即得數字PID增量型控制算式為(1.16)從上式可得數字PID位置型控制算式為(1.17)式中:稱為比例增益;稱為積分系數;稱為微分系數[1]。數字PID位置型示意圖和數字PID增量型示意圖分別如圖所示:數字PID位置型控制示意圖數字PID增量型控制示意圖2.霍爾元件測速原理霍爾傳感器是對磁敏感的傳感元件,由磁鋼、霍耳元件等組成。測量系統(tǒng)的轉速傳感器選用SiKO的NJK-8002D的霍爾傳感器,其響應頻率為100KHz,額定電壓為5-30(V)、檢測距離為10(mm)。其在大電流磁場或磁鋼磁場的作用下,能測量高頻、工頻、直流等各種波形電流。該傳感器具有測量精度高、電壓范圍寬、功耗小、輸出功率大等優(yōu)點,廣泛應用在高速計數、測頻率、測轉速等領域。輸出電壓4~25V,直流電源要有足夠的濾波電容,測量極性為N極。安裝時將一非磁性圓盤固定在電動機的轉軸上,將磁鋼粘貼在圓盤邊緣,磁鋼采用永久磁鐵,其磁力較強,霍爾元件固定在距圓盤1-10mm處。當磁鋼與霍爾元件相對位置發(fā)生變化時,通過霍爾元件感磁面的磁場強度就會發(fā)生變化。圓盤轉動,磁鋼靠近霍爾元件,穿過霍爾元件的磁場較強,霍爾元件輸出低電平;當磁場減弱時,輸出高電平,從而使得在圓盤轉動過程中,霍爾元件輸出連續(xù)脈沖信號。這種傳感器不怕灰塵、油污,在工業(yè)現場應用廣泛?;魻柶骷怯砂雽w材料制成的一種薄片,器件的長、寬、高分別為l、b、d。若在垂直于薄片平面(沿厚度d)方向施加外磁場B,在沿l方向的兩個端面加一外電場,則有一定的電流流過。由于電子在磁場中運動,所以將受到一個洛侖磁力,其大小為:式中:f—洛侖磁力,q—載流子電荷,V—載流子運動速度,B—磁感應強度。這樣使電子的運動軌跡發(fā)生偏移,在霍爾元器件薄片的兩個側面分別產生電子積聚或電荷過剩,形成霍爾電場,霍爾元器件兩個側面間的電位差稱為霍爾電壓?;魻栯妷捍笮椋?mV)式中:—霍爾常數,d—元件厚度,B—磁感應強度,I—控制電流設,則=(mV) 為霍爾器件的靈敏系數(mV/mA/T),它表示該霍爾元件在單位磁感應強度和單位控制電流下輸出霍爾電動勢的大小。應注意,當電磁感應強度B反向時,霍爾電動勢也反向。圖2.3為霍耳元件的原理結構圖。若控制電流保持不變,則霍爾感應電壓將隨外界磁場強度而變化,根據這一原理, 可以將兩塊永久磁鋼固定在電動機轉軸上轉盤的邊沿,轉盤隨被測軸旋轉,磁鋼也將跟著同步旋轉,在轉盤附近安裝一個霍爾元件,轉盤隨軸旋轉時,霍爾元件受到磁鋼所產生的磁場影響,輸出脈沖信號。傳感器內置電路對該信號進行放大、整形,輸出良好的矩形脈沖信號,測量頻率范圍更寬,輸出信號更精確穩(wěn)定,已在工業(yè),汽車,航空等測速領域中得到廣泛的應用。其頻率和轉速成正比,測出脈沖的周期或頻率即可計算出轉速。 圖2.3霍耳元件的原理結構圖3.轉速調節(jié)原理PWM的占空比決定輸出到直流電機的平均電壓.PWM不是調節(jié)電流的.PWM的意思是脈寬調節(jié),也就是調節(jié)方波高電平和低電平的時間比,一個20%占空比波形,會有20%的高電平時間和80%的低電平時間,而一個60%占空比的波形則具有60%的高電平時間和40%的低電平時間,占空比越大,高電平時間越長,則輸出的脈沖幅度越高,即電壓越高.如果占空比為0%,那么高電平時間為0,則沒有電壓輸出.如果占空比為100%,那么輸出全部電壓.
所以通過調節(jié)占空比,可以實現調節(jié)輸出電壓的目的,而且輸出電壓可以無級連續(xù)調節(jié).在使用PWM控制的直流無刷電動機中,PWM控制有兩種方式:使用PWM信號,控制三極管的導通時間,導通的時間越長,那么做功的時間越長,電機的轉速就越高。
(2)使用PWM控制信號控制三極管導通時間,改變控制電壓高低來實現直流電機單元由DC12V、1.1W的直流電機,小磁鋼,霍爾元件及輸出電路構成。PWM示意圖如圖1-1-3所示。通過調節(jié)T1的脈沖寬度,改變T1的占空比,從而改變輸出,達到改變直流電機轉速的目的。圖1-1-3PWM示意圖利用8255的PB0產生脈沖信號作為控制量,經驅動電路驅動電機運轉?;魻枩y速元件輸出的脈沖信號記錄電機轉速構成反饋量。在參數給定的情況下,經PID運算,電機可在控制量的作用下,按PC機累加器給定的轉速運轉。通過PC的0號通道,設置為輸出1ms方波,作為采樣時鐘,PB0產生PWM脈沖計時及轉速累加,系統(tǒng)總線上INTR中斷用于測量電機轉速。四、基于80x86芯片微機接口控制電路的設計1.實現功能1)實現小型直流電機閉環(huán)PID控制調速;2)使用匯編語言完成硬件接口功能的設計;3)使用小鍵盤實現現場設置設定速度v、比例參數p、積分參數i、微分數d;4)使用4位數碼管實現現場顯示實時速度s、設定速度v、比例參數p、積分參數i、微分參數d;5)實現控制臺屏幕顯示設置速度v與實時速度s2.設計思想整個系統(tǒng)可以的劃分為兩部分,一部分是直流電機閉環(huán)PID調速單元,一部分是鍵盤掃描和數碼管顯示單元。直流電機閉環(huán)PID調速單元運用PID算法通過對P、I、D、S、V參數的運算得出PID控制量,并將PID控制量轉化為PWM通過8255單元輸出給直流電機從而實現對直流電機的控制。鍵盤掃描單元通過對鍵盤的重復掃描讀取用戶的輸入數據P、I、D、V并進行相應的存儲,數碼管顯示單元分析當前選擇狀態(tài)、讀取P、I、D、S、V參數并通過基本輸入輸出單元進行相應的顯示。具體實施過程:將電機閉環(huán)調速的PWM波產生模塊、PID控制量產生模塊、測速生成模塊、初始化模塊和鍵盤掃描和數碼管顯示實驗中的鍵盤掃描模塊、數碼管顯示模塊分別編寫為子過程;將以上模塊進行適當的組合即可完成指定功能,具體可見代碼。3.模塊介紹(1)電機控制模塊這是一個主要的模塊,完成PID反饋控制調速小型直流電機。用8255單元來產生正弦波控制直流電機。通過控制高電平的時間就可以控制電機轉速了。其中驅動電路由達林頓管組成。測速元件是霍爾傳感器,具體的測度原理見《先行知識》,模塊原理圖如下:電機控制模塊原理圖利用實驗平臺上8255的PB0產生脈沖信號作為控制量,經驅動電路驅動電機運轉?;魻枩y速元件輸出的脈沖信號記錄電機轉速構成反饋量。在參數給定情況下,經PID運算,電機可在控制量作用下,按給定轉速運轉。實驗利用PC機定時器0號通道,設置為輸出1ms方波,作為采樣時鐘,PB0產生PWM脈沖計時及轉速累加。系統(tǒng)總線上INTR中斷用于測量電機轉速。程序流程如圖所示:測速中斷流程圖定時采樣中斷流程圖直流電機閉環(huán)調速流程圖1)測速模塊基本原理霍爾傳感器產生一系列反應電機轉速的矩形波,矩形波是中斷定時器的中斷控制信號。通過中斷頻率就可以知道電機的速度了。程序代碼MYISRPROCNEARPUSHAXPUSHCXPUSHDXMOVAX,DATAMOVDS,AXMOVAL,MARKCMPAL,01HJZIN1MOVMARK,01HJMPIN2IN1:MOVMARK,00H ;計算轉速VV:MOVDX,0000HMOVAX,03E8HMOVCX,VADDCMPCX,0000HJZMM1DIVCXMM:MOVZV,ALMOVVADD,0000HMM1:MOVAL,ZVMOVZVV,ALIN2:MOVDX,PCI_INTCSR;清PCI卡控制寄存器標志位SUBDX,19HINAL,DXMOVDX,PCI_INTCSRADDDX,2MOVAX,003FHOUTDX,AXMOVDX,INTR_OCW2;向PC機內部8259發(fā)送中斷結束命令MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPDXPOPCXPOPAXIRETMYISRENDP2)PWM波產生模塊基本原理PWM波的輸出高電平的時間點一個周期的比例越大,則輸出的平均電壓就越大,通過速度反饋及PID計算,然后輸出相應占空比的PWM波,占空比越大,則電機兩端獲得的電壓也越大,這里PWM波的信號是通過8255芯的PB0端輸出到驅動電路的A端口的程序代碼KJPROCNEARPUSHAXCMPFPWM,01H;PWM為1,產生PWM的高電平JNZTEST2CMPVAA,00HJNZANOT0MOVFPWM,02HMOVAL,BBBCLCRCRAL,01HMOVVBB,ALJMPTEST2ANOT0:DECVAAMOVAL,01H;PB0=1電機轉動MOVDX,MY8255_BOUTDX,ALTEST2:CMPFPWM,02H;PWM為2,產生PWM的低電平JNZOUTTCMPVBB,00HJNZBNOT0MOVFPWM,01HMOVAL,AAAACLCRCRAL,01HMOVVAA,ALJMPOUTTBNOT0:DECVBBMOVAL,00H;PB0=0電機停止MOVDX,MY8255_BOUTDX,ALOUTT:POPAXRETKJENDP3)PID計算模塊基本原理PID計算模塊就是通過測速反饋得來的實時速度反應量YK來計算相關的比例項、積分項、微分項。最后得到控制量CK,送給PWM模塊,用于產生控制波。PIDPROCNEARMOVAX,SPECSUBAX,YK;求偏差EKMOVR0,AXMOVR1,AXSUBAX,EK_1MOVR2,AXSUBAX,AEK_1;求BEKMOVBEK,AXMOVR8,AXMOVAX,R1;求偏差變化量AEKMOVEK_1,AXMOVAX,R2MOVAEK_1,AXTESTR1,8000HJZEK1;若偏差EK為正數,則不需要求補碼NEGR1;若偏差EK為負數,則求偏差EK的補碼EK1:MOVAX,R1;判斷偏差EK是否在積分分離值的范圍內SUBAX,IBANDJCII;在積分分離值范圍內,則跳轉到II,計算積分項MOVR3,00H;若不在積分分離值范圍內,則將積分項清0JMPDDD;計算微分項II:MOVAL,TS;計算積分項,結果放在R3變量中(R3=EK*TS/KII)MOVAH,00H;其中TS和KII均為正數,所以R3的正負由EK決定MOVCX,R1MULCXMOVCX,KIIDIVCXMOVR3,AXTESTR0,8000H;判斷積分項的正負JZDDD;為正數,則跳轉去計算微分項NEGR3;為負數,則將積分項的結果求補碼DDD:TESTBEK,8000H;判斷BEK的正負JZDDD1;為正數,則BEK不變NEGBEK;為負數,則求BEK的補碼DDD1:MOVAX,BEK;計算微分項(R4=KDD*BEK/8TS)MOVCX,KDDMULCXPUSHAXPUSHDXMOVAL,TSMOVAH,00H;將微分項縮小8倍,防止溢出MOVCX,0008HMULCXMOVCX,AXPOPDXPOPAXDIVCXMOVR4,AXTESTR8,8000H;判斷微分項的正負JZDD1;為正數,則結果不需要求補碼NEGR4;為負數,則微分項結果R4求補碼DD1:MOVAX,R3;積分項和微分項相加,結果放在R5變量中ADDAX,R4MOVR5,AXJOL9;判斷溢出L2:MOVAX,R5ADDAX,R2MOVR6,AX;R6=R5+R2=積分項+微分項+AEKJOL3L5:MOVAX,R6;計算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;若為負溢出,則賦給賦極值80HJMPL18L9:TESTR3,8000HJNZL1MOVR5,7FFFH;若為正溢出,則賦給正極值7FFFHJMPL2L1:MOVR5,8000H;若為負溢出,則賦給負極值8000HJMPL2L3:TESTR2,8000HJNZL4MOVR6,7FFFHJMPL5L4:MOVR6,8000HJMPL5RETPIDENDP2.鍵盤掃描與顯示單元鍵盤及數碼管顯示單元通過基本輸入輸出單元與80x86CPU總線連接,選通信號CS_A、CS_B分別與IOY1、IOY2連接,地址分別為3040H、3080H。通過OA0-OA3與X1-X3相連選通指定行,IA0-IA3與Y1-Y3連接讀取當前閉合列,從而確定當前閉合按鍵。A-G、DP與0B0-OB7連接,根據按鍵使數碼管選通顯示相應的數據。鍵盤掃描與顯示原理圖如下圖所示:鍵盤掃描與顯示原理圖鍵盤掃描模塊基本原理鍵盤掃描模塊,實現了判斷是否有按鍵,并且如果有按鍵獲取按鍵碼的功能,4×4鍵盤的編碼,從左到右,從上到下,依次編碼為0~F,如果有按鍵,則轉入到按鍵處理子程序模塊執(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;設置當前檢測的是第幾列COLUM:MOVAL,CH;選取一列,將X1~X4中一個置0MOVDX,MYIO_AOUTDX,ALINAL,DX LP1:TESTAL,01H;是否為第1行JNZLP2;不是則繼續(xù)判斷MOVAL,00H;設置第1行第1列的對應的鍵值JMPKCODE LP2:TESTAL,02H;是否為第2行JNZLP3;不是則繼續(xù)判斷MOVAL,04H;設置第2行第1列的對應的鍵值JMPKCODE LP3:TESTAL,04H;是否為第3行JNZLP4;不是則繼續(xù)判斷MOVAL,08H;設置第3行第1列的對應的鍵值JMPKCODE LP4:TESTAL,08H;是否為第4行JNZNEXT;不是則繼續(xù)判斷MOVAL,0CH;設置第4行第1列的對應的鍵值 KCODE:ADDAL,CL;將第1列的值加上當前列數,確定按鍵值 ; CALLCALLINPUTDEAL;保存按鍵值,進入相應的按鍵處理程序 PUSHAXKON:CALLDIS;顯示刷新CALLCLEAR;清屏CALLCCSCAN;掃描按鍵,判斷按鍵是否彈起JNZKON;未彈起則繼續(xù)循環(huán)等待彈起POPAX NEXT:INCCL;當前檢測的列數遞增MOVAL,CHTESTAL,08H;檢測是否掃描到第4列JZKERR;是則跳回到開始處 ROLAL,1;沒檢測到第4列則準備檢測下一列MOVCH,ALJMPCOLUMKERR:;JMPBEGIN ENDKEYSCAN:POPDXPOPAXRETKEYSCANENDP鍵盤掃描程序流程圖五、基于80c51單片機控制電路的仿真設計1.實現功能基本功能1)用仿真基于80c51實現小型直流電機閉環(huán)PID控制調速;2)使用C語言完成硬件接口功能的設計;3)使用小鍵盤實現現場設置設定速度v、比例參數p、積分參數i、微分數d;4)使用4位數碼管實現現場顯示實時速度s、設定速度v、比例參數p、積分參數i、微分參數d;5)實現控制臺屏幕顯示設置速度v與實時速度s。附加功能1)通過按鍵實現直流電機的正反轉控制;2)通過按鍵實現直流電機的快速停車。2.設計思想與80x86芯片微機接口控制電路系統(tǒng)類似,整個系統(tǒng)可以的劃分為兩部分,一部分是直流電機閉環(huán)PID調速單元,一部分是鍵盤掃描和數碼管顯示單元。直流電機閉環(huán)PID調速單元運用PID算法通過對P、I、D、S、V參數的運算得出PID控制量,并將PID控制量轉化為PWM通過8255單元輸出給直流電機從而實現對直流電機的控制。鍵盤掃描單元通過對鍵盤的重復掃描讀取用戶的輸入數據P、I、D、V并進行相應的存儲,數碼管顯示單元分析當前選擇狀態(tài)、讀取P、I、D、S、V參數并通過基本輸入輸出單元進行相應的顯示。與80x86芯片微機接口控制電路系統(tǒng)不同之處在于,通過設置15號按鍵,通過對驅動芯片L298輸入端IN1、IN2的控制實現直流電機的快速停車與正反轉控制。具體實施過程:將電機閉環(huán)調速的PWM波產生模塊、PID控制量產生模塊、測速生成模塊、初始化模塊和鍵盤掃描和數碼管顯示實驗中的鍵盤掃描模塊、數碼管顯示模塊分別編寫為子過程;將以上模塊進行適當的組合即可完成指定功能,具體可見代碼。3.模塊介紹(1)測速反饋模塊基本原理測速反饋是通過一個定時器和一個計數器來完成的給定時中斷一定的時間(計算得來),當定時器還未溢出時,計數器通過接受motorencoderd的正弦波來產生與速度相關的計數量,當定時中斷到達時,將其賦給實時速度變量就行。程序代碼oidt0(void)interrupt1using0//定時T0中斷服務函數{ tcnt++;//每過250usttcnt加一 if(tcnt==40)//計滿40次(1/100秒)時 { tcnt=0;//重新再計 sec++; if(sec==10)//定時0.1秒,在從零開始計時 { sec=0; TH0=0x06;//對TH0TL0賦值 TL0=0x06; miaoshu=count;//測速給相關變量 count=0; } }}voidsdf(void)interrupt2using0//計數T1中斷服務函數{ count=count+1; }(2)PID模塊基本原理該模塊與80x86系統(tǒng)中匯編程序思路類似,但溢出處理要簡單很多。程序代碼voidpid(void) //PID計算輸出量{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)鍵盤掃描程序基本原理選通相應的行,逐次讀取各列判斷是否閉合,若沒有按鍵閉合則確定按鍵,若沒有按鍵閉合則選通下一行重復上述操作,知道找到閉合按鍵為止。程序代碼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; //數為對應的按鍵voidkeyscan(){ uchartemp; P1=0xf0; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); //消除抖動 P1=0xf0; temp=P1; temp=temp&0xf0; if(temp!=0xf0) key(); } }相關流程圖定時中斷流程圖計時中斷流程圖鍵盤掃描模塊流程圖結束語這次微機原理課程設計學到很多很多的的東西。不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。深入細致的了解了80x86CPU的使用,以及以80x86CPU和80c51單片機為基礎的小型系統(tǒng)的設計。特別的,在上課的時候,老師經常強調在寫一個程序的時候,一定要事先把程序原理方框圖化出來,但是我開始總覺得這樣做沒必要,很浪費時間。但是,這次課程設計完全改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎的,但是在課程設計中碰到的那些需要很多代碼才能完成的任務,畫程序方框圖是很有必要的。因為通過程序方框圖,在做設計的過程中,我們每一步要做什么,每一步要完成什么任務都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。這次課程設計并不是很難,主要的困難來自對程序的理解。功夫不負有心人,經過努力,我們最后對課程設計的原理有了清晰的認識。雖然剛開始覺得不知如何下手,不過,最后我覺得我做的還是不錯的。
這次課設卻讓我們對微機原理有了足夠的了解,讓我們知道了程序上各個模塊的用法;而且它還讓我們對自己動手寫程序來控制系統(tǒng)的運作有了一定的基礎。我們對有關微機原理與接口技術的知識將會有一個更廣泛的認識,而且它對我們以后的學習也會有幫助的。
總之,這次課程設計對于我們有很大的幫助,通過課程設計,我更加深入地理解了,微機原理課程上講到的各種部分的功能,同時熟悉了匯編程序的編寫過程和運行過程,最后還提高了自己的動手能力。感謝老師的悉心指導。附件1:;***************根據CHECK配置信息修改下列符號值*******************INTR_IVADDEQU003CH;INTR對應的中斷矢量地址INTR_OCW1EQU0A1H;INTR對應PC機內部8259的OCW1地址INTR_OCW2EQU0A0H;INTR對應PC機內部8259的OCW2地址INTR_IMEQU0FBH;INTR對應的中斷屏蔽字PCI_INTCSREQU0CC38H;PCI卡中斷控制寄存器地址IOY0EQU3000H;片選IOY0對應的端口始地址IOY1EQU3040H;片選IOY1對應的端口始地址IOY2EQU3080H;片選IOY2對應的端口始地址;*****************************************************************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機內8254定時器0端口地址PC8254_MODEEQU43H;PC機內8254控制寄存器端口地址;堆棧段STACK1SEGMENTSTACKDW64DUP(?)TOPLABELWORDSTACK1ENDS;數據段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?;保存定時器0中斷處理程序入口段地址的變量IP_BAK1DW?;保存定時器0中斷處理程序入口偏移地址的變量IM_BAK1DB?;保存定時器0中斷屏蔽字的變量TSDB14H;采樣周期SPECDW45;轉速給定值CSPDDW?IBANDDW0060H;積分分離值KPPDW1060H;比例系數KIIDW0010H;積分系數KDDDW0020H;微分系數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對應的7段數碼管的段位值DTABLEKDB06DH,77H,73H,30H,5EH;存放數碼管要顯示的類型號,'s':實時速度'A':設置的速度'P':參數KPP'I':參數KII'd':參數KDDSHOWTYPEDB0;存放顯示類型號,0在數碼管處顯示實時速度,1在數碼管處顯示設置速度,2在數碼管處顯示KPP參數,3在數碼管處顯示KII參數,4在數碼管處顯示KDD參數LEDBITDB3;數碼的列位,0,1,2,3KEYDB?;1或2,按下了1號鍵,則置1,按下了2號鍵則置2TEMP1DW00FFH;臨時變量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 ;輸出轉速MOV DX,OFFSETTABLE3MOV AH,09HINT 21H ;輸出空格,調整格式MOVTC,00H;采樣周期到,將采樣周期變量清0MOVAL,ZVVMOVAH,00HMOVYK,AXCALLPID;調用PID子程序,得到控制量CKMOVAL,CK;把控制量轉化成PWM輸出SUBAL,80HJCIS0MOVAAAA,ALJMPCOUIS0:MOVAL,10H;電機的啟動值不能低于10HMOVAAAA,ALCOU:MOVAL,7FHSUBAL,AAAAMOVBBB,ALMOVAX,YK;將反饋值YK送到屏幕顯示MOVDI,OFFSETCSPDMOV[DI],AXCALLDECSHOWMOVDL,0DH;回車MOVAH,02HINT21HCALLKEYSCANMOVAH,1INT16HJZM1EXIT:CALLDESTROY;銷毀程序,恢復現場,停止電機運轉MOVAX,4C00HINT21H;鍵盤掃描子程序KEYSCANPROCNEARPUSHAXPUSHDXMOVAX,DATAMOVDS,AX BEGIN:CALLDIS;顯示刷新CALLCLEAR;清屏CALLCCSCAN;掃描按鍵JNZGETKEY1;有鍵按下則跳置GETKEY1 GETKEY1:CALLDIS;顯示刷新CALLDALLY1CALLDALLY1CALLCLEAR;清屏CALLCCSCAN;再次掃描按鍵JNZGETKEY2;有鍵按下則跳置GETKEY2JMPBEGIN;否則跳回開始繼續(xù)循環(huán)GETKEY2:MOVCH,0FEHMOVCL,00H;設置當前檢測的是第幾列COLUM:MOVAL,CH;選取一列,將X1~X4中一個置0MOVDX,MYIO_AOUTDX,ALINAL,DX LP1:TESTAL,01H;是否為第1行JNZLP2;不是則繼續(xù)判斷MOVAL,00H;設置第1行第1列的對應的鍵值JMPKCODE LP2:TESTAL,02H;是否為第2行JNZLP3;不是則繼續(xù)判斷MOVAL,04H;設置第2行第1列的對應的鍵值JMPKCODE LP3:TESTAL,04H;是否為第3行JNZLP4;不是則繼續(xù)判斷MOVAL,08H;設置第3行第1列的對應的鍵值JMPKCODE LP4:TESTAL,08H;是否為第4行JNZNEXT;不是則繼續(xù)判斷MOVAL,0CH;設置第4行第1列的對應的鍵值 KCODE:ADDAL,CL;將第1列的值加上當前列數,確定按鍵值CALLINPUTDEAL;保存按鍵值 PUSHAXKON:CALLDIS;顯示刷新CALLCLEAR;清屏CALLCCSCAN;掃描按鍵,判斷按鍵是否彈起JNZKON;未彈起則繼續(xù)循環(huán)等待彈起POPAX NEXT:INCCL;當前檢測的列數遞增MOVAL,CHTESTAL,08H;檢測是否掃描到第4列JZENDKEYSCAN;是則跳回到開始處 ROLAL,1;沒檢測到第4列則準備檢測下一列MOVCH,ALJMPCOLUM;KERR:;JMPBEGIN ENDKEYSCAN:POPDXPOPAXRETKEYSCANENDP;按鍵處理子程序INPUTDEALPROCNEAR CMPAL,0JZINPUTZEROCMPAL,1JZINPUTONECMPAL,2JZINPUTTWOJMPENDINPUTINPUTZERO:;按小鍵盤0,執(zhí)行功能轉換MOVDI,OFFSETKEYMOVAL,0MOV[DI],ALMOVSI,OFFSETSHOWTYPEMOVAL,[SI]CMPAL,4JZISFOURADDAL,1MOV[SI],ALJMPENDINPUTISFOUR:MOVAL,0MOV[SI],ALJMPENDINPUTINPUTONE:;按小鍵盤1,根據功能鍵,增加參數的值MOVDI,OFFSETKEYMOVAL,1MOV[DI],ALCALLKDEAL;調用參數處理函數JMPENDINPUT INPUTTWO:;按小鍵盤2,根據功能芻,減少參數的值MOVDI,OFFSETKEYMOVAL,2MOV[DI],ALCALLKDEAL;調用參數處理函數JMPENDINPUTENDINPUT:RETINPUTDEALENDP;ASPD,KPP,KII,KDD參數修改子程序KDEALPROCNEARMOVSI,OFFSETSHOWTYPEMOVAL,[SI]CMPAL,1;功能1,更改速度JZDEALASPDCMPAL,2;功能2,更改KPPJZDEALKPPCMPAL,3;功能3,更改KIIJZDEALKIICMPAL,4;功能4,更改KDDJZDEALKDDJMPENDKDEAL ;修改ASPD(設置速度)DEALASPD:;根據按鍵修改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;如果按的是一號鍵,則跳轉到INCKPP處,KPP加5JZINCKPPCMPAL,2;如果按的是二號鍵,則跳轉到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號鍵,則跳轉到INCKII標號處,KII加1JZ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年-江蘇省安全員A證考試題庫
- 2025年四川省建筑安全員《B證》考試題庫及答案
- 機械設計教學課件-樣章
- 《眼保健操》課件
- 《急診影像病例》課件
- 湯姆索亞歷險記教學課件
- 【課件】體育產業(yè)發(fā)展的概述與日照市體育產業(yè)發(fā)展的現狀及建議
- 《IPTV播控平臺綜述》課件
- 單位人力資源管理制度佳作合集十篇
- 單位人力資源管理制度合并合集十篇
- 小學語文作業(yè)設計及設計意圖
- 《百分數的認識》 (教學設計)2024-2025學年六年級上冊數學人教版
- 體育場拱架施工吊裝和拆撐卸載驗算方案
- 翻譯技術實踐智慧樹知到期末考試答案章節(jié)答案2024年山東師范大學
- GJB9001C:2017風險管理計劃
- HG/T 6312-2024 化工園區(qū)競爭力評價導則(正式版)
- 2024時事政治試題庫學生專用
- RFJ 006-2021 RFP型人防過濾吸收器制造與驗收規(guī)范(暫行)
- 電子行業(yè)認證行業(yè)深度研究報告
- 2022年10月自考00318公共政策試題及答案含解析
- 人力資源管理程序(含流程圖)
評論
0/150
提交評論