智力競賽搶答器畢業(yè)論文_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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 課題的任務和要求5</p><p>  1.2.1 課題的任務5</p><p>  1.2.2 課題的要求6</p><p>  二、 STC89C52單片機系統(tǒng)說明7</p><p>  2

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

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

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

7、t;p><b>  參考文獻21</b></p><p><b>  附錄A22</b></p><p>  答辯記錄及評分表29</p><p><b>  摘 要</b></p><p>  隨著科學技術的發(fā)展,人們學習知識的手段也越來越多。趣味搶答競賽就

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31、P1.1/T2EX)。 在flash編程和校驗時,P1口接收低8位地址字節(jié)。</p><p><b>  引腳號第二功能</b></p><p>  P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出。</p><p>  P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)。</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 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個 TTL

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

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

35、的原因,將輸出電流(IIL)。 P3口亦作為STC89C52特殊功能(第二功能)使用。在flash編程和校驗時,P3口也接收一些控制信號。</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ù)器0)。</p><p>  P3.5 T1(定時/計數(shù)器1)。</p><p>  P3.6 WR(外部數(shù)據(jù)存儲器寫選通)。</p><p>  P3.7 RD(外部數(shù)據(jù)存儲器讀選通

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

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

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

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

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

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

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

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

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

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

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

48、t;/p><p>  (2) 留有設計余地。在設計硬件電路時,要考慮到將來修改擴展的方便。因為很少有一錘定音的電路設計,如果現(xiàn)在不留余地,將來可能要為一點小小的修改或擴展而被迫進行全面返工。</p><p>  (3) 程序空間,選用片內程序空間足夠大的單片機,本設計采用STC89C52單片機。</p><p>  (4) I/O端口,在樣機研制出來后進行現(xiàn)場試用時,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

73、;  //時間:2012.05</p><p><b>  //作者:林 海</b></p><p><b>  /*</b></p><p><b>  項目要求:</b></p><p>  接通電源后,系統(tǒng)自動復位,無需手動按復位鍵。搶答器處于禁止狀態(tài),</p&g

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

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

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

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

78、秒,數(shù)碼管上顯</p><p>  示選手的編號和搶答的時間,并保持到主持人啟動RESET復位鍵為止。</p><p>  6. 如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定</p><p>  時顯示器上顯示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; //復位;</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; // 選手編號位 bai</p><p>  sbit H2=P2^1; //剩余時間十位 shi</p><

83、;p>  sbit H3=P2^2; // 剩余時間個位 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>  注:共陽極LED</b></p><p><b>  */</b></p><p>  uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, </p><p>  0x92,0x82,0xf8,0x80,0x90,}; //數(shù)碼管顯示字符定義 對應0

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

86、WEI();//復位函數(shù)申明</p><p>  void qushu();//拆分任意兩位數(shù)</p><p>  uint input=30; //默認剩余時間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;//設置定時器0為工作方式1.(M1M0為1)</p><p>  TH0

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

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

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

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

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

94、/***********</p><p>  bai=0;//選手編號清零</p><p>  input=30;//設置剩余時間</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]; //********* 選手編號顯示 *************</p><

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

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

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

99、/p><p>  H3=1; //********* 關三位數(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>  //復位操作,無論何時,都可以復位,節(jié)省時間</p><p>  if(RESET==0)</p><p><b>  {</b></p><p>  delay(200);//延時200毫秒,防止按鍵機械振動

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

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

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

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

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

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

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

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

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

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

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

113、><b>  }</b></p><p>  TR0=0; //關定時器,剩余時間不再減少,顯示剩余時間</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></

114、p><p>  //中斷方式一服務程序。</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秒時間到。</p><p><b>  { </b></p><p>  t=0; //然后把t清零重新再記20次。<

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論