2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩36頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  籃球比賽計時與計分系統設計</p><p><b>  摘要</b></p><p>  隨著單片機在各個領域的廣泛應用,許多用單片機作控制的球賽計時計分器也應運而生,如用單片機控制LCD液晶顯示器的計時計分器,用單片機控制LED七段顯示器的計時計分器等等。</p><p>  本次設計的籃球計時計分系統以AT89C51單

2、片機為核心元件,利用它內部的計數器T0完成比賽的計時,通過七段共陰極LED來顯示比分和時間。計時部分采用CD4511(七段BCD碼譯碼器)進行硬件譯碼;計分部分采用CD4094(8位移位存貯總線寄存器)進行串行口擴展顯示器接口,并利用74LS21(雙四輸入與門)來實現比分的刷新功能。報警部分采用蜂鳴器為音響器件。本系統具有賽事時間設置、賽事時間啟/停設置、24s倒計時控制;比分刷新控制;報警等功能。且造價低廉、操作簡單、攜帶方便,適合于

3、學?;蛐F體作為賽程計時計分工具。</p><p>  關鍵詞:籃球計時計分系統;七段共陰LED數碼管;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系統方案設計2</b></p><p>

9、;  2.1 總體方案2</p><p>  2.1.1 設計內容2</p><p>  2.1.2 設計要求2</p><p>  2.2 系統組成3</p><p><b>  3 硬件設計4</b></p><p>  3.1 AT89C51的介紹4</p>&l

10、t;p>  3.2 復位電路4</p><p>  3.3 鍵盤控制電路5</p><p>  3.4 顯示電路7</p><p><b>  4 軟件設計8</b></p><p>  4.1 主程序設計8</p><p>  4.2 鍵盤識別及處理程序設計9</p>

11、;<p>  4.3 顯示子程序設計9</p><p>  4.4 復位程序設計10</p><p><b>  5 系統調試11</b></p><p>  5.1 軟件模擬調試11</p><p>  5.2 硬件接線及調試11</p><p><b>  6

12、 總結13</b></p><p>  6.1 設計心得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>  體育比賽記分系統是對體育比賽過程中所產生的比分等數據進行快速采集記錄,加工處理,傳遞利用的信息系統。根據不同運動項目的不同比賽規則要求,體育比賽的記分系統包括測量類,評分類,命中類,制勝類得分類等多種類型。</p

14、><p>  比如籃球比賽是根據運動隊在規定的比賽時間里得分多少來決定勝負的,因此,籃球比賽的記分系統是一種得分類型的系統?;@球比賽的記分系統由計分器等多種電子設備組成,同時,根據目前高水平籃球比賽要求,完善的籃球比賽記分系統設備應能夠與現場成績處理,現場大屏幕,電視轉播車等多種設備相聯,以便實現高比賽現場感,表演娛樂觀眾等功能目標。</p><p>  由于單片機的集成度高,功能強,通用性好

15、,特別是它具有體積小,重量輕,能耗低,價格便宜,可靠性高,抗干擾能力強和使用方便等獨特的優點,使單片機迅速得到了推廣應用,目前已經成為測量控制應用系統中的優選機種和新電子產品的關鍵部位。世界各大電氣廠家,測控技術企業,機電行業,競相把單片機應用于產品更新,作為實現數字化,智能化的核心部件?;@球計時計分器就是以單片機為核心的計時計分系統,由計時器,計分器,綜合控制器和24秒控制器等組成。</p><p><b

16、>  2系統方案設計</b></p><p><b>  2.1 總體方案</b></p><p>  此記分器的設計采用模塊化結構,主要由以下2個組成,即鍵盤模塊、以及譯碼顯示模塊。以單片機為核心,配以一定的外圍電路和軟件,以實現比賽計分器的功能。它由硬件部分和軟件部分組成。系統設計方案的硬件電路設計方框圖如圖2-1所示。</p>&

17、lt;p>  圖2-1 硬件電路設計方框圖</p><p>  2.1.1 設計內容</p><p> ?。?)給甲、乙兩隊分別設置加分按鈕,各按鈕按下分別實現給甲、乙隊加1~9分。</p><p> ?。?)給甲、乙兩隊分別設置減分按鈕,各按鈕按下分別實現給甲、乙隊減1~9分。</p><p> ?。?)設置一個復位按鈕,按下實現甲、

18、乙隊總分回到初試分及顯示</p><p> ?。?)預置分通過甲、乙兩隊加分按鈕實現。</p><p>  2.1.2 設計要求</p><p> ?。?)方案合理、正確,系統穩定、可靠。</p><p> ?。?)軟件設計要求盡可能精練、簡短和運行可靠。</p><p> ?。?)硬件電路要求簡單明了,以節約成本。&

19、lt;/p><p><b>  2.2 系統組成</b></p><p>  硬件電路由復位按鈕、80C51單片機、矩陣鍵盤和兩個4位共陰極LED顯示器等組成。</p><p>  軟件部分主程序主要由系統初始化段、鍵盤識別、鍵值處理、兩個4位共陰極LED顯示器掃描顯示子程序組成。</p><p><b>  3

20、硬件設計</b></p><p>  3.1 AT89C51的介紹</p><p>  AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節閃爍可編程可擦除只讀存儲器的單片機。

21、單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。</p><p><b>  3.2 復位電路<

22、;/b></p><p>  為確保微機系統中電路穩定可靠工作,復位電路是必不可少的一部分,復位電路的第一功能是上電復位。一般微機電路正常工作需要供電電源為5V±5%,即4.75~5.25V。由于微機電路是時序數字電路,它需要穩定的時鐘信號,因此在電源上電時,只有當VCC超過4.75V低于5.25V以及晶體振蕩器穩定工作時,復位信號才被撤除,微機電路開始正常工作。</p><p

23、>  目前為止,單片機復位電路主要有四種類型:</p><p> ?。?)微分型復位電路;</p><p> ?。?)積分型復位電路;</p><p> ?。?)比較器型復位電路;</p><p> ?。?)看門狗型復位電路</p><p>  現在詳細介紹看門狗復位電路:</p><p>

24、;  看門狗型復位電路主要利用CPU正常工作時,定時復位計數器,使得計數器的值不超過某一值;當CPU不能正常工作時,由于計數器不能被復位,因此其計數會超過某一值,從而產生復位脈沖,使得CPU恢復正常工作狀態。典型應用的Watchdog復位電路如圖3-1所示:</p><p>  圖3-1 看門狗型復位電路</p><p>  此復位電路的可靠性主要取決于軟件設計,即將定時向復位電路發出脈沖

25、的程序放在何處。一般設計,將此段程序放在定時器中斷服務子程序中。然而,有時這種設計仍然會引起程序走飛或工作不正常[3]。原因主要是:當程序“走飛”發生時定時器初始化以及開中斷之后的話,這種“走飛”情況就有可能不能由看門狗復位電路校正回來。因為定時器中斷一真在產生,即使程序不正常,看門狗也能被正常復位。為此提出定時器加預設的設計方法。即在初始化時壓入堆棧一個地址,在此地址內執行的是一條關中斷和一條死循環語句。在所有不被程序代碼占用的地址盡

26、可能地用子程序返回指令RET代替。這樣,當程序走飛后,其進入陷阱的可能性將大大增加。而一旦進入陷阱,定時器停止工作并且關閉中斷,從而使看門狗復位電路會產生一個復位脈沖將CPU復位。當然這種技術用于實時性較強的控制或處理軟件中有一定的困難。</p><p>  3.3 鍵盤控制電路</p><p>  在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,

27、每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。如圖3-2所示。</p><p>  圖3-2 矩陣式鍵盤電路</p><p>  需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。

28、</p><p>  矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。具體的識別及編程方法如下所述。</p><p&g

29、t;  矩陣式鍵盤的按鍵識別方法</p><p>  確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。</p><p>  判斷鍵盤中有無鍵按下將全部行線Y0-Y3置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按

30、鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。</p><p>  判斷閉合鍵所在的位置在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵,矩陣鍵盤與80C51的接口電路如圖3-3所示。</p><p

31、>  圖3-3 矩陣鍵盤與80C51的接口電路</p><p><b>  3.4 顯示電路</b></p><p>  顯示器采用兩個四位共陰極LED顯示器,來實現顯示器的動態掃描,八個二極管連接一個陰極的結構,只要另一段為高電平,二極管就會發光,從而形成一段。將八段順序排列后就成為具有一定編碼的共陰顯示器了。動態掃描的頻率有一定的要求,頻率太低,LED將出現

32、閃爍現象。如頻率太高,由于每個LED點亮的時間太短,LED的亮度太低,肉眼無法看清,所以一般均取幾個ms左右為宜,這就要求在編寫程序時,選通某一位LED使其點亮并保持一定的時間,程序上常采用的是調用延時子程序。顯示電路如圖3-4所示。</p><p>  圖3-4 顯示電路接線圖</p><p><b>  4 軟件設計</b></p><p>

33、;<b>  4.1 主程序設計</b></p><p>  主程序主要由系統初始化段、開中斷、鍵盤識別、鍵值處理、兩個4位共陰極LED顯示器掃描顯示子程序和中斷處理子程序等組成。通過對以上各段和子程序的結合,以實現系統功能。該系統主程序流程圖如下圖4-1所示。</p><p>  圖4-1 主程序流程圖</p><p>  4.2 鍵盤識別及

34、處理程序設計</p><p>  按鍵識別及處理程序主要由鍵盤識別和鍵值處理組成。其中鍵盤識別子程序不斷地對鍵盤進行判斷是否有鍵按下。當有鍵按下時則轉到鍵碼處理即甲、乙總分處理子程序對相應按鍵進行相應處理,即可實現對甲、乙兩隊總分的計算與處理。</p><p>  鍵盤識別即依次判斷第一列、第二列、第三列、第四列是否有鍵按下。如果有鍵按下,先得出列,再反向賦值得出行,最后得出所在行和列的位

35、置。</p><p>  鍵值處理即先定義0~9這九個按鍵,再對三次按鍵值進行保存,再來判斷是甲隊還是乙隊加減分,再判斷是加還是減,最后判斷加或減多少分,實現分別給甲、乙總分進行加分和減分。鍵值處理即甲、乙總分處理子程序流程圖如下圖4-2所示。</p><p>  圖4-2 鍵值處理子程序流程圖</p><p>  4.3 顯示子程序設計</p>&l

36、t;p>  由于該系統使用的是8位LED顯示器顯示計分器比分,因此顯示采用動態掃描顯示方法,即由顯示器掃描顯示子程序控制顯示器逐個循環從左至右依次點亮各個顯示器。這樣雖然在任一時刻只要一個顯示器點亮,但是由于人眼具有視覺殘留效應,看起來與全部顯示器持續點亮效果一樣。顯示器掃描顯示子程序顯示每一位用如圖4-3所示流程方法完成。</p><p>  圖4-3 顯示子程序流程圖</p><p&

37、gt;  4.4 復位程序設計</p><p>  按鈕與單片機P0.6/AD6引腳相連,當每次按下該按鈕后,系統將通過軟件實現對計分復位功能。</p><p>  在主程序運行過程中,只要系統識別到與單片機P0.6/AD6引腳相連的按鍵按下,程序則會轉去執行復位程序,完成對甲、乙總分寄存單元的清零,顯示器各位的顯示數寄存單元的復位,執行完畢后,返回主程序。流程圖如4-4所示。</p

38、><p>  圖4-4 復位程序流程圖</p><p><b>  5 系統調試</b></p><p>  5.1 軟件模擬調試</p><p>  本設計主要是用proteus軟件繪圖以及偉福軟件進行編程仿真的。調試步驟由兩個部分組成:首先,確定程序中錯誤的確切性質和位置;然后,對程序代碼進行分析,確定問題的原因,并設法

39、改正這個錯誤。具體地說,由以下步驟組成:</p><p>  1.從錯誤的外部表現入手,確定程序中出錯的位置;</p><p>  2.分析有關程序代碼,找出錯誤的內在原因;</p><p>  3.修改程序代碼,排除這個錯誤;</p><p>  4.重復進行暴露了這個錯誤的原始測試以及某些回歸測試,以確保該錯誤確實被排除且沒有引入新的錯誤

40、;</p><p>  5.如果所作的修正無效,則撤消這次改動,重復上述過程,直到找到一個有效的辦法為止。</p><p>  5.2 硬件接線及調試</p><p>  這個電路是在老師的指導下設計的,電路的設計在理論上完全行得通,不過接線是設計中最關鍵的一步,我的接線原則是從全局出發,逐個模塊連接調試,最后總體調試。在這個指導思想下,我的安裝還算是是成功的。&l

41、t;/p><p>  逐個模塊接線再調試,可以為總體調試省去很多時間,只要每個模塊正常運行,幾個模塊通過地址總線連接之后,就不會出現太大的問題了。</p><p><b>  調試前的直觀檢查:</b></p><p>  1、連線是否正確,在通電之前應先檢查一下電路的連線是否正確,包括錯線,少線和多線的情況。查找的方法有:按照電路圖檢查安裝的線路

42、,這種方法的特點是,根據電路圖來確定,按一定的順序逐一檢查安裝好的線路,由此,可容易查出錯線和少線的情況,還有一種方法就是按照實際的線路來對照原理電路進行查線,這是一種以元件為中心進行查線的方法。把每個元件引腳的連線一次查清 ,檢查每個接線處在電路圖上是否存在,這種方法不但可以查出錯線和少線,還容易查處多線的情況。</p><p>  2、元器件安裝時情況</p><p>  檢查元、器見

43、引腳之間有無短路;連接處有無接觸不良;二極管和電容極性等是否連接有誤。</p><p>  電源、信號源連接是否正確。</p><p>  4、電源端對地是否存在短路,在通電前,斷開一根電源線,用萬用表檢查電源對地端是否存在短路</p><p>  模擬調試結果記錄如下:通電后,顯示器初始顯示“100--100”。按照鍵盤分布說明按鍵,分布給甲、乙加1分、2分和3分

44、,顯示器跟蹤顯示出總分,然后模擬比賽細節,隨意給甲、乙加分或是減分,均達到預期效果。在甲、乙均有一定總分的情況下對甲、乙進行減分處理,當減到0后便不能夠再進行減分操作,與程序設計相符。在甲、乙均有一定總分的情況下,按清零按鈕,顯示結果清零。重復進行上面操作,結果均符合設計要求。</p><p><b>  6 總結</b></p><p><b>  6.1

45、 設計心得</b></p><p>  在沒有做畢業設計以前,覺得畢業設計只是對知識的單純總結,但是通過這次畢業設計發現自己的看法有點太片面,畢業設計不僅是對前面所學知識的一種檢驗,也是對自己能力的一種提高,通過這次畢業設計使自己明白了原來的那點知識是非常欠缺的,要學習的東西還很多,通過這次畢業設計,明白學習是一個長期積累的過程,在以后的工作和生活中都應該不斷的學習,努力提高自己的知識和綜合素質,并將

46、理論與實際相結合,學以致用,不再是紙上談兵,。對我們學生來說,理論與實際同樣重要,這是我們以后在工作中說明自己能力的一個重要標準。</p><p>  在這次畢業設計中,同學之間互相幫助,有什么不懂的大家在一起商量,發現我們所學的知識實在是有限,不過我們能夠充分利用網絡的優勢去查閱資料。而且,畢業設計中涉及到的電路圖用了比較新的一款PROTEUS進行設計和仿真,使我多掌握了一個得力的仿真工具。</p>

47、<p>  我在整個設計過程中懂得了許多東西,當遇到一不了的問題,跟同伴一起商量、合作,或許能收到事半功倍的效果。不管學什么,一定要打好基礎,并將其學好、學精,但空有知識也不一定就能說明什么,還得能為己所用;還有更重要的是培養了獨立思考和設計的能力,樹立了對知識應用的信心,相信會對今后的學習工作和生活有非常大的幫助,并且提高了自己的動手實踐操作能力, 使自己充分體會到了在設計過程中的成功喜悅。雖然這個設計做的不是很完美,但

48、是在設計過程中所學到的東西是這次課程設計的最大收獲和財富,使我終身受益;最后,也是我感觸比較深的一點,這次課程設計時為數不多的獨立完成的一次,雖然過程中遇到很多困難,讓自己犯愁過,彷徨過,急躁過,可當自己很快調整好心態,從跌倒的地方爬起來繼續,最后取得成功,不止是成功后的喜悅,也是一次鍛煉!</p><p>  通過這次畢業設計,明白學習是一個長期積累的過程,在以后的工作和生活中都應該不斷的學習,努力提高自己的知

49、識和綜合素質,并將理論與實際相結合,理論與實際同樣重要。</p><p>  在設計的過程中不可避免的遇到了許多困難。尤其是在最后的調試中,會因為某種原因而得不到滿意的結果,但最后還是解決了。最后在調試結果終于出來以后我更是無比興奮,無比自豪。在這里我要感謝幫助過我的老師和同學尤其是我的畢業設計指導老師張毅寧老師,沒有你們也就沒有這份畢業設計和論文。</p><p>  對我而言,知識上的

50、收獲重要,精神上的豐收更加可喜。我們每一個人永遠不能滿足于現有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經歷是一份擁有。這次課程設計必將成為我人生旅途上一個非常美好的回憶。</p><p>  在畢業設計中,我感受到了老師對學生的那種悔人不卷的精神,每天的固定時間,老師都來給我們指導,使我們少走彎路,順利完成實習任務,請允許我向你們致意崇高的敬意,感謝你們,老師!</p&

51、gt;<p><b>  參考文獻</b></p><p>  [1] 許立梓.微型計算機原理及應用.北京:機械工業出版社,2002</p><p>  [2] 劉樂善.微型計算機接口技術及應用.武漢:華中理工大學出版社,2000 </p><p>  [3] 鄒逢興.計算機硬件技術基礎試驗教程.北京:高等教育出版社,2000&l

52、t;/p><p>  [4] 周佩玲.16位微型計算機原理接口及其應用.北京:中國科學技術大學出版社,2000 </p><p>  [5] 吳秀清.微型計算機原理與接口技術.北京:中國科學技術出版社,2001</p><p>  [6] 鄧亞平.微型計算機接口技術.北京:清華大學出版社,2001</p><p>  [7] 王迎旭.單片機原理及

53、及應用.北京:機械工業出版社,2001</p><p>  [8] 周航慈.單片機應用程序設計技術.北京:北京航空航天大學出版社,2002</p><p>  [9] 謝宜仁.單片機實用技術問答.北京:人民郵電出版社,2002</p><p><b>  致謝</b></p><p>  在這次畢業設計中,我在整個設計過

54、程中懂得了許多東西,也培養了獨立思考和設計的能力,樹立了對知識應用的信心,相信會對今后的學習工作和生活有非常大的幫助,并且提高了自己的動手實踐操作能力, 使自己充分體會到了在設計過程中的成功喜悅。雖然這個設計做的不是很理想,但是在設計過程中所學到的東西是這次課程設計的最大收獲和財富,使我受益良多。</p><p>  短暫幾個月的畢業設計即將結束,在此,我首先感謝我的母校,在我們即將步入社會,走向工作崗位之際為我

55、提供了這樣一個良好的學習知識與動手操作的機會,并為我提供了先進實驗設備。通過本次畢業設計我受益匪淺,不僅使我學會了用單片機編寫程序的方法,而且對學過的相關知識得到了進一步的鞏固和提高,通過閱讀相關專業書籍掌握了一些以前未了解的知識;同時也熟悉了很多的硬件設備,更重要的是使我在學習和掌握這些知識的同時,能夠在思維上得到提高和升華,在分析問題和解決問題的能力上得到培養和提高。這次畢業設計使我完善了知識結構、拓寬了知識面,開闊了眼界、提高了對

56、各科知識綜合應用的能力;同時也鍛煉和培養了我的基本素質,它使我更加耐心、謹慎、細致。在這次畢業設計期間,指導zz老師給予了我耐心的輔導和熱情的幫助。對于一些疑難問題老師更是很有耐心、不厭其煩的給予解答,并且在百忙之中對本論文進行了仔細的審閱,提出了極為寶貴的修改意見和建議,保證了論文的質量。使我在畢業之際為學校交上了一份滿意的答卷。在此對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; //分,秒,計數器</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>  //----依次點亮數碼管的位------</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;//比賽進行標志位,為1時表示比賽開始,計時開啟</p><p>  bit timeover=0;//比賽結束標志位,為1時表示時間已

63、經完</p><p>  bit AorB=0;//甲乙對交換位置標志位</p><p>  bit halfsecond=0;//半秒標志位</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組的分數百位-------</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組分數的十位-----------</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組分數的個位-----------</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組分數的百位-------</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組分數的十位-----------</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組分數的個位-----------</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;  //******************************主函數*************************************************</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;//開始標志

121、位</p><p>  TR0=1;//開啟計時</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  playon=0;//開始標志位清零,表

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;//關中斷</p><p>  if(timeover==1)//比賽結束標志,必須一節結束后才可以交換,中途不能交換場地</p><p><b&g

124、t;  {</b></p><p>  TR1=0;//關閉T1計數器</p><p>  alam=1;//關報警</p><p>  AorB=~AorB;//開啟交換</p><p>  minit=15;//并將時間預設為15:00</p><p><b&

125、gt;  second=0;</b></p><p><b>  }</b></p><p>  EX1=1;//開中斷</p><p><b>  }</b></p><p>  //*********************************中斷服務函數******

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、務函數**************************************</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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論