版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理課程設(shè)計(jì)報(bào)告 小型直流電機(jī)閉環(huán)調(diào)速系統(tǒng) PID 控制設(shè)計(jì)(限 2-3人設(shè)計(jì)題目:_學(xué) 院:_專業(yè)班級(jí):姓 名:學(xué) 號(hào):指導(dǎo)老師:目錄一、 實(shí)驗(yàn)設(shè)計(jì)要求 -2二、控制系統(tǒng)總體設(shè)計(jì)方案 -3三、系統(tǒng)框圖 -4四、程序流程圖 - -4-5五、 重要單元的介紹 -5-9六、硬件連接圖 - -9-10七、系統(tǒng)連接圖 -11八、調(diào)試及結(jié)果 - -11-12九、程序代碼 - -13-31十、心得體會(huì) -32 十一、參考文獻(xiàn) -33一、設(shè)計(jì)要求:1、設(shè)計(jì)基于 80x86微機(jī)接口控制電路;2、分別用 C 語(yǔ)言和匯編語(yǔ)言編程完成硬件接口功能設(shè)計(jì);3、程序功能要求:電機(jī)速度由按鍵分段給定或電位器連續(xù)給定,計(jì)
2、算 機(jī)屏幕和數(shù)碼管同步跟蹤顯示當(dāng)前給定速度和電機(jī)實(shí)際運(yùn)行速度, 實(shí)現(xiàn) PID 參數(shù)在線顯示和修改。二、 控制系統(tǒng)總體設(shè)計(jì)方案本設(shè)計(jì)是利用 PC 微機(jī)一臺(tái)、 TD-PIT 實(shí)驗(yàn)系統(tǒng)一套實(shí)現(xiàn)對(duì)直流電機(jī)轉(zhuǎn)速調(diào)節(jié) 的應(yīng)用。編寫程序,用 ADC0809完成模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換。輸入模擬信號(hào)有 A/D轉(zhuǎn)換單元可調(diào)電位器提供的 05V, 將其轉(zhuǎn)換后的數(shù)字信號(hào)讀入累加器, 做為 控制電機(jī)的給定轉(zhuǎn)速。用 8255的 B 口作為直流電機(jī)的控制信號(hào)輸出口,通過(guò)對(duì) 電機(jī)轉(zhuǎn)速反饋量的運(yùn)算, 調(diào)節(jié)控制信號(hào), 達(dá)到控制電機(jī)勻速轉(zhuǎn)動(dòng)的的作用。 并將 累加器中給定的轉(zhuǎn)速和當(dāng)前測(cè)量轉(zhuǎn)速顯示在屏幕上。 再通過(guò) LED 燈顯示出
3、轉(zhuǎn)速的 大小變化。整個(gè)程序設(shè)計(jì)過(guò)程分為基本功能實(shí)現(xiàn)階段, 檢測(cè)程序階段, 功能擴(kuò)展和功能 驗(yàn)證及程序補(bǔ)充四個(gè)實(shí)驗(yàn)階段。基本功能實(shí)驗(yàn)階段,在“輕松編程”軟件中完成,主要完成各個(gè)子程序的調(diào) 試;在檢測(cè)程序階段,在“輕松編程”軟件中通過(guò)編譯和鏈接,并反復(fù)檢查沒(méi)有 邏輯錯(cuò)誤; 調(diào)試結(jié)果正確以后在進(jìn)行相應(yīng)的連接, 將各個(gè)子模塊聯(lián)系起來(lái)功能擴(kuò) 展及程序的補(bǔ)充, 在實(shí)驗(yàn)室里完成, 使用唐都硬件實(shí)驗(yàn)箱, 用 TDPIT 來(lái)編程實(shí)現(xiàn); 功能驗(yàn)證階段 , 在實(shí)驗(yàn)室里完成。由于程序中要用到中斷,但是在 windows 下不 能使用中斷,所以必須在 dos 環(huán)境下才能進(jìn)行程序的調(diào)試。三、系統(tǒng)框圖 四、程序流程圖 主程
4、序流程圖 中斷服務(wù)子程序流程圖五、 重要單元的介紹5.1 8255工作原理:本設(shè)計(jì)利用 8255的 A 口作為輸出口,控制 8個(gè)單色 LED 燈,來(lái)實(shí)現(xiàn)電機(jī)轉(zhuǎn) 速的大小調(diào)節(jié)。并行接口是以數(shù)據(jù)的字節(jié)為單位與 I/O設(shè)備或被控制對(duì)象之間傳遞信息, CPU 和接口之間的數(shù)據(jù)傳遞總是并行的,即可以同時(shí)進(jìn)行傳遞 8位, 16位, 32位等。 8255可編程外圍接口芯片是具有 A 、 B 、 C 三個(gè)并行接口, +5V單電源供電, 能在以下三種方式下工作:方式 0基本輸入 /出方式、方式 1選通輸入 /出方 式、方式 2雙向選通工作方式。其控制字、內(nèi)部結(jié)構(gòu)圖和引腳圖見(jiàn)圖 1-1-1、 圖 1-1-2.圖
5、1-1-1 8255控制字 圖 1-1-2 8255內(nèi)部結(jié)構(gòu)圖和引腳圖5.2 轉(zhuǎn)速調(diào)節(jié)原理:PWM的占空比決定輸出到直流電機(jī)的平均電壓 .PWM 不是調(diào)節(jié)電流的 .PWM 的意思是脈寬調(diào)節(jié) , 也就是調(diào)節(jié)方波高電平和低 電平的時(shí)間比 , 一個(gè) 20%占空比波形 , 會(huì)有 20%的高電平時(shí)間和 80%的低電平時(shí)間, 而一個(gè) 60%占空比的波形則具有 60%的高電平時(shí)間和 40%的低電平時(shí)間 , 占空比越 大 , 高電平時(shí)間越長(zhǎng) , 則輸出的脈沖幅度越高 , 即電壓越高 . 如果占空比為 0%,那 么高電平時(shí)間為 0, 則沒(méi)有電壓輸出 . 如果占空比為 100%,那么輸出全部電壓 . 所以通過(guò)調(diào)節(jié)
6、占空比 , 可以實(shí)現(xiàn)調(diào)節(jié)輸出電壓的目的 , 而且輸出電壓可以無(wú)級(jí)連 續(xù)調(diào)節(jié) .在使用 PWM 控制的直流無(wú)刷電動(dòng)機(jī)中, PWM 控制有兩種方式:(1使用 PWM 信號(hào),控制三極管的導(dǎo)通時(shí)間,導(dǎo)通的時(shí)間越長(zhǎng),那么做功 的時(shí)間越長(zhǎng),電機(jī)的轉(zhuǎn)速就越高(2使用 PWM 控制信號(hào)控制三極管導(dǎo)通時(shí)間,改變控制電壓高低來(lái)實(shí)現(xiàn) 直流電機(jī)單元由 DC12V 、 1.1W 的直流電機(jī), 小磁鋼, 霍爾元件及輸出電路構(gòu) 成。 PWM 示意圖如圖 1-1-3所示。通過(guò)調(diào)節(jié) T1的脈沖寬度,改變 T1的占空比, 從而改變輸出,達(dá)到改變直流電機(jī)轉(zhuǎn)速的目的 圖 1-1-3 PWM示意圖利用 8255的 PB 0產(chǎn)生脈沖信號(hào)
7、作為控制量,經(jīng)驅(qū)動(dòng)電路驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)。霍 爾測(cè)速元件輸出的脈沖信號(hào)記錄電機(jī)轉(zhuǎn)速構(gòu)成反饋量。 在參數(shù)給定的情況下, 經(jīng) PID 運(yùn)算,電機(jī)可在控制量的作用下,按 PC 機(jī)累加器給定的轉(zhuǎn)速運(yùn)轉(zhuǎn)。通過(guò) PC 的 0號(hào)通道,設(shè)置為輸出 1ms 方波,作為采樣時(shí)鐘, PB 0產(chǎn)生 PWM 脈沖計(jì)時(shí)及轉(zhuǎn) 速累加,系統(tǒng)總線上 INTR 中斷用于測(cè)量電機(jī)轉(zhuǎn)速。5.3 AD轉(zhuǎn)換原理 圖 1-1-4 ADC0809外部管腳圖本設(shè)計(jì)用 ADC0809完成模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換。輸入模擬信號(hào)有 A/D轉(zhuǎn)換單元可調(diào)電位器提供的 05V,將其轉(zhuǎn)換后的數(shù)字信號(hào)讀入累加器,做為控 制電機(jī)的給定轉(zhuǎn)速。_5.4 LED燈的工作原
8、理:LED 燈顯示器有 8個(gè)單色發(fā)光二極管構(gòu)成,在共陽(yáng)極接法中,各二極管的 陽(yáng)極被連在一起,使用的時(shí)候要將它與 +5V項(xiàng)鏈,而把各段的陰極連到器件的 相 應(yīng) 引 腳 上 。 當(dāng) 某 的 LED 燈 的 引 腳 為 低 電 平 的 時(shí) 候 , 該 燈 工 作 。 圖 1-1-5 LED燈管腳圖通過(guò) 8255的 A 口信號(hào)作為輸入信號(hào),控制各燈的工作狀態(tài)。來(lái)顯示出此時(shí)電機(jī)轉(zhuǎn)速的大小變化六、硬件連接圖6.1 單元接線圖: 圖 1-1-5 AD轉(zhuǎn)換接線圖ADC轉(zhuǎn)換單元中, D0-D7分別與系統(tǒng)總線的 XD0-XD7對(duì)應(yīng)相連, WRRD 、 CLK 分別與系統(tǒng)總 線 XIOW 、 XIOR 、 CLK
9、相 連 , 片 選 引 腳 與 系 統(tǒng) IOY0相連, A 、 B 、 C 接 地, IN0接 +5V直流電壓源,1-1-6所示。 圖 1-1-6 直流電機(jī)閉環(huán)接線圖直流電機(jī)閉環(huán)接線中, 8255芯片的 A 口作為輸出信號(hào)與 LED 燈項(xiàng)連, 即 PA0-PA7與系統(tǒng)總線的 XD0-XD7相連 , 同時(shí)與 ADC0809的 D0-D7相連; B 口的 PB0作為直 流電機(jī)控制信號(hào)輸出口, 經(jīng)驅(qū)動(dòng)電路 A 口, 與直流電機(jī)相連驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn); 片選 信號(hào)線接系統(tǒng)的 IOY1,讀寫信號(hào)線分別對(duì)應(yīng)系統(tǒng)的 XIO 、 RXIOW 相連,其中 , 系 統(tǒng)的中斷 INTR 引腳用于測(cè)量電機(jī)轉(zhuǎn)速與直流電機(jī)的
10、HR 引腳相連。 七、系統(tǒng)連線圖 八、調(diào)試及結(jié)果8.1 調(diào)試步驟:(1確認(rèn)從 PC 機(jī)引出的兩根扁平電纜已經(jīng)連接在平臺(tái)上。(2首先運(yùn)行 CHECK 程序,查看 I/O空間始地址。(3利用查出的地址編寫程序,然后編譯連接。(4參照接線圖連接電路。(5 運(yùn)行程序, 調(diào)節(jié)電位器的大小, 觀察電機(jī)的運(yùn)行情況以及顯示在屏幕上的 結(jié)果和 LED 燈的變化。9.2 結(jié)果分析:A/D實(shí)現(xiàn)模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),通過(guò)電位器調(diào)節(jié)輸入電壓(05V ,改 變輸出的數(shù)字信號(hào),進(jìn)而改變 8255的給定信號(hào)(給定轉(zhuǎn)速 ,即通過(guò)改變 PB0通道輸出方波的占空比,實(shí)現(xiàn) PWM 調(diào)速,改變脈沖的寬度。若占空比越大 , 高電平時(shí)間
11、越長(zhǎng) , 則輸出的脈沖幅度越高 , 即電壓越高 . 根據(jù) 直流電動(dòng)機(jī)的機(jī)械特性,電機(jī)轉(zhuǎn)速與電壓呈正比變化?;竟δ軐?shí)驗(yàn)階段,在“輕松編程”軟件中完成,主要完成各個(gè)子程序的調(diào) 試;在檢測(cè)程序階段,在“輕松編程”軟件中通過(guò)編譯和鏈接,并反復(fù)檢查沒(méi)有 邏輯錯(cuò)誤; 調(diào)試結(jié)果正確以后在進(jìn)行相應(yīng)的連接, 將各個(gè)子模塊聯(lián)系起來(lái), 由于 自己不具備硬件資源, 所以調(diào)試的時(shí)候只能檢查程序本身的錯(cuò)誤, 經(jīng)過(guò)調(diào)試能顯 示各個(gè)子程序的功能, 同時(shí)嵌套有延時(shí)子程序, 方便程序的調(diào)用, 而端口地址的 選擇與確定,只能在實(shí)驗(yàn)室里完成,功能擴(kuò)展及程序的補(bǔ)充,在實(shí)驗(yàn)室里完成, 使用唐都硬件實(shí)驗(yàn)箱,用 TDPIT 來(lái)編程實(shí)現(xiàn),實(shí)
12、驗(yàn)的過(guò)程中,注意端口地址,要 與硬件實(shí)驗(yàn)箱上的匹配;功能驗(yàn)證階段,實(shí)驗(yàn)發(fā)現(xiàn)已經(jīng)編好的程序仍存在問(wèn)題, 其中菜單顯示和 A/D轉(zhuǎn)換是好的,然而電機(jī)不轉(zhuǎn), LED 燈也不能正確的顯示電機(jī) 的轉(zhuǎn)速 (即相應(yīng)的速度對(duì)應(yīng)的相應(yīng)的等不能正常顯示 針對(duì)原來(lái)的程序及老師給 的要求進(jìn)行修改, 并添加了一個(gè)判斷是否有按鍵輸入的子程序通過(guò)調(diào)整不同的速 度后來(lái)實(shí)現(xiàn)任意狀態(tài)下的按鍵停止。九、程序代碼*根據(jù) CHECK 配置信息修改下列符號(hào)值 * INTR_IVADD EQU 01CCH ;INTR對(duì)應(yīng)的中斷矢量地址INTR_OCW1 EQU 0A1H ;INTR對(duì)應(yīng) PC 機(jī)內(nèi)部 8259的 OCW1地 址INTR_O
13、CW2 EQU 0A0H ;INTR對(duì)應(yīng) PC 機(jī)內(nèi)部 8259的 OCW2地 址INTR_IM EQU 0F7H ;INTR對(duì)應(yīng)的中斷屏蔽字PCI_INTCSR EQU 0EC38H ;PCI卡中斷控制寄存器地址IOY0 EQU 0C400H ;片選 IOY0對(duì)應(yīng)的端口始地址IOY1 EQU 0C440HIOY2 EQU 0C480HIOY3 EQU 0C4C0H;* MY8255_A EQU IOY0+00H*4 ;8255的 A 口地址MY8255_B EQU IOY0+01H*4 ;8255的 B 口地址MY8255_C EQU IOY0+02H*4 ;8255的 C 口地址MY825
14、5_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址PC8254_COUNT0 EQU 40H ;PC機(jī)內(nèi) 8254定時(shí)器 0端口地址 PC8254_MODE EQU 43H ;PC機(jī)內(nèi) 8254控制寄存器端口地址AD0809 EQU IOY1+00HSTACK1 SEGMENT STACKDW 64 DUP(?TOP LABEL WORDSTACK1 ENDSDATA SEGMENTTABLE1 DB 'Assumed Fan Speed:(/s','$' ;字符串變量TABLE2 DB 'Current Fan Speed:(/s&
15、#39;,'$' ;字符串變量ENT DB ' ','$' ;換行,回車 CS_BAK DW ? ;保存 INTR 原中斷處理程序入口段地址 的變量IP_BAK DW ? ;保存 INTR 原中斷處理程序入口偏移地 址的變量IM_BAK DB ? ;保存 INTR 原中斷屏蔽字的變量CS_BAK1 DW ? ;保存定時(shí)器 0中斷處理程序入口段地址 的變量IP_BAK1 DW ? ;保存定時(shí)器 0中斷處理程序入口偏移地 址的變量IM_BAK1 DB ? ;保存定時(shí)器 0中斷屏蔽字的變量DTABLE DB 3FH,06H,5BH,4FH,66H,6D
16、H,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;鍵 值表, 0F 對(duì)應(yīng)的 7段數(shù)碼管的TS DB 14H ;采樣周期SPEC DW ? ;轉(zhuǎn)速給定值IBAND DW 0060H ;積分分離值KPP DW 1060H ;比例系數(shù)KII DW 0010H ;積分系數(shù)KDD DW 0020H ;微分系數(shù)YK DW ?CK DB ?VADD DW ?ZV DB ?ZVV DB ?TC DB ?FPWM DB ?CK_1 DB ?EK_1 DW ?AEK_1 DW ?BEK DW ?AAAA DB ?VAA DB ?BBB DB ?VBB DB ?MARK DB ?
17、R0 DW ?R1 DW ?R2 DW ?R3 DW ?R4 DW ?R5 DW ?R6 DW ?R7 DB ?R8 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,3000H ;建立緩沖區(qū),存放要顯示的鍵值 MOV AL,00H ;先初始化鍵值為 0MOV SI,ALMOV SI+1,ALMOV SI+2,ALMOV SI+3,ALMOV DI,3001H; MOV DX,OFFSET TABLE1 ;顯示字符串 1; MOV AH,09H; INT 21H; MOV AX,SP
18、EC ;顯示給定值; CALL DECSHOW; MOV DX,OFFSET ENT ;回車,換行; MOV AH,09H; INT 21H; MOV DX,OFFSET TABLE2 ;顯示字符串 2; MOV AH,09H; INT 21HCLIMOV AX,0000HMOV ES,AXMOV DI,0020HMOV AX,ES:DIMOV IP_BAK1,AX ;保存定時(shí)器 0中斷處理程序入口偏移地址 MOV AX,OFFSET TIMERISRMOV ES:DI,AX ;設(shè)置實(shí)驗(yàn)定時(shí)中斷處理程序入口偏移地址 ADD DI,2MOV AX,ES:DIMOV CS_BAK1,AX ;保存定
19、時(shí)器 0中斷處理程序入口段地址 MOV AX,SEG TIMERISRMOV ES:DI,AX ;設(shè)置實(shí)驗(yàn)定時(shí)中斷處理程序入口段地址IN AL,21HMOV IM_BAK1,AL ;保存 INTR 原中斷屏蔽字AND AL,0F7HOUT 21H,AL ;打開(kāi)定時(shí)器 0中斷屏蔽位MOV DX,PCI_INTCSR ;初始化 PCI 卡中斷控制寄存器MOV AX,1F00H ;向 PCI_INTCSR中寫入 003F1F00H OUT DX,AXADD DX,2MOV AX,003FHOUT DX,AXMOV DI,INTR_IVADDMOV AX,ES:DIMOV IP_BAK,AX ;保存
20、INTR 原中斷處理程序入口偏移地址 MOV AX,OFFSET MYISRMOV ES:DI,AX ;設(shè)置當(dāng)前中斷處理程序入口偏移地址ADD DI,2MOV AX,ES:DIMOV CS_BAK,AX ;保存 INTR 原中斷處理程序入口段地址 MOV AX,SEG MYISRMOV ES:DI,AX ;設(shè)置當(dāng)前中斷處理程序入口段地址MOV DX,INTR_OCW1IN AL,DXMOV IM_BAK,AL ;保存 INTR 原中斷屏蔽字AND AL,INTR_IMOUT DX,AL ;打開(kāi) INTR 的中斷屏蔽位MOV AL,00HMOV DX,AD0809 ;啟動(dòng) A/D轉(zhuǎn)換OUT DX
21、,ALMOV VADD,0000H ;變量的初始化MOV ZV,00HMOV ZVV,00HMOV CK,00HMOV YK,0000HMOV CK_1,00HMOV EK_1,0000HMOV AEK_1,0000HMOV BEK,0000HMOV BBB,00HMOV VBB,00HMOV R0,0000HMOV R1,0000HMOV R2,0000HMOV R3,0000HMOV R4,0000HMOV R5,0000HMOV R6,0000HMOV R7,00HMOV R8,0000HMOV MARK,00HMOV FPWM,01HMOV AAAA,7FHMOV VAA,7FHMOV
22、 TC,00HMOV AL,80H ;初始化 8255MOV DX,MY8255_MODEOUT DX,ALMOV AL,00HMOV DX,MY8255_BOUT DX,ALMOV DX,PC8254_MODE ;初始化 PC 機(jī)定時(shí)器 0,定時(shí) 1ms MOV AL,36HOUT DX,ALMOV DX,PC8254_COUNT0MOV AL,8FHOUT DX,ALMOV AL,04HOUT DX,ALSTIM1: MOV AL,TS ;判斷采樣周期到否?SUB AL,TC;JNC M1 ;沒(méi)到則繼續(xù)等待; MOV DX,OFFSET TABLE1 ;顯示字符串 1; MOV AH,09
23、H; INT 21HMOV AL,00HMOV DX,AD0809 ;啟動(dòng) A/D轉(zhuǎn)換OUT DX,ALCALL DALLYMOV DX,AD0809 ;讀出轉(zhuǎn)換結(jié)果IN AL,DXMOV CL,00HCMP AL,CLJS B2MOV CL,3chCMP CL,ALJS B2JMP B3B1: MOV AL,00HJMP B3B2: MOV AL,3cHB3: MOV DI,OFFSET SPECMOV DI,ALMOV AX,DICALL DECSHOWCALL SHOW1MOV DX,OFFSET ENT ;回車,換行MOV AH,09HINT 21H; MOV DX,OFFSET TA
24、BLE2 ;顯示字符串 2; MOV AH,09H; INT 21HMOV TC,00H ;采樣周期到,將采樣周期變量清 0 MOV AL,ZVVMOV AH,00HMOV YK,AX ;得到反饋量 YKCALL PID ;調(diào)用 PID 子程序,得到控制量 CKMOV AL,CK ;把控制量轉(zhuǎn)化成 PWM 輸出SUB AL,80HJC IS0MOV AAAA,ALJMP COUIS0: MOV AL,10H ;電機(jī)的啟動(dòng)值不能低于 10H MOV AAAA,ALCOU: MOV AL,7FHSUB AL,AAAAMOV BBB,ALMOV AX,YK ;將反饋值 YK 送到屏幕顯示CALL D
25、ECSHOWMOV DL,0DH ;回車MOV AH,02HINT 21HMOV AH,1 ;判斷是否有按鍵按下INT 16HJZ M1 ;無(wú)按鍵則跳回繼續(xù)等待,有則退出EXIT: CLIMOV AL,00H ;退出時(shí)停止電機(jī)運(yùn)轉(zhuǎn)MOV DX,MY8255_BOUT DX,ALMOV DX,PC8254_MODE ;恢復(fù) PC 機(jī)定時(shí)器 0狀態(tài)MOV AL,36HOUT DX,ALMOV DX,PC8254_COUNT0MOV AL,00HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX,PCI_INTCSR ;恢復(fù) PCI 卡中斷控制寄存器MOV AX,0000HOUT
26、DX,AXMOV AX,0000H ;恢復(fù) INTR 原中斷矢量MOV ES,AXMOV DI,INTR_IVADDMOV AX,IP_BAK ;恢復(fù) INTR 原中斷處理程序入口偏移地址 MOV ES:DI,AXADD DI,2MOV AX,CS_BAK ;恢復(fù) INTR 原中斷處理程序入口段地址 MOV ES:DI,AXMOV DX,INTR_OCW1 ;恢復(fù) INTR 原中斷屏蔽寄存器的屏蔽字 MOV AL,IM_BAKOUT DX,ALMOV DI,0020HMOV AX,IP_BAK1 ;恢復(fù)定時(shí)器 0中斷處理程序入口偏移地址 MOV ES:DI,AXADD DI,2MOV AX,C
27、S_BAK1 ;恢復(fù)定時(shí)器 0中斷處理程序入口段地址 MOV ES:DI,AXMOV AL,IM_BAK1OUT 21H,AL ;恢復(fù)屏蔽字STIMOV AX,4C00HINT 21HMYISR PROC NEAR ;系統(tǒng)總線 INTR 中斷處理程序21PUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXMOV AL,MARKCMP AL,01HJZ IN1MOV MARK,01HJMP IN2IN1: MOV MARK,00H ;計(jì)算轉(zhuǎn)速VV: MOV DX,0000HMOV AX,03E8HMOV CX,VADDCMP CX,0000HJZ MM1DIV CX
28、MM: MOV ZV,ALMOV VADD,0000HMM1: MOV AL,ZVMOV ZVV,ALIN2: MOV DX,PCI_INTCSR ;清 PCI 卡控制寄存器標(biāo)志位SUB DX,19HIN AL,DXMOV DX,PCI_INTCSRADD DX,2MOV AX,003FHOUT DX,AXMOV DX,INTR_OCW2 ;向 PC 機(jī)內(nèi)部 8259發(fā)送中斷結(jié)束命令 MOV AL,20H22OUT DX,ALMOV AL,20HOUT 20H,ALPOP DXPOP CXPOP AXIRETMYISR ENDPTIMERISR PROC NEAR ;PC機(jī)定時(shí)器 0中斷處理程
29、序 PUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXINC TC ;采樣周期變量加 1CALL KJCLCCMP MARK,01HJC TT1INC VADDCMP VADD,0700H ;轉(zhuǎn)速值溢出,賦極值JC TT1MOV VADD,0700HMOV MARK,00HTT1: MOV AL,20H ;中斷結(jié)束,發(fā) EOI 命令 OUT 20H,ALPOP DXPOP CXPOP AX23IRETTIMERISR ENDPKJ PROC NEAR ;PWM子程序PUSH AXCMP FPWM,01H ;PWM為 1,產(chǎn)生 PWM 的高電平 JNZ TEST2
30、CMP VAA,00HJNZ ANOT0MOV FPWM,02HMOV AL,BBBCLCRCR AL,01HMOV VBB,ALJMP TEST2ANOT0: DEC VAAMOV AL, 01H ;PB0=1 電機(jī)轉(zhuǎn)動(dòng)MOV DX, MY8255_BOUT DX,ALTEST2: CMP FPWM,02H ;PWM為 2,產(chǎn)生 PWM 的低電平 JNZ OUTTCMP VBB,00HJNZ BNOT0MOV FPWM,01HMOV AL,AAAACLCRCR AL,01HMOV VAA,ALJMP OUTT24BNOT0: DEC VBBMOV AL,00H ;PB0=0 電機(jī)停止MOV
31、DX,MY8255_BOUT DX,ALOUTT: POP AXRETKJ ENDPPID: MOV AX,SPEC ;PID子程序SUB AX,YK ;求偏差 EKMOV R0,AXMOV R1,AXSUB AX,EK_1MOV R2,AXSUB AX,AEK_1 ;求 BEKMOV BEK,AXMOV R8,AXMOV AX,R1 ;求偏差變化量 AEKMOV EK_1,AXMOV AX,R2MOV AEK_1,AXTEST R1,8000HJZ EK1 ;若偏差 EK 為正數(shù),則不需要求補(bǔ)碼 NEG R1 ;若偏差 EK 為負(fù)數(shù),則求偏差 EK 的補(bǔ)碼 EK1: MOV AX,R1 ;判
32、斷偏差 EK 是否在積分分離值的范圍內(nèi) SUB AX,IBANDJC II ;在積分分離值范圍內(nèi),則跳轉(zhuǎn)到 II 計(jì)算積分項(xiàng) MOV R3,00H ;若不在積分分離值范圍內(nèi),則將積分項(xiàng)清 0 JMP DDD ;計(jì)算微分項(xiàng)II: MOV AL,TS ;計(jì)算積分項(xiàng),結(jié)果放在 R3變量中 (R3=EK*TS/KIIMOV AH,00H ;其中 TS 和 KII 均為正數(shù),所以 R3的正負(fù)由 EK 決定25MUL CXMOV CX,KIIDIV CXMOV R3,AXTEST R0,8000H ;判斷積分項(xiàng)的正負(fù)JZ DDD ;為正數(shù),則跳轉(zhuǎn)去計(jì)算微分項(xiàng)NEG R3 ;為負(fù)數(shù),則將積分項(xiàng)的結(jié)果求補(bǔ)碼
33、DDD: TEST BEK,8000H ;判斷 BEK 的正負(fù)JZ DDD1 ;為正數(shù),則 BEK 不變NEG BEK ;為負(fù)數(shù),則求 BEK 的補(bǔ)碼DDD1: MOV AX,BEK ;計(jì)算微分項(xiàng) (R4=KDD*BEK/8TS MOV CX,KDDMUL CXPUSH AXPUSH DXMOV AL,TSMOV AH,00H ;將微分項(xiàng)縮小 8倍,防止溢出MOV CX,0008HMUL CXMOV CX,AXPOP DXPOP AXDIV CXMOV R4,AXTEST R8,8000H ;判斷微分項(xiàng)的正負(fù)JZ DD1 ;為正數(shù),則結(jié)果不需要求補(bǔ)碼NEG R4 ;為負(fù)數(shù),則微分項(xiàng)結(jié)果 R4求
34、補(bǔ)碼 DD1: MOV AX,R3 ;積分項(xiàng)和微分項(xiàng)相加,結(jié)果放在 R5變量中 ADD AX,R4MOV R5,AXJO L9 ;判斷溢出L2: MOV AX,R5ADD AX,R2MOV R6,AX ;R6=R5+R2=積分項(xiàng) +微分項(xiàng) +AEKL5: MOV AX,R6 ;計(jì)算 KPP*R6MOV CX,KPPIMUL CXMOV CX,1000HIDIV CXMOV CX,AXRCL AH,01H ;判斷溢出,溢出賦極值PUSHFRCR AL,01HPOPFJC LLL1CMP CH,00HJZ LLL2MOV AL,7FHJMP LLL2LLL1: CMP CH,0FFHJZ LLL2
35、MOV AL,80HLLL2: MOV R7,AL ;CK=CK_1+CKADD AL,CK_1JO L8L18: MOV CK_1,ALADD AL,80HMOV CK,ALRETL8: TEST R7,80H ;CK溢出處理程序JNZ L17MOV AL,7FH ;若為正溢出,則賦給正極值 7FH JMP L18L17: MOV AL,80H ;若為負(fù)溢出,則賦給賦極值 80H JMP L18L9: TEST R3,8000HJNZ L1MOV R5,7FFFH ;若為正溢出,則賦給正極值 7FFFHL1: MOV R5,8000H ;若為負(fù)溢出,則賦給負(fù)極值 8000H JMP L2L3
36、: TEST R2,8000HJNZ L4MOV R6,7FFFHJMP L5L4: MOV R6,8000HJMP L5DECSHOW PROC NEAR ;完成兩位十進(jìn)制數(shù)顯示子程序 MOV DX,0MOV BX,10 ;計(jì)算 AX/10DIV BXADD AL,30H ;商 +30H,即為十位數(shù) ASCII 碼MOV AH,0EHINT 10HADD DL,30H ;余 +30H,即為個(gè)位數(shù) ASCII 碼 MOV AH,2INT 21HRETDECSHOW ENDPSHOW1 PROC NEAR;BEGIN: CALL DIS ; 顯示刷新;CALL CLEAR ; 清屏;JMP GE
37、TKEY1;INT 16H;JZ BEGIN;QUIT: MOV AX,4C00H ;返回到 DOS; INT 21H;GETKEY1:CALL DIS ;顯示刷新;CALL DALLY1; CALL DALLY1; CALL CLEAR ;清屏; JMP GETKEY2;GETKEY2:MOV CH,0FEH; MOV CL,00H ;設(shè)置當(dāng)前檢測(cè)的是第幾列;COLUM: MOV AL,CH; MOV DX,MY8255_C; OUT DX,AL;CLEAR PRC NEAR;MOV DX,MY8255_A ;段位置 0 即可清除數(shù)碼管顯示 ;MOV AL,00H;OUT DX,AL;RET
38、;CLEAR ENDP;RET;MOV AX,SPEC;DIS PROC NEAR ;顯示鍵值子程序MOV AX,SPECMOV DX,0MOV BX,10 ;計(jì)算 AX/10DIV BXMOV SI,3001HMOV SI,AL ;在緩沖區(qū)存入十位數(shù)字MOV SI-1,DL ;在緩沖區(qū)存入個(gè)位數(shù)字PUSH AXMOV SI,3000HMOV DL,0FDHMOV AL,DLMOV CX,2AGAIN: PUSH DX;CALL DALLY1MOV DX,MY8255_COUT DX,AL ;設(shè)置 X1X4,選通一個(gè)數(shù)碼管 MOV AL,SI ;取出緩沖區(qū)中所放個(gè)位數(shù)值 MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,BX ;求得數(shù)字對(duì)應(yīng)數(shù)碼管的段位值 MOV DX,MY8255_AOUT DX,AL ;寫入數(shù)碼管 ADpCALL DALLY1MOV AL,00H;取出緩沖區(qū)中所放個(gè)位數(shù)值OUT DX,ALINC SI;取十位數(shù) ?POP DX ;判斷是否顯示完?MOV AL,DL ;顯示完,返回ROR AL,1MOV DL,ALLOOP AGAIN ;未顯示完,跳回繼續(xù)OUT1: POP AX;DIS;RETRET SHOW1 ENDP DAL
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 雞眼病因介紹
- 債務(wù)如何轉(zhuǎn)讓協(xié)議書
- 關(guān)于就業(yè)協(xié)議
- 個(gè)人單位租車協(xié)議
- 1.2《風(fēng)景談》【中職專用】高一語(yǔ)文(高教版2023基礎(chǔ)模塊上冊(cè))
- (2024)年產(chǎn)噸鋰電池負(fù)極材料石墨化項(xiàng)目可行性研究報(bào)告寫作模板(一)
- 2022-2023學(xué)年天津一中高一(上)期末語(yǔ)文試卷
- 2023年天津市南開(kāi)區(qū)高考語(yǔ)文一模試卷
- 解析:內(nèi)蒙古通遼市科爾沁左翼中旗2024-2025學(xué)年七年級(jí)上學(xué)期期中語(yǔ)文試題(原卷版)-A4
- 2024(半成品預(yù)制菜篇)餐飲供應(yīng)鏈指南
- 第26課《詩(shī)詞五首:春望》教學(xué)實(shí)錄 統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 天津市津南區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)測(cè)試卷(含答案)
- 田徑大單元教學(xué)計(jì)劃
- 物理化學(xué)題庫(kù)(含答案)
- 嵌入式軟件設(shè)計(jì)方案
- 包裝工培訓(xùn)方案范本
- 華為財(cái)務(wù)管理(6版)-華為經(jīng)營(yíng)管理叢書
- 語(yǔ)言領(lǐng)域核心經(jīng)驗(yàn)學(xué)前兒童語(yǔ)言學(xué)習(xí)與發(fā)展核心經(jīng)驗(yàn)
- 一次性工傷醫(yī)療補(bǔ)助金申請(qǐng)表(新表3)1
- 第七課經(jīng)濟(jì)全球化與中國(guó)學(xué)案高中政治選擇性必修一當(dāng)代國(guó)際政治與經(jīng)濟(jì)
- 中國(guó)傳統(tǒng)制墨工藝研究
評(píng)論
0/150
提交評(píng)論