版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p> 一、設計目的………………………………………………………………………2</p><p> 二、設計內容與要求………………………………………………………………2</p><p> 三、設計原理與硬件電路…………………………………………………………2</p><p
2、> 四、接線電路圖與實物電路圖……………………………………………………3</p><p> 五、程序流程圖……………………………………………………………………4</p><p> 六、程序代碼………………………………………………………………………5</p><p> 七、程序及硬件系統(tǒng)調試情況……………………………………………………9</p>
3、;<p> 八、設計總結與體會………………………………………………………………9</p><p> 九、參考文獻………………………………………………………………………10</p><p><b> 一、設計目的</b></p><p> 課程設計是培養(yǎng)和鍛煉學生在學習完本門課后綜合應用所學理論知識,解決實際工程設計和應用問
4、題的能力的重要環(huán)節(jié)。通過課程設計,熟悉和掌握微機系統(tǒng)的硬件設計的方法、原理、設計步驟。熟練掌握微機系統(tǒng)與接口擴展電路的設計方法,熟練應用8086匯編語言編寫應用程序和實際設計中的硬軟件調試方法和步驟。不僅要培養(yǎng)學生事實求是和嚴肅認真的工作態(tài)度,培養(yǎng)學生的實際動手能力,檢驗學生對本門課學習的情況,更要培養(yǎng)學生在實際的工程設計中查閱資料,撰寫設計報告表達設計思想和結果的能力。</p><p><b> 二
5、、設計內容與要求</b></p><p> 硬件設計題十一 閃爍燈</p><p> 利用8253實現(xiàn)閃爍燈效果,并最終通過鍵盤輸入指定時間實現(xiàn)定時閃爍,同時利用七段數(shù)碼管倒計時輔助顯示閃爍時間,實現(xiàn)定時設定功能。比如:按下鍵盤9號鍵,則LED燈開始每秒閃爍一下,9秒后停止閃爍,實現(xiàn)定時閃爍;同時數(shù)碼管從9開始倒計時顯示輔助顯示閃爍時間。</p><p
6、> 三、設計原理與硬件電路</p><p> 啟動后,通過8255的C口開始掃描鍵盤。當有鍵按下時,排除抖動的可能并且判斷釋放該鍵后,得到鍵碼。然后通過8255的A口送出倒計時的碼值,通過8255的PB0啟動8253的分頻電路,得1s方波,驅動LED閃爍。</p><p> 鍵盤上按鍵的位置采用掃描法得到。行線接+5V,作為8255的C口低四位輸入,列線由8255高四位輸出,逐
7、列輸出0。檢測C口高四位是否有0,若有則該列所在行的鍵即為按下的鍵。當然逐列掃描前要先判斷是否有鍵按下,并延時后,再次判斷有無鍵按下,以排除鍵盤抖動的可能性。</p><p> 鍵盤按鍵的鍵碼的確定。當然我們可以對每一種情況進行賦值,但考慮到只用到1~9鍵,為了精簡程序,采用以下特殊方法確定鍵碼。由下圖可以發(fā)現(xiàn),1~9鍵中,下一列都比前一列同一行的值多1。抓住這一特點,將每列的初值Y0~Y2依次設為0、1、2,
8、則X2行的該列的鍵碼就是在該列初值的基礎上加1合成;同理X1行加4與列初值合成,X0行加7與列的初值合成。在確定了鍵碼后,要等鍵釋放后才能執(zhí)行相應的操作。</p><p> 8253實現(xiàn)將1MHz的信號分頻成1Hz的方波的功能,然后用于驅動LED。分頻須使用</p><p> 兩個通道級聯(lián)實現(xiàn),而8253的啟動右8255的PB0來控制。</p><p> 四、
9、接線電路圖與實物電路圖</p><p><b> 五、程序流程圖</b></p><p><b> 六、程序代碼</b></p><p> code segment </p><p> assume cs:code,ds:code <
10、/p><p> start: mov ax , cs </p><p> mov ds , ax</p><p> lea di , ledtab</p><p> mov al , 35h ; 通道0初始化 ,00110101b,16位,方式2,BCD</p&g
11、t;<p> mov dx , 20bh </p><p> out dx , al</p><p> mov al , 00h ; 寫初值1000BCD</p><p> mov dx , 208h</p><p> out dx , al</p><p>
12、; mov al , 10h</p><p> out dx , al</p><p> mov al , 77h ; 通道1初始化 ,01110111b,16位,方式3,BCD</p><p> mov dx , 20bh </p><p> out dx , al</p>&l
13、t;p> mov al , 00h ; 寫初值1000BCD</p><p> mov dx , 209h</p><p> out dx , al</p><p> mov al , 10h</p><p> out dx , al </p><p> mov
14、 al , 81h ; 8255初始化 ,10000001b,c口低四位輸入 ,</p><p><b> 其余均為輸出</b></p><p> mov dx , 203h</p><p> out dx , al</p><p> wait2:mov dx , 201h
15、 ; B口清零,PB0=0,無方波,LED暗 </p><p> mov al , 00h</p><p> out dx , al </p><p> mov dx , 200h ; A口清零,數(shù)碼管暗</p>&
16、lt;p> mov al , 00h </p><p> out dx , al </p><p> ks1 : call ks ; 讀取按鍵</p><p> cmp al , 0fh ; 判斷有無鍵閉合(行有無低電平)&l
17、t;/p><p> jz ks1 ; 無鍵閉合</p><p> mov cx , 0f0h ; 延時,去抖</p><p> loop1: loop loop1</p><p><b> call ks</b></p><p&
18、gt; cmp al , 0fh ; 再次判斷有無鍵閉合</p><p><b> jz ks1</b></p><p> mov bh , 0efh ; 初始化列碼,11101111b,準備檢測第一列</p><p> mov bl , 00h
19、 ; 初始化列值</p><p><b> jz k1</b></p><p> cmp al , 0bh ; 第三行(4)?</p><p><b> jz k4</b></p><p> cmp al , 07h
20、 ; 第四行(7)?</p><p><b> jz k7</b></p><p> next : rol bh , 1 ; 列碼左移一位</p><p> inc bl ; 列值加一</p><p>
21、 cmp bh , 0feh ; 判斷該鍵掃描是否結束</p><p> jnz again </p><p> jmp ks1 </p><p> k0 : add bl , 0 ; 與列值合成鍵碼</p><p> jmp wait1&
22、lt;/p><p> k1 : add bl , 1</p><p> jmp wait1</p><p> k4 : add bl , 4</p><p> jmp wait1</p><p> k7 : add bl , 7</p><p> wait1:
23、 call ks</p><p> cmp al , 0fh ; 判斷鍵是否釋放</p><p> jnz wait1 ; 鍵未釋放,等待!</p><p> jmp flash ; 進行閃爍和顯示 </p><p> fl
24、ash: mov bh , 00h</p><p> add di , bx</p><p> count: mov al , [di] ; 數(shù)碼管倒計時顯示</p><p> mov dx , 200h</p><p> out dx , al</p><p>
25、;<b> dec di</b></p><p> mov dx , 201h ; 用的b0控制的Gate1,使8253產(chǎn)生1S方波</p><p> mov al , 01h</p><p> out dx , al</p><p> call delay</p>
26、<p><b> dec bl </b></p><p> jnz count ;用bl(鍵盤值)控制循環(huán)次數(shù)</p><p> jmp wait2 </p><p> ks proc near ;讀取按鍵</p>&l
27、t;p> mov dx , 202h</p><p> mov al , 0fh</p><p> out dx , al ;使所有列線為低電平</p><p> in al , dx ;讀取行值</p><p> and al , 0
28、fh ;屏蔽高4位</p><p><b> ret</b></p><p><b> ks endp</b></p><p> delay proc near ;循環(huán)4*65536次,延遲0.02ms </p>
29、<p> push ax </p><p><b> push cx</b></p><p><b> push bx</b></p><p> mov bx , 4 </p><p> delay2:loop delay2</p>&l
30、t;p><b> dec bx</b></p><p> jnz delay1</p><p><b> pop bx</b></p><p><b> pop cx</b></p><p><b> pop ax</b></p&
31、gt;<p><b> ret</b></p><p> delay endp</p><p> ledtab db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh </p><p> code ends</p><p><b>
32、 end start</b></p><p> 七、程序及硬件系統(tǒng)調試情況</p><p> 按上面電路圖連線,8253接地址208h~20bh,8255接地址200h~203h。全速運行后,燈滅,數(shù)碼管暗。此時按下鍵盤上的任意一個數(shù)字鍵,等鍵釋放后,燈開始每秒閃爍一次,數(shù)碼管顯示倒計時,當數(shù)碼管顯示到0時,燈停止閃爍,實現(xiàn)定時閃爍功能及數(shù)碼管輔助顯示。</p>
33、<p> 調試過程中遇到的主要問題和解決辦法:</p><p> 發(fā)現(xiàn)數(shù)碼管顯示錯誤,其他均正確。分別檢測數(shù)碼管和送碼值的8255的A口,發(fā)現(xiàn)都是好的,確定是自己程序的問題。多次檢測后發(fā)現(xiàn)自己犯了一個低級錯誤:設置了數(shù)據(jù)段。在利用實驗儀提供的實驗環(huán)境調試程序時,不使用數(shù)據(jù)段,偽指令放在代碼段中。</p><p><b> 八、設計總結與體會</b>
34、</p><p> 微機原理課程設計已經(jīng)接近尾聲,雖然這次課程設計只有短短的4個半天,但是對于我們鞏固期末復習的成果,通過實踐進一步加深理論知識的理解是意義重大的。</p><p> 這次我做的是閃爍燈,課題中用到了鍵盤、數(shù)碼管、8255、8253等。通過這次課程設計,我能夠熟練的編寫匯編程序來使用這些硬件來實現(xiàn)特定的功能。盡管我只做了一個題目,但在做完之后,也思考了其他部分題目,我認
35、為這些硬件題目都大同小異,只要有設計思路,就一定能編寫出程序。</p><p> 這次另一個重要的收獲就是下載到調試程序,軟件調試只能解決語法上的錯誤,而對于程序思路算法上的錯誤不能檢測。這就需要我們下載到實驗箱上,硬件調試。當發(fā)現(xiàn)不能達到預期的效果時,根據(jù)“缺失的或錯誤的”效果,定位程序中錯誤的地方,加以改正!</p><p> 而在定位程序錯誤時,必須先排除硬件本身的實效!這也是我
36、們應該學會的“技術”,這個其實對我們的要求也很高,這必須建立在對程序和硬件等很熟悉的基礎上。在排除硬件故障時,常用的有兩種方法:一是編寫一個小程序來檢查芯片的好壞;還有一種是在源程序調試中,檢測各處是否出現(xiàn)相應的高低電平(接燈,亮為低電平,不亮為高電平)。</p><p> 總之,這次課程設計很成功,提高了動手實踐能力,同時又加深了理論知識的理解,現(xiàn)在能夠熟練應用8086匯編語言編寫應用程序,并學會了實際設計中
37、的硬件調試方法和步驟,熟悉微機系統(tǒng)的硬軟件開發(fā)工具的使用方法。</p><p> 最后再次感謝這次課程設計中的所有指導老師,有了你們,我們才能這么快速的進步!</p><p><b> 九、參考文獻</b></p><p> 徐晨,陳繼紅,王春明,徐慧.微機原理及應用[M].北京:高等教育出版社,2004,334-337</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論