




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微機原理綜合實驗 課程設(shè)計 學院: 機電學院 班級: 12機械師 姓名: 周漢斌 學號: 2012095644010 指導(dǎo)老師: 覃孟揚 2目 錄一、設(shè)計任務(wù)書3二、設(shè)計題目3三、設(shè)計方案3四、硬件原理41.七段數(shù)碼管顯示42.鍵盤掃描顯示53.8253計數(shù)器和8259中斷64.硬件連接6五、程序流程圖及程序清單71.七段數(shù)碼管顯示82. 鍵盤掃描顯示93.定時器設(shè)計124.總程序設(shè)計15六、調(diào)試過程及結(jié)果29七、設(shè)計總結(jié)和體會30八、參考文獻30一、設(shè)計題目LED七段數(shù)碼管數(shù)字鐘:1設(shè)計并完成LED七段數(shù)碼管數(shù)字鐘電路。2數(shù)字鐘顯示格式為:HH:MM:SS。 3具有通過鍵盤能夠調(diào)整時、分、秒
2、的功能。二、設(shè)計方案本設(shè)計采用LAB6000偉福仿真實驗箱,利用4MHz脈沖信號源和多級分頻電路產(chǎn)生脈沖信號,4MHz脈沖信號經(jīng)過F/64分頻后得到62.5KHz脈沖信號,將脈沖信號傳遞給8253定時器,定時器每0.000016秒中斷一次,在中斷服務(wù)程序中對中斷次數(shù)進行計數(shù),0.000016秒計數(shù)62500次就是1秒,然后在對秒計數(shù)得到分和小時值,并送入顯示緩沖區(qū),用總線方式控制數(shù)碼管顯示。同時,利用實驗箱提供的鍵盤掃描電路和顯示電路來調(diào)整時、分、秒。三、硬件原理1.七段數(shù)碼管顯示圖1. 七段數(shù)碼管七段數(shù)碼管的字型代碼表如下表:31顯示字形gfedcba段碼001111113fh1000011
3、006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fhA111011177hB11111007chC011100139hD10111105ehE111100179hF111000171h表1. 段數(shù)碼管的字型代碼表圖2. 八段數(shù)碼LED顯示電路實驗箱提供了6位八段數(shù)碼LED顯示電路,只要按地址輸出相應(yīng)數(shù)據(jù),就可以實現(xiàn)對顯示器的控制。將KEY/LED CS接到CS0上,則實驗箱中八位段碼輸出地址為08004H,位碼輸出地址為08002H。2.鍵盤掃描顯示圖3. 鍵盤掃
4、描電路實驗箱提供了一個6×4的小鍵盤,將KEY/LED CS信號接到CS0上,則列掃描地址為08002H,行碼地址為08001H。向列掃描碼地址逐列輸入低電平,然后從行碼地址讀回。如果有鍵按下,則相應(yīng)行的值應(yīng)為低,如果無鍵按下,由于上拉的作用,行碼為高。這樣就可以通過輸出的列碼和讀取的行碼來判斷按下的是什么鍵。在判斷有鍵按下后,要有一定的時延,防止鍵盤抖動。3.8253計數(shù)器和8259中斷圖4. 8253計數(shù)器擴展電路圖5. 8259中斷擴展電路4.硬件連接8253用定時器/計數(shù)器1,8253片選接CS4,地址為0C000H,8253時鐘源CLK1接分頻電路的F/64輸出,頻器的Fi
5、n接4MHz時鐘,8253的GATE1接VCC;8259中斷INT0接8253的OUT1,片選接CS5,地址為0D000H。顯示電路的KEY/LED CS 接CS0,地址為08000H。四、程序流程圖及程序清單通過調(diào)查研究,查閱資料,我初步確定系統(tǒng)結(jié)構(gòu)的總體方案,并依此畫出了主程序框圖:圖6. 主程序框圖根據(jù)主程序框圖,要實現(xiàn)電子時鐘,必須先實現(xiàn)七段數(shù)碼管顯示、鍵盤掃描顯示、定時器以及將輸入的鍵值轉(zhuǎn)換為顯示數(shù)據(jù)。為了實現(xiàn)上述四個功能,我又設(shè)計了三個子模塊的流程圖,并完成了相應(yīng)的程序設(shè)計。1.七段數(shù)碼管顯示圖7. 七段數(shù)碼管顯示子程序框圖七段數(shù)碼管顯示子程序清單:DisplayLED proc
6、near mov bx, offset LEDBuf mov cl, 6 ; 共6個八段管 mov ah, 00100000b ; 從左邊開始顯示DLoop: mov dx, OUTBIT mov al, 0 out dx,al ; 關(guān)所有八段管 mov al, bx mov dx, OUTSEG out dx,al mov dx, OUTBIT mov al, ah out dx, al ; 顯示一位八段管 push ax mov ah, 1 call Delay pop ax shr ah, 1 inc bx dec cl jnz DLoop mov dx, OUTBIT mov al,
7、0 out dx,al ; 關(guān)所有八段管 retDisplayLED endp 2. 鍵盤掃描顯示圖8. 讀鍵輸入子程序框圖鍵盤掃描子程序清單:TestKey proc near ; 判斷有無鍵入 mov dx, OUTBIT mov al, 0 out dx, al ; 輸出線置為0 mov dx, IN_KEY in al, dx ; 讀入鍵狀態(tài) not al and al, 0fh ; 高四位不用 retTestKey endp GetKey proc near ; 讀入鍵碼 mov ch, 00100000b mov cl, 6KLoop: mov dx, OUTBIT mov al,
8、 ch ; 找出鍵所在列 not al out dx, al shr ch, 1 mov dx, IN_KEY in al, dx not al and al, 0fh jne Goon_ ; 該列有鍵入 dec cl jnz KLoop mov cl, 0ffh ; 沒有鍵按下, 返回 0ffh jmp Exit1Goon_: dec cl shl cl, 2 ; 鍵值 = 列 X 4 + 行 mov ch, 4LoopC: test al, 1 jnz Exit1 shr al, 1 inc cl dec ch jnz LoopCExit1: mov dx, OUTBIT mov al,
9、0 out dx, al mov ch, 0 mov bx, offset KeyTable add bx, cx mov al, bx ; 取出鍵碼 mov bl, alWaitRelease: mov dx, OUTBIT mov al, 0 out dx, al ; 等鍵釋放 mov ah, 10 call Delay call TestKey jne WaitRelease mov al, bl retGetKey endp3.定時器設(shè)計 圖9. 定時中斷服務(wù)子程序框圖定時器設(shè)計的程序清單:IEnter proc near push ax push dx inc Second mov
10、al, Second cmp al, 60 jne Exit mov Second, 0 inc Minute mov al, Minute cmp al, 60 jne Exit mov Minute, 0 inc Hour mov al, Hour cmp al, 24 jne Exit mov Hour, 0Exit: mov dx, CS8259A mov al, 20h ; 中斷服務(wù)程序結(jié)束指令 out dx, al pop dx pop ax iretIEnter endpIInit proc mov dx, CS8259A mov al, ICW1 out dx, al mov
11、dx, CS8259B mov al, ICW2 out dx, al mov al, ICW4 out dx, al mov al, OCW1 out dx, al retIInit endpstart proc near mov ax, data mov ds, ax mov Hour, 0 mov Minute, 0 mov Second, 0 cli mov ax, 0 mov ds, ax mov al, 76h; 01110110B ; 計數(shù)器1,16位,方式3,二進制 mov dx, CONTROL out dx, al mov ax, 62500 mov dx, COUNT1
12、out dx, al ; 計數(shù)器低字節(jié) mov al, ah out dx, al ; 計數(shù)器高字節(jié) mov al, MD8255 mov dx, CTL8255 out dx, al mov bx, 4*ICW2 ; 中斷號 mov ax, code shl ax, 4 ; x 16 add ax, offset IEnter ; 中斷入口地址(段地址為0) mov bx, ax mov ax, 0 inc bx inc bx mov bx, ax ; 代碼段地址為0 call IInit mov ax, data mov ds, ax mov CNT, 0 ; 計數(shù)值初始為0 mov al
13、, CNT mov dx, PA8255 out dx, al stiLP: ; 等待中斷,并計數(shù)。 mov al, Hour mov ah, 0 mov cl, 10 div cl mov ch, ah mov ah, 0 mov bx, offset LEDMAP add bx, ax mov al, bx mov LEDBuf, al mov bx, offset LEDMAP mov al, ch mov ah, 0 add bx, ax mov al, bx or al, 80h mov LEDBuf+1, al mov al, Minute mov ah, 0 mov cl, 10
14、 div cl mov ch, ah mov ah, 0 mov bx, offset LEDMAP add bx, ax mov al, bx mov LEDBuf+2, al mov bx, offset LEDMAP mov al, ch mov ah, 0 add bx, ax mov al, bx or al, 80h mov LEDBuf+3, al mov al, Second mov ah, 0 mov cl, 10 div cl mov ch, ah mov ah, 0 mov bx, offset LEDMAP add bx, ax mov al, bx mov LEDBu
15、f+4, al mov bx, offset LEDMAP mov al, ch mov ah, 0 add bx, ax mov al, bx or al, 80h mov LEDBuf+5, al call DisplayLED jmp LPstart endp4.總程序設(shè)計將上述三個子模塊的功能結(jié)合起來,把鍵盤輸入的數(shù)據(jù)轉(zhuǎn)換成十進制,分別賦給Hour、Minute、Second,電子時鐘就實現(xiàn)了??偝绦蚯鍐危篢urbo Assembler Version 3.0 08/12/25 11:21:36 Page 1F:05141101DD.ASM 1 =C003 CONTROL equ 0c
16、003h 2 =C000 COUNT0 equ 0c000h 3 =C001 COUNT1 equ 0c001h 4 =C002 COUNT2 equ 0c002h 5 6 =0082 md8255 equ 82h ; 8255 工作方式 7 =8000 PA8255 equ 8000h ; 8255 PA口輸出地址 8 =8003 CTL8255 equ 8003h ; 8255 控制口地址 9 =8001 IN_KEY equ 08001h ; 鍵盤讀入口 10 11 =8002 OUTBIT equ 08002h ; 位控制口 12 =8004 OUTSEG equ 08004h ; 段
17、控制口 13 14 =0013 ICW1 equ 00010011b ; 單片8259, 上升沿中斷, 要寫ICW4 15 =0020 ICW2 equ 00100000b ; 中斷號為20H 16 =0001 ICW4 equ 00000001b ; 工作在8086/88 方式 17 =00FE OCW1 equ 11111110b ; 只響應(yīng)INT0 中斷 18 =D000 CS8259A equ 0d000h ; 8259地址 19 =D001 CS8259B equ 0d001h 20 210000 data segment 220000 00 CNT db0 230001 00 Ho
18、ur db0 240002 00 Minute db0 250003 00 Second db0 260004 06*(?) LEDBuf db6 dup(?) ; 顯示緩沖 27000A 01*(?) Num db1 dup(?) ; 顯示的數(shù)據(jù) 28000B 01*(?) DelayT db1 dup(?) 29000C 06*(?) dinglin db 6 dup(?) 300012 LEDMAP: ; 八段管顯示碼 310012 3F 06 5B 4F 66 6D7D+ db 3fh, 06h, 5bh, 4fh, 66h, 6dh,7dh, 07h 32 07 33001A 7F
19、6F 77 7C 39 5E79+ db 7fh, 6fh, 77h, 7ch, 39h, 5eh,79h, 71h 34 71 350022 KeyTable: ; 鍵碼定義 360022 16 15 14 FF db 16h, 15h, 14h, 0ffh 370026 13 12 11 10 db 13h, 12h, 11h, 10h 38002A 0D 0C 0B 0A db 0dh, 0ch, 0bh, 0ah 39002E 0E 03 06 09 db 0eh, 03h, 06h, 09h 400032 0F 02 05 08 db 0fh, 02h, 05h, 08h 41003
20、6 00 01 04 07 db 00h, 01h, 04h, 07h 42003A data ends 43 440000 code segment 45 assume cs:code, ds:data 46 470000 Delay proc near 480000 50 push ax; 延時子程序 490001 51 push cx 50 510002 B0 00 mov al, 0 520004 8B C8 mov cx,ax 530006 E2 FE loop $ 54 550008 59 pop cx 560009 58 pop ax 57000A C3 retTurbo Ass
21、embler Version 3.0 08/12/25 11:21:36 Page 2F:05141101DD.ASM 58000B Delay endp 59 60000B DisplayLEDproc near 61000B BB 0004r mov bx, offset LEDBuf 62000E B1 06 mov cl, 6; 共6個八段管 630010 B4 20 mov ah, 00100000b; 從左邊開始顯示 640012 DLoop: 650012 BA 8002 mov dx, OUTBIT 660015 B0 00 mov al, 0 670017 EE out dx
22、,al; 關(guān)所有八段管 680018 8A 07 mov al, bx 69001A BA 8004 mov dx, OUTSEG 70001D EE out dx,al 71 72001E BA 8002 mov dx, OUTBIT 730021 8A C4 mov al, ah 740023 EE out dx, al ; 顯示一位八段管 75 760024 50 push ax 770025 B4 01 mov ah, 1 780027 E8 FFD6 call Delay 79002A 58 pop ax 80 81002B D0 EC shr ah, 1 82002D 43 inc
23、 bx 83002E FE C9 dec cl 840030 75 E0 jnz DLoop 85 860032 BA 8002 mov dx, OUTBIT 870035 B0 00 mov al, 0 880037 EE out dx,al ; 關(guān)所有八段管 890038 C3 ret 900039 DisplayLEDendp 91 92 930039 TestKey proc near 940039 BA 8002 mov dx, OUTBIT 95003C B0 00 mov al, 0 96003E EE out dx, al ; 輸出線置為0 97003F BA 8001 mov
24、 dx, IN_KEY 980042 EC in al, dx ; 讀入鍵狀態(tài) 99 1000043 F6 D0 not al 1010045 24 0F and al, 0fh ; 高四位不用 1020047 C3 ret 1030048 TestKey endp 104 1050048 GetKey proc near 1060048 B5 20 mov ch, 00100000b 107004A B1 06 mov cl, 6 108004C KLoop: 109004C BA 8002 mov dx, OUTBIT 110004F 8A C5 mov al, ch ; 找出鍵所在列 1
25、110051 F6 D0 not al 1120053 EE out dx, al 1130054 D0 ED shr ch, 1 114Turbo Assembler Version 3.0 08/12/25 11:21:36 Page 3F:05141101DD.ASM 1150056 BA 8001 mov dx, IN_KEY 1160059 EC in al, dx 117005A F6 D0 not al 118005C 24 0F and al, 0fh 119005E 75 09 jne Goon_ ; 該列有鍵入 1200060 FE C9 dec cl 1210062 75
26、 E8 jnz KLoop 122 1230064 B1 FF mov cl, 0ffh ;沒有鍵按下, 返回 0ffh 1240066 EB 15 90 jmp Exit1 1250069 Goon_: 1260069 FE C9 dec cl 127006B D0 E1 D0 E1 shl cl, 2 ;鍵值 = 列 X 4 +行 128 129006F B5 04 mov ch, 4 1300071 LoopC: 1310071 A8 01 test al, 1 1320073 75 08 jnz Exit1 1330075 D0 E8 shr al, 1 1340077 FE C1 i
27、nc cl 1350079 FE CD dec ch 136007B 75 F4 jnz LoopC 137007D Exit1: 138007D BA 8002 mov dx, OUTBIT 1390080 B0 00 mov al, 0 1400082 EE out dx, al 141 1420083 B5 00 mov ch, 0 1430085 BB 0022r mov bx, offset KeyTable 1440088 03 D9 add bx, cx 145008A 8A 07 mov al, bx ; 取出鍵碼 146008C 8A D8 mov bl, al 147 14
28、8008E WaitRelease: 149008E BA 8002 mov dx, OUTBIT 1500091 B0 00 mov al, 0 1510093 EE out dx, al ; 等鍵釋放 152 1530094 B4 0A mov ah, 10 1540096 E8 FF67 call Delay 1550099 E8 FF9D call TestKey 156009C 75 F0 jne WaitRelease 157009E 8A C3 mov al, bl 15800A0 C3 ret 15900A1 GetKey endp 160 16100A1 IEnter pro
29、c near 16200A1 50 push ax 16300A2 52 push dx 164 16500A3 FE 06 0003r inc Second 16600A7 A0 0003r mov al, Second 16700AA 3C 3C cmp al, 60 16800AC 75 25 jne Exit 169 17000AE C6 06 0003r 00 mov Second, 0 17100B3 FE 06 0002r inc MinuteTurbo Assembler Version 3.0 08/12/25 11:21:36 Page 4F:05141101DD.ASM
30、17200B7 A0 0002r mov al, Minute 17300BA 3C 3C cmp al, 60 17400BC 75 15 jne Exit 175 17600BE C6 06 0002r 00 mov Minute, 0 17700C3 FE 06 0001r inc Hour 17800C7 A0 0001r mov al, Hour 17900CA 3C 18 cmp al, 24 18000CC 75 05 jne Exit 181 18200CE C6 06 0001r 00 mov Hour,0 18300D3 Exit: 18400D3 BA D000 mov
31、dx, CS8259A 18500D6 B0 20 mov al, 20h ; 中斷服務(wù)程序結(jié)束指令 18600D8 EE out dx, al 187 18800D9 5A pop dx 18900DA 58 pop ax 19000DB CF iret 19100DC IEnter endp 192 19300DC IInit proc 19400DC BA D000 mov dx, CS8259A 19500DF B0 13 mov al, ICW1 19600E1 EE out dx, al 197 19800E2 BA D001 mov dx, CS8259B 19900E5 B0
32、20 mov al, ICW2 20000E7 EE out dx, al 201 20200E8 B0 01 mov al, ICW4 20300EA EE out dx, al 204 20500EB B0 FE mov al, OCW1 20600ED EE out dx, al 20700EE C3 ret 20800EF IInit endp 209 21000EF Start proc near 21100EF B8 0000s mov ax, data 21200F2 8E D8 mov ds, ax 213 21400F4 C6 06 0004r 3F mov LEDBuf,
33、03fh ; 顯示 00.00.00 21500F9 C6 06 0005r BF mov LEDBuf+1, 0bfh 21600FE C6 06 0006r 3F mov LEDBuf+2, 03fh 2170103 C6 06 0007r BF mov LEDBuf+3, 0bfh 2180108 C6 06 0008r 3F mov LEDBuf+4, 03fh 219010D C6 06 0009r 3F mov LEDBuf+5, 03fh 220 221 2220112 C6 06 0001r 00 mov Hour, 0 2230117 C6 06 0002r 00 mov M
34、inute, 0 224011C C6 06 0003r 00 mov Second, 0 225 2260121 FA cli 2270122 B8 0000 mov ax, 0 2280125 8E D8 mov ds, axTurbo Assembler Version 3.0 08/12/25 11:21:36 Page 5F:05141101DD.ASM 229 2300127 B0 76 mov al, 76h; 01110110B ;計數(shù)器1,16位,方式3,二進制 2310129 BA C003 mov dx, CONTROL 232012C EE out dx, al 233
35、 234012D B8 F424 mov ax, 62500 2350130 BA C001 mov dx, COUNT1 2360133 EE out dx, al ;計數(shù)器低字節(jié) 2370134 8A C4 mov al, ah 2380136 EE out dx, al ;計數(shù)器高字節(jié) 239 2400137 B0 82 mov al, MD8255 2410139 BA 8003 mov dx, CTL8255 242013C EE out dx, al 243 244013D BB 0080 mov bx, 4*ICW2 ;中斷號 245 2460140 B8 0000s mov a
36、x, code 2470143 D1 E0 D1 E0 D1 E0D1+ shl ax, 4 ;x 16 248 E0 249014B 05 00A1r add ax, offset IEnter ;中斷入口地址(段地址為0) 250014E 89 07 mov bx,ax 251 2520150 B8 0000 mov ax, 0 2530153 43 inc bx 2540154 43 inc bx 2550155 89 07 mov bx,ax ;代碼段地址為0 256 2570157 E8 FF82 call IInit 258 259015A B8 0000s mov ax, dat
37、a 260015D 8E D8 mov ds, ax 261015F C6 06 0000r 00 mov CNT, 0 ; 計數(shù)值初始為0 2620164 A0 0000r mov al, CNT 2630167 BA 8000 mov dx, PA8255 264016A EE out dx, al 265016B FB sti 266016C LP: ;等待中斷,并計數(shù)。 267016C A0 0001r mov al, Hour 268016F B4 00 mov ah, 0 2690171 B1 0A mov cl, 10 2700173 F6 F1 div cl 271 2720175 8A EC mov ch, ah 2730177 B4 00 mov ah, 0 2740179 BB 0012r mov bx, of
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山東省菏澤市中考歷史真題
- 花崗巖開采管理制度
- 茶葉修剪隊管理制度
- 防疫督導(dǎo)員管理制度
- 課外閱讀專項-部編人教版小學三年級語文下冊試卷-部編人教版小學三年級語文下冊試卷
- 設(shè)備維修合同 (三)
- 設(shè)備機組維修技術(shù)培訓(xùn)方案及質(zhì)量保證措施
- 哈爾濱市第九中學校2024-2025學年高二下學期6月月考政治試卷(含答案)
- 大班各領(lǐng)域教育內(nèi)容要點及實施策略探討
- 【高中語文】《六國論》課文深度解析+統(tǒng)編版高一語文必修下冊
- 蒸飯培訓(xùn)課件
- 高校物業(yè)管理服務(wù)實施方案
- 工程造價咨詢服務(wù)投標方案(專家團隊版-)
- 消化內(nèi)鏡護理常規(guī)
- 經(jīng)濟法學-001-國開機考復(fù)習資料
- 大規(guī)模分布式存儲系統(tǒng)架構(gòu)設(shè)計與優(yōu)化
- 招標代理入圍服務(wù)方案
- 【MOOC】電子技術(shù)實習-北京科技大學 中國大學慕課MOOC答案
- 安全事故以案說法
- 《基于模型驅(qū)動架構(gòu)的專用規(guī)則引擎組件研究》
- 智慧樹知到《運動生理學》章節(jié)測試答案
評論
0/150
提交評論