




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、微機原理綜合實驗 課程設計 學院: 機電學院 班級: 12機械師 姓名: 周漢斌 學號: 指導老師: 覃孟揚 目 錄一、設計任務書3二、設計題目3三、設計方案3四、硬件原理41.七段數碼管顯示42.鍵盤掃描顯示53.8253計數器和8259中斷64.硬件連接6五、程序流程圖及程序清單71.七段數碼管顯示82. 鍵盤掃描顯示93.定時器設計124.總程序設計15六、調試過程及結果29七、設計總結和體會30八、參考文獻30一、設計題目LED七段數碼管數字鐘:1設計并完成LED七段數碼管數字鐘電路。2數字鐘顯示格式為:HH:MM:SS。 3具有通過鍵盤能夠調整時、分、秒的功能。二、設計方案本設計采用
2、LAB6000偉福仿真實驗箱,利用4MHz脈沖信號源和多級分頻電路產生脈沖信號,4MHz脈沖信號經過F/64分頻后得到62.5KHz脈沖信號,將脈沖信號傳遞給8253定時器,定時器每0.000016秒中斷一次,在中斷服務程序中對中斷次數進行計數,0.000016秒計數62500次就是1秒,然后在對秒計數得到分和小時值,并送入顯示緩沖區,用總線方式控制數碼管顯示。同時,利用實驗箱提供的鍵盤掃描電路和顯示電路來調整時、分、秒。三、硬件原理1.七段數碼管顯示圖1. 七段數碼管七段數碼管的字型代碼表如下表:顯示字形gfedcba段碼001111113fh1000011006h210110115bh31
3、0011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fhA111011177hB11111007chC011100139hD10111105ehE111100179hF111000171h表1. 段數碼管的字型代碼表圖2. 八段數碼LED顯示電路實驗箱提供了6位八段數碼LED顯示電路,只要按地址輸出相應數據,就可以實現對顯示器的控制。將KEY/LED CS接到CS0上,則實驗箱中八位段碼輸出地址為08004H,位碼輸出地址為08002H。2.鍵盤掃描顯示圖3. 鍵盤掃描電路實驗箱提供了一個64的小鍵盤
4、,將KEY/LED CS信號接到CS0上,則列掃描地址為08002H,行碼地址為08001H。向列掃描碼地址逐列輸入低電平,然后從行碼地址讀回。如果有鍵按下,則相應行的值應為低,如果無鍵按下,由于上拉的作用,行碼為高。這樣就可以通過輸出的列碼和讀取的行碼來判斷按下的是什么鍵。在判斷有鍵按下后,要有一定的時延,防止鍵盤抖動。3.8253計數器和8259中斷圖4. 8253計數器擴展電路圖5. 8259中斷擴展電路4.硬件連接8253用定時器/計數器1,8253片選接CS4,地址為0C000H,8253時鐘源CLK1接分頻電路的F/64輸出,頻器的Fin接4MHz時鐘,8253的GATE1接VCC
5、;8259中斷INT0接8253的OUT1,片選接CS5,地址為0D000H。顯示電路的KEY/LED CS 接CS0,地址為08000H。四、程序流程圖及程序清單通過調查研究,查閱資料,我初步確定系統結構的總體方案,并依此畫出了主程序框圖:圖6. 主程序框圖根據主程序框圖,要實現電子時鐘,必須先實現七段數碼管顯示、鍵盤掃描顯示、定時器以及將輸入的鍵值轉換為顯示數據。為了實現上述四個功能,我又設計了三個子模塊的流程圖,并完成了相應的程序設計。1.七段數碼管顯示圖7. 七段數碼管顯示子程序框圖七段數碼管顯示子程序清單:DisplayLED proc near mov bx, offset LED
6、Buf mov cl, 6 ; 共6個八段管 mov ah, 00100000b ; 從左邊開始顯示DLoop: mov dx, OUTBIT mov al, 0 out dx,al ; 關所有八段管 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, 0 out dx,al ; 關所有八段管 re
7、tDisplayLED endp 2. 鍵盤掃描顯示圖8. 讀鍵輸入子程序框圖鍵盤掃描子程序清單:TestKey proc near ; 判斷有無鍵入 mov dx, OUTBIT mov al, 0 out dx, al ; 輸出線置為0 mov dx, IN_KEY in al, dx ; 讀入鍵狀態 not al and al, 0fh ; 高四位不用 retTestKey endp GetKey proc near ; 讀入鍵碼 mov ch, 00100000b mov cl, 6KLoop: mov dx, OUTBIT mov al, ch ; 找出鍵所在列 not al out
8、 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, 0 out dx, al mov ch, 0
9、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.定時器設計 圖9. 定時中斷服務子程序框圖定時器設計的程序清單:IEnter proc near push ax push dx inc Second mov al, Second cmp al, 60 j
10、ne 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 ; 中斷服務程序結束指令 out dx, al pop dx pop ax iretIEnter endpIInit proc mov dx, CS8259A mov al, ICW1 out dx, al mov dx, CS8259B mov al, ICW
11、2 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 ; 計數器1,16位,方式3,二進制 mov dx, CONTROL out dx, al mov ax, 62500 mov dx, COUNT1 out dx, al ; 計數器低字節 mov
12、 al, ah out dx, al ; 計數器高字節 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 ; 計數值初始為0 mov al, CNT mov dx, PA8255 ou
13、t dx, al stiLP: ; 等待中斷,并計數。 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 div cl mov ch, ah mov
14、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 LEDBuf+4, al mov bx, offset
15、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.總程序設計將上述三個子模塊的功能結合起來,把鍵盤輸入的數據轉換成十進制,分別賦給Hour、Minute、Second,電子時鐘就實現了。總程序清單:Turbo Assembler Version 3.0 08/12/25 11:21:36 Page 1F:05141101DD.ASM 1 =C003 CONTROL equ 0c003h 2 =C000 COUNT0 equ
16、 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 ; 段控制口 13 14 =0013 ICW1 eq
17、u 00010011b ; 單片8259, 上升沿中斷, 要寫ICW4 15 =0020 ICW2 equ 00100000b ; 中斷號為20H 16 =0001 ICW4 equ 00000001b ; 工作在8086/88 方式 17 =00FE OCW1 equ 11111110b ; 只響應INT0 中斷 18 =D000 CS8259A equ 0d000h ; 8259地址 19 =D001 CS8259B equ 0d001h 20 210000 data segment 220000 00 CNT db0 230001 00 Hour db0 240002 00 Minute
18、 db0 250003 00 Second db0 260004 06*(?) LEDBuf db6 dup(?) ; 顯示緩沖 27000A 01*(?) Num db1 dup(?) ; 顯示的數據 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 6F 77 7C 39 5E79+ db 7f
19、h, 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 410036 00 01 04 07 db 00h, 0
20、1h, 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 Assembler Version 3.0 08/1
21、2/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,al; 關所有八段管 680018 8A 0
22、7 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 bx 83002E FE C9 dec cl
23、 840030 75 E0 jnz DLoop 85 860032 BA 8002 mov dx, OUTBIT 870035 B0 00 mov al, 0 880037 EE out dx,al ; 關所有八段管 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 dx, IN_KEY 980042 EC i
24、n al, dx ; 讀入鍵狀態 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 ; 找出鍵所在列 1110051 F6 D0 not al 112
25、0053 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 E8 jnz KLoop 122 12300
26、64 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 inc cl 1350079 FE CD dec
27、 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 148008E WaitRelease: 1490
28、08E 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 proc near 16200A1 50 push
29、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 17200B7 A0 0002r mov al
30、, 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 dx, CS8259A 18500D6 B0
31、20 mov al, 20h ; 中斷服務程序結束指令 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 20 mov al, ICW2 20000E7
32、 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, 03fh 21500F9 C6 06 0005
33、r 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 Minute, 0 224011C C6 06 0003r 00 mov S
34、econd, 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 ;計數器1,16位,方式3,二進制 2310129 BA C003 mov dx, CONTROL 232012C EE out dx, al 233 234012D B8 F424 mov ax, 62500 235013
35、0 BA C001 mov dx, COUNT1 2360133 EE out dx, al ;計數器低字節 2370134 8A C4 mov al, ah 2380136 EE out dx, al ;計數器高字節 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 ax, code 2470143 D1 E0 D1 E0 D1 E0D1+
36、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, data 260015D 8E D8 mov ds, ax 261015F C6
37、 06 0000r 00 mov CNT, 0 ; 計數值初始為0 2620164 A0 0000r mov al, CNT 2630167 BA 8000 mov dx, PA8255 264016A EE out dx, al 265016B FB sti 266016C LP: ;等待中斷,并計數。 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, offset LEDMAP 275017C 03 D8 add b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六一兒童端午活動方案
- 六一參加拔河活動方案
- 六一復古懷舊活動方案
- 六一孩子野餐活動方案
- 六一德育活動方案
- 六一沙灘活動方案
- 六一活動搶答活動方案
- 六一活動游樂場活動方案
- 六一活動鉆山洞活動方案
- 六一節活動親子活動方案
- 2025年食品溯源系統應用:食品安全追溯體系建設與供應鏈協同報告
- 北京開放大學2025年《企業統計》形考作業1答案
- 網絡輿情分析模型-全面剖析
- 課題申報書:生成式人工智能賦能高校體育教師教學能力的內在機理與實踐路徑研究
- 信譽樓管理制度特色
- 登山安全培訓課件內容
- 防沙治沙光伏一體化技術方案設計
- 2025年春新北師大版生物七年級下冊課件 第11章 人體的運動 第1節 人體的骨骼
- 便攜式移動電源規范
- 實驗室生物安全評估制度(4篇)
- 【MOOC】《電路原理》(東北大學)中國大學慕課答案
評論
0/150
提交評論