單片機實訓之籃球記分牌(共11頁)_第1頁
單片機實訓之籃球記分牌(共11頁)_第2頁
單片機實訓之籃球記分牌(共11頁)_第3頁
單片機實訓之籃球記分牌(共11頁)_第4頁
單片機實訓之籃球記分牌(共11頁)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、桂林電子科技大學信息(xnx)科技學院單片機原理(yunl)及應用實訓報告學 號 0000000000 姓 名 匿名(nmng)者 指導教師:小行星 2015 年 9 月 27 日(請核對時間)實訓題目(tm):籃球記分牌1 系統(tǒng)(xtng)設計1.1 設計(shj)要求1.1.1 設計任務設計一個基于單片機的籃球計分牌,實現(xiàn)兩隊的計分功能與24秒計時功能。1.1.2 性能指標要求基本要求(1) 按照題目要求獨立設計系統(tǒng)所需電路,并完成硬件電路的制作及調(diào)試。(40分)(2)結(jié)合硬件能夠正常計分(1,2,3)。(10分) (3)能夠正常顯示分值。(10分) (4)能夠正常修改工作模式(計分與24

2、秒)。(10分) (5)能夠24秒的誤差不小于1秒。(15分)2、發(fā)揮部分 能夠兩隊球員犯規(guī)次數(shù)計數(shù)。(15分)1.2 設計思路及設計框圖1.2.1設計思路在制作之前首先明確器件所要實現(xiàn)的功能,籃球記分牌顧名思義就是要記錄籃球比賽中雙方的比分(1分,2分,3分),進攻時間24s,雙方的犯規(guī)次數(shù)等,明確功能之后便是分析與設計電路圖,而此次的實訓設計將分為兩個部分,一個是硬件部分,另一個是軟件部分;首先是在硬件部分,通過按下各種按鍵實現(xiàn)比分分數(shù)的錄入,犯規(guī)暫停及顯示切換,然后輸出至數(shù)碼管顯示相應的內(nèi)容;在軟件程序方面,通過去定義不同的按鍵,編寫判斷語句,當其被按下時要實現(xiàn)怎樣的功能效果,是計分,切

3、換,還是暫停,尤其是顯示進攻24s的時間可以通過調(diào)用中斷函數(shù)來實現(xiàn);程序部分需要注意的幾個地方就是中斷內(nèi)初值的設置,八段共陰數(shù)碼管的位選和段選代碼,這些地方設置如果不對會出現(xiàn)顯示錯誤或者達不到預期;1.2.2總體設計框圖 在本題目中用到的參考原理圖如下:基本(jbn)框圖:C51單片機顯示模塊鍵盤2 各個模塊(m kui)程序的設計對于(duy)此次單片機實訓來說,軟件就像是人的大腦,而硬件就像是人的身體,硬件是個實體,軟件則是靈魂;這次實訓的軟件,我將其劃分為五個部分的內(nèi)容,分別是中斷部分,延時部分,顯示部分,按鍵部分以及主函數(shù);其中的中斷函數(shù)void timer0 (void) inter

4、rupt 1 using 0承擔了進攻24s倒計時,雙方比分,犯規(guī)次數(shù)的顯示,用到的是定時器T0中斷,12MHz的晶振,為了能使計時時間的誤差小于1s,在設置初始值時用到了此前實驗課中使用的0 x3CB0,這在12MHz的晶振中剛好是50ms的計時時間,定義一個變量,讓其循環(huán)累加20次,則剛好是1秒鐘的時間,每經(jīng)過一秒就讓24s減1,并輸出至數(shù)碼管顯示;此外,還對雙方比分,犯規(guī)次數(shù)進行了掃描顯示,通過在主函數(shù)中改變變量的值,在中斷中判斷相應值的變化用來切換不同的顯示內(nèi)容;延時函數(shù)void delay (uint t)在程序中的作用主要是作為按鍵的消抖,如果少了這個延時,則在按下按鍵時可能會出現(xiàn)

5、錯誤,這個在硬件中的表現(xiàn)就是按鍵的靈敏性,如果延時不夠(靈敏性高),按一次可能會加很多分;反之就是按鍵遲鈍,所以適當?shù)难訒r很重要。顯示(xinsh)函數(shù)void display(),因為功能中有一個暫停的功能,而要實現(xiàn)暫停就要關(guān)閉中斷,從而會導致當暫停鍵按下后數(shù)碼管不顯示數(shù)值(全黑),所以另外寫了個顯示函數(shù)(hnsh)嵌套在暫停中,其內(nèi)容基本和中斷內(nèi)的顯示切換一致。按鍵(n jin)函數(shù)button(),是整個程序的核心,也是實現(xiàn)硬件電路的基礎(chǔ),這次實訓的八個按鍵,要靈活運用,盡量用較少的按鍵實現(xiàn)最多的功能;基于籃球記分牌的計分功能,我將加3分的按鍵改為了減1分,因為加3分可以先按一次加1分再

6、按一次加2分,這樣就可以多出一個按鍵用來減分,這里有個好處就是防止按錯計分的鍵而無法修改;此外再定義一個按鍵用來切換兩支隊的輸入狀態(tài),并用不同LED燈的加以標注,當切換到A隊時某一盞燈亮起,這時可以對其進行計分的操作,當然還有專門記錄犯規(guī)的按鍵,切換顯示模式的按鍵,暫停的按鍵,這八個按鍵就構(gòu)成的可操作模塊;主函數(shù)里則是對中斷進行初始化,調(diào)用顯示函數(shù),按鍵函數(shù);3 調(diào)試過程對于一個器件的硬件和軟件剛設計出來以后,還不能馬上用于實際,需要通過各種測試驗證,對于出現(xiàn)的各種錯誤還得進行反復修改,硬件的修改,軟件的修改,而這如果順利的話是很快的,但往往不是這樣,就比如這次我所做的單片機實訓,雖然東西是做

7、出來了,但在燒入程序進行驗證時還是出現(xiàn)了很多問題;這些問題的出現(xiàn)6有很多不確定性,可能是電路的某一個地方焊得不好,或者是程序中的某個變量不合理,所以,在進行調(diào)試之前務必確保硬件電路的正確,將會節(jié)省很多時間;很幸運,因為籃球記分牌所用到的元器件并不算多,所以電路板很好檢查,剛開始我就把蜂鳴器錯接在了三極管的發(fā)射極,應該是集電極才對。將所有器件焊接完成后用萬用表的蜂鳴檔對電路進行短路檢測,沒有發(fā)現(xiàn)問題。用usb ISP 下載線連接計算機與下載口,將程序的.hex文件燒錄到AT89S52這枚芯片中,發(fā)現(xiàn)數(shù)碼管的位選出現(xiàn)了錯誤,如24s的十位應該顯示在右邊,個位顯示在左邊,但數(shù)碼管現(xiàn)實卻顛倒了,此外還

8、有LED燈的位置也沒有設置正確,蜂鳴器一直在叫,這些都不是什么大問題,通過修改芯片P2口的位選后數(shù)碼管的數(shù)值顯示正確了,LED燈的功能顯示也正確了,唯獨那個蜂鳴器的問題沒有解決,這應該和電路原理圖中蜂鳴器的擺放位置有關(guān),或者是連接三極管的電阻阻值太小;在驗證過程中改動較多的除了位選碼還有就是按鍵的延時消抖設置了,只有不斷的該延時并驗證才可知道合理的延時時間,因為除了按鍵延時還有顯示延時,而這個顯示延時程序我改了好久也沒有能夠修改成功,所以我的數(shù)碼管顯示的數(shù)值一直是閃爍的,這也是本次實訓中一個不足和遺憾的地方,這個后面我會通過參考資料加以修正,以達到完美。4 功能測試4.1 測試儀器與設備測試儀

9、器與設備單片機程序下載線 1條萬用表 1個 PC機 1臺4.2 性能(xngnng)指標(zhbio)測試能夠通過按下不同的按鍵,實現(xiàn)(shxin)了籃球比賽雙方比分,犯規(guī),以及進攻24s的切換,實現(xiàn)了加1分,加2分,減1分,暫停,A,B隊操作狀態(tài)切換,總體上完成了此次實訓的基本要求。沒有實現(xiàn)的功能是蜂鳴器在電路中得作用。5 實訓心得體會算起來這應該是大學至今第四個實訓吧,不過不像之前的只是單純的硬件電路的焊接,或者軟件編程,這次是合二為一,既要做板子又要寫程序,工作量是以往最大的,不過覺得自己上學期的軟件部分學得還不錯,要實現(xiàn)應該不成什么問題。這次單片機實訓做的東西是籃球記分牌,也是相對較為

10、簡單的一個,我認為簡單只是說明元器件少,要寫的程序少,但是它的價值不亞于其他。在我選好題目以后就馬上行動了,因為老師沒有提供原理圖和程序的參考資料,所以我得去圖書館尋找相應的書籍,果不其然還真找到了,上面剛好也有籃球記分牌的知識點,十分高興,但是不可能照搬書上的東西,再說也不可能都對應的上,唯有把它弄懂,于是我就整天抱著本厚厚的書在課余時間里暢游,程序當然是整個實訓的靈魂了,我的首要目標就是要弄清楚如何編寫程序去實現(xiàn)所要求的功能,當然程序是不能離開實際的,在腦海里大概模擬出實體物件的輪廓,比如定義一個按鍵變量,判斷其是否按下,當按下時執(zhí)行什么操作,是讓分數(shù)加1還是減1,或則是切換顯示,此時數(shù)碼

11、管怎樣顯示,斷碼與位選碼又該如何選擇,另外LED應該亮哪一盞燈將問題細化成幾個部分,什么功能將寫在什么函數(shù)中,什么時候去調(diào)用,每一個環(huán)節(jié)都緊扣在一起。我不僅參考了圖書館的書,還將此前上理論實驗課書中相應的知識也溫習了一遍,因為這里邊有個24s倒計時要用到了定時中斷,按鍵消抖要用到延時,當然還有數(shù)碼管的段選碼和位選碼,以及LED的位選,總總的這些經(jīng)過了一個假期的沖刷已經(jīng)忘得差不多了,所以要想讀懂參考程序,還得再把這些給撿回來。雖然有參考書作為輔助,但和實際還是有很大出入的,因為程序的編寫要以實際硬件為基準,不可能完全照搬,而且可能還實現(xiàn)不了。于是我大概清楚了軟件程序的編寫,在硬件電路出來之前我就

12、已經(jīng)吧程序準備好了,還在腦子里編譯了一遍,應該可行。在拿到元件清單后有點驚訝,因為電路板是那種已經(jīng)實現(xiàn)打好孔的“萬能板”,也就是不需要自己去弄PCB板,腐蝕等等,雖然省掉了很多步驟,但是直到開始焊接元件的時候才知道,沒那么簡單!想要盡量少跳線,那么排版就非常重要了,排版好的話,可以直接上焊錫將兩個最近元件引腳連好,也好看,但是真正動手的時候可是讓我煎熬好久,焊錫常常不聽話,偏不連在一塊,特別是有幾個元器件的引腳比孔徑還小,很難垂直焊接,常常會焊得東倒西歪,這個過程真的十分煎熬,恨不得自己做一塊PCB板子,那樣倒顯得輕松些,孔徑大小是根據(jù)實際元件而設定,并且元件排布,布線都已經(jīng)印在板子上,只需要

13、將器件焊在制定的位置上即可,不像現(xiàn)在,還得慢慢的找尋相連的元件引腳及其分布,可以說這是整個實訓過程中最傷腦筋的。最好能一次性就出來,要不然檢查起來更可怕,特別是對密集(mj)恐懼癥患者來說。就算檢查出來了,想要改掉也是一件“浩大的工程”,一不小心就會牽連到附近的元件,這我可是深有體會。我的板子并沒有一次就成功做出來,后來用萬用表參照著原理圖,一條條線一個個元件排除短路和漏接焊錯的地方,但是有些焊點靠的太近了,稍微靠近一下就“跳槽”到另一個元件上,真是雪上加霜!難舍難分!好幾次我都得用銼刀將其銼開,十分麻煩。然而萬萬(wnwn)沒想到的是,更麻煩的還在后頭本以為原先寫好的程序沒有問題的,但是燒錄

14、進單片機后效果出現(xiàn)了異常,數(shù)碼管的位選碼沒搞對,十位(sh wi)和個位的位置顛倒了;按鍵的靈敏性太高,原本按一次加1分現(xiàn)在按一次加積分都有。還有一個更為頭疼的問題是數(shù)碼管一直在閃爍,雖然可以看得出數(shù)值,但是閃爍的很嚴重,這個在后面的不斷修改中斷程序中顯示部分的程序成為了一場持久戰(zhàn)!就是無論怎么改動閃爍的問題還是沒有能解決,眼看著實訓驗收已經(jīng)快接近尾聲了,再不出來就得明年重修了,此刻的我真是萬分焦急,頭腦在高速運轉(zhuǎn)著,連睡覺都在想,到底是哪一個變量沒設置好,哪一條語句出現(xiàn)問題沒解決好,整個人都不好了,連上課的欲望都沒有了,人比黃花瘦的感覺。無論如何,目前是暫時改不出來了,硬著頭皮上吧,因為基本

15、功能都實現(xiàn)了,只是顯示的效果打了折扣,就算最后掛了,也無憾了,因為這是自己一心一意做的。說到這,這次實訓還有一個特別有趣的現(xiàn)象,就是驗收的最后幾天里還有一大把人沒有做出來,也許是做了失敗的,也許是壓根就沒有動手去做的,都在到處找人幫做,就拿此次單片機實訓中的點陣來說吧,應該是此次實訓中最復雜的一個了,找人幫做的話,從最初的一百元漲到了兩百元,到最后的三百元,這還不帶程序部分的價格,如果全包將超過三百塊,而且還十分熱銷,各種接單各種砍價,就像炒房一樣雖然只是一次單片機實訓,但隱藏的東西非常多,這也是一個社會的現(xiàn)實,能力不足,別人說什么就是什么,覺得自己厲害的,就盡量剝削這也是此次實訓一個變味的地

16、方,沒辦法,這就是現(xiàn)實。另外這次實訓有幾個讓我措手不及的地方,一個是軟硬件都弄好了,要把程序燒錄下載進去,但是沒有下載線,到處去找去借,老師那里也被借得差不多了,外面也炒到了三十塊一根,因為沒有下載線就無法驗證程序的完整性,每修改一次就得下載驗證,這是需要反復操作的一個地方,少了下載線,幾乎就少了打開成功的鑰匙,不過還好,朋友挺多,借到了,但是緊接著另一個問題就來了,就是燒錄程序的軟件,網(wǎng)上能夠搜到很多,但是能用的卻很少,不是驅(qū)動的問題就是計算機無法運行,程序還不知道對不對,而且還要修改,沒想到就卡在這里了,又是焦急萬分,好想作詩一首表達自己的哀怨!歷盡了千辛萬苦總算在最后的期限完成了任務,整

17、個人頓時輕了不少,通過整個單片機實訓的各種無情打壓與挫折,不僅讓我找到了信心與自豪感,不僅讓我學到了又一新知識,結(jié)合了理論與實際,還讓我學會了堅持的重要性,誰能熬到最后,勝利必將屬于誰!個人覺得,實訓學到的東西比理論課更能深入記憶,更能得到鍛煉。6 參考文獻1 陳朝大、韓劍單片機原理與應用實驗實訓和課程設計武漢:華中科技大學出版社,20142 鄭鋒、王巧芝51單片機典型應用開發(fā)范例(fnl)大全北京(bi jn):中國(zhn u)鐵道出版社,20113 李長俊模擬電子技術(shù)北京:科學出版社,2013附錄附錄1:原理圖附錄2:程序清單#include#define uchar unsigned

18、char#define uint unsigned intuchar Tab=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;uchar Ascore=0,Bscore=0,Afg=0,Bfg=0;uchar miao=24,sum=0,kk=0;uint count=20,bitcase=0;uint flag=0,flag1=0;sbit Start=P10; /啟動(qdng)sbit ATB=P16; /AB隊切換(qi hun)sbit add1=P11; /加1分sbit add2=P12; /加2分sbit

19、minus1=P13; /減1分sbit foul=P14; /犯規(guī)(fn gu) 暫停 關(guān)閉蜂鳴sbit qh=P15; /定義顯示切換按鍵sbit fm=P24; /蜂鳴器void timer0 (void) interrupt 1 using 0TH0=0X3C;TL0=0 xB0;/定時器賦初值 (如果晶振是24MHz則定時時間是25ms(12MHz是50ms))if(sum=0) /實時顯示雙方比分 switch(kk) case 0:P2=0 xF7;P0=TabAscore/10;break; case 1:P2=0 xFB;P0=TabAscore%10;break; case

20、 2:P2=0 xFD;P0=TabBscore/10;break; case 3:P2=0 xFE;P0=TabBscore%10;break; kk+;if(kk3)kk=0; if(sum=1) /實時顯示(進攻時間)24s倒計時 switch(kk) case 0:P2=0 xFB;P0=Tabmiao/10;break; case 1:P2=0 xFD;P0=Tabmiao%10;break; kk+;if(kk1)kk=0; if(sum=2) /實時顯示雙方犯規(guī)次數(shù) switch(kk) case 0:P2=0 xF7;P3=0 x9F;P0=TabAfg%10;break; c

21、ase 3:P2=0 xFE;P3=0 x9F;P0=TabBfg%10;break; kk+;if(kk3)kk=0; count-; if(count=0) count=20; if(miao-=0) miao=24;P3=0 x0F;fm=1; else fm=0;/24秒倒計時 void delay (uint t) unsigned int i,j;for(i=0;it;i+)for(j=0;j100) Ascore=0;fm=1; if(!minus1) /減1分 delay(66); if(!minus1) Ascore-=1;P3=0 xEF;if(Ascore=0) Ascore=0;fm=1; if(!foul)/累計(li j)犯規(guī)次數(shù) P3=0 x9F; delay(66); if(!foul) Afg+=1;P3=0 x9F;delay(33);P3=0 x9F;if(Afg=7) Afg=0;fm=1; else/切換(qi hun)到B隊 P3=0 x7F; if(!add1)/加1分 delay(66); i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論