微機(jī)課設(shè)2013_第1頁
微機(jī)課設(shè)2013_第2頁
微機(jī)課設(shè)2013_第3頁
微機(jī)課設(shè)2013_第4頁
微機(jī)課設(shè)2013_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、作者 : 董秋成FFF 這是2014年下半學(xué)期微機(jī)原理課程設(shè)計(jì)的資料,希望12級(jí)電氣及13級(jí)自動(dòng)化可以參考一下,早做準(zhǔn)備。實(shí)驗(yàn)形式與考核:實(shí)驗(yàn)分為基礎(chǔ)型實(shí)驗(yàn)(必做,30%)、綜合型實(shí)驗(yàn)(必做,60%)與創(chuàng)新型實(shí)驗(yàn)(選做,10%)。兩人一組進(jìn)度安排:共8周,第一周講課;第二周每組自行設(shè)計(jì);以后老師會(huì)將本次參加實(shí)習(xí)的所有學(xué)生分為三部分(我們是按12班,34班和56班),每部分進(jìn)行12周的實(shí)驗(yàn),要求是只要在沒有課的時(shí)候都需去實(shí)驗(yàn)室實(shí)驗(yàn),要按照上下課的時(shí)間進(jìn)出實(shí)驗(yàn)室并簽到;第八周為實(shí)驗(yàn)報(bào)告的撰寫,但最后交報(bào)告的時(shí)間會(huì)向后拖延23周。實(shí)驗(yàn)報(bào)告要求:要求包括基本設(shè)計(jì)思路,硬件連接,軟件框圖和程序代碼,基礎(chǔ)

2、與綜合題除代碼可打印之外必須手寫,創(chuàng)新題需單獨(dú)寫成報(bào)告。以下是我們這次的基礎(chǔ)題和綜合題,每年的題目都幾乎相同,改動(dòng)的地方很少。其中,綜合型題目選題要求是12班從1-5題中選,34班從6-10題中選,56班從11-15題中選。在實(shí)驗(yàn)前便把每組選好的題目報(bào)給老師。基礎(chǔ)型題目:8253、8255 及 8259 與 8086 系統(tǒng)的連接如圖所示,8255 的 A 口接按鍵,B 口接數(shù)碼管,圖為微機(jī)原理書上習(xí)題8.11的圖要求實(shí)現(xiàn)以下功能:1. 按鍵為 000FH 時(shí)顯示低四位數(shù)字,大于 0FH 以后交替顯示“H”和高四位數(shù)字 ;2. 顯示高四位數(shù)字和“H”時(shí),使其每隔 1 秒切換顯示內(nèi)容 ;(以上兩題

3、為 1 、2 班必選)3. 按鍵為 000FH 時(shí)顯示低四位數(shù)字,并且循環(huán)顯示 0N(N=1F,為當(dāng)前數(shù)字) ,每隔 1 秒切換一個(gè)數(shù)字;4. 按鍵數(shù)字大于 0FH 時(shí),顯示“H” ,并使其亮 1 秒,滅 1 秒 ;(以上兩題為 3 、4 班必選)5. 按鍵為 000FH 時(shí)顯示低四位數(shù)字,大于 0FH 以后顯示“H” ;6. 顯示“H”時(shí),使其亮 1.5 秒,滅 0.5 秒 。(以上兩題為 5 、6 班必選)綜合型題目(任選 2 題) :1. 通過實(shí)驗(yàn)臺(tái)上 PS2 接口連接鍵盤,要求:1)輸入字符(0F) ,轉(zhuǎn)換成十進(jìn)制后用數(shù)碼管(1、2)顯示(0015) ;2)用實(shí)驗(yàn)臺(tái)上的數(shù)碼管(3、4)

4、顯示輸入的次數(shù),計(jì)數(shù)范圍 099。2. 將實(shí)驗(yàn)臺(tái)上的直流可調(diào)信號(hào)(范圍 05V)輸出端與 A/D 轉(zhuǎn)換器的 IN0 連接,要求:1)將該直流信號(hào)進(jìn)行 A/D 轉(zhuǎn)換(ADC0809,端口地址 298H29FH)輸入到計(jì)算機(jī)中,采樣頻率 0.5Hz;2)通過實(shí)驗(yàn)臺(tái)上的 D/A 轉(zhuǎn)換器(DAC0832,端口地址 290H297H)輸出一個(gè)與之對(duì)應(yīng)的模擬電壓量(范圍 05V) 。3. 通過實(shí)驗(yàn)箱的麥克、喇叭與定時(shí)器實(shí)現(xiàn)數(shù)字錄音機(jī)的功能,要求:1) 用 ADC0809 以 10kHz 的頻率采集 IN2 輸入的語音數(shù)據(jù)并存入內(nèi)存,共采集50000 個(gè)數(shù)據(jù)(錄音) ;2) 然后使用 8253 控制喇叭發(fā)聲

5、(放音) 。4. 利用 8253、8255 和中斷系統(tǒng)實(shí)現(xiàn)以下功能:1)使數(shù)碼管實(shí)現(xiàn)秒表功能,顯示數(shù)字 00.0010.00,每隔 0.01 秒數(shù)字變化一次;2)讀入 8 個(gè)開關(guān)的狀態(tài)值,將這兩位數(shù)字以 16 進(jìn)制(范圍 00HFFH)在8x8LED 點(diǎn)陣模塊上顯示。5. 利用液晶模塊顯示以下文字,并實(shí)現(xiàn)橫向和縱向的滾動(dòng):天津大學(xué)自動(dòng)化學(xué)院6. 用 8253 和 8255 記錄實(shí)驗(yàn)臺(tái)上脈沖按鍵的脈沖寬度,要求:1)將脈沖寬度在實(shí)驗(yàn)臺(tái)的液晶屏上顯示(帶小數(shù)點(diǎn)和單位) ;2)在液晶屏上顯示按鍵次數(shù)(顯示方式“按鍵次數(shù):*” ) 。7. 通過實(shí)驗(yàn)箱上的可調(diào)電壓旋鈕控制步進(jìn)電機(jī)轉(zhuǎn)速,要求:1)根據(jù)可調(diào)

6、電壓的輸出值,對(duì)應(yīng)電機(jī)轉(zhuǎn)速由 0100r/min,轉(zhuǎn)速與電壓復(fù)制成線性關(guān)系,可調(diào)電壓的采樣頻率為 0.5Hz;2)將電機(jī)轉(zhuǎn)速在數(shù)碼管或液晶屏上顯示輸出。8. 通過實(shí)驗(yàn)臺(tái)上 PS2 接口連接鍵盤,要求:1)輸入字符,并在實(shí)驗(yàn)箱的 8x8LED 點(diǎn)陣顯示該字符;2)用兩種顏色各顯示一次,并以周期 0.5 秒閃爍。9. 將實(shí)驗(yàn)臺(tái)上的直流可調(diào)信號(hào)(范圍 05V)輸出端與 A/D 轉(zhuǎn)換器的 IN0 連接,要求:1)將該直流信號(hào)進(jìn)行 A/D 轉(zhuǎn)換(ADC0809,端口地址 298H29FH)輸入到計(jì)算機(jī)中,采樣頻率 1Hz;2)在 PC 機(jī)屏幕或?qū)嶒?yàn)臺(tái)液晶屏上顯示該信號(hào)的電壓值(小數(shù)點(diǎn)后兩位) 。10.

7、通過 PC 機(jī)的鍵盤輸入一串字符(以“$”作為結(jié)束符) ,并在實(shí)驗(yàn)臺(tái)的液晶屏上顯示顯示輸出,要求:1)可顯示基本的 ASCII 碼(字母、數(shù)字、標(biāo)點(diǎn)等) ;2)在液晶屏上動(dòng)態(tài)顯示輸入內(nèi)容(包含空格、換行、回車等格式) 。11. 利用定時(shí)器 8253 和外擴(kuò)展的鍵盤顯示模塊, 實(shí)現(xiàn)時(shí)鐘顯示及時(shí)間設(shè)置功能:1)時(shí)鐘顯示內(nèi)容為“分:秒”,即“MM.SS”;2)P 鍵用來啟動(dòng)時(shí)鐘設(shè)置,通過鍵盤上的數(shù)字修改時(shí)間,參數(shù)在修改過程中處于閃爍狀態(tài),閃爍頻率 2Hz。12. 在實(shí)驗(yàn)臺(tái)的液晶屏上以如下方式顯示時(shí)鐘:1)動(dòng)態(tài)顯示“分:秒” ;2)顯示界面如下:18:3513. 將實(shí)驗(yàn)臺(tái)上的直流可調(diào)信號(hào)(范圍 05V

8、)輸出端與 A/D 轉(zhuǎn)換器的 IN0 連接,要求:1)將該直流信號(hào)進(jìn)行 A/D 轉(zhuǎn)換(ADC0809,端口地址 298H29FH)輸入到計(jì)算機(jī)中,采樣頻率 1Hz;2)在外擴(kuò)展的 LCD 模塊上顯示該信號(hào)的電壓值(精確到小數(shù)點(diǎn)后 2 位) 。14. 通過 PC 機(jī)鍵盤控制步進(jìn)電機(jī)轉(zhuǎn)角,要求:1)從鍵盤輸入數(shù)字 0360,對(duì)應(yīng)電機(jī)轉(zhuǎn)角由 0360,轉(zhuǎn)角與數(shù)字大小成線性關(guān)系,輸入數(shù)字的采樣頻率為 5Hz;2)將轉(zhuǎn)角在液晶屏上顯示。15. 通過實(shí)驗(yàn)臺(tái)上 PS2 接口連接鼠標(biāo),要求:1)在實(shí)驗(yàn)箱的液晶屏上顯示小箭頭,并根據(jù)鼠標(biāo)的移動(dòng)改變箭頭的位置2)刷新頻率 10Hz,并且使箭頭限定在屏幕范圍以內(nèi)。-

9、華麗麗的分割線【明明不華麗】-以上都是官方資料,下面說一下我自己感受的實(shí)驗(yàn)技巧如果你是一個(gè)勤奮求學(xué)的少年,那么你大可在看完本篇日志后便開始著手設(shè)計(jì)與編程。如果你跟我一樣是個(gè)重度拖延癥患者,那你大可不必?fù)?dān)心,在到你們進(jìn)實(shí)驗(yàn)室之前都可高枕無憂,在實(shí)驗(yàn)過程中解決即可?,F(xiàn)在說一下詳細(xì)的實(shí)驗(yàn)過程:到實(shí)驗(yàn)室的第一次,老師會(huì)分配給你一個(gè)實(shí)驗(yàn)臺(tái),在整個(gè)實(shí)驗(yàn)過程中你們組就用這塊實(shí)驗(yàn)臺(tái),除非有特殊情況,否則不能隨意更換【微機(jī)實(shí)驗(yàn)老師的脾氣你們都懂(和善的眼神)】。在實(shí)驗(yàn)臺(tái)邊坐定之后,就可以打開電腦和開發(fā)板了,老師尤其強(qiáng)調(diào)的是不能帶電接線,如果被看到的話你又死定了(和善的眼神)首先要說的是基礎(chǔ)題不需要使用8259,

10、直接把8253產(chǎn)生的脈沖接到8086上的INTR端即可。有一個(gè)小工作是最好在去實(shí)驗(yàn)室前就做好的,就是檢查一下需要用到的資源是否能正常工作,比如在基礎(chǔ)實(shí)驗(yàn)中,最好寫兩個(gè)簡(jiǎn)單的小程序檢查一下8253與8255是否工作正?!静徽5目赡苄苑浅4蟆?,如果不正常的話就要協(xié)調(diào)老師解決了,不免又要跟老師費(fèi)一番口舌(和善的眼神)當(dāng)各個(gè)芯片檢查無誤,能夠正常工作后,就可以調(diào)試程序了。拿出自己寫的或者從別人那里拷來的程序,一點(diǎn)點(diǎn)調(diào)試運(yùn)行成功,出現(xiàn)正確的現(xiàn)象之后,就可以招呼老師過來檢查了。老師會(huì)問你幾個(gè)問題,或者讓你加個(gè)功能,按她的要求做即可,所以,即使是從別人那里拷來的程序,也起碼要做到看懂的水平老師尤其愛問的是

11、在入中斷或出中斷附近設(shè)置斷點(diǎn),單步運(yùn)行,指出數(shù)碼管顯示的數(shù)字和8086內(nèi)部的數(shù)據(jù)是如何傳輸?shù)闹惖膯栴}?;A(chǔ)型實(shí)驗(yàn)建議有所準(zhǔn)備的同學(xué)在3小時(shí)內(nèi)做完。然后是綜合型,選兩個(gè)看(you)起(xian)來(cheng)簡(jiǎn)(cheng)單(xu)的題目,需要用到的液晶屏、雙色led燈等資源的資料可以在上學(xué)期微機(jī)原理課的實(shí)驗(yàn)指導(dǎo)書中找到。然后也是先檢查資源是否能正常工作,然后調(diào)試程序即可。需要提示的兩點(diǎn)是,最好不要所有人一下同時(shí)做出同一個(gè)實(shí)驗(yàn),否則太明顯如果自己寫的程序?qū)嵲跓o法正確運(yùn)行且找不出毛病,還是乖乖拿來別人試好的程序先通過檢查再說,否則夜長(zhǎng)夢(mèng)多【?】,會(huì)把做其他實(shí)驗(yàn)的時(shí)間用完。還是提醒一下千萬不要

12、沖撞老師創(chuàng)新型實(shí)驗(yàn),百度即可,也可以自己想,建議別做電子琴,因?yàn)橐话俣热请娮忧?,也?huì)有好多人做電子琴,老師都吐槽了然后大概就沒什么可說的了,課設(shè)這種東西嘛,想真正學(xué)到東西的同學(xué)可以好好做,真的能學(xué)到很多。如果只是想水過去也不是什么難事。以上。以下(23333)是我當(dāng)時(shí)的一些程序,希望能對(duì)大家有所幫助8253測(cè)試程序:DATA SEGMENTDATA ENDSSTACK SEGMENTSTA DW 100 DUP (?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOV

13、 AX, DATAMOV DS, AXMOV ES, AXMOV AX, STACKMOV SS, AXMOV SP, TOPMOV DX, 0283HMOV AL, 36HOUT DX, ALMOV DX, 0280HMOV AX, 03E8HOUT DX, ALMOV AL, AHOUT DX, ALMOV DX, 0283HMOV AL, 76HOUT DX, ALMOV DX, 0281HMOV AX, 03E8HOUT DX, ALMOV AL, AHOUT DX, ALMOV AH, 4CHINT 21HCODE ENDSEND START8255測(cè)試程序:data segment

14、data endscode segmentstart:assume ds:data,cs:codemov dx,029bhmov al,90hout dx,al again:mov dx,0298h in al,dx mov dx,0299h out dx,al jmp again code ends end start-必做程序(對(duì)應(yīng)日志中必做題的3,4);數(shù)據(jù)段定義DATA SEGMENT TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;數(shù)碼管段碼 MES DB PRESS ANY KEY E

15、XIT TO DOS,0DH,0AH,$;提示信息 CS_REG DW ?;中斷程序段基址 IP_REG DW ?;中斷程序段偏移量DATE ENDS;堆棧段定義STACK SEGMENT STA DW 100 DUP(?) TOP EQU LENGTH STASTACK ENDS;程序初始化CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX MOV SP, TOP;顯示提示信息 MOV DX, OFFSET M

16、ES MOV AH, 09H INT 21H;初始化8255 MOV DX, 0288H;控制端 MOV AL, 90H;控制字 OUT DX, AL;寫入;初始化8253 MOV DX, 0283H;控制端 MOV AL, 36H;控制字 OUT DX, AL;寫入 MOV DX, 0280H;CLK1 MOV AX, 03E8H;1000倍 OUT DX, AL;寫入 MOV AL, AH OUT DX, AL;再寫入 MOV DX, 0283H;控制端 MOV AL, 76H;控制字 OUT DX, AL;寫入 MOV DX, 0281H;CLK2 MOV AX, 03E8H;1000倍

17、 OUT DX, AL;寫入 MOV AL, AH OUT DX, AL;再寫入;存儲(chǔ)中斷向量 CLI;關(guān)中斷 MOV AX, 350BH INT 21H MOV AX, ES MOV CS_REG, AX MOV IP_REG, BX PUSH DS;設(shè)置新中斷向量 MOV AX, SEG INTP MOV DS, AX MOV DX, OFFSET INTP MOV AX, 250BH INT 21H POP DS IN AL, 21H AND AL, 0F7H OUT 21H, ALLOP: STI;開中斷 JMP LOP;不停循環(huán);恢復(fù)原中斷向量 IN AL, 21H OR AL, 0

18、8H OUT 21H, AL MOV DX, IP_REG MOV AX, CS_REG MOV DS, AX MOV AX, 250BH INT 21HLAST:;返回DOS系統(tǒng) MOV AH, 4CH INT 21H;中斷子程序 INTP PROC FAR MOV AH, 01H INT 16H JNZ LAST CLI;關(guān)中斷 PUSH DX;保護(hù)寄存器 PUSH BX PUSH AX MOV BX, OFFSET TABLE;換碼數(shù)據(jù)地址 MOV DX, 0298H;取A口 IN AL, DX MOV DX, 0299H;設(shè)定DX為B口 CMP AL, 0FH;比較開關(guān)與0FH JA

19、NEXT1;大于則跳 CMP AL, CL;比較開關(guān)與數(shù)碼管(CL中存數(shù)碼管的值) JE NEXT2;等于則跳 INC CL;數(shù)碼管加一 MOV AL, CL XLAT;查表 OUT DX, AL;輸出到B口 JMP FINISH;結(jié)束NEXT2:;如果開關(guān)等于數(shù)碼管 MOV CL, 0;數(shù)碼管置零 MOV AL, CL XLAT;查表 OUT DX, AL;輸出到B口 JMP FINISH;結(jié)束NEXT1:;如果開關(guān)大于0FH IN AL, DX;取數(shù)碼管數(shù)據(jù) CMP AL, 00H;判斷是否全滅 JE NEXT3;是則跳 MOV CL,00H MOV AL, CL;不是則置零 OUT DX

20、, AL;輸出到B口 JMP FINISH;結(jié)束NEXT3:;如果數(shù)碼管全滅 MOV AL,76H;數(shù)碼管置為H OUT DX, AL;輸出到B口;結(jié)束FINISH: POP AX;恢復(fù)現(xiàn)場(chǎng) POP BX POP DX MOV AL, 20H OUT 20H, AL STI;開中斷 IRET INTP ENDPCODE ENDSEND START-綜合題8如果我沒記錯(cuò)的話,這個(gè)程序是錯(cuò)的,當(dāng)時(shí)沒做出來,但是不知道哪里錯(cuò)了,所以就拿的別人的程序,大家注意一下_;定義數(shù)據(jù)段DATA SEGMENT;定義ASCII碼從30H到7AH所有字符的形狀 DATA30 DB 000H,07EH,0A1H,0

21、91H,089H,085H,07EH,000H DATA31 DB 000H,000H,001H,0FFH,041H,000H,000H,000H DATA32 DB 000H,061H,091H,089H,085H,083H,061H,000H DATA33 DB 000H,066H,0A9H,091H,081H,081H,042H,000H DATA34 DB 000H,005H,0FFH,045H,024H,014H,00CH,000H DATA35 DB 000H,08EH,091H,091H,091H,091H,0F2H,000H DATA36 DB 000H,04EH,091H,0

22、91H,091H,091H,07EH,000H DATA37 DB 000H,0C0H,0A0H,098H,087H,080H,0C0H,000H DATA38 DB 000H,06EH,091H,091H,091H,091H,06EH,000H DATA39 DB 000H,07EH,089H,089H,089H,089H,072H,000H DATA3A DB 000H,000H,036H,036H,000H,000H,000H,000H DATA3B DB 000H,000H,036H,037H,001H,000H,000H,000H DATA3C DB 000H,000H,041H,0

23、22H,014H,008H,000H,000H DATA3D DB 000H,024H,024H,024H,024H,024H,024H,000H DATA3E DB 000H,000H,008H,014H,022H,041H,000H,000H DATA3F DB 000H,060H,090H,08DH,080H,080H,060H,000H DATA40 DB 034H,04AH,085H,0BDH,0A5H,0BDH,042H,03CH DATA41 DB 000H,03FH,048H,088H,088H,048H,03FH,000H DATA42 DB 000H,06EH,091H,0

24、91H,091H,091H,0FFH,000H DATA43 DB 000H,042H,081H,081H,081H,081H,07EH,000H DATA44 DB 000H,03CH,042H,081H,081H,081H,0FFH,000H DATA45 DB 000H,091H,091H,091H,091H,091H,0FFH,000H DATA46 DB 000H,090H,090H,090H,090H,090H,0FFH,000H DATA47 DB 000H,04EH,089H,089H,081H,081H,07EH,000H DATA48 DB 000H,0FFH,010H,0

25、10H,010H,010H,0FFH,000H DATA49 DB 000H,000H,081H,0FFH,081H,000H,000H,000H DATA4A DB 000H,080H,0FEH,081H,001H,002H,000H,000H DATA4B DB 000H,001H,082H,044H,028H,010H,0FFH,000H DATA4C DB 000H,003H,001H,001H,081H,0FFH,081H,000H DATA4D DB 0FFH,040H,020H,010H,020H,040H,0FFH,000H DATA4E DB 000H,0FFH,002H,0

26、0CH,030H,040H,0FFH,000H DATA4F DB 000H,07EH,081H,081H,081H,081H,07EH,000H DATA50 DB 000H,070H,088H,088H,088H,088H,0FFH,000H DATA51 DB 000H,07DH,082H,085H,081H,081H,07EH,000H DATA52 DB 000H,071H,089H,08AH,08CH,088H,0FFH,000H DATA53 DB 000H,046H,089H,089H,091H,091H,062H,000H DATA54 DB 080H,080H,080H,0

27、FFH,080H,080H,080H,000H DATA55 DB 000H,0FEH,001H,001H,001H,001H,0FEH,000H DATA56 DB 000H,0F8H,006H,001H,001H,006H,0F8H,000H DATA57 DB 0FFH,002H,004H,008H,004H,002H,0FFH,000H DATA58 DB 041H,022H,014H,008H,014H,022H,041H,000H DATA59 DB 080H,040H,020H,01FH,020H,040H,080H,000H DATA5A DB 000H,0C1H,0A1H,0

28、91H,089H,085H,083H,000H DATA5B DB 000H,000H,000H,000H,000H,000H,000H,000H DATA5C DB 000H,000H,000H,000H,000H,000H,000H,000H DATA5D DB 000H,000H,000H,000H,000H,000H,000H,000H DATA5E DB 000H,000H,000H,000H,000H,000H,000H,000H DATA5F DB 000H,000H,000H,000H,000H,000H,000H,000H DATA60 DB 000H,000H,000H,0

29、00H,000H,000H,000H,000H DATA61 DB 000H,001H,07EH,091H,091H,091H,04EH,000H DATA62 DB 000H,000H,00EH,011H,011H,009H,0FFH,000H DATA63 DB 000H,012H,021H,021H,021H,01EH,000H,000H DATA64 DB 000H,001H,0FEH,011H,011H,011H,00EH,000H DATA65 DB 000H,012H,029H,029H,029H,029H,01EH,000H DATA66 DB 000H,050H,090H,0

30、7FH,010H,010H,000H,000H DATA67 DB 000H,07EH,091H,089H,089H,072H,000H,000H DATA68 DB 000H,001H,00FH,010H,010H,008H,0FFH,000H DATA69 DB 000H,000H,001H,05FH,011H,000H,000H,000H DATA6A DB 000H,000H,000H,0BFH,021H,002H,000H,000H DATA6B DB 000H,001H,011H,00AH,004H,0FFH,000H,000H DATA6C DB 000H,000H,001H,0

31、7FH,041H,000H,000H,000H DATA6D DB 000H,00FH,010H,01FH,010H,010H,00FH,000H DATA6E DB 000H,00FH,010H,010H,008H,01FH,000H,000H DATA6F DB 000H,00EH,011H,011H,011H,00EH,000H,000H DATA70 DB 000H,030H,048H,048H,048H,03FH,041H,000H DATA71 DB 000H,041H,03FH,049H,048H,048H,030H,000H DATA72 DB 000H,010H,010H,0

32、08H,01FH,010H,000H,000H DATA73 DB 000H,012H,025H,029H,012H,000H,000H,000H DATA74 DB 000H,002H,011H,07EH,010H,000H,000H,000H DATA75 DB 000H,001H,01EH,001H,001H,01EH,010H,000H DATA76 DB 000H,000H,01EH,001H,001H,01EH,000H,000H DATA77 DB 000H,01EH,001H,01EH,001H,01EH,010H,000H DATA78 DB 000H,011H,00AH,0

33、04H,00AH,011H,000H,000H DATA79 DB 000H,0FEH,011H,009H,009H,0F2H,080H,000H DATA7A DB 000H,031H,029H,025H,023H,021H,000H,000H;定義數(shù)碼管掃描時(shí)的行數(shù) BUFFER DB 000H,001H,002H,003H,004H,005H,006H,007HDATA ENDS;定義堆棧段STACK SEGMENT STA DB 100 DUP (?) TOP EQU LENGTH STASTACK ENDS;程序初始化CODE SEGMENT ASSUME CS:CODE,DS:DA

34、TA,SS:STACK,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV SP,TOP CHECK:;檢查鍵盤輸入的字符 MOV AH,01H INT 21H;鍵盤輸入一個(gè)字符 SUB AL,30H;ASCII碼減去30H MOV BL,08H MUL BL;將減去30H的ASCII碼乘以8即得到起始地址 MOV BX,AX;將起始地址存儲(chǔ)在BX中以備換碼OUT0: MOV DI,02H;置DI為02HFLASH0: MOV CX,1000H;設(shè)置循環(huán)次數(shù)D0: MOV AH,01H;AH置1 PU

35、SH CX;D0的循環(huán)次數(shù) MOV CX,08H;8行的循環(huán) MOV SI,OFFSET BUFFER;取行數(shù)NEXT0: MOV AL,SI;取需要顯示的行數(shù) XLAT;換碼取數(shù)據(jù) MOV DX,0280H;取行地址 OUT DX,AL;輸出 MOV AL,AH;取列 CMP DI,02H;DI跟2比較 JNZ X0;不等于則為綠色 MOV DX,0288H;等于則為紅色 JMP X00X0:;將輸出地址置為綠色 MOV DX,0290HX00:;繼續(xù)顯示 OUT DX,AL;輸出列 MOV AL,0; OUT DX,AL;輸出0 SHL AH,01H;列左移 INC SI;數(shù)據(jù)加一 LOO

36、P NEXT0;循環(huán)完8列 POP CX;彈出D0的循環(huán) LOOP D0;循環(huán)1000H次 MOV CX,3FFFH DEC DI ;DI減一 JNZ FLASH0;不等于零則循環(huán)D0 MOV AH,01H;檢查是否有按鍵 INT 16H JNZ CHECK;有則跳到開頭 JMP OUT0EXIT: MOV AH,4CH INT 21HCODE ENDS END START-綜合題10;數(shù)據(jù)段定義DATA SEGMENTCMD DB ? ;指令編號(hào)DAT DB ? ;單字節(jié)圖形數(shù)據(jù)DATA ENDS;堆棧段定義STACK SEGMENT STACK STACKSTA DB 100 DUP(?)

37、TOP EQU LENGTH STASTACK ENDS;程序初始化CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK1 MOV SS,AX MOV SP,TOP CALL DELAY; CALL INI ;調(diào)用初始化子程序 MOV BL,30H;寫入預(yù)定指令 MOV CMD,BL CALL WCMD MOV BL,0FH MOV CMD,BL CALL WCMD MOV BL,01H MOV CMD,BL CALL WCMD X1: MOV BL,80H;選擇了LED的第一行

38、 MOV CMD,BL CALL WCMD MOV CX,0;清零XUNHUAN: MOV BH,BLL1: MOV AH,01H INT 21H;檢測(cè)鍵盤是否輸入 CMP AL,00H JZ L1;如果沒有輸入,繼續(xù)檢測(cè) CMP AL, $;判斷輸入字符是否是$ JNE KAISHI;不是則跳轉(zhuǎn)到KAISHI MOV AH, 4CH;是則直接返回DOS系統(tǒng) INT 21H KAISHI: CMP AL,0DH;判斷輸入字符是否是回車 JZ X2;如果是則跳轉(zhuǎn)至L2用下一行輸入 MOV DAT,AL;把輸入字符AL寫到DAT中 CALL WDAT;調(diào)用WDAT輸出 INC CH;字符統(tǒng)計(jì)數(shù)加一

39、 CMP CH,16;看是否超過了1行所規(guī)定的16個(gè)字符 JNZ L1;如果沒有,跳轉(zhuǎn)至L1 X2: MOV BL,90H;選擇第二行 MOV CMD,BL CALL WCMD MOV CH,00H;把新的字符計(jì)數(shù)的CH置零L2: MOV AH,01H;與L1類似 INT 21H CMP AL,00H JZ L2 CMP AL,0DH JZ X3 MOV DAT,AL CALL WDAT INC CH CMP CH,16 JNZ L2 X3: MOV BL, 88H;選擇第三行 MOV CMD,BL CALL WCMD MOV CH,00H;把新的字符計(jì)數(shù)的CH置零L3: MOV AH,01H

40、;與L1類似 INT 21H CMP AL,00H JZ L3 CMP AL,0DH JZ X4 MOV DAT,AL CALL WDAT INC CH CMP CH,16 JNZ L3 X4: MOV BL, 98H;選擇第四行 MOV CMD,BL CALL WCMD MOV CH,00H;把新的字符計(jì)數(shù)的CH置零L4: MOV AH,01H;與L1類似 INT 21H CMP AL,00H JZ L4 CMP AL,0DH JZ X5 MOV DAT,AL CALL WDAT INC CH CMP CH,16 JNZ L4 X5: MOV BL,80H;再循環(huán)選擇第一行進(jìn)行輸入 MOV

41、CMD,BL CALL WCMD JMP XUNHUAN;繼續(xù)循環(huán)輸入;*;*初始化子程序;*功能:完成LCD屏的初始化;*入口參數(shù):無;*INI PROCMOV BL,30HMOV CMD,BL ;功能設(shè)定,基本指令CALL WCMDMOV BL,0CHMOV CMD,BL ;開顯示,關(guān)游標(biāo),關(guān)反白CALL WCMDMOV BL,01HMOV CMD,BL ;清除顯示CALL WCMDMOV BL,06HMOV CMD,BL ;進(jìn)入設(shè)定點(diǎn),游標(biāo)右移,畫面不移動(dòng)CALL WCMDRETINI ENDP ;*;*寫指令子程序;*功能:按照ST7920的時(shí)序向LCD屏寫命令;*入口參數(shù):CMD;*WCMD PROC ;寫指令子程序PUSH AXPUSH DXMOV DX,0283HMOV AL,90HOUT DX,AL ;A入C出MOV DX,0283HMOV AL,00HOUT DX,AL ;把RS(ID)置零(此處對(duì)C口操作,所以把控制字寫入控制

溫馨提示

  • 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. 人人文庫(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)論