版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄一前言………………1二總體設計………………………2三硬件設計………………………2 3.1微處理器8086芯片…………23.2可編程并行接口芯片8255A………………3 3.3LED數碼管…………………4 3.44×4矩陣按鍵………………4 3.5硬件原理圖…………………6四軟件設計………………………7 4.1程序流程圖…………………7 4.2源代碼………………………9五仿真…………18六課程設計體會………………18七參考文獻……………………19一前言1.1課程設計的目的和任務課程設計是培養(yǎng)和鍛煉學生在學習完本門課后綜合應用所學理論知識,解決實際工程設計和應用問題的能力的重要教學環(huán)節(jié)。它具有動手、動腦和理論聯(lián)系實際的特點,是培養(yǎng)在校工科大學生理論聯(lián)系實際、敢于動手、善于動手和獨立自主解決設計實踐中遇到的各種問題能力的一個重要教學環(huán)節(jié)。通過課程設計,要求學生熟悉和掌握微機系統(tǒng)的軟件、硬件設計的方法、設計步驟,使學生得到微機開發(fā)應用方面的初步訓練。讓學生獨立或集體討論設計題目的總體設計方案、編程、軟件硬件調試、編寫設計報告等問題,真正做到理論聯(lián)系實際,提高動手能力和分析問題、解決問題的能力,實現(xiàn)由學習知識到應用知識的初步過渡。通過本次課程設計使學生熟練掌握微機系統(tǒng)與接口擴展電路的設計方法,熟練應用8086匯編語言編寫應用程序和實際設計中的硬軟件調試方法和步驟,熟悉微機系統(tǒng)的硬軟件開發(fā)工具的使用方法。通過課程設計實踐,不僅要培養(yǎng)學生事實求是和嚴肅認真的工作態(tài)度,培養(yǎng)學生的實際動手能力,檢驗學生對本門課學習的情況,更要培養(yǎng)學生在實際的工程設計中查閱資料,撰寫設計報告表達設計思想和結果的能力。1.2課程設計指導及要求在課程設計時,2~3名同學組成1個設計小組,分別完成項目的功能設計、電路編輯及調試、編碼及調試和課程設計報告編寫工作。同批次同學中選擇同一題的不超過3組。在教師指導下,可以相互討論。每設計小組提交1份設計報告,設計報告由設計小組同學獨立完成,不得互相抄襲。教師的主導作用主要在于指明設計思路,啟發(fā)學生獨立設計的思路,解答疑難問題和按設計進度進行階段審查。學生必須發(fā)揮自身學習的主動性和能動性,主動思考問題、分析問題和解決問題,而不應處處被動地依賴指導老師。同學應積極主動的提出問題、解決問題、討論問題,互相幫助和啟發(fā)。學生在設計中可以引用所需的參考資料,避免重復工作,加快設計進程,但必須和題目的要求相符合,保證設計的正確。指導教師要引導學生學會掌握和使用各種已有的技術資料,不能盲目地、機械地抄襲資料,必須具體分析,使設計質量和設計能力都獲得提高。學生要在老師的指導下制定好自己各環(huán)節(jié)的詳細設計進程計劃,按給定的時間計劃保質保量的完成個階段的設計任務。設計中可邊設計,邊修改,軟件設計與硬件設計可交替進行,問題答疑與調試和方案修改相結合,提高設計的效率,保證按時完成設計工作并交出合格的設計報告。二總體設計設計思路:首先利用程序不斷掃描鍵盤是不是有輸入,如果沒有就一直掃描,如果有就調用子程序進行判斷,是數值則進行存儲并同時進行顯示,是運算符號等就調用相應的子程序進行操作,操作后則繼續(xù)利用程序不斷掃描鍵盤是不是有輸入,從而實現(xiàn)4位十進制數以內的加減乘除法運算。運算完成后將運算的結果儲存并顯示到LED顯示器上。三硬件設計3.1微處理器8086芯片當引腳接高電平時,CPU工作于最小模式。此時,引腳信號24~31的含義及其功能如下:(1)IO/M/(memoryI/Oselect):存儲器、I/O端口選擇控制信號。信號指明當前CPU是選擇訪問存儲器還是訪問I/O端口。為高電平時訪問存儲器,表示當前要進行CPU與存儲器之間的數據傳送。為低電平時,訪問I/O端口,表示當前要進行CPU與I/O端口之間的數據傳送。(2)WR/(write):寫信號,輸出,低電平有效。信號有效時,表明CPU正在執(zhí)行寫HYPERLINK\t"_blank"總線周期,同時由信號決定是對存儲器還是對I/O端口執(zhí)行寫操作。(3)INTA/(interruptacknowledge):可屏蔽中斷響應信號,輸出,低電平有效。CPU通過信號對外設提出的可屏蔽中斷請求做出響應。為低電平時,表示CPU已經響應外設的中斷請求,即將執(zhí)行HYPERLINK\t"_blank"中斷服務程序。(4)ALE(addresslockenable):地址鎖存允許信號,輸出,高電平有效。CPU利用ALE信號可以把AD15~AD0地址/數據、A19/S6~A16/S3地址/狀態(tài)線上的地址信息鎖存在HYPERLINK\t"_blank"地址鎖存器中。(5)DT/(datatransmitorreceive):數據發(fā)送/接收信號,輸出,三態(tài)。DT/信號用來控制數據傳送的方向。DT/為高電平時,CPU發(fā)送數據到存儲器或I/O端口;DT/為低電平時,CPU接收來自存儲器或I/O端口的數據。(6)DEN/(dataenable):數據允許控制信號,輸出,三態(tài),低電平有效。信號用作總線收發(fā)器的選通控制信號。當為低電平時,表明CPU進行數據的讀/寫操作。(7)HOLD(busholdrequest):總線保持請求信號,輸入,高電平有效。在DMA數據傳送方式中,由總線控制器8237A發(fā)出一個高電平有效的總線請求信號,通過HOLD引腳輸入到CPU,請求CPU讓出總線控制權。(8)HLDA(holdacknowledge):總線保持響應信號,輸出,高電平有效。HLDA是與HOLD配合使用的聯(lián)絡信號。在HLDA有效期間,HLDA引腳輸出一個高電平有效的響應信號,同時總線將處于浮空狀態(tài),CPU讓出對總線的控制權,將其交付給申請使用總線的8237A控制器使用,總線使用完后,會使HOLD信號變?yōu)榈碗娖?,CPU又重新獲得對總線的控制權。3.2可編程并行接口芯片8255A微機系統(tǒng)的信息交換有兩種方式:并行通信接口方式和串行通信接口方式。接口電路在CPU和I/O設備之間起著信號的變換和傳輸的作用。8255A可為86系列CPU與外部設備之間提供并行輸入/輸出的通道。由于它是可編程的,可以通過軟件來設置芯片的工作方式,因此,用8255A連接外部設備時,通常不用再附加外部電路,使用教方便。并行接口是在多根數據線上,以數據字節(jié)/字與I/O設備交換信息。
在輸入過程中,輸入設備把數據送給接口,并且使狀態(tài)線“輸入準備好”有效。接口把數據存放在“輸入緩沖寄存器”中,同時使“輸入回答”線有效,作為對外設的響應。外設在收到這個回答信號后,就撤消數據和“輸入準備好”信號。數據到達接口中后,接口會在“狀態(tài)寄存器”中設置輸入準備好標志,或者向CPU發(fā)一個中斷請求。CPU可用查詢方式或中斷方式從接口中讀取數據。接口中的數據被讀取后,接口會自動清除狀態(tài)寄存器中的標志,且撤消對CPU的中斷請求。
在輸出過程中,每當輸出寄存器可以接收數據,接口就會將狀態(tài)寄存器中“輸出準備好”狀態(tài)置1或向CPU發(fā)一個中斷請求,CPU可用查詢或中斷方式向接口輸出數據。當CPU輸出的數據到達接口后,接口會清除“輸出準備好”狀態(tài),把數據送往外設,并向外設發(fā)一個“數據輸出準備好”信號。外設受到驅動后,便接收數據,并向接口電路發(fā)一個“輸出回答”信號,接口收到該回答信號后,又將狀態(tài)寄存器中“輸出準備好”置位,以便CPU輸出下一個數據。定義工作方式控制字:3.3LED數碼管LED為發(fā)光二極管構成的顯示器件,亦稱數碼管。由7個字符段和一個小數點段組成,每段對應一個發(fā)光二極管,當發(fā)光二極管點亮時,相應的字符段點亮。LED有共陰極和共陽極兩種供應狀態(tài)。共陰極顯示時,將LED顯示的COM接地,將八個字符段端a、b、c、d、e、f、g、dp依次與一個8位I/O口的最低到最高位連接,當I/O給LED的哪個字符段送入一個高電平時,該段就被點亮,從而可從這7個字符段中被點亮的構成相應的字符顯示出來。同理,COM陽極即將COM端接Vcc,其顯示原理與COM陰極的基本相同,但I/O口送入低電平是相應的段才被點亮。3.44×4矩陣按鍵 鍵盤是常用信息輸入元件,其實鍵盤也是由一個個按鈕組成,如果是獨立按鈕的話必須要需要一個I/O口對它進行檢測,而鍵盤往往這需要鍵盤按鈕數一半的I/O口數對它進行檢測,也許對一個比較簡單的系統(tǒng)I/O口數一般不是問題,但對于一個大型、復雜的系統(tǒng)來說I/O資源就顯得非常珍貴了,盡量減少I/O使用是非常利于降低成本,另外一方面鍵盤比用獨立按鍵要美觀,這也是鍵盤能夠長期得到人們青睞的原因,可是硬件上的節(jié)省必然導致軟件上編程的復雜,那就來看看鍵盤到底使軟件編程有多復雜? 因為4×4矩陣鍵盤有8個管腳,于是將鍵盤接8255A的PC口,至于為什么選擇PC是有原因的,進行鍵盤掃描一般要求有一部分的I/O口的工作方式是輸入,另一部分I/O是輸出,具體到4×4鍵盤則要求4個I/O口輸入,另外4個輸出,這一點PC口剛好符合,而PA、PB口要么全部輸入或輸出,所以只能是PC口接鍵盤。3.5硬件原理圖四軟件設計4.1程序流程圖(1)鍵盤掃描程序流程圖:開始開始初始化延時12ms鍵掃描保存鍵值鍵閉合?鍵釋放?結束鍵閉合?YYYNNN(2)總程序流程圖:計算鍵值計算鍵值掃描加法運算減法運算顯示乘法運算存儲除法運算數值?運算符?“=”??清零“+”?“--”??“*”??4.2源代碼DATASEGMENTX DB ? ;存放數據的每一位X1 DW ? ;存放第一個數據值X2 DW ? ;存放第二個數據值Y DW ? ;存放運算結果S DB ?;存放運算符號值E DB ?;按下等號鍵標記CC DB ?;存放運算數據位數H DB 0;存放按鍵行號L DB 0;存放按鍵列號DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;段碼表DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,90H ;設置為A口輸入,B口輸出,C口輸出OUT 46H,ALMOV DI,OFFSETX+3 ;DI指向X的高位KKK: CALL KEY ;掃描按鍵JMP KKK;以下為按鍵掃描子程序,程序返回后,在變量H和L中存放當前按鍵的行列號KEYPROCCHECK: CALL DISP ;等待按鍵按下的同時進行顯示MOV AL,0F0H ;所有行輸出低電平OUT 44H,ALIN AL,40HCMP AL,0FFH;讀列值JZ CHECK ;若都為高電平則無鍵按下,等待MOV CX,50LOOP $;延時消抖IN AL,DX;重讀列值CMP AL,0FFHJZ CHECK;無鍵按下一直等待MOV H,0;有鍵按下,先把行列號變量清0MOV L,0MOV BL,01HMOV BH,0FEH;掃描法讀鍵值:從第一行開始測試,即PC0輸出低電平NEXT: MOV AL,BHOUT 44H,ALNEXTH: IN AL,40H ;讀列值,判斷是第幾列有鍵按下TEST AL,BL;從第一列開始判斷JZ WAIT0ROL BL,1CMP BL,10H;當前行狀態(tài)下沒有列有鍵按下,則轉為對下一行的測試JZ NEXTLINC H ;每判斷一列,列號加1JMP NEXTH ;再對下一列進行判斷NEXTL: MOV H,0MOV BL,01HROL BH,1;對下一行測試,讓下一個PC口輸出低電平CMP BH,0EFHJZ EXITINC LJMP NEXTWAIT0: IN AL,40H;若有鍵按下,則等該按鍵松開后再計算鍵值CMP AL,0FFHJNZ WAIT0MOV CX,50LOOP $ ;延時消抖IN AL,40HCMP AL,0FFHJNZ WAIT0CALL KEYVALUE ;調計算鍵值子程序EXIT: RETKEYENDP;以下為計算鍵值子程序,通過行列號計算鍵值(鍵值=行號*4+列號)鍵值存放在DL寄存器中KEYVALUEPROCMOV DL,LMOV DH,HSHL DL,1SHL DL,1 ;列號乘4ADD DL,DHCMP DL,9 ;按下的是數字鍵JNG NUM_CALLCMP DL,14JL CONT_CALL ;按下的是運算鍵CMP DL,14JZ OUTP_CALL ;按下的是等于鍵CMP DL,15JZ CLR_CALL ;按下的是清除鍵NUM_CALL: CALL NUMBER ;調數字鍵處理子程序JMP EXIT1CONT_CALL: MOV S,DL ;存放運算鍵的鍵值MOV E,0CALL COUNT 調運算鍵處理子程序,計算第一個加數JMP EXIT1OUTP_CALL: CALL OUTP ;調等號鍵處理子程序JMP EXIT1CLR_CALL: CALL CLEAR ;調清除鍵處理子程序EXIT1: RETKEYVALUEENDP;以下為清除鍵處理子程序,按下清除鍵后,X變量全部清0CLEARPROCMOV X[3],0MOV X[2],0MOV X[1],0MOV X[0],0CALL BITPRETCLEARENDP;以下為等號鍵處理子程序,該子程序負責將第二個運算數據的數值計算出來存入X2變量;并根據運算符號,調用相應的運算子程序OUTPPROCPUSH AXPUSH DXPUSH BXINC ECALL COUNT;調運算鍵處理子程序,計算第二個運算數據CMP S,10JZ ADD_CALL;運算符為加號,則調用加法子程序CMP S,11JZ SUB_CALL;運算符為減號,則調用減法子程序CMP S,12JZ MUL_CALL;運算符為乘號,則調用乘法子程序CMP S,13CALL DIVP;運算符為除號,則調用除法子程序JMP STORE1ADD_CALL: CALL ADDPJMP STORE1SUB_CALL: CALL SUBPJMP STORE1MUL_CALL: CALL MULPSTORE1: MOV AX,Y;以下程序將各運算子程序返回的運算結果,按位分解,送入X變量MOV DX,0MOV BX,1000DIV BXMOV X[0],ALMOV AX,DXMOV BL,100DIV BLMOV X[1],ALMOV AL,AHMOV AH,0MOV BL,10DIV BLMOV X[2],ALMOV X[3],AHPOP BXPOP DXPOP AXRETOUTPENDP;以下為運算鍵處理子程序,該程序將第一個運算數據的數值計算出來并存入X1變量;或者將第二個運算數據的數值計算出來并存入X2變量;將運算符的值存入S變量COUNTPROCPUSH AXPUSH BXPUSH DXMOV DX,0CALL BITP ;測試X中的數據是多少位CMP CC,4 ;輸入的數據是4位數?JZ C4CMP CC,3 ;輸入的數據是3位數?JZ C3CMP CC,2 ;輸入的數據是2位數?JZ C2JMP C1 ;輸入的數據是1位數?C4: MOV AX,0MOV AL,X[0]MOV BX,1000MUL BXMOV DX,AXC3: MOV AL,X[1]MOV BL,100MUL BLADD DX,AXC2: MOV AL,X[2]MOV BL,10MUL BLADD DX,AXC1: MOV AL,X[3]MOV AH,0ADD DX,AXCMP E,1JNZ X1_SMOV X2,DX ;按下的是等號,則將第二個運算數據的值存入X2變量JMP EXIT3X1_S: MOV X1,DX ;按下的是運算符號,則將第一個運算數據的值存X1變量MOV X[3],0 ;清空X變量MOV X[2],0MOV X[1],0MOV X[0],0EXIT3:POP DXPOP BXPOP AXRETCOUNTENDP;以下為數字鍵處理子程序;該程序,將輸入的數據按位存放在X變量中,并由CC記錄數據的位數NUMBERPROCCMP E,1JNZ CONTINUEMOV E,0CALL CLEARCONTINUE:CMP CC,0;目前數據為0位,即沒有數據,則轉到SSSJZ SSSPUSH AXPUSH DXMOV AL,X[3]MOV AH,X[2]MOV DL,X[1]MOV DH,X[0]MOV CX,8LL: SHL AX,1RCL DX,1LOOP LLMOV X[3],ALMOV X[2],AHMOV X[1],DLMOV X[0],DHPOP DXPOP AXSSS: MOV [DI],DL;將當前鍵入的數據存放到X的最低位INC CC;數據位數加1CMP CC,4;判斷數據位數JNG EXIT2MOV CC,0;如果數據超過4位,重新從最低位開始存放MOV X[2],0MOV X[1],0MOV X[0],0EXIT2:CALL DISP;調顯示子程序,顯示輸入的數據RETNUMBERENDP;加法子程序ADDPPROCPUSH AXMOV AX,X1ADD AX,X2MOV Y,AXPOP AXRETADDPENDP;減法子程序SUBPPROCPUSH AXMOV AX,X1SUB AX,X2MOV Y,AXPOP AXRETSUBPENDP;乘法子程序MULPPROCPUSH AXPUSH DXMOV AX,X1MOV DX,X2MUL DXMOV Y,AXPOP DXPOP AXRETMULPENDP;除法子程序DIVPPROCPUSH AXPUSH BXPUSH DXMOV DX,0MOV AX,X1MOV BX,X2DIV BXMOV Y,AXPOP DXPOP BXPOP AXRETDIVPENDP;顯示子程序,將X中的數值按位顯示出來DISPPROCPUSH BXPUSH AXMOV BH,0LEA SI,DISCODECALL BITP ;測試X位數CMP CC,4JZ QIANCMP CC,3JZ BAICMP CC,2JZ SHICMP CC,1JMP GJMP NONEQIAN: MOV ;從第4位開始顯示MOV AL,AHOUT 44H,ALMOVBL,X[0]MOVAL,[SI+BX]OUT 42H,ALCALLDELYMOV AL,0OUT 42H,ALBAI: MOV ;從第3位開始顯示MOVAL,AHOUT 44H,ALMOV BL,X[1]MOVAL,[SI+BX]OUT 42H,ALCALLDELYMOV AL,0OUT42H,ALSHI: MOV ;從第2位開始顯示MOV AL,AHOUT 44H,ALMOV BL,X[2]MOV AL,[SI+BX]OUT42H,ALCALLDELYMOV AL,0OUT 42H,ALG: MOV AH,01110000B;從第1位開始顯示MOV AL,AHOUT 44H,ALMOVBL,X[3]MOV AL,[SI+BX]OUT 42H,ALCALLDELYJMP EXIT4NONE:MOV AL,0;X中沒有數據,不顯示OUT 42H,ALEXIT4:POP AXPOP BXRETDISPENDP;分析數據位數子程序BITPPROCCMP X[0],0 ;如果X[0]不為0,則數據為4位數JNZ FOURBITCMP X[1],0 ;如果X[1]不為0,則數據為3位數JNZ THREEBITCMP X[2],0 ;如果X[2]不為0,則數據為2位數JNZ TOWBITCMP X[3],0 ;如果X[3]不為0,則數據為1位數JNZ ONEBITJMP ZER0BIT ;否則,沒有數據FOURBIT: MOV CC,4JMP EXIT5THREEBIT:MOV CC,3JMP EXIT5TOWBIT: MOV CC,2JMP EXIT5ONEBIT: MOVCC,1JMPEXIT5ZER0BIT: MOVCC,0EXIT5: RETBITPENDP;延時子程序DELYPROCPUSH CXMOV CX,100LOOP $POP CXRETDELYENDPCODEENDSENDSTART五仿真第一步,進行數碼管顯示的仿真。編寫一段直接賦值送到數碼管顯示的程序,進行數碼管顯示的仿真。第二步,進行鍵盤掃描的仿真。編寫代碼,將掃描到的鍵值送到數碼管顯示。第三步,在數碼管顯示和鍵盤掃描程序都正確的基礎上,逐步增加代碼,增加功能,逐步實現(xiàn)按鍵值的存儲與顯示、清零、加法、減法、乘法、除法等功能的仿真。六課程設計體會 上學期剛學過微機原理,學得不是很深入,僅限于課本知識的掌握,而此次課程設計將會是一個很好的機會,來考察自己對課本知識的掌握以及應用情況。本次課程設計是四人一組,并且自由選擇設計課題,我們小組選擇了簡易計算器的課題,在做的過程中也遇到很多困難。 在硬件設計模塊,參考了課本上的相關例題以及查閱相關資料,發(fā)現(xiàn)關于此次課程設計的所有課題的硬件原理圖都有很大的共同之處,都是利用8086芯片經過地址鎖存器,再通過譯碼器,最后利用8255A或者更多芯片(如8253等)進行設計在軟件設計模塊,數碼管顯示和鍵盤掃描程序參考了書上的相關例題,也查閱了很多資料,發(fā)現(xiàn)原理都差不多,并且對此次課
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告設計合同
- 2025信息系統(tǒng)工程監(jiān)理合同(范本)
- 2025房屋裝修合同樣板
- 課題申報參考:綠色技術創(chuàng)新視角下制造業(yè)碳解鎖成效與實現(xiàn)路徑研究
- 綜合教育視角下的進階數學學習策略
- 探索學生自主學習與心理成長的關聯(lián)
- 教育培訓在農產品電商平臺的價值體現(xiàn)
- 2024年藥品批發(fā)零售項目資金籌措計劃書代可行性研究報告
- 遠程辦公疫情后的新常態(tài)與挑戰(zhàn)
- 2025年湘教新版第二冊生物下冊月考試卷
- 2024版塑料購銷合同范本買賣
- 2024-2025學年人教新版高二(上)英語寒假作業(yè)(五)
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 2024年安徽省中考數學試卷含答案
- 2025屆山東省德州市物理高三第一學期期末調研模擬試題含解析
- 2024年滬教版一年級上學期語文期末復習習題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學英語六年級下冊全冊教案
- 汽車噴漆勞務外包合同范本
- 微項目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學選擇性必修第一冊(魯科版)
評論
0/150
提交評論