版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 姓名: </p><p> 專業(yè): </p><p> 課程名稱:微機(jī)接口技術(shù)</p><p> 班級: </p><p>
2、 系(分院): </p><p><b> 年 月</b></p><p><b> 目 錄</b></p><p> 一、課程設(shè)計要求錯誤!未定義書簽。</p><p><b> 二、總體設(shè)計3</b></p&
3、gt;<p> 三、 硬件原理圖4</p><p><b> 四、程序設(shè)計7</b></p><p><b> 五、調(diào)試過程15</b></p><p> 六、心得體會:16</p><p><b> 七、參考文獻(xiàn)17</b></p>
4、;<p><b> 一、課程設(shè)計要求</b></p><p><b> 1、要求</b></p><p> 選取8255A作為擴(kuò)展接口芯片,輸入設(shè)備為開關(guān)和非編碼鍵盤,輸出設(shè)備為發(fā)光二極管和七段數(shù)碼管。要求由鍵盤輸入倒計時時間(至少為三位,分和秒用“-”隔開),要求計時精度高于0.1秒,輸入計時時間后,由七段數(shù)碼管顯示并在開關(guān)
5、的控制下,實現(xiàn)“開始倒計時”、“暫停倒計時”和“結(jié)束倒計時”。倒計時結(jié)束、倒計時暫停、倒計時開始要由不同的發(fā)光二極管點(diǎn)亮或閃爍狀態(tài)予以指示。</p><p><b> 2、目的 </b></p><p> 單片機(jī)是一款功能十分強(qiáng)大,集成度非常高的數(shù)字處理系統(tǒng)。為了進(jìn)一步加強(qiáng)對理論理解的深度和掌握的程度,提高動手能力以及初步的系統(tǒng)分析與設(shè)計實現(xiàn)的能力,特作此設(shè)計。&
6、lt;/p><p><b> 二、總體設(shè)計</b></p><p><b> 1、總體要求</b></p><p> 設(shè)計中包括開關(guān)、非編碼矩陣鍵盤、發(fā)光二極管、七段數(shù)碼管在內(nèi)的兩種輸入設(shè)備和兩種輸出設(shè)備??傮w設(shè)計中至少要給出這4部分的硬件連接、軟件驅(qū)動、地址分配及相應(yīng)的設(shè)計原理的描述。</p><p
7、><b> 2、設(shè)計原理的描述</b></p><p> 電源開關(guān)=PC0,暫停開關(guān)=PC1;電源指示燈=PC7,暫停指示燈=PC6;PC0=1啟動,=0退出,PC1=1暫停,=0不暫停,電源燈常亮,暫停等閃爍,非暫停時刻熄滅。</p><p><b> 三、 硬件原理圖</b></p><p><b&g
8、t; 1、模塊一硬件圖</b></p><p> 圖 1 單片機(jī)原理圖</p><p><b> 2、模塊二引腳表</b></p><p> 表 1 74ls48引腳功能表</p><p><b> 3、模塊三字形顯示</b></p><p> 圖
9、 2 七段數(shù)碼管的字形</p><p> 圖 3 數(shù)碼管與各設(shè)備互連</p><p> 圖 4 鍵位碼與各設(shè)備原理圖</p><p><b> 四、程序設(shè)計</b></p><p><b> 1、程序流程圖</b></p><p><b> 圖 四 流程圖
10、</b></p><p><b> 2、源代碼</b></p><p> data segment</p><p> pap equ 218h</p><p> pbp equ 219h</p><p> pcp equ 21ah</p><p>
11、cp equ 21bh ;控制字</p><p> dp equ 210h ;段選</p><p> wp equ 211h ;位選</p><p><b> table dw</b></p><p> 0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180h&l
12、t;/p><p> dw 0201h,0202h,0204h,0208h,0210h,0220h,0240h,0280h,0410h,0420h,0440h,0480h</p><p><b> char db</b></p><p> 12,13,14,15,11,10,9,8,4,5,6,7,3,2,1,0</p><
13、p><b> Da1 db</b></p><p> 3fh,30h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,58h,5eh,79h,71h,40h</p><p><b> Cc1 dw ?</b></p><p><b> Cc2 dw ?</b&g
14、t;</p><p><b> W2 db ?</b></p><p><b> data ends</b></p><p> code segment</p><p> assume cs:code,ds:data</p><p> start:mov ax,da
15、ta</p><p><b> mov ds,ax</b></p><p> call kg ;開關(guān)</p><p> mov w2,1 ;輸入第一個鍵位碼</p><p><b> call key</b></p><p> mov bh,[di]
16、;保存第一個鍵位碼</p><p> mov w2,2 ;輸入第二個鍵位碼</p><p> call dey </p><p> mov bl,[di] ;保存第二個鍵位碼</p><p> call zyc ;延遲程序</p><p> call ds1 ;進(jìn)行
17、倒數(shù)程序</p><p> mov ah,4ch</p><p><b> int 21h</b></p><p> dey proc ;按鍵子程序</p><p> push si ;保存寄存器</p><p><b> push ax</b
18、></p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p> mov al,82h ;初始化a口,c口為輸出,b口為輸入</p>&
19、lt;p><b> mov dx,cp</b></p><p><b> out dx,al</b></p><p><b> mov ax,0</b></p><p> r1:mov al,0 ;用反轉(zhuǎn)法對鍵位進(jìn)行掃描</p><p> mov dx,pa
20、p</p><p><b> out dx,al</b></p><p> mov dx,pbp</p><p><b> in al,dx</b></p><p> cmp al,offh</p><p><b> mov dx,di</b>
21、</p><p> lea di,da1</p><p> sub dx,cc1 ;還原[di]的值</p><p> mov cc2,si ;找到[di](十位)數(shù)字的所在相對一個數(shù)的位置</p><p><b> mov cx,si</b></p><p> lea
22、 si,da1</p><p> sub cx,si ;得到十位的循環(huán)次數(shù)</p><p> mov si cc2 ;還原[s2]的值</p><p><b> dec di</b></p><p><b> sub dx,0</b></p><p>
23、 jz e2 ;判斷個位是不是為零;如果為0,跳過下面的調(diào)用</p><p> call ds4 ;輸出在輸入時候不滿十個數(shù)的各位數(shù)字</p><p> e2:sub cx,0</p><p> jz e1 ;判斷十位是否為零,如果為0,跳過下面的調(diào)用</p><p> dec si ;因為在前面已經(jīng)輸出了一次個位數(shù),
24、所以這里減一</p><p><b> mov dx,10</b></p><p> d5:lea di,da1+9 ;從第九個數(shù)開始倒數(shù),完成最后的倒數(shù)循環(huán)</p><p> call ds4 ;進(jìn)行倒數(shù)</p><p> dec si ;十位數(shù)字減一</p><p><
25、;b> loop d5</b></p><p><b> e1:pop ax</b></p><p><b> pop bx</b></p><p><b> pop cx</b></p><p><b> pop dx</b>
26、</p><p><b> pop si</b></p><p> pop di ret</p><p><b> ds1 endp</b></p><p> ds4 proc ;倒數(shù)子程序</p><p><b> push dx</b>&
27、lt;/p><p><b> push cx</b></p><p><b> push bx</b></p><p><b> push ax</b></p><p><b> mov cx,dx</b></p><p>
28、dp1:mov dx,20</p><p> dg2:push dx</p><p> mov bh,[si]</p><p> mov bl,[di]</p><p> call zyc ;調(diào)用延遲程序</p><p> call exit ;調(diào)用退出程序</p><p&g
29、t; mov al,[si] ;顯示倒數(shù)的數(shù)字</p><p> mov dx,211h</p><p><b> out dx,al</b></p><p><b> mov al,1</b></p><p> mov dx,210h</p><p><
30、b> out dx,al</b></p><p><b> call yca</b></p><p> mov al,[di]</p><p> mov dx,211h</p><p><b> out dx,al</b></p><p><
31、b> mov al,2</b></p><p> mov dx,210h</p><p><b> out dx,al</b></p><p><b> call yca</b></p><p><b> call zyc</b></p>
32、<p><b> pop dx</b></p><p><b> dec dx</b></p><p><b> cmp dx,0</b></p><p><b> jnz dg2</b></p><p><b> dec
33、 di</b></p><p><b> loop dp1</b></p><p><b> pop ax</b></p><p><b> pop bx</b></p><p><b> pop cx</b></p>&
34、lt;p><b> pop dx</b></p><p><b> ret</b></p><p><b> ds4 endp</b></p><p> yc proc ;延遲程序</p><p><b> push cx</b><
35、/p><p><b> push bx</b></p><p> mov bx,5000</p><p> yc1:movcx,4000</p><p><b> loop $</b></p><p><b> dec bx</b></p&g
36、t;<p><b> jnz yc1</b></p><p><b> pop bx</b></p><p><b> pop cx</b></p><p><b> mov bl,al</b></p><p> mov cx of
37、ffh</p><p><b> loop $</b></p><p><b> mov dx,cp</b></p><p> mov al,90h</p><p><b> out dx,al</b></p><p> mov dx,pbp&
38、lt;/p><p><b> mov al,bl</b></p><p><b> out dx,al</b></p><p><b> movdx,pap</b></p><p><b> in al,dx</b></p><p&
39、gt;<b> mov ah,bl</b></p><p><b> not ax</b></p><p> lea si table</p><p> lea di char</p><p><b> mov cx,16</b></p><p&g
40、t; r2:cmp ax,[si]</p><p><b> jz nxt</b></p><p><b> add si,2</b></p><p><b> inc di</b></p><p><b> loop r2</b></p&
41、gt;<p> nxt:mov dx,dp ;將鍵盤上輸入數(shù)據(jù)顯示在數(shù)碼管上</p><p><b> mov alw2</b></p><p><b> out dx,al</b></p><p> mov al,[di]</p><p><b> out dx
42、,al</b></p><p><b> mov dx,cp</b></p><p> mov al,82h</p><p><b> out dx,al</b></p><p><b> call yc</b></p><p>&l
43、t;b> pop dx</b></p><p><b> pop cx</b></p><p><b> pop ax</b></p><p><b> pop si</b></p><p><b> ret</b></p
44、><p><b> key endp</b></p><p> kg proc ;開關(guān)</p><p><b> push ax</b></p><p><b> push bx</b></p><p><b> push cx<
45、;/b></p><p><b> push dx</b></p><p> mov dx,cp ;初始化c口為輸入,其他口為輸出</p><p> mov al,89h</p><p><b> out dx,al</b></p><p> mov dx,
46、pcp</p><p> kg1:in al,dx</p><p> test al,1 ;當(dāng)k1為0時啟動程序</p><p><b> jz kg1</b></p><p> mov cx,5000h</p><p> kg2:mov dx,pap</p><
47、;p> mov al,ofeh</p><p><b> loop kg2</b></p><p><b> pop dx</b></p><p><b> pop cx</b></p><p><b> pop bx</b></p&
48、gt;<p><b> pop ax</b></p><p><b> ret</b></p><p><b> kg endp</b></p><p> ds1 proc ;倒數(shù)程序</p><p><b> push di</b&g
49、t;</p><p><b> push si</b></p><p><b> push cx</b></p><p><b> push ax</b></p><p> lea si,da1</p><p> lea di,da1</
50、p><p> d1:cmp [di],bl </p><p><b> jz d2</b></p><p><b> inc di</b></p><p><b> jmp d1</b></p><p> d2:cmp [si],bh</p
51、><p><b> jz d4</b></p><p><b> inc si</b></p><p><b> jmp d2</b></p><p> d4:mov cc1,di</p><p> yca proc ;延遲程序</p&g
52、t;<p><b> push cx</b></p><p><b> push bx</b></p><p> mov bx,1500</p><p> c2:mov cx,1000</p><p><b> loop $</b></p>
53、<p><b> dec bx</b></p><p><b> jnz yc2</b></p><p><b> pop bx</b></p><p><b> pop cx</b></p><p><b> ret<
54、;/b></p><p><b> yca endp</b></p><p> zyc proc ;延遲主程序,主要是用于顯示和延遲</p><p><b> push si</b></p><p><b> push di</b></p>&l
55、t;p><b> push ax</b></p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p> s2:call exit<
56、;/p><p> mov dx,cp ;初始化a口,b口為輸出,c口低四位為輸入,高四位為輸出</p><p> mov al,81h</p><p><b> out dx,al</b></p><p> mov dx,pcp ;判斷k3是否為0,如果為0,則進(jìn)入延遲</p><p>&
57、lt;b> in al,dx</b></p><p> test al,4h</p><p><b> jnz s3</b></p><p><b> mov dx,dp</b></p><p> mov al,01h</p><p><b&
58、gt; out dx,al</b></p><p><b> mov dx,wp</b></p><p><b> mov al,bh</b></p><p><b> out dx,al</b></p><p> mov dx,pcp ;顯示燈<
59、/p><p><b> mov al,0h</b></p><p><b> out dx,al</b></p><p><b> call yca</b></p><p><b> mov dx,dp</b></p><p>
60、 mov al,02h</p><p><b> out dx,al</b></p><p><b> mov dx,wp</b></p><p><b> mov al,bl</b></p><p><b> out dx,al</b><
61、/p><p> mov dx,pcp ;顯示燈滅</p><p> mov al,40h</p><p><b> out dx,al</b></p><p><b> call yca</b></p><p><b> jmp s2</b>&
62、lt;/p><p><b> s3:pop dx</b></p><p><b> pop cx</b></p><p><b> pop bx</b></p><p><b> pop ax</b></p><p><b
63、> pop di</b></p><p><b> pop si</b></p><p><b> ret</b></p><p><b> zyc endp</b></p><p> exit proc ;退出程序</p><
64、;p><b> push ax</b></p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p><b> push di
65、</b></p><p><b> push si</b></p><p> mov dx,cp ;初始化c口輸入,a,b口為輸出</p><p> mov al,89h</p><p><b> out dx,al</b></p><p> mov
66、dx,pcp</p><p><b> in al,dx</b></p><p> test al,2h</p><p><b> jz ex1</b></p><p> mov ah,4ch</p><p><b> int 21h</b>&
67、lt;/p><p> ex1:pop si</p><p><b> pop di</b></p><p><b> pop dx</b></p><p><b> pop cx</b></p><p><b> pop bx</b
68、></p><p><b> pop ax</b></p><p><b> ret</b></p><p><b> exit endp</b></p><p><b> code ends</b></p><p>
69、<b> end start</b></p><p><b> 五、調(diào)試過程</b></p><p> 首先將發(fā)光二級管,鍵盤,七段數(shù)碼管一個一個的分別進(jìn)行調(diào)用,在調(diào)試過程中,通過實驗的效果來發(fā)現(xiàn)錯誤的地方,并加以改善,直到調(diào)試到的結(jié)果與想要的現(xiàn)象相符,再將各模塊進(jìn)行拼接,進(jìn)行調(diào)試,調(diào)試成功為止。</p><p>
70、 鍵盤和七段數(shù)碼管的程序模塊首先經(jīng)過單獨(dú)調(diào)試,然后在模塊拼接后再進(jìn)行調(diào)試。在調(diào)試過程中遇到的問題要給出分析過程及解決辦法。</p><p> 在調(diào)試過程中,首先出現(xiàn)的問題是在做發(fā)光二極管實驗中連線總是出現(xiàn)問題,導(dǎo)致部分指示燈不能準(zhǔn)確的顯示,經(jīng)調(diào)整實驗成功,在編程過程中也出現(xiàn)了由于對匯編語句撐握不夠熟練導(dǎo)致程序無法調(diào)試,檢查最終得以解決.其次是在七段數(shù)碼管顯示中出現(xiàn)多位顯示的閃爍問題,后經(jīng)老師指導(dǎo),檢查出是延時程
71、序出現(xiàn)問題,通過縮短刷新時間間隔將問題解決。</p><p> 在DOS狀態(tài)下編譯程序,編譯通過后建立連接。輸入文件名才能運(yùn)行程序。</p><p><b> 六、心得體會</b></p><p> 通過前幾個的小實驗,從中了解了輸出端口211h,還有每個數(shù)字輸出的位置由幾個數(shù)控制。若想在第一個位置上顯示則將210h處的dl賦值為1h,第
72、二個為2h,第三個為4h,第四個為8h,第五個為10h,第六個為20h,這只是在幾個位置上顯示單個的數(shù)。若想要顯示前3個位置,就將210h處的al賦值為7。在掌握8255A的工作方式 ,開始做實驗時,沒有想到延遲的位置,導(dǎo)致燈的閃爍沒有規(guī)律,其次程序正常執(zhí)行后,因把5、6的線序互相插反了,導(dǎo)致燈亮的順序發(fā)生了變化。最后燈循環(huán)時,最后2盞燈沒有循環(huán)到,因開始把燈設(shè)置為全亮,此時為0,占有用了一個空間,經(jīng)過幾次反復(fù)的試驗,做出了正確的程序。
73、在上面的實驗中,加了開關(guān)控制、暫停,退出一系列的操作。總體思想為當(dāng)開關(guān)1開時,流水燈開始循環(huán);當(dāng)開關(guān)2開時,流水燈暫停,流水燈繼續(xù)循環(huán)流動,當(dāng)開關(guān)2關(guān)時,流水燈暫停,開關(guān)1關(guān)閉。數(shù)碼管的顯示,之前是靜態(tài)的初始化,動態(tài)數(shù)碼管顯示是在靜態(tài)的基礎(chǔ)上修改完成的,首先判斷十位和個位上的數(shù)時,調(diào)用延遲的位置加錯了地方。因之前在實驗沒有加過數(shù)據(jù)段。所以在這次實驗中,數(shù)據(jù)段的使用不夠熟練,依次讀數(shù)中出錯了,在整體中沒有將數(shù)據(jù)保存,經(jīng)</p>
74、<p> 總得來說通過對<<微機(jī)接口技術(shù)>>這門課程的學(xué)習(xí) ,及后期的課程設(shè)計使我對單片機(jī)的基本結(jié)構(gòu)和特點(diǎn)、單片機(jī)的應(yīng)用模式和領(lǐng)域,以及單片機(jī)的供應(yīng)狀態(tài)有了進(jìn)一步的認(rèn)識,從而掌握了單片機(jī)與其他設(shè)備相連接的輸入輸出中斷等接口技術(shù)的基本知識,使我從硬件軟件彼此相結(jié)合的基礎(chǔ)上理論聯(lián)系實際,進(jìn)一步提高了動手能力,綜合應(yīng)用的同時對單片機(jī)應(yīng)用系統(tǒng)及其在計算機(jī)內(nèi)運(yùn)行過程中相應(yīng)步驟有了進(jìn)一步的認(rèn)識。</p&
75、gt;<p><b> 七、參考文獻(xiàn)</b></p><p> 1、趙秀珍,單永磊.單片微型計算機(jī)原理及應(yīng)用.中國水利水電出版社,2001年</p><p> 2、胡漢才. 單片原理及其接口技術(shù).北京:清華大學(xué)出版社,1996年</p><p> 3、孫一林.匯編語言程序設(shè)計.高等教育出版社,2001年</p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)接口技術(shù)課程設(shè)計
- 微機(jī)接口技術(shù)課程設(shè)計
- 微機(jī)原理與接口技術(shù)課程設(shè)計報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計
- 微機(jī)原理與接口技術(shù)課程設(shè)計
- 微機(jī)原理與接口技術(shù)課程設(shè)計.
- 微機(jī)原理與接口技術(shù)課程設(shè)計
- 紅外通信-微機(jī)原理與接口技術(shù)課程設(shè)計報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計報告書
- 微機(jī)接口技術(shù)課程設(shè)計目的及要求
- 微機(jī)接口技術(shù)課程設(shè)計--數(shù)字存儲示波器設(shè)計
- plc接口技術(shù)課程設(shè)計報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計報告——電子琴
- 單機(jī)微機(jī)原理與接口技術(shù)課程設(shè)計實驗報告
- 微機(jī)原理與接口技術(shù)課程設(shè)計--流水燈
- 電子密碼鎖-微機(jī)原理與接口技術(shù)課程設(shè)計報告
- 電子密碼鎖-微機(jī)原理與接口技術(shù)課程設(shè)計報告
- 機(jī)電接口技術(shù)課程設(shè)計
- 微機(jī)接口技術(shù)課程設(shè)計--可預(yù)置電子時鐘
- 微機(jī)原理與接口技術(shù)課程設(shè)計 --存儲器
評論
0/150
提交評論