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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

12、沖撞老師創(chuàng)新型實驗,百度即可,也可以自己想,建議別做電子琴,因為一百度全是電子琴,也會有好多人做電子琴,老師都吐槽了然后大概就沒什么可說的了,課設(shè)這種東西嘛,想真正學(xué)到東西的同學(xué)可以好好做,真的能學(xué)到很多。如果只是想水過去也不是什么難事。以上。以下(23333)是我當時的一些程序,希望能對大家有所幫助8253測試程序: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測試程序: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-必做程序(對應(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;再寫入;存儲中斷向量 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;保護寄存器 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)場 POP BX POP DX MOV AL, 20H OUT 20H, AL STI;開中斷 IRET INTP ENDPCODE ENDSEND START-綜合題8如果我沒記錯的話,這個程序是錯的,當時沒做出來,但是不知道哪里錯了,所以就拿的別人的程序,大家注意一下_;定義數(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ù) 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;鍵盤輸入一個字符 SUB AL,30H;ASCII碼減去30H MOV BL,08H MUL BL;將減去30H的ASCII碼乘以8即得到起始地址 MOV BX,AX;將起始地址存儲在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 ? ;指令編號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;檢測鍵盤是否輸入 CMP AL,00H JZ L1;如果沒有輸入,繼續(xù)檢測 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)計數(shù)加一

39、 CMP CH,16;看是否超過了1行所規(guī)定的16個字符 JNZ L1;如果沒有,跳轉(zhuǎn)至L1 X2: MOV BL,90H;選擇第二行 MOV CMD,BL CALL WCMD MOV CH,00H;把新的字符計數(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;把新的字符計數(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;把新的字符計數(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)選擇第一行進行輸入 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)游標,關(guān)反白CALL WCMDMOV BL,01HMOV CMD,BL ;清除顯示CALL WCMDMOV BL,06HMOV CMD,BL ;進入設(shè)定點,游標右移,畫面不移動CALL WCMDRETINI ENDP ;*;*寫指令子程序;*功能:按照ST7920的時序向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)置零(此處對C口操作,所以把控制字寫入控制

溫馨提示

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

最新文檔

評論

0/150

提交評論