搶答器設(shè)計(jì)報(bào)告_第1頁(yè)
搶答器設(shè)計(jì)報(bào)告_第2頁(yè)
搶答器設(shè)計(jì)報(bào)告_第3頁(yè)
搶答器設(shè)計(jì)報(bào)告_第4頁(yè)
搶答器設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄摘要 1第1章緒論 2第2章總體方案 32.1方案比擬 32.2方案論證 4第3章單元電路設(shè)計(jì) 63.1主控模塊設(shè)計(jì) 63.1.1AT89C52單片機(jī)簡(jiǎn)介 63.1.2控制模塊設(shè)計(jì) 73.2鍵盤(pán)模塊設(shè)計(jì) 73.2.1選手按鍵電路 83.2.2控制按鍵電路 83.3數(shù)碼管譯碼顯示模塊設(shè)計(jì) 93.3.1數(shù)碼管及其字形編碼 93.3.2數(shù)碼管譯碼顯示電路 103.4報(bào)警電路 11第4章軟件設(shè)計(jì) 12第5章整機(jī)原理 13第6章仿真與調(diào)試 146.1軟件的仿真 146.2實(shí)物的制作與調(diào)試 15總結(jié) 17參考文獻(xiàn) 18附錄1搶答器原理圖 19附錄2程序設(shè)計(jì) 20摘要本設(shè)計(jì)是采用單片機(jī)設(shè)計(jì)的多人比賽智力搶答器系統(tǒng)。它具有電路簡(jiǎn)單、功能齊全、制作本錢(qián)低、性價(jià)比高等特點(diǎn),是一種經(jīng)濟(jì)、實(shí)用的比賽用搶答器。硬件局部主要由單片機(jī)系統(tǒng)電路、矩陣鍵盤(pán)電路、LED顯示電路、LED驅(qū)動(dòng)電路、報(bào)警提示燈電路、主持人操作鍵盤(pán)和其它根本外圍電路組成。軟件局部采用51系列單片機(jī)通用的C語(yǔ)言設(shè)計(jì)編寫(xiě)。該搶答器可同時(shí)最多供64個(gè)選手或團(tuán)對(duì)使用,不僅能實(shí)現(xiàn)顯示各位搶答選手號(hào),而且具有搶答30秒倒計(jì)時(shí)〔可調(diào)〕、搶答報(bào)警提示等功能。并且功能增減方便,只需對(duì)軟件做相應(yīng)修改即可。關(guān)鍵詞單片機(jī);矩陣鍵盤(pán);C語(yǔ)言第1章緒論智力競(jìng)賽是一種生動(dòng)活潑的教育方式,而搶答就是智力競(jìng)賽中非常常見(jiàn)的一種答題方式。搶答能引起參賽者和觀眾的極大興趣,并且能在極短的時(shí)間內(nèi),使人們迅速增加一些科學(xué)知識(shí)和生活常識(shí)。但是,在這類比賽中,對(duì)于誰(shuí)先誰(shuí)后搶答,在何時(shí)搶答,如何計(jì)算答題時(shí)間等等問(wèn)題,假設(shè)是僅憑主持人的主觀判斷,就很容易出現(xiàn)誤判。所以,我們就需要一種具備自動(dòng)鎖存,置位,清零等功能的智能搶答器來(lái)解決這些問(wèn)題。本次設(shè)計(jì)利用AT89C52單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)的原理及外圍接口,將軟、硬件有機(jī)地結(jié)合起來(lái)實(shí)現(xiàn)搶答系統(tǒng),使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間和選手號(hào)碼。在本次設(shè)計(jì)中,主要是設(shè)計(jì)一個(gè)供64人使用的定時(shí)搶答器。它主要實(shí)現(xiàn)以下功能:〔1〕為64位參賽選手各提供一個(gè)搶答按鈕,分別編號(hào)選手1、選手2、……選手64;〔2〕主持人可以控制系統(tǒng)的清零與搶答開(kāi)始;〔3〕搶答器要有數(shù)據(jù)鎖存與顯示的功能;〔4〕搶答器要有自動(dòng)定時(shí)功能,并且每次搶答時(shí)間由主持人任意設(shè)定;〔5〕參賽選手只有在設(shè)定時(shí)間內(nèi)搶答方為有效搶答。假設(shè)搶答有效,顯示搶答開(kāi)始時(shí)間直到系統(tǒng)被清零;〔6〕假設(shè)設(shè)定時(shí)間內(nèi)無(wú)選手進(jìn)行搶答〔按對(duì)應(yīng)按鈕〕,那么系統(tǒng)短暫報(bào)警,并且禁止選手超時(shí)搶答,搶答時(shí)間數(shù)碼管上顯示00。利用本次設(shè)計(jì)電路制造成的定時(shí)搶答器,即可輕松實(shí)現(xiàn)在64人或64個(gè)代表隊(duì)之間進(jìn)行的搶答比賽中進(jìn)行控制,使得這一活動(dòng)更加趣味、公平。通過(guò)這次課程設(shè)計(jì),掌握51單片機(jī)的原理,了解簡(jiǎn)單多功能搶答器組成原理,初步掌握多功能搶答器的調(diào)整及測(cè)試方法,提高動(dòng)手能力和排除故障的能力。同時(shí)通過(guò)本課題設(shè)計(jì)與裝配、調(diào)試,穩(wěn)固了所學(xué)的理論知識(shí),了解了多功能搶答器各單元電路之間的關(guān)系及相互影響,從而能夠正確設(shè)計(jì)、計(jì)算定時(shí)計(jì)數(shù)的各個(gè)單元電路。第2章總體方案2.1方案比擬方案一:采用數(shù)字電路實(shí)現(xiàn)定時(shí)搶答器的總體框圖如圖2-1所示,它由主體電路和擴(kuò)展電路兩局部組成。主體電路完成根本的搶答功能,即開(kāi)始搶答后,中選手按動(dòng)搶答按鈕時(shí),能顯示選手的編號(hào),同時(shí)能封鎖輸入電路,禁止其他選手搶答。擴(kuò)展電路完成定時(shí)搶答功能。主要是對(duì)秒脈沖產(chǎn)生電路計(jì)算從而到達(dá)定時(shí)功能。搶答搶答按鈕主持人控制開(kāi)關(guān)秒脈沖產(chǎn)生電路優(yōu)先編碼電路控制電路定時(shí)電路鎖存器譯碼電路譯碼電路報(bào)警電路顯示電路顯示電路圖2-1數(shù)字搶答器組成框圖方案二:采用單片機(jī)實(shí)現(xiàn)采用單片機(jī)對(duì)矩陣鍵盤(pán)進(jìn)行不間斷的掃描,通過(guò)判斷I/O口的不同狀態(tài)確認(rèn)搶答者的號(hào)數(shù),再將其送入顯示電路顯示出搶答者的號(hào)數(shù)。相比方案一而言,此方案采用單片機(jī)為控制核心大大簡(jiǎn)化了系統(tǒng)電路結(jié)構(gòu),把各種處理的功能整合在了單片機(jī)內(nèi)部。此方案把軟件的設(shè)計(jì)作為設(shè)計(jì)重點(diǎn),在原始的單一功能上添加了倒計(jì)時(shí)搶答、答題倒計(jì)時(shí)、顯示選手號(hào)等新穎的附屬功能,并保存了傳統(tǒng)的報(bào)警局部,電路還較簡(jiǎn)單,這樣既節(jié)約了資源,而且到達(dá)了設(shè)計(jì)的要求。具體方框圖如2-2所示。這是一種單片機(jī)控制的智能化搶答器,該搶答器可以克服普通搶答器存在的各種缺陷。本系統(tǒng)的功能是通過(guò)按下?lián)尨疰I的按鈕使單片機(jī)相應(yīng)的端口線讀入信號(hào),經(jīng)過(guò)處理后輸出顯示所按下的鍵號(hào)。本系統(tǒng)還具備篩選第一有效搶答信號(hào)、顯示超前違規(guī)搶答信號(hào)、以及可變的搶答倒計(jì)時(shí)信號(hào)和答題倒計(jì)時(shí)信號(hào)等功能。圖2-2方案二框圖對(duì)上面兩種方案進(jìn)行比擬,可以看出,第一種方案的電路實(shí)現(xiàn)起來(lái)電路原理很簡(jiǎn)單但在電路方面顯得很復(fù)雜,要設(shè)計(jì)到的電路太多,且本錢(qián)上面也是不少的開(kāi)支。第二種方案同第一種方案比擬,最大的優(yōu)點(diǎn)是電路非常簡(jiǎn)單,降低電路復(fù)雜程度,因此,從實(shí)現(xiàn)的難易程度以及所能到達(dá)自身要求性能指標(biāo)方面考慮,我們選擇方案二來(lái)實(shí)現(xiàn)智能搶答器。顯示電路可以采用兩種方案:一種是直接運(yùn)用LCD液晶顯示,即直接通過(guò)單片對(duì)其進(jìn)行顯示以及數(shù)據(jù)處理,但占用單片機(jī)的I/O口比擬多;另外一種是通過(guò)單片機(jī)控制譯碼器將譯碼器輸出的數(shù)據(jù)送給數(shù)碼管進(jìn)行顯示,此電路的優(yōu)點(diǎn)在于節(jié)約了單片機(jī)的I/O口。因此,我們?cè)诖诉x擇第二種方案,即通過(guò)單片機(jī)控制譯碼器將譯碼器輸出的數(shù)據(jù)送給數(shù)碼管進(jìn)行顯示。2.2方案論證無(wú)論是學(xué)校、工廠、軍隊(duì)還是益智性電視節(jié)目,都會(huì)舉辦各種各樣的智力競(jìng)賽,都會(huì)用到搶答器。目前市場(chǎng)上已有各種各樣的智力競(jìng)賽搶答器,但絕大多數(shù)以模擬電路、數(shù)字電路或者模擬電路與數(shù)字電路相結(jié)合的產(chǎn)品。這局部搶答器已相當(dāng)成熟,但是可以看到功能越多的電路相對(duì)來(lái)說(shuō)就越復(fù)雜,且本錢(qián)較高,故障高,顯示方式簡(jiǎn)單,甚至沒(méi)有顯示電路。近年來(lái)隨著科技的飛速開(kāi)展,單片機(jī)的應(yīng)用正不斷走向深入。所以我們選用單片機(jī)作為核心部件進(jìn)行邏輯控制及信號(hào)的產(chǎn)生,用單片機(jī)本身的優(yōu)勢(shì)使競(jìng)賽真正到達(dá)公正、公平、公開(kāi)。根據(jù)題目的要求,本次設(shè)計(jì)的智能搶搭器可分解為三大局部:第一局部為88矩陣鍵盤(pán)與4個(gè)獨(dú)立鍵盤(pán),為了設(shè)計(jì)出盡可能多的搶搭人員按鍵,因此我們采用88矩陣掃描;第二局部為顯示搶答者的號(hào)數(shù)與倒計(jì)時(shí)的時(shí)間;第三局部為單片機(jī)控制單元,負(fù)矩陣鍵盤(pán)的掃描和報(bào)警電路的控制,以及人機(jī)交互與各方面數(shù)據(jù)的處理。如圖2-3所示。MCU主控單元MCU主控單元倒計(jì)時(shí)顯示搶答者顯示88矩陣掃描電路人機(jī)交換〔主持人〕報(bào)警電路圖2-3系統(tǒng)結(jié)構(gòu)圖88矩陣鍵盤(pán)是通過(guò)單片機(jī)I/O口不間斷的對(duì)矩陣鍵盤(pán)提供掃描脈沖,通過(guò)單片機(jī)讀回I/O的數(shù)據(jù)進(jìn)行搶答者的位置判定,最后將數(shù)據(jù)送入顯示譯碼單元。顯示時(shí),譯碼電路是將單片機(jī)輸出的BCD碼送入譯碼器,通過(guò)其譯碼后送入數(shù)碼顯示電路。倒計(jì)時(shí)電路與搶答者顯示電路中都是運(yùn)用這種方式進(jìn)行顯示的。人際交換系統(tǒng)主要是由主持人設(shè)定倒計(jì)時(shí)時(shí)間以及復(fù)位等功能。第3章單元電路設(shè)計(jì)3.1主控模塊設(shè)計(jì)AT89C52單片機(jī)簡(jiǎn)介AT89C52單片機(jī)是一種低功耗、高性能CMOS8位微控制器,具有8K字節(jié)在線系統(tǒng)可編程Flash存儲(chǔ)器,80C51產(chǎn)品指令和引腳完全兼容。在單芯片上擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89C52單片機(jī)能為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。另外,AT89C52單片機(jī)可降至0Hz靜態(tài)邏輯操作,支持兩種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。AT89C52芯片的引腳結(jié)構(gòu)如圖3-1所示。圖3-1AT89C52單片機(jī)的引腳排列圖AT89C52單片機(jī)有40個(gè)引腳,采用40引腳的雙列直插封裝方式。圖3-1中的引腳可以分為四類:2個(gè)時(shí)鐘引腳〔XTAL1、XTAL2〕、32個(gè)外部雙向輸入/輸出〔I/O〕端口〔P0、P1、P2、P3〕、4個(gè)控制類引腳〔RST/VPD、ALE/、、/〕。AT89C52單片機(jī)內(nèi)部主要包括以下功能部件:〔1〕8位的CPU?!?〕4K字節(jié)的掩膜ROM?!?〕128字節(jié)的SRAM?!?〕4個(gè)8位的并行口。〔5〕2個(gè)全雙工的中行口。〔6〕2個(gè)16位的定時(shí)器/計(jì)數(shù)器。〔7〕5個(gè)中斷源,兩個(gè)中斷優(yōu)先級(jí)的中斷系統(tǒng)。〔8〕內(nèi)部振蕩器。3.1.2控制模塊設(shè)計(jì)電源、時(shí)鐘信號(hào)以及復(fù)位電路是單片機(jī)工作的根本條件,缺一不可。單片機(jī)系統(tǒng)的根本工作電路包括電源電路、時(shí)鐘電路、復(fù)位電路。電源模塊為系統(tǒng)板上的其它模塊提供+5V電源。系統(tǒng)板可從USB接口獲取+5V電源,即用相應(yīng)配套的USB線從電腦主機(jī)上獲取+5V直流電源。單片機(jī)的時(shí)鐘信號(hào)用來(lái)為單片機(jī)芯片內(nèi)部的各種操作提供時(shí)間基準(zhǔn)。由于AT89C52單片機(jī)芯片內(nèi)有時(shí)鐘振蕩電路,因此設(shè)計(jì)采用內(nèi)部時(shí)鐘方式,只要在單片機(jī)的XTAL1和XTAL2引腳外接石英晶體和微調(diào)電容,就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào),具體電路設(shè)計(jì)如圖3-4所示。圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,其值為5~30pF,在此選擇22pF;晶振X1的振蕩頻率范圍在1.2~12MHz之間選擇,本設(shè)計(jì)選擇12MHz。復(fù)位電路使單片機(jī)或系統(tǒng)中的其他部件處于某種確定的狀態(tài)。當(dāng)在AT89C52單片機(jī)的RST引腳處引入高電平并保持2個(gè)機(jī)器周期,單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作。實(shí)際應(yīng)用中,復(fù)位操作有兩種根本形式:一種是上電復(fù)位。另一種是按鍵復(fù)位。按一下開(kāi)關(guān)會(huì)在RST端出現(xiàn)一段時(shí)間的高電平,使單片機(jī)復(fù)位,平安可靠。所以,本次設(shè)計(jì)中采用按鍵復(fù)位方式,具體電路設(shè)計(jì)如圖3-4所示。圖3-4單片機(jī)主控模板設(shè)計(jì)3.2鍵盤(pán)模塊設(shè)計(jì)鍵盤(pán)是單片機(jī)應(yīng)用系統(tǒng)最常用的輸入設(shè)備,操作人員可以通過(guò)鍵盤(pán)向單片機(jī)系統(tǒng)輸入指令、地址和數(shù)據(jù),實(shí)現(xiàn)簡(jiǎn)單的人機(jī)通信。3.2.1選手按鍵電路矩陣式鍵盤(pán)是一種常見(jiàn)的輸入裝置,在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤(pán)中,兩個(gè)端口〔如P1、P2口〕就可以構(gòu)成88=64個(gè)按鍵,而且線數(shù)越多,區(qū)別也就越明顯。當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出低電平,一旦有鍵按下,那么輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵被按下了。所以,本設(shè)計(jì)采用矩陣式鍵盤(pán),如圖3-5所示,為64鍵矩陣式鍵盤(pán)。圖3-564鍵矩陣式鍵盤(pán)3.2.2控制按鍵電路控制電路是搶答器所必要的局部,它由主持人控制,用于控制開(kāi)始/停止搶答、搶答時(shí)間和答題時(shí)間的調(diào)整。采用功能按鍵實(shí)現(xiàn),如圖3-6所示。圖3-6控制按鍵電路3.3數(shù)碼管譯碼顯示模塊設(shè)計(jì)3.3.1數(shù)碼管及其字形編碼數(shù)碼管由8個(gè)發(fā)光二極管〔以下簡(jiǎn)稱字段〕構(gòu)成,通過(guò)不同的組合可用來(lái)顯示數(shù)字0~9、字符A~F、H、L、P、U、符號(hào)“-”及小數(shù)點(diǎn)“.”。數(shù)碼管的外形結(jié)構(gòu)如圖3-7〔a〕所示,數(shù)碼管又分為共陰極和共陽(yáng)極兩種結(jié)構(gòu),分別如圖3-7〔b〕和圖3-7〔c〕所示,此次設(shè)計(jì)中所用的是共陰極數(shù)碼管。〔a〕〔b〕〔c〕圖3-7數(shù)碼管的內(nèi)部結(jié)構(gòu)圖所謂共陰極,即是將所有LED的陰極連接到一起,而共陽(yáng)極使將所有的陽(yáng)極被連接到了一起。但不管哪種結(jié)構(gòu),其顯示設(shè)計(jì)的原理根本相同,唯一不同的是驅(qū)動(dòng)電路的設(shè)計(jì)有差異,一般共陰極采用推〔Push〕電流的方式來(lái)驅(qū)動(dòng),而共陽(yáng)極結(jié)構(gòu)那么采用拉〔Pull〕電流的方式來(lái)驅(qū)動(dòng)。在共陰極數(shù)碼管中,當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),那么該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符,此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。要使數(shù)碼管顯示出相應(yīng)的數(shù)字或字符,必須使段數(shù)據(jù)口輸出相應(yīng)的字形編碼。對(duì)照?qǐng)D3-9所示,字形碼各位定義為:數(shù)據(jù)線D0與a字段對(duì)應(yīng),D1與b字段對(duì)應(yīng)……以此類推。要顯示“0”,共陽(yáng)極數(shù)碼管的字形編碼應(yīng)為11000000B〔即C0H〕;共陰極數(shù)碼管的字形編碼應(yīng)為00111111B〔即3FH〕……以此類推,可求得數(shù)碼管字形編碼見(jiàn)表3-1。表3-1數(shù)碼管字形編碼表3.3.2數(shù)碼管譯碼顯示電路將幾只數(shù)碼管的a-h分別連在一起,并與單片機(jī)段碼控制端P0.0~P0.3口分別連在一起,作為數(shù)碼管段碼控制。P0口的P0.4~P0.7那么與數(shù)碼管公共端連在一起作為位碼選擇控制,使每只數(shù)碼管可以單獨(dú)顯示。由于單片機(jī)端口驅(qū)動(dòng)能力缺乏,數(shù)碼管的電流較大,所以在P0.0~P0.3口接上拉電阻增加驅(qū)動(dòng)能力,P0.4~P0.7口作為位碼控制端驅(qū)動(dòng)共陰型數(shù)碼管顯示。同時(shí),使用74HC4511作為單片機(jī)BCD碼輸出的譯碼器,將其BCD碼轉(zhuǎn)換成為能是數(shù)碼管顯示數(shù)字的二進(jìn)制編碼。P0.4~P0.7端口也是用來(lái)進(jìn)行數(shù)碼管動(dòng)態(tài)掃描用的,能同時(shí)顯示搶答者的位數(shù)與倒計(jì)時(shí)的時(shí)間。如圖3-8所示。圖3-8譯碼顯示電路3.4報(bào)警電路如圖3-9所示,當(dāng)主持人按下開(kāi)始鍵,倒計(jì)時(shí)到“搶答時(shí)間顯示”數(shù)碼管上顯示5秒都無(wú)人搶答時(shí),D1〔LED-RED〕開(kāi)始閃爍,直到顯示00時(shí),D1〔LED-RED〕亮。主持人按下K3“開(kāi)始/啟用”鍵后,如果在倒計(jì)時(shí)27秒時(shí)45號(hào)選手成功搶答,那么“搶答時(shí)間顯示”數(shù)碼管上顯示27,“搶答選手號(hào)顯示”數(shù)碼管上那么顯示45,同時(shí)D2(LED-BLUE)亮。圖3-9報(bào)警電路第4章軟件設(shè)計(jì)軟件的主要功能包括:人機(jī)交互,矩陣鍵盤(pán)的掃描及信號(hào)的處理。其中,最核心的功能是控制矩陣鍵盤(pán)的掃描及數(shù)據(jù)的處理,為實(shí)現(xiàn)方便,我們采用88矩陣掃描。系統(tǒng)接通電源,單片機(jī)進(jìn)行內(nèi)部掃描的同時(shí),可以調(diào)節(jié)搶答時(shí)間,如果沒(méi)有調(diào)節(jié)搶答時(shí)間,那么搶答器時(shí)間為設(shè)置的默認(rèn)值〔搶答時(shí)間30s〕。在未按下K3“開(kāi)始/啟用”鍵時(shí),選手將無(wú)法搶答;當(dāng)按下K3“開(kāi)始/啟用”鍵時(shí),單片機(jī)開(kāi)始倒計(jì)時(shí)并送到數(shù)碼管顯示,此時(shí)選手才能搶答,同時(shí)在LED數(shù)碼管上顯示選手號(hào),D2(LED-BLUE)亮。如果在按下K3“開(kāi)始/啟用”鍵,直到倒計(jì)時(shí)顯示5秒時(shí)仍然無(wú)人搶答,那么D1〔LED-RED〕開(kāi)始閃爍,直到顯示00時(shí),D1〔LED-RED〕亮。時(shí)間調(diào)節(jié)采用中斷來(lái)實(shí)現(xiàn),流程圖如圖4-1所示,如果想調(diào)節(jié)搶答時(shí)間,按K1或K2鍵進(jìn)入調(diào)節(jié)狀態(tài),此時(shí)“搶答時(shí)間顯示”數(shù)碼管上會(huì)顯示調(diào)節(jié)后的時(shí)間,調(diào)整范圍為0s~99s,0s時(shí)再減1s會(huì)跳到99s,99s時(shí)再加1s會(huì)變到0s。系統(tǒng)主程序控制單片機(jī)系統(tǒng)按預(yù)定的操作方式運(yùn)行,它是單片機(jī)系統(tǒng)程序的框架。系統(tǒng)上電后,對(duì)系統(tǒng)進(jìn)行初始化。初始化程序主要完成對(duì)單片機(jī)內(nèi)專用存放器的設(shè)定,單片機(jī)工作方式及各端口的工作狀態(tài)的規(guī)定流程圖如圖4-2所示。調(diào)節(jié)允許搶答時(shí)間調(diào)節(jié)允許搶答時(shí)間顯示搶答時(shí)間時(shí)間加時(shí)間減顯示調(diào)節(jié)后時(shí)間確定圖4-1中斷流程圖開(kāi)始系統(tǒng)初始化等待主持人設(shè)定倒計(jì)時(shí)8開(kāi)始系統(tǒng)初始化等待主持人設(shè)定倒計(jì)時(shí)88矩陣鍵盤(pán)掃描〔Y/N〕判斷位號(hào)顯示NY圖4-2系統(tǒng)程序流程圖第5章整機(jī)原理由整機(jī)原理圖〔附錄1〕可知,單片機(jī)AT89C52的P1口和P2口接矩陣按鍵開(kāi)關(guān);P0口作為輸出端,分別接入相對(duì)應(yīng)的74HC4511譯碼器和作為“搶答時(shí)間顯示”、“搶答選手號(hào)顯示”的數(shù)碼管,以及作為驅(qū)動(dòng)電阻的排阻;P3.5~P3.6口接的是報(bào)警電路,由發(fā)光二極管D1、D2組成;P3.0~P3.3口作為輸入端,接的是主持人所用的按鍵K1~K4。系統(tǒng)接通電源后,搶答器處于禁止搶答狀態(tài),“搶答時(shí)間顯示”數(shù)碼管上顯示系統(tǒng)設(shè)定的時(shí)間30s,“搶答選手號(hào)顯示”數(shù)碼管上顯示00。將K3“開(kāi)始/啟用”鍵開(kāi)關(guān)按下時(shí),系統(tǒng)開(kāi)始倒計(jì)時(shí),選手如果在定時(shí)時(shí)間內(nèi)搶答,搶答器將完成:優(yōu)先判斷、選手號(hào)鎖存、選手號(hào)顯示、搶答時(shí)間顯示、發(fā)光二極管提示等,此時(shí)該選手搶答成功,而其他選手那么無(wú)法再搶答。例如,當(dāng)按下K3“開(kāi)始/啟用”鍵后,如果在倒計(jì)時(shí)27秒時(shí)45號(hào)選手成功搶答,那么“搶答時(shí)間顯示”數(shù)碼管上顯示27,“搶答選手號(hào)顯示”數(shù)碼管上那么顯示45,同時(shí)D2(LED-BLUE)亮。系統(tǒng)接通電源后,單片機(jī)進(jìn)行內(nèi)部掃描的同時(shí),還可以通過(guò)K1“+1s”鍵和K2“-1s”鍵調(diào)節(jié)搶答時(shí)間,在整個(gè)系統(tǒng)設(shè)定的時(shí)間當(dāng)中如果沒(méi)有調(diào)節(jié)搶答時(shí)間,那么搶答器工作為設(shè)置的默認(rèn)值〔搶答時(shí)間30s〕,等待被按下K3“開(kāi)始/啟用”鍵進(jìn)入搶答計(jì)時(shí)。當(dāng)按下K3“開(kāi)始/啟用”鍵,倒計(jì)時(shí)到“搶答時(shí)間顯示”數(shù)碼管上顯示5秒都無(wú)人搶答時(shí),D1〔LED-RED〕開(kāi)始閃爍,直到顯示00時(shí),D1〔LED-RED〕亮。如果需再次搶答,那么必須由主持人將K4“重新?lián)尨稹辨I開(kāi)關(guān)按下。第6章仿真與調(diào)試6.1軟件的仿真首先編寫(xiě)C程序,然后仿真直到0錯(cuò)誤,0警告,最后生成hex文件以備后用,如圖6-1所示。圖6-1程序仿真完成在軟件ProteusISIS中的原理圖編輯區(qū)畫(huà)好硬件電路圖,設(shè)置好相應(yīng)參數(shù),導(dǎo)入hex文件。具體功能仿真如下:電路初始化,搶答時(shí)間顯示30秒,搶答選手號(hào)顯示00,等待主持人按下開(kāi)始鍵,如圖6-2所示。圖6-2電路初始化搶答時(shí)間顯示調(diào)至60秒時(shí),如圖6-3所示。主持人按下開(kāi)始鍵,倒計(jì)時(shí)到5秒都無(wú)人搶答時(shí),D1〔LED-RED〕開(kāi)始閃爍,直到顯示00時(shí),D1〔LED-RED〕亮,如圖6-4所示。主持人按下開(kāi)始鍵,在倒計(jì)時(shí)27秒時(shí)45號(hào)選手成功搶答,搶答時(shí)間顯示器顯示27,搶答選手號(hào)顯示45,同時(shí)D2(LED-BLUE)亮,如圖6-5所示。圖6-3搶答時(shí)間顯示調(diào)至60秒圖6-4無(wú)人搶答時(shí)顯示圖6-545號(hào)選手成功搶答6.2實(shí)物的制作與調(diào)試總結(jié)時(shí)至今日,幾個(gè)禮拜的畢業(yè)設(shè)計(jì)終于可以畫(huà)上一個(gè)句號(hào),但是現(xiàn)在回想起畢業(yè)設(shè)計(jì)的整個(gè)過(guò)程,頗有心得!沒(méi)有接受任務(wù)以前覺(jué)得畢業(yè)設(shè)計(jì)只是對(duì)這幾年來(lái)所學(xué)知識(shí)的單純總結(jié),但是通過(guò)這次做畢業(yè)設(shè)計(jì)發(fā)現(xiàn)自己以前的看法有點(diǎn)太片面、太偏激了。畢業(yè)設(shè)計(jì)不僅是對(duì)前面所學(xué)知識(shí)的一種檢驗(yàn),而且也是對(duì)自己能力的一種提高。下面我對(duì)整個(gè)畢業(yè)設(shè)計(jì)的過(guò)程做一下簡(jiǎn)單的總結(jié)。首先,接到任務(wù)以后進(jìn)行選題。選題是畢業(yè)設(shè)計(jì)的開(kāi)端,選擇恰當(dāng)?shù)?、感興趣的題目,對(duì)于整個(gè)畢業(yè)設(shè)計(jì)是否能夠順利進(jìn)行關(guān)系極大。好比走路,第一步是具有決定意義的,第一步邁向何方,需要慎重考慮。否那么,就可能走許多彎路、費(fèi)許多周折,甚至南轅北轍,難以到達(dá)目的地。因此,選題時(shí)一定要考慮好。然后,就是找資料了。查找資料是做畢業(yè)設(shè)計(jì)的前期準(zhǔn)備工作。除了上網(wǎng)查找資料外,到圖書(shū)館、書(shū)店、資料室去雖說(shuō)是比擬原始的方式,但也有可取之處的??傊?,不管通過(guò)哪種方式查的資料都是有利用價(jià)值的,要一一記錄下來(lái)以備后用。通過(guò)上面的過(guò)程,已經(jīng)積累了不少資料,對(duì)所選的題目也大概有了一些了解,下一步就是在這樣一個(gè)根底上,綜合已有的資料來(lái)更透徹的分析題目。有了研究方向,就應(yīng)該動(dòng)手實(shí)現(xiàn)了。其實(shí)以前的三步都是為這一步作的鋪墊。編寫(xiě)源代碼的時(shí)候最好是編寫(xiě)一個(gè)小模塊就進(jìn)行調(diào)試,這樣可以防止設(shè)計(jì)的最后出現(xiàn)太多的錯(cuò)誤而亂成一團(tuán)糟。每做一會(huì)兒會(huì)發(fā)現(xiàn)一處錯(cuò)誤就要即時(shí)修改,就這樣不斷的修改調(diào)試,再修改再調(diào)試。在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中使我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹(shù)立了對(duì)自己工作能力的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動(dòng)手的能力,使我充分體會(huì)到了在創(chuàng)造過(guò)程中探索的艱難和成功的喜悅。雖然這個(gè)設(shè)計(jì)還不是很完善,但是在設(shè)計(jì)過(guò)程中所學(xué)到的東西是這次畢業(yè)設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。參考文獻(xiàn)[1]朱永金,成友才.《單片機(jī)應(yīng)用技術(shù)》.北京中國(guó)勞動(dòng)社會(huì)保障出版社,2007[2]何立民.《單片機(jī)高等教程》.北京航空航天大學(xué)出版社,2000[3]何立民.《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)配置與接口技術(shù)》.北京航空航天大學(xué)出版社,2001[4]雄建云.《Protel99seEDA技術(shù)及應(yīng)用》.北京機(jī)械工業(yè)出版社,2007[5]華永平,陳松編著.《電子線路課程設(shè)計(jì)》.東南大學(xué)出版社[6]林春方.《電子線路學(xué)習(xí)指導(dǎo)與實(shí)訓(xùn)》.北京電子工業(yè)出版社,2004[7]楊寶清,宋文貴主編.《實(shí)用電路手冊(cè)》.機(jī)械工業(yè)出版社[8]張存禮,韓愛(ài)娟主編.《電子技術(shù)綜合實(shí)訓(xùn)》.北京師范大學(xué)出版社[9]楊頌華,馮毛官等主編.《數(shù)字電子技術(shù)根底》.西安電子科技大學(xué)出版社附錄1搶答器原理圖附錄2程序設(shè)計(jì)#include<reg52.h>unsignedcharcodetable1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; //數(shù)碼管段選表BCD碼〔0-9〕unsignedcharcodetable0[]={ 0xe0,0xd0,0xb0,0x70}; //數(shù)碼管位選表共四位unsignedcharcodetable2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //88編碼行列掃unsignedchardisplay[]={0,0,0,0};//四位數(shù)碼管地址intnum,num1; //定義變量num為動(dòng)態(tài)的記錄倒計(jì)時(shí)unsignedcharx,temp,k,a,num2,count,x2;//定義uchar變量,num2為暫存變量存儲(chǔ)倒計(jì)時(shí)sbitk1=P3^0;//按鍵1定義sbitk2=P3^1;//按鍵2定義sbitk3=P3^2;//按鍵3定義sbitk4=P3^3;//按鍵4定義sbitsp=P3^4;//倒計(jì)時(shí)提示信號(hào)輸出端voidsw1(); //函數(shù)申明voidsw2(); voidsw3(); voidsw4(); voidsw5(); voidsw6(); voidsw7(); voidsw8(); voidxianshi();//函數(shù)申明voidinit();//函數(shù)申明,假設(shè)在調(diào)用函數(shù)前此申明可以省略voiddelay(unsignedcharz) //帶參數(shù)的延時(shí)函數(shù)延時(shí)為x*1ms{Unsignedcharx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidinit() //初始化函數(shù){a=0; //全局變量a初值賦為零TMOD=0x01;//定時(shí)器工作為方式1EA=1; //開(kāi)總中斷ET0=1; //開(kāi)總定時(shí)器0中斷TH0=(65536-10000)/256;//定時(shí)器0高八位賦初值TL0=(65536-10000)%256;//定時(shí)器0低八位賦初值if(k1==0) //檢測(cè)按鍵1有無(wú)按下{delay(5); //延時(shí)消抖if(k1==0) //再次確認(rèn)按鍵1有無(wú)按下{num++; //有那么倒計(jì)時(shí)加1if(num>99) //檢測(cè)倒計(jì)時(shí)設(shè)置是否大于99{num=0; //假設(shè)倒計(jì)時(shí)設(shè)置大于99那么自動(dòng)回到0}num2=num; //將設(shè)定好了的倒計(jì)時(shí)賦給暫存變量num2while(k1==0); //等待按鍵釋放,又叫松手檢測(cè)}}if(k2==0) //檢測(cè)按鍵2有無(wú)按下{delay(5);if(k2==0){num--; //有那么倒計(jì)時(shí)減1if(num<1) //檢測(cè)倒計(jì)時(shí)設(shè)置是否小于1{num=99; //假設(shè)倒計(jì)時(shí)設(shè)置小于1那么自動(dòng)回到99}num2=num;while(k2==0); }}if(k3==0) //檢測(cè)按鍵3有無(wú)按下{delay(5); if(k3==0) {x++; //有那么變量X加1if(x>1) //檢測(cè)倒計(jì)時(shí)設(shè)置是否大于1{x=0; //是那么自動(dòng)回到0}}}}voidkeyboad() //按鍵編碼函數(shù){while(1) {if(P2==0xfe) //檢測(cè)行掃描是否為0xfe{ sw1(); //是那么調(diào)用sw1()函數(shù) }if(P2==0xfd){ sw2();}if(P2==0xfb){ sw3(); }if(P2==0xf7){ sw4(); }if(P2==0xef){ sw5(); }if(P2==0xdf){ sw6(); }if(P2==0xbf){ sw7(); }if(P2==0x7f){ sw8(); }}}voidsw1(void)//搶答者編碼函數(shù)1—8號(hào){switch(P1) //判斷P1口的返回值{ case0xfe:{delay(5);num1=1;xianshi();}break;//搶答者1號(hào)編碼,同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=2;xianshi();}break; case0xfb:{delay(5);num1=3;xianshi();}break; case0xf7:{delay(5);num1=4;xianshi();}break; case0xef:{delay(5);num1=5;xianshi();}break; case0xdf:{delay(5);num1=6;xianshi();}break; case0xbf:{delay(5);num1=7;xianshi();}break; case0x7f:{delay(5);num1=8;xianshi();}break;//搶答者8號(hào)編碼,同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfc:{delay(5);num1=1;xianshi();}break;//搶答者1號(hào)編碼,此可以不要類似有限編碼,同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfa:{delay(5);num1=1;xianshi();}break; case0xf6:{delay(5);num1=1;xianshi();}break; case0xee:{delay(5);num1=1;xianshi();}break; case0xde:{delay(5);num1=1;xianshi();}break; case0xbe:{delay(5);num1=1;xianshi();}break; case0x7e:{delay(5);num1=1;xianshi();}break;//搶答者1號(hào)編碼,此可以不要類似有限編碼,同時(shí)調(diào)用延時(shí)和顯示函數(shù) default:break; //假設(shè)是其它值那么返回 } if(k4==0) //檢測(cè)按鍵4有無(wú)按下,類似于復(fù)位按鍵 { num=num2; //假設(shè)按下那么將事先設(shè)置好的暫存變量賦給倒計(jì)時(shí) num1=0; //搶答者號(hào)數(shù)清零 TR0=1; //翻開(kāi)定時(shí)器0倒計(jì)時(shí)開(kāi)始計(jì)時(shí) return; //退出此函數(shù) }}voidsw2(void) //搶答者編碼函數(shù)9—16號(hào){ switch(P1) { case0xfe:{delay(5);num1=9;xianshi();}break;//搶答者9號(hào)編碼,同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=10;xianshi();}break; case0xfb:{delay(5);num1=11;xianshi();}break; case0xf7:{delay(5);num1=12;xianshi();}break; case0xef:{delay(5);num1=13;xianshi();}break; case0xdf:{delay(5);num1=14;xianshi();}break; case0xbf:{delay(5);num1=15;xianshi();}break; case0x7f:{delay(5);num1=16;xianshi();}break; default:break; } if(k4==0) { num=num2; num1=0; TR0=1; return; }}voidsw3(void) //搶答者編碼函數(shù)17—24號(hào){ switch(P1) { case0xfe:{delay(5);num1=17;xianshi();}break;//搶答者17號(hào)編碼同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=18;xianshi();}break;case0xfb:{delay(5);num1=19;xianshi();}break; case0xf7:{delay(5);num1=20;xianshi();}break; case0xef:{delay(5);num1=21;xianshi();}break; case0xdf:{delay(5);num1=22;xianshi();}break; case0xbf:{delay(5);num1=23;xianshi();}break; case0x7f:{delay(5);num1=24;xianshi();}break;default:break; } if(k4==0) { num=num2; num1=0;TR0=1; return; }}voidsw4(void) //搶答者編碼函數(shù)25—32號(hào){ switch(P1) { case0xfe:{delay(5);num1=25;xianshi();}break;//搶答者25號(hào)編碼同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=26;xianshi();}break; case0xfb:{delay(5);num1=27;xianshi();}break; case0xf7:{delay(5);num1=28;xianshi();}break; case0xef:{delay(5);num1=29;xianshi();}break; case0xdf:{delay(5);num1=30;xianshi();}break; case0xbf:{delay(5);num1=31;xianshi();}break; case0x7f:{delay(5);num1=32;xianshi();}break;default:break;} if(k4==0) { num=num2; num1=0;TR0=1; return; }}voidsw5(void) //搶答者編碼函數(shù)33—40號(hào){ switch(P1) { case0xfe:{delay(5);num1=33;xianshi();}break;//搶答者33號(hào)編碼同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=34;xianshi();}break; case0xfb:{delay(5);num1=35;xianshi();}break; case0xf7:{delay(5);num1=36;xianshi();}break; case0xef:{delay(5);num1=37;xianshi();}break; case0xdf:{delay(5);num1=38;xianshi();}break; case0xbf:{delay(5);num1=39;xianshi();}break; case0x7f:{delay(5);num1=40;xianshi();}break; default:break; } if(k4==0) { num=num2; num1=0; TR0=1; return; }}voidsw6(void) //搶答者編碼函數(shù)41—48號(hào){ switch(P1) { case0xfe:{delay(5);num1=41;xianshi();}break;//搶答者41號(hào)編碼同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=42;xianshi();}break; case0xfb:{delay(5);num1=43;xianshi();}break; case0xf7:{delay(5);num1=44;xianshi();}break; case0xef:{delay(5);num1=45;xianshi();}break; case0xdf:{delay(5);num1=46;xianshi();}break; case0xbf:{delay(5);num1=47;xianshi();}break; case0x7f:{delay(5);num1=48;xianshi();}break; default:break; } if(k4==0) { num=num2; num1=0;TR0=1; return; }}voidsw7(void) //搶答者編碼函數(shù)49—56號(hào){ switch(P1) { case0xfe:{delay(5);num1=49;xianshi();}break;//搶答者48號(hào)編碼同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=50;xianshi();}break; case0xfb:{delay(5);num1=51;xianshi();}break; case0xf7:{delay(5);num1=52;xianshi();}break; case0xef:{delay(5);num1=53;xianshi();}break; case0xdf:{delay(5);num1=54;xianshi();}break; case0xbf:{delay(5);num1=55;xianshi();}break; case0x7f:{delay(5);num1=56;xianshi();}break; default:break;} if(k4==0) { num=num2; num1=0;TR0=1; return; }}voidsw8(void) //搶答者編碼函數(shù)57—64號(hào){ switch(P1) { case0xfe:{delay(5);num1=57;xianshi();}break;//搶答者48號(hào)編碼同時(shí)調(diào)用延時(shí)和顯示函數(shù) case0xfd:{delay(5);num1=58;xianshi();}break; case0xfb:{delay(5);num1=59;xianshi();}break; case0xf7:{delay(5);num1=60;xianshi();}break; case0xef:{delay(5);num1=61;xianshi();}break; case0xdf:{delay(5);num1=62;xianshi();}break; case0xbf:{delay(5);num1=63;xianshi();}break; case0x7f:{delay(5);num1=64;xianshi();}break;default:break; } if(k4==0) { num=num2; num1=0;TR0=1; return;}}voidxianshi() //顯示函數(shù){unsignedchartime;TR0=0; //關(guān)定時(shí)器num=0; //搶答者號(hào)數(shù)清零for(time=200;time>0;time--) { sp=~sp; //搶答者成功提示信號(hào) } while(1) { for(a=0;a<4;a++)//數(shù)碼管動(dòng)態(tài)掃描4次 { delay(5);//延時(shí)5毫秒 P0=table1[display[a]]|table0[a];//送數(shù)碼管段選與位選 } display[0]=num/10; //數(shù)碼管位選相對(duì)應(yīng)的數(shù)據(jù)搶答者號(hào)數(shù)的十位 display[1]=num%10; //數(shù)碼管位選相對(duì)應(yīng)的數(shù)據(jù)搶答者號(hào)數(shù)的個(gè)位 display[2]=num1/10; //數(shù)碼管位選相對(duì)應(yīng)的數(shù)據(jù)倒計(jì)時(shí)號(hào)數(shù)的十位 display[3]=num1%10; //數(shù)碼管

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論