微機接口課設(shè)_第1頁
微機接口課設(shè)_第2頁
微機接口課設(shè)_第3頁
微機接口課設(shè)_第4頁
微機接口課設(shè)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機接口課設(shè)微機接口課程設(shè)計題目:本地步進電機綜合控制 姓 名:xx 班 級:xx學(xué) 號: xx 指導(dǎo)老師: xx 完成日期: 1 任務(wù)要求 實現(xiàn)外接步進電機模塊的“啟動”、“正反轉(zhuǎn)”功能,同時,電機的當(dāng)前轉(zhuǎn)速顯示在數(shù)碼管上。通過小鍵盤按鍵結(jié)束整個程序的運行,顯示相應(yīng)的標志。數(shù)碼管和鍵盤的功能74系列器件實現(xiàn)。 轉(zhuǎn)速顯示格式: #轉(zhuǎn)/分,表示順時針每分鐘#轉(zhuǎn)#轉(zhuǎn)/分,表示逆時針每分鐘#轉(zhuǎn) 自定義鍵 : 顯示在數(shù)碼管上,結(jié)束整個程序運行。 一、 硬件架構(gòu) 1. 實驗設(shè)置 步進電機模塊;8253A定時模塊;8259A中斷控制器;計數(shù)分頻電路74LS393;74系列模塊;4片8255A;小鍵盤和數(shù)碼

2、管等 2. 硬件連線 74系列模塊?控制鍵盤輸入; 前兩片8255A?顯示正反轉(zhuǎn)停止及轉(zhuǎn)速信息; 第三片8255A?顯示步速信息; 第四片8255A?驅(qū)動步進電機; 8253A?產(chǎn)生步進電機驅(qū)動的定時信號; 8259A?接收并處理來自8253A的定時中斷請求; 具體連接如下 試驗儀中部的地址輸出端CS-1CS-4分別連接到8255模塊下方的CS-1CS-4;8253的片選CS連接地址輸出端CS1,8253的A0、A1分別連地址總線A2、A3,8253的GATE0連+5V,8253的CLK0連74LS393分頻輸出的47K輸出端,8253的OUT0連接到8259的IRQ0;8259的片選CS-1

3、連地址輸出CS6,8259的INT1連接總線輸入INTR,8259的模塊的INT-A連總線的INTA,8259的SP/1連+5V;75LS393的片選CS2連接地址輸出CS4,片選CS1連接地址輸出CS3 如按以上連線,則8255的A口、B口,C口和控制口的地址依次為200H、204H、208H和20CH;8253的T0、T1、T2及控制口的地址分別為300H、304H、308H和30CH;8259的基地址是3A8H,偶地址為3A0H。 二、 流程圖 本程序主要包括以下幾部分:1、主程序;2、輸入子程序; 3、延時子程序;4、中斷服務(wù)程序。以下為流程圖: 主程序流程圖 2 關(guān)中斷 主程序 關(guān)中

4、斷 裝載DS,各變量賦初值,STOPN=-1 初始化8255初始化8259,裝載中斷向量,清8259有關(guān)屏蔽位 00H 開始停止鍵 取反 讀取控制鍵的鍵01H 正轉(zhuǎn)鍵 02H 反轉(zhuǎn)鍵 N輸入子程序流程圖 STOPN=1 Y 寫入初值100,并顯示 依次讀入百位、十位、個位的值顯示并存儲 依次讀入百位、十位、個位的值顯示并存儲 依據(jù)存儲的各位數(shù)值,計算十進制數(shù),并轉(zhuǎn)化為寫入8253里的初值存儲在NUM中 將初值寫入到8253中去 同時開啟中斷 3 中斷服務(wù)程序流程圖 中斷服務(wù)程序 4 輸入子程序 保護現(xiàn)場 從列端口輸出全零,讀行端口 Y 行端口低四位全為高電平? N 延時去抖 再次從列端口輸出全

5、零,讀行端口 Y 行端口低四位全為高電平? N 從第零列開始逐列掃描 Y 掃描下一列 N 3列全部掃面完畢? Y 讀到的值為全1 N 根據(jù)行值和列值計算鍵值 鍵值存儲在AL中 恢復(fù)現(xiàn)場,返回 保護現(xiàn)場延時子程序流程圖略三、 代碼實現(xiàn) 5 先將數(shù)保存到CL中,在將CL中的數(shù)取反,向第三塊8255C口寫入紅顏色的信息 .486p PORT1 EQU 340H ;(cs1)數(shù)碼管段碼端口 PORT2 EQU 360H ;(cs2)數(shù)碼管位選端口,鍵盤矩陣的行列端口 DATASEGMENT AT 0 USE16 ORG 1000H FLAGDB ? BAIWEI DB ? SHIWEI DB ? GE

6、WEI DB ? NUMDW ? STOPN DB ? DATAENDS CODE SEGMENT USE16 ASSUME DS:DATA,CS:CODE ORG 1500H BEG: JMP START SEVENCOD DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH ;前兩行按鍵的鍵碼 DB 0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;在此處添加后兩行鍵的鍵碼 KEYVAL DB 0,1,2,

7、3,4,5,6,7,8,9,0AH,0BH;12個按鍵的鍵值 TENDB 10 RNUMDB B STEPDB 0 START:CLI MOV EAX,H MOV CR0,EAX ;裝載DS MOV AX,DATA MOV DS,AX ;初始化8255 MOV AL,80H MOV DX,20CH OUT DX,AL MOV AL,80H 6 MOV DX,20DH OUT DX,AL MOV AL,80H MOV DX,20EH OUT DX,AL ;A MOV AL,0FFH MOV DX,200H OUT DX,AL MOV AL,0FFH MOV DX,201H OUT DX,AL M

8、OV AL,0FFH MOV DX,202H OUT DX,AL ;B MOV AL,0FFH MOV DX,204H OUT DX,AL MOV AL,0FFH MOV DX,205H OUT DX,AL MOV AL,0FFH MOV DX,206H OUT DX,AL ;最右邊8255 MOV AL,80H MOV DX,20FH OUT DX,AL ;初始化8259 ;初始化8259 ICW1,ICW2 MOVAL,B MOVDX,3A0H OUTDX,AL MOVAL,70H MOVDX,3A8H OUTDX,AL MOVAL,b;ICW4非自動中斷 OUTDX,AL ;中斷屏蔽字

9、MOV AL,B 7 MOV DX,3A8H OUT DX,AL ;設(shè)置中斷向量 MOVAX,0 MOVES,AX MOVBX,70H*4 MOVAX,OFFSET RUN MOVES:BX,AX MOVAX,SEG RUN MOVES:BX+2,AX MOVSTOPN,-1AG1: LEA BX,SEVENCOD CALL INPUT CMP AL,00H JZ ST1 CMP AL,01H JZ ZZ CMP AL,02H JZ FZ JMP AG1 ;開始停止鍵 ST1:NEG STOPN CMP STOPN,1;判斷是否需要啟動設(shè)備 JNZ BQIDONG JMP S1 BQIDONG

10、:MOV DX,200H MOV AL,92H OUT DX,AL CLI JMP AG1 ;設(shè)置默認值100 S1:MOV DX,200H MOV AL,0FFH OUT DX,AL MOV AL,1 MOV BAIWEI,AL XLAT MOV DX,204H OUT DX,AL MOV AL,0 8 MOV SHIWEI,AL XLAT MOV DX,201H OUT DX,AL MOV AL,0 MOV GEWEI,AL XLAT MOV DX,205H OUT DX,AL MOV FLAG,0 JMP EXIT ;正轉(zhuǎn) ZZ: MOV DX,200H MOV AL,0FFH OUT

11、DX,AL A1:CALL INPUT CMP AL,03H JB A1 SUB AL,3 MOV BAIWEI,AL XLAT MOV DX,204H OUT DX,AL CALL INPUT SUB AL,3 MOV SHIWEI,AL XLAT MOV DX,201H OUT DX,AL CALL INPUT SUB AL,3 MOV GEWEI,AL XLAT MOV DX,205H OUT DX,AL MOV FLAG,0;設(shè)置正反轉(zhuǎn)標志位 MOV STOPN,1 JMP EXIT 9 ;反轉(zhuǎn) FZ: MOV DX,200H;反轉(zhuǎn) MOV AL,0BFH OUT DX,AL A2:C

12、ALL INPUT CMP AL,03H JB A2 SUB AL,3 MOV BAIWEI,AL XLAT MOV DX,204H OUT DX,AL SUB AL,3 MOV SHIWEI,AL XLAT MOV DX,201H OUT DX,AL CALL INPUT SUB AL,3 MOV GEWEI,AL XLAT MOV DX,205H OUT DX,AL MOV FLAG,1 MOV STOPN,1 JMP EXIT;計算數(shù)值 EXIT: MOV AL,BAIWEI MUL TEN MOV BL,SHIWEI ADD AL,BL MUL TEN MOV BL,GEWEI ADD

13、 AL,BL MOV AH,0 MOV NUM,AX;輸入的值放在num中 MOV DX,0 MOV AX,58750 DIV NUM 10 MOV NUM,AX;轉(zhuǎn)換為計數(shù)初值 MOV AL,B;8254方式3BCD碼 MOV DX,30CH OUT DX,AL MOV DX,300H MOV AX,NUM OUT DX,AL MOV AL,AH OUT DX,AL STI JMP AG1 ;通過行掃描法,將鍵值存儲到al中INPUT PROC PUSHDX PUSHBX PUSHSI PUSHDI WT: MOV AL,00H;00H為不顯示任何信息時對應(yīng)的七段代碼MOV DX,PORT1

14、 OUT DX,AL MOV AL,B MOV DX,PORT2 OUT DX,AL;使數(shù)碼管全滅,并使3根列線輸出全0 NOP NOPMOVDX,PORT2 IN AL,DX ;(粗掃描)若無鍵按下轉(zhuǎn)至WT執(zhí)行,否則順序執(zhí)行 ANDAL,0FH CMPAL,0FHJZ WT CALL DELAY MOV DX,PORT2 ;再次確認是否有鍵按下 IN AL,DX AND AL,0FH CMPAL,0FH JZ WTMOV CX,3 ;(細掃描)開始對每一列進行逐列掃描 MOV BL,0FEH NEXT: MOVAL,BL;在橫線上添加一條語句 11 MOV DX,PORT2 OUT DX,A

15、L NOP NOP IN AL,DX ANDAL,0FH CMPAL,0FH JNZKEY ROLBL,1 ;在橫線上添加一條語句 LOOPNEXT JMPWT;按鍵過早釋放,可能導(dǎo)致無法識別 KEY: SHLBL,4 ;8088/8086指令集中該指令格式錯誤! OR AL,BL;字節(jié)鍵碼信息存入AL,高4位為列信息低4位為行信息 LEASI,KEYCOD LEADI,KEYVAL MOVCX,12 NEXT1: CMPAL,SI JZ FIND INCSI INCDI LOOPNEXT1 JMPWT ;本程序不支持多個按鍵同時按下 FIND: MOVAL,DI;AL中內(nèi)容為所按鍵的鍵面值

16、PUSH AX MOVAL,B MOV DX,PORT2 OUT DX,AL;使數(shù)碼管全滅,并使3根列線輸出全0 NOP NOPNEXT2: MOVDX,PORT2 IN AL,DX;(粗掃描)若無鍵按下轉(zhuǎn)至WT執(zhí)行,否則順序執(zhí)行 ANDAL,0FH CMPAL,0FH JNZNEXT2 POP AX CALL DELAY POPDI POPSI POPBX POPDX RET INPUT ENDP 12 ;中斷服務(wù)程序 RUN PROC FAR PUSH AX PUSH DX CMP FLAG,0 JZ ZHZ ROL RNUM,1 MOV AL,RNUM MOV DX,203H OUT D

17、X,AL SUB STEP,1 JMP END1 ZHZ: ROR RNUM,1 MOV AL,RNUM MOV DX,203H OUT DX,AL ADD STEP,1 END1:MOV CL,STEPCMP STEP,0JGE W1NEG CLMOV AL,05HMOV DX,20AHOUT DX,ALJMP W2 W1:MOV AL,0AHMOV DX,20AHOUT DX,AL W2:CMP CL,99JB END2MOV STEP,0 END2: MOV AL,CLMOV AH,00HDIV TENXLAT MOV DX,202HOUT DX,ALXCHG AH,AL XLAT MO

18、V DX,206H OUT DX,AL 13 MOV AL,20H MOV DX,3A0HOUT DX,ALPOP DX POP AX IRET RUN ENDPDELAY PROC MOV CX,2000LOOP $RET DELAY ENDP CODE ENDS END BEG 四、 運行調(diào)試 在按要求連接完線后,運行程序。 鍵盤上最上面一排三個鍵為控制鍵,依次代表啟動停止鍵,正轉(zhuǎn),反轉(zhuǎn)。從第二行開始橫著依次代表數(shù)字08。在測試的時候,按下起止鍵在開始和停止兩個狀態(tài)切換;按下正轉(zhuǎn)或反轉(zhuǎn)后跟上三個數(shù)字鍵,該數(shù)字即為你需要運行的速度。正常運行前兩塊數(shù)碼管顯示速度信息,第三塊顯示步數(shù)信息,電機正常轉(zhuǎn)動。 五、 總結(jié) 這次課程設(shè)計完成的是一個步進電機的旋轉(zhuǎn)實驗,主要涉及了數(shù)碼管顯示,按鍵識別,步進電機控制等幾個部分,是對我們平時實驗的一個綜合。在實驗過程中我采用了分解的方法將實驗分為了幾個部分,逐一實現(xiàn)。按鍵部分主要是在按鍵識別與現(xiàn)實的基礎(chǔ)上進行改寫,通過行掃描法來實現(xiàn)的。通過對

溫馨提示

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

評論

0/150

提交評論