版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智力競(jìng)賽搶答器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 智力競(jìng)賽搶答器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文 (2)
- 畢業(yè)設(shè)計(jì)(論文)-聲光顯示智力競(jìng)賽搶答器
- 聲光顯示智力競(jìng)賽搶答器畢業(yè)設(shè)計(jì)
- 智力競(jìng)賽搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)---智力競(jìng)賽搶答器
- 智力競(jìng)賽搶答器課程設(shè)計(jì)
- 智力競(jìng)賽搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告---智力競(jìng)賽搶答器
- 智力競(jìng)賽搶答器課程設(shè)計(jì)報(bào)告
- 智力搶答器課程設(shè)計(jì)--智力競(jìng)賽搶答裝置的設(shè)計(jì)
- 課程設(shè)計(jì)---智力競(jìng)賽搶答器設(shè)計(jì)
- 基于聲光顯示智力競(jìng)賽搶答器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-四路智力競(jìng)賽搶答器的設(shè)計(jì)
- 聲光顯示智力競(jìng)賽16路搶答器畢業(yè)設(shè)計(jì)
- 數(shù)電課程設(shè)計(jì)---智力競(jìng)賽搶答器
- 模電課程設(shè)計(jì)---智力競(jìng)賽搶答器
- 單片機(jī)課設(shè)-----智力競(jìng)賽搶答器
- 數(shù)電課程設(shè)計(jì)--智力競(jìng)賽搶答器
- 智力競(jìng)賽搶答器__數(shù)字邏輯課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論