版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計說明書</b></p><p> 設(shè)計題目: 基于單片機(jī)的數(shù)字式競賽搶答器 </p><p> 專 業(yè): 通 信 技 術(shù) </p><p> 班 級: </p><p> 學(xué) 號:
2、 </p><p> 姓 名: </p><p> 指導(dǎo)教師: </p><p> 二ΟΟ八年十二月三十日</p><p> 畢業(yè)設(shè)計(論文)任務(wù)書</p><p> 備注:任務(wù)書由指導(dǎo)教師填
3、寫,一式二份。其中學(xué)生一份,指導(dǎo)教師一份</p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p><b> 第1章 緒論2</b></p><p> 第2章 總體方案設(shè)計3</p><p>
4、2.1 方案比較3</p><p> 2.2 方案論證及選擇4</p><p> 第3章 搶答器硬件電路設(shè)計5</p><p> 3.1 單片機(jī)最小系統(tǒng)5</p><p> 3.1.1 單片機(jī)時鐘電路5</p><p> 3.1.2 單片機(jī)復(fù)位電路6</p><p> 3
5、.2 鍵盤電路設(shè)計6</p><p> 3.2.1 選手搶答電路7</p><p> 3.2.2 主持人控制電路7</p><p> 3.3 顯示驅(qū)動電路8</p><p> 3.4 蜂鳴電路9</p><p> 3.5 電源電路10</p><p> 第4章 軟件部分
6、11</p><p> 4.1 單片機(jī)內(nèi)部信號分析11</p><p> 4.2 主要程序流程11</p><p> 4.2.1 系統(tǒng)主程序流程11</p><p> 4.2.2 中斷程序流程12</p><p> 第5章 仿真及調(diào)試14</p><p> 5.1 軟件仿真
7、14</p><p> 5.2 硬件調(diào)試14</p><p><b> 總 結(jié)16</b></p><p><b> 致 謝17</b></p><p><b> 參考文獻(xiàn)18</b></p><p> 附錄1 整機(jī)電路圖19<
8、;/p><p> 附錄2 PCB板圖20</p><p> 附錄3 源程序21</p><p><b> 摘 要</b></p><p> 本設(shè)計是采用單片機(jī)設(shè)計的多人比賽智力搶答器系統(tǒng)。它具有電路簡單、功能齊全、制作成本低、性價比高等特點,是一種經(jīng)濟(jì)、實用的比賽用搶答器。硬件部分主要由單片機(jī)、LED顯示器、LE
9、D驅(qū)動器、聲音報警器、主持人操作鍵盤和其它基本外圍電子電路組成。軟件部分采用51系列單片機(jī)通用匯編語言與C語言設(shè)計編寫。該搶答器不僅能實現(xiàn)顯示各位搶答選手號,而且具有搶答30秒倒計時(可調(diào))、答題60秒倒計時(可調(diào))、違例搶答報警等功能。并且功能增減方便,只需對軟件做相應(yīng)修改即可。</p><p> 關(guān)鍵詞 單片機(jī);搶答;倒計時</p><p><b> 第1章 緒論<
10、/b></p><p> 電子計算機(jī)的發(fā)展經(jīng)歷了從電子管、晶體管、集成電路到大規(guī)模集成電路共四個階段,即通常所說的第一代、第二代、第三代和第四代計算機(jī)?,F(xiàn)在廣泛使用的微型計算機(jī)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,因此它屬于第四代計算機(jī),而單片機(jī)則是微型計算機(jī)的一個分支。從1971年微型計算機(jī)問世以來,由于實際應(yīng)用的需要,微型計算機(jī)向著兩個不同的方向發(fā)展:一個是向著高速度、大容量、高性能的高檔微機(jī)方向發(fā)展;而另
11、一個則是向穩(wěn)定可靠、體積小和價格廉的單片機(jī)方向發(fā)展。但兩者在原理和技術(shù)上是緊密聯(lián)系的。單片機(jī)因?qū)⑵渲饕M成部分集成在一個芯片上而得名,具體說就是把中央處理器、隨機(jī)存儲器、只讀存儲器、中斷系統(tǒng)、定時器/計數(shù)器以及I/O口電路等主要微型機(jī)部件,集成在一塊芯片上。雖然單片機(jī)只是一塊芯片,但從功能和組成上,它已具有了計算機(jī)的屬性,為此它稱為單片微型機(jī)。</p><p> 單片機(jī)有很多的特點,主要表現(xiàn)在:體積小、功耗低、
12、價格廉、控制功能強、應(yīng)用現(xiàn)場環(huán)境惡劣等。</p><p> 本設(shè)計的核心采用了AT89C51單片機(jī)。80C51單片機(jī)系列是在MCS—51系列的基礎(chǔ)上發(fā)展起來的,早期的80C51只是系列眾多芯片中的一類,但是隨著后來的發(fā)展,80C51已經(jīng)形成獨立的系列,并且成為當(dāng)前8位單片機(jī)的典型代表。</p><p> 80C51芯片為40引腳雙列直插封裝,單一的+5V電源,它具有3個可編程I/O口,
13、其中2個口(A和B)為8位口,1個口(C)為6位口。此外還有128單元的RAM和1個14位計數(shù)結(jié)構(gòu)的定時器/計數(shù)器。</p><p> 第2章 總體方案設(shè)計</p><p><b> 2.1 方案比較</b></p><p> 方案一:采用數(shù)字電路實現(xiàn)</p><p> 定時搶答器的總體框圖如圖2-1所示,它由主
14、體電路和擴(kuò)展電路兩部分組成。主體電路完成基本的搶答功能,即開始搶答后,當(dāng)選手按動搶答按鈕時,能顯示選手的編號,同時能封鎖輸入電路,禁止其他選手搶答。擴(kuò)展電路完成定時搶答功能。主要是對秒脈沖產(chǎn)生電路計算從而達(dá)到定時功能。</p><p> 圖2-1 數(shù)字搶答器組成框圖</p><p> 定時搶答器的工作過程是:主持人將開關(guān)置于“清除”位置,搶答器處于禁止工作狀態(tài),定時顯示器上顯示設(shè)定的時
15、間,當(dāng)節(jié)目主持人宣布搶答題目后,按下“開始”鍵,揚聲器發(fā)出響聲提示,定時器倒計時。當(dāng)定時時間到,卻沒有選手搶答,系統(tǒng)報警,并禁止選手超時后搶答。當(dāng)選手在定時時間內(nèi)搶答時,電路立即分辨出搶答者的編號,由鎖存器進(jìn)行鎖存,然后譯碼顯示電路顯示編號,同時揚聲器發(fā)聲報警,同時對輸入編碼電路進(jìn)行封鎖,避免其他選手再次搶答,顯示剩余搶答時間,并保持到主持人將系統(tǒng)清零為止。當(dāng)選手將問題回答完畢時,主持人操作控制開關(guān),使系統(tǒng)恢復(fù)到禁止工作狀態(tài),以便進(jìn)行下
16、一輪搶答。</p><p> 方案二:采用單片機(jī)實現(xiàn)</p><p> 相比第一方案而言此方案,采單片機(jī)為控制核心大大簡化了系統(tǒng)電路結(jié)構(gòu),把各種處理的功能整合在了單片機(jī)內(nèi)部。此設(shè)計方案把軟件的設(shè)計作為設(shè)計重點,在原始的單一功能上添加了倒計時搶答、答題倒計時、顯示選手號等新穎的附屬功能,并保留了傳統(tǒng)的報警部分,電路還較簡單,具體方框圖如2-2所示。</p><p>
17、; 圖2-2 方案二框圖</p><p> 這是一種單片機(jī)控制的智能化搶答器,該搶答器可以克服普通搶答器存在的各種缺陷。本系統(tǒng)的功能是通過按下?lián)尨疰I的按鈕使單片機(jī)相應(yīng)的端口線讀入信號,經(jīng)過處理后輸出顯示所按下的鍵號。本系統(tǒng)還具備篩選第一有效搶答信號、顯示超前違規(guī)搶答信號、以及可變的搶答倒計時信號和答題倒計時信號等功能。</p><p> 2.2 方案論證及選擇</p>
18、<p> 無論是學(xué)校、工廠、軍隊還是益智性電視節(jié)目,都會舉辦各種各樣的智力競賽,都會用到搶答器。目前市場上已有各種各樣的智力競賽搶答器,但絕大多數(shù)以模擬電路、數(shù)字電路或者模擬電路與數(shù)字電路相結(jié)合的產(chǎn)品。這部分搶答器以相當(dāng)成熟,但是可以看到功能越多的電路相對來說就越復(fù)雜,且成本較高,故障高,顯示方式簡單,甚至沒有顯示電路。方案一中電路模塊太多,還不能顯示剩余答題時間,無法準(zhǔn)確判斷選手答題是否超時。近年來隨著科技的飛速發(fā)展,單片
19、機(jī)的應(yīng)用正不斷走向深入。所以我們選用單片機(jī)作為核心部件進(jìn)行邏輯控制及信號的產(chǎn)生,用單片機(jī)本身的優(yōu)勢使競賽真正達(dá)到公正、公平、公開。</p><p> 第3章 搶答器硬件電路設(shè)計</p><p> 3.1 單片機(jī)最小系統(tǒng)</p><p> 單片機(jī)使用51系列的AT89C51單片機(jī),該單片機(jī)應(yīng)用廣泛,技術(shù)成熟。AT89C51單片機(jī)是一個低電壓,高性能CMOS8位單
20、片機(jī),片內(nèi)含4kbytes的可反復(fù)擦寫的Flash只讀程序存儲器和128bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM)。</p><p> AT89C51有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,AT89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。AT89C51單片機(jī)引腳見圖3-1所示:</p><p>
21、 圖3-1 AT89C51引腳圖</p><p> 3.1.1 單片機(jī)時鐘電路</p><p> AT89C51單片機(jī)中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反向放大器,引腳XTAL1和XTAL2分別為反向放大器的輸入和輸出,這個放大器作為反饋元件的片外石英晶體振蕩或陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體及電容、接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對于外接電容、雖然沒有十分嚴(yán)格的要求
22、,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。一般使用石英晶體,電容使用30pF±10pF,而如使用陶瓷諧振器,最好選擇40pF±10pF。</p><p> 3.1.2 單片機(jī)復(fù)位電路</p><p> 復(fù)位是單片機(jī)的重要操作內(nèi)容,復(fù)位功能是系統(tǒng)正常運行的先決條件。在簡單的復(fù)位電路中,只要在微處理芯片的RST引腳保持高電平
23、達(dá)2個以上的機(jī)器周期,即可完成一次復(fù)位操作??紤]到電源的穩(wěn)定時間,參數(shù)漂移,晶振穩(wěn)定時間以及復(fù)位的可靠性等因素,一般只要在RST引腳出現(xiàn)10ms以上的高電平,就能使單片機(jī)有效復(fù)位。</p><p> 復(fù)位是由外部電路來實現(xiàn)的,按功能分為以下兩種方式:上電自動復(fù)位方式和人工復(fù)位方式。</p><p> 上電自動復(fù)位電路雖然能實現(xiàn)上電復(fù)位功能,但對干擾沒有抵抗作用,不能保證復(fù)位電路任何時候
24、都能可靠地工作。</p><p> 人工復(fù)位將一個按鈕開關(guān)并聯(lián)于上電復(fù)位電路中。按一下開關(guān)會在RST端出現(xiàn)一段時間的高電平,使單片機(jī)復(fù)位,安全可靠,所以選擇人工復(fù)位電路。見圖3-2所示。</p><p> 圖3-2 單片機(jī)最小系統(tǒng)電路原理圖</p><p> 3.2 鍵盤電路設(shè)計</p><p> 鍵盤是單片機(jī)應(yīng)用系統(tǒng)最常用的輸入設(shè)備
25、,操作人員可以通過鍵盤向單片機(jī)系統(tǒng)輸入指令、地址和數(shù)據(jù),實現(xiàn)簡單的人機(jī)通信。</p><p> 3.2.1 選手搶答電路</p><p> 本設(shè)計要求設(shè)計可供8名選手搶答的搶答器,可選用矩陣鍵盤獨立式行列鍵盤。</p><p> 獨立式按鍵就是各按鍵相互獨立,每個按鍵單獨占用一根I/O口線,每根I/O口線的按鍵工作狀態(tài)不會影響其他I/O口線上的工作狀態(tài)。因此,
26、通過檢測輸入線的電平狀態(tài)可以很容易判斷哪個按鍵被按下了。</p><p> 優(yōu)點:電路配置靈活,軟件結(jié)構(gòu)簡單。</p><p> 缺點:每個按鍵需占用一根I/O口線,在按鍵數(shù)量較多時,I/O口浪費大,電路結(jié)構(gòu)顯得復(fù)雜。因此,此鍵盤是用于按鍵較少或操作速度較高的場合。</p><p> 矩陣鍵盤與獨立式按鍵鍵盤相比,硬件電路大大節(jié)省??赏ㄟ^軟件的方法讓一鍵具有多
27、功能。它適用于按鍵數(shù)量較多的場合,由行列線組成,按鍵位于行列的交叉點上,節(jié)省I/O口。但是需要大量掃描、譯碼程序設(shè)計對于我們來說有些困難,考慮到本設(shè)計只需8名選手搶答,所以采用獨立式行列按鍵,S1-S8分別是選手1至選手8的搶答按鍵,如圖3-3所示。</p><p> 圖3-3 選手搶答電路</p><p> 3.2.2 主持人控制電路</p><p> 控制
28、電路是搶答器所必要的部分,它由主持人控制,用于控制開始/停止搶答、搶答時間和答題時間的調(diào)整。采用功能按鍵實現(xiàn),如圖3-4所示。</p><p> 圖3-4 主持人控制電路</p><p> 3.3 顯示驅(qū)動電路</p><p> 驅(qū)動顯示部分是本設(shè)計一個重要部分,LED數(shù)碼管分為共陰極7段數(shù)碼管如圖3-5所示,共陽極7段數(shù)碼管如圖3-6所示。</p>
29、;<p> 圖3-5 共陰極7段數(shù)碼管</p><p> 圖3-6 共陽極7段數(shù)碼管</p><p> 在單片機(jī)設(shè)計中,LED數(shù)碼管的顯示方式有靜態(tài)顯示、動態(tài)顯示兩種,由于靜態(tài)顯示數(shù)碼管的每一個LED需要占用單片機(jī)的一條端口線實現(xiàn)顯示控制,而單片機(jī)端口有限,所以采用動態(tài)控制顯示方式。</p><p> 將幾只數(shù)碼管的a-h分別連在一起與單片機(jī)段
30、碼控制端P0口連在一起,作為數(shù)碼管段碼控制。P2口的P2.0—P2.2與數(shù)碼管公共端連在一起作為位碼選擇控制,使每只數(shù)碼管可以單獨顯示。由于單片機(jī)端口驅(qū)動能力不足,數(shù)碼管的電流較大,所以在P0口接上拉電阻增加驅(qū)動能力,P2口作為位碼控制端驅(qū)動共陰型數(shù)碼管顯示。如圖3-7所示。</p><p> 圖3-7 驅(qū)動顯示電路</p><p><b> 3.4 蜂鳴電路</b&g
31、t;</p><p> 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。</p><p> 電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性的振動發(fā)聲。</p><p> 壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、
32、外殼等組成。它的發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動,本設(shè)計采用I/O口(P3.6)向揚聲器送高電平來控制揚聲器發(fā)聲。如圖3-8所示。</p><p><b> 圖3-8 蜂鳴電路</b></p><p><b> 3.5 電源電路</b></p><p> 8
33、0C51單片機(jī)正常工作電壓范圍為直流+4.5V至+6V,標(biāo)準(zhǔn)電壓為+5V。實際應(yīng)用時,可采用3節(jié)1.5V干電池串聯(lián)構(gòu)成4.5V或三端集成穩(wěn)壓器構(gòu)成+5V直流電壓源。若采用后者,可用220V市電經(jīng)整流、濾波、穩(wěn)壓后輸出穩(wěn)定的+5V的直流電為其供電。+5V穩(wěn)壓器采用CW7805,其應(yīng)用電路如圖3-9所示。圖中濾波電容C2和C4的值約為1000μF,C3和C5為0.33μF。發(fā)光二極管D6的作用是顯示讀寫器的電源是否接通,若接通則D6燈亮,無
34、接通則D6燈滅。</p><p> 圖3-9 電源電路原理圖</p><p><b> 第4章 軟件部分</b></p><p> 4.1 單片機(jī)內(nèi)部信號分析</p><p> 首先主持人按下復(fù)位按鍵,單片機(jī)進(jìn)行內(nèi)部掃描的同時主持人可以調(diào)節(jié)搶答時間和允許答題時間,在整定的時間當(dāng)中如果沒有調(diào)節(jié)搶答時間和答題時間,則
35、搶答器工作為設(shè)置的默認(rèn)值(搶答時間30s,答題時間60s)。如倒計時期間,主持人想停止倒計時可以隨時按“停止”按鍵,系統(tǒng)會自動進(jìn)入準(zhǔn)備狀態(tài),等待主持人按“搶答開始鍵”進(jìn)入下次搶答計時。同時在主持人未按下開始搶答按鈕的時候有選手搶答,則單片機(jī)發(fā)出一個選手犯規(guī)信號送入揚聲器,同時在LED數(shù)碼管上顯示選手號,以便主持人記錄。只有當(dāng)主持人按下開始搶答按鈕,此時單片機(jī)開始倒計時并送到數(shù)碼管顯示,與此同時單片機(jī)向揚聲器發(fā)一個提示信號驅(qū)動揚聲器發(fā)聲,
36、此時選手才能開始搶答。</p><p> 4.2 主要程序流程</p><p> 4.2.1 系統(tǒng)主程序流程</p><p> 系統(tǒng)主程序控制單片機(jī)系統(tǒng)按預(yù)定的操作方式運行,它是單片機(jī)系統(tǒng)程序的框架。系統(tǒng)上電后,對系統(tǒng)進(jìn)行初始化。初始化程序主要完成對單片機(jī)內(nèi)專用寄存器的設(shè)定,單片機(jī)工作方式及各端口的工作狀態(tài)的規(guī)定流程圖如圖4-1所示。</p>&
37、lt;p> 圖4-1 主要流程圖</p><p> 4.2.2 中斷程序流程</p><p> 時間調(diào)節(jié)采用中斷來實現(xiàn),流程圖如圖4-2所示,如果想調(diào)節(jié)搶答時間或答題時間,按“搶答時間調(diào)節(jié)”鍵或“答題時間調(diào)節(jié)”鍵進(jìn)入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下“加1s”鍵,如果想減一秒按一下“-1s”鍵,時間LED上會顯示改變后的時間,調(diào)整范圍為0s~9
38、9s,0s時再減1s會跳到99s,99s時再加1s會變到0s。</p><p> 圖4-2 中斷流程圖</p><p><b> 第5章 仿真及調(diào)試</b></p><p><b> 5.1 軟件仿真</b></p><p> 首先安裝keil C51軟件,建立工程,在工程目錄下建立項目,在
39、項目下編輯程序,保存在工程項目中,注意一定要設(shè)置文件后輟名,匯編語言程序為.ASM,C語言程序為.C,然后編譯仿真直到0錯誤,0警告,最后生成hex文件以備后用,如圖5-1所示。</p><p> 圖5-1 程序仿真完成</p><p><b> 5.2 硬件調(diào)試</b></p><p> 安裝硬件調(diào)試軟件Proteus ISIS,在原理
40、圖編輯區(qū)畫好硬件電路圖,設(shè)置好相應(yīng)參數(shù),導(dǎo)入hex文件。具體功能仿真如下:</p><p> 電路初始化,顯示FF F等待主持人按下開始鍵,如圖5-2所示。</p><p> 圖5-2 電路初始化</p><p> 搶答時間調(diào)至72秒時,如圖5-3所示。</p><p> 圖5-3 搶答時間調(diào)至72秒</p><p
41、> 答題時間調(diào)至67秒時,如圖5-4所示。</p><p> 圖5-4 答題時間調(diào)至67秒</p><p> 在主持人未按下開始鍵時3號選手搶答犯規(guī),顯示器顯示選手號并閃爍,同時揚聲器發(fā)聲報警,如圖5-5所示。</p><p> 圖5-5 3號選手搶答犯規(guī)</p><p> 主持人按下開始鍵,倒計時到21秒都無人搶答,顯示器顯
42、示倒計時,如圖5-6所示。</p><p> 圖5-6 無人搶答倒計時到21秒</p><p> 主持人按下開始鍵,4號選手成功搶答,顯示器顯示4號選手號,同時揚聲器短暫發(fā)聲報警,如圖5-7所示。</p><p> 圖5-7 4號選手成功搶答</p><p> 經(jīng)過調(diào)試此設(shè)計除了滿足顯示、報警、控制等設(shè)計要求外,還具有顯示犯規(guī)選手號并
43、閃爍提示、搶答時間答題時間可調(diào)等新穎的功能。還需要改進(jìn)的地方是在搶答期間或答題期間主持人按“停止”按鍵,終止搶答和答題時,揚聲器不能報警。</p><p><b> 總 結(jié)</b></p><p> 時至今日,幾個禮拜的畢業(yè)設(shè)計終于可以畫上一個句號,但是現(xiàn)在回想起畢業(yè)設(shè)計的整個過程,頗有心得!沒有接受任務(wù)以前覺得畢業(yè)設(shè)計只是對這幾年來所學(xué)知識的單純總結(jié),但是通過這
44、次做畢業(yè)設(shè)計發(fā)現(xiàn)自己以前的看法有點太片面、太偏激了。畢業(yè)設(shè)計不僅是對前面所學(xué)知識的一種檢驗,而且也是對自己能力的一種提高。下面我對整個畢業(yè)設(shè)計的過程做一下簡單的總結(jié)。</p><p> 首先,接到任務(wù)以后進(jìn)行選題。選題是畢業(yè)設(shè)計的開端,選擇恰當(dāng)?shù)?、感興趣的題目,對于整個畢業(yè)設(shè)計是否能夠順利進(jìn)行關(guān)系極大。好比走路,第一步是具有決定意義的,第一步邁向何方,需要慎重考慮。否則,就可能走許多彎路、費許多周折,甚至南轅北
45、轍,難以到達(dá)目的地。因此,選題時一定要考慮好。</p><p> 然后,就是找資料了。查找資料是做畢業(yè)設(shè)計的前期準(zhǔn)備工作。到圖書館、書店、資料室去雖說是比較原始的方式,但也有可取之處的。總之,不管通過哪種方式查的資料都是有利用價值的,要一一記錄下來以備后用。</p><p> 通過上面的過程,已經(jīng)積累了不少資料,對所選的題目也大概有了一些了解,下一步就是在這樣一個基礎(chǔ)上,綜合已有的資料
46、來更透徹的分析題目。有了研究方向,就應(yīng)該動手實現(xiàn)了。其實以前的三步都是為這一步作的鋪墊。編寫源代碼的時候最好是編寫一個小模塊就進(jìn)行調(diào)試,這樣可以避免設(shè)計的最后出現(xiàn)太多的錯誤而亂成一團(tuán)糟。每做一會兒會發(fā)現(xiàn)一處錯誤就要即時修改,就這樣不斷的修改調(diào)試,再修改再調(diào)試。</p><p> 總之,知識必須通過應(yīng)用才能實現(xiàn)其價值!有些東西認(rèn)為學(xué)會了,但真正到用的時候才發(fā)現(xiàn)是兩回事,所以我認(rèn)為只有到真正會用的時候才是真的學(xué)會了
47、。在整個畢業(yè)設(shè)計過程中使我懂得了許多東西,也培養(yǎng)了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功的喜悅。雖然這個設(shè)計還不是很完善,但是在設(shè)計過程中所學(xué)到的東西是這次畢業(yè)設(shè)計的最大收獲和財富,使我終身受益。</p><p><b> 致 謝</b></p><
48、p> 本文是在**老師的悉心指導(dǎo)下完成的,衷心感謝他在設(shè)計的寫作期間給與我的熱情幫助和指導(dǎo)。**老師淵博的知識,認(rèn)真負(fù)責(zé)的工作作風(fēng),平易近人的態(tài)度,給與我勇敢面對困難的勇氣和力量,讓我獲益匪淺。在此,向**老師表示最衷心的感謝和最誠摯的敬意。</p><p> 還要感謝我的同學(xué),他們在我的設(shè)計寫作過程中提出了很多寶貴的意見,并給了我很多啟發(fā)。感謝**學(xué)院的全體領(lǐng)導(dǎo)和老師,你們深厚的學(xué)術(shù)功底和誨人不倦的高
49、尚師德將讓我受用一生。感謝**班全班同學(xué)給予我的關(guān)心、友誼和幫助,是你們給了我美好而難忘的學(xué)習(xí)生活。</p><p> 最后,向百忙之中抽時間對本文進(jìn)行審閱,評議和參與本人論文答辯的各位老師表示感謝。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 朱永金,成友才.單片機(jī)應(yīng)用技術(shù).北京:中國勞動社會保障出版社,200
50、7</p><p> [2] 何立民.單片機(jī)高等教程.北京:航空航天大學(xué)出版社,2000</p><p> [3] 雄建云.Protel99 se EDA技術(shù)及應(yīng)用.北京:機(jī)械工業(yè)出版社,2007</p><p> [4] 林春方.電子線路學(xué)習(xí)指導(dǎo)與實訓(xùn).北京:電子工業(yè)出版社,2004</p><p><b> 附錄1 整機(jī)
51、電路圖</b></p><p><b> 附錄2 PCB板圖</b></p><p><b> PCB元器件放置面</b></p><p><b> PCB元器件焊接面</b></p><p><b> 附錄3 源程序</b></
52、p><p> OK EQU 20H;搶答開始標(biāo)志位</p><p> RING EQU 22H;響鈴標(biāo)志位</p><p><b> ORG 0000H</b></p><p><b> AJMP MAIN</b></p><p><b> ORG 0003H
53、</b></p><p> AJMP INT0SUB</p><p><b> ORG 000BH</b></p><p> AJMP T0INT</p><p><b> ORG 0013H</b></p><p> AJMP INT1SUB</
54、p><p><b> ORG 001BH</b></p><p> AJMP T1INT</p><p><b> ORG 0040H</b></p><p> MAIN: MOV R1,#30;初設(shè)搶答時間為30s</p><p> MOV R2,#60;初設(shè)答題時間
55、為60s</p><p> MOV TMOD,#11H;設(shè)置未定時器/模式1</p><p> MOV TH0,#0F0H</p><p> MOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H;50ms為一次溢出中斷&l
56、t;/p><p><b> SETB EA</b></p><p><b> SETB ET0</b></p><p><b> SETB ET1</b></p><p><b> SETB EX0</b></p><p>
57、SETB EX1;允許四個中斷,T0/T1/INT0/INT1</p><p><b> CLR OK</b></p><p><b> CLR RING</b></p><p><b> SETB TR1</b></p><p> SETB TR0;一開始就運行定時器
58、,以開始顯示FFF.如果想重新計數(shù),重置TH1/TL1就可以了</p><p> ;=====查詢程序=====</p><p> START: MOV R5,#0BH</p><p> MOV R4,#0BH</p><p> MOV R3,#0BH</p><p> ACALL DISPLAY;未開始搶答
59、時候顯示FFF</p><p> JB P3.0,NEXT;ddddddd</p><p> ACALL DELAY</p><p> JB P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢</p><p> ACALL BARK;按鍵發(fā)聲</p><p>&l
60、t;b> MOV A,R1</b></p><p> MOV R6,A;送R1->R6,因為R1中保存了搶答時間</p><p> SETB OK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答</p><p> MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號標(biāo)志,這里表示只讀一次有用信號</p><p>
61、MOV R3,#0AH;搶答只顯示計時,滅號數(shù)</p><p> AJMP COUNT;進(jìn)入倒計時程序,"查詢有效搶答的程序"在COUNT里面</p><p> NEXT: JNB P1.0,FALSE1</p><p> JNB P1.1,FALSE2</p><p> JNB P1.2,FALSE3</p
62、><p> JNB P1.3,FALSE4</p><p> JNB P1.4,FALSE5</p><p> JNB P1.5,FALSE6</p><p> JNB P1.6,FALSE7</p><p> JNB P1.7,FALSE8</p><p> AJMP START<
63、;/p><p> ;=====非法搶答處理程序=====</p><p> FALSE1: MOV R3,#01H</p><p> AJMP ERROR</p><p> FALSE2: MOV R3,#02H</p><p> AJMP ERROR</p><p> FALSE3:
64、MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: MOV R3,#04H</p><p> AJMP ERROR</p><p> FALSE5: MOV R3,#05H</p><p> AJMP ERROR</p><p> FAL
65、SE6: MOV R3,#06H</p><p> AJMP ERROR</p><p> FALSE7: MOV R3,#07H</p><p> AJMP ERROR</p><p> FALSE8: MOV R3,#08H</p><p> AJMP ERROR</p><p>
66、 ;=====INT0(搶答時間R1調(diào)整程序)=====</p><p> INT0SUB:MOV A,R1</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p><p>
67、<b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY;先在兩個時間LED上顯示R1</p><p> JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCO</p><p> JNB P3.5,DEC0;P3.5為-1s鍵,如按下
68、跳到DECO</p><p> JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO</p><p> AJMP INT0SUB</p><p> INC0: MOV A,R1</p><p> CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。</p><
69、;p> MOV R1,#00H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> ADD0: INC R1</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> DEC
70、0: MOV A,R1</p><p> JZ SETR1;如果R1為0, R1就置99,</p><p><b> DEC R1</b></p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> SETR1: MOV R1,#63H<
71、;/p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> BACK0: RETI </p><p> ;=====INT1(回答時間R2調(diào)整程序)=====</p><p> INT1SUB:MOV A,R2</p><p> MOV B,
72、#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p><p><b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPL
73、AY</p><p> JNB P3.4,INC1</p><p> JNB P3.5,DEC1</p><p> JNB P3.1,BACK1</p><p> AJMP INT1SUB</p><p> INC1: MOV A,R2</p><p> CJNE A,#63H,AD
74、D1</p><p> MOV R2,#00H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> ADD1: INC R2</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p>
75、;<p> DEC1: MOV A,R2</p><p><b> JZ SETR2</b></p><p><b> DEC R2</b></p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> S
76、ETR2: MOV R2,#63H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> BACK1: RETI </p><p> ;=====倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=====</p><p> REPEAT:MOV A,R2 ;
77、使用錦囊時重新計時</p><p><b> MOV R6,A</b></p><p><b> CLR RING </b></p><p> COUNT: MOV R0,#00H;重置定時器中斷次數(shù)</p><p> MOV TH1,#3CH</p><p> M
78、OV TL1,#0B0H;重置定時器</p><p> RECOUNT:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6</p><p> MOV B,#0AH</p><p> DIV AB;除十分出個位/十位</p><p> MOV 30H,A;十位存于(30H)</p><p>
79、; MOV 31H,B;個位存于(31H)</p><p> MOV R5,30H;取十位</p><p> MOV R4,31H;取個位</p><p><b> MOV A,R6</b></p><p> SUBB A,#07H</p><p> JNC LARGER;大于5s跳到
80、LARGER,小于等于5s會提醒</p><p><b> MOV A,R0</b></p><p> CJNE A,#0AH,FULL;1s中0.5s向下運行</p><p><b> CLR RING </b></p><p> AJMP CHECK</p><p&g
81、t; FULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并清R0,重新計</p><p><b> SETB RING</b></p><p><b> MOV A,R6</b></p><p> JZ QUIT;計時完畢</p><p> MOV R0,#00
82、H</p><p> DEC R6;一秒標(biāo)志減1</p><p> AJMP CHECK</p><p> LARGER: MOV A,R0</p><p> CJNE A,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示"</p><p> DEC R6;計時一秒R6自動減1
83、</p><p> MOV R0,#00H</p><p> CHECK: JNB P3.1,QUIT;如按下停止鍵退出</p><p> JNB OK,CHECKK ;只在回答倒計時才有效</p><p> AJMP NEXTT</p><p> CHECKK:JNB P3.0,REPEAT ;判斷是否使用
84、錦囊</p><p> NEXTT: ACALL DISPLAY</p><p> JB OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)</p><p> AJMP RECOUNT</p><p><b> ACCOUT:</b></p><p
85、><b> MOV A,36H</b></p><p> JNB ACC.0,TRUE1</p><p> JNB ACC.1,TRUE2</p><p> JNB ACC.2,TRUE3</p><p> JNB ACC.3,TRUE4</p><p> JNB ACC.4,T
86、RUE5</p><p> JNB ACC.5,TRUE6</p><p> JNB ACC.6,TZ1</p><p> JNB ACC.7,TZ2</p><p> AJMP RECOUNT</p><p> TZ1:JMP TRUE7</p><p> TZ2:JMP TRUE
87、8 </p><p> QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序</p><p><b> CLR RING</b></p><p> AJMP START</p><p> ;=====正常搶答處理程序=====</p><p> TRUE1: AC
88、ALL BARK</p><p><b> MOV A,R2</b></p><p> MOV R6,A;搶答時間R2送R6</p><p> MOV R3,#01H</p><p> CLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答</p><p> AJMP COUNT<
89、;/p><p> TRUE2:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#02H</p><p><b> CLR OK</b>&l
90、t;/p><p> AJMP COUNT</p><p> TRUE3:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#03H</p><
91、p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE4:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><
92、p> MOV R3,#04H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE5:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b>
93、 MOV R6,A</b></p><p> MOV R3,#05H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE6: ACALL BARK </p><p><b> MOV A,R2</
94、b></p><p><b> MOV R6,A</b></p><p> MOV R3,#06H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE7:ACALL BARK </p>
95、<p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#07H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><
96、;p> TRUE8:ACALL BARK </p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#08H</p><p><b> CLR OK</b></p>&
97、lt;p> AJMP COUNT</p><p> ;=====犯規(guī)搶答程序=====</p><p> ERROR: MOV R0,#00H</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p> MOV 34H,R3;犯規(guī)號數(shù)暫存與(34H)&l
98、t;/p><p> HERE: MOV A,R0</p><p> CJNE A,#06H,FLASH;0.3s向下運行->滅并停響</p><p><b> CLR RING </b></p><p> MOV R3,#0AH</p><p> MOV R4,#0AH</p&g
99、t;<p> MOV R5,#0AH;三燈全滅</p><p> AJMP CHECK1</p><p> FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計</p><p><b> SETB RING</b></p><p> MOV R0,
100、#00H</p><p> MOV R3,34H;取回號數(shù)</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH;顯示FF和號數(shù)</p><p> AJMP CHECK1</p><p> CHECK1: JNB P3.1,QUIT1</p><p>
101、ACALL DISPLAY</p><p><b> AJMP HERE</b></p><p> QUIT1: CLR RING</p><p><b> CLR OK</b></p><p> AJMP START</p><p> ;=====顯示程序====
102、=</p><p> DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,</p><p><b> MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0feH</p><p&g
103、t;<b> MOV P0,A</b></p><p> ACALL DELAY2</p><p> MOV DPTR,#DAT2</p><p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,
104、#0fdH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p><b> MOV A,R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p&g
105、t;<p><b> MOV P0,A</b></p><p> ACALL DELAY2</p><p><b> RET</b></p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H </p><p&g
106、t; ;"滅","1","2","3","4","5","6","7","8","9","滅","F"</p><p> DAT2:DB 3fh,06h,5bh,4fh,6
107、6h,6dh,7dh,07h,7fh,6fh,00H,71H</p><p> ;第一個為零,其他與上相同,因為十位如果為零顯示熄滅</p><p> ;====加減時間延時(起到不會按下就加N個數(shù))======</p><p> DELAY1: MOV 35H,#08H</p><p> LOOP0: ACALL DISPLAY&l
108、t;/p><p> DJNZ 35H,LOOP0</p><p><b> RET</b></p><p> ;=====延時4236個機(jī)器周期(去抖動用到)=====</p><p> DELAY: MOV 32H,#12H</p><p> LOOP: MOV 33H,#0AFH<
109、/p><p> LOOP1: DJNZ 33H,LOOP1</p><p> DJNZ 32H,LOOP</p><p><b> RET</b></p><p> ;=====延時4236個機(jī)器周期(顯示用到)=====</p><p> DELAY2: MOV 32H,#43H</
110、p><p> LOOP3: MOV 33H,#1EH</p><p> MOV A,R7 ;每隔60~70個機(jī)器周期讀一次P1口,全為1時為無效數(shù)據(jù),繼續(xù)讀,有一個不為1時,轉(zhuǎn)到正常搶答處理</p><p> JNZ AAAA1 ;沒讀到有效數(shù)據(jù)時繼續(xù)轉(zhuǎn)到AAAA1</p><p> LOOP2: DJNZ 33H,LOOP2</p
111、><p> DJNZ 32H,LOOP3</p><p><b> RET</b></p><p> ;=====讀搶答按鍵數(shù)據(jù)口程序=====</p><p> ;由于在讀搶答數(shù)據(jù)口的時候,單片機(jī)首先進(jìn)入倒計時程序,再調(diào)用顯示程序,最后才檢測按鍵口</p><p> ;然而在檢測按鍵口時動
112、態(tài)掃描要調(diào)用三次(4ms)延時程序.這樣就會導(dǎo)致讀數(shù)據(jù)口出現(xiàn)滯后,造成1號優(yōu)先最高.8號最低.</p><p> ;故采用在延時子程序中加了讀數(shù)據(jù)口程序.保證了靈敏度和可靠性</p><p> AAAA1: MOV A,P1</p><p> CJNE A,#0FFH,AA1 ;當(dāng)不全為1時的數(shù)據(jù)為有效數(shù)據(jù)</p><p> AA0:
113、 MOV 36H,A ;將有效數(shù)據(jù)送到36H暫存</p><p> AJMP LOOP2</p><p> AA1: DEC R7 </p><p><b> AJMP AA0</b></p><p> ;=====發(fā)聲程序=====</p><p> BARK: SETB RING&l
114、t;/p><p> ACALL DELAY1</p><p> ACALL DELAY1</p><p> CLR RING;按鍵發(fā)聲</p><p><b> RET</b></p><p> ;=====TO溢出中斷(響鈴程序)=====</p><p> T0
115、INT: MOV TH0,#0ECH</p><p> MOV TL0,#0FFH</p><p> JNB RING,OUT;</p><p> CPL P3.6;RING標(biāo)志位為1時候P3.6口不短取反使喇叭發(fā)出一定頻率的聲音</p><p><b> OUT: RETI</b></p><
116、;p> ;=====T1溢出中斷(計時程序)=====</p><p> T1INT: MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p><b> INC R0</b></p><p><b> RETI</b></p><p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字式搶答器課程設(shè)計--數(shù)字式競賽搶答器
- 單片機(jī)搶答器畢業(yè)設(shè)計---單片機(jī)搶答器設(shè)計與實現(xiàn)
- 畢業(yè)設(shè)計--基于單片機(jī)搶答器設(shè)計
- 數(shù)字式競賽搶答器課程設(shè)計
- 基于單片機(jī)的智能搶答器設(shè)計畢業(yè)設(shè)計
- 基于單片機(jī)的搶答器設(shè)計畢業(yè)設(shè)計論文
- 基于單片機(jī)的智能搶答器設(shè)計_畢業(yè)設(shè)計
- 基于單片機(jī)的搶答器設(shè)計畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計論文----基于單片機(jī)的智能搶答器
- eda課程設(shè)計---數(shù)字式競賽搶答器
- 數(shù)字式競賽搶答器設(shè)計【帶ewb文件】
- 基于51單片機(jī)的搶答器設(shè)計-畢業(yè)設(shè)計(論文)
- eda課程設(shè)計--數(shù)字式競賽搶答器設(shè)計
- 數(shù)字式競賽搶答器設(shè)計【帶ewb文件】
- 單片機(jī)搶答器設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計------單片機(jī)搶答器設(shè)計與實現(xiàn)
- 畢業(yè)設(shè)計---單片機(jī)搶答器設(shè)計與實現(xiàn)
- 數(shù)電課程設(shè)計---數(shù)字式競賽搶答器
- 數(shù)字邏輯課程設(shè)計報告--數(shù)字式競賽搶答器
- 單片機(jī)搶答器課程設(shè)計 --搶答器
評論
0/150
提交評論