版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 籃球比賽計時與計分系統(tǒng)設(shè)計</p><p><b> 摘要</b></p><p> 隨著單片機在各個領(lǐng)域的廣泛應(yīng)用,許多用單片機作控制的球賽計時計分器也應(yīng)運而生,如用單片機控制LCD液晶顯示器的計時計分器,用單片機控制LED七段顯示器的計時計分器等等。</p><p> 本次設(shè)計的籃球計時計分系統(tǒng)以AT89C51單
2、片機為核心元件,利用它內(nèi)部的計數(shù)器T0完成比賽的計時,通過七段共陰極LED來顯示比分和時間。計時部分采用CD4511(七段BCD碼譯碼器)進行硬件譯碼;計分部分采用CD4094(8位移位存貯總線寄存器)進行串行口擴展顯示器接口,并利用74LS21(雙四輸入與門)來實現(xiàn)比分的刷新功能。報警部分采用蜂鳴器為音響器件。本系統(tǒng)具有賽事時間設(shè)置、賽事時間啟/停設(shè)置、24s倒計時控制;比分刷新控制;報警等功能。且造價低廉、操作簡單、攜帶方便,適合于
3、學(xué)?;蛐F體作為賽程計時計分工具。</p><p> 關(guān)鍵詞:籃球計時計分系統(tǒng);七段共陰LED數(shù)碼管;AT89C51</p><p> BASKETBALL GAME TIME AND SCORING DESIGN</p><p><b> ABSTRACT</b></p><p> With a wide ra
4、nge of SCM applications in various fields, many with a single chip timing for the control of the game scoring device have emerged, such as liquid crystal display LCD with MCU control the timing of scoring device, LED sev
5、en segment display with microcontroller timing control points and more.</p><p> The time basketball scoring system designed to AT89C51 microcontroller as the core component, use it to finish within the time
6、 T0 counter, through the common cathode seven segment LED to display the score and time. Part time using CD4511 (seven segment BCD decoder) for hardware decoding; scoring part is CD4094 (8-bit shift register storage bus)
7、 serial port expansion, monitor port, and use 74LS21 (Dual four-input AND gate) to achieve the score of the refresh function. Buzzer to sound the alarm pa</p><p> Key Words: Time basketball scoring system;
8、 Common cathode seven segment LED digital tube; AT89C51</p><p><b> 目 錄</b></p><p><b> 1前言1</b></p><p><b> 2系統(tǒng)方案設(shè)計2</b></p><p>
9、; 2.1 總體方案2</p><p> 2.1.1 設(shè)計內(nèi)容2</p><p> 2.1.2 設(shè)計要求2</p><p> 2.2 系統(tǒng)組成3</p><p><b> 3 硬件設(shè)計4</b></p><p> 3.1 AT89C51的介紹4</p>&l
10、t;p> 3.2 復(fù)位電路4</p><p> 3.3 鍵盤控制電路5</p><p> 3.4 顯示電路7</p><p><b> 4 軟件設(shè)計8</b></p><p> 4.1 主程序設(shè)計8</p><p> 4.2 鍵盤識別及處理程序設(shè)計9</p>
11、;<p> 4.3 顯示子程序設(shè)計9</p><p> 4.4 復(fù)位程序設(shè)計10</p><p><b> 5 系統(tǒng)調(diào)試11</b></p><p> 5.1 軟件模擬調(diào)試11</p><p> 5.2 硬件接線及調(diào)試11</p><p><b> 6
12、 總結(jié)13</b></p><p> 6.1 設(shè)計心得13</p><p><b> 參考文獻15</b></p><p><b> 致謝17</b></p><p><b> 附錄17</b></p><p> 附錄A
13、程序清單17</p><p> 附錄B 總電路原理圖32</p><p><b> 1前言</b></p><p> 體育比賽記分系統(tǒng)是對體育比賽過程中所產(chǎn)生的比分等數(shù)據(jù)進行快速采集記錄,加工處理,傳遞利用的信息系統(tǒng)。根據(jù)不同運動項目的不同比賽規(guī)則要求,體育比賽的記分系統(tǒng)包括測量類,評分類,命中類,制勝類得分類等多種類型。</p
14、><p> 比如籃球比賽是根據(jù)運動隊在規(guī)定的比賽時間里得分多少來決定勝負(fù)的,因此,籃球比賽的記分系統(tǒng)是一種得分類型的系統(tǒng)?;@球比賽的記分系統(tǒng)由計分器等多種電子設(shè)備組成,同時,根據(jù)目前高水平籃球比賽要求,完善的籃球比賽記分系統(tǒng)設(shè)備應(yīng)能夠與現(xiàn)場成績處理,現(xiàn)場大屏幕,電視轉(zhuǎn)播車等多種設(shè)備相聯(lián),以便實現(xiàn)高比賽現(xiàn)場感,表演娛樂觀眾等功能目標(biāo)。</p><p> 由于單片機的集成度高,功能強,通用性好
15、,特別是它具有體積小,重量輕,能耗低,價格便宜,可靠性高,抗干擾能力強和使用方便等獨特的優(yōu)點,使單片機迅速得到了推廣應(yīng)用,目前已經(jīng)成為測量控制應(yīng)用系統(tǒng)中的優(yōu)選機種和新電子產(chǎn)品的關(guān)鍵部位。世界各大電氣廠家,測控技術(shù)企業(yè),機電行業(yè),競相把單片機應(yīng)用于產(chǎn)品更新,作為實現(xiàn)數(shù)字化,智能化的核心部件。籃球計時計分器就是以單片機為核心的計時計分系統(tǒng),由計時器,計分器,綜合控制器和24秒控制器等組成。</p><p><b
16、> 2系統(tǒng)方案設(shè)計</b></p><p><b> 2.1 總體方案</b></p><p> 此記分器的設(shè)計采用模塊化結(jié)構(gòu),主要由以下2個組成,即鍵盤模塊、以及譯碼顯示模塊。以單片機為核心,配以一定的外圍電路和軟件,以實現(xiàn)比賽計分器的功能。它由硬件部分和軟件部分組成。系統(tǒng)設(shè)計方案的硬件電路設(shè)計方框圖如圖2-1所示。</p>&
17、lt;p> 圖2-1 硬件電路設(shè)計方框圖</p><p> 2.1.1 設(shè)計內(nèi)容</p><p> ?。?)給甲、乙兩隊分別設(shè)置加分按鈕,各按鈕按下分別實現(xiàn)給甲、乙隊加1~9分。</p><p> ?。?)給甲、乙兩隊分別設(shè)置減分按鈕,各按鈕按下分別實現(xiàn)給甲、乙隊減1~9分。</p><p> (3)設(shè)置一個復(fù)位按鈕,按下實現(xiàn)甲、
18、乙隊總分回到初試分及顯示</p><p> ?。?)預(yù)置分通過甲、乙兩隊加分按鈕實現(xiàn)。</p><p> 2.1.2 設(shè)計要求</p><p> ?。?)方案合理、正確,系統(tǒng)穩(wěn)定、可靠。</p><p> ?。?)軟件設(shè)計要求盡可能精練、簡短和運行可靠。</p><p> ?。?)硬件電路要求簡單明了,以節(jié)約成本。&
19、lt;/p><p><b> 2.2 系統(tǒng)組成</b></p><p> 硬件電路由復(fù)位按鈕、80C51單片機、矩陣鍵盤和兩個4位共陰極LED顯示器等組成。</p><p> 軟件部分主程序主要由系統(tǒng)初始化段、鍵盤識別、鍵值處理、兩個4位共陰極LED顯示器掃描顯示子程序組成。</p><p><b> 3
20、硬件設(shè)計</b></p><p> 3.1 AT89C51的介紹</p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機。
21、單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p><b> 3.2 復(fù)位電路<
22、;/b></p><p> 為確保微機系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分,復(fù)位電路的第一功能是上電復(fù)位。一般微機電路正常工作需要供電電源為5V±5%,即4.75~5.25V。由于微機電路是時序數(shù)字電路,它需要穩(wěn)定的時鐘信號,因此在電源上電時,只有當(dāng)VCC超過4.75V低于5.25V以及晶體振蕩器穩(wěn)定工作時,復(fù)位信號才被撤除,微機電路開始正常工作。</p><p
23、> 目前為止,單片機復(fù)位電路主要有四種類型:</p><p> (1)微分型復(fù)位電路;</p><p> ?。?)積分型復(fù)位電路;</p><p> (3)比較器型復(fù)位電路;</p><p> ?。?)看門狗型復(fù)位電路</p><p> 現(xiàn)在詳細(xì)介紹看門狗復(fù)位電路:</p><p>
24、; 看門狗型復(fù)位電路主要利用CPU正常工作時,定時復(fù)位計數(shù)器,使得計數(shù)器的值不超過某一值;當(dāng)CPU不能正常工作時,由于計數(shù)器不能被復(fù)位,因此其計數(shù)會超過某一值,從而產(chǎn)生復(fù)位脈沖,使得CPU恢復(fù)正常工作狀態(tài)。典型應(yīng)用的Watchdog復(fù)位電路如圖3-1所示:</p><p> 圖3-1 看門狗型復(fù)位電路</p><p> 此復(fù)位電路的可靠性主要取決于軟件設(shè)計,即將定時向復(fù)位電路發(fā)出脈沖
25、的程序放在何處。一般設(shè)計,將此段程序放在定時器中斷服務(wù)子程序中。然而,有時這種設(shè)計仍然會引起程序走飛或工作不正常[3]。原因主要是:當(dāng)程序“走飛”發(fā)生時定時器初始化以及開中斷之后的話,這種“走飛”情況就有可能不能由看門狗復(fù)位電路校正回來。因為定時器中斷一真在產(chǎn)生,即使程序不正常,看門狗也能被正常復(fù)位。為此提出定時器加預(yù)設(shè)的設(shè)計方法。即在初始化時壓入堆棧一個地址,在此地址內(nèi)執(zhí)行的是一條關(guān)中斷和一條死循環(huán)語句。在所有不被程序代碼占用的地址盡
26、可能地用子程序返回指令RET代替。這樣,當(dāng)程序走飛后,其進入陷阱的可能性將大大增加。而一旦進入陷阱,定時器停止工作并且關(guān)閉中斷,從而使看門狗復(fù)位電路會產(chǎn)生一個復(fù)位脈沖將CPU復(fù)位。當(dāng)然這種技術(shù)用于實時性較強的控制或處理軟件中有一定的困難。</p><p> 3.3 鍵盤控制電路</p><p> 在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,
27、每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。如圖3-2所示。</p><p> 圖3-2 矩陣式鍵盤電路</p><p> 需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。
28、</p><p> 矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識別及編程方法如下所述。</p><p&g
29、t; 矩陣式鍵盤的按鍵識別方法</p><p> 確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。</p><p> 判斷鍵盤中有無鍵按下將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按
30、鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。</p><p> 判斷閉合鍵所在的位置在確認(rèn)有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵,矩陣鍵盤與80C51的接口電路如圖3-3所示。</p><p
31、> 圖3-3 矩陣鍵盤與80C51的接口電路</p><p><b> 3.4 顯示電路</b></p><p> 顯示器采用兩個四位共陰極LED顯示器,來實現(xiàn)顯示器的動態(tài)掃描,八個二極管連接一個陰極的結(jié)構(gòu),只要另一段為高電平,二極管就會發(fā)光,從而形成一段。將八段順序排列后就成為具有一定編碼的共陰顯示器了。動態(tài)掃描的頻率有一定的要求,頻率太低,LED將出現(xiàn)
32、閃爍現(xiàn)象。如頻率太高,由于每個LED點亮的時間太短,LED的亮度太低,肉眼無法看清,所以一般均取幾個ms左右為宜,這就要求在編寫程序時,選通某一位LED使其點亮并保持一定的時間,程序上常采用的是調(diào)用延時子程序。顯示電路如圖3-4所示。</p><p> 圖3-4 顯示電路接線圖</p><p><b> 4 軟件設(shè)計</b></p><p>
33、;<b> 4.1 主程序設(shè)計</b></p><p> 主程序主要由系統(tǒng)初始化段、開中斷、鍵盤識別、鍵值處理、兩個4位共陰極LED顯示器掃描顯示子程序和中斷處理子程序等組成。通過對以上各段和子程序的結(jié)合,以實現(xiàn)系統(tǒng)功能。該系統(tǒng)主程序流程圖如下圖4-1所示。</p><p> 圖4-1 主程序流程圖</p><p> 4.2 鍵盤識別及
34、處理程序設(shè)計</p><p> 按鍵識別及處理程序主要由鍵盤識別和鍵值處理組成。其中鍵盤識別子程序不斷地對鍵盤進行判斷是否有鍵按下。當(dāng)有鍵按下時則轉(zhuǎn)到鍵碼處理即甲、乙總分處理子程序?qū)ο鄳?yīng)按鍵進行相應(yīng)處理,即可實現(xiàn)對甲、乙兩隊總分的計算與處理。</p><p> 鍵盤識別即依次判斷第一列、第二列、第三列、第四列是否有鍵按下。如果有鍵按下,先得出列,再反向賦值得出行,最后得出所在行和列的位
35、置。</p><p> 鍵值處理即先定義0~9這九個按鍵,再對三次按鍵值進行保存,再來判斷是甲隊還是乙隊加減分,再判斷是加還是減,最后判斷加或減多少分,實現(xiàn)分別給甲、乙總分進行加分和減分。鍵值處理即甲、乙總分處理子程序流程圖如下圖4-2所示。</p><p> 圖4-2 鍵值處理子程序流程圖</p><p> 4.3 顯示子程序設(shè)計</p>&l
36、t;p> 由于該系統(tǒng)使用的是8位LED顯示器顯示計分器比分,因此顯示采用動態(tài)掃描顯示方法,即由顯示器掃描顯示子程序控制顯示器逐個循環(huán)從左至右依次點亮各個顯示器。這樣雖然在任一時刻只要一個顯示器點亮,但是由于人眼具有視覺殘留效應(yīng),看起來與全部顯示器持續(xù)點亮效果一樣。顯示器掃描顯示子程序顯示每一位用如圖4-3所示流程方法完成。</p><p> 圖4-3 顯示子程序流程圖</p><p&
37、gt; 4.4 復(fù)位程序設(shè)計</p><p> 按鈕與單片機P0.6/AD6引腳相連,當(dāng)每次按下該按鈕后,系統(tǒng)將通過軟件實現(xiàn)對計分復(fù)位功能。</p><p> 在主程序運行過程中,只要系統(tǒng)識別到與單片機P0.6/AD6引腳相連的按鍵按下,程序則會轉(zhuǎn)去執(zhí)行復(fù)位程序,完成對甲、乙總分寄存單元的清零,顯示器各位的顯示數(shù)寄存單元的復(fù)位,執(zhí)行完畢后,返回主程序。流程圖如4-4所示。</p
38、><p> 圖4-4 復(fù)位程序流程圖</p><p><b> 5 系統(tǒng)調(diào)試</b></p><p> 5.1 軟件模擬調(diào)試</p><p> 本設(shè)計主要是用proteus軟件繪圖以及偉福軟件進行編程仿真的。調(diào)試步驟由兩個部分組成:首先,確定程序中錯誤的確切性質(zhì)和位置;然后,對程序代碼進行分析,確定問題的原因,并設(shè)法
39、改正這個錯誤。具體地說,由以下步驟組成:</p><p> 1.從錯誤的外部表現(xiàn)入手,確定程序中出錯的位置;</p><p> 2.分析有關(guān)程序代碼,找出錯誤的內(nèi)在原因;</p><p> 3.修改程序代碼,排除這個錯誤;</p><p> 4.重復(fù)進行暴露了這個錯誤的原始測試以及某些回歸測試,以確保該錯誤確實被排除且沒有引入新的錯誤
40、;</p><p> 5.如果所作的修正無效,則撤消這次改動,重復(fù)上述過程,直到找到一個有效的辦法為止。</p><p> 5.2 硬件接線及調(diào)試</p><p> 這個電路是在老師的指導(dǎo)下設(shè)計的,電路的設(shè)計在理論上完全行得通,不過接線是設(shè)計中最關(guān)鍵的一步,我的接線原則是從全局出發(fā),逐個模塊連接調(diào)試,最后總體調(diào)試。在這個指導(dǎo)思想下,我的安裝還算是是成功的。&l
41、t;/p><p> 逐個模塊接線再調(diào)試,可以為總體調(diào)試省去很多時間,只要每個模塊正常運行,幾個模塊通過地址總線連接之后,就不會出現(xiàn)太大的問題了。</p><p><b> 調(diào)試前的直觀檢查:</b></p><p> 1、連線是否正確,在通電之前應(yīng)先檢查一下電路的連線是否正確,包括錯線,少線和多線的情況。查找的方法有:按照電路圖檢查安裝的線路
42、,這種方法的特點是,根據(jù)電路圖來確定,按一定的順序逐一檢查安裝好的線路,由此,可容易查出錯線和少線的情況,還有一種方法就是按照實際的線路來對照原理電路進行查線,這是一種以元件為中心進行查線的方法。把每個元件引腳的連線一次查清 ,檢查每個接線處在電路圖上是否存在,這種方法不但可以查出錯線和少線,還容易查處多線的情況。</p><p> 2、元器件安裝時情況</p><p> 檢查元、器見
43、引腳之間有無短路;連接處有無接觸不良;二極管和電容極性等是否連接有誤。</p><p> 電源、信號源連接是否正確。</p><p> 4、電源端對地是否存在短路,在通電前,斷開一根電源線,用萬用表檢查電源對地端是否存在短路</p><p> 模擬調(diào)試結(jié)果記錄如下:通電后,顯示器初始顯示“100--100”。按照鍵盤分布說明按鍵,分布給甲、乙加1分、2分和3分
44、,顯示器跟蹤顯示出總分,然后模擬比賽細(xì)節(jié),隨意給甲、乙加分或是減分,均達到預(yù)期效果。在甲、乙均有一定總分的情況下對甲、乙進行減分處理,當(dāng)減到0后便不能夠再進行減分操作,與程序設(shè)計相符。在甲、乙均有一定總分的情況下,按清零按鈕,顯示結(jié)果清零。重復(fù)進行上面操作,結(jié)果均符合設(shè)計要求。</p><p><b> 6 總結(jié)</b></p><p><b> 6.1
45、 設(shè)計心得</b></p><p> 在沒有做畢業(yè)設(shè)計以前,覺得畢業(yè)設(shè)計只是對知識的單純總結(jié),但是通過這次畢業(yè)設(shè)計發(fā)現(xiàn)自己的看法有點太片面,畢業(yè)設(shè)計不僅是對前面所學(xué)知識的一種檢驗,也是對自己能力的一種提高,通過這次畢業(yè)設(shè)計使自己明白了原來的那點知識是非常欠缺的,要學(xué)習(xí)的東西還很多,通過這次畢業(yè)設(shè)計,明白學(xué)習(xí)是一個長期積累的過程,在以后的工作和生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己的知識和綜合素質(zhì),并將
46、理論與實際相結(jié)合,學(xué)以致用,不再是紙上談兵,。對我們學(xué)生來說,理論與實際同樣重要,這是我們以后在工作中說明自己能力的一個重要標(biāo)準(zhǔn)。</p><p> 在這次畢業(yè)設(shè)計中,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,發(fā)現(xiàn)我們所學(xué)的知識實在是有限,不過我們能夠充分利用網(wǎng)絡(luò)的優(yōu)勢去查閱資料。而且,畢業(yè)設(shè)計中涉及到的電路圖用了比較新的一款PROTEUS進行設(shè)計和仿真,使我多掌握了一個得力的仿真工具。</p>
47、<p> 我在整個設(shè)計過程中懂得了許多東西,當(dāng)遇到一不了的問題,跟同伴一起商量、合作,或許能收到事半功倍的效果。不管學(xué)什么,一定要打好基礎(chǔ),并將其學(xué)好、學(xué)精,但空有知識也不一定就能說明什么,還得能為己所用;還有更重要的是培養(yǎng)了獨立思考和設(shè)計的能力,樹立了對知識應(yīng)用的信心,相信會對今后的學(xué)習(xí)工作和生活有非常大的幫助,并且提高了自己的動手實踐操作能力, 使自己充分體會到了在設(shè)計過程中的成功喜悅。雖然這個設(shè)計做的不是很完美,但
48、是在設(shè)計過程中所學(xué)到的東西是這次課程設(shè)計的最大收獲和財富,使我終身受益;最后,也是我感觸比較深的一點,這次課程設(shè)計時為數(shù)不多的獨立完成的一次,雖然過程中遇到很多困難,讓自己犯愁過,彷徨過,急躁過,可當(dāng)自己很快調(diào)整好心態(tài),從跌倒的地方爬起來繼續(xù),最后取得成功,不止是成功后的喜悅,也是一次鍛煉!</p><p> 通過這次畢業(yè)設(shè)計,明白學(xué)習(xí)是一個長期積累的過程,在以后的工作和生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己的知
49、識和綜合素質(zhì),并將理論與實際相結(jié)合,理論與實際同樣重要。</p><p> 在設(shè)計的過程中不可避免的遇到了許多困難。尤其是在最后的調(diào)試中,會因為某種原因而得不到滿意的結(jié)果,但最后還是解決了。最后在調(diào)試結(jié)果終于出來以后我更是無比興奮,無比自豪。在這里我要感謝幫助過我的老師和同學(xué)尤其是我的畢業(yè)設(shè)計指導(dǎo)老師張毅寧老師,沒有你們也就沒有這份畢業(yè)設(shè)計和論文。</p><p> 對我而言,知識上的
50、收獲重要,精神上的豐收更加可喜。我們每一個人永遠不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經(jīng)歷是一份擁有。這次課程設(shè)計必將成為我人生旅途上一個非常美好的回憶。</p><p> 在畢業(yè)設(shè)計中,我感受到了老師對學(xué)生的那種悔人不卷的精神,每天的固定時間,老師都來給我們指導(dǎo),使我們少走彎路,順利完成實習(xí)任務(wù),請允許我向你們致意崇高的敬意,感謝你們,老師!</p&
51、gt;<p><b> 參考文獻</b></p><p> [1] 許立梓.微型計算機原理及應(yīng)用.北京:機械工業(yè)出版社,2002</p><p> [2] 劉樂善.微型計算機接口技術(shù)及應(yīng)用.武漢:華中理工大學(xué)出版社,2000 </p><p> [3] 鄒逢興.計算機硬件技術(shù)基礎(chǔ)試驗教程.北京:高等教育出版社,2000&l
52、t;/p><p> [4] 周佩玲.16位微型計算機原理接口及其應(yīng)用.北京:中國科學(xué)技術(shù)大學(xué)出版社,2000 </p><p> [5] 吳秀清.微型計算機原理與接口技術(shù).北京:中國科學(xué)技術(shù)出版社,2001</p><p> [6] 鄧亞平.微型計算機接口技術(shù).北京:清華大學(xué)出版社,2001</p><p> [7] 王迎旭.單片機原理及
53、及應(yīng)用.北京:機械工業(yè)出版社,2001</p><p> [8] 周航慈.單片機應(yīng)用程序設(shè)計技術(shù).北京:北京航空航天大學(xué)出版社,2002</p><p> [9] 謝宜仁.單片機實用技術(shù)問答.北京:人民郵電出版社,2002</p><p><b> 致謝</b></p><p> 在這次畢業(yè)設(shè)計中,我在整個設(shè)計過
54、程中懂得了許多東西,也培養(yǎng)了獨立思考和設(shè)計的能力,樹立了對知識應(yīng)用的信心,相信會對今后的學(xué)習(xí)工作和生活有非常大的幫助,并且提高了自己的動手實踐操作能力, 使自己充分體會到了在設(shè)計過程中的成功喜悅。雖然這個設(shè)計做的不是很理想,但是在設(shè)計過程中所學(xué)到的東西是這次課程設(shè)計的最大收獲和財富,使我受益良多。</p><p> 短暫幾個月的畢業(yè)設(shè)計即將結(jié)束,在此,我首先感謝我的母校,在我們即將步入社會,走向工作崗位之際為我
55、提供了這樣一個良好的學(xué)習(xí)知識與動手操作的機會,并為我提供了先進實驗設(shè)備。通過本次畢業(yè)設(shè)計我受益匪淺,不僅使我學(xué)會了用單片機編寫程序的方法,而且對學(xué)過的相關(guān)知識得到了進一步的鞏固和提高,通過閱讀相關(guān)專業(yè)書籍掌握了一些以前未了解的知識;同時也熟悉了很多的硬件設(shè)備,更重要的是使我在學(xué)習(xí)和掌握這些知識的同時,能夠在思維上得到提高和升華,在分析問題和解決問題的能力上得到培養(yǎng)和提高。這次畢業(yè)設(shè)計使我完善了知識結(jié)構(gòu)、拓寬了知識面,開闊了眼界、提高了對
56、各科知識綜合應(yīng)用的能力;同時也鍛煉和培養(yǎng)了我的基本素質(zhì),它使我更加耐心、謹(jǐn)慎、細(xì)致。在這次畢業(yè)設(shè)計期間,指導(dǎo)zz老師給予了我耐心的輔導(dǎo)和熱情的幫助。對于一些疑難問題老師更是很有耐心、不厭其煩的給予解答,并且在百忙之中對本論文進行了仔細(xì)的審閱,提出了極為寶貴的修改意見和建議,保證了論文的質(zhì)量。使我在畢業(yè)之際為學(xué)校交上了一份滿意的答卷。在此對zz老師表示衷心的感謝和崇高的敬意。</p><p><b>
57、附錄</b></p><p><b> 附錄A 程序清單</b></p><p> #include<reg51.h></p><p> #define LEDData P0</p><p> unsigned char code LEDCode[]={0x3f,0x06,0x5b,0x4
58、f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> unsigned char minit,second,count,count1; //分,秒,計數(shù)器</p><p> sbit add1=P1^0;//甲對加分,每按一次加1分 /在未開始比賽時為加時間分</p><p> sbit dec1
59、=P1^1;//甲對減分,每按一次減1分/在未開始比賽時為減時間分</p><p> sbit add2=P1^2;//乙對加分,每按一次加1分/在未開始比賽時為加時間秒</p><p> sbit dec2=P1^3;//乙對減分,每按一次減1分/在未開始比賽時為減時間秒</p><p> sbit secondpo
60、int=P0^7;//秒閃動點</p><p> //----依次點亮數(shù)碼管的位------</p><p> sbit led1=P2^7;</p><p> sbit led2=P2^6;</p><p> sbit led3=P2^5;</p><p> sbit led4=P2^4;</
61、p><p> sbit led5=P2^3;</p><p> sbit led6=P2^2;</p><p> sbit led7=P2^1;</p><p> sbit led8=P2^0;</p><p> sbit led9=P3^7;</p><p> sbit led10=P
62、3^6;</p><p> sbit led11=P3^5;</p><p> sbit alam=P1^7;//報警</p><p> bit playon=0;//比賽進行標(biāo)志位,為1時表示比賽開始,計時開啟</p><p> bit timeover=0;//比賽結(jié)束標(biāo)志位,為1時表示時間已
63、經(jīng)完</p><p> bit AorB=0;//甲乙對交換位置標(biāo)志位</p><p> bit halfsecond=0;//半秒標(biāo)志位</p><p> unsigned int scoreA;//甲隊得分</p><p> unsigned int scoreB;//乙隊得分</p
64、><p> void Delay5ms(void)</p><p><b> {</b></p><p> unsigned int i;</p><p> for(i=100;i>0;i--);</p><p><b> }</b></p><
65、;p> void display(void)</p><p><b> {</b></p><p> //-----------顯示時間分--------------</p><p> LEDData=LEDCode[minit/10];</p><p><b> led1=0;</b&g
66、t;</p><p> Delay5ms();</p><p><b> led1=1;</b></p><p> LEDData=LEDCode[minit%10];</p><p><b> led2=0;</b></p><p> Delay5ms();<
67、;/p><p><b> led2=1;</b></p><p> //-------------秒點閃動------------</p><p> if(halfsecond==1)</p><p> LEDData=0x80;</p><p><b> else</b&g
68、t;</p><p> LEDData=0x00;</p><p><b> led2=0;</b></p><p> Delay5ms();</p><p><b> led2=1;</b></p><p> secondpoint=0;</p>&
69、lt;p> //-----------顯示時間秒------------</p><p> LEDData=LEDCode[second/10];</p><p><b> led3=0;</b></p><p> Delay5ms();</p><p><b> led3=1;</b&g
70、t;</p><p> LEDData=LEDCode[second%10];</p><p><b> led4=0;</b></p><p> Delay5ms();</p><p><b> led4=1;</b></p><p> //-----------
71、顯示1組的分?jǐn)?shù)百位-------</p><p> if(AorB==0)</p><p> LEDData=LEDCode[scoreA/100];</p><p><b> else</b></p><p> LEDData=LEDCode[scoreB/100];</p><p>&
72、lt;b> led5=0;</b></p><p> Delay5ms();</p><p><b> led5=1;</b></p><p> //---------------顯示1組分?jǐn)?shù)的十位-----------</p><p> if(AorB==0)</p><
73、p> LEDData=LEDCode[(scoreA%100)/10];</p><p><b> else</b></p><p> LEDData=LEDCode[(scoreB%100)/10];</p><p><b> led6=0;</b></p><p> Delay5
74、ms();</p><p><b> led6=1;</b></p><p> //---------------顯示1組分?jǐn)?shù)的個位-----------</p><p> if(AorB==0)</p><p> LEDData=LEDCode[scoreA%10];</p><p>&
75、lt;b> else</b></p><p> LEDData=LEDCode[scoreB%10];</p><p><b> led7=0;</b></p><p> Delay5ms();</p><p><b> led7=1;</b></p>&l
76、t;p> //-----------顯示2組分?jǐn)?shù)的百位-------</p><p> if(AorB==1)</p><p> LEDData=LEDCode[scoreA/100];</p><p><b> else</b></p><p> LEDData=LEDCode[scoreB/100];
77、</p><p><b> led8=0;</b></p><p> Delay5ms();</p><p><b> led8=1;</b></p><p> //-----------顯示2組分?jǐn)?shù)的十位-----------</p><p> if(AorB==
78、1)</p><p> LEDData=LEDCode[(scoreA%100)/10];</p><p><b> else</b></p><p> LEDData=LEDCode[(scoreB%100)/10];</p><p><b> led9=0;</b></p>
79、<p> Delay5ms();</p><p><b> led9=1;</b></p><p> //-----------顯示2組分?jǐn)?shù)的個位-----------</p><p> if(AorB==1)</p><p> LEDData=LEDCode[scoreA%10];</p&g
80、t;<p><b> else</b></p><p> LEDData=LEDCode[scoreB%10];</p><p><b> led10=0;</b></p><p> Delay5ms();</p><p><b> led10=1;</b&g
81、t;</p><p><b> }</b></p><p> //=========================按鍵檢測程序================================================</p><p> void keyscan(void)</p><p><b>
82、 {</b></p><p> if(playon==0)</p><p><b> {</b></p><p> if(add1==0)</p><p><b> {</b></p><p> display();</p><p&
83、gt; if(add1==0);</p><p><b> {</b></p><p> if(minit<99)</p><p><b> minit++;</b></p><p><b> else</b></p><p><b
84、> minit=99;</b></p><p><b> }</b></p><p><b> do</b></p><p> display();</p><p> while(add1==0);</p><p><b> }<
85、/b></p><p> if(dec1==0)</p><p><b> {</b></p><p> display();</p><p> if(dec1==0);</p><p><b> {</b></p><p> if(
86、minit>0)</p><p><b> minit--;</b></p><p><b> else</b></p><p><b> minit=0;</b></p><p><b> }</b></p><p>
87、;<b> do</b></p><p> display();</p><p> while(dec1==0);</p><p><b> }</b></p><p> if(add2==0)</p><p><b> {</b></
88、p><p> display();</p><p> if(add2==0);</p><p><b> {</b></p><p> if(second<59)</p><p><b> second++;</b></p><p><
89、;b> else</b></p><p> second=59;</p><p><b> }</b></p><p><b> do</b></p><p> display();</p><p> while(add2==0);</p&
90、gt;<p><b> }</b></p><p> if(dec2==0)</p><p><b> {</b></p><p> display();</p><p> if(dec2==0);</p><p><b> {</b
91、></p><p> if(second>0)</p><p><b> second--;</b></p><p><b> else</b></p><p><b> second=0;</b></p><p><b>
92、 }</b></p><p><b> do</b></p><p> display();</p><p> while(dec2==0);</p><p><b> }</b></p><p><b> }</b></p
93、><p><b> else</b></p><p><b> {</b></p><p> if(add1==0)</p><p><b> {</b></p><p> display();</p><p> if(a
94、dd1==0);</p><p><b> {</b></p><p> if(AorB==0)</p><p><b> {</b></p><p> if(scoreA<999)</p><p><b> scoreA++;</b>&
95、lt;/p><p><b> else</b></p><p> scoreA=999;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
96、;<p> if(scoreB<999)</p><p><b> scoreB++;</b></p><p><b> else</b></p><p> scoreB=999;</p><p><b> }</b></p><
97、;p><b> }</b></p><p><b> do</b></p><p> display();</p><p> while(add1==0);</p><p><b> }</b></p><p> if(dec1==0)
98、</p><p><b> {</b></p><p> display();</p><p> if(dec1==0);</p><p><b> {</b></p><p> if(AorB==0)</p><p><b>
99、{</b></p><p> if(scoreA>0)</p><p><b> scoreA--;</b></p><p><b> else</b></p><p><b> scoreA=0;</b></p><p>&l
100、t;b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(scoreB>0)</p><p><b> scoreB--;</b></p><p>&
101、lt;b> else</b></p><p><b> scoreB=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> do</b></p><
102、;p> display();</p><p> while(dec1==0);</p><p><b> }</b></p><p> if(add2==0)</p><p><b> {</b></p><p> display();</p>
103、<p> if(add2==0);</p><p><b> {</b></p><p> if(AorB==1)</p><p><b> {</b></p><p> if(scoreA<999)</p><p><b> scor
104、eA++;</b></p><p><b> else</b></p><p> scoreA=999;</p><p><b> }</b></p><p><b> else</b></p><p><b> {<
105、;/b></p><p> if(scoreB<999)</p><p><b> scoreB++;</b></p><p><b> else</b></p><p> scoreB=999;</p><p><b> }</b>
106、;</p><p><b> }</b></p><p><b> do</b></p><p> display();</p><p> while(add2==0);</p><p><b> }</b></p><p&
107、gt; if(dec2==0)</p><p><b> {</b></p><p> display();</p><p> if(dec2==0);</p><p><b> {</b></p><p> if(AorB==1)</p><
108、p><b> {</b></p><p> if(scoreA>0)</p><p><b> scoreA--;</b></p><p><b> else</b></p><p><b> scoreA=0;</b></p&
109、gt;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(scoreB>0)</p><p><b> scoreB--;</b></p
110、><p><b> else</b></p><p><b> scoreB=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> do</b>
111、;</p><p> display();</p><p> while(dec2==0);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p&g
112、t; //******************************主函數(shù)*************************************************</p><p> void main(void)</p><p><b> {</b></p><p> TMOD=0x11;</p><p&
113、gt;<b> TL0=0xb0;</b></p><p><b> TH0=0x3c;</b></p><p><b> TL1=0xb0;</b></p><p><b> TH1=0x3c;</b></p><p> minit=15;
114、//初始值為15:00</p><p><b> second=0;</b></p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> ET1=1;</b></p>&
115、lt;p><b> TR0=0;</b></p><p><b> TR1=0;</b></p><p><b> EX0=1;</b></p><p><b> IT0=1;</b></p><p><b> IT1=1;<
116、;/b></p><p><b> EX1=1;</b></p><p><b> PX0=1;</b></p><p><b> PX1=1;</b></p><p><b> PT0=0;</b></p><p>
117、<b> P1=0xFF;</b></p><p><b> P3=0xFF;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> keyscan();</p><
118、;p> display();</p><p><b> }</b></p><p><b> }</b></p><p> void PxInt0(void) interrupt 0</p><p><b> {</b></p><p&
119、gt; Delay5ms();</p><p><b> EX0=0;</b></p><p><b> alam=1;</b></p><p><b> TR1=0;</b></p><p> if(timeover==1)</p><p>
120、<b> {</b></p><p> timeover=0;</p><p><b> }</b></p><p> if(playon==0)</p><p><b> {</b></p><p> playon=1;//開始標(biāo)志
121、位</p><p> TR0=1;//開啟計時</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> playon=0;//開始標(biāo)志位清零,表
122、示暫停</p><p> TR0=0;//暫時計時</p><p><b> }</b></p><p> EX0=1;//開中斷</p><p><b> }</b></p><p> void PxInt1(void) interrup
123、t 2</p><p><b> {</b></p><p> Delay5ms();</p><p> EX1=0;//關(guān)中斷</p><p> if(timeover==1)//比賽結(jié)束標(biāo)志,必須一節(jié)結(jié)束后才可以交換,中途不能交換場地</p><p><b&g
124、t; {</b></p><p> TR1=0;//關(guān)閉T1計數(shù)器</p><p> alam=1;//關(guān)報警</p><p> AorB=~AorB;//開啟交換</p><p> minit=15;//并將時間預(yù)設(shè)為15:00</p><p><b&
125、gt; second=0;</b></p><p><b> }</b></p><p> EX1=1;//開中斷</p><p><b> }</b></p><p> //*********************************中斷服務(wù)函數(shù)******
126、********************************</p><p> void time0_int(void) interrupt 1 </p><p><b> {</b></p><p><b> TL0=0xb0;</b></p><p><b> TH0=0
127、x3c;</b></p><p><b> TR0=1;</b></p><p><b> count++;</b></p><p> if(count==10)</p><p><b> {</b></p><p> halfse
128、cond=0;</p><p><b> }</b></p><p> if(count==20)</p><p><b> {</b></p><p><b> count=0;</b></p><p> halfsecond=1;</
129、p><p> if(second==0)</p><p><b> {</b></p><p> if(minit>0)</p><p><b> {</b></p><p> second=59;</p><p><b> m
130、init--;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> timeover=1;</p><p><b> playo
131、n=0;</b></p><p><b> TR0=0;</b></p><p><b> TR1=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><
132、;b> else</b></p><p><b> second--;</b></p><p><b> }</b></p><p><b> }</b></p><p> //*********************************中斷服
133、務(wù)函數(shù)**************************************</p><p> void time1_int(void) interrupt 3</p><p><b> {</b></p><p><b> TL1=0xb0;</b></p><p><b>
134、; TH1=0x3c;</b></p><p><b> TR1=1;</b></p><p><b> count1++;</b></p><p> if(count1==10)</p><p><b> {</b></p><p&g
135、t;<b> alam=0;</b></p><p><b> }</b></p><p> if(count1==20)</p><p><b> {</b></p><p><b> count1=0;</b></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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計-籃球記分器的設(shè)計報告
- 單片機課程設(shè)計---籃球記分牌
- 單片機課程設(shè)計---單片機籃球計分器
- 畢業(yè)設(shè)計---單片機籃球記分器
- 畢業(yè)設(shè)計單片機籃球記分器
- 單片機課程設(shè)計—籃球計時計分器
- 單片機課程設(shè)計——籃球計時計分器
- 單片機課程設(shè)計—籃球計時計分器
- 單片機籃球計時計分器課程設(shè)計
- 單片機課程設(shè)計——籃球計時計分器
- 畢業(yè)設(shè)計--基于單片機的籃球記分器設(shè)計
- 單片機課程設(shè)計——籃球計時計分器 - 副本
- 單片機課程設(shè)計報告-籃球計時計分器
- 單片機課程設(shè)計---籃球比賽計分計時器
- 單片機課程設(shè)計報告--電子記分牌
- 籃電子球記分牌 單片機課程設(shè)計
- 單片機技術(shù)課程設(shè)計報告(籃球計時計分器)
- 單片機課程設(shè)計-單片機課程設(shè)計---電子時鐘
- 單片機課程設(shè)計---單片機節(jié)日彩燈控制器
- 單片機課程設(shè)計-- 基于單片機的搶答器設(shè)計
評論
0/150
提交評論