2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《單片機(jī)C51技術(shù)應(yīng)用》</p><p>  課 程 設(shè) 計(jì) 報(bào) 告</p><p>  題 目: 智力競(jìng)賽搶答器 </p><p>  專 業(yè): 電子信息工程 </p><p><b>  任務(wù)書</

2、b></p><p><b>  目 錄</b></p><p><b>  摘 要4</b></p><p><b>  一、緒論5</b></p><p>  1.1 課題的背景與意義5</p><p>  1.1.1 課題的

3、背景5</p><p>  1.1.2 課題的意義5</p><p>  1.2 課題的任務(wù)和要求5</p><p>  1.2.1 課題的任務(wù)5</p><p>  1.2.2 課題的要求6</p><p>  二、 STC89C52單片機(jī)系統(tǒng)說明7</p><p>  2

4、.1 89系列單片機(jī)的概況7</p><p>  2.2 STC89C52單片機(jī)介紹8</p><p>  2.3 STC89C52單片機(jī)的性能11</p><p>  2.4 各類單片機(jī)的比較與分析12</p><p>  3 數(shù)字搶答器總體方案的設(shè)計(jì)12</p><p>  3.1 系統(tǒng)硬件的

5、設(shè)計(jì)13</p><p>  3.1.1 系統(tǒng)設(shè)計(jì)原理圖13</p><p>  3.1.2 時(shí)鐘頻率電路的設(shè)計(jì)14</p><p>  3.1.3 復(fù)位電路的設(shè)計(jì)15</p><p>  3.1.4 顯示電路的設(shè)計(jì)16</p><p>  3.1.5 鍵盤掃描電路的設(shè)計(jì)16</p>

6、<p>  3.1.6 報(bào)警電路的設(shè)計(jì)18</p><p>  3.2 系統(tǒng)軟件的設(shè)計(jì)18</p><p>  3.2.1 Keil C51 v8.05軟件介紹18</p><p>  3.2.2 主程序系統(tǒng)結(jié)構(gòu)圖19</p><p><b>  結(jié)論20</b></p>&l

7、t;p><b>  參考文獻(xiàn)21</b></p><p><b>  附錄A22</b></p><p>  答辯記錄及評(píng)分表29</p><p><b>  摘 要</b></p><p>  隨著科學(xué)技術(shù)的發(fā)展,人們學(xué)習(xí)知識(shí)的手段也越來(lái)越多。趣味搶答競(jìng)賽就

8、是其中的一種。眾所周知,搶答賽一定要公平,公正的判斷出選手的答題權(quán),這就離不開搶答器。通過本課題的設(shè)計(jì)研究,設(shè)計(jì)一種基于單片機(jī)的數(shù)字搶答器,該設(shè)備投資小,操作簡(jiǎn)單,功率小,效率高,是現(xiàn)代搶答賽不可或缺的工具。</p><p>  本課題簡(jiǎn)單的介紹了89C52單片機(jī)的概況。采用經(jīng)典的繪圖工具Protel99Se設(shè)計(jì)原理圖,C語(yǔ)言功能強(qiáng)大的Keil C51來(lái)編寫程序。</p><p>  課題

9、敘述了數(shù)字搶答器的基本原理,介紹一種以89C52單片機(jī)為核心的八路數(shù)字搶答器系統(tǒng)。給出了一種數(shù)字搶答器的設(shè)計(jì)方案。設(shè)計(jì)內(nèi)容包括聲音提示、主持人鍵、選手編號(hào)顯示,剩余時(shí)間顯示等部分。此次設(shè)計(jì)的搶答器擁有電路簡(jiǎn)單,成本較低,操作方便,靈敏可靠等特點(diǎn)。</p><p>  本課題從硬件和軟件兩方面闡述了該搶答器系統(tǒng)的設(shè)計(jì)技術(shù)。經(jīng)過調(diào)試和運(yùn)行,該搶答器達(dá)到了預(yù)期目標(biāo)。</p><p>  關(guān)鍵詞:

10、單片機(jī);搶答器;Protel99Se;Keil C51 </p><p><b>  一、緒論</b></p><p>  1.1 課題的背景與意義</p><p>  1.1.1 課題的背景 </p><p>  隨著科學(xué)技術(shù)的迅猛發(fā)展,單片機(jī)的應(yīng)用正在不斷的深入。它有著價(jià)格低廉,體積小巧,性能優(yōu)越,開發(fā)簡(jiǎn)單

11、,耗能低等優(yōu)點(diǎn)。正逐步用來(lái)開發(fā)各種智能家電,學(xué)習(xí)用具,工業(yè)設(shè)備等產(chǎn)品。同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日新月異的更新。[2]</p><p>  1.1.2 課題的意義</p><p>  目前,各學(xué)校、企業(yè)、電視臺(tái)及其他單位常舉辦各種智力和知識(shí)競(jìng)賽。這些競(jìng)賽又離不開搶答的環(huán)節(jié)。然而我們??吹降氖桥e辦方通過選手舉手來(lái)判斷答題權(quán)。這在某種程度上會(huì)因?yàn)橹鞒秩说闹饔^誤判造成比賽的不公平性。這就很容易影

12、響一次競(jìng)賽的氣氛。在電子產(chǎn)品日益廉價(jià)、高效、簡(jiǎn)單易用的今天,這種方式已經(jīng)不適應(yīng)社會(huì)的需要了。在這個(gè)競(jìng)爭(zhēng)激烈的社會(huì)中,比賽要做到公正、準(zhǔn)確、高效以及直觀的判斷選手的答題權(quán),數(shù)字搶答器就必不可少了。</p><p>  國(guó)內(nèi)外研究進(jìn)展及發(fā)展趨勢(shì):</p><p>  我國(guó)電子市場(chǎng)正在突飛猛進(jìn)的發(fā)展。當(dāng)然,搶答器也不例外。搶答器作為一種電子產(chǎn)品。已廣泛用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。但目前所使用的傳

13、統(tǒng)的搶答器工藝復(fù)雜,可靠性低,實(shí)現(xiàn)困難,體積龐大,操作更是不簡(jiǎn)單。這極大的影響了整個(gè)行業(yè)的發(fā)展。</p><p>  隨著科學(xué)技術(shù)的發(fā)展,現(xiàn)在搶答器必然將向著數(shù)字化,智能化,小型化方向發(fā)展。因此,本課題選擇了STC89C52單片機(jī)來(lái)設(shè)計(jì)具有八個(gè)搶答鍵的數(shù)字搶答。該搶答器具有制作簡(jiǎn)單,成本低廉,可靠性高,易于實(shí)現(xiàn),體積小巧以及操作簡(jiǎn)單等特點(diǎn)。</p><p>  對(duì)于STC89C52單片機(jī),

14、第二章有詳細(xì)介紹。這里不做贅述。</p><p>  1.2 課題的任務(wù)和要求</p><p>  1.2.1 課題的任務(wù)</p><p>  利用現(xiàn)在市面上性價(jià)比極高且易于購(gòu)買的STC89C52單片機(jī)設(shè)計(jì)一款數(shù)字搶答器,需實(shí)現(xiàn)以下功能:</p><p>  (1) 八名選手同時(shí)使用;</p><p>  (2)

15、能顯示答題人的編號(hào);</p><p>  (3) 需顯示出剩余時(shí)間;</p><p>  (4) 開始與搶答成功聲音提示;</p><p>  (5) 主持人可控制開始和結(jié)束搶答;</p><p><b>  (6) 時(shí)間可調(diào)。</b></p><p>  1.2.2 課題的要求</p&g

16、t;<p><b>  本設(shè)計(jì)主要內(nèi)容:</b></p><p>  接通電源后,系統(tǒng)自動(dòng)復(fù)位,無(wú)需手動(dòng)按復(fù)位鍵。搶答器處于禁止?fàn)顟B(tài),選手按搶答鍵無(wú)效,也不作提示。數(shù)碼管顯示030,主持人這時(shí)可以按動(dòng)ADD鍵與DEC鍵設(shè)置搶答剩余時(shí)間;主持人啟動(dòng)START鍵后,搶答器開始工作。蜂鳴器給出聲響提示。搶答時(shí)間開始減少,直到有選手搶答為止。如果在規(guī)定的時(shí)間內(nèi),沒有選手搶答,搶答器自動(dòng)

17、復(fù)位。選手在設(shè)定的時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)顯示、蜂鳴器提示。當(dāng)一輪搶答成之后,禁止二次搶答、數(shù)碼管顯示當(dāng)前剩余時(shí)間。選手答題結(jié)束后,主持人按下RESET鍵,搶答器復(fù)位,方可進(jìn)行下一輪的搶答。</p><p>  該數(shù)字搶答器的預(yù)期目標(biāo)如下:</p><p>  (1) 搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕SW1 ~ SW8表示。</p><

18、;p>  (2) 設(shè)置一個(gè)系統(tǒng)復(fù)位鍵RESET,一個(gè)系統(tǒng)開始鍵START,由主持人控制。</p><p>  (3) 搶答器可自動(dòng)識(shí)別搶答成功的選手,并在LED數(shù)碼管上顯示該選手編號(hào),同時(shí)</p><p>  蜂鳴器發(fā)出提示聲。選手搶答成功后其他選手不可搶答,及按下?lián)尨疰I后無(wú)效。</p><p>  (4) 搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定

19、(默認(rèn)30秒)。當(dāng)主持人啟動(dòng)" START"鍵后,中斷程序開始計(jì)時(shí)。搶答時(shí)間開始減少。同時(shí)蜂鳴器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間0.5秒。</p><p>  (5) 參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,報(bào)警0.5秒,數(shù)碼管上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人啟動(dòng)RESET復(fù)位鍵為止。</p><p>  (6) 如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系

20、統(tǒng)報(bào)警并自動(dòng)復(fù)位。準(zhǔn)備下一次的搶答。</p><p>  二、 STC89C52單片機(jī)系統(tǒng)說明</p><p>  STC89C52單片機(jī)內(nèi)部包含了作為微型計(jì)算機(jī)所必須的基本功能部件,各功能部件相互獨(dú)立的集成在同一塊芯片上。本章主要介紹STC89C52單片機(jī)的系統(tǒng)結(jié)構(gòu)及其功能。</p><p>  2.1 89系列單片機(jī)的概況</p><p&g

21、t;  AT89系列單片機(jī)是ATMEL公司的8位 Flash 單片機(jī)系列這個(gè)系列單片機(jī)的最大特點(diǎn)是在片內(nèi)含有 Flash 存儲(chǔ)器。能方便的存儲(chǔ)所開發(fā)的程序,而不需要外加儲(chǔ)存模塊。因此, 在應(yīng)用中有著十分廣泛的前途。特別是在便攜式、省電及特殊信息保存的儀器和系統(tǒng)中顯得更為有用。</p><p>  89 系列單片機(jī)特點(diǎn):</p><p>  AT89 系列單片機(jī)是以 8051 內(nèi)核構(gòu)成的。

22、所以, 它和 8051 系列單片機(jī)是兼容的系列。這個(gè)系列對(duì)于以 8051 為基礎(chǔ)的系統(tǒng)來(lái)說, 是十分容易進(jìn)行取代和組成的。故而對(duì)于熟悉 8051 的用戶來(lái)說, 用 ATMEL 公司的 89 系列單片機(jī)進(jìn)行取代 8051 的系統(tǒng)設(shè)計(jì)是輕而易舉的事。</p><p>  89 系列單片機(jī)的優(yōu)點(diǎn):</p><p>  (1) 內(nèi)部含 Flash 存儲(chǔ)器 在系統(tǒng)的開發(fā)過程中可以十分容易進(jìn)行程序的修

23、改這就大大縮短了系統(tǒng)的開發(fā)周期同時(shí)在系統(tǒng)工作過程中能有效地保存一些數(shù)據(jù)信息即使外界電源損壞也不會(huì)影響到信息的保存。</p><p>  (2) 和 80C51 插座兼容 89 系列單片機(jī)的引腳是和 80C51 的引腳一樣的所以當(dāng)用89 系列單片機(jī)取代 80C51 時(shí)可以直接進(jìn)行代換這時(shí)不管采用 40 引腳或是 44 引腳的產(chǎn)品只要用相同引腳的 89 系列單片機(jī)取代 80C51 的單片機(jī)即可。</p>

24、<p>  (3) 靜態(tài)時(shí)鐘方式。89 系列單片機(jī)采用靜態(tài)時(shí)鐘方式,所以可以節(jié)省電能,這對(duì)于降低便攜式產(chǎn)品的功耗十分有用。</p><p>  (4) 錯(cuò)誤編程亦無(wú)廢品產(chǎn)生。一般的 OTP 產(chǎn)品一旦錯(cuò)誤編程就成了廢品,而 89 系列單片機(jī)內(nèi)部采用了 Flash 存儲(chǔ)器所以錯(cuò)誤編程之后仍可以重新編程直到正確為止。故不存在廢品。</p><p>  (5) 可進(jìn)行反復(fù)系統(tǒng)試驗(yàn)。用

25、89 系列單片機(jī)設(shè)計(jì)的系統(tǒng)可以反復(fù)進(jìn)行系統(tǒng)試驗(yàn)。每次試驗(yàn)可以編入不同的程序。這樣可以保證用戶的系統(tǒng)設(shè)計(jì)達(dá)到最優(yōu)。而且,隨用戶的需要和發(fā)展還可以進(jìn)行修改使系統(tǒng)不斷能追隨用戶的最新要求。[3]</p><p>  2.2 STC89C52單片機(jī)介紹</p><p>  STC89C52 是INTEL公司MCS-51系列單片機(jī)中基本的產(chǎn)品,它采用ATMEL公司可靠的CMOS工藝技術(shù)制造的高性能

26、8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS-51的HCMOS產(chǎn)品。它結(jié)合了CMOS的高速和高密度技術(shù)及CMOS的低功耗特征,它基于標(biāo)準(zhǔn)的MCS-51單片機(jī)體系結(jié)構(gòu)和指令系統(tǒng),屬于89C51增強(qiáng)型單片機(jī)版本,集成了時(shí)鐘輸出和向上或向下計(jì)數(shù)器等更多的功能,適合于類似馬達(dá)控制等應(yīng)用場(chǎng)合。STC89C52有PDIP(40pin)和PLCC(44pin)兩種封裝形式。</p><p><b>  內(nèi)部結(jié)構(gòu)圖:</b>

27、;</p><p><b>  如圖2-2,</b></p><p><b>  圖中:</b></p><p>  (1) 內(nèi)部總線是STC89C52單片機(jī)內(nèi)部的數(shù)據(jù)通路。</p><p>  (2) 時(shí)鐘電路為單片機(jī)提供一個(gè)基準(zhǔn)工作時(shí)鐘。</p><p>  (3) 復(fù)位

28、電路是為單片機(jī)通電后設(shè)置初始狀態(tài)。</p><p><b>  各引腳介紹:</b></p><p>  如圖2-3,本設(shè)計(jì)所選用的STC89C52單片機(jī)是PDIP封裝。及雙排針式,40引腳的封裝。</p><p><b>  P0 口:</b></p><p>  P0口是一個(gè)8位漏極開路的雙向I

29、/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。</p><p>  當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。</p><p>  在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。</p><p><b&

30、gt;  P1 口:</b></p><p>  P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL 邏輯電平。對(duì)P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2 的觸輸入(

31、P1.1/T2EX)。 在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。</p><p><b>  引腳號(hào)第二功能</b></p><p>  P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出。</p><p>  P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制)。</p><p>

32、;  P1.5 MOSI(在線系統(tǒng)編程用)。</p><p>  P1.6 MISO(在線系統(tǒng)編程用)。</p><p>  P1.7 SCK(在線系統(tǒng)編程用)。</p><p><b>  P2 口:</b></p><p>  P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL

33、 邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。</p><p>  在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR) 時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用 8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2

34、鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。</p><p><b>  P3 口:</b></p><p>  P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL 邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻

35、的原因,將輸出電流(IIL)。 P3口亦作為STC89C52特殊功能(第二功能)使用。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。</p><p><b>  端口引腳 第二功能</b></p><p>  P3.0 RXD(串行輸入口)。</p><p>  P3.1 TXD(串行輸出口)。</p><p> 

36、 P3.2 INTO(外中斷0)。</p><p>  P3.3 INT1(外中斷1)。</p><p>  P3.4 TO(定時(shí)/計(jì)數(shù)器0)。</p><p>  P3.5 T1(定時(shí)/計(jì)數(shù)器1)。</p><p>  P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)。</p><p>  P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通

37、)。</p><p>  此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。</p><p>  RST——復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。</p><p>  ALE/PROG——當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻

38、率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。</p><p>  對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p>  如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該

39、引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無(wú)效。</p><p>  PSEN——程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)STC89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。</p><p>  EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲(chǔ)

40、器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p>  如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。</p><p>  FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。[4]</p><p&

41、gt;  2.3 STC89C52單片機(jī)的性能</p><p>  STC89C52 與MCS-51單片機(jī)產(chǎn)品兼容。8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器,1000次擦寫周期,全靜態(tài)操作。晶振頻率范圍0Hz~33Hz,三級(jí)加密程序存儲(chǔ)器,32個(gè)可編程I/O口線、三個(gè)16位定時(shí)器/計(jì)數(shù)器,八個(gè)中斷源,全雙工UART串行通道,低功耗空閑和掉電模式,掉電后中斷可喚醒,看門狗定時(shí)器,雙數(shù)據(jù)指針,掉電標(biāo)識(shí)符 。</p

42、><p>  STC89C52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 STC89C52具有以下標(biāo)

43、準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止

44、。8 位微控制器 8K字節(jié)在系統(tǒng)可編程 Flash。[5]</p><p>  2.4 各類單片機(jī)的比較與分析</p><p>  如表2-4所示,以下各種類型的單片機(jī)內(nèi)除CPU外,還包括ROM、RAM、4*8 I/O口和2個(gè)16位定時(shí)/計(jì)數(shù)器,它們都是功能很強(qiáng)的單片微型計(jì)算機(jī)。但由于80C51片內(nèi)為掩膜ROM,故內(nèi)部程序不能改寫,不用于實(shí)驗(yàn)開發(fā)。87C51具有片內(nèi)EPROM,是真正的單

45、片微機(jī),但由于價(jià)格較貴,且程序改寫時(shí)要用紫外線擦除,時(shí)間較長(zhǎng),所以用得較少。80C31在市場(chǎng)上的價(jià)格很低,但片內(nèi)沒有ROM,必須在片外擴(kuò)展一片EPROM,非常不便。AT89C51片內(nèi)具有可電擦除的FPEROM,可以快速、多次地編程,且價(jià)格不高,所以用得非常廣泛,目前開發(fā)用的MCS—51產(chǎn)品絕大多數(shù)用89C51。由于現(xiàn)在市面上 89C51 和 89C52 價(jià)格相差極?。▋H5角錢的差異),故本設(shè)計(jì)采用了性能更好的89C52系列。使系統(tǒng)有了更

46、大的擴(kuò)展空間。[6]</p><p>  3 數(shù)字搶答器總體方案的設(shè)計(jì)</p><p>  本設(shè)計(jì)分為硬件設(shè)計(jì)和軟件設(shè)計(jì),這兩者相互結(jié)合,不可分離;從時(shí)間上看,硬件設(shè)計(jì)的絕大部分工作量是在最初階段,到后期往往還要做一些修改。只要技術(shù)準(zhǔn)備充分,硬件設(shè)計(jì)的大返工是比較少的,軟件設(shè)計(jì)的任務(wù)貫徹始終,到中后期基本上都是軟件設(shè)計(jì)任務(wù),隨著集成電路技術(shù)的飛速發(fā)展,各種功能很強(qiáng)的芯片不斷出現(xiàn),使硬件電

47、路的集成度越來(lái)越高,硬件設(shè)計(jì)的工作量在整個(gè)項(xiàng)目中的所占的比重逐漸下降。</p><p>  3.1 系統(tǒng)硬件的設(shè)計(jì)</p><p>  為使硬件電路設(shè)計(jì)盡可能合理,應(yīng)注意以下幾方面:</p><p>  (1) 盡可能采用功能強(qiáng)的芯片,以簡(jiǎn)化電路,功能強(qiáng)的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的價(jià)格不斷下降,并不一定比若干普通芯片價(jià)格的總和高。&l

48、t;/p><p>  (2) 留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路時(shí),要考慮到將來(lái)修改擴(kuò)展的方便。因?yàn)楹苌儆幸诲N定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來(lái)可能要為一點(diǎn)小小的修改或擴(kuò)展而被迫進(jìn)行全面返工。</p><p>  (3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計(jì)采用STC89C52單片機(jī)。</p><p>  (4) I/O端口,在樣機(jī)研制出來(lái)后進(jìn)行現(xiàn)場(chǎng)試用時(shí),

49、往往會(huì)發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來(lái)解決的。如有些新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計(jì)就預(yù)留出一些I/O端口,雖然當(dāng)時(shí)空著沒用,那么用的時(shí)候就派上用場(chǎng)了。</p><p>  3.1.1 系統(tǒng)設(shè)計(jì)原理圖</p><p>  1. 本設(shè)計(jì)各原理圖所使用的畫圖軟件簡(jiǎn)介</p><p>

50、  Protel99Se的介紹</p><p>  如圖3-1,Protel99SE是應(yīng)用于Windows9X/2000/NT操作系統(tǒng)下的EDA設(shè)計(jì)軟件,采用設(shè)計(jì)庫(kù)管理模式,可以進(jìn)行聯(lián)網(wǎng)設(shè)計(jì),具有很強(qiáng)的數(shù)據(jù)交換能力和開放性及3D模擬功能,是一個(gè)32位的設(shè)計(jì)軟件,可以完成電路原理圖設(shè)計(jì),印制電路板設(shè)計(jì)和可編程邏輯器件設(shè)計(jì)等工作,可以設(shè)計(jì)32個(gè)信號(hào)層,16個(gè)電源--地層和16個(gè)機(jī)加工層。[7]</p>

51、<p><b>  2. 原理圖</b></p><p>  如圖3-2,P2.3口為開始START鍵,P2.4為復(fù)位RESET鍵,P1.0-P1.7為八路搶答輸入SW1-SW8鍵,數(shù)碼管段選P0口,位選P2.0、P2.1、P2.2,蜂鳴器輸出為P2.7口。P2.5為時(shí)間加1 ADD鍵,P2.6為時(shí)間減1 DEC鍵。</p><p>  3.1.2 時(shí)鐘頻

52、率電路的設(shè)計(jì) </p><p>  如圖3-3,單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。本設(shè)計(jì)采用11.0592M晶振,而不是12M,使計(jì)時(shí)更加精準(zhǔn)。</p><p>  單片機(jī)一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為

53、3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 C1,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。</p><p>  單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為110592MHz,即fosc=11.0592MHz,則時(shí)

54、鐘周期為1/11.0592µs。[8]</p><p>  3.1.3 復(fù)位電路的設(shè)計(jì) </p><p>  如圖3-4,單片機(jī)的第9腳RESET為硬件復(fù)位端,只要將該端持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖3-所示:</p><p>  值得注意的是,在設(shè)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能

55、,由上面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲(chǔ)器的值都恢復(fù)到了初始值,系統(tǒng)實(shí)現(xiàn)了復(fù)位 。本設(shè)計(jì)還設(shè)計(jì)了軟復(fù)位功能。軟復(fù)位實(shí)際上就是當(dāng)復(fù)位程序執(zhí)行完畢之后,將程序中的變量恢復(fù)到初始狀態(tài),也實(shí)現(xiàn)了系統(tǒng)復(fù)位。</p><p>  3.1.4 顯示電路的設(shè)計(jì)</p><p>  如圖3-5,數(shù)碼管采用4位八段共陽(yáng)極LED,位選采用PNP三極管間接控制。增強(qiáng)數(shù)碼管的電流輸入。避免了因單片機(jī)驅(qū)動(dòng)電流較

56、小而引起的顯示問題。使選手和主持人都能清楚的看到顯示內(nèi)容。且大大減小了單片機(jī)的負(fù)擔(dān)。</p><p>  3.1.5 鍵盤掃描電路的設(shè)計(jì) </p><p>  鍵盤是人與微機(jī)系統(tǒng)打交道的主要設(shè)備。鍵盤分為獨(dú)立式和矩陣式。它們各有自己的特點(diǎn),其中獨(dú)立鍵盤硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤與獨(dú)立鍵盤有很大區(qū)別,首先在硬件電路上它要比

57、獨(dú)立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢(shì)得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時(shí)法,延時(shí)法的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)間(這里我們?nèi)?00ms)后再進(jìn)行運(yùn)算。[9]</p><p>  本設(shè)計(jì)共12個(gè)鍵。為增強(qiáng)本設(shè)

58、計(jì)的穩(wěn)定性,減少單片機(jī)的工作量,在單片機(jī)剩余引腳允許的情況下,本設(shè)計(jì)采用了獨(dú)立式鍵盤。</p><p><b>  1. 搶答部分</b></p><p><b>  如圖3-6:</b></p><p>  P1 口八個(gè)引腳剛好代表八個(gè)搶答鍵,方便編程與布線。</p><p>  2. 主持人控制

59、部分</p><p><b>  如圖3-7:</b></p><p>  3.1.6 報(bào)警電路的設(shè)計(jì)</p><p>  我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來(lái)控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能

60、改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。</p><p>  如圖3-8,本設(shè)計(jì)對(duì)聲音要求不高,不需要復(fù)雜的編程。我們只需要簡(jiǎn)單的控制P2.7的高低電平即可。</p><p>  3.2 系統(tǒng)軟件的設(shè)計(jì)</p><p>  3.2.1 Keil C51 v8.05軟件介紹 </p><p>  Keil C51是美國(guó)Keil

61、 Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語(yǔ)言編程,那么Keil幾乎就是你的不二之選,即

62、使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。</p><p>  2006年1月30日ARM推出全新的針對(duì)各種嵌入式處理器的軟件開發(fā)工具,集成Keil μVision3的RealView MDK開發(fā)環(huán)境。 RealView MDK開發(fā)工具KeilμVision3源自Keil公司。 RealView MDK集成了業(yè)內(nèi)領(lǐng)先的技術(shù),包括Keil μVision3集成開

63、發(fā)環(huán)境與RealView編譯器。支持ARM7、ARM9和最新的Cortex-M3核處理器,自動(dòng)配置啟動(dòng)代碼,集成Flash燒寫模塊,強(qiáng)大的 Simulation設(shè)備模擬,性能分析等功能,與ARM之前的工具包ADS等相比,RealView編譯器的最新版本可將性能改善超過20%。[10]</p><p>  3.2.2 主程序系統(tǒng)結(jié)構(gòu)圖 </p><p><b>  如圖3-

64、10:</b></p><p>  本課題公布全部源程序,詳情請(qǐng)參見附錄A。</p><p><b>  結(jié)論</b></p><p>  首先,畢業(yè)課題的研究是檢驗(yàn)我們?cè)谛W(xué)習(xí)成果的重要措施,也是提高教學(xué)質(zhì)量的重要環(huán)節(jié)。是作為大學(xué)生在畢業(yè)前都必須完成的任務(wù)。畢業(yè)論文是結(jié)束大學(xué)學(xué)習(xí)生活走向社會(huì)的一個(gè)中介和橋梁,畢業(yè)論文是我們大學(xué)生才

65、華的第一次顯露,是向祖國(guó)和人民所交的一份有份量的答卷,是投身社會(huì)主義現(xiàn)代化建設(shè)事業(yè)的報(bào)到書。通過本次課題的研究,可以鍛煉我仔細(xì)認(rèn)真的學(xué)習(xí)態(tài)度,可以很好的陪養(yǎng)我的求實(shí)創(chuàng)新思維。還可以增強(qiáng)我追求科學(xué)的熱情。</p><p>  其次,通過撰寫畢業(yè)論文,提高了我們的寫作水平。增加了師生之間的感情。在整個(gè)論文的撰寫過程中遇到的每一個(gè)難題都是我們?nèi)〉眠M(jìn)步的動(dòng)力點(diǎn)。遇到難題我們就要去解決,自己能力不足的請(qǐng)教老師。只要我們努力

66、去克服它就是一次進(jìn)步。更是一次超越自我的嘗試。這一切在我們的人生閱歷中將是無(wú)比珍貴的財(cái)富,也是在踏入社會(huì)前對(duì)專業(yè)知識(shí)做最后一次的提升。</p><p>  再次,本課題主要是研究和設(shè)計(jì)基于單片機(jī)的數(shù)字搶答器,選用單片機(jī)芯片作為核心,加上廉價(jià)的LED數(shù)碼管巧妙完美的配合,設(shè)計(jì)出了廉價(jià),實(shí)用,小巧的搶答器,提升了搶答器市場(chǎng)的競(jìng)爭(zhēng)力,彌補(bǔ)了智力競(jìng)賽的不足。</p><p>  本課題是以產(chǎn)品的低

67、能耗、提高性價(jià)比為出發(fā)點(diǎn)進(jìn)行構(gòu)思設(shè)計(jì),STC89C52單片機(jī)采用CMOS工藝。大大減少了系統(tǒng)的能耗。符合國(guó)家節(jié)能減排的大背景。 </p><p>  數(shù)字搶答器的設(shè)計(jì)這一課題具有很強(qiáng)的針對(duì)性實(shí)戰(zhàn)性,很好的考查了我對(duì)電子類知識(shí)的掌握能力,在研究課題期間讓我學(xué)習(xí)到了很多知識(shí)同時(shí)也認(rèn)識(shí)到了自己的不足之處,為我今后的發(fā)展提供更好的指引;拿到課題后在老師的關(guān)懷指導(dǎo)和同學(xué)們的熱心幫助下,通過查閱相關(guān)書籍、上網(wǎng)查閱等途徑涉獵與

68、課題相關(guān)的知識(shí),經(jīng)過不懈努力最終將課題完成,在這期間很好的培養(yǎng)了我獨(dú)立處理問題的能力和主動(dòng)涉獵知識(shí)的習(xí)慣,為我在以后的工作就業(yè)打下了更好的基礎(chǔ),讓我能更快的融入到社會(huì)中。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 臧殿紅,臧殿紅.基于AT89S51的八路搶答器的設(shè)計(jì)[J]. 科技信息,2011,25期:3.</p><

69、;p>  [2] 張毅剛. 新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].3版.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2008:4</p><p>  [3] 王建. 單片機(jī)入門與典型應(yīng)用實(shí)例[M].1版.北京:中國(guó)電力出版社,2010:6-7</p><p>  [4] 郭天祥. 新概念51單片機(jī)C語(yǔ)言教程[M].1版.哈爾濱:電子工業(yè)出版社,2009:7-10.</p><p

70、>  [5] 凌志浩. AT89C52單片機(jī)原理與接口技術(shù)[M].1版.北京:高等教育出版社,2011:10</p><p>  [6] 李學(xué)海. 經(jīng)典80C51單片機(jī)輕松入門與上手[M].1版.哈爾濱:清華大學(xué)出版社,2009:10-11</p><p>  [7] 趙建嶺. Protel99SE設(shè)計(jì)寶典[M].1版.哈爾濱:電子工業(yè)出版社,2011:17</p>&

71、lt;p>  [8] 郭天祥. 新概念51單片機(jī)C語(yǔ)言教程[M].1版.哈爾濱:電子工業(yè)出版社,2009:13.</p><p>  [9] 李朝青. 單片機(jī)原理及接口技術(shù)[M].3版.北京:北京航空航天大學(xué)出版社,2006:15.</p><p>  [10] 王東鋒. 單片機(jī)C語(yǔ)言應(yīng)用100例[M].1版.哈爾濱:電子工業(yè)出版社,2009:17.</p><p

72、><b>  附錄A</b></p><p>  注:以下內(nèi)容是直接復(fù)制寫在Keil中的完整程序。</p><p>  //*******************>>>程序開始<<<******************//</p><p>  //作用:數(shù)字搶答器</p><p>

73、;  //時(shí)間:2012.05</p><p><b>  //作者:林 海</b></p><p><b>  /*</b></p><p><b>  項(xiàng)目要求:</b></p><p>  接通電源后,系統(tǒng)自動(dòng)復(fù)位,無(wú)需手動(dòng)按復(fù)位鍵。搶答器處于禁止?fàn)顟B(tài),</p&g

74、t;<p>  選手按搶答鍵無(wú)效,也不作提示。數(shù)碼管顯示030,主持人這時(shí)可以按動(dòng)</p><p>  ADD鍵與DEC鍵設(shè)置搶答剩余時(shí)間;主持人接通START后,搶答器開始工作。</p><p>  揚(yáng)聲器給出聲響提示。搶答時(shí)間開始減少,直到有選手搶答為止。選手在</p><p>  定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)&

75、lt;/p><p>  一輪搶答之后,禁止二次搶答、數(shù)碼管顯示剩余時(shí)間。選手答題結(jié)束后,</p><p>  主持人按下RESET鍵,搶答器復(fù)位,方可進(jìn)行下一輪的搶答。</p><p>  該數(shù)字搶答器的預(yù)期目標(biāo)如下:</p><p>  1. 搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕SW1 ~ SW8表示。</p>&

76、lt;p>  2. 設(shè)置一個(gè)系統(tǒng)復(fù)位鍵RESET,一個(gè)系統(tǒng)開始鍵START,由主持人控制。</p><p>  3. 搶答器可自動(dòng)識(shí)別搶答成功的選手,并在LED數(shù)碼管上顯示該選手編號(hào),</p><p>  同時(shí)蜂鳴器發(fā)出報(bào)警聲響提示。選手搶答成功后其他選手不可搶答,及按下</p><p><b>  搶答鍵后無(wú)效。</b></p&g

77、t;<p>  4. 搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(默認(rèn)30秒)。</p><p>  當(dāng)主持人啟動(dòng)" START"鍵后,中斷程序開始計(jì)時(shí)。搶答時(shí)間開始減少。同時(shí)</p><p>  揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間0.5秒。</p><p>  5. 參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,報(bào)警0.5

78、秒,數(shù)碼管上顯</p><p>  示選手的編號(hào)和搶答的時(shí)間,并保持到主持人啟動(dòng)RESET復(fù)位鍵為止。</p><p>  6. 如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定</p><p>  時(shí)顯示器上顯示030。</p><p><b>  */</b></p><p>

79、  #include<reg52.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  sbit SW1=P1^0; //******</p><p>  sbit SW2=P1^1; //* 八

80、 *</p><p>  sbit SW3=P1^2; //* 路 *</p><p>  sbit SW4=P1^3; //* 搶 *</p><p>  sbit SW5=P1^4; //* 答 *</p><p>  sbit SW6=P1^5; //* 按 *</p><p> 

81、 sbit SW7=P1^6; //* 鈕 *</p><p>  sbit SW8=P1^7; //******</p><p>  sbit START=P2^3; //開始;</p><p>  sbit RESET=P2^4; //復(fù)位;</p><p>  sbit ADD=P2^5; //加一;&l

82、t;/p><p>  sbit DEC=P2^6; //減一;</p><p>  sbit A=P2^7; //蜂鳴器;</p><p>  sbit H1=P2^0; // 選手編號(hào)位 bai</p><p>  sbit H2=P2^1; //剩余時(shí)間十位 shi</p><

83、;p>  sbit H3=P2^2; // 剩余時(shí)間個(gè)位 ge</p><p><b>  /*</b></p><p><b>  顯示部分:</b></p><p>  段選:P0.0~P0.6;7段</p><p>  位選:P2.0~P2.2;三位</p>&

84、lt;p><b>  注:共陽(yáng)極LED</b></p><p><b>  */</b></p><p>  uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, </p><p>  0x92,0x82,0xf8,0x80,0x90,}; //數(shù)碼管顯示字符定義 對(duì)應(yīng)0

85、~9;</p><p>  void keyscan(); //鍵盤掃描函數(shù)申明;</p><p>  void display(); //顯示函數(shù)申明</p><p>  void delay(uint); //延時(shí)函數(shù)申明</p><p>  void FU

86、WEI();//復(fù)位函數(shù)申明</p><p>  void qushu();//拆分任意兩位數(shù)</p><p>  uint input=30; //默認(rèn)剩余時(shí)間30秒;</p><p>  uchar ge,shi,bai=0,n=1,m=0,t=0,temp; //定義變量;</p&

87、gt;<p>  //***************************************************************//</p><p>  //*********************>>>主函數(shù)開始<<<**************************//</p><p>  //*********

88、******************************************************// </p><p>  void main()</p><p><b>  {</b></p><p>  TMOD=0x01;//設(shè)置定時(shí)器0為工作方式1.(M1M0為1)</p><p>  TH0

89、=(65536-50000)/256; //裝初值。11.0592M晶振定時(shí)50ms數(shù)為45872.</p><p>  TL0=(65536-50000)%256; //低位</p><p>  EA=1; //開啟總中斷。</p><p>  ET0=1; //開定時(shí)器0中斷</p><p&

90、gt;  /***************中斷服務(wù)子程序每結(jié)束一次都回到TR0=1這點(diǎn)***********/</p><p>  while(1) //主程序死循環(huán),保證搶答器一直運(yùn)行下去</p><p><b>  {</b></p><p>  keyscan();//*************************&l

91、t;/p><p>  qushu();//****依次掃描此3個(gè)函數(shù)***</p><p>  display();//*************************</p><p><b>  }</b></p><p><b>  }</b></p><p>&

92、lt;b>  //系統(tǒng)復(fù)位函數(shù)</b></p><p>  void FUWEI()</p><p><b>  {</b></p><p>  TR0=0; //關(guān)定時(shí)器</p><p>  TH0=(65536-50000)/256; //重裝初值。</p>

93、<p>  TL0=(65536-50000)%256; //低8位</p><p>  t=0; //中斷函數(shù)計(jì)數(shù)清零</p><p>  A=0;//***********</p><p>  delay(500); //報(bào)警500毫秒</p><p>  A=1;/

94、/***********</p><p>  bai=0;//選手編號(hào)清零</p><p>  input=30;//設(shè)置剩余時(shí)間</p><p><b>  } </b></p><p><b>  //系統(tǒng)顯示函數(shù)</b></p><p>  vo

95、id display()</p><p><b>  {</b></p><p>  H1=0;//**************************************</p><p>  P0=table[bai]; //********* 選手編號(hào)顯示 *************</p><

96、;p>  delay(1); //**************************************</p><p>  H1=1; //關(guān)一位數(shù)碼管,保證選手編號(hào)位不被干擾**</p><p>  H2=0; //**************************************</p><p>  

97、P0=table[shi]; //********* 剩余時(shí)間十位顯示 *********</p><p>  delay(1); //**************************************</p><p>  H2=1; //********* 關(guān)二位數(shù)碼管 *************</p><

98、p>  H3=0; //**************************************</p><p>  P0=table[ge]; //********* 剩余時(shí)間個(gè)位顯示 *********</p><p>  delay(1); //**************************************<

99、/p><p>  H3=1; //********* 關(guān)三位數(shù)碼管 *************</p><p><b>  } </b></p><p>  //拆分任意兩位數(shù)函數(shù)</p><p>  void qushu()</p><p><b>  {</b

100、></p><p>  shi=input/10;//取整</p><p>  ge=input%10;//取余</p><p><b>  } </b></p><p><b>  //鍵盤掃描函數(shù)</b></p><p>  void keyscan() &

101、lt;/p><p><b>  {</b></p><p>  //復(fù)位操作,無(wú)論何時(shí),都可以復(fù)位,節(jié)省時(shí)間</p><p>  if(RESET==0)</p><p><b>  {</b></p><p>  delay(200);//延時(shí)200毫秒,防止按鍵機(jī)械振動(dòng)

102、引起的誤差</p><p>  FUWEI();//系統(tǒng)復(fù)位</p><p>  n=1;//復(fù)位后開啟主持人其他權(quán)限</p><p><b>  }</b></p><p>  //n為1時(shí),表示還沒開始搶答,可以操作</p><p><b>  if(n)</b&

103、gt;</p><p>  if(START==0)//開始搶答>>需要自鎖<<</p><p><b>  {</b></p><p>  TR0=1; //開定時(shí)器</p><p>  A=0;//*************</p><p>  d

104、elay(500);//報(bào)警500毫秒*</p><p>  A=1;//*************</p><p>  m=1;//開啟選手搶答權(quán)限</p><p>  n=0;//自鎖,開始后不檢測(cè)此按鈕,有效防止在選手答題時(shí)主持人誤操作。</p><p><b>  }</b></p&g

105、t;<p>  //調(diào)整時(shí)間函數(shù),搶答前可操作。 </p><p>  if(n) </p><p><b>  {</b></p><p>  if(ADD==0)</p><p><b>  {</b></p><p>  delay(200);

106、 //防止按鍵抖動(dòng)重復(fù)加一</p><p>  input++; //時(shí)間加一</p><p><b>  }</b></p><p>  if(DEC==0)</p><p><b>  {</b></p><p>  delay(200);</p>&

107、lt;p>  input--;//時(shí)間減一</p><p><b>  }</b></p><p><b>  }</b></p><p>  //主持人啟動(dòng)START按鈕后,開始檢查選手按鈕。</p><p>  if(m) </p><p><b&

108、gt;  {</b></p><p>  if(P1!=0xFF) //如果有選手搶答,則找出他的編號(hào)</p><p><b>  {</b></p><p><b>  temp=P1;</b></p><p>  m=0;//自鎖,此后不再檢測(cè)選手搶答鍵,直到主持人啟動(dòng)START為

109、止。</p><p>  switch(temp)</p><p><b>  {</b></p><p>  case 0xFE:bai=1; //一號(hào)選手答題</p><p><b>  break;</b></p><p>  case 0xFD:bai=2;

110、//二號(hào)選手答題</p><p><b>  break;</b></p><p>  case 0xFB:bai=3; //三號(hào)選手答題</p><p><b>  break;</b></p><p>  case 0xF7:bai=4; //四號(hào)選手答題</p><

111、p><b>  break;</b></p><p>  case 0xEF:bai=5; //五號(hào)選手答題</p><p><b>  break;</b></p><p>  case 0xDF:bai=6; //六號(hào)選手答題</p><p><b>  break;<

112、;/b></p><p>  case 0xBF:bai=7; //七號(hào)選手答題</p><p><b>  break;</b></p><p>  case 0x7F:bai=8; //八號(hào)選手答題</p><p><b>  break;</b></p><p

113、><b>  }</b></p><p>  TR0=0; //關(guān)定時(shí)器,剩余時(shí)間不再減少,顯示剩余時(shí)間</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></

114、p><p>  //中斷方式一服務(wù)程序。</p><p>  void timer() interrupt 1 </p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;//重裝初值。</p><p>  TL0=(65536-50000)%2

115、56;</p><p>  t++; //每累加一次,判斷是否到20.</p><p>  if(t==20) //如果到了20次,說明1秒時(shí)間到。</p><p><b>  { </b></p><p>  t=0; //然后把t清零重新再記20次。<

116、;/p><p>  input--; //減一秒</p><p>  if(input==0) //如果沒人回答,自動(dòng)復(fù)位;</p><p>  FUWEI(); //系統(tǒng)復(fù)位</p><p>  qushu(); //刷新顯示</p><p><b>  }<

117、;/b></p><p><b>  }</b></p><p>  //延時(shí)函數(shù),利用系統(tǒng)計(jì)算時(shí)間延時(shí),不占用計(jì)時(shí)器。</p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論