微機(jī)原理課程設(shè)計(jì)說明書簡單計(jì)算機(jī)的設(shè)計(jì)_第1頁
微機(jī)原理課程設(shè)計(jì)說明書簡單計(jì)算機(jī)的設(shè)計(jì)_第2頁
微機(jī)原理課程設(shè)計(jì)說明書簡單計(jì)算機(jī)的設(shè)計(jì)_第3頁
微機(jī)原理課程設(shè)計(jì)說明書簡單計(jì)算機(jī)的設(shè)計(jì)_第4頁
微機(jī)原理課程設(shè)計(jì)說明書簡單計(jì)算機(jī)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、鄭州航空工業(yè)管理學(xué)院微機(jī)原理課程設(shè)計(jì)說明書 2007 級(jí) 電氣工程及其自動(dòng)化 專業(yè) 1206972 班級(jí)題 目 簡單計(jì)算機(jī)的設(shè)計(jì) 指導(dǎo)教師 職 稱 學(xué) 號(hào) 1206972 姓 名 二一0 年 六 月 十八 日簡易計(jì)算器的設(shè)計(jì)摘要: 1、課題:設(shè)計(jì)一個(gè)可以進(jìn)行2位數(shù)的四則運(yùn)算的計(jì)算器。2、要求:(1)鍵輸入數(shù)和運(yùn)算符號(hào); (2)led顯示運(yùn)算過程和結(jié)果(十進(jìn)制數(shù)); (3)表示出當(dāng)前的運(yùn)算類型; (4)具有清零和復(fù)位功能; (5)具有連續(xù)運(yùn)算功能。關(guān)鍵詞: 8279a芯片、74ls138譯碼器、74ls240芯片、小鍵盤、led發(fā)光二極管。一、簡單計(jì)算器工作的基本原理:首先利用程序不斷掃描鍵盤是

2、不是有輸入,如果沒有就一直掃描,如果有就停止掃描,完成輸入,利用匯編的程序核對(duì)輸入鍵的數(shù)值,通過調(diào)用子程序進(jìn)行2位數(shù)四則運(yùn)算。運(yùn)算完成后將運(yùn)算的結(jié)果儲(chǔ)存并顯示到led顯示器上。通過鍵盤上的c鍵實(shí)現(xiàn)清零和復(fù)位功能。在一次運(yùn)算之后可以直接進(jìn)行下一次運(yùn)算無需復(fù)位。二、設(shè)計(jì)方案 1、硬件部分本次設(shè)計(jì)所選用的芯片為:8279a芯片、led發(fā)光二極管、小鍵盤。由于8279a的輸出電流與led不匹配的問題,需要驅(qū)動(dòng)電流,本實(shí)驗(yàn)中選擇74ls240。(1)、8279a芯片在本設(shè)計(jì)中用8279a芯片控制鍵盤輸入和led顯示。8279a芯片是一種通用的可編程序的鍵盤/顯示接口器件,可與任何8位機(jī)接口,能完成鍵盤輸

3、入和led顯示控制兩種功能。采用8279作為鍵盤/顯示器接口,則可以實(shí)現(xiàn)對(duì)鍵盤、顯示器自動(dòng)掃描,8279主要是管理鍵盤輸入和顯示器輸出的。8279可編程鍵盤顯示器接口芯片具有動(dòng)態(tài)顯示驅(qū)動(dòng)電路簡單、不占用cpu 的時(shí)間、可自動(dòng)進(jìn)行鍵盤掃描、與計(jì)算機(jī)接口方便、編程容易、系統(tǒng)靈活等特點(diǎn),是實(shí)時(shí)性較高的測控系統(tǒng)的首選器件之一。(2)、74ls138譯碼器在本設(shè)計(jì)中74ls138譯碼器用來掃描計(jì)數(shù)器采用編碼工作方式。74ls138譯碼器的功能:74ls138是3/8譯碼器,即對(duì)3個(gè)輸入信號(hào)進(jìn)行譯碼,得到8個(gè)輸出狀態(tài)。g1、g2a、g2b為數(shù)據(jù)允許輸出端,g2a、g2b低電平有效,g1高電平有效。a、b、

4、c為譯碼信號(hào)輸出端,y0y7為譯碼輸出端,低電平有效。(3)、74ls240譯碼器本設(shè)計(jì)中74ls240譯碼器主要是為增加led的驅(qū)動(dòng)電流。74ls240譯碼器的功能:74ls240 ttl 八反相三態(tài)緩沖器/線驅(qū)動(dòng)器各個(gè)引出端: 1a、2a為輸入端; 、為三態(tài)允許端(低電平有效);1y8y為輸出端。(4)、小鍵盤本設(shè)計(jì)中小鍵盤用于輸入二進(jìn)制數(shù)字。(5)、led發(fā)光二極管在本設(shè)計(jì)中采用7段數(shù)字led發(fā)光二級(jí)管,做為終端顯示。顯示數(shù)值的輸入及結(jié)果輸出的顯示。在本設(shè)計(jì)中采用共陰極接法。 2、軟件部分輸入:小鍵盤上的16個(gè)按鍵中0到9十個(gè)數(shù)字鍵作為數(shù)字輸入,a、b、c、d分別作為加、減、乘、除,f作

5、為等于號(hào)。通過對(duì)8279初始化,實(shí)現(xiàn)對(duì)每個(gè)按鍵賦予不同的功能。顯示:8279a芯片內(nèi)部有一個(gè)顯示ram和一個(gè)fifo ram,可以暫存從小鍵盤中讀出的數(shù)據(jù),同時(shí)可以將內(nèi)存中的數(shù)據(jù)暫存到顯示ram中,簡化了程序復(fù)雜程度。每次將各個(gè)位要顯示的數(shù)據(jù)處理好后到換碼表中找到對(duì)應(yīng)值,初始化8279a后將值送到數(shù)據(jù)口,即實(shí)現(xiàn)顯示的目的。清零:在程序中設(shè)置了按鍵數(shù)目的限制(定為8),當(dāng)8個(gè)數(shù)碼塊全有字符顯示后再按鍵,清除顯示。三、硬件設(shè)計(jì)硬件電路圖的設(shè)計(jì):圖中8279a的地址由和a0決定,故數(shù)據(jù)口地址為7ffeh,命令口地址為7fffh。圖中顯示部分段選碼由8279的outa3outa0、outb3outb0

6、通過驅(qū)動(dòng)器74ls240提供,位選碼由sl2sl0 經(jīng)3-8譯碼器通過驅(qū)動(dòng)器74ls240提供。四、軟件設(shè)計(jì)在軟件設(shè)計(jì)中,顯示方式采用了8個(gè)字符顯示,從左輸入方式,編碼掃描鍵盤,雙鍵鎖定。由于該系統(tǒng)對(duì)實(shí)時(shí)性及速度要求并不十分高,所以時(shí)鐘頻率采用6m hz已足夠了,故程序時(shí)鐘命令字取為2ah,用以保證100khz的內(nèi)部工作頻率。由于采用10ms定時(shí)掃描查詢方式,所以在下次開始掃描時(shí),先應(yīng)清空8279a,清除顯示ram大約需要160s的時(shí)間,在此期間,fifo狀態(tài)字的最高位du=1,表示顯示無效,cpu不能顯示ram寫入數(shù)據(jù),所以清除命令狀態(tài)字取d1h。cpu對(duì)8279a的控制是先讀回8279a的

7、狀態(tài)字,查看piforam中有無字符,若有將根據(jù)字符個(gè)數(shù)讀出所有字符,并進(jìn)行相應(yīng)處理;若無,則直接返回。cpu對(duì)8279a的監(jiān)視采用查詢方式,對(duì)8279a分配的數(shù)據(jù)口地址為8000h,狀態(tài)口地址為8001h,cpu每隔10ms定時(shí)中斷查詢一次,所有顯示采用查詢段碼表的方式實(shí)現(xiàn),簡化了程序設(shè)計(jì)過程,提高了程序質(zhì)量。程序流程圖如下:開始調(diào)用地址轉(zhuǎn)化調(diào)用8279初始化di取數(shù)據(jù)首地址是否有按鍵按下n按鍵數(shù)加1顯示結(jié)果al=6 ?al與keycont換call key_numal中是否為加al是否為減al是否為乘號(hào)al是否為除al中大于10alkeyount,inc alal5?重新掃描按鍵轉(zhuǎn)加法轉(zhuǎn)減

8、法轉(zhuǎn)乘法轉(zhuǎn)除法按鍵數(shù)置0,清除顯示清零nnnnyynnyynnn程序清單:stack segment stcak db 64 dup(?)stack ends data segment org 3000h var1 db 00h,01h,02h,03h,04h var2 db 3fh, 3fh, 3fh, 3fh, 3fh, 3fh, 3fh, 3fh, 3fh, 3fh var3 db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h var4 db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00

9、htable db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hdata endscode segment assume cs:code,ds:data,ss:stackstart:mov ax,data mov ds,ax mov al,88h out 63h,al ;82255a初始化 mov bx,0000h ;bx清零stt: mov al,00h ;鍵盤測試 out 61h.alnext: in al,62h and al,0c0h cmp al,0c0h jnz keyabc call disp ;調(diào)

10、用顯示程序 jmp sttkeyabc:call time ;延時(shí) in al,62h and al,0c0h cmp al,0c0h jnz key jmp sttkey: mov al,0feh ;鍵盤掃描識(shí)別 out 61h,al in al,62h test al,80h jnz key_0 call key8 jmp sttkkey_0: test al,40h jnz key_9 call key0 jmp sttkkey_9: mov al,0fdh out 61h,al in al,62h test al,80h jnz key_1 call key9 jmp sttkkey_

11、1: test al,40h jnz key_a call key1 jmp sttkkey_a: mov al,0fbh out 61h,al in al,62h test al,80h jnz key_2 call keya jmp sttkkey_2: test al,40h jnz key_b call key2 jmp sttkkey_b: mov al,0f7h out 61h,al in al,62h test al,80h jnz key_3 call keyb jmp sttkkey_3: test al,40h jnz key_c call key3 jmp sttkkey

12、_c: mov al,0efh out 61h,al in al,62h test al,80h jnz key_4 call keyc jmp sttkkey_4: test al,40h jnz key_d call key4 jmp sttkkey_d: mov al,0dfh out 61h,al in al,62h test al,80h jnz key_5 call keyd jmp sttkkey_5: test al,40h jnz key_d call key5 jmp sttkkey_e: mov al,0bfh out 61h,al in al,62h test al,8

13、0h jnz key_6 call keye jmp sttkkey_6: test al,40h jnz key_f call key6 jmp sttkkey_f: mov al,07fh out 61h,al in al,62h test al,80h jnz key_7 call keyf jmp sttkkey_7: test al,40h jnz key_71 call key7 jmp sttkkey_71:jmp sttkkey9: cmp bh,00h ;按鍵9處理子程序 jz key9_1 ;未按過符號(hào)鍵,不清零 call clear ;已按過符號(hào)鍵,清零key9_1:ca

14、ll lp1 ;低4位字節(jié)前移 mov al,6fh ;最低字節(jié)輸入一個(gè)數(shù)據(jù) mov si+4,al mov al,09h mov di+4,al call disp ;顯示 ret;返回key8: cmp bh,00h ;按鍵8處理子程序 jz key8_1 call clearkey8_1:call lp1 mov al,7fh mov si+4,al mov al,08h mov di+4,al call disp retkey7: cmp bh,00h ;按鍵7處理子程序 jz key7_1 call clearkey7_1:call lp1 mov al,07h mov si+4,a

15、l mov al,07h mov di+4,al call disp retkey6: cmp bh,00h ;按鍵6處理子程序 jz key6_1 call clearkey6_1:call lp1 mov al,7dh mov si+4,al mov al,06h mov di+4,al call disp retkey5: cmp bh,00h ;按鍵5處理子程序 jz key5_1 call clearkey5_1:call lp1 mov al,6dh mov si+4,al mov al,05h mov di+4,al call disp retkey4: cmp bh,00h ;

16、按鍵4處理子程序 jz key4_1 call clearkey4_1:call lp1 mov al,66h mov si+4,al mov al,04h mov di+4,al call disp retkey3: cmp bh,00h ;按鍵3處理子程序 jz key3_1 call clearkey3_1:call lp1 mov al,4fh mov si+4,al mov al,03h mov di+4,al call disp retkey2: cmp bh,00h ;按鍵2處理子程序 jz key2_1 call clearkey2_1:call lp1 mov al,5bh

17、mov si+4,al mov al,02h mov di+4,al call disp retkey1: cmp bh,00h ;按鍵1處理子程序 jz key1_1 call clearkey1_1:call lp1 mov al,06h mov si+4,al mov al,01h mov di+4,al call disp retkey0: cmp bh,00h ;按鍵0處理子程序 jz key0_1 call clearkey0_1:call lp1 mov al,3fh mov si+4,al mov al,00h mov di+4,al call disp retkeya: cm

18、p bh,00h ;按鍵+號(hào)處理子程序 jnz keya_1 call lp3 ;保存輸入的數(shù)據(jù)keya_1:mov bx,0101h;設(shè)置符號(hào)標(biāo)志 ret;返回keyb: cmp bh,00h ;按鍵-號(hào)處理子程序 jnz keyb_1 call lp3 ;保存輸入的數(shù)據(jù)keyb_1:mov bx,0102h ;設(shè)置符號(hào)標(biāo)志 ret;返回keyc: cmp bh,00h ;按鍵*號(hào)處理子程序 jnz keyc_1 call lp3 ;保存輸入的數(shù)據(jù)keyc_1:mov bx,0103h ;設(shè)置符號(hào)標(biāo)志 ret;返回keyd: cmp bh,00h ;按鍵/號(hào)處理子程序 jnz keyd_1

19、call lp3 ;保存輸入的數(shù)據(jù)keyd_1:mov bx,0104h ;設(shè)置符號(hào)標(biāo)志 ret ;返回keye: mov bh,01h ;按鍵=號(hào)處理子程序 cmp bl,01h ;是+號(hào)? jz k1 ;進(jìn)行加法運(yùn)算 cmp bl,02h ;是-號(hào)? jz k2 ;進(jìn)行減法運(yùn)算 cmp bl,03h ;時(shí)*號(hào)? jz k3 ;進(jìn)行乘法運(yùn)算 cmp bl,04h ;是/號(hào)? jz k4 ;進(jìn)行除法運(yùn)算stte: retk1: call add1 jmp sttek2: call sub1 jmp sttek3: call mul1 jmp sttek4: call div1 jmp stte

20、keyf: call clear ;按鍵c(清零)處理子序 retclear: mov si,offset var2;數(shù)據(jù)清零子程序 mov di,offset var3 mov cx,000ahclear1:mov al,3fh mov si,al mov al,00h mov di,al inc si inc di loop clear1 mov bh,00h retadd1: mov si,offset var3 ;加法子程序 mov di,offset var4 clc mov cx,0005hadd_1: mov al,di adc al,si aaa mov di,al inc s

21、i inc di loop add_1 call change call disp retsub1: mov si,offset var3 ;減法子程序 mov di,offset var4 clc mov cx,0005hsub_1: mov al,di mov cl,si aas mov di,al inc si inc di loop sub_1 call change call disp retmul1: mov si,offset var3 ;乘法子程序 mov di,offset var4mov al,di mov cl,si mul cl aam mov di+5,ax mov

22、al,di+1 mul cl aam add al,di+6 aaa mov di+6,ax mov al,di mov cl,si+1 mul cl aam mov si+5,ax mov al,di+1 mul cl aam add al,si+6 aaa mov si+6,ax mov al,di+5 mov di,al mov al,di+6 add al,si+5 aaa mov di+1,al mov al,di+7 adc al,si+6 aaa mov di+2,al mov al.00h adc al,si+7 aaa mov di+3,al call change call

23、 disp retdiv1: mov si,offset var3 ;除法子程序 mov di,offset var4 mov ah,00h mov al,di+1 mov ck,si div cl mov di+1,al mov al,di aad div cl mov di,al call change call disp retlp1: mov cx,0004h ;數(shù)據(jù)移位保存子程序(4位) mov si,offset var2 mov di,offset var3lp2: mov al,si+3 mov si+4,al mov al,di+3 mov di+4,al dec si de

24、c di loop lp2 retlp3: mov cx,0005h ;保存上一次數(shù)據(jù)子程序 mov si,offset var3 mov di,offset var4lp4: mov al,si mov di,al dec si dec di loop lp4 retchange:mov si,offset var2 mov di,offset var3 mov bx,offset table mov cx,0005hcomp0: mov al,di xlat mov si,al inc si inc di loop comp0 retdisp: mov si,offset var1 mov

25、 di,offset var2 mov dl,di+4 cmp 3fh jnz dir4 mov dl,di+3 cmp dl,3fh jnz dir3 mov dl,di+2 cmp dl,3eh jnz dir2 mov dl,di+1 cmp dl,3fh jnz dir1 jmp dir0dir4: mov cx,0005h jmp dirdir3: mov cx,0004h jmp dirdir2: mov cx,0003h jmp dir dir1: mov cx,0002h jmp dirdir0: mov cx,0001hdir: mov al,si out 62h,al mo

26、v al,di out 60h,al call time inc si inc di loop dir rettime: push ax push cx mov cx,0040htime1: mov ax,0300htime2: dec ax jnz time2 loop time1 pop cx pop ax retsttk: call disp ;放鍵測試程序 mov al,00h out 61h,al in al,62h and al,0c0h cmp al,0c0h jnz sttk jmp sttcode ends五、系統(tǒng)調(diào)試1、硬件調(diào)試本設(shè)計(jì)采用八位七段led顯示器、十六鍵小鍵盤、

27、74ls138譯碼器、74ls240譯碼器及8279a芯片。led顯示器采用的是共陰極接法,8279a通過74ls138譯碼器擴(kuò)展28鍵盤、8位顯示器,最后通過七段led顯示出相應(yīng)的數(shù)字。將八位七段led測試完后,都能正常顯示,則硬件調(diào)試成功。2、軟件調(diào)試本實(shí)驗(yàn)通過小鍵盤的按鍵輸入與鍵號(hào)相同的十進(jìn)制數(shù)值,利用led七段顯示器循環(huán)顯示與所按下鍵相對(duì)應(yīng)的十進(jìn)制數(shù),編譯鏈接無錯(cuò)誤后開始單步調(diào)試,找出錯(cuò)誤的地方,確保無誤后全速運(yùn)行得出結(jié)果。3、聯(lián)機(jī)調(diào)試 將實(shí)驗(yàn)箱總電源開關(guān)打開,打開pc機(jī)上的集成軟件。編譯程序、編譯通過后,單步調(diào)試并觀察結(jié)果以及各寄存器中值得變化,然后單步連續(xù)執(zhí)行觀察按下鍵與顯示數(shù)值。出現(xiàn)問題時(shí)對(duì)程序進(jìn)行修改,直至出現(xiàn)正確結(jié)果。4、調(diào)試中出現(xiàn)的問題(1)、全速運(yùn)行時(shí)led顯示器顯示全為暗紅色8字型?原因:由于指令運(yùn)行的速度很快,導(dǎo)致新舊數(shù)據(jù)有重影(前一次顯示數(shù)據(jù)時(shí)為亮的二極管沒有顯示結(jié)束,導(dǎo)致新顯示的數(shù)據(jù)看不清楚)。(2)、 程序在輸入完兩個(gè)數(shù)值

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論