武漢科技大學微機原理課程設計模擬電梯系統(匯編)_第1頁
武漢科技大學微機原理課程設計模擬電梯系統(匯編)_第2頁
武漢科技大學微機原理課程設計模擬電梯系統(匯編)_第3頁
武漢科技大學微機原理課程設計模擬電梯系統(匯編)_第4頁
武漢科技大學微機原理課程設計模擬電梯系統(匯編)_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、二一三二一四學年第 二 學期電子技術學院電子信息工程系課程設計報告書班 級: 姓 名: 課程名稱: 微機原理及應用課程設計 學時學分: 1 周 1 學分 指導老師: 楊 君 二一三年十二月 三十一日一、課程設計目的:綜合運用本課程知識,利用集成電路設計實現一些中小規模電子電路或者完成一定功能的程序,以復習鞏固課堂所學的理論知識,提高程序設計實現系統、繪制系統電路圖的能力,為實際應用奠定一定的基礎。二、課程設計時間安排:第一天:教師布置設計任務,講解設計要求,提示設計要點。第二三天:查閱資料(在圖書館或上網),提出設計方案。第三七天:畫出詳細設計圖(電路圖),編寫程序,調試程序,得出實驗結果并寫

2、出設計報告。三、課程設計選題:設計要求: (1). 在 1- 8樓之間一次可輸入多個任意樓層號連續控制電梯按指定樓層號順序上升與下降.以上過程完成后可重新輸入任意樓層號連續控制電梯按指定樓層號順序上升與下降.只有按ESC鍵才退出程序返回DOS狀態。例如 : 1-3-5-7-6-4-2-1 (可觀察教十樓電梯的實際運行情況). (2). 在 1 - 7 樓之間按任意順序不連續控制電梯上升與下降. 按一次計算機鍵盤的上箭頭電梯上升一樓,按一次計算機鍵盤的下箭頭電梯下降一樓. (上箭頭的ASCII碼19H , 下箭頭的ASCII碼1AH . ) (3). 在電梯上升與下降過程中,要顯示出 1-7 樓

3、之間所要到達的樓層數,同時還要用箭頭顯示電梯是上升狀態還是下降狀態. (4). 電梯運行到指定樓層后,打開電梯門,然后關門繼續運行. (5). 電梯運行時, 在任意時刻遇到緊急情況時應能實時中斷電梯運行.也可以在任意時刻恢復電梯運行.(按A/a 鍵模擬中斷發生,電梯停止運行.按B/b 鍵恢復電梯運行) (6). 在計算機屏幕上將電梯的平面模型改成三維立體模型. (7). 在電梯旁畫一個小方塊.這個小方塊隨電梯上升而上升,下降而下降.以增加電梯運行時的動感. (8). 電梯仿真軟件運行時,應在計算機屏幕上詳細說明其使用方法,以及本軟件作者姓名和日期.報告要求: (1). 在報告中應對電梯仿真軟件

4、的設計思想,設計方法用文字詳細說明. (2). 在報告中應有完整的程序清單(必需加注釋). (3). 在報告中應有完整的程序框圖. (4). 談談自己通過這次設計實踐的收獲和體會.參考文獻 :1 朱定華,微機原理、匯編與接口技術,清華大學出版社,2005 2 徐士良,PC機C圖形編程手冊,清華大學出版社,1994四、課程設計內容:1、程序模塊:程 序主程序延時的宏清屏的宏電梯緊急暫停的宏畫電梯門開關動畫的宏電梯上升與下降的宏畫橫與畫豎的宏坐標移動的宏初始化模塊運行模塊輸入模塊結束模塊2、程序流程圖:開 始輸出初始化圖形和信息提示輸入電梯控制命令Y電梯上升一層是否輸入w清空鍵盤緩存N是否輸入s電

5、梯上升一層YNY是否小于1的ASC碼NY是否大于8的ASC碼N輸出電梯到達目標樓層的動畫輸入的下一個目標樓層是否合法YN調用程序結束處理模塊結 束3、程序設計思路:電梯模擬程序主要是一個畫圖程序,程序需要利用一連串的畫圖指令來實現動畫效果。首先,程序中將用到INT 10H的一系列指令來實現畫圖功能。要實現動畫效果,如電梯門開關、電梯上下移動就必須在生成新的圖形同時將老的圖形擦去,所以運動的過程分為擦去原有圖像和畫新圖像兩部分完成。當新的圖形可以直接覆蓋原有效果時則直接畫新圖形即可,新圖形無法覆蓋老效果時則首先要用背景顏色將原有圖形重繪一次,這樣就達到了擦出的效果。CPU完成一連串畫圖指令速度是

6、非常迅速的,為了清除觀察到動畫效果所以添加了一個延時模塊,在畫圖命令中調用此命令可以清晰觀察到動畫效果。其次,還需要INT 21H的9H號功能實現字符串的顯示功能。由于需要鍵盤輸入電梯控制相關指令,所以需要用到INT 16H的1H號功能停止和繼續電梯的運動;還需要INT 21H的0AH號功能實現輸入兵顯示字符串;以及INT 21H的0CH號功能清空鍵盤緩存。在此基礎上,用一系列的循環、判斷、跳轉命令將各種功能結合起來最終搭建成模擬電梯程序。4、程序代碼及注釋: CLEAR MACRO ; 清屏的宏 MOV BH,7 ; 卷入行屬性,黑底白字,正常顯示. MOV AX,0600H ; AH=6

7、屏幕初始化或上卷.AL=0 整個窗口空白. INT 10H ; CH=左上角行號,CL=左下角列號. ENDM ; DH=右上角行號,DL=右下角列號. ;- POS MACRO ; 移動光標的宏 MOV BH,00H ; BH=頁號 DH,DL=行號,列號. MOV AH,02H ; AH=2 置光標位置. INT 10H ENDM;- HENG MACRO X1,Y1,COLOR,X2 ; 寫橫的宏 LOCAL BH1 ; 定義標號 MOV CX,X1 ; 起始點橫作標->CX MOV DX,Y1 ; 起始點縱作標->DX BH1: MOV AH,0CH ; 寫象素 MOV A

8、L,COLOR ; 設定顏色參數->AL INT 10H INC CX CMP CX,X2 ; 寫至終點橫作標為止 JNZ BH1 ENDM;- SHU MACRO CX1,CY1,COLOR,CY2 ; 寫豎的宏 LOCAL BH2 ; 定義標號 MOV CX,CX1 MOV DX,CY1 BH2: MOV AH,0CH MOV AL,COLOR ; AL=(00-0FH)共16種顏色. INT 10H INC DX CMP DX,CY2 JNZ BH2 ENDM;- DELAY MACRO ;延時1s的宏 LOCAL READ PUSH DX ;入棧,保護原有DX、CX中的數據 PU

9、SH CX SUB AX,AX INT 1AH ;INT 1AH的0號功能讀當前時鐘值,CX:DX=時鐘計數值 MOV TIME,DX MOV TIME2,CX READ: SUB AX,AX INT 1AH SUB DX,TIME SBB CX,TIME2 CMP DX,DLY JB READ POP CX ;出棧,恢復現場 POP DX ENDM;- UP MACRO N,DX1 ;小方塊上升的宏 LOCAL UPA,UPB ; 定義標號 MOV AL,N ;小方塊從N-1層上升至N層 MOV CH,30 ;小方塊上升一層,并且將下一層的小方塊清除 MUL CH ;30*N個像素 MOV

10、DX,430 SUB DX,AX ;430-30*N個像素得到畫小方塊的縱坐標下限值 MOV DZ,DX ADD DX,20 ;每個小方塊邊長為20個像素 MOV DX1,DX ;得到縱坐標上限值 UPA: HENG 170,DZ,0CH,190 ;畫小方塊 INC DZ MOV AX,DX1 CMP DZ,AX JNZ UPA ADD DX,11 ;坐標調整到移動之前的坐標 MOV DZ,DX ADD DX,20 MOV DX1,DX UPB: HENG 170,DZ,00H,190 ;擦原小方塊 INC DZ MOV AX,DX1 CMP DZ,AX JNZ UPB ENDM;- DOWN

11、 MACRO N,DX1 ;小方塊下降的宏 LOCAL DOWNA,DOWNB ; 定義標號 MOV AL,N ;小方塊從N+1層下降至N層 MOV CH,30 ;小方塊下降一層,并且將上一層的小方塊清除 MUL CH MOV DX,430 SUB DX,AX MOV DZ,DX ADD DX,20 MOV DX1,DX DOWNA: HENG 170,DZ,0CH,190 ;畫小方塊 INC DZ MOV AX,DX1 CMP DZ,AX JNZ DOWNA SUB DX,49 MOV DZ,DX ADD DX,20 MOV DX1,DX DOWNB: HENG 170,DZ,00H,190

12、 ;擦原有小方塊 INC DZ MOV AX,DX1 CMP DZ,AX JNZ DOWNB ENDM;- CLOSE MACRO ;畫電梯關門狀態的宏 LOCAL CE MOV DZ,220 CE: HENG 210,DZ,09H,370 ;電梯關門 INC DZ CMP DZ,420 JNZ CE SHU 291,220,02H,420 ;電梯大門縫隙 SHU 290,220,02H,420 SHU 289,220,02H,420 ENDM;- HALF MACRO ;畫電梯半開門狀態的宏 LOCAL HF MOV DZ,221 HF: HENG 210,DZ,09H,250 ;電梯半開門

13、 HENG 252,DZ,07H,328 HENG 330,DZ,09H,370 INC DZ CMP DZ,420 JNZ HF SHU 251,220,02H,420 ;電梯大門縫隙 SHU 329,220,02H,420 ENDM;- FULL MACRO ;畫電梯全開門狀態的宏 LOCAL FL MOV DZ,221 FL: HENG 210,DZ,09H,215 ;電梯全開門 HENG 217,DZ,07H,363 HENG 365,DZ,09H,370 INC DZ CMP DZ,420 JNZ FL SHU 216,220,02H,420 ;電梯大門縫隙 SHU 364,220,

14、02H,420 ENDM;- PAUSE MACRO ;電梯緊急暫停的宏 LOCAL WAIT,WAN SUB AX,AX MOV AH,1 INT 16H CMP AL,'a' ;讀取鍵盤緩存中是否有"a",有就進入暫停等待循環,沒有則退出 JNZ WAN MOV DX,0301H POS MOV DX,OFFSET MSG7 ;顯示MSG7 MOV AH,9 INT 21H MOV AH,0CH ;清空鍵盤緩存 INT 21H WAIT: CLC ;CF=0 MOV AH,1 INT 16H CMP AL,'b' ;檢測鍵盤緩存中是否有&

15、quot;b",有就退出暫停等待循環,沒有則繼續循環 JNZ WAIT WAN: MOV DX,0301H POS MOV DX,OFFSET MSG6 ;用于將MSG7的信息擦除 MOV AH,9 INT 21H MOV AH,0CH INT 21H ENDM;- data segment MSG1 DB 'Please press "1-8" or "w/s" ro others to terminate.(eg: 1-3-8/w): $' ; 輸出多個空格是為了清空上一次的輸入 MSG2 DB 'Please pr

16、ess any key.','$' MSG3 DB 'Floor: $' MSG4 DB 'Direction: $' MSG5 DB 'To: $' MSG6 DB 'When the elevator running, please press "a" to emergency stop. $'MSG7 DB 'Please press "b" to continue. $' MSG8 DB 'WUST LiGang 2014.2.5 $&

17、#39; DAT DB 0FFH,0,255 DUP(0) DLY EQU 18 DZ DW 0 TIME DW 0,0 NUM1 DB 1 NUM2 DB 1 COUNT DB 0 DX1 DW 0 DX2 DW 0 data ends;- stacks segment STA DW 100 DUP(0) TOP DW ? stacks ends;- code segment assume cs:code,ds:data,ss:stacks;- start proc far mov ax,data mov ds,ax mov ax,stacks mov ss,ax mov ax,data m

18、ov es,ax push ax push bx push cx push dx push si push di MOV CX,0 MOV DX,2479H MOV BH,7 MOV AX,0601H INT 10H MOV AX,0012H ;置圖形顯示方式 INT 10H ;640列*480行,16色. MOV DX,0 ;光標位置初始化 POS HENG 220,99,0AH,420 ;信息欄外邊框 HENG 220,151,0AH,420 SHU 220,99,0AH,151 SHU 420,99,0AH,151 HENG 223,102,0AH,417 ;信息欄內邊框 HENG 22

19、3,148,0AH,417 SHU 223,102,0AH,148 SHU 417,102,0AH,148 CLOSE ;電梯大門處于關閉狀態 HENG 210,220,02H,370 ;電梯大門縫隙邊框 HENG 210,420,02H,370 SHU 210,220,02H,420 SHU 370,220,02H,420 HENG 209,219,02H,371 ;加粗邊框 SHU 209,220,02H,420 SHU 371,220,02H,420 MOV DZ,219 MOV DX1,210 MOV DX2,370 SB1: HENG DX1,DZ,03H,DX2 ;三維電梯上側面

20、DEC DZ INC DX1 INC DX2 CMP DZ,180 JNZ SB1 MOV DZ,371 MOV DX1,220 MOV DX2,420 SB2: SHU DZ,DX1,03H,DX2 ;三維電梯右側面 INC DZ DEC DX1 DEC DX2 CMP DZ,410 JNZ SB2 MOV DZ,421 SB3: HENG 160,DZ,0EH,200 ;畫電梯框架 SUB DZ,30 CMP DZ,151 JNZ SB3 SHU 160,181,0EH,422 SHU 200,181,0EH,422 MOV DZ,400 BRICK: HENG 170,DZ,0CH,19

21、0 ;畫初始小方塊 INC DZ MOV AX,420 CMP DZ,AX JNZ BRICK MOV DX,072BH POS MOV DL,NUM1 ADD DL,30H MOV AH,2 INT 21H ;初始樓層顯示"1" MOV DX,1C3BH POS MOV DX,OFFSET MSG8 ;顯示MSG8 MOV AH,9 INT 21H MOV DX,0723H POS MOV DX,OFFSET MSG3 ;顯示MSG3 MOV AH,9 INT 21H MOV DX,081DH POS MOV DX,OFFSET MSG4 ;顯示MSG4 MOV AH,9

22、 INT 21H MOV DX,082DH POS MOV DX,OFFSET MSG5 ;顯示MSG5 MOV AH,9 INT 21H MOV DX,0301H POS MOV DX,OFFSET MSG6 ;顯示MSG6 MOV AH,9 INT 21H INPUT: MOV DX,0101H POS MOV DX,OFFSET MSG1 ;顯示MSG1 MOV AH,9 INT 21H MOV DX,0143H POS MOV DX,OFFSET DAT ;輸入并顯示字符串 MOV AH,10 INT 21H MOV AL,DAT+1 MOV COUNT,AL ;記錄輸入的字符個數 M

23、OV BP,2 MOV AL,DATBP CMP AL,'w' ;輸入w則上升一層 JE UP1 CMP AL,'s' ;輸入s則下降一層 JE DOWN1 CMP AL,31H ;輸入小于1的ACS碼則退出 JB OVER CMP AL,38H ;輸入大于8的ACS碼則退出 JA OVER AND AL,0FH ;輸入1至8則進入多樓層控制命令循環TARGET1 MOV NUM1,AL TARGET1: ADD BP,2 ;因為輸入格式為"1-2-6",每次BP偏移兩位起到了僅取有效位數字的作用 MOV AL,DATBP AND AL,0F

24、H ;將字符轉換為數字 CMP AL,1 ;檢測后續輸入的字符是否合法,超出18范圍則返回輸入界面 JB INPUT CMP AL,8 JA INPUT MOV NUM2,AL MOV DX,0831H POS MOV DL,DATBP ;顯示電梯下一站要停的樓層數 MOV AH,2 INT 21H DELAY TARGET2: MOV AL,NUM2 CMP AL,NUM1 ;若下一站樓層大于當前樓層,則跳至上升命令段 JA TARGET3 ;若下一站樓層小于當前樓層,則在當前命令段 MOV AL,NUM2 CMP AL,NUM1 ;第二次比較,若到達目標樓層或兩站樓層相同則跳至SHOW命令

25、顯示開關門動畫 JZ SHOW DEC NUM1 PAUSE ;在畫圖命令之前插入暫停命令,確保電梯在任何樓層時都能暫停 DOWN NUM1,DX1 ;電梯下降 MOV DX,0829H POS MOV DL,19H ;顯示下箭頭 MOV AH,2 INT 21H MOV DX,072BH POS MOV DL,NUM1 ;顯示當前樓層數 ADD DL,30H ;將數字轉換為ASC碼 MOV AH,2 INT 21H DELAY ;電梯在每一層停留1S以便觀察 JMP TARGET2 TARGET3: INC NUM1 PAUSE ;在畫圖命令之前插入暫停命令,確保電梯在任何樓層時都能暫停 U

26、P NUM1,DX1 ;電梯上升 MOV DX,0829H POS MOV DL,18H ;顯示上箭頭 MOV AH,2 INT 21H MOV DX,072BH POS MOV DL,NUM1 ;顯示當前樓層數 ADD DL,30H ;將數字轉換為ASC碼 MOV AH,2 INT 21H DELAY ;電梯在每一層停留1S以便觀察 JMP TARGET2 UP1: CMP NUM1,8 JNB INPUT INC NUM1 MOV DX,0831H POS MOV DL,NUM1 ;顯示電梯下一站要停的樓層數 ADD DL,30H MOV AH,2 INT 21H UP NUM1,DX1

27、;電梯上一層 MOV DX,0829H POS MOV DL,18H ;顯示上箭頭 MOV AH,2 INT 21H MOV DX,072BH POS MOV DL,NUM1 ;顯示當前樓層數 ADD DL,30H ;將數字轉換為ASC碼 MOV AH,2 INT 21H JMP SHOW DOWN1: CMP NUM1,1 JNA INPUT DEC NUM1 MOV DX,0831H POS MOV DL,NUM1 ;顯示電梯下一站要停的樓層數 ADD DL,30H MOV AH,2 INT 21H DOWN NUM1,DX1 ;電梯下一層 MOV DX,0829H POS MOV DL,19H ;顯示下箭頭 MOV AH,2 INT 21H MOV DX,072BH POS MOV DL,NU

溫馨提示

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

評論

0/150

提交評論