實(shí)驗(yàn)2:8255七段數(shù)碼管靜動(dòng)態(tài)顯示_第1頁(yè)
實(shí)驗(yàn)2:8255七段數(shù)碼管靜動(dòng)態(tài)顯示_第2頁(yè)
實(shí)驗(yàn)2:8255七段數(shù)碼管靜動(dòng)態(tài)顯示_第3頁(yè)
實(shí)驗(yàn)2:8255七段數(shù)碼管靜動(dòng)態(tài)顯示_第4頁(yè)
實(shí)驗(yàn)2:8255七段數(shù)碼管靜動(dòng)態(tài)顯示_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)實(shí)驗(yàn)報(bào)告書學(xué)號(hào): 姓名: 班級(jí): 同組名單: 實(shí)驗(yàn)日期: 2012.12.21 實(shí)驗(yàn)題目: 七段數(shù)碼管的靜態(tài)顯示 實(shí)驗(yàn)?zāi)繕?biāo): 掌握數(shù)碼管顯示數(shù)字的原理 (功能:鍵盤輸入一位十進(jìn)制數(shù)字(09),用七段數(shù)碼管顯示。) 解題思路:1. 靜態(tài)顯示:按圖 10(a)連接好電路,將8255的A口PA0-PA6分別與七段數(shù)碼管的斷碼驅(qū)動(dòng)輸入端a-g項(xiàng)鏈,位碼驅(qū)動(dòng)輸入端S1接+5V,S0、dp接地。編程從鍵盤輸入一位十進(jìn)制數(shù)字,在七段數(shù)碼管上顯示出來(lái)。2. 動(dòng)態(tài)顯示:按圖10(b)連接好電路,七段數(shù)碼管段碼連接不變,位碼驅(qū)動(dòng)輸入端S1,S0接8255C口的PC1,PC0。編程在兩個(gè)數(shù)碼管上顯示“56”。程

2、序框圖:靜態(tài)顯示見圖11(a),動(dòng)態(tài)顯示見圖11(b)。關(guān)鍵問題分析(靜態(tài)顯示):1、 按鍵判斷和程序結(jié)束判斷按鍵來(lái)說(shuō),由于程序中必須輸入數(shù)字,所以沒有必要對(duì)是否按鍵進(jìn)行判斷,只需要判斷按鍵是否在0-9之間即可。用以下程序即可:cmp al,0 jl exit ; jl,條件轉(zhuǎn)移指令,即在小于時(shí)轉(zhuǎn)移cmp al,9 jg exit ;jg, 條件轉(zhuǎn)移指令,即在大于時(shí)轉(zhuǎn)移程序中還要用到“cmp”即比較指令,用來(lái)比較輸入數(shù)與0、9的大小關(guān)系。程序結(jié)束:如若輸入的數(shù)字小于0或者大于9,必須直接跳出程序,即結(jié)束指令必須單獨(dú)占用一個(gè)程序段,這樣,程序順序執(zhí)行完畢也可以順利返回DOS。2、 七段碼顯示。實(shí)

3、驗(yàn)指導(dǎo)書中給出了七段碼的字型代碼。這樣一來(lái),七段碼的顯示只需要用換碼指令“XLAT”便可以輕松實(shí)現(xiàn)。前提是必須將七段碼字型編成數(shù)碼表以字符串的形式寫進(jìn)程序中。3、 數(shù)字鍵ASCII碼與數(shù)值間的轉(zhuǎn)換。因?yàn)?的ASCII碼為30H,所以數(shù)字鍵ASCII碼與數(shù)值間的轉(zhuǎn)換時(shí)只需減去30H即可,可用下列語(yǔ)句實(shí)現(xiàn):sub al,30h程序清單: 靜態(tài)顯示:data segmentioportequ 0c800h-0280hio8255aequ ioport+288hio8255bequ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmes

4、g1 db 0dh,0ah,Input a num (0-9h):,0dh,0ah,$data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口為輸出方式mov al,80h ;10000000B,控制字PA以方式0輸出out dx,alzby: mov dx,offset mesg1 ;顯示提示信息mov ah,09hint 21hmov ah,01 ;從鍵盤接收字符int 21hcmp al,0 ;是否小于0jl exit ;如若小于0,則跳轉(zhuǎn)到exit退出程序

5、cmp al,9 ;是否大于9jg exit ; 如若大于9,則跳轉(zhuǎn)到exit退出程序sub al,30h ;將所得字符的ASCII碼減30H,數(shù)字鍵ascii碼同數(shù)值轉(zhuǎn)換mov bx,offset led ;bx為數(shù)碼表的起始地址xlat ;求出相應(yīng)的段碼mov dx,io8255a ;從8255的A口輸出out dx,aljmp zby ;轉(zhuǎn)zbyexit: mov ah,4ch ;返回DOSint 21hcode endsend start動(dòng)態(tài)顯示:data segmentioportequ 0c800h-0280hio8255aequ ioport+28ahio8255bequ iop

6、ort+28bhio8255cequ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段碼buffer1 db 5,6 ;存放要顯示的個(gè)位和十位bz dw ? ;位碼data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,io8255b ;將8255設(shè)為A口輸出mov al,80h ;10000000B,控制字PA以方式0輸出out dx,almov di,offset buffer1 ;設(shè)di為顯示緩沖區(qū)loop2:mov bh

7、,02zby: mov byte ptr bz,bhpush didec diadd di, bzmov bl,di ;bl為要顯示的數(shù)pop di mov al,0 mov dx,io8255a out dx,almov bh,0mov si,offset led ;置led數(shù)碼表偏移地址為SIadd si,bx ;求出對(duì)應(yīng)的led數(shù)碼mov al,byte ptr simov dx,io8255c ;自8255A的口輸出out dx,almov al,byte ptr bz ;使相應(yīng)的數(shù)碼管亮mov dx,io8255aout dx,almov cx,3000delay:loop dela

8、y ;延時(shí)mov bh,byte ptr bzshr bh,1jnz zbymov dx,0ffhmov ah,06int 21hje loop2 ;有鍵按下則退出mov dx,io8255amov al,0 ;關(guān)掉數(shù)碼管顯示out dx,almov ah,4ch ;返回int 21hcode endsend start運(yùn)行結(jié)果:靜態(tài)顯示:在鍵盤上輸入一個(gè)0-9的任意數(shù)字,會(huì)顯示在數(shù)碼管上。動(dòng)態(tài)顯示:在程序中寫入6,5,讀取順序是第一位是個(gè)位,第二位是十位,數(shù)碼管上顯示56.問題與討論:1、鍵盤輸入不符合要求如何處理?如若鍵盤輸入不符合要求,則立即跳到結(jié)束程序段,返回到DOS。2、用8255的

9、其他端口輸出怎么處理?由于其他端口輸出并沒有用到,控制字中寫成0或者1都行,一般習(xí)慣上不用到填0即可。3、在兩位七段數(shù)碼管間切換顯示怎么處理?通過(guò)硬件連線即可實(shí)現(xiàn)。七段數(shù)碼管連接和S1連接不變。將S0不接地,接到+5V,并同時(shí)將S1和S0接到兩個(gè)不同的邏輯開關(guān)。程序LINK運(yùn)行完畢。當(dāng)S1邏輯開關(guān)為高電平時(shí)(S0邏輯開關(guān)為低電平),在第一個(gè)數(shù)碼管顯示;當(dāng)S0邏輯開關(guān)為高電平時(shí)(S1邏輯開關(guān)為低電平),在第二個(gè)數(shù)碼管顯示,這樣便實(shí)現(xiàn)了在兩位數(shù)碼管間的切換。小結(jié)(體會(huì)和收獲)靜態(tài)顯示是從鍵盤獲取一個(gè)數(shù)值,然后通過(guò)程序比較得出鍵盤輸入的數(shù)字量,由PA端口輸出到數(shù)碼管上。而動(dòng)態(tài)顯示是將兩個(gè)數(shù)字寫入程序中,由程序讀取數(shù)字然后按位輸出到數(shù)碼管上顯示。原理說(shuō)得簡(jiǎn)單,但是程序本身個(gè)人感覺還是相當(dāng)復(fù)雜的,尤其動(dòng)態(tài)顯示,程序如何讀取已輸入的數(shù)字,以及讀取數(shù)字的順序都會(huì)影響到數(shù)碼管的顯示。 靜態(tài)顯示過(guò)程中,我們碰到數(shù)碼管一直顯示8的狀態(tài),這并不是預(yù)期的效果。后來(lái)發(fā)現(xiàn),由于在程序中用符號(hào)定

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論