




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、摘 要 搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。但搶答器的使用頻 率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個(gè)單位,如果專門購一臺(tái)搶答器 雖然在經(jīng)濟(jì)上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶 答器損壞,再購置的麻煩和及時(shí)性就會(huì)影響活動(dòng)的開展,因此設(shè)計(jì)了本搶答器。 本設(shè)計(jì)是以八路搶答為基本理念??紤]到依需設(shè)定限時(shí)回答的功能,利用 at89c51 單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理, 將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地 顯示時(shí)間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)
2、能夠?qū)崿F(xiàn):在搶答中,只有 開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時(shí)間和回答問題的時(shí)間可 在 1-99s 設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶 答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖 定,在有效狀態(tài)下,按鍵無效非法。 關(guān)鍵詞:at89c51 led 數(shù)碼管 搶答器 計(jì)時(shí) 目 錄 1緒緒 論論.1 1.1 課題研究的相關(guān)背景.1 1.2 國內(nèi)外研究現(xiàn)狀.1 1.3 搶答器目前存在的主要問題.1 2搶答器的系統(tǒng)概述搶答器的系統(tǒng)概述.3 2.1 系統(tǒng)的主要功能.3 2.2 系統(tǒng)需求分析.4 2.3 搶答器的工作流程.
3、4 2.4 搶答器的工作過程.5 2.5 at89c51 特殊功能寄存器.6 2.6 at89c51 的功能及簡介.7 2.7 搶答器的優(yōu)點(diǎn)及組成.8 3系統(tǒng)總體方案的設(shè)計(jì)系統(tǒng)總體方案的設(shè)計(jì).10 3.1 硬件電路的設(shè)計(jì).10 3.2 總體原理圖.11 3.3 時(shí)鐘頻率電路的設(shè)計(jì).13 3.4 復(fù)位電路的設(shè)計(jì).14 3.5 顯示電路的設(shè)計(jì).14 3.6 鍵盤掃描電路的設(shè)計(jì).16 3.7 發(fā)聲電路.18 3.8 系統(tǒng)復(fù)位.19 4軟件設(shè)計(jì)軟件設(shè)計(jì).21 4.1 軟件任務(wù)分析.21 4.2 程序流程圖.22 4.3 主程序系統(tǒng)結(jié)構(gòu)圖.23 5 總結(jié)總結(jié).24 附錄附錄 a: 器件選型方案及詳細(xì)清單
4、器件選型方案及詳細(xì)清單.25 附錄附錄 b: 主要程序分析主要程序分析.25 附錄附錄 c: 實(shí)物圖實(shí)物圖.37 參參 考考 文文 獻(xiàn)獻(xiàn).39 1緒緒 論論 1.1課題研究的相關(guān)背景課題研究的相關(guān)背景 搶答器是一種應(yīng)用非常廣泛的設(shè)備,在各種競(jìng)賽、搶答場(chǎng)合中,它能迅速、客觀地 分辨出最先獲得發(fā)言權(quán)的選手。早期的搶答器只由幾個(gè)三極管、可控硅、發(fā)光管等組成, 能通過發(fā)光管的指示辯認(rèn)出選手號(hào)碼。現(xiàn)在大多數(shù)搶答器均使用單片機(jī)(如mcs-51型) 和數(shù)字集成電路,并增加了許多新功能,如選手號(hào)碼顯示、搶按前或搶按后的計(jì)時(shí)、選 手得分顯示等功能。 本課題利用at89c51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單
5、片機(jī)的定時(shí)器/計(jì) 數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí), 同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間和選手號(hào)碼。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。 系統(tǒng)達(dá)到要求:在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶 答限定時(shí)間和回答問題的時(shí)間可是在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶 答,正確按鍵后有音樂提示;搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,時(shí)間完后系統(tǒng)自動(dòng) 復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法1。 1.2國內(nèi)外研究現(xiàn)狀國內(nèi)外研究現(xiàn)狀 搶答器作為一種電子產(chǎn)品,早已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合,但目前所使 用的搶答器有的電路較復(fù)雜不便
6、于制作,可靠性低,實(shí)現(xiàn)起來很困難;有的則用一些專 用的集成塊,而專用集成塊的購買又很困難。為適應(yīng)高校等多代表隊(duì)單位活動(dòng)的需要而 設(shè)計(jì)一個(gè)多功能搶答器,這種搶答器具有電路簡單,元件普通,易于購買等優(yōu)點(diǎn),很好 地解決了制作者制作困難和難于購買的問題。在國內(nèi)外已經(jīng)開始了普遍的應(yīng)用2。 1.3搶答器目前存在的主要問題搶答器目前存在的主要問題 隨著改革開放事業(yè)的不斷深入,促使人們學(xué)科學(xué)、學(xué)技術(shù)、學(xué)知識(shí)的手段多種多樣, 搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。但搶答器的使用頻率校 低,且有的要么制作復(fù)雜,要么可靠性低,減少興致。作為一個(gè)單位若專購一臺(tái)搶答器 雖然在經(jīng)濟(jì)上可以承受,但每年使用
7、的次數(shù)極少,往往因長期存放使(電子器件的)搶 答器損壞,再購置的麻煩和及時(shí)性就會(huì)影響活動(dòng)的開展。 而且目前多數(shù)搶答器存在 3 個(gè)不足之處3: 第一,現(xiàn)場(chǎng)線路連接復(fù)雜。因?yàn)槊總€(gè)選手位于搶答現(xiàn)場(chǎng)的不同位置,每個(gè)選手與控 制臺(tái)之間要有長長的連接線。選手越多,連接線就越多、越亂,這些連接線不僅影響了 現(xiàn)場(chǎng)的美觀,而且降低了搶答器的可靠性,增加了安裝的難度,甚至影響了現(xiàn)場(chǎng)人員的 走動(dòng)。 第二,電路復(fù)雜。因?yàn)閱纹瑱C(jī)只完成號(hào)碼處理、計(jì)時(shí)、數(shù)據(jù)運(yùn)算等功能,其它功能 如選手號(hào)碼的識(shí)別、譯碼、計(jì)分顯示等仍只能通過數(shù)字集成電路完成。采用單片機(jī)掃描 技術(shù)識(shí)別選手搶按號(hào)碼時(shí),電路的延遲時(shí)間較大。 第三,選手搶按成功,但
8、出現(xiàn)沒有搶答被記錄的問題。 2搶答器的系統(tǒng)概述搶答器的系統(tǒng)概述 2.1系統(tǒng)的主要功能系統(tǒng)的主要功能 本系統(tǒng)是借用單片機(jī)采用模塊化設(shè)計(jì)的八路搶答器,包括 8 路搶答按紐、計(jì)時(shí)顯示、 提示功能等(根據(jù)需要可另設(shè)或多設(shè)相關(guān)功能) 、開始與結(jié)束控制按鈕、時(shí)限設(shè)定、各 種相關(guān)顯示調(diào)控功能等(根據(jù)需要也可另設(shè)或多設(shè)相關(guān)功能) 。 參賽者系統(tǒng),除享有搶答按紐的權(quán)利功能外,還有人性化的提示功能和時(shí)間提示功 能,也可設(shè)定由主控控制在參賽者終端表現(xiàn)的趣味性功能等;主控系統(tǒng)的控制按鈕做開 始與結(jié)束控制,根據(jù)活動(dòng)參賽者的層次,對(duì)提前掄答者的行為設(shè)定為非法或阻隔,若設(shè) 有非法搶答控制功能時(shí),在主控處帶有公示性顯示的非法
9、掄答者的臺(tái)位號(hào),對(duì)搶答限時(shí) 及回答問題限時(shí)設(shè)為倒計(jì)時(shí),并有顯示提示。 系統(tǒng)的主要功能模塊方框圖如圖 2.1 所示。 圖 2.1 系統(tǒng)主要功能模塊 本系統(tǒng)采用模塊化設(shè)計(jì)的八路搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個(gè)搶 答按鈕。一共有 8 個(gè)按鍵輸入,分別對(duì)應(yīng) 8 路選手的搶答按鍵。 主持人有開始和結(jié)束鍵。在后臺(tái)主持人可以修改,搶答時(shí)間和選手回答問題的時(shí)間 設(shè)置,原始狀態(tài)下?lián)尨饡r(shí)間為 20s,回答問題時(shí)間為 30s。通過加鍵和減鍵修改上述時(shí) 間,改完后結(jié)束鍵確定。新時(shí)間開始有效,主持人按鍵開始后,選手開始搶答為有效, 數(shù)碼顯示屏顯示搶答時(shí)間倒計(jì)時(shí)和選手號(hào),在最后五秒揚(yáng)聲器發(fā)生提示。如果主持人沒
10、 有按下開始鍵而選手就搶答視為犯規(guī),數(shù)碼顯示屏顯示犯規(guī)者的代號(hào),揚(yáng)聲器持續(xù)發(fā)生。 at89c51 4 位 七段 數(shù)碼 管顯 示 聲音電路 = 復(fù)位電路 開始、結(jié)束 按鍵輸入 加一、減一 按鍵輸入 時(shí)鐘 8 路搶答 按鍵輸入 主持人可按鍵結(jié)束,新一輪搶答開始。 單片機(jī)是整個(gè)搶答器的核心,內(nèi)部電路設(shè)計(jì)用匯編語言編寫。它完成了時(shí)間參數(shù)的 設(shè)定,搶按號(hào)碼的譯碼,保存;顯示;輸出,搶按及答題倒計(jì)時(shí)功能等。 本設(shè)計(jì)中,有一個(gè)共陰的數(shù)碼管組,四個(gè)數(shù)碼管。其中兩個(gè)顯示時(shí)間,一個(gè)空位, 一個(gè)顯示搶答號(hào)碼。主持人依次按下復(fù)位鍵(reset) ,開始鍵后開始搶答??梢該尠矗?超時(shí)數(shù)碼管顯示“fff” ,當(dāng)搶按超過規(guī)
11、定時(shí)間或答題超過規(guī)定時(shí)間后數(shù)碼管顯示 “fff” 。若有選手在規(guī)定時(shí)間內(nèi)搶按成功,則可以答題,數(shù)碼管顯示搶答時(shí)間的同時(shí)也 顯示選手號(hào)碼。若在按開始鍵前搶答表示違規(guī),數(shù)碼管顯示“ff”并顯示選手號(hào)碼。 2.2系統(tǒng)需求分析系統(tǒng)需求分析 1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效。 2、搶答限定時(shí)間和回答問題的時(shí)間可以在 199s 設(shè)定。 3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示。 4、搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,時(shí)間完后系統(tǒng)自動(dòng)復(fù)位。 5、搶答限定時(shí)間內(nèi)使用錦囊回答時(shí)間將加到 60s。 6、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。 2.3搶答器的工作流
12、程搶答器的工作流程 搶答器的基本工作原理4:在搶答競(jìng)賽或呼叫時(shí),有多個(gè)信號(hào)同時(shí)或不同時(shí)送入主 電路中,搶答器內(nèi)部的寄存器工作,并識(shí)別、記錄第一個(gè)號(hào)碼,同時(shí)內(nèi)部的定時(shí)器開始 工作,記錄有關(guān)時(shí)間并產(chǎn)生超時(shí)信號(hào)。在整個(gè)搶答器工作過程中,顯示電路、聲音電路 等還要根據(jù)現(xiàn)場(chǎng)的實(shí)際情況向外電路輸出相應(yīng)信號(hào)。搶答器的工作流程分為:系統(tǒng)復(fù)位、 正常流程、違例流程等幾部分,如圖2所示,下面分別予以介紹。 圖2.2 搶答器工作流程 2.4搶答器的工作過程搶答器的工作過程 1、如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按“加一”鍵或“減一”鍵進(jìn)入調(diào)節(jié)狀態(tài), 此時(shí)會(huì)顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,如想加一秒按一下加 1s鍵,
13、如果想減 一秒按一下“減 1s”鍵,時(shí)間 led 上會(huì)顯示改變后的時(shí)間,調(diào)整范圍為 099s, 0s 時(shí) 加載程序 運(yùn) 行 行 開始 開始數(shù)碼管顯 示 fff 開始搶 按時(shí)間倒計(jì)時(shí) 開始前有選手搶按 顯示違例選手號(hào) 碼并伴有語音報(bào) 警 倒計(jì)時(shí)結(jié) 束,超時(shí) 有選手 搶按 顯示 fff顯示選手號(hào)碼,倒計(jì) 時(shí)時(shí)間,語音報(bào)警,答 題,答題時(shí)間倒計(jì)時(shí) 正常流程違規(guī)流程 若超過答題 時(shí)間,則數(shù) 碼管顯示 fff 答題完畢 根據(jù)選手表現(xiàn), 規(guī) 則由主持人減分 再減 1s 會(huì)跳到 99,99s 時(shí)再加 1s 會(huì)變到 0s。 2、主持人按搶答開始鍵,會(huì)有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè) 20s 搶答時(shí) 間)
14、,如有選手搶答,會(huì)有提示音,并會(huì)顯示其號(hào)數(shù)并立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè) 30s 搶答時(shí)間) ,不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。倒數(shù)時(shí)間到小于 5s 會(huì)每秒響一下提示音。 3、如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按“停止”按鍵,系統(tǒng)會(huì)自動(dòng)進(jìn) 入準(zhǔn)備狀態(tài),等待主持人按“搶答開始”進(jìn)入下次搶答計(jì)時(shí)。 4、如果主持人未按“搶答開始”鍵,而有人按了搶答按鍵,犯規(guī)搶答,led 上不 斷閃爍 ff 和犯規(guī)號(hào)數(shù)并響個(gè)不停,直到按下“停止” 鍵為止。 總而言之,本課題利用at89c51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng)設(shè)計(jì)了搶答器, 該搶答器增加了新功能、提高了系統(tǒng)的可靠性、簡化了電路結(jié)構(gòu)、節(jié)約了
15、成本,是一個(gè) 實(shí)用的工程設(shè)計(jì)。 2.5at89c51 特殊功能寄存器特殊功能寄存器 特殊功能寄存器也稱專用寄存器5,是具有特殊功能的所有寄存器的集合,簡稱 sfr(special function register) 。特殊功能寄存器共含有 22 個(gè)不同寄存器。它們的地址 分配在 80hffh 中,即在 ram 地址中。這些寄存器的名稱和地址見表 2.1。 表 2.1 at89c51 特殊功能寄存器列表 符號(hào)地址注釋 *acce0h累加器 *bf0h乘法寄存器 *pswd0h程序狀態(tài)字 sp81h堆棧指針 dpl82h數(shù)據(jù)存儲(chǔ)器指針低 8 位 dph83h數(shù)據(jù)存儲(chǔ)器指針高 8 位 *iea8h
16、中斷允許控制器 *ipd8h中斷優(yōu)先控制器 *p080h端口 0 *p190h端口 1 *p2a0h端口 2 *p3b0h端口 3 pcon87h電源控制及波特率選擇 *scon98h串行口控制器 sbuf99h串行數(shù)據(jù)緩沖器 *tcon88h定時(shí)器控制 tmod89h定時(shí)器方式選擇 tl08ah定時(shí)器 0 低 8 位 tl18bh定時(shí)器 1 低 8 位 th08ch定時(shí)器 0 低 8 位 th18dh定時(shí)器 1 高 8 位 注:帶*號(hào)的特殊功能寄存器都是可以位尋址的寄存器 雖然特殊功能寄存器地址在 80hffh 之中,但在 80hffh 的地址單元中,不是 所有的單元都被特殊功能寄存器占用,
17、未被占用的單元,其內(nèi)容是不確定的,如果對(duì)這 些單元進(jìn)行操作,得到的是一些隨機(jī)數(shù),而寫入則無效。所以,用戶編程時(shí)不應(yīng)該將數(shù) 據(jù)寫入這些未確定的地址單元,它們是公司留待將來開發(fā)新產(chǎn)品時(shí)使用的。 2.6at89c51 的功能及簡介的功能及簡介 at89c51 單片機(jī)是 atmal 公司 89 系列單片機(jī)的一種 8 位 flash 單片機(jī)。它最大 特點(diǎn)是片內(nèi)含有 flash 存儲(chǔ)器,用途十分廣泛,特別是在生產(chǎn)便攜式商品,手提式儀器 等方面,有著十分廣泛的應(yīng)用6。 at89c51 單片機(jī)內(nèi)部主要有以下部件:8031cpu、振蕩電路、總線控制部件、中斷 控制部件、片內(nèi) flash 存儲(chǔ)器、片內(nèi) ram、并
18、行 i/o 接口、定時(shí)器和串行 i/o 接口 at89c51 是 89 系列單片機(jī)的標(biāo)準(zhǔn)型,它是與 msc-51 系列單片機(jī)兼容的。在內(nèi)部 含有 4kb 或 8kb 可重復(fù)編程的 flash 存儲(chǔ)器,可進(jìn)行 1000 次擦寫操作。全靜態(tài)工作為 0-24mhz,有 3 級(jí)程序鎖存器,內(nèi)部含有 128-256 字節(jié)的 ram,有 32 條可編程 i/o 口 線,2-3 個(gè) 16 位定時(shí)/計(jì)數(shù)器,6-8 個(gè)中斷源,通用的串行接口,低電壓空閑及電源下降 方式。 at89c51 單片機(jī)內(nèi)部由 cpu、4kb 的 fperom ,128b 的 ram,兩個(gè) 16 位的定 時(shí)/計(jì)數(shù)器 t0 和 t1,4 個(gè)
19、 8 位的 i/o 端 p0、p1、p2、p3 等組成。單片微機(jī)內(nèi)部最核心 的部分是 cpu。cpu 主要功能是產(chǎn)生各種控制信號(hào),控制存儲(chǔ)器、輸入/輸出端口的數(shù) 據(jù)傳輸、數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算以及位操作處理等,cpu 按其功能可分為運(yùn)算器和 控制器兩部分??刂破饔沙绦蛴?jì)數(shù)器 pc、指令儲(chǔ)存器、指令譯碼器、實(shí)時(shí)控制與條件 轉(zhuǎn)移邏輯電路等組成。它的功能是對(duì)來自存儲(chǔ)器中的指令進(jìn)行譯碼,通過實(shí)時(shí)控制電路, 在規(guī)定的時(shí)刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號(hào),使各部分協(xié)調(diào)工作,完成指 令所規(guī)定的操作。運(yùn)算器由算術(shù)邏輯器部件 alu、累加器 acc、暫存器、程序狀態(tài)字 寄存器 psw,bcd 碼運(yùn)算調(diào)整
20、電路等組成。 外部定 時(shí)元件 復(fù)位 中斷 電源 系統(tǒng)時(shí)鐘 rom cpu 定時(shí)/計(jì)數(shù)器 串行 i/o 口 并行 i/o 口 ram 圖 2.3 at89c51 單片機(jī)的內(nèi)部結(jié)構(gòu)圖 為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個(gè)通用寄存器 b 和一些專用寄存 器,還增加了位處理邏輯電路的功能。其內(nèi)部結(jié)構(gòu)如圖 2.3 所示。 at89c51 的主要性能包括:at89c51 與 mcs51 控制器系列產(chǎn)品兼容,片內(nèi)有 4k 可在線重復(fù)編程閃速電擦除存儲(chǔ)器(flash memory) ,存儲(chǔ)器可循環(huán)寫入/擦除 1000 次; 存儲(chǔ)器數(shù)據(jù)保存時(shí)間可達(dá) 10 年;工作電壓范圍寬:vcc 可由 2.7v 到
21、6v;全靜態(tài)工作 可由 0hz 到 16mhz;程序存儲(chǔ)器具有 3 級(jí)鎖存保護(hù);128*8 位內(nèi)部 ram;32 條可編程 i/o 線;兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器;中斷結(jié)構(gòu)具有 5 個(gè)中斷源和 2 個(gè)中斷優(yōu)先級(jí);可編 程全雙工串行通信;空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲(chǔ)內(nèi)容。 2.7搶答器的優(yōu)點(diǎn)及組成搶答器的優(yōu)點(diǎn)及組成 在知識(shí)比賽中,特別是做搶答題目的時(shí)候,在搶答過程中,為了知道哪一組或哪一 位選手先答題,必須要設(shè)計(jì)一個(gè)系統(tǒng)來完成這個(gè)任務(wù)。如果在搶答中,靠視覺是很難判 斷出哪組先答題。利用單片機(jī)系統(tǒng)來設(shè)計(jì)搶答器,使以上問題得以解決,即使兩組的搶 答時(shí)間相差幾微秒,也可分辨出哪組優(yōu)先答題。本
22、文主要介紹了單片機(jī)搶答器設(shè)計(jì)及工 作原理,以及它的實(shí)際用途。系統(tǒng)工作原理本系統(tǒng)采用 at89c51 單片機(jī)作為核心???制系統(tǒng)的四個(gè)模塊分別為:存儲(chǔ)模塊、顯示模塊、聲音模塊、搶答開關(guān)模塊。該搶答器 系統(tǒng)通過八個(gè)個(gè)按鍵輸入搶答信號(hào);利用存儲(chǔ)程序來完成軟件的設(shè)計(jì);利用一個(gè) 4 位七 段共陰數(shù)碼管來完成顯示功能。工作時(shí),用按鍵通過開關(guān)電路輸入各路的搶答信號(hào),經(jīng) 單片機(jī)的處理,輸出控制信號(hào),控制 4 位七段共陰數(shù)碼管和喇叭工作。在數(shù)碼管上顯示 哪一組先答題,從而實(shí)現(xiàn)整個(gè)搶答過程。 3系統(tǒng)總體方案的設(shè)計(jì)系統(tǒng)總體方案的設(shè)計(jì) 3.1硬件電路的設(shè)計(jì)硬件電路的設(shè)計(jì) 本設(shè)計(jì)分為硬件設(shè)計(jì)和軟件設(shè)計(jì),這兩者相互結(jié)合,
23、不可分離;從時(shí)間上看,硬件 設(shè)計(jì)的絕大部分工作量是在最初階段,到后期往往還要做一些修改。只要技術(shù)準(zhǔn)備充分, 硬件設(shè)計(jì)的大返工是比較少的,軟件設(shè)計(jì)的任務(wù)貫徹始終,到中后期基本上都是軟件設(shè) 計(jì)任務(wù),隨著集成電路技術(shù)的飛速發(fā)展,各種功能很強(qiáng)的芯片不斷出現(xiàn),使硬件電路的 集成度越來越高,硬件設(shè)計(jì)的工作量在整個(gè)項(xiàng)目中的所占的比重逐漸下降。為使硬件電 路設(shè)計(jì)盡可能合理,應(yīng)注意以下幾方面7: (1) 盡可能采用功能強(qiáng)的芯片,以簡化電路,功能強(qiáng)的芯片可以代替若干普通芯片, 隨著生產(chǎn)工藝的提高,新型芯片的的價(jià)格不斷下降,并不一定比若干普通芯片價(jià)格的總 和高。 (2) 留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路時(shí),要考慮到將來
24、修改擴(kuò)展的方便。因?yàn)楹苌?有一錘定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來可能要為一點(diǎn)小小的修改或擴(kuò)展而被 迫進(jìn)行全面返工。 (3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計(jì)采用 at89c51 單片機(jī)。 (4) ram 空間,at89c51 內(nèi)部 ram 不多,當(dāng)要增強(qiáng)軟件數(shù)據(jù)處理功能時(shí),往往 覺得不足。如果系統(tǒng)配置了外部 ram,則建議多留一些空間。如選用 8155 作 i/o 接口, 就可以增強(qiáng) 256 字節(jié) ram。如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的 ram,如 6264,62256 等。隨著軟件設(shè)計(jì)水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算 法,就可以使系統(tǒng)功能提高很多
25、,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級(jí)換代。只 要在硬件電路設(shè)計(jì)初期考慮到這一點(diǎn),就應(yīng)該為系統(tǒng)將來升級(jí)留足夠的 ram 空間,哪 怕多設(shè)計(jì)一個(gè) ram 的插座,暫不插芯片也好。 (5) i/o 端口:在樣機(jī)研制出來后進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問題, 而這些問題不是靠單純的軟件措施來解決的。如有些新的信號(hào)需要采集,就必須增加輸 入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計(jì)就預(yù)留出一 些 i/o 端口,雖然當(dāng)時(shí)空著沒用,那么用的時(shí)候就派上用場(chǎng)了。 3.2總體原理圖總體原理圖 本原理圖是利用 proteus 軟件是英國 labcenter electronics
26、公司出版的 eda 工具 (仿真軟件)。它不僅具有其它仿真軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是 目前最好的仿真單片機(jī)的工具。雖然目前國內(nèi)推廣剛起步,但已受到從事單片機(jī)教學(xué)的 教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者和單片機(jī)愛好者的青睞。在編譯方面,它支 持 iar、keil 和 mplab 等多種編譯器9。 proteus 軟件除了可以編輯設(shè)計(jì)電路原理圖,還可以進(jìn)行電路仿真。首先在畫好的 電路原理圖中選中需要編寫程序的芯片,并單擊鼠標(biāo)左鍵,打開 edition component 對(duì) 話框,設(shè)置單片機(jī)晶振頻率為 12mhz,在此窗口中的 program file 欄中,選擇之前用 ke
27、il 軟件生成的 keil 生成的 hex 文件。在 proteus 的菜單欄中選擇 file 并 save desig 選項(xiàng),保存設(shè)計(jì)。在 proteus 的菜單欄中,打開 debug 下拉菜單,在菜單中選中 use start/restart debugging 選項(xiàng), 這樣 proteus 中繪 制的電路原理圖就 可以鏈接上,keil 中生成的 hex 文 件進(jìn)行仿真了。 打開 proteus 軟件,在 file 的 下拉菜單中找到 new design 新建 proteus 并選擇 a4 版面,然后保存, 這樣就完成 proteus 的新建了。 把元件排布好 后,使用導(dǎo)線將各 個(gè)元件連
28、接起來, 最后繪制完成八路 掃描式搶答器電路 原理圖。 xtal2 18 xtal1 19 ale 30 ea 31 psen 29 rst 9 p0.0/ad0 39 p0.1/ad1 38 p0.2/ad2 37 p0.3/ad3 36 p0.4/ad4 35 p0.5/ad5 34 p0.6/ad6 33 p0.7/ad7 32 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.7/rd 17 p3.
29、6/wr 16 p3.5/t1 15 p2.7/a15 28 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 u1 at89c51 x1 crystal c1 33p c2 33p c3 10u r1 200r r2 510r ls1 speaker 12 u2:a 74ls04 1 2 3 4 5 6 11 12 8 u4 74s30 r3 100k r4 100k r5 100k r6 100k r7 100k r8 100k r9 100k 圖 3.1 系統(tǒng)仿真原理圖 圖中
30、 u1 為單片機(jī) at89c51,u2 為芯片 74hc30,u3 為芯片 74ls04。k1k8 分別 為 8 路搶答按鍵,分別接到單片機(jī)的 p1.0p1.7 中。開始按鍵與結(jié)束按鍵分別接到單片 機(jī)的 10、11 腳,由于單片機(jī)的 10、11 腳既有串行接口 rxd、txd 功能,又有 p3.0、p3.1 的 io 端口功能,此處按鍵用到單片機(jī) 10、11 腳的 io 端口功能。搶答時(shí)間 調(diào)整按鍵和回答時(shí)間調(diào)整按鍵分別接到單片機(jī)的 13、14 管腳,加一按鍵和減一按鍵分 別接到單片機(jī)的 15、16 管腳。4 位七段數(shù)碼管段選 p0 口。4 位七段數(shù)碼管的位選接 p2 口低 3 位,蜂鳴器輸出
31、為 p3.7 口8。 3.3時(shí)鐘頻率電路的設(shè)計(jì)時(shí)鐘頻率電路的設(shè)計(jì) 單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要 外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工 作速度。時(shí)鐘電路如圖 3.2 所示。 圖 3.2 外部振蕩源電路 一般選用石英晶體振蕩器。此電路在加電大約延遲 10ms 后振蕩器起振,在 xtal2 引腳產(chǎn)生幅度為 3v 左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。 電路中兩個(gè)電容 c1,c2 的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn) 行微調(diào)。c1,c2 的典型值為 20pf。 單片機(jī)在工作時(shí),由內(nèi)
32、部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí) 鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用 fosc表示。圖中時(shí)鐘 頻率為 12mhz,即 fosc=12mhz,則時(shí)鐘周期為 1/12s。 3.4復(fù)位電路的設(shè)計(jì)復(fù)位電路的設(shè)計(jì) 單片機(jī)的第 9 腳 rst 為硬件復(fù)位端,只要將該端持續(xù) 4 個(gè)機(jī)器周期的高電平即可 實(shí)現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖 3.3 所示: 圖 3.3 復(fù)位電路 圖 3.3 中由按鍵 reset1 以及電解電容 c3、電阻 r2 構(gòu)成按鍵及上電復(fù)位電路。由于 單片機(jī)是高電平復(fù)位,所以當(dāng)按鍵 reset1 按下時(shí)候,單片機(jī)的
33、9 腳 reset 管腳處于高 電平,此時(shí)單片機(jī)處于復(fù)位狀態(tài)。當(dāng)上電后,由于電容的緩慢充電,單片機(jī)的 9 腳電壓 逐步由高向低轉(zhuǎn)化,經(jīng)過一段時(shí)間后,單片機(jī)的 9 腳處于穩(wěn)定的低電平狀態(tài),此時(shí)單片 機(jī)上電復(fù)位完畢,系統(tǒng)程序從 0000h 開始執(zhí)行。 值得注意的是,在設(shè)計(jì)當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件 復(fù)位后的各狀態(tài)可知寄存器及存儲(chǔ)器的值都恢復(fù)到了初始值,而前面的功能介紹中提到 了倒計(jì)時(shí)時(shí)間的記憶功能,該功能的實(shí)現(xiàn)的前提條件就是不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位, 所以設(shè)定了軟復(fù)位功能。軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條 跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。 3.
34、5顯示電路的設(shè)計(jì)顯示電路的設(shè)計(jì) 顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供 盡可能豐富的信息,全靠軟件來解決。 在這里我們使用的是七段數(shù)碼管顯示,通常在顯示上我們采用的方法一般包括兩種: 一種是靜態(tài)顯示,一種是動(dòng)態(tài)顯示。其中靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,程序編寫 簡單,但占用端口資源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但 是相對(duì)靜態(tài)顯示而言占用端口資源少。在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法。 通過查表法,將其在數(shù)碼管上顯示出來,其中 p0 口為字型碼輸入端,p2 口低 3 位 為字選段輸入端。在這里我們通過查表將字型碼送給 7 段數(shù)碼管
35、顯示的數(shù)字,數(shù)碼管顯 示原理如下: mov a,r3 movc a,a+dptr mov p2,#0feh mov p0,a acall delay mov dptr,#dat2 mov a,r5 movc a,a+dptr mov p2,#0fdh mov p0,a acall delay mov a,r4 movc a,a+dptr mov p2,#0fbh mov p0,a acall delay ret 4 位七段數(shù)碼管顯示電路如圖 7 所示。 圖 3.4 共陰極數(shù)碼管 圖 3.4 中數(shù)碼管采用的是 4 位七段共陰數(shù)碼管,其中 ah 段分別接到單片機(jī)的 p0 口,由單片機(jī)輸出的 p0
36、口數(shù)據(jù)來決定段碼值,位選碼 com1、com3、com4 分別接 到單片機(jī)的 p2.0、p2.1、p2.2,由單片機(jī)來決定當(dāng)前該顯示的是哪一位。在圖中還有八 個(gè) 1k 的電阻,連接在 p0 口上,用作 p0 口的上拉電阻,保證 p0 口沒有數(shù)據(jù)輸出時(shí)候 處于高電平狀態(tài)。 3.6鍵盤掃描電路的設(shè)計(jì)鍵盤掃描電路的設(shè)計(jì) 鍵盤是人與單片機(jī)打交道的主要設(shè)備。關(guān)于鍵盤硬件電路的設(shè)計(jì)方法也可以在文獻(xiàn) 和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程 序。站在系統(tǒng)監(jiān)控軟件設(shè)計(jì)的立場(chǎng)上來看,僅僅完成鍵盤掃描,讀取當(dāng)前時(shí)刻的鍵盤狀 態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們?cè)诓僮?/p>
37、鍵盤就容易引起誤操作和 操作失控現(xiàn)象。在單片機(jī)應(yīng)用中鍵盤用得最多的形式是獨(dú)立鍵盤及矩陣鍵盤。 它們各有自己的特點(diǎn),其中獨(dú)立鍵盤硬件電路簡單,而且在程序設(shè)計(jì)上也不復(fù)雜, 一般用在對(duì)硬件電路要求不高的簡單電路中;矩陣鍵盤與獨(dú)立鍵盤有很大區(qū)別,首先在 硬件電路上它要比獨(dú)立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口 資源上有優(yōu)勢(shì)得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的 “毛刺”現(xiàn)象。這里采用最常用的方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:因?yàn)?“毛刺”脈沖一般持續(xù)時(shí)間短,約為幾 ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間, 所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)
38、間(這里我們?nèi)?10ms)后再判斷此電平是 否保持原狀態(tài),如果是則為有效按鍵,否則無效。 在本文設(shè)計(jì)中采用了獨(dú)立鍵盤的方式,本設(shè)計(jì)中有 8 個(gè)搶答按鍵輸入,一個(gè)開始按 鍵、一個(gè)結(jié)束按鍵,此外還有搶答時(shí)間調(diào)整鍵、回答時(shí)間調(diào)整鍵,加一按鍵、減一按鍵 各一個(gè)。如圖 3.5 所示。 圖 3.5 搶答按鍵及調(diào)整按鍵 在圖 3.5 中 8 個(gè)搶答按鍵分別接入單片機(jī)的 p1.0p1.7 端口,單片機(jī)通過讀取 p1.0p1.7 的值來判斷當(dāng)前輸入的是 8 個(gè)搶答按鍵中的哪一個(gè)。搶答時(shí)間調(diào)整和回答時(shí) 間調(diào)整接到單片機(jī)的 p3.3 和 p3.4 接口,加一及減一按鍵接到單片機(jī)的 p3.5 和 p3.6 接口。 圖
39、 3.6 開始、結(jié)束按鍵 在圖 3.6 中,開始及結(jié)束按鍵接到單片機(jī)的 10、11 腳,這里用到了單片機(jī) 10、11 腳復(fù)合功能中的 io 端口功能,單片機(jī)通過讀取 10、11 腳的 p3.0、p3.1 的 io 端口值來 判斷當(dāng)前是否處于搶答開始狀態(tài)或搶答結(jié)束狀態(tài)。 按鍵的觸點(diǎn)在閉合和斷開時(shí)均會(huì)產(chǎn)生抖動(dòng),這時(shí)觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不 妥善處理,將會(huì)引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行。現(xiàn)在一般均用軟件延時(shí)的方法來 避開抖動(dòng)階段,這一延時(shí)過程一般大于 5ms,例如取 10-20ms。如果監(jiān)控程序中的讀鍵 操作安排在主程序(后臺(tái)程序)或鍵盤中斷(外部中斷)子程序中,則該延時(shí)子程序便 可直接插入
40、讀鍵過程中。如果讀鍵過程安排在定時(shí)中斷子程序中,就可省去專門的延時(shí) 子程序,利用兩次定時(shí)中斷的時(shí)間間隔來完成抖動(dòng)處理。 k1k8 八個(gè)按鍵的輸入電平靠 74hc30 輸入與非門和 74ls04 反向器組成的電路改變 輸入電平。圖 3.7 中電路就是由一個(gè) 74hc30 輸入與非門和 74ls04 反向器組成的去抖電 路。 圖 3.7 去抖電路 3.7發(fā)聲發(fā)聲電路電路 我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機(jī)某個(gè) 口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能 發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高” “低”電平的持續(xù)時(shí)間,就能改變
41、 輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。 本文設(shè)計(jì)如圖 3.8 所示。圖中單片機(jī)的 14 腳輸出具有復(fù)合功能,此處用到了單片 機(jī) 17 腳的 io 端口功能,單片機(jī)通過內(nèi)部定時(shí)器的操作實(shí)現(xiàn)交替變換的波形輸出驅(qū)動(dòng)揚(yáng) 聲器發(fā)聲。 圖 3.8 發(fā)聲電路 3.8系統(tǒng)復(fù)位系統(tǒng)復(fù)位 使 cpu 進(jìn)入初始狀態(tài),從 0000h 地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。從實(shí)現(xiàn)系 統(tǒng)復(fù)位的方法來看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過 cpu 外 部的硬件電路給 cpu 的 reset 端加上足夠時(shí)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按 鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的
42、狀態(tài)均被初始化, 且對(duì)片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動(dòng)清除中斷激活標(biāo)志,使 中斷系統(tǒng)能夠正常工作,這樣一個(gè)事實(shí)卻容易為不少編碼人員所忽視。軟件復(fù)位就是用 一系列指令來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從 0000h 地址開始執(zhí)行。對(duì) 各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實(shí)際需要去主程序初 始化過程中完成。而對(duì)中斷激活標(biāo)志的清除工作常被遺忘,因?yàn)樗鼪]有明確的位地址可 供編程。有的編程人員用 020000(ljmp 0000h)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向 0000h 地址就完成了軟件復(fù)位,就是這類錯(cuò)誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看 門狗后
43、必須進(jìn)行的工作,這時(shí)程序出錯(cuò)完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志 已置位,它將阻止同級(jí)中斷響應(yīng)。由于軟件看門是高級(jí)中斷,它將阻止說要中斷響應(yīng), 由此可見清除中斷激活標(biāo)志的重要性。 在所有的指令中,只有 reti 指令能夠清除中斷激活標(biāo)志。出錯(cuò)處理程序 err 主要 完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。 程序一般先關(guān)中斷,以便后續(xù)處理能順利進(jìn)行,然后用兩個(gè) reti 指令代替兩個(gè) ljmp 指令,從而清除了兩級(jí)中斷激活標(biāo)志。有相應(yīng)軟件陷阱捕捉來的程序可能沒有全 部激活兩個(gè)標(biāo)志,這也無妨。 有復(fù)位時(shí)系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動(dòng)”和“熱啟動(dòng)” 。 “冷啟動(dòng)”時(shí), 系統(tǒng)的
44、狀態(tài)全部無效,進(jìn)行徹底的初始化操作;而“熱啟動(dòng)”時(shí),對(duì)系統(tǒng)的當(dāng)前狀態(tài)進(jìn) 行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)” ,以后由抗干 擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)” , 以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)” 。為了使系統(tǒng)能正確決定采用何 種啟動(dòng)方式,常用上電標(biāo)志來區(qū)分,如圖 3.9 所示。 復(fù)位 關(guān)中斷,設(shè)定堆棧 上電標(biāo)志 冷啟自檢 全面初始 化 熱啟動(dòng)恢復(fù)被破 壞的信息部分初 始化 建立上電標(biāo)志 開始運(yùn)轉(zhuǎn) 圖 3.9 系統(tǒng)復(fù)位策略圖 4軟件設(shè)計(jì)軟件設(shè)計(jì) 4.1軟件任務(wù)分析軟件任務(wù)分析 軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行
45、,哪些功能由硬件完成,哪些任務(wù)由軟件完 成,在硬件電路設(shè)計(jì)基本定型后,也就基本上決定下來了9。 軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來看可分為兩大類: 一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量,計(jì)算,顯示,打印,輸出控制 和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng) 軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏 重算法效率,與硬件關(guān)系密切,千變?nèi)f化。 軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和 接口定義(輸入輸出定義) 。在各執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)
46、類型問題也一并規(guī)劃好。 各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種 最適合的監(jiān)控程序結(jié)構(gòu)。相對(duì)來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程 序較易出問題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個(gè)廠長就比較難了。 軟件任務(wù)分析的另一個(gè)內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個(gè)系統(tǒng)軟件可分 為后臺(tái)程序(背景程序)和前臺(tái)程序。后臺(tái)程序指主程序及其調(diào)用的子程序,這類程序 對(duì)實(shí)時(shí)性要求不是太高,延誤幾十 ms 甚至幾百 ms 也沒關(guān)系,故通常將監(jiān)控程序(鍵 盤解釋程序) ,顯示程序和打印程序等與操作者打交道的程序放在后臺(tái)程序中執(zhí)行;而 前臺(tái)程序安排一些實(shí)時(shí)性要求較高的內(nèi)容
47、,如定時(shí)系統(tǒng)和外部中斷(如掉電中斷) 。也 可以將全部程序均安排在前臺(tái),后臺(tái)程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)” ,以利于系統(tǒng)節(jié)電 和抗干擾。 4.2程序流程圖程序流程圖 在本設(shè)計(jì)中包括了以下主要的程序:主程序,查詢程序,非法搶答程序,搶答時(shí)間 調(diào)整程序,回答時(shí)間調(diào)整程序,倒計(jì)時(shí)程序,正常搶答處理程序,犯規(guī)處理程序,顯示 及發(fā)聲程序。主流程圖如 4.1 所示: 圖 4.1 程序設(shè)計(jì)流程圖 4.3主程序系統(tǒng)結(jié)構(gòu)圖主程序系統(tǒng)結(jié)構(gòu)圖 顯示 fff 開始鍵 加一鍵 減一鍵 回答 時(shí)間 調(diào)整搶 答時(shí)間 去抖動(dòng) 非法搶 答處理 顯示 犯規(guī) 正常 搶答 顯示搶答 號(hào)并倒計(jì)時(shí) y y y 初始化 系統(tǒng)初始化模塊 按鍵
48、模塊 非 法 搶 答 模 塊 正 確 搶 答 模 塊 調(diào) 整 搶 答 時(shí) 間 調(diào) 整 回 答 時(shí) 間 模 塊 數(shù)碼顯示模塊 圖 4.2 軟件系統(tǒng)結(jié)構(gòu)圖 5 總結(jié)總結(jié) 基于單片機(jī)八路掃描式搶答器的設(shè)計(jì)是我在廣泛參加校團(tuán)委和學(xué)院各項(xiàng)活動(dòng)的親身 經(jīng)歷后,發(fā)現(xiàn)如果添加搶答器這樣的簡易實(shí)用的活動(dòng)道具,一定能使活動(dòng)更加公平公正 而又妙趣橫生。因此,我主動(dòng)選擇該課題,并通過姜老師和余老師的的指導(dǎo)以及同學(xué)間 的切磋認(rèn)真而饒有興致的完成了本次課程設(shè)計(jì)。 本次課程設(shè)計(jì)在軟、硬件設(shè)計(jì)成熟后,通過親手焊接電路板和燒制程序,最終實(shí)現(xiàn) 設(shè)計(jì)指標(biāo),基本完成的課程設(shè)計(jì)任務(wù)。其主要功能為: 1、開始搶答時(shí)間 20 秒(時(shí)間可調(diào)
49、) ; 2、八位選手搶答過程通過掃描方式在 led 燈處顯示出最先按鍵的選手編號(hào),并有 30 秒的答題時(shí)間(答題時(shí)間可調(diào)) ,超過答題時(shí)間則蜂鳴器警告; 3、一輪結(jié)束后復(fù)位即可重新開始; 4、以上搶答時(shí)間和答題時(shí)間均設(shè)計(jì)為可調(diào)。 回頭再看看該設(shè)計(jì),還可以將設(shè)計(jì)的擴(kuò)展功能增強(qiáng): 1、可以設(shè)計(jì)聲控裝置,在主持人說開始時(shí),系統(tǒng)自動(dòng)完成清零并開始計(jì)時(shí)的功能; 2、增加記分模塊,可以設(shè)定初始積分,并記錄每次搶答完成后的積分; 3、將搶答按鍵用無線實(shí)現(xiàn),如紅外線,使搶答者可以遠(yuǎn)距離進(jìn)行搶答,并簡化按 鍵模塊的線路布置。 如果提供相應(yīng)的器材及時(shí)間上的寬限,一定可以完成上述擴(kuò)展功能,進(jìn)一步完善作 品。 本設(shè)計(jì)
50、是在姜靜老師的指導(dǎo)下完成的。感謝老師在論文的選題、設(shè)計(jì)方案的確定, 設(shè)計(jì)的進(jìn)行以及最后的設(shè)計(jì)說明書的撰寫整個(gè)過程中給予我細(xì)心的指引和教導(dǎo),使我能 順利完成畢業(yè)設(shè)計(jì)。老師淵博的知識(shí)、敏銳的學(xué)術(shù)思維、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、求實(shí)的科學(xué) 態(tài)度和工作作風(fēng)以及創(chuàng)新的工作精神,令我終身受益,是我畢生學(xué)習(xí)的典范,值此論文 完成之際,謹(jǐn)向姜老師致以崇高的敬意和衷心的感謝! 附錄附錄 a: 器件選型方案及詳細(xì)清單器件選型方案及詳細(xì)清單 微控制器選用 atmal 公司生產(chǎn)的 at89c51,該芯片貨源充足,并且價(jià)格也比較 便宜。如表 1 所示。 表 1 器件選型方案的詳細(xì)清單 器件名稱規(guī)格型號(hào)數(shù)量 微處理器at89c51
51、1 74ls041芯片 74hc301 電阻3watt10k8 電容20pf3 晶振12mhz1 按鈕11 7 段數(shù)碼管7seg-mpx4-ca4 揚(yáng)聲器1 附錄附錄 b: 主要程序分析主要程序分析 主程序: ok equ 20h ;搶答開始標(biāo)志位 ring equ 22h ;響鈴標(biāo)志位 data0 equ 36h ;搶答按鍵口數(shù)據(jù)存放地址 org 0000h ajmp main org 0003h ajmp intt0 org 000bh ajmp t0int org 001bh ajmp t1int org 0040h main: mov r1,#20 ;初設(shè)搶答時(shí)間為 20s mov r
52、2,#30 ;初設(shè)答題時(shí)間為 30s mov 38h,#60 ;啟用錦囊時(shí)間從 60s 倒計(jì)時(shí) mov tmod,#11h ;設(shè)置未定時(shí)器/模式 1 mov th0,#0f0h mov tl0,#0ffh ;越高發(fā)聲頻率越高,越尖 mov th1,#3ch mov tl1,#0b0h ;50ms 為一次溢出中斷 setb ea setb et0 setb et1 ;允許二個(gè)中斷,t0/t1 clr ok clr ring setb tr1 setb tr0 ;一開始就運(yùn)行定時(shí)器,以開始顯示 fff.如果想重新計(jì)數(shù),重置 th1/tl1 就可以了 查詢程序: start: mov data0,#
53、0ffh ;初始化 mov r5,#0bh mov r4,#0bh mov r3,#0bh acall display ;未開始搶答時(shí)候顯示 fff jnb p3.3,selsub0 jnb p3.4,tz3 ;倒計(jì)時(shí)調(diào)整 jb p3.0,next acall delay jb p3.0,next ;去抖動(dòng),如果“開始鍵”按下就向下 執(zhí)行,否者跳到非法搶答查詢 setb ex0 ;開放 int0 acall bark ;按鍵發(fā)聲 mov a,r1 mov r6,a ;送 r1-r6,因?yàn)?r1 中保存了搶答時(shí)間 setb ok ;搶答標(biāo)志位,在使用錦囊時(shí)用作判斷 是搶答倒計(jì)時(shí)還是回答倒計(jì)時(shí) m
54、ov r3,#0ah ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù) ajmp count ;進(jìn)入倒計(jì)時(shí)程序,“查詢有效搶答的 程序”在 count 里面 next: jnb p1.0,false1 jnb p1.1,false2 jnb p1.2,false3 jnb p1.3,false4 jnb p1.4,false5 jnb p1.5,false6 jnb p1.6,tz1 jnb p1.7,tz2 ajmp start tz1: ajmp false7 tz2: ajmp false8 tz3: ajmp selsub1 非法搶答處理程序: false1: mov r3,#01h ajmp error f
55、alse2: mov r3,#02h ajmp error false3: mov r3,#03h ajmp error false4: mov r3,#04h ajmp error false5: mov r3,#05h ajmp error false6: mov r3,#06h ajmp error false7: mov r3,#07h ajmp error false8: mov r3,#08h ajmp error selsub0(搶答時(shí)間 r1 調(diào)整程序): selsub0: mov a,r1 mov b,#0ah div ab mov r5,a mov r4,b mov r3,
56、#0ah acall display ;先在兩個(gè)時(shí)間 led 上顯示 r1 jnb p3.5,inc0 ;p3.5 為+1s 鍵,如按下跳到 inco jnb p3.6,dec0 ;p3.6 為-1s 鍵,如按下跳到 deco jnb p3.1,back0 ;p3.1 為確定鍵,如按下跳到 backo ajmp selsub0 inc0: mov a,r1 cjne a,#63h,add0 ;如果不是 99,r2 加 1,如果加到 99,r1 就置 0,重新加起。 mov r1,#00h acall delay1 ajmp selsub0 add0: inc r1 acall delay1 a
57、jmp selsub0 dec0: mov a,r1 jz setr1 ;如果 r1 為 0, r1 就置 99, dec r1 acall delay1 ajmp selsub0 setr1: mov r1,#63h acall delay1 ajmp selsub0 back0: ajmp start selsub1(回答時(shí)間 r2 調(diào)整程序): selsub1: mov a,r2 mov b,#0ah div ab mov r5,a mov r4,b mov r3,#0ah acall display jnb p3.5,inc1 jnb p3.6,dec1 jnb p3.1,back1
58、ajmp selsub1 inc1: mov a,r2 cjne a,#63h,add1 mov r2,#00h acall delay1 ajmp selsub1 add1: inc r2 acall delay1 ajmp selsub1 dec1: mov a,r2 jz setr2 dec r2 acall delay1 ajmp selsub1 setr2: mov r2,#63h acall delay1 ajmp selsub1 back1: ajmp start 啟用錦囊程序: repeat:mov a,38h ;使用錦囊時(shí)重新計(jì)時(shí) mov r6,a clr ring ;當(dāng)?shù)褂?jì)
59、時(shí)進(jìn)入最后 5 秒的時(shí)候,啟用錦囊能消除蜂鳴 倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序): count: mov r0,#00h ;重置定時(shí)器中斷次數(shù) mov th1,#3ch mov tl1,#0b0h ;重置定時(shí)器 recount:mov a,r6 ;r6 保存了倒計(jì)時(shí)的時(shí)間,之前先將 搶答時(shí)間或回答時(shí)間給 r6 mov b,#0ah div ab ;除十分出個(gè)位/十位 mov 30h,a ;十位存于(30h) mov 31h,b ;個(gè)位存于(31h) mov r5,30h ;取十位 mov r4,31h ;取個(gè)位 mov a,r6 subb a,#07h jnc larger ;大
60、于 5s 跳到 larger,小于等于 5s 會(huì)提醒 mov a,r0 cjne a,#0ah,full ;1s 中 0.5s 向下運(yùn)行 clr ring ajmp check full: cjne a,#14h,check ;下面是 1s 的情況,響并顯示號(hào)數(shù)并清 r0,重新計(jì)算 setb ring mov a,r6 jz quit ;計(jì)時(shí)完畢 mov r0,#00h dec r6 ;一秒標(biāo)志減 1 ajmp check larger: mov a,r0 cjne a,#14h,check ;如果 1s 向下運(yùn)行,否者跳到“停/顯示” dec r6 ;計(jì)時(shí)一秒 r6 自動(dòng)減 1 mov r0
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)三年級(jí)下冊(cè)譯林版英語第四單元測(cè)試卷+參考答案
- 初級(jí)測(cè)量考試題庫及答案
- 衛(wèi)生知識(shí)科普課件
- 新沂數(shù)學(xué)面試試題及答案
- 社會(huì)影響的試題及答案
- 2024廣告設(shè)計(jì)師考試品牌形象分析題及答案
- 山東 教育學(xué)試題及答案
- 商業(yè)美術(shù)設(shè)計(jì)師考試復(fù)習(xí)試題及答案要點(diǎn)
- 學(xué)生洗碗考試題及答案
- 2024年國際商業(yè)美術(shù)設(shè)計(jì)師考試項(xiàng)目管理與時(shí)間控制試題及答案
- 《運(yùn)算的意義》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年六年級(jí)下冊(cè)數(shù)學(xué)北師大版
- 高效養(yǎng)中蜂關(guān)鍵技術(shù)
- 廣州小學(xué)六年級(jí)英語下冊(cè)知識(shí)點(diǎn)歸納和習(xí)題(全冊(cè))
- (正式版)JTT 1482-2023 道路運(yùn)輸安全監(jiān)督檢查規(guī)范
- MH-T 5035-2017民用機(jī)場(chǎng)高填方工程技術(shù)規(guī)范
- MOOC 英國社會(huì)與文化-武漢大學(xué) 中國大學(xué)慕課答案
- MOOC 數(shù)據(jù)挖掘-國防科技大學(xué) 中國大學(xué)慕課答案
- 兒科護(hù)理行政查房
- 測(cè)溫儀及測(cè)振儀的原理及使用 課件
- 船舶操縱與避碰智慧樹知到期末考試答案2024年
- 食品加工肉類行業(yè)食品安全培訓(xùn)
評(píng)論
0/150
提交評(píng)論