閃爍燈課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p>  一、設(shè)計(jì)目的………………………………………………………………………2</p><p>  二、設(shè)計(jì)內(nèi)容與要求………………………………………………………………2</p><p>  三、設(shè)計(jì)原理與硬件電路…………………………………………………………2</p><p

2、>  四、接線電路圖與實(shí)物電路圖……………………………………………………3</p><p>  五、程序流程圖……………………………………………………………………4</p><p>  六、程序代碼………………………………………………………………………5</p><p>  七、程序及硬件系統(tǒng)調(diào)試情況……………………………………………………9</p>

3、;<p>  八、設(shè)計(jì)總結(jié)與體會(huì)………………………………………………………………9</p><p>  九、參考文獻(xiàn)………………………………………………………………………10</p><p><b>  一、設(shè)計(jì)目的</b></p><p>  課程設(shè)計(jì)是培養(yǎng)和鍛煉學(xué)生在學(xué)習(xí)完本門(mén)課后綜合應(yīng)用所學(xué)理論知識(shí),解決實(shí)際工程設(shè)計(jì)和應(yīng)用問(wèn)

4、題的能力的重要環(huán)節(jié)。通過(guò)課程設(shè)計(jì),熟悉和掌握微機(jī)系統(tǒng)的硬件設(shè)計(jì)的方法、原理、設(shè)計(jì)步驟。熟練掌握微機(jī)系統(tǒng)與接口擴(kuò)展電路的設(shè)計(jì)方法,熟練應(yīng)用8086匯編語(yǔ)言編寫(xiě)應(yīng)用程序和實(shí)際設(shè)計(jì)中的硬軟件調(diào)試方法和步驟。不僅要培養(yǎng)學(xué)生事實(shí)求是和嚴(yán)肅認(rèn)真的工作態(tài)度,培養(yǎng)學(xué)生的實(shí)際動(dòng)手能力,檢驗(yàn)學(xué)生對(duì)本門(mén)課學(xué)習(xí)的情況,更要培養(yǎng)學(xué)生在實(shí)際的工程設(shè)計(jì)中查閱資料,撰寫(xiě)設(shè)計(jì)報(bào)告表達(dá)設(shè)計(jì)思想和結(jié)果的能力。</p><p><b>  二

5、、設(shè)計(jì)內(nèi)容與要求</b></p><p>  硬件設(shè)計(jì)題十一 閃爍燈</p><p>  利用8253實(shí)現(xiàn)閃爍燈效果,并最終通過(guò)鍵盤(pán)輸入指定時(shí)間實(shí)現(xiàn)定時(shí)閃爍,同時(shí)利用七段數(shù)碼管倒計(jì)時(shí)輔助顯示閃爍時(shí)間,實(shí)現(xiàn)定時(shí)設(shè)定功能。比如:按下鍵盤(pán)9號(hào)鍵,則LED燈開(kāi)始每秒閃爍一下,9秒后停止閃爍,實(shí)現(xiàn)定時(shí)閃爍;同時(shí)數(shù)碼管從9開(kāi)始倒計(jì)時(shí)顯示輔助顯示閃爍時(shí)間。</p><p

6、>  三、設(shè)計(jì)原理與硬件電路</p><p>  啟動(dòng)后,通過(guò)8255的C口開(kāi)始掃描鍵盤(pán)。當(dāng)有鍵按下時(shí),排除抖動(dòng)的可能并且判斷釋放該鍵后,得到鍵碼。然后通過(guò)8255的A口送出倒計(jì)時(shí)的碼值,通過(guò)8255的PB0啟動(dòng)8253的分頻電路,得1s方波,驅(qū)動(dòng)LED閃爍。</p><p>  鍵盤(pán)上按鍵的位置采用掃描法得到。行線接+5V,作為8255的C口低四位輸入,列線由8255高四位輸出,逐

7、列輸出0。檢測(cè)C口高四位是否有0,若有則該列所在行的鍵即為按下的鍵。當(dāng)然逐列掃描前要先判斷是否有鍵按下,并延時(shí)后,再次判斷有無(wú)鍵按下,以排除鍵盤(pán)抖動(dòng)的可能性。</p><p>  鍵盤(pán)按鍵的鍵碼的確定。當(dāng)然我們可以對(duì)每一種情況進(jìn)行賦值,但考慮到只用到1~9鍵,為了精簡(jiǎn)程序,采用以下特殊方法確定鍵碼。由下圖可以發(fā)現(xiàn),1~9鍵中,下一列都比前一列同一行的值多1。抓住這一特點(diǎn),將每列的初值Y0~Y2依次設(shè)為0、1、2,

8、則X2行的該列的鍵碼就是在該列初值的基礎(chǔ)上加1合成;同理X1行加4與列初值合成,X0行加7與列的初值合成。在確定了鍵碼后,要等鍵釋放后才能執(zhí)行相應(yīng)的操作。</p><p>  8253實(shí)現(xiàn)將1MHz的信號(hào)分頻成1Hz的方波的功能,然后用于驅(qū)動(dòng)LED。分頻須使用</p><p>  兩個(gè)通道級(jí)聯(lián)實(shí)現(xiàn),而8253的啟動(dòng)右8255的PB0來(lái)控制。</p><p>  四、

9、接線電路圖與實(shí)物電路圖</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 ; 寫(xiě)初值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 ; 寫(xiě)初值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,無(wú)方波,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 ; 判斷有無(wú)鍵閉合(行有無(wú)低電平)&l

17、t;/p><p>  jz ks1 ; 無(wú)鍵閉合</p><p>  mov cx , 0f0h ; 延時(shí),去抖</p><p>  loop1: loop loop1</p><p><b>  call ks</b></p><p&

18、gt;  cmp al , 0fh ; 再次判斷有無(wú)鍵閉合</p><p><b>  jz ks1</b></p><p>  mov bh , 0efh ; 初始化列碼,11101111b,準(zhǔn)備檢測(cè)第一列</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 ; 判斷該鍵掃描是否結(jié)束</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 ; 進(jìn)行閃爍和顯示 </p><p>  fl

24、ash: mov bh , 00h</p><p>  add di , bx</p><p>  count: mov al , [di] ; 數(shù)碼管倒計(jì)時(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(鍵盤(pán)值)控制循環(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)調(diào)試情況</p><p>  按上面電路圖連線,8253接地址208h~20bh,8255接地址200h~203h。全速運(yùn)行后,燈滅,數(shù)碼管暗。此時(shí)按下鍵盤(pán)上的任意一個(gè)數(shù)字鍵,等鍵釋放后,燈開(kāi)始每秒閃爍一次,數(shù)碼管顯示倒計(jì)時(shí),當(dāng)數(shù)碼管顯示到0時(shí),燈停止閃爍,實(shí)現(xiàn)定時(shí)閃爍功能及數(shù)碼管輔助顯示。</p>

33、<p>  調(diào)試過(guò)程中遇到的主要問(wèn)題和解決辦法:</p><p>  發(fā)現(xiàn)數(shù)碼管顯示錯(cuò)誤,其他均正確。分別檢測(cè)數(shù)碼管和送碼值的8255的A口,發(fā)現(xiàn)都是好的,確定是自己程序的問(wèn)題。多次檢測(cè)后發(fā)現(xiàn)自己犯了一個(gè)低級(jí)錯(cuò)誤:設(shè)置了數(shù)據(jù)段。在利用實(shí)驗(yàn)儀提供的實(shí)驗(yàn)環(huán)境調(diào)試程序時(shí),不使用數(shù)據(jù)段,偽指令放在代碼段中。</p><p><b>  八、設(shè)計(jì)總結(jié)與體會(huì)</b>

34、</p><p>  微機(jī)原理課程設(shè)計(jì)已經(jīng)接近尾聲,雖然這次課程設(shè)計(jì)只有短短的4個(gè)半天,但是對(duì)于我們鞏固期末復(fù)習(xí)的成果,通過(guò)實(shí)踐進(jìn)一步加深理論知識(shí)的理解是意義重大的。</p><p>  這次我做的是閃爍燈,課題中用到了鍵盤(pán)、數(shù)碼管、8255、8253等。通過(guò)這次課程設(shè)計(jì),我能夠熟練的編寫(xiě)匯編程序來(lái)使用這些硬件來(lái)實(shí)現(xiàn)特定的功能。盡管我只做了一個(gè)題目,但在做完之后,也思考了其他部分題目,我認(rèn)

35、為這些硬件題目都大同小異,只要有設(shè)計(jì)思路,就一定能編寫(xiě)出程序。</p><p>  這次另一個(gè)重要的收獲就是下載到調(diào)試程序,軟件調(diào)試只能解決語(yǔ)法上的錯(cuò)誤,而對(duì)于程序思路算法上的錯(cuò)誤不能檢測(cè)。這就需要我們下載到實(shí)驗(yàn)箱上,硬件調(diào)試。當(dāng)發(fā)現(xiàn)不能達(dá)到預(yù)期的效果時(shí),根據(jù)“缺失的或錯(cuò)誤的”效果,定位程序中錯(cuò)誤的地方,加以改正!</p><p>  而在定位程序錯(cuò)誤時(shí),必須先排除硬件本身的實(shí)效!這也是我

36、們應(yīng)該學(xué)會(huì)的“技術(shù)”,這個(gè)其實(shí)對(duì)我們的要求也很高,這必須建立在對(duì)程序和硬件等很熟悉的基礎(chǔ)上。在排除硬件故障時(shí),常用的有兩種方法:一是編寫(xiě)一個(gè)小程序來(lái)檢查芯片的好壞;還有一種是在源程序調(diào)試中,檢測(cè)各處是否出現(xiàn)相應(yīng)的高低電平(接燈,亮為低電平,不亮為高電平)。</p><p>  總之,這次課程設(shè)計(jì)很成功,提高了動(dòng)手實(shí)踐能力,同時(shí)又加深了理論知識(shí)的理解,現(xiàn)在能夠熟練應(yīng)用8086匯編語(yǔ)言編寫(xiě)應(yīng)用程序,并學(xué)會(huì)了實(shí)際設(shè)計(jì)中

37、的硬件調(diào)試方法和步驟,熟悉微機(jī)系統(tǒng)的硬軟件開(kāi)發(fā)工具的使用方法。</p><p>  最后再次感謝這次課程設(shè)計(jì)中的所有指導(dǎo)老師,有了你們,我們才能這么快速的進(jìn)步!</p><p><b>  九、參考文獻(xiàn)</b></p><p>  徐晨,陳繼紅,王春明,徐慧.微機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2004,334-337</p>

溫馨提示

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

評(píng)論

0/150

提交評(píng)論