畢業(yè)設(shè)計--基于單片機(jī)的籃球賽計分器_第1頁
已閱讀1頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計(論文)</b></p><p>  題 目 : 基于單片機(jī)的籃球賽計分器 </p><p>  學(xué)院、系 : 電子工程系 </p><p>  專 業(yè) : 電子信息工程技術(shù) </p><p>  學(xué)生姓名 :

2、 </p><p>  班 級 : 學(xué)號 </p><p><b>  摘 要</b></p><p>  進(jìn)入21世紀(jì),伴隨著電子,信息通信技術(shù)的應(yīng)用與普及開發(fā),人們對電子技術(shù)的要求也越來越高。目前嵌入式單片機(jī)滲透到我們生活的各個

3、領(lǐng)域,由于它具有功能強(qiáng)大,體積小,功耗低,可靠性高,易擴(kuò)展,性價比高,使用方便等特點,因此它廣泛應(yīng)用于工業(yè)控制,智能儀表等有關(guān)系統(tǒng)設(shè)備。</p><p>  本設(shè)計主要利用單片機(jī)STC89C52作為核心元件,利用3組4位共陽極的數(shù)碼管作為顯示器件,以C語言作為編程語言,在Protues和Keil搭建的軟件仿真平臺下進(jìn)行仿真,本設(shè)計包含了STC89C52系列單片機(jī)的最小系統(tǒng)的構(gòu)成,同時在此基礎(chǔ)上擴(kuò)展了一些實用性強(qiáng)的

4、外圍接口,可以進(jìn)一步了解譯碼器74LS247的應(yīng)用,LED七段數(shù)碼管的結(jié)構(gòu)和工作原理,主要實現(xiàn)了計時和顯示A/B隊的分?jǐn)?shù),并能及時進(jìn)行加分,減分,鳴笛警示等功能。</p><p>  系統(tǒng)設(shè)計完成后應(yīng)有成本低廉、性能穩(wěn)定、高準(zhǔn)確度顯示、操作方便且易攜帶等特點。廣泛適合各類學(xué)校和小團(tuán)體作為賽程計分。</p><p>  關(guān)鍵詞:籃球賽計分器;STC89C52;74LS247;七段數(shù)碼管;仿真

5、</p><p><b>  Abstract</b></p><p>  Entering the twenty-first Century, along with the more and more popularization application of the electronics, information and communication techno

6、logy, people’s requirement is more and more high in the electronic technology, The embedded microcontroller is penetrating into every aspect of our lives with its strong function, small volume, low power consumption, hig

7、h liability, easy expansion, high performance-price ratio, use convenient and so on , so it is widely used in industrial controlment,</p><p>  The core element of the design is STC89C52, 3 groups of 4 bit co

8、mmon anode digital tube is display devices. The design is using C language, simulating in a software simulation platform between Proteus and Keil, the design included the STC89C52Series MCU minimum system, and at the sa

9、me time the design expanded some practical peripheral interface to deeply understand the application of 74LS247, LED seven digital tube structure and its working principle, and the display interface communication.The<

10、/p><p>  After finishing system design,it should be low cost, stable performance, high accuracy to display, convenient to operate easy to carry and so on. Suitable for all kinds of schools and small groups as t

11、he tournament scoring.</p><p>  Keywords: Basketball scoring device; STC89C52;74LS247;LED;Simulation</p><p>  目 錄</p><p>  第一章 緒 論5</p><p><b>  1

12、.1 引言5</b></p><p>  1.2 國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢5</p><p>  第二章 系統(tǒng)總體方案設(shè)計7</p><p>  2.1 系統(tǒng)硬件方案設(shè)計7</p><p>  2.2 系統(tǒng)軟件方案設(shè)計8</p><p>  2.3 本章小結(jié)9</p><p

13、>  第三章 系統(tǒng)硬件設(shè)計10</p><p>  3.1 硬件設(shè)計原理10</p><p>  3.1.1 STC89C52簡介10</p><p>  3.1.2 數(shù)碼管動態(tài)掃描顯示原理12</p><p>  3.1.3 BCD——七段數(shù)碼管驅(qū)動/譯碼器13</p><p>  3.1.4

14、 按鍵接口原理14</p><p>  3.2 硬件電路設(shè)計15</p><p>  3.2.1 元器件的選擇16</p><p>  3.2.2 計時顯示屏的設(shè)計16</p><p>  3.2.3計分顯示屏的設(shè)計17</p><p>  3.2.4 鳴笛器的設(shè)計17</p><p&g

15、t;  3.3 本章小結(jié)18</p><p>  第四章系統(tǒng)軟件設(shè)計19</p><p>  4.1 軟件設(shè)計原理19</p><p>  4.1.1定時器/計數(shù)器19</p><p>  4.1.2發(fā)音原理及音樂知識20</p><p>  4.2 系統(tǒng)軟件設(shè)計22</p><p&g

16、t;  4.2.1 系統(tǒng)主程序設(shè)計22</p><p>  4.2.2 時間顯示設(shè)計22</p><p>  4.2.3 計分顯示設(shè)計25</p><p>  4.2.4 鳴笛器設(shè)計26</p><p>  4.3 本章小結(jié)27</p><p>  第五章 Keil C與Protues聯(lián)調(diào)及仿真28<

17、;/p><p>  5.1 Keil C與Protues簡介28</p><p>  5.2 Keil C與Protues聯(lián)調(diào)及仿真28</p><p>  5.3 本章小結(jié)31</p><p>  第六章 總 結(jié)32</p><p><b>  參考文獻(xiàn)33</b></p>

18、<p><b>  附 錄34</b></p><p><b>  致 謝41</b></p><p><b>  第一章 緒 論</b></p><p><b>  1.1 引言 </b></p><p>  進(jìn)入21世

19、紀(jì),伴隨著電子,信息通信技術(shù)的應(yīng)用與普及開發(fā),人們對電子技術(shù)的要求也越來越高,目前嵌入式單片機(jī)滲透到我們生活的各個領(lǐng)域。[1]單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù),把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能集成到一塊硅片上構(gòu)成的一個小而完善的計算機(jī)系統(tǒng)。按照歷史性、本質(zhì)性、普遍性要求,嵌入式系統(tǒng)應(yīng)定義為:“嵌入到對象體系中的專用計算機(jī)系統(tǒng)”,可

20、分軟件部分和硬件部分,而當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在單片機(jī)上。所以,以MCU為核心,就是各種各樣的單片機(jī),是嵌入式硬件部分的實現(xiàn)方式之一,它主要是因為把處理器和存儲器等部件集成在一塊芯片上。</p><p>  體育比賽計時計分器是對體育比賽過程中所產(chǎn)生的時間、比分等數(shù)據(jù)進(jìn)行快速采集記錄、加工處理、傳遞利用的工具?;@球比賽的計時計分器是一種得分類型的工具。雖

21、然籃球比賽中很早就開始研究應(yīng)用了電子計分器,但通常都是利用模擬電子器件、數(shù)字電子器件或是模擬、數(shù)字混合組成的,其穩(wěn)定性和高準(zhǔn)確度計分仍存在一些問題。以嵌入式單片機(jī)為核心,利用3組4位共陽極的數(shù)碼管作為顯示器件的籃球比賽計分屏,計分準(zhǔn)確,具有體積小,重量輕,能耗低,價格便宜,可靠性高,抗干擾能力強(qiáng)和使用方便等獨特的優(yōu)點。</p><p>  1.2 國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢</p><p>

22、  伴隨著科技的日新月異,各式各樣的電子產(chǎn)品的問世和發(fā)展層出不窮,籃球計分屏是一個無處不在的電子產(chǎn)品,經(jīng)過多年的發(fā)展,技術(shù)已經(jīng)相當(dāng)成熟了。根據(jù)目前高水平籃球比賽要求,完善的籃球比賽計時系統(tǒng)設(shè)備應(yīng)能夠與現(xiàn)場成績處理,現(xiàn)場大屏幕,電視轉(zhuǎn)播車等多種設(shè)備相聯(lián),以便實現(xiàn)高比賽現(xiàn)場感,表演娛樂觀眾等功能目標(biāo)。隨著電子技術(shù)的產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,生產(chǎn)工藝的飛速發(fā)展和籃球的廣泛推廣,市場對籃球計分器的需求也越來越大。本設(shè)計用STC89C52單片機(jī)編程控制LED

23、七段數(shù)碼管作顯示,設(shè)計籃球賽計分屏,嵌入式單片機(jī)滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄象機(jī)、攝象機(jī)、全自動洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。</p><p&

24、gt;  隨著單片機(jī)的發(fā)展,人們對事物的要求越來越高,單片機(jī)的應(yīng)用軟件技術(shù)也發(fā)生了巨大的變化,從最初的匯編語言,開始演變到C語言開發(fā),不但增加了語言的可讀性,結(jié)構(gòu)性,而且對于跨平臺的移植也提供了方便,另外一些復(fù)雜的系統(tǒng)開始在單片機(jī)上采用操作系統(tǒng),一些小的RTOS等,一方面加速了開發(fā)人員的開發(fā)速度,節(jié)約開發(fā)成本,另外也為更復(fù)雜的實現(xiàn)提供了可能。當(dāng)前比較流行的RTOS有:WINCE,uClinux,Linux,uC/OS等等。</p&

25、gt;<p>  第二章 系統(tǒng)總體方案設(shè)計</p><p>  本設(shè)計主要利用單片機(jī)STC89C52作為核心元件,利用3組4位共陽極的數(shù)碼管作為顯示器件,分別用于記錄A、B兩隊的分?jǐn)?shù),以及賽程時間,每個隊的數(shù)碼管顯示分?jǐn)?shù)范圍可達(dá)到0—9999分,足夠滿足賽程需要。以C語言作為編程語言,在Protues和Keil搭建的軟件仿真平臺下進(jìn)行仿真,本設(shè)計包含了STC89C52系列單片機(jī)的最小系統(tǒng)的構(gòu)成,同

26、時在此基礎(chǔ)上擴(kuò)展了一些實用性強(qiáng)的外圍接口,可以進(jìn)一步了解譯碼器74LS247的應(yīng)用,LED七段數(shù)碼管的結(jié)構(gòu)和工作原理,主要實現(xiàn)了計時和顯示A/B隊的分?jǐn)?shù),并能及時進(jìn)行加分,減分,鳴笛警示等功能[3]。</p><p>  2.1 系統(tǒng)硬件方案設(shè)計</p><p>  該系統(tǒng)硬件電路包括:單片機(jī)STC89C52、時鐘電路、復(fù)位電路、電源電路、按鍵控制電路、計分電路、計時電路、報警電路。軟件包

27、括用Keil 進(jìn)行C語言編程,用Protues進(jìn)行仿真,具體系統(tǒng)硬件結(jié)構(gòu)框圖如圖2-1所示。 </p><p>  圖2-1 籃球賽計分器的硬件結(jié)構(gòu)框圖</p><p>  2.2 系統(tǒng)軟件方案設(shè)計</p><p>  軟件部分要求實現(xiàn)的功能有:開始時所有顯示屏都顯示0;有預(yù)置比賽時間的功能;具有AB兩隊分別計分的功能;有鳴笛警示功能;只有當(dāng)預(yù)置時間后,并按開始按

28、鈕,計時器才能開始計時,只有當(dāng)開始計時后,AB兩隊才能加分等。[3]結(jié)合數(shù)碼管以及51單片機(jī)計數(shù)器的工作實現(xiàn)方式、接口應(yīng)用、中斷控制等可設(shè)計出程序流程圖如下圖2-2所示:</p><p>  圖2-2 主程序流程圖</p><p><b>  2.3 本章小結(jié)</b></p><p>  本章主要闡述了本設(shè)計的總體設(shè)計方案,通過模塊化的設(shè)計來

29、實現(xiàn)硬件部分的功能,軟件部分的實現(xiàn)主要通過控制單片機(jī)的I/O口和相應(yīng)按鍵操作來完成,先確定系統(tǒng)總體方案,后續(xù)章節(jié)的詳細(xì)方案設(shè)計就迎刃而解了。</p><p>  第三章 系統(tǒng)硬件設(shè)計</p><p>  設(shè)計一個基于51單片機(jī)的籃球賽計分屏,初步確定本設(shè)計的總體框架結(jié)構(gòu),再根據(jù)具體設(shè)計要求選定合適的設(shè)計方案以及選取合適的元器件進(jìn)行系統(tǒng)硬件設(shè)計。具體設(shè)計概念如下:</p>&

30、lt;p>  選擇STC89C52型單片機(jī),通過不同的I/O口控制按鍵電路、顯示電路、鳴笛警示電路等部分,設(shè)計一個簡易的籃球賽計分屏。</p><p>  3.1 硬件設(shè)計原理</p><p>  3.1.1 STC89C52簡介[2]</p><p>  STC89C52是一種帶4K字節(jié)FLASH存儲器(FPEROM——Flash Programmable

31、and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的STC89C52是一種高效微控制器,STC89C52是它的一種精簡版本。STC89C52單片機(jī)為很多控制系統(tǒng)提供了一

32、種靈活性高且價廉的方案。外形及引腳排列如圖3-1所示:</p><p>  圖3-1 STC89C52外形及引腳排列</p><p><b>  主要特性:</b></p><p>  ·與MCS-51 兼容</p><p>  ·4K字節(jié)可編程FLASH存儲器</p><p&g

33、t;  ·壽命:1000寫/擦循環(huán)</p><p>  ·數(shù)據(jù)保留時間:10年</p><p>  ·全靜態(tài)工作:0Hz-24MHz</p><p>  ·三級程序存儲器鎖定</p><p>  ·128×8位內(nèi)部RAM</p><p>  ·32可

34、編程I/O線</p><p>  ·兩個16位定時器/計數(shù)器</p><p><b>  ·5個中斷源</b></p><p><b>  ·可編程串行通道</b></p><p>  ·低功耗的閑置和掉電模式</p><p>  &#

35、183;片內(nèi)振蕩器和時鐘電路</p><p><b>  管腳說明:</b></p><p><b>  VCC:供電電壓。</b></p><p><b>  GND:接地。</b></p><p>  P0口:P0口的8位皆為漏極開路輸出簡稱OD;內(nèi)部無上拉電阻,所以執(zhí)行輸

36、出功能時,外部必須接上拉電阻;若要實現(xiàn)輸入功能,必須先輸入高電平“1”,才能讀取該端口所連接的外部數(shù)據(jù);若系統(tǒng)連接外部存儲器,則P0可作為地址總線和數(shù)據(jù)總線的多功能引腳,此時內(nèi)部具有上拉電阻,無需外接上拉電阻。</p><p>  P1口:P1口為8位,可位尋址的雙向I/O口;內(nèi)部具備約30千歐姆的上拉電阻,實現(xiàn)輸出功能時,不需要連接外部上拉電阻;實現(xiàn)輸入功能時,必須先輸入高電平“1”,才能讀取該端口所連接的外

37、部數(shù)據(jù);P1口的8位類似漏極開路輸出,但內(nèi)部已接上上拉電阻,每個引腳可驅(qū)動4個LS型TTL負(fù)載。</p><p>  P2口:P2口為8位、可位尋址的雙向輸入/輸出口,內(nèi)部具備約30千歐姆的上拉電阻,實現(xiàn)輸出功能時,不需要連接外部上拉電阻;實現(xiàn)輸入功能時,必須先輸入高電平“1”,才能讀取該端口所連接的外部數(shù)據(jù);P2口的8位類似漏極開路輸出,但內(nèi)部已接上上拉電阻,每個引腳可驅(qū)動4個LS型TTL負(fù)載;若系統(tǒng)連接外部存

38、儲器,而外部存儲器的地址線超過了8根時,則P2可作為地址總線(A8-A15)的引腳。</p><p>  P3口:P3口為8位,可位尋址的雙向I/O口;內(nèi)部具備約30千歐姆的上拉電阻,實現(xiàn)輸出功能時,不需要連接外部上拉電阻;實現(xiàn)輸入功能時,必須先輸入高電平“1”,才能讀取該端口所連接的外部數(shù)據(jù);P3口的8位類似漏極開路輸出,但內(nèi)部已接上上拉電阻,每個引腳可驅(qū)動4個LS型TTL負(fù)載。P3口也可作為STC89C52的

39、一些特殊功能口,如下表3-1所示:</p><p>  表3-1 STC89C52的一些特殊功能口</p><p>  RST:復(fù)位信號。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間,用以完成單片機(jī)的復(fù)位初始化操作。</p><p>  ALE/:地址鎖存控制信號。在系統(tǒng)擴(kuò)展,訪問外部存儲器時,ALE用于控制把P0口輸出的低8位的地址鎖存起來,以實現(xiàn)

40、低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振1/6的固定頻率輸出脈沖,因此可作為外部時鐘或者外部定時脈沖使用。ALE只有在執(zhí)行MOVX,MOVC指令時,ALE才起作用。</p><p> ?。和獠砍绦虼鎯ζ髯x選通信號。在讀外部ROM時,有效(低電平有效),以實現(xiàn)外部ROM的讀操作。在具體應(yīng)用時,外部ROM讀取時,在每個機(jī)器周期會動作兩次,外部RAM讀取時,兩個信號被跳過不會輸出。</p><

41、p>  /VPP:訪問程序存儲控制信號。當(dāng)信號保持低電平時,對ROM的讀操作僅僅限定在外部程序存儲器,當(dāng)信號為高電平或者懸空時,對ROM的讀操作是從內(nèi)部程序存儲器開始,并可延至外部程序存儲器。</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p>  XTAL2:來自反向振蕩器的輸出。</p><p>  3.1.2

42、 數(shù)碼管動態(tài)掃描顯示原理[4]</p><p>  在實際的單片機(jī)系統(tǒng)中,往往需要多位顯示。動態(tài)顯示是一種最常見的多位顯示方法,應(yīng)用非常廣泛。用數(shù)碼管顯示信息時,由于每個數(shù)碼管至少需要8個I/O口,如果需要多個數(shù)碼管,則需要太多I/O口,而單片機(jī)的I/O口是有限的。在實際應(yīng)用中,一般采用動態(tài)顯示的方式解決此問題。</p><p>  動態(tài)顯示是多個數(shù)碼管,交替顯示,利用人的視覺暫留作用使人

43、看到多個數(shù)碼管同時顯示。通常將所有位的段選線相應(yīng)地并聯(lián)在一起,由一個單片機(jī)的8位I/O口控制,形成段選線的多路復(fù)用。而各位數(shù)碼管的共陽極或共陰極分別由單片機(jī)獨立的I/O口線控制,順序循環(huán)地點亮每位數(shù)碼管,這樣的數(shù)碼管驅(qū)動方式就稱為“動態(tài)掃描”。在這種方式中,雖然每一時刻只選通一位數(shù)碼管,但由于人眼具有一定的“視覺殘留”,只要延時時間設(shè)置恰當(dāng),便會感覺到多位數(shù)碼管同時被點亮了。在動態(tài)顯示程序中,各個位的延時時間長短是非常重要的,如果延時時

44、間長,則會出現(xiàn)閃爍現(xiàn)象;如果延時時間太短,則會出現(xiàn)顯示暗且有重影。</p><p>  在編程時,需要輸出段選和位選信號,位選信號選中其中一個數(shù)碼管,然后輸出段碼,使該數(shù)碼管顯示所需要的內(nèi)容,延時一段時間后,再選中另一個數(shù)碼管,再輸出對應(yīng)的段碼,高速交替。</p><p>  3.1.3 BCD——七段數(shù)碼管驅(qū)動/譯碼器[3]</p><p>  常用的

45、BCD對七段顯示器譯碼器/驅(qū)動器的IC包裝設(shè)計有TTL之7446、7447、7448、7449與CMOS之4511等。其中7446、7447必須使用共陽極七段數(shù)碼顯示器,7448、7449、4511等則使用共陰極七段顯示器。</p><p>  74LS247的功能用于將BCD碼轉(zhuǎn)化成數(shù)碼塊中的數(shù)字,通過它解碼,可以直接把數(shù)字轉(zhuǎn)化為數(shù)碼管的顯示數(shù)字,從而簡化了程序,節(jié)約單片機(jī)的I/O開銷,因此是一個非常好的芯片。

46、</p><p>  74LS247的引腳如下圖3-2所示:</p><p>  圖3-2 74LS247引腳圖</p><p><b>  引腳的功能:</b></p><p>  (1)A、B、C、D為輸入端,abcdefg為輸出端。</p><p>  當(dāng)輸入DCBA=0010時,則輸出a

47、bcdefg=0010010,使數(shù)碼管顯示“2”;</p><p>  當(dāng)輸入DCBA=0110時,則輸出abcdefg=1100000,使數(shù)碼管顯示“6”;關(guān)系如表3-2所示:</p><p>  表3-2 BCD七段譯碼真值表</p><p> ?。?)LT、RBI與BI/RBO為控制引腳,其功能分述如下:</p><p>  74LS

48、247電路是由與非門、輸入緩沖器和七個與或非門組成的BCD——7段譯碼器/驅(qū)動器。7個與非門和一個驅(qū)動電路成對連接,以產(chǎn)生可用的BCD數(shù)據(jù)及其補(bǔ)碼至7個與或非譯碼門。剩下的與非門和3個輸入緩沖器作為試燈輸入(LT)、滅燈輸入/動態(tài)滅燈輸出(BI/RBO)以及動態(tài)滅燈輸入(RBI)端。</p><p>  該電路接受4位二進(jìn)制編碼——十進(jìn)制數(shù)(BCD)輸入并借助于輔助輸入端狀態(tài)將輸入數(shù)據(jù)譯碼后去驅(qū)動一個七段顯示器。

49、輸出結(jié)構(gòu)設(shè)計能承受7段顯示器所需要的相當(dāng)高的高壓,驅(qū)動顯示器各段所需要的高達(dá)24mA的電流可以由其高性能的輸出晶體管來直接提供。BCD輸入計數(shù)9以上的顯示圖案是鑒定輸入條件的唯一信號。</p><p>  該電路有自動前、后沿滅零控制(RBI和RBO)。試燈(LT)可在端處在高電平的任何時刻去進(jìn)行,該電路還含有一個滅燈輸入(BI)。它用來控制燈的亮度或禁止輸出。</p><p>  1)需

50、要0-15的輸出功能時,滅燈輸入(BI)必須為開路或者保持在高電平狀態(tài),若不要滅掉十進(jìn)制零,則動態(tài)滅燈輸入(RBI)必須開路或者處于高電平狀態(tài)。</p><p>  2)當(dāng)?shù)碗娖街苯蛹拥綔鐭糨斎耄˙I)時,不管其他任何輸入端的電平如何,所有段的輸出端都關(guān)死。</p><p>  3)當(dāng)動態(tài)滅燈輸入(RBI)和輸入端A、B、C、D都處于低電平而試燈輸入(LT)為高電平時,則所有段的輸出端進(jìn)入

51、關(guān)閉且動態(tài)滅燈輸出(RBO)處于低電平狀態(tài)。</p><p>  4)當(dāng)滅燈輸入/動態(tài)滅燈輸出(BI/RBO)開路或者保持在高電平狀態(tài),且將低電平加到試燈試燈輸入(LT)時,所有段的輸出都得打開。</p><p>  注:BI/RBO是用做滅燈(BI)與/或動態(tài)滅燈輸出(RBO)的線與邏輯。</p><p>  3.1.4 按鍵接口原理 </p>&

52、lt;p>  鍵盤往往分成編碼鍵盤和非編碼鍵盤,編碼鍵盤由按鍵和鍵處理電路組成,直接為計算機(jī)提供經(jīng)過編碼的按鍵鍵碼;而非編碼鍵盤則只提供按鍵,其余由計算機(jī)自己處理。非編碼鍵盤結(jié)構(gòu)簡單,可自由裁量設(shè)計,非常適用于單片應(yīng)用系統(tǒng)。</p><p>  1.按鍵特性與抖動處理</p><p>  按鍵是一種機(jī)械彈性開關(guān),當(dāng)鍵按下時閉合,松開時斷開。因為有機(jī)械的接觸,在觸點閉合或斷開的瞬間會出

53、現(xiàn)電壓抖動。為了避免鍵輸入錯誤,必須進(jìn)行鍵抖動的處理。去抖動由硬件和軟件兩種方法:硬件方法就是在鍵盤中附加去抖動電路消除抖動;而軟件方法則是采用時間延遲以躲避抖動,待觸點狀方法處理。</p><p><b>  2.鍵盤接口及功能</b></p><p>  非編碼鍵盤是所用按鍵組成的集合。為了保證鍵盤的正確輸入,鍵接口必備以下功能:</p><p

54、> ?。?)鍵掃描與識別,判斷有無鍵按下以及按鍵位置,鍵掃描與識別是通過“行掃描”與“列狀態(tài)”的配合來確定是否有鍵按下以及所在行、列的位置。所謂行掃描就是一次給每條行線送低電平,而其余各行線送高電平,并檢測對每一行掃描時所產(chǎn)生的列狀態(tài)。鍵盤掃描有下列三種方式:</p><p>  程控掃描方式:只有單片機(jī)空閑時才調(diào)用掃描程序響應(yīng)用戶鍵入請求。</p><p>  定時掃描方式:單片機(jī)

55、定時調(diào)用掃描程序?qū)︽I盤進(jìn)行掃描,即時響應(yīng)用戶鍵入請求。</p><p>  中斷掃描方式:與中斷請求電路配合,當(dāng)有鍵按下時產(chǎn)生中斷請求,由單片機(jī)響應(yīng)并執(zhí)行中斷服務(wù)程序掃描鍵盤。</p><p><b>  (2)去鍵抖動</b></p><p>  消除按鍵抖動帶來的誤輸入。檢測鍵關(guān)閉后,延時10ms后再檢測一次,兩次檢測相同再進(jìn)一步進(jìn)行鍵處理

56、。</p><p><b> ?。?)鍵編碼</b></p><p>  生成易于處理的鍵碼。由于鍵位碼比較零亂,因此接下來的工作是根據(jù)需要把反映閉合鍵和鍵位置的鍵位碼換乘反映鍵功能的鍵碼。有了鍵碼,才好通過散轉(zhuǎn)指令把程序執(zhí)行到閉合鍵所對應(yīng)的服務(wù)程序上去。鍵碼既可以根據(jù)鍵位碼查詢表求得,也可以根據(jù)鍵碼編排規(guī)律計算得到。</p><p><

57、b> ?。?)等待鍵釋放</b></p><p>  為了保證鍵一次閉合僅進(jìn)行一次處理,編鍵碼之后,再以延時掃描的方法等待鍵釋放。鍵釋放后鍵處理工作完成。</p><p>  3.2 硬件電路設(shè)計</p><p>  硬件部分的設(shè)計是整個設(shè)計的一個很重要的部分。在進(jìn)行硬件設(shè)計時,首先要確定元器件,并且知道這些元器件的工作原理和功能,然后才可以進(jìn)行設(shè)

58、計。本設(shè)計的主要硬件電路包括三個部分:計時顯示電路、計分顯示電路、鳴笛警示電路。一般來說,對硬件部分的設(shè)計都應(yīng)包括繪制SCH原理圖和PCB印刷圖,由于本次設(shè)計我主要負(fù)責(zé)軟件部分的設(shè)計,硬件參與得不是很多,所以硬件部分元器件的功能就不詳細(xì)介紹了。</p><p>  3.2.1 元器件的選擇[3]</p><p>  本設(shè)計主要選擇了以下元器件:如表3-3所示:</p><

59、;p>  表3-3 元器件列表</p><p>  3.2.2 計時顯示屏的設(shè)計</p><p>  計時電路主要由計時按鍵、單片機(jī)STC89C52、譯碼器74LS247、4位共陽極的數(shù)碼管以及反相器7404構(gòu)成。P1.0-P1.3分別控制計時數(shù)碼管的4個位的位線,P1.6和P1.7分別連接計時器時間的十位和個位的初值按鈕,P0.0-P0.3分別與74LS247的輸入端A、B、C、

60、D相連接,74LS247的QA、QB、QC、QD、QE、QF、QG分別與計時數(shù)碼管的a、b、c、d、e、f、g七段的陰極相連接,用74LS247驅(qū)動4位數(shù)碼管的動態(tài)顯示。設(shè)計出的計時顯示電路如下圖3-3所示:</p><p>  圖3-3 計時顯示屏電路圖</p><p>  3.2.3計分顯示屏的設(shè)計</p><p>  計分電路主要由四個計分按鍵、單片機(jī)STC

61、89C52、譯碼器74LS247、兩個4位共陽極的數(shù)碼管以及反相器7404構(gòu)成。P2.0-P2.3分別控制B隊計分?jǐn)?shù)碼管的4個位的位線,P2.4-P2.7分別控制A隊計分?jǐn)?shù)碼管的4個位的位線,P0.0-P0.3分別與74LS247的輸入端A、B、C、D相連接,74LS247的QA、QB、QC、QD、QE、QF、QG分別與計時數(shù)碼管的a、b、c、d、e、f、g七段的陰極相連接,用74LS247驅(qū)動4位數(shù)碼管的動態(tài)顯示。設(shè)計出的計分顯示電路

62、如下圖3-4所示:</p><p>  圖3-4 計分顯示屏電路圖</p><p>  3.2.4 鳴笛器的設(shè)計</p><p>  鳴笛警示電路如下圖3-5所示,采用蜂鳴器作為音響器件,該電路主要由單片機(jī)、蜂鳴器、按鍵以及反相器構(gòu)成。P1.4接蜂鳴器,用一個按鍵接到P2.3上,當(dāng)按下該按鍵時,產(chǎn)生一個外部中斷,蜂鳴器發(fā)出警報聲。</p><p

63、>  圖3-5 鳴笛器電路圖</p><p><b>  3.3 本章小結(jié)</b></p><p>  本章設(shè)計了以8位單片機(jī)STC89C52為核心的籃球計分屏硬件平臺方案,并搭建了相應(yīng)的I/O口控制按鍵電路、顯示電路、鳴笛警示等外圍電路,實現(xiàn)一個簡易的籃球賽計分屏硬件部分的設(shè)計。</p><p><b>  系統(tǒng)軟件設(shè)計&l

64、t;/b></p><p>  本系統(tǒng)是利用單片機(jī)的定時功能來進(jìn)行時間處理,實現(xiàn)計時顯示功能,利用單片機(jī)的計數(shù)功能來進(jìn)行分?jǐn)?shù)處理,實現(xiàn)計分顯示功能,對時間和分?jǐn)?shù)進(jìn)行處理的過程中,要通過中斷來控制實現(xiàn),當(dāng)有按鍵按下時,計分器就會有相應(yīng)的加分減分處理,然后通過數(shù)碼管顯示器動態(tài)掃描并顯示出來。通過發(fā)聲的原理和規(guī)律,利用單片機(jī)的I/O口輸出高低電平,產(chǎn)生矩形波,外接喇叭就會發(fā)出一定頻率的聲音,從而實現(xiàn)鳴笛功能。&l

65、t;/p><p>  4.1 軟件設(shè)計原理</p><p>  4.1.1定時器/計數(shù)器[2]</p><p>  51單片機(jī)內(nèi)部有兩個16位可編程的定時器/計數(shù)器,分別稱為定時器/計數(shù)器0和定時器/計數(shù)器1,它們具有四種工作方式,其控制字和狀態(tài)均在相應(yīng)的特殊功能寄存器中,通過對控制寄存器的編程,就可方便地選擇適當(dāng)?shù)墓ぷ鞣绞?。特殊控制器有工作方式控制寄存器(TMOD),

66、定時/計數(shù)器控制寄存器(TCON),中斷允許控制寄存器IE。</p><p>  定時/計數(shù)器的核心是的16位加法計數(shù)器,定時器T0的加法計數(shù)器用特殊功能寄存器TH0、TL0表示,TH0表示加法計數(shù)器的高8位,TL0表示加法計數(shù)器的低8位。TH1和TL1則分別表示定時/計數(shù)器T1的高8位和低8位。它們均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。它們用于存放定時或計數(shù)的初始值。此外,內(nèi)部還有一個8位的工

67、作方式寄存器TMOD和一個8位的控制寄存器TCON,用于選擇和控制定時/計數(shù)器的工作。這些寄存器可根據(jù)需要由程序讀寫。</p><p>  當(dāng)然16位加法計數(shù)器的輸入端每輸入一個脈沖,16位加法計數(shù)器的值自動加1,當(dāng)計數(shù)器的計數(shù)值超過加法計數(shù)器字長所能表示的二進(jìn)制數(shù)的范圍而向第17位進(jìn)位,即計數(shù)溢出時,置位定時中斷請求標(biāo)志,向CPU申請中斷。</p><p>  1、工作方式寄存器TMOD

68、</p><p>  TMOD用于控制T0和T1的工作方式,其格式如表4-1所示:</p><p>  表4-1 方式控制寄存器TMOD</p><p><b>  各位定義如下:</b></p><p>  M1,MO:工作方式控制位,可構(gòu)成表4-2所示四種工作方式:</p><p>  表4

69、-2 方式控制寄存器TMOD的工作方式</p><p>  C/:計數(shù)工作方式/定時工作方式選擇位。置0時,設(shè)置為定時工作方式;置1時,設(shè)置為計數(shù)工作方式。</p><p>  GATE:門控位,用以決定是由軟件還是硬件啟動/停止計數(shù)。GATE=0, /被封鎖,只要用軟件對TR0(或TR1)置“1”就啟動了定時器;GATA=1時,定時器/計數(shù)器的計數(shù)受外部引腳輸入電平的控制。</p

70、><p>  TMOD的所有位在復(fù)位后清0。TMOD不能位尋址,只能按字節(jié)操作設(shè)置工作方式。</p><p>  2、定時/計數(shù)控制寄存器TCON</p><p>  TFl,TRl,TF0和TR0位用于定時器/計數(shù)器;IEl,ITl,IE0和IT0位用于中斷系統(tǒng)。其格式如表4-3所示:</p><p>  表4-3 控制寄存器TCON<

71、/p><p><b>  各位定義如下:</b></p><p>  TF1:定時器1溢出標(biāo)志位。當(dāng)定時器1計滿溢出時,由硬件使TF1置“1”,并且申請中斷。進(jìn)入中斷服務(wù)程序后,由硬件自動清“0”,在查詢方式下用軟件清“0”。</p><p>  TR1:定時器1運行控制位。由軟件清“0”關(guān)閉定時器1。當(dāng)GATE=1,且為高電平時,TR1置“1”啟

72、動定時器1;當(dāng)GATE=0,TR1置“1”啟動定時器1。</p><p>  TF0:定時器0溢出標(biāo)志。其功能及操作情況同TF1。</p><p>  TR0:定時器0運行控制位。其功能及操作情況同TR1。</p><p>  IE1:外部中斷1請求標(biāo)志位。</p><p>  IT1:外部中斷1觸發(fā)方式選擇位。當(dāng)IT1=0,為低電平觸發(fā)方式

73、;當(dāng)IT1=1,為下降沿觸發(fā)方式。</p><p>  IE0:外部中斷0請求標(biāo)志位。</p><p>  IT0:外部中斷0觸發(fā)方式選擇位。 當(dāng)IT0=0,為低電平觸發(fā)方式;當(dāng)IT0=1,為下降沿觸發(fā)方式。</p><p>  TCON中低4位與中斷有關(guān)。由于TCON是可以位尋址的,因而如果只清溢出或啟動定時器工作,可以用位操作命令。</p><

74、;p>  4.1.2發(fā)音原理及音樂知識[4]</p><p><b>  1. 聲音的產(chǎn)生</b></p><p>  我們知道,聲音的產(chǎn)生是一種音頻振動的效果。振動的頻率越高,則為高音;振動的頻率越低,則為低音。聲音的頻率范圍為20Hz-200kHz之間,人類耳朵比較容易辨識的聲音頻率范圍是200Hz-20kHz,一般音響電路是用正旋波信號驅(qū)動喇叭,從而產(chǎn)生悅

75、耳的音樂;在數(shù)字電路里,則是用數(shù)字脈沖信號驅(qū)動喇叭,從而產(chǎn)生聲音。若要STC89C52產(chǎn)生聲音,可利用程序來控制單片機(jī)某個I/O口的“高”電平或者“低”電平,則在該I/O口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”、“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào)。</p><p>  2. 音調(diào)(音階)的產(chǎn)生</p><p>  若以頻率

76、來表示聲音,有點抽象,又有點無趣,通常是以Do、Re、Mi、Fa、So、La、Si、Do分別代表某一頻率的聲音,我們稱之為“音調(diào)”,如表4-4所示,為C調(diào)音符頻率對照表,它包括3個音階(高音、中音、低音)。一首音樂是由許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率組合,構(gòu)成想要的音樂了。當(dāng)然對于單片機(jī)來說,產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器T0來產(chǎn)生這樣的方波頻率信號。因此,我們只要

77、把一首歌曲的音階對應(yīng)頻率關(guān)系確定即可。</p><p>  表4-4 C調(diào)各音符頻率對照表</p><p><b>  3. 節(jié)拍的產(chǎn)生</b></p><p>  若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動),而且可以調(diào)節(jié)各個音的快慢速度?!肮?jié)拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或其

78、他動作。若1拍為0.4s,則1/4 拍為0.1s,其他節(jié)拍都是它的倍數(shù),只要設(shè)定延時時間即可。至于1拍多少s,并沒有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點,有些人慢一點,只要聽的悅耳就好。</p><p>  節(jié)拍也是用延時子程序或者定時器中斷來實現(xiàn)的。如1/4 拍一次延時0.1s,1拍延時4次0.1s。</p><p>  4.2 系統(tǒng)軟件設(shè)計[6]<

79、;/p><p>  4.2.1 系統(tǒng)主程序設(shè)計</p><p>  在主程序循環(huán)中,主要工作是掃描是否有鍵按下,若有鍵按下則要確認(rèn)是哪個鍵按下并做相應(yīng)的處理,并做同步顯示處理。</p><p>  void main(void)</p><p><b>  {</b></p><p>  TMOD=0

80、x01; //設(shè)置T0為工作方式1,作為16位計數(shù)器</p><p>  TH0=(65535-50000)/256; //設(shè)置T0的高8位,并且T0的計數(shù)值為50ms</p><p>  TL0=(65535-50000)%256; //設(shè)置T0的低8位</p><p>  music=0;

81、 //初值喇叭不響</p><p>  EA=1; //開放所有中斷</p><p>  ET0=1; //允許定時/計數(shù)器T0溢出中斷</p><p>  EX0=1; //允許外

82、部中斷0</p><p>  IT0=1; //設(shè)置外部中斷0為邊沿觸發(fā)方式(下降沿)</p><p>  while(1) //無窮循環(huán),程序一直運行</p><p><b>  {</b></p><p>  Key_Y();

83、 //預(yù)置場次比賽時間</p><p>  if(Star==0) //按下"開始鍵",設(shè)置好比賽時間,,比賽正式開始</p><p><b>  {</b></p><p>  TR0=1; //啟動定時器T0,開始計時</p><p&g

84、t;  Key_if(); //開始計分</p><p><b>  } </b></p><p>  if(f==0&&m==0||Puse==0)</p><p><b>  {</b></p><p>  TR0=0; //比賽還未開始

85、或比賽結(jié)束時間到,停止計時</p><p><b>  }</b></p><p>  Js_Jf_Scan(); //將相應(yīng)的分?jǐn)?shù)、時間同步進(jìn)行顯示</p><p><b>  }</b></p><p><b>  }</b></p>

86、;<p>  4.2.2 時間顯示設(shè)計</p><p>  系統(tǒng)要實現(xiàn)時間的計時功能,所以要用定時/計數(shù)器的定時功能進(jìn)行時間處理,在本程序設(shè)計中,用一個定時50ms的時間中斷函數(shù)void Js_50ms(void),一個時間處理函數(shù)void Ptime(uchar)。</p><p>  由于時間顯示屏用的是4位的數(shù)碼管進(jìn)行顯示,用動態(tài)掃描顯示驅(qū)動,用void Js_Jf_S

87、can(void)處理動態(tài)掃描顯示。</p><p>  時間預(yù)置用按鍵實現(xiàn),首先進(jìn)行按鍵判斷處理,用void Key_Y(void)函數(shù)處理。</p><p>  籃球計分器實現(xiàn)時間顯示屏的部分源程序如下:</p><p>  *******************設(shè)置場次比賽時間********************/</p><p>

88、  void Key_Y(void)</p><p><b>  {</b></p><p>  if(YK1==0) //初始狀態(tài),分鐘的十位為0</p><p><b>  {</b></p><p>  delay(1); </p>&l

89、t;p>  while(!YK1) ; </p><p>  fs=fs+1; //分十位加1分 </p><p>  if(fs==10)</p><p>  fs=0; //延時去抖動</p><p><b>  }</b></p>

90、<p>  if(YK2==0) //初始狀態(tài),分鐘的個位為0</p><p>  { delay(1);</p><p>  while(!YK2) ; //延時去抖動</p><p><b>  fg=fg+1;</b></p>

91、<p>  if(fg==10)</p><p><b>  fg=0;}</b></p><p>  fy=fs*10+fg; //求出預(yù)置時間的分鐘值</p><p>  f=fy; //中間變量</p><p><b> 

92、 }</b></p><p>  /********T0中斷服務(wù)函數(shù),每隔50ms產(chǎn)生一次中斷********/</p><p>  void Js_50ms(void)interrupt 1 using 1 //定時器T0中斷,用工作寄存器組1</p><p><b>  { </b></p><p> 

93、 TH0=(65535-50000)/256; //定時器T0的高8位</p><p>  TL0=(65535-50000)%256; //定時器T0的低8位</p><p>  num++; //每50ms累加一次</p><p>  Ptime(num);

94、 //調(diào)用時間處理函數(shù)</p><p><b>  }</b></p><p>  /**********************時間處理函數(shù)********************/</p><p>  void Ptime(uchar time)</p><p><b>  { </b>&

95、lt;/p><p>  if(time==20) </p><p><b>  {</b></p><p><b>  num=0;</b></p><p><b>  m--;</b></p><p>  if(m==-1)

96、 </p><p><b>  { </b></p><p>  m=59; </p><p><b>  f--; </b></p><p><b>  if(f==-1)</b></p><p>  f=0;

97、 </p><p>  } </p><p>  ms=m/10; </p><p>  mg=m%10; </p><p>  fs=f/10; </p><p>  fg=f%10; </p><

98、;p><b>  }</b></p><p><b>  }</b></p><p>  4.2.3 計分顯示設(shè)計</p><p>  本系統(tǒng)是利用按鍵來實現(xiàn)兩隊的計分功能的,當(dāng)按一次加分鍵,在程序中要用兩個整形的變量作為A、B隊的分值計分器,程序里用sum及sum1分別表示B和A隊的分值。</p>&

99、lt;p>  如分別要在數(shù)碼管的每位上動態(tài)掃描顯示出來,就必須對兩隊所得的分?jǐn)?shù)進(jìn)行分位計算。程序里分別用q、b、s、g表示B隊顯示屏的千位、百位、十位、個位;用q1、b1、s1、g1表示A隊顯示屏的千位、百位、十位、個位。通過按鍵判斷處理,判斷是加分還是減分,用函數(shù)void Key_if(void)來實現(xiàn),用void Js_Jf_Scan(void)函數(shù)進(jìn)行動態(tài)掃描顯示分值。</p><p>  籃球計分器

100、顯示的部分實現(xiàn)程序如下:</p><p>  /******************數(shù)碼管動態(tài)掃描顯示******************/</p><p>  void Js_Jf_Scan(void)</p><p><b>  {</b></p><p><b>  uchar j;</b>&

101、lt;/p><p>  for(j=0;j<=5;j++)</p><p><b>  {</b></p><p>  KL4=0;P0=LED_Num[g1];delay(1);KL4=1; /*將A隊分?jǐn)?shù)的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  KL3=0

102、;P0=LED_Num[s1];delay(1);KL3=1; /*將A隊分?jǐn)?shù)的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  KL2=0;P0=LED_Num[b1];delay(1);KL2=1; /*將A隊分?jǐn)?shù)的百位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  KL1=0;P0=LE

103、D_Num[q1];delay(1);KL1=1; /*將A隊分?jǐn)?shù)的千位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  CL4=0;P0=LED_Num[g];delay(1);CL4=1; /*將B隊分?jǐn)?shù)的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  CL3=0;P0=LED_Num[

104、s];delay(1);CL3=1; /*將B隊分?jǐn)?shù)的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  CL2=0;P0=LED_Num[b];delay(1);CL2=1; /*將B隊分?jǐn)?shù)的百位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  CL1=0;P0=LED_Num[q];d

105、elay(1);CL1=1; /*將B隊分?jǐn)?shù)的千位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  S4=0;P0=LED_Num[mg];delay(1);S4=1; /*將秒鐘的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  S3=0;P0=LED_Num[ms];delay(1);S

106、3=1; /*將秒鐘的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  S2=0;P0=LED_Num[fg];delay(1);S2=1; /*將分鐘的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p>  S1=0;P0=LED_Num[fs];delay(1);S1=1; /*將分鐘的

107、十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****************判斷是哪個隊加分或者減分*****************/</p><p>  vo

108、id Key_if(void)</p><p><b>  {</b></p><p>  if(Key1==0) //當(dāng)按鍵按下時</p><p><b>  {</b></p><p><b>  delay(5);</b><

109、/p><p>  while(!Key1); //延時去抖動</p><p>  sum=sum+1; //B隊加1分</p><p><b>  }</b></p><p>  if(Key2==0 && sum>=1)

110、 //減分按鍵按下并且中得分不得少于1分</p><p><b>  {</b></p><p>  delay(5); //延時去抖動</p><p>  while(!Key2);</p><p>  sum=sum-1; //

111、B隊減1分</p><p><b>  }</b></p><p>  if(Key3==0) //當(dāng)按鍵按下時</p><p><b>  {</b></p><p>  delay(1); //延時去抖動</

112、p><p>  while(!Key3);</p><p>  sum1=sum1+1; //A隊加1分</p><p><b>  }</b></p><p>  if(Key4==0 && sum1>=1) //減分按鍵按下并且中得分不得少于1分</

113、p><p><b>  {</b></p><p>  delay(1); //延時去抖動</p><p>  while(!Key4);</p><p>  sum1=sum1-1; //A隊減1分</p><p><b>

114、;  }</b></p><p>  q=0; // A隊分值的千位默認(rèn)為0</p><p>  b=sum/100; //求出A隊分值的百位</p><p>  s=sum/10-b*10; //求出A隊分值的十位<

115、/p><p>  g=sum%10; //求出A隊分值的個位</p><p>  q1=0; // B隊分值的千位默認(rèn)為0</p><p>  b1=sum1/100; //求出B隊分值的百位</p><p>  s

116、1=sum1/10-b1*10; //求出B隊分值的十位</p><p>  g1=sum1%10; //求出B隊分值的個位</p><p><b>  }</b></p><p>  4.2.4 鳴笛器設(shè)計</p><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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論