基于STC89C52單片機(jī)的8路搶答器設(shè)計(已處理)_第1頁
基于STC89C52單片機(jī)的8路搶答器設(shè)計(已處理)_第2頁
基于STC89C52單片機(jī)的8路搶答器設(shè)計(已處理)_第3頁
基于STC89C52單片機(jī)的8路搶答器設(shè)計(已處理)_第4頁
基于STC89C52單片機(jī)的8路搶答器設(shè)計(已處理)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于stc89c52單片機(jī)的8路搶答器設(shè)計 目錄 摘要.2第一章 緒論.3第二章 系統(tǒng)總體方案設(shè)計4 2.1 設(shè)計任務(wù)及要求.4 2.2 系統(tǒng)設(shè)計方案與選擇4 2.3 系統(tǒng)總體結(jié)構(gòu)框圖.5 2.4 系統(tǒng)的工作原理.6第三章 電路的功能單元設(shè)計.7 3.1 單片機(jī)最小系統(tǒng)電路7 3.2 按鍵電路11 3.3 報警電路12 3.4 顯示電路13第四章 程序設(shè)計.14 4.1 程序設(shè)計思想.14 4.2 程序流程模塊介紹.15 4.3 設(shè)計軟件簡介.16第五章 調(diào)試及故障分析.175.1 程序調(diào)試175.2 硬件焊接及故障分析.17.總 結(jié).18參考文獻(xiàn).19附錄1 整機(jī)原理圖附錄2 pcb制版圖附

2、錄3 程序清單摘 要 搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識競賽場合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個單位,如果專門購一臺搶答器雖然在經(jīng)濟(jì)上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時性就會影響活動的開展,因此設(shè)計了本搶答器。 本設(shè)計是以八路搶答為基本理念??紤]到依需設(shè)定限時回答的功能,利用stc89c52單片機(jī)及外圍接口實現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計時,同時使數(shù)碼管能夠正確地顯示時間。用開關(guān)做鍵盤輸出,蜂鳴器發(fā)生提示。同時系

3、統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒記時顯示,滿時后系統(tǒng)計時自動復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。關(guān)鍵字:單片機(jī)、數(shù)字管、蜂鳴器緒 論設(shè)計研究的背景及意義: 我國進(jìn)行單片機(jī)項目開發(fā)已經(jīng)有二十多年歷史,在此期間所進(jìn)行的單片機(jī)開發(fā)項目已由簡單到復(fù)雜,由小型系統(tǒng)到大型綜合系統(tǒng)。單片機(jī)應(yīng)用也越來越廣泛,從開始的工控控制,到現(xiàn)在的航空航天、消防安全、工作數(shù)據(jù)采集、石油地質(zhì)勘探、鐵路交通運(yùn)輸以及樓宇自動化等,甚至目前

4、的許多家電中都有單片機(jī)的應(yīng)用。隨著計算機(jī)技術(shù)的發(fā)展,單片機(jī)技術(shù)已經(jīng)成為計算機(jī)技術(shù)中的一個獨特的分支,單片機(jī)的應(yīng)用領(lǐng)域也越來越廣泛,特別是在工業(yè)控制和儀表儀器智能化中扮演著舉足輕重的角色。在單片機(jī)家族的眾多成員中,52系列單片機(jī)以其優(yōu)越的性能、成熟的技術(shù)、高可靠性和高性價比,成為國內(nèi)單片機(jī)應(yīng)用領(lǐng)域內(nèi)的主流。 各種知識競賽、文娛活動的廣泛開展,使搶答器成了必不可少的電子設(shè)備,它為參賽選手提供了公正、客觀、快速的裁決,已逐漸發(fā)展成為一種成型的電子產(chǎn)品,但市面上所售搶答器價格一般較貴且多為小規(guī)模集成電路構(gòu)成,其性能單一,工作起來不夠理想。本文介紹了一種以stc89c52單片機(jī)為核心的智能搶答器,它充分

5、利用了單片機(jī)系統(tǒng)的優(yōu)點,具有結(jié)構(gòu)簡單、功能強(qiáng)大、可靠性好、成本較低,實用性強(qiáng)的特點。 系統(tǒng)總體方案設(shè)計2.1設(shè)計要求 2.1.1 設(shè)計任務(wù) 具有時間,聲,光,提示的數(shù)字搶答器的設(shè)計 2.1.2 基本要求 (1)具有聲音提示,led閃爍提示,或者led及顯示時間。 (2)最小同時提供8名選手比賽,分別有8個按鈕。 (3)設(shè)置一個搶答開關(guān),該開關(guān)由主持人控制。 (4)搶答選手在設(shè)定時間搶答功能,且一次搶答時間由主持人設(shè)定。(5)搶答選手在設(shè)定時間搶答,搶答定時器停止工作,顯示選手的編號和時間并保持到主持人清楚為止。(6)如設(shè)定時間已到無人搶答,本次搶答無效系統(tǒng)報警,禁止搶答。顯示器顯示“00” 2

6、.1.3 結(jié)題形式 (1)撰寫并上交一份6000字左右的畢業(yè)設(shè)計報告(紙質(zhì)); (2)上交畢業(yè)設(shè)計報告、電路原理圖和pcb圖、程序等電子文件; (3)制作并上交相應(yīng)的控制系統(tǒng)作品(硬件); (4)口試答辯。2.2系統(tǒng)設(shè)計方案與選擇 2.2.1 方案一設(shè)計思路 系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機(jī)械開關(guān)按鈕作為控制開關(guān),完成搶答輸入信號的觸發(fā)。該方案的特點是中小規(guī)模集成電路應(yīng)用技術(shù)成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由于系統(tǒng)功能要求較高,所以電路連接集成電路相對較多,而且過于復(fù)雜,并且制作過程工序比較煩瑣,使用不太方便。 2.2.2 方案二的設(shè)計思路 采用52系列單片機(jī)stc

7、89c52作為控制核心,該系統(tǒng)可以完成運(yùn)算控制、信號識別以及顯示功能的實現(xiàn)。由于使用單片機(jī)作為控制核心,其技術(shù)比較成熟,應(yīng)用起來方便、簡單,并且周圍的輔助電路也比較少,便于控制和實現(xiàn)。整個系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進(jìn)行功能的擴(kuò)展和更改。 2.2.3 方案比較 所以通過比較以上兩種方案,方案二比方案一簡單的多,不但從性能上優(yōu)于方案一,而且在使用上及其功能的實現(xiàn)上都較方案一簡潔,并且由于單片機(jī)具有優(yōu) 越的高集成電路性,使其工作速度更快、效率更高。另外stc89c52單片機(jī)可以采用11.0592mhz的晶振,提高了信號的測量精度,并且使該系統(tǒng)可以通過軟件改進(jìn)來擴(kuò)展功能。而方案一采用了

8、中小規(guī)模集成電路,由于其復(fù)雜的電路性能,可能會使信號的輸入輸出產(chǎn)生延時及不必要的誤差。因此選擇方案二比較適合。 2.3系統(tǒng)總體結(jié)構(gòu)圖 搶答器電路總體設(shè)計方框圖如圖1所示: 圖1 搶答器總體設(shè)計方框圖2.4系統(tǒng)的工作原理 搶答器的工作原理是利用單片機(jī)的定時器t0、t1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,用4個共陰極led數(shù)碼管來顯示,用p0口作為數(shù)碼管的八個段選,用p2口中的p2.4、p2.5、p2.6、p2.7作為4個數(shù)碼管的位選,p1口接8個按鍵,提供選手搶答,p3.0、p3.2、p3.3、p3.4、3.5分別為開始、停止、答題時間調(diào)整、搶答時間調(diào)整,復(fù)位。 搶答功能: 通過八路按鍵配合程

9、序來實現(xiàn)搶答功能。當(dāng)主持人按下?lián)尨疰I開始搶答后,此時任一路按下按鈕均閉鎖其它各路,由程序?qū)︽I盤譯碼并顯示最先按下?lián)尨疰I的路數(shù)及其當(dāng)前時間。 搶答限時: 主持人按下?lián)尨疰I后,設(shè)置30秒為搶答時間此時間可在1-99秒之間修改。若30秒內(nèi)無人搶答,倒計時為5時發(fā)出報警,說明該搶答題目作廢。此時閉鎖所有搶答按鍵,只有當(dāng)主持人再次按下?lián)尨疰I開始下一次搶答方可搶答。 答題限時:當(dāng)選手按下按鈕時,啟動倒計時此倒計時時間可在199秒之間修改,倒計時為5時發(fā)出報警,說明答題時間到。 第三章 電路的功能單元設(shè)計 電路的功能單元設(shè)計包括:單片機(jī)最小系統(tǒng)、按鍵電路、報警電路、顯示電路3.1單片機(jī)最小系統(tǒng) 3.1.1系

10、統(tǒng)結(jié)構(gòu) 總線型單片機(jī)非總線應(yīng)用的最小系統(tǒng)示意圖如圖2所示,只有單片機(jī)和時鐘電路、復(fù)位電路構(gòu)成的最簡單電路,并行總線不用于外圍擴(kuò)展,可作為應(yīng)用系統(tǒng)的i/o口使用。圖2 總線型單片機(jī)非總線應(yīng)用的最小系統(tǒng) 3.1.2系統(tǒng)特點 (1)有大量可使用的i/o口; (2)沒有并行擴(kuò)展,應(yīng)用系統(tǒng)結(jié)構(gòu)簡單; (3)外圍器件只能通過uart口的串行移位方式或虛擬串行擴(kuò)展總線進(jìn)行擴(kuò)展。 3.1.3 stc89c52單片機(jī) stc89c52單片機(jī)具有片內(nèi)e2prom,是真正的單片機(jī),由于不需要外接eprom,所以應(yīng)用非常普遍。 stc89c52的主要工作特性如下: (1)片內(nèi)程序存儲器內(nèi)含8kb的flash程序存儲器

11、,可擦寫壽命為10000次; (2)片內(nèi)數(shù)據(jù)存儲器內(nèi)含256字節(jié)的ram; (3)具有32根可編程i/o口線; (4)具有3個可編程定時器; (5)中斷系統(tǒng)是具有8個中斷源、6個中斷矢量、2個級優(yōu)先權(quán)的中斷結(jié)構(gòu); (6)串行口是具有一個全雙工的可編程串行通信口; (7)具有一個數(shù)據(jù)指針dptr; (8)低功耗工作模式有空閑模式和掉電模式; (9)具有可編程的3級程序鎖定位; (10)單片機(jī)stc89c52工作電源電壓為5(1+0.2)v,且典型值為5v; (11)單片機(jī)stc89c52最高工作頻率為24mhz,單片機(jī)正常工作時,都需要有一個時鐘電路和一個復(fù)位電路。 stc89c52的內(nèi)部結(jié)構(gòu)圖

12、如圖3所示: 圖3 stc89c52內(nèi)部結(jié)構(gòu)圖 52單片機(jī)有4個8位并行輸入/輸出接口:p0、p1、p2和p3口這四個口既可以并行輸入或輸出8位數(shù)據(jù),又可按位使用,即每一位均能獨立做輸入或輸出用。圖4為各接口的電氣結(jié)構(gòu)示意圖:圖4 p0、p1、p2、p3口的電氣結(jié)構(gòu)圖 i/o端口的結(jié)構(gòu) (1)鎖存器加引腳的典型結(jié)構(gòu) 5 2的i/o端口都由內(nèi)部總線實現(xiàn)操作控制。p0-p3四個i/o端口都可以用作普通i/o口,因此,要求有輸出鎖存功能。內(nèi)部總線又是分時操作,故每個 i/o端口都有相應(yīng)的鎖存器。然而,i/o端口又是外部的輸入/輸出通道,必須有相應(yīng)的引腳,故形成了i/o端口的鎖存器加引腳的典型結(jié)構(gòu)。

13、(2)i/o的復(fù)用結(jié)構(gòu) i/o端口的總線復(fù)用。在使用并行擴(kuò)展總線時,p0口可做數(shù)據(jù)總線口和低8位地址總線口,p0口為三態(tài)雙向口。p0口輸出并行總線的地址/數(shù)據(jù)信號;p2口輸出高8位地址信號。 i/o端口的功能復(fù)用。p3口為復(fù)用的i/o端口,口內(nèi)有復(fù)用輸出功能的控制端;引腳也有復(fù)用輸入功能的控制端。p3口的第二功能輸入引腳功能表如表1所示: 表1 p3口的第二功能輸入引腳端口引腳第二功能 說 明p3.0rxd串行數(shù)據(jù)接受p3.1txd串行數(shù)據(jù)發(fā)送p3.2外部中斷0申請p3.3外部中斷1申請p3.4t0定時/計數(shù)器0輸入p3.5t1定時/計數(shù)器1輸入p3.6 外部數(shù)據(jù)存儲器寫選通p3.7外部數(shù)據(jù)存

14、儲器讀選通 (3)準(zhǔn)雙向口結(jié)構(gòu) p0、p1、p2、p3口作為普通i/o口使用時,都是準(zhǔn)雙向口結(jié)構(gòu),準(zhǔn)雙向口的典型結(jié)構(gòu)如圖5-b所示,準(zhǔn)雙向口的輸入操作和輸出操作本質(zhì)不同,輸入操作是讀引腳狀態(tài);輸出操作是對口鎖存器的寫入操作。由口鎖存器和引腳電路可知:當(dāng)由內(nèi)部總線給口鎖存器置0或1時,鎖存器中的“1”或“0”狀態(tài)立即反映到引腳上。但是在輸入操作(讀引腳)時,如果口鎖存器狀態(tài)為“0”,引腳被鉗位在“0”狀態(tài),導(dǎo)致無法讀出引腳的高電平輸入。 i/o端口的應(yīng)用特性 (1)端口的自動識別。無論是p0、p2口的總線復(fù)用,還是p3口的功能復(fù)用,內(nèi)部資源會自動選擇,不需要通過指令的狀態(tài)選擇。 (2)口鎖存器的

15、讀、改、寫操作。許多涉及到i/o端口的操作,實際上只是設(shè)計口鎖存器的讀出、修改、寫入的操作。這些指令都是一些邏輯運(yùn)算指令、置位/清除指令、條件轉(zhuǎn)移指令以及將i/o口作為目的地址的操作指令。 (3)p0口作為普通i/o口使用。當(dāng)不使用并行擴(kuò)展總線時,p0、p2口都可以做普通i/o口。但是p0口為開漏結(jié)構(gòu),作i/o口時必須外加上拉電阻。 (5)i/o口的驅(qū)動特性。p0口每一個i/o口可輸出驅(qū)動8個ttl負(fù)載。而p1-p3口只能驅(qū)動4個。 3.1.4 時鐘電路 時鐘電路用于產(chǎn)生單片機(jī)工作所需要的時鐘信號。設(shè)計中采用了比較典型的內(nèi)部時鐘方式,如圖5所示: 其工作原理是:片內(nèi)高增益反向放大器xtal1、

16、xtal2外接作為反饋元件的晶體(呈感性)與電容組成的并聯(lián)諧振回路構(gòu)成一個自激振蕩器向內(nèi)部時 鐘電路提供振蕩時鐘。 振蕩器的頻率主要取決于晶體的振蕩頻率,一般晶體可以在1.2-12mhz之間任選。電容的大小影響振蕩器電路的穩(wěn)定性和快速性,其值有微調(diào)作用,通常取30pf左右。在設(shè)計電路板時,晶振和電容應(yīng)盡可能的靠近芯片,以減小分布電容,保證振蕩器振蕩的穩(wěn)定性。 圖5單片機(jī)外接晶體的接法 3.1.5 復(fù)位電路 復(fù)位是單片機(jī)的初始化操作,其主要功能是將程序計數(shù)器pc初始化為0000h,使單片機(jī)從0000h單元開始執(zhí)行程序。復(fù)位操作不影響片內(nèi)ram的內(nèi)容,但是對sfr中的一些寄存器有影響。 圖6各種復(fù)

17、位電路 單片機(jī)的復(fù)位是靠外部電路復(fù)位的。其復(fù)位方式有上電復(fù)位和按鍵手動復(fù)位兩種。復(fù)位電路中的電阻、電容數(shù)值的設(shè)置,是為了保證在rst管腳處至少保持兩個機(jī)器周期(24個振蕩周期)的高電平而完成復(fù)位過程的,也就是在斯密特觸發(fā)器的輸入端維持在最低閥值電壓以上足夠長時間,使斯密特觸發(fā)器產(chǎn)生一個正脈沖。電阻值通常為1k,電容值通常為22uf。圖6為幾種常見的復(fù)位電路接法。 3.2 按鍵電路 3.2.1 鍵盤接口和鍵輸入軟件中應(yīng)解決的幾個問題 (1)消除抖動 按鍵的合斷過程存在一個抖動的暫態(tài)過程,這種抖動的暫態(tài)過程大約經(jīng)過5-10ms的時間,人的肉眼是察覺不到的,但對于高速的cpu是有反應(yīng)的,可能產(chǎn)生誤處

18、理。為了保證鍵動作一次,僅作一次處理,必須采取措施以消除抖動。本設(shè)計中采用了軟件消抖的方法。 軟件消抖是用延時來躲過暫態(tài)抖動過程,執(zhí)行一段大于10ms的延時程序后,再讀取穩(wěn)定的鍵狀態(tài)。 (2)鍵盤的監(jiān)測方法 對于計算機(jī)應(yīng)用系統(tǒng),鍵盤掃描只是cpu工作的一部分,鍵盤處理只是在有鍵按下時才有意義。對于是否有鍵按下的信息輸入方式有中斷方式和查詢方式兩種。 3.2.2 電路接法如圖7所示: 圖7選手按鍵電路3.3 報警電路 考慮到實驗室現(xiàn)有的元器件,設(shè)計中采用了蜂鳴器報警電路,如果有條件還可以采用更高級的語音報警電路,那樣更加直觀方便。電路的接法如圖8所示: 3 圖8 蜂鳴器報警電路 工作工程:蜂鳴器

19、經(jīng)過pnp三極管接在p3.6口,當(dāng)p3.6輸出為低電平“0”時,pnp三極管端輸出為“1”,晶體管導(dǎo)通,蜂鳴器兩端獲得約+5v的電壓而鳴叫;當(dāng)p3.6輸出為高電平“1”時,三極管截止,蜂鳴器停止鳴叫。 電路中三極管不僅起到了反向作用,還有增大負(fù)載能力的作用。3.4 顯示電路 顯示電路為六位共陽極led動態(tài)顯示接口電路如圖9所示: 圖9數(shù)碼管顯示電路 單個共陽極7段數(shù)碼的段選碼如表3所示: 表2 7段共陽數(shù)碼管段選碼表顯示字符0123456789共陽極段選碼c0hf9ha4hb0h99h92h82hf8h80h90h 共陽極led數(shù)碼管將發(fā)光二極管的陽極(正極)短接后作為公共陰極,當(dāng)驅(qū)動信號為低

20、電平、“+”端接高電平時才能發(fā)光。這樣的多位顯示,將所有位的選線并聯(lián)在一起,由一個8位i/o口控制,實現(xiàn)各部分的分時選通。由于所有位選皆由一個i/o口控制,在每一瞬間6位led會顯示相同的字符。想要每一位顯示不同的字符,就必須采用掃描方法輪流點亮各位led,即在每一瞬間只使某一位顯示字符。在此瞬間,段選控制i/o口輸出相應(yīng)字型碼,而位選則控制i/o口在該顯示位送出低電平,以保證該位顯示相應(yīng)字符。如此輪流,使每一位分時顯示該位應(yīng)顯示字符。其管腳配置及動態(tài)顯示接口電路如圖10所示: 圖10 共陽極數(shù)碼管管腳配置及動態(tài)顯示接口電路 第四 章系統(tǒng)軟件的設(shè)計 眾多軟件的聯(lián)合使用對應(yīng)用系統(tǒng)的設(shè)計起到了很重

21、要的作用,在實物制作之前對設(shè)計進(jìn)行仿真,可以檢驗程序的執(zhí)行結(jié)果是否與設(shè)計的功能相同,這樣可以對程序進(jìn)行改進(jìn)。在這里用到了keil c和proteus,同時在電路制板時用到了protel dxp繪制pcb板。4.1編譯軟件?keil c (1)keil c的使用 keil c是眾多單片機(jī)應(yīng)用開發(fā)軟件中優(yōu)秀的軟件之一,它集編輯,編譯,仿真等于一體,同時支持匯編和c語言的程序設(shè)計,本設(shè)計使用它作為c編譯器,使用方法如下: 首先建立一個工程,然后將c程序文件添加到工程下鏈接編譯,接著設(shè)置生成并輸出hex文件,如果程序編譯后有錯誤就進(jìn)行調(diào)試11。 (2)程序設(shè)計 完整的程序參見附錄。 主流程 主流程圖如

22、圖11所示: 圖11 主流程圖 圖12 按鍵掃描流程 按鍵掃描流程 每一個按鍵都對應(yīng)一個處理子程序,通過對按鍵掃描進(jìn)行按鍵識別。按鍵識別的方法包含了行掃描法和反轉(zhuǎn)法。按鍵掃描流程圖如圖12所示,包括了對矩陣鍵盤和調(diào)整時間按鍵的掃描。 中斷流程圖 設(shè)計采用了外部中斷,中斷程序流程圖如圖13所示: 圖13 中斷流程圖4.2仿真軟件?proteus proteus是一款常用的仿真軟件,和keil聯(lián)合使用,對設(shè)計的完善起到很大的作用,也對硬件的搭建提供了連線依據(jù)。 proteus的使用相對比較簡單,在元件庫中找到相應(yīng)電路所要用到的元件后放置在原理圖紙上,然后用導(dǎo)線連接起來就可以了。 在選用元件后,可以

23、在原理圖紙上雙擊某元件,更改它的屬性,如電阻的名稱、阻值等。本設(shè)計中使用了單片機(jī),需要加載程序文件。之前已經(jīng)使用keil c生成了所需要的hex文件,直接加載進(jìn)來就可以了。 這時就可以運(yùn)行仿真了。在仿真之前最好再檢查一下電路的連接,確認(rèn)正確之后再運(yùn)行,以免粗心造成運(yùn)行結(jié)果與設(shè)計的不相符合。 設(shè)計的仿真原理圖如圖14所示:圖14 電路仿真原理圖4.3制板軟件?protel 99 se pcb電路板的設(shè)計流程: (1)設(shè)計原理圖 創(chuàng)建一個新項目;創(chuàng)建一張新的原理圖圖紙;查找元件;在原理圖中放置元件;設(shè)置元件屬性;放置電源和接地符號;繪制原理圖。 (2)定義元件封裝 原理圖設(shè)計完成后,元件的封裝有可

24、能被遺漏或有錯誤。對于用戶自己設(shè)計的元件或者是某些特殊元件,必須由用戶自己定義或修改元件的封裝。 (3)設(shè)置pcb圖紙 可以設(shè)定pcb電路板的結(jié)構(gòu)及尺寸,板層數(shù)目,通孔的類型,網(wǎng)格的大小等,既可以用系統(tǒng)提供的pcb設(shè)計模板進(jìn)行設(shè)計,也可以手動設(shè)計pcb板。 (4)生成網(wǎng)表和加載網(wǎng)表 網(wǎng)表是電路原理圖和印刷電路板設(shè)計的接口,只有將網(wǎng)表引入pcb系統(tǒng)后,才能進(jìn)行電路板的自動布線。 (5)布線 設(shè)置布線規(guī)則后,先自動布線,然后手工調(diào)整。在元件很少且布線簡單的情況下,也可以直接進(jìn)行手動布線。第五章 調(diào)試及故障分析5.1 程序調(diào)試 程序調(diào)試:分步驟進(jìn)行調(diào)試,對每一個子程序進(jìn)行編譯鏈接后,將整個程序全部編

25、譯,生成hex文件加載到單片機(jī)上,進(jìn)行仿真。出現(xiàn)錯誤和警告時要進(jìn)行分析,解決問題。 仿真分析:啟動(上電)后,顯示00?00。 當(dāng)主持人按鍵,顯示30秒的搶答時間,如有選手搶答,會顯示選手號碼以及60秒的回答時間,回答時間剩余5秒時,會響提示音。如果第一位選手不能回答,那么主持人再次按下start鍵允許其他選手繼續(xù)搶答,允許其他選手搶答的時間為上一次搶答的剩余時間,答題時間仍是60秒。 如果沒有人搶答,搶答倒計時還有5秒的時候會響提示音,搶答時間過后搶答器會自動進(jìn)入復(fù)位狀態(tài),可以進(jìn)行下一輪的搶答。 如果主持人未按start鍵,有選手按了搶答按鍵,犯規(guī)搶答,顯示犯規(guī)選手號并閃爍ff,直到主持人復(fù)

26、位。 這與預(yù)期的效果是一致的。5.2 硬件焊接及故障分析 電子電路是由許多元器件和導(dǎo)線連接而成,每一個元件和導(dǎo)線的好壞,連接的正確可靠與否,都可能產(chǎn)生故障,情況很復(fù)雜。有的是一種原因引起的簡單故障,也有的是多種原因引起的復(fù)雜故障。以下是一些常見的故障: (1)電路組裝有錯誤或連接不牢,致使電路與原理電路不一致。 (2)電路元器件本身特性不良或損壞,特別是芯片的損壞最為常見,其次是電容的擊穿、短路以及電阻的阻值與標(biāo)稱值不符。因此在組裝電路前應(yīng)進(jìn)行檢查和篩選,以防組裝完電路后,再查找原因所帶來的種種麻煩。 (3)各儀器連線是否正確,是否與電路共地;儀表使用是否得當(dāng)。 (4)以上檢查無錯誤時,應(yīng)考慮

27、電路設(shè)計,這也是實驗中尤其是在數(shù)字電路中常遇到的。 硬件搭建:按照設(shè)計的原理圖一步一步完成電路的搭建。這過程中一定要耐心、細(xì)心,否則很容易跳錯線。 實物電路搭好以后,仔細(xì)對照原理圖檢查一遍,然后就可以上電檢測了。 制作硬件過程中,出現(xiàn)了以下問題經(jīng)過檢查得到了解決: (1)接上電源后發(fā)覺數(shù)碼管無顯示。經(jīng)檢查后現(xiàn)單片機(jī)的29腳懸空未接,應(yīng)該接在高電平上,這是單片機(jī)正常工作的前提。 (2)選手鍵盤的其中一個不正常工作。經(jīng)檢查后發(fā)現(xiàn)是虛焊。 總 結(jié) 通過此次的畢業(yè)設(shè)計,讓我更進(jìn)一步的鞏固了單片機(jī)的各種知識。但在設(shè)計的過程中,遇到了很多的問題,有一些知識已經(jīng)不太清楚了,但是通過一些資料又重新的翻閱并且認(rèn)

28、真的復(fù)習(xí)了相關(guān)教科書中的內(nèi)容。此次的畢業(yè)設(shè)計樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活都有非常重要的影響,而且大大的提高了動手能力,使我充分的體會到了創(chuàng)造過程中的探索的艱難和成功的喜悅。雖然這次做出的作品還存在很多需要改進(jìn)的地方,但是在整個設(shè)計過程中期間所得到的最大收獲,使我終身受益。 不過在此設(shè)計期間,還是要感謝我的同班許多同學(xué)給予我的幫助,還有感謝學(xué)院各位教育過我的老師,你們在這三年期間對我的培養(yǎng)上和教育,使我受益匪淺,我對他們報以崇高的敬意紅外感謝。在論文結(jié)束之際,我要感謝指導(dǎo)老師,他的專業(yè)知識豐富,治學(xué)嚴(yán)謹(jǐn),而且認(rèn)真負(fù)責(zé),耐心講解問題,對喔的畢業(yè)設(shè)計提供了很大的指導(dǎo)和幫助。

29、在這次畢業(yè)設(shè)計過程中,在指導(dǎo)老師的嚴(yán)格要求及一些合理性建議。在此向我的指導(dǎo)老師及主任、祝敏老師這三年對我的培養(yǎng)衷心的感謝! 參考文獻(xiàn)1模擬電子技術(shù)高等教育出版社2數(shù)字電子技術(shù)高等教育出版社3基于集成電路的電路設(shè)計 西安交通大學(xué)出版4譚浩強(qiáng)c語言程序設(shè)計 m. 北京:清華大學(xué)出版社.5 51單片機(jī)c語言教程?入門、提高、開發(fā)、擴(kuò)展全攻略 電子工業(yè)出版社6 51單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解電子工業(yè)出版社7單片機(jī)c語言應(yīng)用100例 電子工業(yè)出版社附錄1:整機(jī)原理圖附錄2:pcb制板圖附錄3:程序清單/能夠顯示搶答、回答時間倒計時,能夠調(diào)節(jié)搶答、回答時間,能夠報警犯規(guī)搶答,可以計分,可以實現(xiàn)軟復(fù)位#inc

30、lude#define uchar unsigned char#define uint unsigned intsbit fmqp36;sbit key_startp34;/開始鍵,時間設(shè)置時+sbit key_stopp35;/停止鍵,時間設(shè)置時-sbit key_restartp30;/復(fù)位鍵sbit key_set_qp32;/搶答時間設(shè)置鍵sbit key_set_hp33;/回答時間設(shè)置鍵sbit ledp37;/搶答led提示uchar code table0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc

31、6,0xf0,0xb6;/段碼表uchar code table_char0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc7,0xc0,0x92,0x86,0xbf,0xb7,0xff,0xb9,0x8f;/0-9 l o s e -uchar table_score90,50,50,50,50,50,50,50,50;/記分?jǐn)?shù)組,初設(shè)值50分void delayuint z;/延時函數(shù)聲明void init;/初始化函數(shù)聲明void displayuchar xuanshou,uchar time;/顯示數(shù)字函數(shù)聲明void disp

32、lay_charuchar char_1,uchar char_2,uchar char_3,uchar char_4 ;/顯示字符函數(shù)聲明void display_setuchar char_1,uchar time,uchar char_2;/時間設(shè)置閃動顯示函數(shù)聲明void display_scoreuchar xs_num;/分?jǐn)?shù)查詢顯示函數(shù)void beep;/蜂鳴器函數(shù)void beep_last;/蜂鳴器特殊報警void led;/提示燈函數(shù)uchar qiangda_time,huida_time,qiangda_time_temp20,huida_time_temp30;/搶

33、答時間、回答時間變量uchar count_0,count_1;/定時中計數(shù)用的uint shan_count0;/閃動顯示計數(shù)用void mainuchar anjian,shuju,xuanshou_num;top:init;/初始化xuanshou_num1;/為分?jǐn)?shù)查詢做好準(zhǔn)備while1display10,0;/顯示一杠shujup1;ifshuju!0xff/犯規(guī)搶答!anjianshuju;switchanjian/取出選手編號case 0xfe :xuanshou_num1;break;/1111 1110case 0xfd :xuanshou_num2;break;/1111

34、 1101case 0xfb :xuanshou_num3;break;/1111 1011case 0xf7 :xuanshou_num4;break;/1111 0111case 0xef :xuanshou_num5;break;/1110 1111case 0xdf :xuanshou_num6;break;/1101 1111case 0xbf :xuanshou_num7;break;/1011 1111case 0x7f :xuanshou_num8;break;/0111 1111default : goto lose;/無法顯示了,有兩個以上的鍵同時按下了!不過這種概率相當(dāng)小

35、while1display_char13,14,14,xuanshou_num;/閃動顯示犯規(guī)選手并且報警ifshan_count50beep;ifkey_stop0delay10;ifkey_stop0beep;table_scorexuanshou_num-;/扣分while!key_stopdisplay_char14,14,1,16;/按鍵不放開的情況下顯示-1shan_count1;/調(diào)用的是閃動顯示函數(shù),但是不讓其閃動ifkey_restart0delay10;ifkey_restart0beep;goto top;/熱復(fù)位ifkey_start0delay10;ifkey_sta

36、rt0/主持人按下?lián)尨疰I,搶答正式開始!qiangda_timeqiangda_time_temp;huida_timehuida_time_temp;beep;tr11;/搶答時間開始倒計時break;/跳出犯規(guī)搶答查詢循環(huán)/一下為查分程序測試ifkey_stop0delay10;ifkey_stop0/進(jìn)入分?jǐn)?shù)查詢顯示beep;while!key_stop;while1display_scorexuanshou_num;ifkey_start0delay10;ifkey_start0xuanshou_num+;ifxuanshou_num9 xuanshou_num1;while!key_

37、start;/等待按鍵釋放ifkey_stop0delay10;ifkey_stop0xuanshou_num-;ifxuanshou_num0 xuanshou_num8;while!key_stop;/等待按鍵釋放 ifkey_restart0delay10;ifkey_restart0beep;goto top;/熱復(fù)位while1 /查詢是否有按鍵按下,進(jìn)入搶答循環(huán)display10,qiangda_time;/顯示搶答倒計時ifqiangda_time0tr10;/關(guān)閉定時器1lose:while1display_char10,11,12,13; /顯示lose 字符ifkey_re

38、start0delay10;ifkey_restart0/熱復(fù)位鍵,從頭開始下一輪beep;goto top;shujup1;/把p1口的數(shù)據(jù)送給變量ifshuju!0xff/有按鍵按下anjianshuju;/傳遞數(shù)據(jù)掃描值tr10;/關(guān)閉定時器1break;/不再進(jìn)行查詢是否有按鍵按下了switchanjian/取出選手編號case 0xfe :xuanshou_num1;beep;led;break;/1111 1110case 0xfd :xuanshou_num2;beep;led;break;/1111 1101case 0xfb :xuanshou_num3;beep;led;b

39、reak;/1111 1011case 0xf7 :xuanshou_num4;beep;led;break;/1111 0111case 0xef :xuanshou_num5;beep;led;break;/1110 1111case 0xdf :xuanshou_num6;beep;led;break;/1101 1111case 0xbf :xuanshou_num7;beep;led;break;/1011 1111case 0x7f :xuanshou_num8;beep;led;break;/0111 1111default : goto lose;/無法顯示了,有兩個以上的鍵同

40、時按下了!不過這種概率相當(dāng)小tr01;/啟動定時器0(在這里啟動比在前面好)while1displayxuanshou_num,huida_time;/顯示選手編號和回答倒計時ifhuida_time0tr00;/關(guān)閉定時器0goto lose;/跳到顯示lose字符那里ifkey_stop0delay30;ifkey_stop0/停止鍵按下beep;tr00;/關(guān)閉定時器0,選手開始回答while!key_stop;while1 /在顯示選手回答倒計時時只有在stop按鍵按下時,才可按復(fù)位鍵displayxuanshou_num,huida_time;/顯示選手編號和回答倒計時ifkey_s

41、tart0delay10;ifkey_start0beep;table_scorexuanshou_num+;/加分while!key_startdisplay_char17,18,1,16;/按鍵不放開的情況下顯示+1shan_count1;/調(diào)用的是閃動顯示函數(shù),但是不讓其閃動ifkey_stop0delay10;ifkey_stop0beep;table_scorexuanshou_num-;/扣分while!key_stopdisplay_char14,14,1,16;/按鍵不放開的情況下顯示-1shan_count1;/調(diào)用的是閃動顯示函數(shù),但是不讓其閃動ifkey_restart0

42、delay10;ifkey_restart0/熱復(fù)位鍵,從頭開始下一輪beep;goto top;void delayuint z/1ms基準(zhǔn)延時uint x,y;forxz;x0;x-fory110;y0;y-;void init/初始化函數(shù)ea1;/開總中斷;tmod0x11;/定時器工作方式1,16位定時計數(shù)器th065536-50000/256;/50ustl065536-50000%256;et01;/開定時器0中斷(暫時不啟動定時器)th165536-50000/256;/50ustl165536-50000%256;et11;/開定時器0中斷(暫時不啟動定時器)ex01;/啟動外

43、中斷0ex11;/啟動外中斷1p10xff;/讀p1口的數(shù)據(jù)要先置1準(zhǔn)備count_00;/定時器中的計數(shù)清零count_10;shan_count0;void displayuchar xuanshou,uchar time/顯示數(shù)字的函數(shù)p20x7f;/0111 1111最后一位數(shù)碼管亮p0tablexuanshou;/選手編號delay1;p20x7f;/0111 1111p00xff;/消余輝delay1;p20xdf;/1101 1111p0tabletime%10;/時間的個位delay1;p20xdf;/0111 1111p00xff;/消余輝delay1;p20xef;/ 11

44、10 1111p0tabletime/10;/時間的十位delay1;p20xef;/0111 1111p00xff;/消余輝delay1;void display_charuchar char_1,uchar char_2,uchar char_3,uchar char_4 /閃動!顯示字符的函數(shù)shan_count+;ifshan_count150shan_count0;ifshan_count0&shan_count50p20x7f;/0111 1111p0table_charchar_4;delay1;p20x7f;/0111 1111p00xff;delay1;p20xbf;/101

45、1 1111p0table_charchar_3;delay1;p20xbf;/1011 1111p00xff;delay1;p20xdf;/1101 1111p0table_charchar_2;delay1;p20xdf;/1101 1111p00xff;delay1;p20xef;/1110 1111p0table_charchar_1;delay1;p20xef;/1110 1111p00xff;delay1;elsep20x7f;/0111 1111p00xff;delay1;p20xbf;/p00xff;delay1;p20xdf;/p00xff;delay1;p20xef;/p0

46、0xff;delay1;void display_setuchar char_1,uchar time,uchar char_2/時間設(shè)置的閃動顯示shan_count+;ifshan_count120shan_count0;ifshan_count0&shan_count40p20x7f;/0111 1111最后一位數(shù)碼管亮p0tablechar_2;/顯示一個符號delay1;p20x7f;/0111 1111p00xff;/消余輝delay1;p20xbf;/1011 1111p0tabletime%10;/時間的個位delay1;p20xbf;/1011 1111p00xff;/消余輝

47、delay1;p20xdf;/1101 1111p0tabletime/10;/時間的十位delay1;p20xdf;/1101 1111p00xff;/消余輝delay1;p20xef;/ 1110 1111p0tablechar_1;/顯示一個符號delay1;p20xef;/1110 1111p00xff;/消余輝delay1;elsep20x7f;/0111 1111p0tablechar_2;delay1;p20xbf;/p00xff;delay1;p20xdf;/p00xff;delay1;p20xef;/p0tablechar_1;delay1;void display_scoreuchar xs_num/分?jǐn)?shù)查詢顯示函數(shù)p20x7f;/0111 1111最后一位數(shù)碼管亮p0tabletable_scorexs_num%10;/分?jǐn)?shù)的個位delay1;p20x7f;/0111 1111p00xff;/消余輝de

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論