2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  微機接口課程設(shè)計</b></p><p>  題目:本地步進電機綜合控制</p><p><b>  姓 名:xx</b></p><p><b>  班 級:xx</b></p><p><b>  學 號: xx</b>&

2、lt;/p><p><b>  指導老師: xx</b></p><p>  完成日期:2012年1月4日</p><p><b>  任務要求</b></p><p>  實現(xiàn)外接步進電機模塊的“啟動”、“正反轉(zhuǎn)”功能,同時,電機的當前轉(zhuǎn)速顯示在數(shù)碼管上。通過小鍵盤按鍵結(jié)束整個程序的運行,顯示相應的標

3、志。數(shù)碼管和鍵盤的功能由74系列器件實現(xiàn)。</p><p>  轉(zhuǎn)速顯示格式: ##轉(zhuǎn)/分,表示順時針每分鐘##轉(zhuǎn)</p><p>  —##轉(zhuǎn)/分,表示逆時針每分鐘##轉(zhuǎn)</p><p>  自定義鍵 : 顯示在數(shù)碼管上,結(jié)束整個程序運行。</p><p><b>  硬件架構(gòu)(連線)</b></p>&

4、lt;p><b>  實驗設(shè)置</b></p><p>  步進電機模塊;8253A定時模塊;8259A中斷控制器;計數(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ū)動步進電機;</p><p>  8253A……………………產(chǎn)生步進電機驅(qū)動的定時信號;</p><p>  8259A……………………接收并處理來自825

6、3A的定時中斷請求;</p><p><b>  具體連接如下</b></p><p>  試驗儀中部的地址輸出端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、中斷服務程序。以下為流程圖:</p>

9、<p><b>  主程序流程圖</b></p><p><b>  輸入子程序流程圖</b></p><p><b>  中斷服務程序流程圖</b></p><p><b>  延時子程序流程圖略</b></p><p><b>

10、  代碼實現(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è)置默認值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)標志位</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>  ;計算數(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)換為計數(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為不顯示任何信息時對應的七段代碼 </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 ;再次確認是否有鍵按下</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 ;(細掃描)開始對每一列進行逐列掃描 </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 ;按鍵過早釋放,可能導致無法識別</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>  ;中斷服務程序</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>  運行調(diào)試</b></p><p>  在按要求連接完線后,運行程序。</p><p>  鍵盤上最上面一排三個鍵為控制鍵,依次代表啟動停止鍵,正轉(zhuǎn),反轉(zhuǎn)。從第二行開始橫著依次代表數(shù)字0—8。在測試的時候,按下起止鍵在開始和停止兩個狀態(tài)切換;按下正轉(zhuǎn)或

76、反轉(zhuǎn)后跟上三個數(shù)字鍵,該數(shù)字即為你需要運行的速度。正常運行前兩塊數(shù)碼管顯示速度信息,第三塊顯示步數(shù)信息,電機正常轉(zhuǎn)動。</p><p><b>  總結(jié)</b></p><p>  這次課程設(shè)計完成的是一個步進電機的旋轉(zhuǎn)實驗,主要涉及了數(shù)碼管顯示,按鍵識別,步進電機控制等幾個部分,是對我們平時實驗的一個綜合。在實驗過程中我采用了分解的方法將實驗分為了幾個部分,逐一實現(xiàn)

77、。按鍵部分主要是在按鍵識別與現(xiàn)實的基礎(chǔ)上進行改寫,通過行掃描法來實現(xiàn)的。通過對程序的改寫我也溫習了一下以前學習的知識,熟悉了掃描方法的編程。在改寫的過程到應用的過程中我也遇到了一些麻煩,最后在老師的指導下我順利的解決了相關(guān)問題,通過這一點我也明白了解決問題時我們需要全面考慮,任何一個小的方面都可能影響到我們程序的運行。在編寫其他功能時,前面的實驗對我也有很大的啟發(fā),我想這也在說明平時的實驗認真完成的重要性。應該來說,通過這次試驗我學到了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論