版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢 業(yè) 設(shè) 計(jì)</b></p><p> Graduation Design </p><p> ?。?008 —2012 年)</p><p> 題 目 嵌入式籃球賽計(jì)分屏的設(shè)計(jì) </p><p><b>
2、 100</b></p><p><b> 摘 要</b></p><p> 進(jìn)入21世紀(jì),伴隨著電子,信息通信技術(shù)的應(yīng)用與普及開發(fā),人們對(duì)電子技術(shù)的要求也越來越高。目前嵌入式單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,由于它具有功能強(qiáng)大,體積小,功耗低,可靠性高,易擴(kuò)展,性價(jià)比高,使用方便等特點(diǎn),因此它廣泛應(yīng)用于工業(yè)控制,智能儀表等有關(guān)系統(tǒng)設(shè)備。</
3、p><p> 本設(shè)計(jì)主要利用單片機(jī)AT89C51作為核心元件,利用3組4位共陽極的數(shù)碼管作為顯示器件,以C語言作為編程語言,在Protues和Keil搭建的軟件仿真平臺(tái)下進(jìn)行仿真,本設(shè)計(jì)包含了AT89C51系列單片機(jī)的最小系統(tǒng)的構(gòu)成,同時(shí)在此基礎(chǔ)上擴(kuò)展了一些實(shí)用性強(qiáng)的外圍接口,可以進(jìn)一步了解譯碼器74LS247的應(yīng)用,LED七段數(shù)碼管的結(jié)構(gòu)和工作原理,主要實(shí)現(xiàn)了計(jì)時(shí)和顯示A/B隊(duì)的分?jǐn)?shù),并能及時(shí)進(jìn)行加分,減分,鳴笛
4、警示等功能。</p><p> 系統(tǒng)設(shè)計(jì)完成后應(yīng)有成本低廉、性能穩(wěn)定、高準(zhǔn)確度顯示、操作方便且易攜帶等特點(diǎn)。廣泛適合各類學(xué)校和小團(tuán)體作為賽程計(jì)分。</p><p> 關(guān)鍵詞:嵌入式;籃球賽計(jì)分屏;AT89C51;74LS247;七段數(shù)碼管;仿真</p><p><b> Abstract</b></p><p>
5、 Entering the twenty-first Century, along with the more and more popularization application of the electronics, information and communication technology, people’s requirement is more and more high in the electronic techn
6、ology, The embedded microcontroller is penetrating into every aspect of our lives with its strong function, small volume, low power consumption, high liability, easy expansion, high performance-price ratio, use convenien
7、t and so on , so it is widely used in industrial controlment,</p><p> The core element of the design is AT89C51, 3 groups of 4 bit common anode digital tube is display devices. The design is using C langua
8、ge, simulating in a software simulation platform between Proteus and Keil, the design included the AT89C51Series MCU minimum system, and at the same time the design expanded some practical peripheral interface to deeply
9、understand the application of 74LS247, LED seven digital tube structure and its working principle, and the display interface communication.The d</p><p> After finishing system design,it should be low cost,
10、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 the tournament scoring.</p><p> Keywords: Embedded; Basketb
11、all scoring screen; AT89C51;74LS247;LED;Simulation</p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p> Abstract2</p><p><b> 目 錄
12、3</b></p><p><b> 第一章 緒論1</b></p><p><b> 1.1 引言1</b></p><p> 1.2 國(guó)內(nèi)外研究現(xiàn)狀及發(fā)展趨勢(shì)1</p><p> 第二章 系統(tǒng)總體方案設(shè)計(jì)3</p><p> 2.1 系統(tǒng)
13、硬件方案設(shè)計(jì)3</p><p> 2.2 系統(tǒng)軟件方案設(shè)計(jì)4</p><p> 2.3 本章小結(jié)5</p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)6</p><p> 3.1 硬件設(shè)計(jì)原理6</p><p> 3.1.1 AT89C51簡(jiǎn)介6</p><p> 3.1.2 數(shù)碼
14、管動(dòng)態(tài)掃描顯示原理8</p><p> 3.1.3 BCD——七段數(shù)碼管驅(qū)動(dòng)/譯碼器9</p><p> 3.1.4按鍵接口原理10</p><p> 3.2 硬件電路設(shè)計(jì)11</p><p> 3.2.1 元器件的選擇12</p><p> 3.2.2 計(jì)時(shí)顯示屏的設(shè)計(jì)12</p>
15、<p> 3.2.3 計(jì)分顯示屏的設(shè)計(jì)13</p><p> 3.2.4 鳴笛器的設(shè)計(jì)13</p><p> 3.3 本章小結(jié)14</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)15</p><p> 4.1 軟件設(shè)計(jì)原理15</p><p> 4.1.1 定時(shí)器/計(jì)數(shù)器15</p&
16、gt;<p> 4.1.2 發(fā)音原理及音樂知識(shí)17</p><p> 4.2 系統(tǒng)軟件設(shè)計(jì)18</p><p> 4.2.1 系統(tǒng)主程序設(shè)計(jì)18</p><p> 4.2.2 時(shí)間顯示設(shè)計(jì)18</p><p> 4.2.3 計(jì)分顯示設(shè)計(jì)21</p><p> 4.2.4 鳴笛器的設(shè)計(jì)
17、22</p><p> 4.3 本章小結(jié)23</p><p> 第五章 Keil C與Protues聯(lián)調(diào)及仿真24</p><p> 5.1 Keil C與Protues簡(jiǎn)介24</p><p> 5.2 Keil C與Protues聯(lián)調(diào)及仿真24</p><p> 5.3 本章小結(jié)27<
18、/p><p> 第六章 總結(jié)28</p><p><b> 參考文獻(xiàn)29</b></p><p><b> 附 錄30</b></p><p><b> 致 謝37</b></p><p><b> 第一章 緒
19、論</b></p><p><b> 1.1 引言 </b></p><p> 進(jìn)入21世紀(jì),伴隨著電子,信息通信技術(shù)的應(yīng)用與普及開發(fā),人們對(duì)電子技術(shù)的要求也越來越高,目前嵌入式單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域。[1]單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù),把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/
20、O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。按照歷史性、本質(zhì)性、普遍性要求,嵌入式系統(tǒng)應(yīng)定義為:“嵌入到對(duì)象體系中的專用計(jì)算機(jī)系統(tǒng)”,可分軟件部分和硬件部分,而當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在單片機(jī)上。所以,以MCU為核心,就是各種各樣的單片機(jī),是嵌入式硬件部分的實(shí)現(xiàn)方式之一,它主要是因?yàn)榘烟幚砥骱痛鎯?chǔ)器等部件集成在一塊芯片上。</p>
21、;<p> 體育比賽計(jì)時(shí)計(jì)分器是對(duì)體育比賽過程中所產(chǎn)生的時(shí)間、比分等數(shù)據(jù)進(jìn)行快速采集記錄、加工處理、傳遞利用的工具?;@球比賽的計(jì)時(shí)計(jì)分器是一種得分類型的工具。雖然籃球比賽中很早就開始研究應(yīng)用了電子計(jì)分器,但通常都是利用模擬電子器件、數(shù)字電子器件或是模擬、數(shù)字混合組成的,其穩(wěn)定性和高準(zhǔn)確度計(jì)分仍存在一些問題。以嵌入式單片機(jī)為核心,利用3組4位共陽極的數(shù)碼管作為顯示器件的籃球比賽計(jì)分屏,計(jì)分準(zhǔn)確,具有體積小,重量輕,能耗低,
22、價(jià)格便宜,可靠性高,抗干擾能力強(qiáng)和使用方便等獨(dú)特的優(yōu)點(diǎn)。</p><p> 1.2 國(guó)內(nèi)外研究現(xiàn)狀及發(fā)展趨勢(shì)</p><p> 伴隨著科技的日新月異,各式各樣的電子產(chǎn)品的問世和發(fā)展層出不窮,籃球計(jì)分屏是一個(gè)無處不在的電子產(chǎn)品,經(jīng)過多年的發(fā)展,技術(shù)已經(jīng)相當(dāng)成熟了。根據(jù)目前高水平籃球比賽要求,完善的籃球比賽計(jì)時(shí)系統(tǒng)設(shè)備應(yīng)能夠與現(xiàn)場(chǎng)成績(jī)處理,現(xiàn)場(chǎng)大屏幕,電視轉(zhuǎn)播車等多種設(shè)備相聯(lián),以便實(shí)現(xiàn)高比
23、賽現(xiàn)場(chǎng)感,表演娛樂觀眾等功能目標(biāo)。隨著電子技術(shù)的產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,生產(chǎn)工藝的飛速發(fā)展和籃球的廣泛推廣,市場(chǎng)對(duì)籃球計(jì)分器的需求也越來越大。本設(shè)計(jì)用AT89C51嵌入式單片機(jī)編程控制LED七段數(shù)碼管作顯示,設(shè)計(jì)籃球賽計(jì)分屏,嵌入式單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保
24、障系統(tǒng),錄象機(jī)、攝象機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。</p><p> 隨著單片機(jī)的發(fā)展,人們對(duì)事物的要求越來越高,單片機(jī)的應(yīng)用軟件技術(shù)也發(fā)生了巨大的變化,從最初的匯編語言,開始演變到C語言開發(fā),不但增加了語言的可讀性,結(jié)構(gòu)性,而且對(duì)于跨平臺(tái)的移植也提供了方便,另外一些復(fù)雜的系統(tǒng)開始在單片機(jī)上采用操作系統(tǒng),一些小的RTO
25、S等,一方面加速了開發(fā)人員的開發(fā)速度,節(jié)約開發(fā)成本,另外也為更復(fù)雜的實(shí)現(xiàn)提供了可能。當(dāng)前比較流行的RTOS有:WINCE,uClinux,Linux,uC/OS等等。</p><p> 第二章 系統(tǒng)總體方案設(shè)計(jì)</p><p> 本設(shè)計(jì)主要利用單片機(jī)AT89C51作為核心元件,利用3組4位共陽極的數(shù)碼管作為顯示器件,分別用于記錄A、B兩隊(duì)的分?jǐn)?shù),以及賽程時(shí)間,每個(gè)隊(duì)的數(shù)碼管顯示分?jǐn)?shù)范
26、圍可達(dá)到0—9999分,足夠滿足賽程需要。以C語言作為編程語言,在Protues和Keil搭建的軟件仿真平臺(tái)下進(jìn)行仿真,本設(shè)計(jì)包含了AT89C51系列單片機(jī)的最小系統(tǒng)的構(gòu)成,同時(shí)在此基礎(chǔ)上擴(kuò)展了一些實(shí)用性強(qiáng)的外圍接口,可以進(jìn)一步了解譯碼器74LS247的應(yīng)用,LED七段數(shù)碼管的結(jié)構(gòu)和工作原理,主要實(shí)現(xiàn)了計(jì)時(shí)和顯示A/B隊(duì)的分?jǐn)?shù),并能及時(shí)進(jìn)行加分,減分,鳴笛警示等功能[3]。</p><p> 2.1 系統(tǒng)硬件方
27、案設(shè)計(jì)</p><p> 該系統(tǒng)硬件電路包括:?jiǎn)纹瑱C(jī)AT89C51、時(shí)鐘電路、復(fù)位電路、電源電路、按鍵控制電路、計(jì)分電路、計(jì)時(shí)電路、報(bào)警電路。軟件包括用Keil 進(jìn)行C語言編程,用Protues進(jìn)行仿真,具體系統(tǒng)硬件結(jié)構(gòu)框圖如圖2-1所示。 </p><p> 圖2-1 籃球賽計(jì)分器的硬件結(jié)構(gòu)框圖</p><p> 2.2 系統(tǒng)軟件方案設(shè)計(jì)</p>
28、;<p> 軟件部分要求實(shí)現(xiàn)的功能有:開始時(shí)所有顯示屏都顯示0;有預(yù)置比賽時(shí)間的功能;具有AB兩隊(duì)分別計(jì)分的功能;有鳴笛警示功能;只有當(dāng)預(yù)置時(shí)間后,并按開始按鈕,計(jì)時(shí)器才能開始計(jì)時(shí),只有當(dāng)開始計(jì)時(shí)后,AB兩隊(duì)才能加分等。[3]結(jié)合數(shù)碼管以及51單片機(jī)計(jì)數(shù)器的工作實(shí)現(xiàn)方式、接口應(yīng)用、中斷控制等可設(shè)計(jì)出程序流程圖如下圖2-2所示:</p><p> 圖2-2 主程序流程圖</p>&
29、lt;p><b> 2.3 本章小結(jié)</b></p><p> 本章主要闡述了本設(shè)計(jì)的總體設(shè)計(jì)方案,通過模塊化的設(shè)計(jì)來實(shí)現(xiàn)硬件部分的功能,軟件部分的實(shí)現(xiàn)主要通過控制單片機(jī)的I/O口和相應(yīng)按鍵操作來完成,先確定系統(tǒng)總體方案,后續(xù)章節(jié)的詳細(xì)方案設(shè)計(jì)就迎刃而解了。</p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)</p><p> 設(shè)計(jì)一個(gè)基于
30、嵌入式單片機(jī)的籃球賽計(jì)分屏,初步確定本設(shè)計(jì)的總體框架結(jié)構(gòu),再根據(jù)具體設(shè)計(jì)要求選定合適的設(shè)計(jì)方案以及選取合適的元器件進(jìn)行系統(tǒng)硬件設(shè)計(jì)。具體設(shè)計(jì)概念如下:</p><p> 選擇AT89C51型單片機(jī),通過不同的I/O口控制按鍵電路、顯示電路、鳴笛警示電路等部分,設(shè)計(jì)一個(gè)簡(jiǎn)易的籃球賽計(jì)分屏。</p><p> 3.1 硬件設(shè)計(jì)原理</p><p> 3.1.1 A
31、T89C51簡(jiǎn)介[2]</p><p> AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM——Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功
32、能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C51是它的一種精簡(jiǎn)版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖3-1所示:</p><p> 圖3-1 AT89C51外形及引腳排列</p><p><b> 主要特性:</b></p><p&
33、gt; ·與MCS-51 兼容</p><p> ·4K字節(jié)可編程FLASH存儲(chǔ)器</p><p> ·壽命:1000寫/擦循環(huán)</p><p> ·數(shù)據(jù)保留時(shí)間:10年</p><p> ·全靜態(tài)工作:0Hz-24MHz</p><p> ·三級(jí)
34、程序存儲(chǔ)器鎖定</p><p> ·128×8位內(nèi)部RAM</p><p> ·32可編程I/O線</p><p> ·兩個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b> ·5個(gè)中斷源</b></p><p><b>
35、3;可編程串行通道</b></p><p> ·低功耗的閑置和掉電模式</p><p> ·片內(nèi)振蕩器和時(shí)鐘電路</p><p><b> 管腳說明:</b></p><p><b> VCC:供電電壓。</b></p><p><
36、;b> GND:接地。</b></p><p> P0口:P0口的8位皆為漏極開路輸出簡(jiǎn)稱OD;內(nèi)部無上拉電阻,所以執(zhí)行輸出功能時(shí),外部必須接上拉電阻;若要實(shí)現(xiàn)輸入功能,必須先輸入高電平“1”,才能讀取該端口所連接的外部數(shù)據(jù);若系統(tǒng)連接外部存儲(chǔ)器,則P0可作為地址總線和數(shù)據(jù)總線的多功能引腳,此時(shí)內(nèi)部具有上拉電阻,無需外接上拉電阻。</p><p> P1口:P1口
37、為8位,可位尋址的雙向I/O口;內(nèi)部具備約30千歐姆的上拉電阻,實(shí)現(xiàn)輸出功能時(shí),不需要連接外部上拉電阻;實(shí)現(xiàn)輸入功能時(shí),必須先輸入高電平“1”,才能讀取該端口所連接的外部數(shù)據(jù);P1口的8位類似漏極開路輸出,但內(nèi)部已接上上拉電阻,每個(gè)引腳可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。</p><p> P2口:P2口為8位、可位尋址的雙向輸入/輸出口,內(nèi)部具備約30千歐姆的上拉電阻,實(shí)現(xiàn)輸出功能時(shí),不需要連接外部上拉電阻;實(shí)現(xiàn)輸入
38、功能時(shí),必須先輸入高電平“1”,才能讀取該端口所連接的外部數(shù)據(jù);P2口的8位類似漏極開路輸出,但內(nèi)部已接上上拉電阻,每個(gè)引腳可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載;若系統(tǒng)連接外部存儲(chǔ)器,而外部存儲(chǔ)器的地址線超過了8根時(shí),則P2可作為地址總線(A8-A15)的引腳。</p><p> P3口:P3口為8位,可位尋址的雙向I/O口;內(nèi)部具備約30千歐姆的上拉電阻,實(shí)現(xiàn)輸出功能時(shí),不需要連接外部上拉電阻;實(shí)現(xiàn)輸入功能時(shí),必須先輸
39、入高電平“1”,才能讀取該端口所連接的外部數(shù)據(jù);P3口的8位類似漏極開路輸出,但內(nèi)部已接上上拉電阻,每個(gè)引腳可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口也可作為AT89C51的一些特殊功能口,如下表3-1所示:</p><p> 表3-1 AT89C51的一些特殊功能口</p><p> RST:復(fù)位信號(hào)。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間,用以完成單片機(jī)的復(fù)位初始化操
40、作。</p><p> ALE/:地址鎖存控制信號(hào)。在系統(tǒng)擴(kuò)展,訪問外部存儲(chǔ)器時(shí),ALE用于控制把P0口輸出的低8位的地址鎖存起來,以實(shí)現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振1/6的固定頻率輸出脈沖,因此可作為外部時(shí)鐘或者外部定時(shí)脈沖使用。ALE只有在執(zhí)行MOVX,MOVC指令時(shí),ALE才起作用。</p><p> ?。和獠砍绦虼鎯?chǔ)器讀選通信號(hào)。在讀外部ROM時(shí),有效(低電平有
41、效),以實(shí)現(xiàn)外部ROM的讀操作。在具體應(yīng)用時(shí),外部ROM讀取時(shí),在每個(gè)機(jī)器周期會(huì)動(dòng)作兩次,外部RAM讀取時(shí),兩個(gè)信號(hào)被跳過不會(huì)輸出。</p><p> /VPP:訪問程序存儲(chǔ)控制信號(hào)。當(dāng)信號(hào)保持低電平時(shí),對(duì)ROM的讀操作僅僅限定在外部程序存儲(chǔ)器,當(dāng)信號(hào)為高電平或者懸空時(shí),對(duì)ROM的讀操作是從內(nèi)部程序存儲(chǔ)器開始,并可延至外部程序存儲(chǔ)器。</p><p> XTAL1:反向振蕩放大器的輸入
42、及內(nèi)部時(shí)鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p><p> 3.1.2 數(shù)碼管動(dòng)態(tài)掃描顯示原理[4]</p><p> 在實(shí)際的單片機(jī)系統(tǒng)中,往往需要多位顯示。動(dòng)態(tài)顯示是一種最常見的多位顯示方法,應(yīng)用非常廣泛。用數(shù)碼管顯示信息時(shí),由于每個(gè)數(shù)碼管至少需要8個(gè)I/O口,如果需要多個(gè)數(shù)碼管,則需要太多I/O口,而單片機(jī)的I/
43、O口是有限的。在實(shí)際應(yīng)用中,一般采用動(dòng)態(tài)顯示的方式解決此問題。</p><p> 動(dòng)態(tài)顯示是多個(gè)數(shù)碼管,交替顯示,利用人的視覺暫留作用使人看到多個(gè)數(shù)碼管同時(shí)顯示。通常將所有位的段選線相應(yīng)地并聯(lián)在一起,由一個(gè)單片機(jī)的8位I/O口控制,形成段選線的多路復(fù)用。而各位數(shù)碼管的共陽極或共陰極分別由單片機(jī)獨(dú)立的I/O口線控制,順序循環(huán)地點(diǎn)亮每位數(shù)碼管,這樣的數(shù)碼管驅(qū)動(dòng)方式就稱為“動(dòng)態(tài)掃描”。在這種方式中,雖然每一時(shí)刻只選通
44、一位數(shù)碼管,但由于人眼具有一定的“視覺殘留”,只要延時(shí)時(shí)間設(shè)置恰當(dāng),便會(huì)感覺到多位數(shù)碼管同時(shí)被點(diǎn)亮了。在動(dòng)態(tài)顯示程序中,各個(gè)位的延時(shí)時(shí)間長(zhǎng)短是非常重要的,如果延時(shí)時(shí)間長(zhǎng),則會(huì)出現(xiàn)閃爍現(xiàn)象;如果延時(shí)時(shí)間太短,則會(huì)出現(xiàn)顯示暗且有重影。</p><p> 在編程時(shí),需要輸出段選和位選信號(hào),位選信號(hào)選中其中一個(gè)數(shù)碼管,然后輸出段碼,使該數(shù)碼管顯示所需要的內(nèi)容,延時(shí)一段時(shí)間后,再選中另一個(gè)數(shù)碼管,再輸出對(duì)應(yīng)的段碼,高速交
45、替。</p><p> 3.1.3 BCD——七段數(shù)碼管驅(qū)動(dòng)/譯碼器[3]</p><p> 常用的BCD對(duì)七段顯示器譯碼器/驅(qū)動(dòng)器的IC包裝設(shè)計(jì)有TTL之7446、7447、7448、7449與CMOS之4511等。其中7446、7447必須使用共陽極七段數(shù)碼顯示器,7448、7449、4511等則使用共陰極七段顯示器。</p><p> 74L
46、S247的功能用于將BCD碼轉(zhuǎn)化成數(shù)碼塊中的數(shù)字,通過它解碼,可以直接把數(shù)字轉(zhuǎn)化為數(shù)碼管的顯示數(shù)字,從而簡(jiǎn)化了程序,節(jié)約單片機(jī)的I/O開銷,因此是一個(gè)非常好的芯片。</p><p> 74LS247的引腳如下圖3-2所示:</p><p> 圖3-2 74LS247引腳圖</p><p><b> 引腳的功能:</b></p>
47、;<p> ?。?)A、B、C、D為輸入端,abcdefg為輸出端。</p><p> 當(dāng)輸入DCBA=0010時(shí),則輸出abcdefg=0010010,使數(shù)碼管顯示“2”;</p><p> 當(dāng)輸入DCBA=0110時(shí),則輸出abcdefg=1100000,使數(shù)碼管顯示“6”;關(guān)系如表3-2所示:</p><p> 表3-2 BCD七段譯碼真
48、值表</p><p> ?。?)LT、RBI與BI/RBO為控制引腳,其功能分述如下:</p><p> 74LS247電路是由與非門、輸入緩沖器和七個(gè)與或非門組成的BCD——7段譯碼器/驅(qū)動(dòng)器。7個(gè)與非門和一個(gè)驅(qū)動(dòng)電路成對(duì)連接,以產(chǎn)生可用的BCD數(shù)據(jù)及其補(bǔ)碼至7個(gè)與或非譯碼門。剩下的與非門和3個(gè)輸入緩沖器作為試燈輸入(LT)、滅燈輸入/動(dòng)態(tài)滅燈輸出(BI/RBO)以及動(dòng)態(tài)滅燈輸入(RB
49、I)端。</p><p> 該電路接受4位二進(jìn)制編碼——十進(jìn)制數(shù)(BCD)輸入并借助于輔助輸入端狀態(tài)將輸入數(shù)據(jù)譯碼后去驅(qū)動(dòng)一個(gè)七段顯示器。輸出結(jié)構(gòu)設(shè)計(jì)能承受7段顯示器所需要的相當(dāng)高的高壓,驅(qū)動(dòng)顯示器各段所需要的高達(dá)24mA的電流可以由其高性能的輸出晶體管來直接提供。BCD輸入計(jì)數(shù)9以上的顯示圖案是鑒定輸入條件的唯一信號(hào)。</p><p> 該電路有自動(dòng)前、后沿滅零控制(RBI和RBO)
50、。試燈(LT)可在端處在高電平的任何時(shí)刻去進(jìn)行,該電路還含有一個(gè)滅燈輸入(BI)。它用來控制燈的亮度或禁止輸出。</p><p> 1)需要0-15的輸出功能時(shí),滅燈輸入(BI)必須為開路或者保持在高電平狀態(tài),若不要滅掉十進(jìn)制零,則動(dòng)態(tài)滅燈輸入(RBI)必須開路或者處于高電平狀態(tài)。</p><p> 2)當(dāng)?shù)碗娖街苯蛹拥綔鐭糨斎耄˙I)時(shí),不管其他任何輸入端的電平如何,所有段的輸出端都
51、關(guān)死。</p><p> 3)當(dāng)動(dòng)態(tài)滅燈輸入(RBI)和輸入端A、B、C、D都處于低電平而試燈輸入(LT)為高電平時(shí),則所有段的輸出端進(jìn)入關(guān)閉且動(dòng)態(tài)滅燈輸出(RBO)處于低電平狀態(tài)。</p><p> 4)當(dāng)滅燈輸入/動(dòng)態(tài)滅燈輸出(BI/RBO)開路或者保持在高電平狀態(tài),且將低電平加到試燈試燈輸入(LT)時(shí),所有段的輸出都得打開。</p><p> 注:BI/
52、RBO是用做滅燈(BI)與/或動(dòng)態(tài)滅燈輸出(RBO)的線與邏輯。</p><p> 3.1.4 按鍵接口原理 </p><p> 鍵盤往往分成編碼鍵盤和非編碼鍵盤,編碼鍵盤由按鍵和鍵處理電路組成,直接為計(jì)算機(jī)提供經(jīng)過編碼的按鍵鍵碼;而非編碼鍵盤則只提供按鍵,其余由計(jì)算機(jī)自己處理。非編碼鍵盤結(jié)構(gòu)簡(jiǎn)單,可自由裁量設(shè)計(jì),非常適用于單片應(yīng)用系統(tǒng)。</p><p>
53、1.按鍵特性與抖動(dòng)處理</p><p> 按鍵是一種機(jī)械彈性開關(guān),當(dāng)鍵按下時(shí)閉合,松開時(shí)斷開。因?yàn)橛袡C(jī)械的接觸,在觸點(diǎn)閉合或斷開的瞬間會(huì)出現(xiàn)電壓抖動(dòng)。為了避免鍵輸入錯(cuò)誤,必須進(jìn)行鍵抖動(dòng)的處理。去抖動(dòng)由硬件和軟件兩種方法:硬件方法就是在鍵盤中附加去抖動(dòng)電路消除抖動(dòng);而軟件方法則是采用時(shí)間延遲以躲避抖動(dòng),待觸點(diǎn)狀方法處理。</p><p><b> 2.鍵盤接口及功能</b
54、></p><p> 非編碼鍵盤是所用按鍵組成的集合。為了保證鍵盤的正確輸入,鍵接口必備以下功能:</p><p> ?。?)鍵掃描與識(shí)別,判斷有無鍵按下以及按鍵位置,鍵掃描與識(shí)別是通過“行掃描”與“列狀態(tài)”的配合來確定是否有鍵按下以及所在行、列的位置。所謂行掃描就是一次給每條行線送低電平,而其余各行線送高電平,并檢測(cè)對(duì)每一行掃描時(shí)所產(chǎn)生的列狀態(tài)。鍵盤掃描有下列三種方式:</
55、p><p> 程控掃描方式:只有單片機(jī)空閑時(shí)才調(diào)用掃描程序響應(yīng)用戶鍵入請(qǐng)求。</p><p> 定時(shí)掃描方式:?jiǎn)纹瑱C(jī)定時(shí)調(diào)用掃描程序?qū)︽I盤進(jìn)行掃描,即時(shí)響應(yīng)用戶鍵入請(qǐng)求。</p><p> 中斷掃描方式:與中斷請(qǐng)求電路配合,當(dāng)有鍵按下時(shí)產(chǎn)生中斷請(qǐng)求,由單片機(jī)響應(yīng)并執(zhí)行中斷服務(wù)程序掃描鍵盤。</p><p><b> ?。?)去鍵抖
56、動(dòng)</b></p><p> 消除按鍵抖動(dòng)帶來的誤輸入。檢測(cè)鍵關(guān)閉后,延時(shí)10ms后再檢測(cè)一次,兩次檢測(cè)相同再進(jìn)一步進(jìn)行鍵處理。</p><p><b> ?。?)鍵編碼</b></p><p> 生成易于處理的鍵碼。由于鍵位碼比較零亂,因此接下來的工作是根據(jù)需要把反映閉合鍵和鍵位置的鍵位碼換乘反映鍵功能的鍵碼。有了鍵碼,才好通
57、過散轉(zhuǎn)指令把程序執(zhí)行到閉合鍵所對(duì)應(yīng)的服務(wù)程序上去。鍵碼既可以根據(jù)鍵位碼查詢表求得,也可以根據(jù)鍵碼編排規(guī)律計(jì)算得到。</p><p><b> ?。?)等待鍵釋放</b></p><p> 為了保證鍵一次閉合僅進(jìn)行一次處理,編鍵碼之后,再以延時(shí)掃描的方法等待鍵釋放。鍵釋放后鍵處理工作完成。</p><p> 3.2 硬件電路設(shè)計(jì)</p&
58、gt;<p> 硬件部分的設(shè)計(jì)是整個(gè)設(shè)計(jì)的一個(gè)很重要的部分。在進(jìn)行硬件設(shè)計(jì)時(shí),首先要確定元器件,并且知道這些元器件的工作原理和功能,然后才可以進(jìn)行設(shè)計(jì)。本設(shè)計(jì)的主要硬件電路包括三個(gè)部分:計(jì)時(shí)顯示電路、計(jì)分顯示電路、鳴笛警示電路。一般來說,對(duì)硬件部分的設(shè)計(jì)都應(yīng)包括繪制SCH原理圖和PCB印刷圖,由于本次設(shè)計(jì)我主要負(fù)責(zé)軟件部分的設(shè)計(jì),硬件參與得不是很多,所以硬件部分元器件的功能就不詳細(xì)介紹了。</p><
59、p> 3.2.1 元器件的選擇[3]</p><p> 本設(shè)計(jì)主要選擇了以下元器件:如表3-3所示:</p><p> 表3-3 元器件列表</p><p> 3.2.2 計(jì)時(shí)顯示屏的設(shè)計(jì)</p><p> 計(jì)時(shí)電路主要由計(jì)時(shí)按鍵、單片機(jī)AT89C51、譯碼器74LS247、4位共陽極的數(shù)碼管以及反相器7404構(gòu)成。P1.0
60、-P1.3分別控制計(jì)時(shí)數(shù)碼管的4個(gè)位的位線,P1.6和P1.7分別連接計(jì)時(shí)器時(shí)間的十位和個(gè)位的初值按鈕,P0.0-P0.3分別與74LS247的輸入端A、B、C、D相連接,74LS247的QA、QB、QC、QD、QE、QF、QG分別與計(jì)時(shí)數(shù)碼管的a、b、c、d、e、f、g七段的陰極相連接,用74LS247驅(qū)動(dòng)4位數(shù)碼管的動(dòng)態(tài)顯示。設(shè)計(jì)出的計(jì)時(shí)顯示電路如下圖3-3所示:</p><p> 圖3-3 計(jì)時(shí)顯示屏電
61、路圖</p><p> 3.2.3計(jì)分顯示屏的設(shè)計(jì)</p><p> 計(jì)分電路主要由四個(gè)計(jì)分按鍵、單片機(jī)AT89C51、譯碼器74LS247、兩個(gè)4位共陽極的數(shù)碼管以及反相器7404構(gòu)成。P2.0-P2.3分別控制B隊(duì)計(jì)分?jǐn)?shù)碼管的4個(gè)位的位線,P2.4-P2.7分別控制A隊(duì)計(jì)分?jǐn)?shù)碼管的4個(gè)位的位線,P0.0-P0.3分別與74LS247的輸入端A、B、C、D相連接,74LS247的QA
62、、QB、QC、QD、QE、QF、QG分別與計(jì)時(shí)數(shù)碼管的a、b、c、d、e、f、g七段的陰極相連接,用74LS247驅(qū)動(dòng)4位數(shù)碼管的動(dòng)態(tài)顯示。設(shè)計(jì)出的計(jì)分顯示電路如下圖3-4所示:</p><p> 圖3-4 計(jì)分顯示屏電路圖</p><p> 3.2.4 鳴笛器的設(shè)計(jì)</p><p> 鳴笛警示電路如下圖3-5所示,采用蜂鳴器作為音響器件,該電路主要由單片機(jī)
63、、蜂鳴器、按鍵以及反相器構(gòu)成。P1.4接蜂鳴器,用一個(gè)按鍵接到P2.3上,當(dāng)按下該按鍵時(shí),產(chǎn)生一個(gè)外部中斷,蜂鳴器發(fā)出警報(bào)聲。</p><p> 圖3-5 鳴笛器電路圖</p><p><b> 3.3 本章小結(jié)</b></p><p> 本章設(shè)計(jì)了以8位單片機(jī)AT89C51為核心的籃球計(jì)分屏硬件平臺(tái)方案,并搭建了相應(yīng)的I/O口控制按鍵
64、電路、顯示電路、鳴笛警示等外圍電路,實(shí)現(xiàn)一個(gè)簡(jiǎn)易的籃球賽計(jì)分屏硬件部分的設(shè)計(jì)。</p><p><b> 系統(tǒng)軟件設(shè)計(jì)</b></p><p> 本系統(tǒng)是利用單片機(jī)的定時(shí)功能來進(jìn)行時(shí)間處理,實(shí)現(xiàn)計(jì)時(shí)顯示功能,利用單片機(jī)的計(jì)數(shù)功能來進(jìn)行分?jǐn)?shù)處理,實(shí)現(xiàn)計(jì)分顯示功能,對(duì)時(shí)間和分?jǐn)?shù)進(jìn)行處理的過程中,要通過中斷來控制實(shí)現(xiàn),當(dāng)有按鍵按下時(shí),計(jì)分器就會(huì)有相應(yīng)的加分減分處理,然后
65、通過數(shù)碼管顯示器動(dòng)態(tài)掃描并顯示出來。通過發(fā)聲的原理和規(guī)律,利用單片機(jī)的I/O口輸出高低電平,產(chǎn)生矩形波,外接喇叭就會(huì)發(fā)出一定頻率的聲音,從而實(shí)現(xiàn)鳴笛功能。</p><p> 4.1 軟件設(shè)計(jì)原理</p><p> 4.1.1定時(shí)器/計(jì)數(shù)器[2]</p><p> 51單片機(jī)內(nèi)部有兩個(gè)16位可編程的定時(shí)器/計(jì)數(shù)器,分別稱為定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1,它們
66、具有四種工作方式,其控制字和狀態(tài)均在相應(yīng)的特殊功能寄存器中,通過對(duì)控制寄存器的編程,就可方便地選擇適當(dāng)?shù)墓ぷ鞣绞?。特殊控制器有工作方式控制寄存器(TMOD),定時(shí)/計(jì)數(shù)器控制寄存器(TCON),中斷允許控制寄存器IE。</p><p> 定時(shí)/計(jì)數(shù)器的核心是的16位加法計(jì)數(shù)器,定時(shí)器T0的加法計(jì)數(shù)器用特殊功能寄存器TH0、TL0表示,TH0表示加法計(jì)數(shù)器的高8位,TL0表示加法計(jì)數(shù)器的低8位。TH1和TL1則分
67、別表示定時(shí)/計(jì)數(shù)器T1的高8位和低8位。它們均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。它們用于存放定時(shí)或計(jì)數(shù)的初始值。此外,內(nèi)部還有一個(gè)8位的工作方式寄存器TMOD和一個(gè)8位的控制寄存器TCON,用于選擇和控制定時(shí)/計(jì)數(shù)器的工作。這些寄存器可根據(jù)需要由程序讀寫。</p><p> 當(dāng)然16位加法計(jì)數(shù)器的輸入端每輸入一個(gè)脈沖,16位加法計(jì)數(shù)器的值自動(dòng)加1,當(dāng)計(jì)數(shù)器的計(jì)數(shù)值超過加法計(jì)數(shù)器字長(zhǎng)所能表示的
68、二進(jìn)制數(shù)的范圍而向第17位進(jìn)位,即計(jì)數(shù)溢出時(shí),置位定時(shí)中斷請(qǐng)求標(biāo)志,向CPU申請(qǐng)中斷。</p><p> 1、工作方式寄存器TMOD</p><p> TMOD用于控制T0和T1的工作方式,其格式如表4-1所示:</p><p> 表4-1 方式控制寄存器TMOD</p><p><b> 各位定義如下:</b>
69、;</p><p> M1,MO:工作方式控制位,可構(gòu)成表4-2所示四種工作方式:</p><p> 表4-2 方式控制寄存器TMOD的工作方式</p><p> C/:計(jì)數(shù)工作方式/定時(shí)工作方式選擇位。置0時(shí),設(shè)置為定時(shí)工作方式;置1時(shí),設(shè)置為計(jì)數(shù)工作方式。</p><p> GATE:門控位,用以決定是由軟件還是硬件啟動(dòng)/停止計(jì)
70、數(shù)。GATE=0, /被封鎖,只要用軟件對(duì)TR0(或TR1)置“1”就啟動(dòng)了定時(shí)器;GATA=1時(shí),定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)受外部引腳輸入電平的控制。</p><p> TMOD的所有位在復(fù)位后清0。TMOD不能位尋址,只能按字節(jié)操作設(shè)置工作方式。</p><p> 2、定時(shí)/計(jì)數(shù)控制寄存器TCON</p><p> TFl,TRl,TF0和TR0位用于定時(shí)器/計(jì)
71、數(shù)器;IEl,ITl,IE0和IT0位用于中斷系統(tǒng)。其格式如表4-3所示:</p><p> 表4-3 控制寄存器TCON</p><p><b> 各位定義如下:</b></p><p> TF1:定時(shí)器1溢出標(biāo)志位。當(dāng)定時(shí)器1計(jì)滿溢出時(shí),由硬件使TF1置“1”,并且申請(qǐng)中斷。進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清“0”,在查詢方式下用軟件
72、清“0”。</p><p> TR1:定時(shí)器1運(yùn)行控制位。由軟件清“0”關(guān)閉定時(shí)器1。當(dāng)GATE=1,且為高電平時(shí),TR1置“1”啟動(dòng)定時(shí)器1;當(dāng)GATE=0,TR1置“1”啟動(dòng)定時(shí)器1。</p><p> TF0:定時(shí)器0溢出標(biāo)志。其功能及操作情況同TF1。</p><p> TR0:定時(shí)器0運(yùn)行控制位。其功能及操作情況同TR1。</p>&l
73、t;p> IE1:外部中斷1請(qǐng)求標(biāo)志位。</p><p> IT1:外部中斷1觸發(fā)方式選擇位。當(dāng)IT1=0,為低電平觸發(fā)方式;當(dāng)IT1=1,為下降沿觸發(fā)方式。</p><p> IE0:外部中斷0請(qǐng)求標(biāo)志位。</p><p> IT0:外部中斷0觸發(fā)方式選擇位。 當(dāng)IT0=0,為低電平觸發(fā)方式;當(dāng)IT0=1,為下降沿觸發(fā)方式。</p>&
74、lt;p> TCON中低4位與中斷有關(guān)。由于TCON是可以位尋址的,因而如果只清溢出或啟動(dòng)定時(shí)器工作,可以用位操作命令。</p><p> 4.1.2發(fā)音原理及音樂知識(shí)[4]</p><p><b> 1. 聲音的產(chǎn)生</b></p><p> 我們知道,聲音的產(chǎn)生是一種音頻振動(dòng)的效果。振動(dòng)的頻率越高,則為高音;振動(dòng)的頻率越低,則
75、為低音。聲音的頻率范圍為20Hz-200kHz之間,人類耳朵比較容易辨識(shí)的聲音頻率范圍是200Hz-20kHz,一般音響電路是用正旋波信號(hào)驅(qū)動(dòng)喇叭,從而產(chǎn)生悅耳的音樂;在數(shù)字電路里,則是用數(shù)字脈沖信號(hào)驅(qū)動(dòng)喇叭,從而產(chǎn)生聲音。若要AT89C51產(chǎn)生聲音,可利用程序來控制單片機(jī)某個(gè)I/O口的“高”電平或者“低”電平,則在該I/O口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”、“低”電平的持續(xù)時(shí)間,
76、就能改變輸出頻率,從而改變音調(diào)。</p><p> 2. 音調(diào)(音階)的產(chǎn)生</p><p> 若以頻率來表示聲音,有點(diǎn)抽象,又有點(diǎn)無趣,通常是以Do、Re、Mi、Fa、So、La、Si、Do分別代表某一頻率的聲音,我們稱之為“音調(diào)”,如表4-4所示,為C調(diào)音符頻率對(duì)照表,它包括3個(gè)音階(高音、中音、低音)。一首音樂是由許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利
77、用不同的頻率組合,構(gòu)成想要的音樂了。當(dāng)然對(duì)于單片機(jī)來說,產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣的方波頻率信號(hào)。因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系確定即可。</p><p> 表4-4 C調(diào)各音符頻率對(duì)照表</p><p><b> 3. 節(jié)拍的產(chǎn)生</b></p><p> 若要構(gòu)成音樂,光有音調(diào)
78、是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動(dòng)),而且可以調(diào)節(jié)各個(gè)音的快慢速度?!肮?jié)拍”,即Beat,簡(jiǎn)單說就是打拍子,就像我們聽音樂不自主的隨之拍手或其他動(dòng)作。若1拍為0.4s,則1/4 拍為0.1s,其他節(jié)拍都是它的倍數(shù),只要設(shè)定延時(shí)時(shí)間即可。至于1拍多少s,并沒有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點(diǎn),有些人慢一點(diǎn),只要聽的悅耳就好。</p><p> 節(jié)拍也是用延時(shí)子程
79、序或者定時(shí)器中斷來實(shí)現(xiàn)的。如1/4 拍一次延時(shí)0.1s,1拍延時(shí)4次0.1s。</p><p> 4.2 系統(tǒng)軟件設(shè)計(jì)[6]</p><p> 4.2.1 系統(tǒng)主程序設(shè)計(jì)</p><p> 在主程序循環(huán)中,主要工作是掃描是否有鍵按下,若有鍵按下則要確認(rèn)是哪個(gè)鍵按下并做相應(yīng)的處理,并做同步顯示處理。</p><p> void main
80、(void)</p><p><b> {</b></p><p> TMOD=0x01; //設(shè)置T0為工作方式1,作為16位計(jì)數(shù)器</p><p> TH0=(65535-50000)/256; //設(shè)置T0的高8位,并且T0的計(jì)數(shù)值為50ms</p><
81、;p> TL0=(65535-50000)%256; //設(shè)置T0的低8位</p><p> music=0; //初值喇叭不響</p><p> EA=1; //開放所有中斷</p><p> ET0=1;
82、 //允許定時(shí)/計(jì)數(shù)器T0溢出中斷</p><p> EX0=1; //允許外部中斷0</p><p> IT0=1; //設(shè)置外部中斷0為邊沿觸發(fā)方式(下降沿)</p><p> while(1)
83、 //無窮循環(huán),程序一直運(yùn)行</p><p><b> {</b></p><p> Key_Y(); //預(yù)置場(chǎng)次比賽時(shí)間</p><p> if(Star==0&&f!=0&&Puse!=0) //按下“開始鍵”,設(shè)置好比賽時(shí)間,并且未按“停止”鍵時(shí),
84、比賽正式開始</p><p><b> {</b></p><p> TR0=1; //啟動(dòng)定時(shí)器T0,開始計(jì)時(shí)</p><p> Key_if(); //開始計(jì)分</p><p><b> } </b></p>
85、<p><b> else</b></p><p><b> {</b></p><p> TR0=0; //比賽還未開始或比賽結(jié)束時(shí)間到,停止計(jì)時(shí)</p><p><b> }</b></p><p> Js_Jf_Scan(
86、); //將相應(yīng)的分?jǐn)?shù)、時(shí)間同步進(jìn)行顯示</p><p><b> }</b></p><p><b> }</b></p><p> 4.2.2 時(shí)間顯示設(shè)計(jì)</p><p> 系統(tǒng)要實(shí)現(xiàn)時(shí)間的計(jì)時(shí)功能,所以要用定時(shí)/計(jì)數(shù)器的定時(shí)功能進(jìn)行時(shí)間處理,在本程序設(shè)計(jì)
87、中,用一個(gè)定時(shí)50ms的時(shí)間中斷函數(shù)void Js_50ms(void),一個(gè)時(shí)間處理函數(shù)void Ptime(uchar)。</p><p> 由于時(shí)間顯示屏用的是4位的數(shù)碼管進(jìn)行顯示,用動(dòng)態(tài)掃描顯示驅(qū)動(dòng),用void Js_Scan(void)處理動(dòng)態(tài)掃描顯示。</p><p> 時(shí)間預(yù)置用按鍵實(shí)現(xiàn),首先進(jìn)行按鍵判斷處理,用void Key_Y(void)函數(shù)處理。</p>
88、;<p> 嵌入式籃球計(jì)分屏實(shí)現(xiàn)時(shí)間顯示屏的部分源程序如下:</p><p> /*******************設(shè)置場(chǎng)次比賽時(shí)間********************/</p><p> void Key_Y(void)</p><p><b> {</b></p><p> if(YK
89、1==0) //初始狀態(tài),分鐘的十位為0</p><p><b> {</b></p><p> delay(1); //延時(shí)去抖動(dòng)</p><p> fs=fs+1; //分十位加1分</p><p&g
90、t; fy=fs*10+fg; //求出預(yù)置時(shí)間的分鐘值</p><p> f=fy; //中間變量</p><p><b> }</b></p><p> if(YK2==0) //初始狀態(tài),分鐘的個(gè)位為0</p&g
91、t;<p><b> {</b></p><p> delay(1); //延時(shí)去抖動(dòng)</p><p> fg=fg+1; //分個(gè)位加1分</p><p> fy=fs*10+fg; //求出預(yù)置時(shí)間的分鐘值<
92、/p><p> f=fy; //中間變量</p><p><b> }</b></p><p> Js_Scan();</p><p><b> }</b></p><p> /********T0中斷服務(wù)函數(shù),每隔50ms產(chǎn)
93、生一次中斷********/</p><p> void Js_50ms(void)interrupt 1 using 1 //定時(shí)器T0中斷,用工作寄存器組1</p><p><b> { </b></p><p> TH0=(65535-50000)/256; //定時(shí)器T0的高8位</p><p
94、> TL0=(65535-50000)%256; //定時(shí)器T0的低8位</p><p> num++; //每50ms累加一次</p><p> Ptime(num); //調(diào)用時(shí)間處理函數(shù)</p><p><b> }</b><
95、/p><p> /**********************時(shí)間處理函數(shù)********************/</p><p> void Ptime(uchar time)</p><p><b> { </b></p><p> if(time==20) //如果為1s
96、(50ms*20=1s)</p><p><b> {</b></p><p><b> num=0;</b></p><p> m++; //每到1s,計(jì)時(shí)器累加1次</p><p> ms=m/10; //秒的十位
97、</p><p> mg=m%10; //秒的個(gè)位</p><p> if(m==60) //如果為1min</p><p><b> {</b></p><p> m=0; //秒鐘置0</p><
98、;p> mg=m%10; //秒鐘的個(gè)位置0</p><p> ms=m/10; //秒鐘的十位置0</p><p> f--; //分鐘開始在預(yù)設(shè)的比賽時(shí)間基礎(chǔ)上倒計(jì)時(shí)</p><p> fs=f/10; //分鐘的十位</p>
99、<p> fg=f%10; //分鐘的個(gè)位</p><p> if(f==0) //分鐘數(shù)倒計(jì)時(shí)到0</p><p><b> {</b></p><p> TR0=0; //時(shí)間到,停止計(jì)時(shí)</p><p><b&g
100、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /****************數(shù)碼管動(dòng)態(tài)掃描顯示******************/</
101、p><p> void Js_Scan(void)</p><p><b> {</b></p><p><b> uchar j;</b></p><p> for(j=0;j<=5;j++)</p><p><b> {</b></
102、p><p> S4=0;P0=LED_Num[mg];delay(1);S4=1; /*將秒鐘的個(gè)位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> S3=0;P0=LED_Num[ms];delay(1);S3=1; /*將秒鐘的十位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p&
103、gt; S2=0;P0=LED_Num[fg];delay(1);S2=1; /*將分鐘的個(gè)位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> S1=0;P0=LED_Num[fs];delay(1);S1=1; /*將分鐘的十位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p><b>
104、 }</b></p><p><b> }</b></p><p> 4.2.3 計(jì)分顯示設(shè)計(jì)</p><p> 本系統(tǒng)是利用按鍵來實(shí)現(xiàn)兩隊(duì)的計(jì)分功能的,當(dāng)按一次加分鍵,在程序中要用兩個(gè)整形的變量作為A、B隊(duì)的分值計(jì)分器,程序里用sum及sum1分別表示B和A隊(duì)的分值。</p><p> 如分別要在
105、數(shù)碼管的每位上動(dòng)態(tài)掃描顯示出來,就必須對(duì)兩隊(duì)所得的分?jǐn)?shù)進(jìn)行分位計(jì)算。程序里分別用q、b、s、g表示B隊(duì)顯示屏的千位、百位、十位、個(gè)位;用q1、b1、s1、g1表示A隊(duì)顯示屏的千位、百位、十位、個(gè)位。通過按鍵判斷處理,判斷是加分還是減分,用函數(shù)void Key_if(void)來實(shí)現(xiàn),用void Jf_Scan(void)函數(shù)進(jìn)行動(dòng)態(tài)掃描顯示分值。</p><p> 嵌入式籃球計(jì)分屏計(jì)分顯示的部分實(shí)現(xiàn)程序如下:&
106、lt;/p><p> /*******************數(shù)碼管動(dòng)態(tài)掃描顯示********************/</p><p> void Jf_Scan(void)</p><p><b> {</b></p><p><b> uchar j;</b></p>&l
107、t;p> for(j=0;j<=5;j++)</p><p><b> {</b></p><p> KL4=0;P0=LED_Num[g1];delay(1);KL4=1; /*將A隊(duì)分?jǐn)?shù)的個(gè)位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> KL3=0;P0=LED_Num[s
108、1];delay(1);KL3=1; /*將A隊(duì)分?jǐn)?shù)的十位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> KL2=0;P0=LED_Num[b1];delay(1);KL2=1; /*將A隊(duì)分?jǐn)?shù)的百位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> KL1=0;P0=LED_Num[q1];de
109、lay(1);KL1=1; /*將A隊(duì)分?jǐn)?shù)的千位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> CL4=0;P0=LED_Num[g];delay(1);CL4=1; /*將B隊(duì)分?jǐn)?shù)的個(gè)位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> CL3=0;P0=LED_Num[s];delay(1);
110、CL3=1; /*將B隊(duì)分?jǐn)?shù)的十位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> CL2=0;P0=LED_Num[b];delay(1);CL2=1; /*將B隊(duì)分?jǐn)?shù)的百位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p> CL1=0;P0=LED_Num[q];delay(1);CL1=
111、1; /*將B隊(duì)分?jǐn)?shù)的千位傳遞給譯碼器,通過按鍵,實(shí)現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/</p><p><b> }}</b></p><p> /*****************判斷是哪個(gè)隊(duì)加分或者減分*****************/</p><p> void Key_if(void)</p>&l
112、t;p><b> {</b></p><p> if(Key1==0) //當(dāng)按鍵按下時(shí)</p><p><b> {</b></p><p> delay(1); //延時(shí)去抖動(dòng)</p><p> s
113、um=sum+1; //B隊(duì)加1分</p><p><b> }</b></p><p> if(Key2==0 && sum>=1) //減分按鍵按下并且中得分不得少于1分</p><p><b> {</b></p>&l
114、t;p> delay(1); //延時(shí)去抖動(dòng)</p><p> sum=sum-1; //B隊(duì)減1分</p><p><b> }</b></p><p> if(Key3==0) //當(dāng)按鍵按下時(shí)</p&g
115、t;<p><b> {</b></p><p> delay(1); //延時(shí)去抖動(dòng)</p><p> sum1=sum1+1; //A隊(duì)加1分</p><p><b> }</b></p><p> if
116、(Key4==0 && sum1>=1) //減分按鍵按下并且中得分不得少于1分</p><p><b> {</b></p><p> delay(1); //延時(shí)去抖動(dòng)</p><p> sum1=sum1-1; //A隊(duì)減1分&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 籃球賽計(jì)時(shí)計(jì)分器畢業(yè)設(shè)計(jì)
- 嵌入式籃球賽計(jì)分器畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的籃球賽計(jì)分器
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的籃球賽計(jì)分器
- 課程設(shè)計(jì)-- 籃球賽計(jì)時(shí)計(jì)分器
- 畢業(yè)設(shè)計(jì)-- 基于單片機(jī)的籃球賽計(jì)分器
- 最新國(guó)際籃球賽計(jì)分表
- 開題報(bào)告---籃球賽計(jì)時(shí)計(jì)分器設(shè)計(jì)與實(shí)現(xiàn)
- 基于單片機(jī)籃球賽計(jì)時(shí)計(jì)分器設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 籃球賽總結(jié)
- 畢業(yè)設(shè)計(jì)----籃球賽計(jì)時(shí)記分器設(shè)計(jì)
- 籃球賽贊助合同
- 企業(yè)籃球賽方案
- 籃球賽活動(dòng)方案
- 新生籃球賽總結(jié)
- 畢業(yè)設(shè)計(jì)(論文)-基于at89c51單片機(jī)的籃球賽計(jì)時(shí)計(jì)分器設(shè)計(jì)
- 籃球賽報(bào)名表
- 大學(xué)新生籃球賽策劃書_大學(xué)新生籃球賽策劃方案
- 籃球賽贊助策劃方案
- 籃球賽策劃方案(定稿)
評(píng)論
0/150
提交評(píng)論