版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 微機(jī)接口課程設(shè)計(jì)</b></p><p> 題目:本地步進(jìn)電機(jī)綜合控制</p><p><b> 姓 名:xx</b></p><p><b> 班 級:xx</b></p><p><b> 學(xué) 號: xx</b>&
2、lt;/p><p><b> 指導(dǎo)老師: xx</b></p><p> 完成日期:2012年1月4日</p><p><b> 任務(wù)要求</b></p><p> 實(shí)現(xiàn)外接步進(jìn)電機(jī)模塊的“啟動”、“正反轉(zhuǎn)”功能,同時,電機(jī)的當(dāng)前轉(zhuǎn)速顯示在數(shù)碼管上。通過小鍵盤按鍵結(jié)束整個程序的運(yùn)行,顯示相應(yīng)的標(biāo)
3、志。數(shù)碼管和鍵盤的功能由74系列器件實(shí)現(xiàn)。</p><p> 轉(zhuǎn)速顯示格式: ##轉(zhuǎn)/分,表示順時針每分鐘##轉(zhuǎn)</p><p> —##轉(zhuǎn)/分,表示逆時針每分鐘##轉(zhuǎn)</p><p> 自定義鍵 : 顯示在數(shù)碼管上,結(jié)束整個程序運(yùn)行。</p><p><b> 硬件架構(gòu)(連線)</b></p>&
4、lt;p><b> 實(shí)驗(yàn)設(shè)置</b></p><p> 步進(jìn)電機(jī)模塊;8253A定時模塊;8259A中斷控制器;計(jì)數(shù)分頻電路74LS393;74系列模塊;4片8255A;小鍵盤和數(shù)碼管等</p><p><b> 硬件連線</b></p><p> 74系列模塊………………控制鍵盤輸入;</p>
5、<p> 前兩片8255A……………顯示正反轉(zhuǎn)停止及轉(zhuǎn)速信息;</p><p> 第三片8255A……………顯示步速信息;</p><p> 第四片8255A……………驅(qū)動步進(jìn)電機(jī);</p><p> 8253A……………………產(chǎn)生步進(jìn)電機(jī)驅(qū)動的定時信號;</p><p> 8259A……………………接收并處理來自825
6、3A的定時中斷請求;</p><p><b> 具體連接如下</b></p><p> 試驗(yàn)儀中部的地址輸出端CS-1~CS-4分別連接到8255模塊下方的CS-1~CS-4;8253的片選CS連接地址輸出端CS1(300H),8253的A0、A1分別連地址總線A2、A3,8253的GATE0連+5V,8253的CLK0連74LS393分頻輸出的47K輸出端,82
7、53的OUT0連接到8259的IRQ0;8259的片選CS-1連地址輸出CS6(3A0),8259的INT1連接總線輸入INTR,8259的模塊的INT-A連總線的INTA,8259的SP/1連+5V;75LS393的片選CS2連接地址輸出CS4(360),片選CS1連接地址輸出CS3(340)</p><p> 如按以上連線,則8255的A口、B口,C口和控制口的地址依次為200H、204H、208H和20C
8、H;8253的T0、T1、T2及控制口的地址分別為300H、304H、308H和30CH;8259的基地址是3A8H,偶地址為3A0H。</p><p><b> 流程圖</b></p><p> 本程序主要包括以下幾部分:1、主程序;2、輸入子程序;</p><p> 3、延時子程序;4、中斷服務(wù)程序。以下為流程圖:</p>
9、<p><b> 主程序流程圖</b></p><p><b> 輸入子程序流程圖</b></p><p><b> 中斷服務(wù)程序流程圖</b></p><p><b> 延時子程序流程圖略</b></p><p><b>
10、 代碼實(shí)現(xiàn)</b></p><p><b> .486p</b></p><p> PORT1EQU340H ;(cs1)數(shù)碼管段碼端口</p><p> PORT2EQU360H ;(cs2)數(shù)碼管位選端口,鍵盤矩陣的行列端口</p><p> DATA SEGMENT AT 0
11、 USE16</p><p><b> ORG 1000H</b></p><p> FLAG DB ?</p><p> BAIWEI DB ?</p><p> SHIWEI DB ?</p><p> GEWEI DB ?</p><p>
12、NUM DW ?</p><p> STOPN DB ?</p><p> DATA ENDS</p><p> CODESEGMENT USE16</p><p> ASSUMEDS:DATA,CS:CODE</p><p><b> ORG1500H</b>&
13、lt;/p><p> BEG:JMPSTART</p><p> SEVENCOD DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH </p><p> KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH ;前兩行按鍵
14、的鍵碼</p><p> DB 0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;在此處添加后兩行鍵的鍵碼</p><p> KEYVAL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;12個按鍵的鍵值</p><p> TEN DB 10</p><p>
15、; RNUM DB 10001000B</p><p> STEP DB 0</p><p> START:CLI</p><p> MOVEAX,60000000H</p><p> MOVCR0,EAX</p><p><b> ;裝載DS</b&g
16、t;</p><p> MOVAX,DATA</p><p><b> MOVDS,AX</b></p><p><b> ;初始化8255</b></p><p> MOV AL,80H</p><p> MOV DX,20CH</p><
17、p><b> OUT DX,AL</b></p><p> MOV AL,80H</p><p> MOV DX,20DH</p><p><b> OUT DX,AL</b></p><p> MOV AL,80H</p><p> MOV DX,20EH
18、</p><p><b> OUT DX,AL</b></p><p><b> ;A</b></p><p> MOV AL,0FFH</p><p> MOV DX,200H</p><p><b> OUT DX,AL</b></p
19、><p> MOV AL,0FFH</p><p> MOV DX,201H</p><p><b> OUT DX,AL</b></p><p> MOV AL,0FFH</p><p> MOV DX,202H</p><p><b> OUT DX,
20、AL</b></p><p><b> ;B</b></p><p> MOV AL,0FFH</p><p> MOV DX,204H</p><p><b> OUT DX,AL</b></p><p> MOV AL,0FFH</p>
21、<p> MOV DX,205H</p><p><b> OUT DX,AL</b></p><p> MOV AL,0FFH</p><p> MOV DX,206H</p><p><b> OUT DX,AL</b></p><p><b&
22、gt; ;最右邊8255</b></p><p> MOV AL,80H</p><p> MOV DX,20FH</p><p><b> OUT DX,AL</b></p><p><b> ;初始化8259</b></p><p> ;初始化82
23、59 ICW1,ICW2</p><p> MOV AL,00010011B</p><p> MOV DX,3A0H</p><p> OUT DX,AL</p><p> MOV AL,70H</p><p> MOV DX,3A8H</p><
24、p> OUT DX,AL</p><p> MOV AL,00000001b;ICW4非自動中斷</p><p> OUT DX,AL</p><p><b> ;中斷屏蔽字</b></p><p> MOV AL,11111110B</p><p> M
25、OV DX,3A8H</p><p><b> OUT DX,AL</b></p><p><b> ;設(shè)置中斷向量</b></p><p> MOV AX,0</p><p> MOV ES,AX</p><p> MOV BX,70H*4<
26、;/p><p> MOV AX,OFFSET RUN</p><p> MOV ES:[BX],AX</p><p> MOV AX,SEG RUN</p><p> MOV ES:[BX+2],AX</p><p> MOV STOPN,-1</p><p>
27、;<b> AG1:</b></p><p> LEA BX,SEVENCOD</p><p> CALL INPUT</p><p> CMP AL,00H</p><p><b> JZ ST1</b></p><p> CMP AL,01H</p&g
28、t;<p><b> JZ ZZ</b></p><p> CMP AL,02H</p><p><b> JZ FZ</b></p><p><b> JMP AG1</b></p><p><b> ;開始停止鍵</b><
29、;/p><p> ST1: NEG STOPN </p><p> CMP STOPN,1;判斷是否需要啟動設(shè)備</p><p> JNZ BQIDONG</p><p><b> JMP S1</b></p><p> BQIDONG:MOV DX,200H</p&g
30、t;<p> MOV AL,92H</p><p><b> OUT DX,AL</b></p><p><b> CLI</b></p><p><b> JMP AG1</b></p><p><b> ;設(shè)置默認(rèn)值100</b>
31、;</p><p> S1: MOV DX,200H</p><p> MOV AL,0FFH</p><p><b> OUT DX,AL</b></p><p><b> MOV AL,1</b></p><p> MOV BAIWEI,AL</p
32、><p><b> XLAT</b></p><p> MOV DX,204H</p><p><b> OUT DX,AL</b></p><p><b> MOV AL,0</b></p><p> MOV SHIWEI,AL</p>
33、;<p><b> XLAT</b></p><p> MOV DX,201H</p><p><b> OUT DX,AL</b></p><p><b> MOV AL,0</b></p><p> MOV GEWEI,AL</p>&
34、lt;p><b> XLAT</b></p><p> MOV DX,205H</p><p><b> OUT DX,AL</b></p><p> MOV FLAG,0</p><p><b> JMP EXIT</b></p><p&g
35、t;<b> ;正轉(zhuǎn)</b></p><p><b> ZZ: </b></p><p> MOV DX,200H</p><p> MOV AL,0FFH</p><p><b> OUT DX,AL</b></p><p> A1
36、: CALL INPUT</p><p> CMP AL,03H</p><p><b> JB A1</b></p><p><b> SUB AL,3</b></p><p> MOV BAIWEI,AL</p><p><b> XLAT&l
37、t;/b></p><p> MOV DX,204H</p><p><b> OUT DX,AL</b></p><p> CALL INPUT</p><p><b> SUB AL,3</b></p><p> MOV SHIWEI,AL</p&g
38、t;<p><b> XLAT</b></p><p> MOV DX,201H</p><p><b> OUT DX,AL</b></p><p> CALL INPUT</p><p><b> SUB AL,3</b></p>&l
39、t;p> MOV GEWEI,AL</p><p><b> XLAT</b></p><p> MOV DX,205H</p><p><b> OUT DX,AL</b></p><p> MOV FLAG,0;設(shè)置正反轉(zhuǎn)標(biāo)志位</p><p> MOV
40、 STOPN,1</p><p><b> JMP EXIT</b></p><p><b> ;反轉(zhuǎn)</b></p><p><b> FZ: </b></p><p> MOV DX,200H;反轉(zhuǎn)</p><p> MOV AL,
41、0BFH</p><p><b> OUT DX,AL</b></p><p> A2: CALL INPUT</p><p> CMP AL,03H</p><p><b> JB A2</b></p><p><b> SUB AL,3 <
42、;/b></p><p> MOV BAIWEI,AL</p><p><b> XLAT</b></p><p> MOV DX,204H</p><p><b> OUT DX,AL</b></p><p><b> SUB AL,3</b
43、></p><p> MOV SHIWEI,AL</p><p><b> XLAT</b></p><p> MOV DX,201H</p><p><b> OUT DX,AL</b></p><p> CALL INPUT</p><
44、p><b> SUB AL,3</b></p><p> MOV GEWEI,AL</p><p><b> XLAT</b></p><p> MOV DX,205H</p><p><b> OUT DX,AL</b></p><p>
45、; MOV FLAG,1</p><p> MOV STOPN,1</p><p><b> JMP EXIT</b></p><p><b> ;計(jì)算數(shù)值</b></p><p> EXIT: MOV AL,BAIWEI</p><p><b> M
46、UL TEN</b></p><p> MOV BL,SHIWEI</p><p><b> ADD AL,BL</b></p><p><b> MUL TEN</b></p><p> MOV BL,GEWEI</p><p><b> A
47、DD AL,BL</b></p><p><b> MOV AH,0</b></p><p> MOV NUM,AX;輸入的值放在num中</p><p><b> MOV DX,0</b></p><p> MOV AX,58750</p><p>&l
48、t;b> DIV NUM</b></p><p> MOV NUM,AX;轉(zhuǎn)換為計(jì)數(shù)初值</p><p> MOV AL,00110110B;8254方式3BCD碼</p><p> MOV DX,30CH</p><p><b> OUT DX,AL</b></p><p
49、> MOV DX,300H</p><p> MOV AX,NUM</p><p><b> OUT DX,AL</b></p><p><b> MOV AL,AH</b></p><p><b> OUT DX,AL</b></p><p
50、><b> STI</b></p><p><b> JMP AG1</b></p><p> ;通過行掃描法,將鍵值存儲到al中 </p><p> INPUT PROC</p><p> PUSH DX</p><p> PUSH
51、BX</p><p> PUSH SI</p><p> PUSH DI</p><p> WT: MOVAL,00H ;00H為不顯示任何信息時對應(yīng)的七段代碼 </p><p> MOVDX,PORT1 </p><p><b&
52、gt; OUTDX,AL</b></p><p> MOVAL,00000000B</p><p> MOVDX,PORT2 </p><p> OUTDX,AL ;使數(shù)碼管全滅,并使3根列線輸出全0</p><p><b> NOP</b></p><
53、;p><b> NOP </b></p><p> MOV DX,PORT2</p><p> IN AL,DX ;(粗掃描)若無鍵按下轉(zhuǎn)至WT執(zhí)行,否則順序執(zhí)行</p><p> AND AL,0FH</p><p> CMP AL,0FH
54、 </p><p> JZ WT </p><p> CALL DELAY </p><p> MOVDX,PORT2 ;再次確認(rèn)是否有鍵按下</p><p><b> INAL,DX</b></p><p> AN
55、DAL,0FH</p><p> CMP AL,0FH</p><p><b> JZWT</b></p><p> MOVCX,3 ;(細(xì)掃描)開始對每一列進(jìn)行逐列掃描 </p><p> MOVBL,0FEH</p><p> NEXT: MOV
56、 AL,BL;在橫線上添加一條語句</p><p> MOVDX,PORT2</p><p><b> OUTDX,AL</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><
57、b> INAL,DX</b></p><p> AND AL,0FH</p><p> CMP AL,0FH</p><p> JNZ KEY</p><p> ROL BL,1 ;在橫線上添加一條語句</p><p> LOOP NEXT <
58、/p><p> JMP WT ;按鍵過早釋放,可能導(dǎo)致無法識別</p><p> KEY: SHL BL,4 ;8088/8086指令集中該指令格式錯誤!</p><p> OR AL,BL ;字節(jié)鍵碼信息存入AL,高4位為列信息低4位為行信息</p><p> LEA
59、 SI,KEYCOD</p><p> LEA DI,KEYVAL </p><p> MOV CX,12</p><p> NEXT1: CMP AL,[SI]</p><p> JZ FIND</p><p> INC SI</p><p>
60、; INC DI</p><p> LOOP NEXT1 </p><p> JMP WT ;本程序不支持多個按鍵同時按下</p><p> FIND: MOV AL,[DI] ;AL中內(nèi)容為所按鍵的鍵面值</p><p><b> PUSH AX</b>&
61、lt;/p><p> MOV AL,00000000B</p><p> MOVDX,PORT2 </p><p> OUTDX,AL ;使數(shù)碼管全滅,并使3根列線輸出全0</p><p><b> NOP</b></p><p><b> NOP
62、 </b></p><p> NEXT2: MOV DX,PORT2</p><p> IN AL,DX ;(粗掃描)若無鍵按下轉(zhuǎn)至WT執(zhí)行,否則順序執(zhí)行</p><p> AND AL,0FH</p><p> CMP AL,0FH</p><p&g
63、t; JNZ NEXT2</p><p><b> POP AX</b></p><p> CALL DELAY</p><p> POP DI</p><p> POP SI</p><p> POP BX</p><p>
64、POP DX</p><p><b> RET </b></p><p> INPUT ENDP</p><p><b> ;中斷服務(wù)程序</b></p><p> RUN PROC FAR</p><p><b> PUSH AX</b
65、></p><p><b> PUSH DX</b></p><p> CMP FLAG,0</p><p><b> JZ ZHZ</b></p><p> ROL RNUM,1</p><p> MOV AL,RNUM</p><p&
66、gt; MOV DX,203H</p><p><b> OUT DX,AL</b></p><p> SUB STEP,1</p><p><b> JMP END1</b></p><p> ZHZ: ROR RNUM,1</p><p> MOV AL,
67、RNUM</p><p> MOV DX,203H</p><p><b> OUT DX,AL</b></p><p> ADD STEP,1</p><p><b> END1: </b></p><p> MOV CL,STEP</p>&l
68、t;p> CMP STEP,0</p><p><b> JGE W1</b></p><p><b> NEG CL</b></p><p> MOV AL,05H</p><p> MOV DX,20AH</p><p><b> OUT DX
69、,AL</b></p><p><b> JMP W2</b></p><p> W1: MOV AL,0AH</p><p> MOV DX,20AH</p><p><b> OUT DX,AL</b></p><p> W2: CMP
70、CL,99</p><p><b> JB END2</b></p><p> MOV STEP,0 </p><p> END2: MOV AL,CL</p><p> MOV AH,00H</p><p><b> DIV TEN</b></p>
71、;<p><b> XLAT</b></p><p> MOV DX,202H</p><p><b> OUT DX,AL</b></p><p> XCHG AH,AL</p><p><b> XLAT </b></p><p&
72、gt; MOV DX,206H</p><p><b> OUT DX,AL</b></p><p> MOV AL,20H</p><p> MOV DX,3A0H </p><p> OUT DX,AL </p><p><b> POP DX</b>&
73、lt;/p><p><b> POP AX</b></p><p><b> IRET</b></p><p><b> RUN ENDP </b></p><p> DELAY PROC</p><p> MOV CX,2000</p>
74、;<p><b> LOOP $</b></p><p><b> RET</b></p><p> DELAY ENDP </p><p><b> CODE ENDS</b></p><
75、p><b> END BEG</b></p><p><b> 運(yùn)行調(diào)試</b></p><p> 在按要求連接完線后,運(yùn)行程序。</p><p> 鍵盤上最上面一排三個鍵為控制鍵,依次代表啟動停止鍵,正轉(zhuǎn),反轉(zhuǎn)。從第二行開始橫著依次代表數(shù)字0—8。在測試的時候,按下起止鍵在開始和停止兩個狀態(tài)切換;按下正轉(zhuǎn)或
76、反轉(zhuǎn)后跟上三個數(shù)字鍵,該數(shù)字即為你需要運(yùn)行的速度。正常運(yùn)行前兩塊數(shù)碼管顯示速度信息,第三塊顯示步數(shù)信息,電機(jī)正常轉(zhuǎn)動。</p><p><b> 總結(jié)</b></p><p> 這次課程設(shè)計(jì)完成的是一個步進(jìn)電機(jī)的旋轉(zhuǎn)實(shí)驗(yàn),主要涉及了數(shù)碼管顯示,按鍵識別,步進(jìn)電機(jī)控制等幾個部分,是對我們平時實(shí)驗(yàn)的一個綜合。在實(shí)驗(yàn)過程中我采用了分解的方法將實(shí)驗(yàn)分為了幾個部分,逐一實(shí)現(xiàn)
77、。按鍵部分主要是在按鍵識別與現(xiàn)實(shí)的基礎(chǔ)上進(jìn)行改寫,通過行掃描法來實(shí)現(xiàn)的。通過對程序的改寫我也溫習(xí)了一下以前學(xué)習(xí)的知識,熟悉了掃描方法的編程。在改寫的過程到應(yīng)用的過程中我也遇到了一些麻煩,最后在老師的指導(dǎo)下我順利的解決了相關(guān)問題,通過這一點(diǎn)我也明白了解決問題時我們需要全面考慮,任何一個小的方面都可能影響到我們程序的運(yùn)行。在編寫其他功能時,前面的實(shí)驗(yàn)對我也有很大的啟發(fā),我想這也在說明平時的實(shí)驗(yàn)認(rèn)真完成的重要性。應(yīng)該來說,通過這次試驗(yàn)我學(xué)到了
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)---步進(jìn)電機(jī)的微機(jī)控制
- 課程設(shè)計(jì)-- 微機(jī)步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)--步進(jìn)電機(jī)控制系統(tǒng)
- 微機(jī)接口課程設(shè)計(jì)報告---利用步進(jìn)電機(jī)模擬小車的運(yùn)行
- 微機(jī)控制技術(shù)課程設(shè)計(jì)---步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---步進(jìn)電機(jī)設(shè)計(jì)
- 微機(jī)原理與技術(shù)課程設(shè)計(jì)--步進(jìn)電機(jī)控制
- 微機(jī)課程設(shè)計(jì)報告 小型步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)
- 微機(jī)接口課程設(shè)計(jì)--直流電機(jī)控制
- 微機(jī)原理課程設(shè)計(jì)說明書---步進(jìn)電機(jī)控制
- 課程設(shè)計(jì)-步進(jìn)電機(jī)控制步進(jìn)電機(jī)轉(zhuǎn)速實(shí)時控制
- 微機(jī)原理課程設(shè)計(jì)---步進(jìn)電機(jī)正反轉(zhuǎn)
- 步進(jìn)電機(jī)課程設(shè)計(jì)--- 步進(jìn)電機(jī)控制系統(tǒng)
- 課程設(shè)計(jì)---步進(jìn)電機(jī)控制
- 步進(jìn)電機(jī)課程設(shè)計(jì)--步進(jìn)電機(jī)控制系統(tǒng)
- 微機(jī)原理課程設(shè)計(jì)報告--步進(jìn)電機(jī)設(shè)計(jì)
- 步進(jìn)電機(jī)課程設(shè)計(jì)報告---步進(jìn)電機(jī)控制系統(tǒng)
- 微機(jī)接口課程設(shè)計(jì)
- 步進(jìn)電機(jī)課程設(shè)計(jì)---步進(jìn)電機(jī)控制系統(tǒng)的設(shè)計(jì)
- 步進(jìn)電機(jī)控制a課程設(shè)計(jì)報告
評論
0/150
提交評論