2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀 繼續(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><b>  目錄</b></p><p><b>  緒論1</b></p><p>  1.1基于單片機(jī)搶答器的系統(tǒng)結(jié)構(gòu)與原理2</p><p>  1.2設(shè)計(jì)內(nèi)容和要求3</p><p><b>  2 硬件設(shè)計(jì)3</b></p>

2、<p>  2.1搶答器硬件電路圖3</p><p>  2.2搶答器各部分電路設(shè)計(jì)4</p><p>  2.2.1單片機(jī)最小系統(tǒng)的設(shè)計(jì)4</p><p>  2.2.2搶答器按鍵電路的設(shè)計(jì)6</p><p>  2.2.3中斷控制按鍵電路的設(shè)計(jì)6</p><p>  2.2.4數(shù)碼管顯示電路的設(shè)

3、計(jì)6</p><p>  2.2.5蜂鳴器報(bào)警電路的設(shè)計(jì)7</p><p>  3.1主程序設(shè)計(jì)8</p><p>  。。。。。。。。。。。。。。。。。。8</p><p>  3.2延時(shí)程序設(shè)計(jì)9</p><p>  。。。。。。。。。。。。。。。。。。。。。。。9</p><p&g

4、t;  3.3鍵盤掃描程序設(shè)計(jì)9</p><p>  。。。。。。。。。。。。。。。。。。。。。。。9</p><p>  3.4數(shù)碼管顯示程序設(shè)計(jì)10</p><p>  。。。。。。。。。。。。。。。。。。。。。10</p><p>  3.5搶答程序設(shè)計(jì)10</p><p>  。。。。。。。。。。。。

5、。。。。。。。。。10</p><p>  3.6倒計(jì)時(shí)程序設(shè)計(jì)12</p><p>  。。。。。。。。。。。。。。。。。。。。。。。。12</p><p>  3.7程序流程圖13</p><p>  。。。。。。。。。。。。。。。。。。。。。。。。13</p><p><b>  4 仿真調(diào)試

6、19</b></p><p>  4.1 仿真軟件簡(jiǎn)介19</p><p>  4.1.1 Keil 仿真軟件19</p><p>  。。。。。。。。。。。。。。。。。。。19</p><p>  4.1.2 PROTEUS仿真軟件19</p><p>  4.2 仿真調(diào)試結(jié)果19</p

7、><p><b>  結(jié)束語22</b></p><p><b>  致謝23</b></p><p><b>  緒論</b></p><p>  1.單片機(jī)搶答器的背景</p><p>  二十世紀(jì)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)

8、入的電腦時(shí)代。不過,這種電腦,通常是指?jìng)€(gè)人計(jì)算機(jī),簡(jiǎn)稱PC機(jī)。它由主機(jī)、鍵盤、顯示器等組成。還有一類計(jì)算機(jī)。大多數(shù)人卻不怎么熟悉。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的單片機(jī)(稱微控制器)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn)行簡(jiǎn)單的運(yùn)算和控制。因?yàn)樗捏w積小,通常都藏在被控機(jī)械的“肚子”里。它在整個(gè)裝置中,起著有如人類頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F(xiàn)在,這種單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、

9、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞“智能型”。在知識(shí)競(jìng)賽中,往往會(huì)用到搶答器。故此我們就選擇利用單片機(jī)編程來設(shè)計(jì)搶答器,即使兩組的搶答時(shí)間相差幾微秒,也能輕松分辨出哪一組(或哪個(gè)選手)先搶答到題。</p><p>  2.單片機(jī)搶答器的意義</p><p>  本系統(tǒng)采用單片機(jī)作為整個(gè)控制核心??刂葡到y(tǒng)的四個(gè)模塊為

10、:顯示模塊、儲(chǔ)存模塊、語音模塊、搶答模塊。該系統(tǒng)通過開關(guān)電路八個(gè)按鍵輸入搶答信號(hào),利用一個(gè)數(shù)碼管來完成顯示功能用按鍵來讓選手進(jìn)行搶答,在數(shù)碼管上顯示哪一組先答題的,從而實(shí)現(xiàn)整個(gè)搶答過程。本文主要介紹了單片機(jī)搶答器設(shè)計(jì)及工作原理,以及它的實(shí)際用途。系統(tǒng)工作原理采用AT89C51單片機(jī)作為核心??刂葡到y(tǒng)的四個(gè)模塊為:顯示模塊、儲(chǔ)存模塊、語音模塊、搶答模塊。該系統(tǒng)通過開關(guān)電路八個(gè)按鍵輸入搶答信號(hào),利用一個(gè)數(shù)碼管來完成顯示功能。工作時(shí),用按鍵通

11、過開關(guān)電路輸入各路的搶答信號(hào),經(jīng)單片機(jī)的處理,輸出控制信號(hào),單片機(jī)控制的智能搶答器設(shè)計(jì)。</p><p><b>  3.搶答器的應(yīng)用</b></p><p>  隨著我國(guó)經(jīng)濟(jì)和文化事業(yè)的發(fā)展,在很多公開競(jìng)爭(zhēng)場(chǎng)合要求有公正的競(jìng)爭(zhēng)裁決,諸如證券、股票交易及各種智力競(jìng)賽等,因此出現(xiàn)了搶答器。搶答器一般由很多電路組成,線路復(fù)雜,可靠性不高,功能也比較簡(jiǎn)單,特別是當(dāng)搶答路數(shù)多

12、時(shí),實(shí)現(xiàn)起來就更加的困難。因此我們?cè)O(shè)計(jì)了以單片機(jī)為核心的新型智能搶答器,在保留原始搶答器的基本功能的同時(shí)又增加了數(shù)碼管顯示電路實(shí)現(xiàn)了其它功能。搶答器又稱為第一信號(hào)鑒別器,其主要應(yīng)用于各種知識(shí)競(jìng)賽、文藝活動(dòng)等場(chǎng)合。</p><p><b>  1 系統(tǒng)設(shè)計(jì)方案</b></p><p>  1.1基于單片機(jī)搶答器的系統(tǒng)結(jié)構(gòu)與原理</p><p> 

13、 圖1所示為搶答器電路,搶答器電路實(shí)際上就是單片機(jī)最小系統(tǒng)的應(yīng)用,主要由單片機(jī)芯片加上時(shí)鐘電路和復(fù)位電路以及按鍵和數(shù)碼管顯示電路及報(bào)警電路組成。1~8為8個(gè) 搶答鍵。P1.0~P1.7為8路搶答信號(hào)輸入端。當(dāng)有搶答鍵按下時(shí),對(duì)應(yīng)輸入端為低電平“0”反之為高電平“1”。開始搶答鍵為搶答啟動(dòng)鍵。在搶答開始時(shí),按動(dòng)一下開始搶答鍵,向單片機(jī)申請(qǐng)一次INTO中斷單片機(jī)在中斷服務(wù)程序中對(duì)搶答信號(hào)進(jìn)行采樣和識(shí)別處理。</p><p

14、>  采用四位LED共陰極數(shù)碼管以動(dòng)態(tài)掃描方式對(duì)搶答鍵號(hào)、違規(guī)搶答鍵號(hào)、倒計(jì)時(shí)時(shí)間等信息進(jìn)行顯示。蜂鳴器對(duì)違規(guī)搶答信號(hào)進(jìn)行報(bào)警,以示出錯(cuò)警告。 </p><p><b>  圖1 搶答器電路圖</b></p><p>  1.2設(shè)計(jì)內(nèi)容和要求</p><p>  本系統(tǒng)的設(shè)計(jì)內(nèi)容和要求如下:</p><p>  1

15、. 主持人按“搶答開始”鍵,立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)15s搶答時(shí)間),如果有選手搶答,并會(huì)顯示其號(hào)碼并立刻進(jìn)入回答時(shí)間(預(yù)設(shè)30s搶答時(shí)間),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。</p><p>  2. 如果主持人未按“搶答開始”鍵,而有人按了搶答鍵,犯規(guī)搶答,LED上顯示犯規(guī)號(hào)數(shù)并揚(yáng)聲器發(fā)聲連續(xù)響十下。</p><p>  3. P3.2為開始搶答,P3.6為停止,p1.0

16、-p1.7為八路搶答輸入,數(shù)碼管選P0口,位選P2口低4位,蜂鳴器輸出為P3.7口。</p><p><b>  2 硬件設(shè)計(jì)</b></p><p>  2.1搶答器硬件電路圖</p><p>  搶答器硬件電路圖如圖1所示,主要包括以下幾部分:</p><p> ?。?)單片機(jī)最小系統(tǒng)電路:</p>

17、<p>  單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng):是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:?jiǎn)纹瑱C(jī)、晶振電路、復(fù)位電路。</p><p>  復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來決定.典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位,所以,適當(dāng)組合RC的取值就可以保證可靠

18、的復(fù)位。一般教科書推薦C 取10u,R取10K。</p><p> ?。?)搶答按鍵電路:</p><p>  搶答按鍵電路由8個(gè)按鈕和8個(gè)均值的電阻通過總線連接在AT89C51的P1.0至P1.7實(shí)現(xiàn)功能。</p><p> ?。?)中斷控制按鍵電路:</p><p>  由兩個(gè)10K的電阻,和兩個(gè)按鈕通過圖7的連接,并且D0、D1分別連接

19、在AT89C51芯片的P3.2口和P3.6.其中一個(gè)按鈕為開始搶答鍵,另一個(gè)為復(fù)位鍵。</p><p> ?。?)數(shù)碼管顯示電路:</p><p>  由七段數(shù)碼管7SEG-MPX-CA、RESPACK-8、74LS244及導(dǎo)線按圖8連接</p><p>  其中74LS244主要用于三態(tài)輸出,作為地址驅(qū)動(dòng)器、時(shí)鐘驅(qū)動(dòng)器、總線驅(qū)動(dòng)器和定向發(fā)送器等.</p>

20、;<p> ?。?)蜂鳴器報(bào)警電路:</p><p>  由一個(gè)200歐的電阻和SPEAKER連接,其中揚(yáng)聲器的一端與電阻相連,另一端連在AT89C51P3.7口。揚(yáng)聲器起到報(bào)警作用,若有選手出現(xiàn)搶答犯規(guī),則揚(yáng)聲器發(fā)聲。</p><p>  2.2搶答器各部分電路設(shè)計(jì)</p><p>  2.2.1單片機(jī)最小系統(tǒng)的設(shè)計(jì)</p><p

21、>  單片機(jī)的最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作</p><p>  的系統(tǒng)。對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括單片機(jī)芯片,時(shí)鐘電路和復(fù)位電路等三部分組成。最小系統(tǒng)電路圖如圖2所示。</p><p>  圖2 單片機(jī)最小系統(tǒng)圖</p><p>  2.2.1.1時(shí)鐘電路設(shè)計(jì)</p><p>  

22、時(shí)鐘電路用于產(chǎn)生MCS-51單片機(jī)工作所必需的時(shí)鐘控制信號(hào)。時(shí)鐘頻率直接影響單片機(jī)的速度,電路的質(zhì)量直接影響系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。</p><p><b> ?。?)內(nèi)部時(shí)鐘方式</b></p><p>  利用芯片內(nèi)部的振蕩器,然后在引腳XTALl和XTAL2兩端跨接晶體振蕩器(簡(jiǎn)稱晶振),就構(gòu)成了穩(wěn)定的自激振蕩器,發(fā)出

23、的脈沖直接送入內(nèi)部時(shí)鐘電路。具體的接線方法如圖3所示。外接晶振時(shí),C l和C2的值通常選擇為30pF左右;C l、C2對(duì)頻率有微調(diào)作用,晶振或陶瓷諧振器的頻率范圍可在1.2~12MHz之間選擇,其典型值為12MHz或6MHz。某些高速單片機(jī)芯片的時(shí)鐘頻率已達(dá)40MHz。</p><p><b> ?。?)外部時(shí)鐘方式</b></p><p>  外部時(shí)鐘信號(hào)由外部振蕩

24、器產(chǎn)生,它的波形應(yīng)為方波,頻率應(yīng)符合所用的MCS-51單片機(jī)的具體要求。接入外部時(shí)鐘時(shí),應(yīng)根據(jù)不同類型的單片機(jī),選擇相應(yīng)的連線方式,如圖4所示。</p><p>  本系統(tǒng)采用內(nèi)部時(shí)鐘電路方式。</p><p>  圖3 MCS-51采用內(nèi)部時(shí)鐘的接線圖</p><p>  圖4 MCS-51單片機(jī)與外部時(shí)鐘的連接方式</p><p>  

25、2.2.1.2復(fù)位電路設(shè)計(jì)</p><p>  如圖5(a)所示為開機(jī)復(fù)位電路,也稱上電復(fù)位電路,由電容C1和電阻R1組成,一般C1取10uF,R1取8.2KΩ。上電復(fù)位電路是利用電容兩端電壓不能突變的原理實(shí)現(xiàn)的。當(dāng)斷電時(shí),電容C1經(jīng)放電后電荷為0;當(dāng)上電時(shí),由于電容兩端電壓不能突變,RST端的電平為高電平,隨著電容的充電,RST端的電位逐漸降低,最終變?yōu)?。從上電到電容充電結(jié)束,RST端的電平由高電平到低電平,

26、只要選擇合適的電容、電阻參數(shù),就能夠保證兩個(gè)以上機(jī)器周期的復(fù)位高電平時(shí)間,從而保證復(fù)位的實(shí)現(xiàn)。</p><p>  如圖5(b)所示為開機(jī)復(fù)位與人工復(fù)位電路也稱按鍵復(fù)位電路。在系統(tǒng)運(yùn)行過程中,只要按下按鍵就可以復(fù)位。一般R1=1KΩ,R2=200Ω,C=22uF,按下按鍵,可以簡(jiǎn)單看成兩個(gè)電阻串聯(lián),因?yàn)镽1的電阻大,因而RST分壓為高電平,系統(tǒng)復(fù)位,松開按鍵后RST電壓給C充電,隨著電容的充電,RST端的電位逐漸

27、降低,最終變?yōu)?。系統(tǒng)開始工作。</p><p>  本系統(tǒng)采用按鍵復(fù)位電路。</p><p>  (a)開機(jī)復(fù)位電路 (b)開機(jī)復(fù)位/人工復(fù)位電路</p><p>  圖5 MCS-51單片機(jī)的復(fù)位電路</p><p>  2.2.2搶答器按鍵電路的設(shè)計(jì)</p><p>  搶答器輸入信號(hào)由八個(gè)按鍵控制,當(dāng)有鍵按下的

28、時(shí)候,就會(huì)產(chǎn)生有效的輸入信號(hào),本設(shè)計(jì)使用了上拉電阻把輸入信號(hào)先嵌位在高電平,當(dāng)有按鍵按下時(shí)便使與這個(gè)按鍵相連的引腳變成低電平,產(chǎn)生一個(gè)低電平的輸入信號(hào)。</p><p>  圖6 搶答器按鍵電路</p><p>  2.2.3中斷控制按鍵電路的設(shè)計(jì)</p><p>  如圖7為中斷按鍵控制電路,其中有兩個(gè)按鍵D0、D1分別連接在AT89C51芯片的P3.2口和P3.

29、6.其中一個(gè)按鈕為開始搶答鍵,另一個(gè)為復(fù)位鍵。開始搶答按鈕由主持人按,當(dāng)主持人按下開始搶答后,選手方可搶答,否則視為搶答違規(guī);另一按鈕為復(fù)位按鈕,搶答到的選手在限制的時(shí)間內(nèi)回答問題,若選手提前回答完畢,則主持人可通過復(fù)位鍵進(jìn)行下一輪的搶答。</p><p>  圖7 中斷按鍵控制電路</p><p>  2.2.4數(shù)碼管顯示電路的設(shè)計(jì)</p><p>  本設(shè)計(jì)使

30、用七段數(shù)碼管顯示,通常在顯示上我們采用的方法一般包括兩種:一種是靜態(tài)顯示,一種是動(dòng)態(tài)顯示。其中靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,程序編寫簡(jiǎn)單,但占用端口資源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但相對(duì)靜態(tài)顯示而言占用資源少。本設(shè)計(jì)采用的是動(dòng)態(tài)顯示方法。</p><p>  圖8 數(shù)碼管顯示電路</p><p>  圖8中數(shù)碼管采用的是4位七段共陰極數(shù)碼管,其中A~H段分別接

31、到單片機(jī)的P0口,由單片機(jī)輸出P0口數(shù)據(jù)來決定段碼值,位選碼COM1、COM2、COM3、COM4分別接到單片機(jī)的P2.0、P2.1、P2.2、P2.3,由單片機(jī)來決定當(dāng)前該顯示的哪一位。圖中還有八個(gè)10K的電阻,連接在P0口上,用作P0口的上拉電阻,保證P0口沒有數(shù)據(jù)輸出時(shí)候出于高電平狀態(tài)。</p><p>  2.2.5蜂鳴器報(bào)警電路的設(shè)計(jì)</p><p>  我們知道,聲音的頻譜范圍

32、約在幾十到幾千赫茲,若能利用程序來控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)控制高或低電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音頻,使喇叭發(fā)出不同的聲音。圖9中單片機(jī)的14腳輸出具有復(fù)合功能,此處用到了單片機(jī)17腳的IO端口功能,單片機(jī)通過內(nèi)部定時(shí)器的操作實(shí)現(xiàn)交替變換的波形輸出驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。</p><p>  圖9 蜂鳴器報(bào)警

33、電路</p><p><b>  3 軟件設(shè)計(jì)</b></p><p>  程序總體說明:實(shí)現(xiàn)搶答器功能的程序主要包括:主程序,沒有進(jìn)入中斷時(shí),掃描選手是否犯規(guī),有選手犯規(guī),蜂鳴器叫,并顯示選手號(hào);延時(shí)程序;鍵盤掃描程序,判斷是否有按鍵按下,有按鍵按下時(shí)返回鍵值;數(shù)據(jù)顯示程序,數(shù)碼管數(shù)據(jù)顯示,倒計(jì)時(shí)和座位號(hào);外部中斷0,搶答程序;T0 定時(shí)中斷,倒計(jì)時(shí)程序等。分別介

34、紹如下,程序清單見附錄。</p><p><b>  3.1主程序設(shè)計(jì)</b></p><p>  void main()</p><p><b>  {</b></p><p>  uchar i,j;</p><p><b>  P1=0XFF;</b&g

35、t;</p><p><b>  P2=0XFF;</b></p><p><b>  P0=0XFF;</b></p><p>  TMOD=0X01; //定時(shí)中斷初始化</p><p><b>  TH0=0X3C;</b></p><p>

36、<b>  TL0=0XB0;</b></p><p><b>  EA=1;</b></p><p><b>  EX0=1;</b></p><p><b>  ET0=1;</b></p><p><b>  IT0=1;</b>

37、;</p><p><b>  PT0=1;</b></p><p><b>  ss=10;</b></p><p><b>  s=10;</b></p><p><b>  while(1)</b></p><p><b

38、>  {</b></p><p>  keyscan(); </p><p>  if(kk!=9) //有選手犯規(guī)</p><p><b>  {</b></p><p>  for(i=0;i<100;i++)</p><p><b>  {</b

39、></p><p>  keyscan(); </p><p><b>  P2=0x08;</b></p><p>  P0=~codekey[kk+1];</p><p>  delay(10); //顯示犯規(guī)的選手</p><p>  for(j=0;j<3;j++)&

40、lt;/p><p><b>  {</b></p><p>  naba=0; //蜂鳴器叫</p><p>  delay(10);</p><p><b>  naba=1;</b></p><p>  delay(10);</p><p><

41、;b>  }</b></p><p><b>  }</b></p><p><b>  kk=9;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><

42、b>  }</b></p><p><b>  3.2延時(shí)程序設(shè)計(jì)</b></p><p>  void delay(uchar t1)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=0;i

43、<t1;i++)</p><p>  for(j=0;j<143;j++);</p><p><b>  }</b></p><p>  3.3鍵盤掃描程序設(shè)計(jì)</p><p>  uchar keyscan() </p><p><b>  {</b><

44、/p><p>  uchar key;</p><p><b>  P1=0xff;</b></p><p><b>  key=P1;</b></p><p>  if(key!=0xff)</p><p><b>  {</b></p>&

45、lt;p>  delay(10); //延時(shí)去抖</p><p>  if(key!=0xff)</p><p><b>  {</b></p><p>  switch(key)</p><p><b>  {</b></p><p>  case 0xfe: kk

46、=0;break;</p><p>  case 0xfd: kk=1;break;</p><p>  case 0xfb: kk=2;break;</p><p>  case 0xf7: kk=3;break;</p><p>  case 0xef: kk=4;break;</p><p>  case 0x

47、df: kk=5;break;</p><p>  case 0xbf: kk=6;break;</p><p>  case 0x7f: kk=7;break;</p><p><b>  }</b></p><p>  return(kk);</p><p><b>  }

48、</b></p><p><b>  }</b></p><p>  return(9);</p><p><b>  }</b></p><p>  3.4數(shù)碼管顯示程序設(shè)計(jì)</p><p>  void display()</p><p&g

49、t;<b>  {</b></p><p><b>  P2=0X01;</b></p><p>  P0=~codekey[ss];</p><p>  delay(10);</p><p><b>  P2=0x02;</b></p><p>  P

50、0=~codekey[s];</p><p>  delay(10);</p><p><b>  P2=0x04;</b></p><p><b>  P0=~0xc0;</b></p><p>  delay(10);</p><p><b>  P2=0x08

51、;</b></p><p>  P0=~codekey[kk+1];</p><p>  delay(10);</p><p><b>  }</b></p><p><b>  3.5搶答程序設(shè)計(jì)</b></p><p>  void int0() inter

52、rupt 0</p><p><b>  {</b></p><p><b>  naba=1;</b></p><p><b>  rst=1;</b></p><p><b>  TR0=1;</b></p><p><b

53、>  s=3;</b></p><p><b>  ss=0;</b></p><p><b>  kk=9;</b></p><p>  while(s!=0) //3s的倒計(jì)時(shí)</p><p><b>  {</b></p><p&

54、gt;  display();</p><p><b>  }</b></p><p><b>  s=5;</b></p><p><b>  ss=1;</b></p><p>  while((s||ss)!=0&&kk==9) //15秒的搶答時(shí)間,時(shí)

55、間到或者有選手按下時(shí),跳出循環(huán)</p><p><b>  {</b></p><p>  keyscan();</p><p>  display();</p><p><b>  }</b></p><p><b>  if(kk!=9)</b>&l

56、t;/p><p><b>  {</b></p><p><b>  s=0;</b></p><p><b>  ss=3;</b></p><p>  while(rst==1&&(s||ss)!=0)</p><p><b>

57、  {</b></p><p>  display();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p><b>  s=10;<

58、;/b></p><p><b>  ss=10;</b></p><p><b>  kk=9;</b></p><p><b>  P2=0x08;</b></p><p><b>  P0=~0x80;</b></p><p

59、>  delay(10);</p><p>  //display();</p><p><b>  }</b></p><p>  3.6 倒計(jì)時(shí)程序設(shè)計(jì)</p><p>  void time() interrupt 1</p><p><b>  {</b>&l

60、t;/p><p>  uchar rr,ms;</p><p><b>  rr=0;</b></p><p><b>  TH0=0X3C;</b></p><p><b>  TL0=0XB0;</b></p><p><b>  ms++;&

61、lt;/b></p><p>  if(ms==20)</p><p><b>  {</b></p><p><b>  ms=0;</b></p><p><b>  if(s!=0)</b></p><p><b>  {</

62、b></p><p><b>  if(s>0)</b></p><p><b>  s--;</b></p><p><b>  if(s==0)</b></p><p><b>  rr=1;</b></p><p>

63、;<b>  }</b></p><p>  if(rr!=1&ss!=0&s==0)</p><p><b>  {</b></p><p><b>  rr=0;</b></p><p><b>  ss--;</b></p>

64、;<p><b>  s=9;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3.7程序流程圖</b><

65、;/p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  sbit rst=P3^6; //復(fù)位鍵</p><p>  sbit naba=P3^7; //蜂鳴器</p><p>  uchar s,ss;

66、 //倒計(jì)時(shí)的位秒,十秒</p><p>  uchar kk=9; //鍵值</p><p>  uchar codekey[]={0x3f,0x06,0x5b,0x4f,0x66,</p><p>  0x6d,0x7d,0x07,0x7f,0x6f,0x3f}; //0~9 數(shù)碼管的編號(hào)</p><p>  void dela

67、y(uchar t1);//延時(shí)函數(shù)</p><p>  uchar keyscan();//鍵盤掃描</p><p>  void display(); //數(shù)據(jù)顯示</p><p>  //**************************************************************//</p><p>&l

68、t;b>  //延時(shí)函數(shù)//</b></p><p>  //**************************************************************//</p><p>  void delay(uchar t1)</p><p><b>  {</b></p><p&

69、gt;  uchar i,j;</p><p>  for(i=0;i<t1;i++)</p><p>  for(j=0;j<143;j++);</p><p><b>  }</b></p><p>  //*************************************************

70、*************//</p><p>  //判斷是否有按鍵按下,有按鍵按下時(shí)返回鍵值//</p><p>  //*************************************************************//</p><p>  uchar keyscan() </p><p><b>

71、  {</b></p><p>  uchar key;</p><p><b>  P1=0xff;</b></p><p><b>  key=P1;</b></p><p>  if(key!=0xff)</p><p><b>  {</b

72、></p><p>  delay(10); //延時(shí)去抖</p><p>  if(key!=0xff)</p><p><b>  {</b></p><p>  switch(key)</p><p><b>  {</b></p><p&g

73、t;  case 0xfe: kk=0;break;</p><p>  case 0xfd: kk=1;break;</p><p>  case 0xfb: kk=2;break;</p><p>  case 0xf7: kk=3;break;</p><p>  case 0xef: kk=4;break;</p>&

74、lt;p>  case 0xdf: kk=5;break;</p><p>  case 0xbf: kk=6;break;</p><p>  case 0x7f: kk=7;break;</p><p><b>  }</b></p><p>  return(kk);</p><

75、p><b>  }</b></p><p><b>  }</b></p><p>  return(9);</p><p><b>  }</b></p><p>  //*************************************************

76、************//</p><p>  //數(shù)碼管數(shù)據(jù)顯示,倒計(jì)時(shí)和座位號(hào)//</p><p>  //************************************************************//</p><p>  void display()</p><p><b>  {</b&

77、gt;</p><p><b>  P2=0X01;</b></p><p>  P0=~codekey[ss];</p><p>  delay(10);</p><p><b>  P2=0x02;</b></p><p>  P0=~codekey[s];</p&

78、gt;<p>  delay(10);</p><p><b>  P2=0x04;</b></p><p><b>  P0=~0xc0;</b></p><p>  delay(10);</p><p><b>  P2=0x08;</b></p>

79、<p>  P0=~codekey[kk+1];</p><p>  delay(10);</p><p><b>  }</b></p><p>  //**********************************************************//</p><p>  //T0

80、 定時(shí)中斷,倒計(jì)時(shí)//</p><p>  //**********************************************************//</p><p>  void time() interrupt 1</p><p><b>  {</b></p><p>  uchar rr,ms;

81、</p><p><b>  rr=0;</b></p><p><b>  TH0=0X3C;</b></p><p><b>  TL0=0XB0;</b></p><p><b>  ms++;</b></p><p>  i

82、f(ms==20)</p><p><b>  {</b></p><p><b>  ms=0;</b></p><p><b>  if(s!=0)</b></p><p><b>  {</b></p><p><b&g

83、t;  if(s>0)</b></p><p><b>  s--;</b></p><p><b>  if(s==0)</b></p><p><b>  rr=1;</b></p><p><b>  }</b></p>

84、<p>  if(rr!=1&ss!=0&s==0)</p><p><b>  {</b></p><p><b>  rr=0;</b></p><p><b>  ss--;</b></p><p><b>  s=9;</b

85、></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //***********************************************************//

86、</p><p>  //外部中斷0,進(jìn)入搶答階段//</p><p>  //***********************************************************//</p><p>  void int0() interrupt 0</p><p><b>  {</b></p

87、><p><b>  naba=1;</b></p><p><b>  rst=1;</b></p><p><b>  TR0=1;</b></p><p><b>  s=3;</b></p><p><b>  ss=

88、0;</b></p><p><b>  kk=9;</b></p><p>  while(s!=0) //3s的倒計(jì)時(shí)</p><p><b>  {</b></p><p>  display();</p><p><b>  }</b&

89、gt;</p><p><b>  s=5;</b></p><p><b>  ss=1;</b></p><p>  while((s||ss)!=0&&kk==9) //15秒的搶答時(shí)間,時(shí)間到或者有選手按下時(shí),跳出循環(huán)</p><p><b>  {</b&

90、gt;</p><p>  keyscan();</p><p>  display();</p><p><b>  }</b></p><p><b>  if(kk!=9)</b></p><p><b>  {</b></p>&l

91、t;p><b>  s=0;</b></p><p><b>  ss=3;</b></p><p>  while(rst==1&&(s||ss)!=0)</p><p><b>  {</b></p><p>  display();</p>

92、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  TR0=0;</b></p><p><b>  s=10;</b></p><p><b>  ss=10;</b>

93、</p><p><b>  kk=9;</b></p><p><b>  P2=0x08;</b></p><p><b>  P0=~0x80;</b></p><p>  delay(10);</p><p>  //display();<

94、;/p><p><b>  }</b></p><p>  //***********************************************************//</p><p>  //主函數(shù),沒有進(jìn)入中斷時(shí),掃描選手是否犯規(guī),有選手犯規(guī),蜂鳴器叫,并顯示選手號(hào)//</p><p>  //****

95、*******************************************************//</p><p>  void main()</p><p><b>  {</b></p><p>  uchar i,j;</p><p><b>  P1=0XFF;</b><

96、;/p><p><b>  P2=0XFF;</b></p><p><b>  P0=0XFF;</b></p><p>  TMOD=0X01; //定時(shí)中斷初始化</p><p><b>  TH0=0X3C;</b></p><p><b

97、>  TL0=0XB0;</b></p><p><b>  EA=1;</b></p><p><b>  EX0=1;</b></p><p><b>  ET0=1;</b></p><p><b>  IT0=1;</b><

98、/p><p><b>  PT0=1;</b></p><p><b>  ss=10;</b></p><p><b>  s=10;</b></p><p><b>  while(1)</b></p><p><b> 

99、 {</b></p><p>  keyscan(); </p><p>  if(kk!=9) //有選手犯規(guī)</p><p><b>  {</b></p><p>  for(i=0;i<100;i++)</p><p><b>  {</b>&

100、lt;/p><p>  keyscan(); </p><p><b>  P2=0x08;</b></p><p>  P0=~codekey[kk+1];</p><p>  delay(10); //顯示犯規(guī)的選手</p><p>  for(j=0;j<3;j++)</p

101、><p><b>  {</b></p><p>  naba=0; //蜂鳴器叫</p><p>  delay(10);</p><p><b>  naba=1;</b></p><p>  delay(10);</p><p><b>

102、;  }</b></p><p><b>  }</b></p><p><b>  kk=9;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

103、  }</b></p><p><b>  4 仿真調(diào)試</b></p><p>  4.1 仿真軟件簡(jiǎn)介</p><p>  4.1.1 Keil 仿真軟件</p><p>  Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性

104、、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。&l

105、t;/p><p>  4.1.2 PROTEUS仿真軟件</p><p>  Proteus軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件(該軟件中國(guó)總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力

106、于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Corte

107、x和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。</p><p>  4.2 仿真調(diào)試結(jié)果</p><p>  (1)搶答犯規(guī)顯示,且揚(yáng)聲器發(fā)聲,仿真結(jié)果如圖10所示。</p><p>  圖10 搶答犯規(guī)仿真圖</p><p>  (2)搶答器開始時(shí)數(shù)碼管顯示序號(hào)0,選手搶答

108、實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。搶答后顯示優(yōu)先搶答者序號(hào),并且不出現(xiàn)其他搶答者的序號(hào),仿真結(jié)果如圖11所示。</p><p>  圖11 開始搶答仿真圖</p><p>  (3)搶答器具有定時(shí)搶答功能,仿真結(jié)果如圖12所示。</p><p>  圖12定時(shí)搶答仿真圖</p><p>  (4)主持人按下復(fù)位開

109、關(guān),使得搶答器再次進(jìn)入禁止?fàn)顟B(tài),選手編號(hào)的LED數(shù)字顯示器燈熄滅,電路進(jìn)入原來的初始狀態(tài),準(zhǔn)備進(jìn)入下一輪的搶答,仿真結(jié)果如圖13所示。</p><p><b>  圖XX 復(fù)位仿真圖</b></p><p><b>  圖13復(fù)位仿真圖</b></p><p><b>  結(jié)束語</b></p&

110、gt;<p>  通過本次課程設(shè)計(jì)使我對(duì)Proteus仿真軟件的使用有了更進(jìn)一步的了解和掌控。在最初編寫過程中,我也曾經(jīng)因?yàn)閷?shí)踐經(jīng)驗(yàn)的缺乏失落過,也曾經(jīng)因仿真成功而熱情高漲。特別是Proteus仿真軟件的使用,不知是由于電腦的問題還是怎么,這個(gè)軟件的安裝花了我很長(zhǎng)的時(shí)間,好不容易安裝好了,自己對(duì)編程又有點(diǎn)不熟練,只能自己多看書,當(dāng)我把程序?qū)胄酒?,進(jìn)行仿真時(shí),也沒能一次成功,總是要經(jīng)過無數(shù)次的更改才能實(shí)現(xiàn)結(jié)果,程序正常運(yùn)行

111、的那一刻,心中真是有幾分的喜悅。對(duì)能力強(qiáng)的人來說是挺簡(jiǎn)單的,但對(duì)我來說,真是花了不少的心血啊。</p><p>  這次課程設(shè)計(jì)讓我充分理解了AT89C51芯片的工作原理,知道了搶答器的硬件和軟件的實(shí)現(xiàn)過程,并且通過自己動(dòng)手編寫程序來控制搶答器的工作,我感到非常有成就感,也鍛煉了我的編程能力。在剛開始編程的時(shí)候,我感到很茫然,不知道怎么樣下手,但是通過自己的仔細(xì)分析和老師的細(xì)心認(rèn)真分析了原來已有的代碼后,和應(yīng)有的

112、硬件后,經(jīng)過多次調(diào)試和測(cè)試終于成功了。</p><p>  在此我非常感謝的是我的指導(dǎo)老師何玲老師,感謝老師的細(xì)心認(rèn)真的輔導(dǎo),交給我許多原來不知道的知識(shí)。這次課程設(shè)計(jì)能夠順利的完成,當(dāng)然有我個(gè)人的努力,但同時(shí)也離不開指導(dǎo)老師和同學(xué)們的幫助。</p><p><b>  致謝</b></p><p>  本論文自始至終是在xx老師的關(guān)心和指導(dǎo)下完

113、成的。導(dǎo)師為論文課題的研究提出了許</p><p>  多指導(dǎo)性的意見,為論文的撰寫、修改提出了許多具體的指導(dǎo)和幫助。在兩年的學(xué)習(xí)中,xx老師在學(xué)習(xí)上給了我極大的幫助,何xx老師豐富的實(shí)踐經(jīng)驗(yàn)給我留下了深刻的印象,這一切將使我終生受益。在此,衷心感謝x老師對(duì)我的培養(yǎng)與教育。</p><p>  感謝在這段時(shí)間xx同學(xué)對(duì)我的幫助,在近三年的學(xué)習(xí)中,我們進(jìn)行了無數(shù)次有益的</p>

114、<p>  學(xué)術(shù)探討,在這過程中受益匪淺,令人難忘! 另外,還要感謝電子工程系老師在兩年中為我們付出的辛勤勞動(dòng)。他們不僅給與我專業(yè)知識(shí)上的指導(dǎo)還教給了我學(xué)習(xí)的方法和思路,使我在社會(huì)生活及論文寫作過程中不斷有新的認(rèn)識(shí)和提高。在此,我對(duì)他們表示由衷的感謝。 </p><p>  感謝所有關(guān)心和幫助過我的朋友和師長(zhǎng)!在此,向他們致以深深的謝意!</p><p><b&g

115、t;  參考文獻(xiàn)</b></p><p>  [1]王迎旭.《單片機(jī)原理與應(yīng)用》.  機(jī)械工業(yè)出版社 2009年</p><p>  [2]程相波,衛(wèi)安軍. 基于MCS-51單片機(jī)的八路搶答器設(shè)計(jì)方法研究【J】.北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2007,(2)。</p><p>  [3]林凌,李剛,丁茹,李小霞,新型單片機(jī)接口器件與技術(shù)。西安電子科

116、技大學(xué)出版社,2005</p><p>  [4]李增生,對(duì)《搶答器》的改進(jìn)【J】,電子制作,2000,(12)</p><p>  [5]馬軻瀛,八路搶答器系統(tǒng)【J】,華裔,2007,(23)</p><p>  [6]高偉,AT89單片機(jī)原理及應(yīng)用【M】,北京:國(guó)防工業(yè)出版社,2008年</p><p>  [7]蔡朝陽,單片機(jī)控制實(shí)習(xí)與

117、專題制作【M】,北京:北京航空航天大學(xué)出版社,2006年</p><p>  [8]楊凌霄,微型計(jì)算機(jī)原理及應(yīng)用【M】,江蘇:中國(guó)礦業(yè)大學(xué)出版社,2004年</p><p>  [9]丁建偉,搶答器電路設(shè)計(jì)【J】,蘭州工業(yè)高等??茖W(xué)校學(xué)報(bào),2008,(04)</p><p>  [10]胡雪海,單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)【M】,北京:北京電子工業(yè)出版社,2005年&l

118、t;/p><p><b>  附錄</b></p><p><b>  程序清單:</b></p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  sbit rst=P3^

119、6; //復(fù)位鍵</p><p>  sbit naba=P3^7; //蜂鳴器</p><p>  uchar s,ss; //倒計(jì)時(shí)的位秒,十秒</p><p>  uchar kk=9; //鍵值</p><p>  uchar codekey[]={0x3f,0x06,0x5b,0x4f,0x66,</p&

120、gt;<p>  0x6d,0x7d,0x07,0x7f,0x6f,0x3f}; //0~9 數(shù)碼管的編號(hào)</p><p>  void delay(uchar t1);//延時(shí)函數(shù)</p><p>  uchar keyscan();//鍵盤掃描</p><p>  void display(); //數(shù)據(jù)顯示</p><p>

121、;  //**************************************************************//</p><p><b>  //延時(shí)函數(shù)//</b></p><p>  //**************************************************************//</p>

122、<p>  void delay(uchar t1)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=0;i<t1;i++)</p><p>  for(j=0;j<143;j++);</p><p><

123、b>  }</b></p><p>  //**************************************************************//</p><p>  //判斷是否有按鍵按下,有按鍵按下時(shí)返回鍵值//</p><p>  //*****************************************

124、********************//</p><p>  uchar keyscan() </p><p><b>  {</b></p><p>  uchar key;</p><p><b>  P1=0xff;</b></p><p><b>  

125、key=P1;</b></p><p>  if(key!=0xff)</p><p><b>  {</b></p><p>  delay(10); //延時(shí)去抖</p><p>  if(key!=0xff)</p><p><b>  {</b><

126、/p><p>  switch(key)</p><p><b>  {</b></p><p>  case 0xfe: kk=0;break;</p><p>  case 0xfd: kk=1;break;</p><p>  case 0xfb: kk=2;break;</p>

127、<p>  case 0xf7: kk=3;break;</p><p>  case 0xef: kk=4;break;</p><p>  case 0xdf: kk=5;break;</p><p>  case 0xbf: kk=6;break;</p><p>  case 0x7f: kk=7;break;&

128、lt;/p><p><b>  }</b></p><p>  return(kk);</p><p><b>  }</b></p><p><b>  }</b></p><p>  return(9);</p><p><

129、b>  }</b></p><p>  //*************************************************************//</p><p>  //數(shù)碼管數(shù)據(jù)顯示,倒計(jì)時(shí)和座位號(hào)//</p><p>  //***********************************************

130、*************//</p><p>  void display()</p><p><b>  {</b></p><p><b>  P2=0X01;</b></p><p>  P0=~codekey[ss];</p><p>  delay(10);<

131、;/p><p><b>  P2=0x02;</b></p><p>  P0=~codekey[s];</p><p>  delay(10);</p><p><b>  P2=0x04;</b></p><p><b>  P0=~0xc0;</b>&

132、lt;/p><p>  delay(10);</p><p><b>  P2=0x08;</b></p><p>  P0=~codekey[kk+1];</p><p>  delay(10);</p><p><b>  }</b></p><p>

133、;  //**********************************************************//</p><p>  //T0 定時(shí)中斷,倒計(jì)時(shí)//</p><p>  //**********************************************************//</p><p>  void time

134、() interrupt 1</p><p><b>  {</b></p><p>  uchar rr,ms;</p><p><b>  rr=0;</b></p><p><b>  TH0=0X3C;</b></p><p><b>

135、  TL0=0XB0;</b></p><p><b>  ms++;</b></p><p>  if(ms==20)</p><p><b>  {</b></p><p><b>  ms=0;</b></p><p><b>

136、;  if(s!=0)</b></p><p><b>  {</b></p><p><b>  if(s>0)</b></p><p><b>  s--;</b></p><p><b>  if(s==0)</b></p&g

137、t;<p><b>  rr=1;</b></p><p><b>  }</b></p><p>  if(rr!=1&ss!=0&s==0)</p><p><b>  {</b></p><p><b>  rr=0;</b&

138、gt;</p><p><b>  ss--;</b></p><p><b>  s=9;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論