單片機課程設(shè)計:八路搶答器設(shè)計_第1頁
單片機課程設(shè)計:八路搶答器設(shè)計_第2頁
單片機課程設(shè)計:八路搶答器設(shè)計_第3頁
單片機課程設(shè)計:八路搶答器設(shè)計_第4頁
單片機課程設(shè)計:八路搶答器設(shè)計_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可在 1-99s 設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒記時顯示,滿時后系統(tǒng)計時自動復(fù)位及主控強制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。關(guān)鍵詞:AT89C51 LED 數(shù)碼管 搶答器 計時目 錄1緒緒 論論.1課題研究的相關(guān)背景.1國內(nèi)外研究現(xiàn)狀.1搶答器目前存在的主要問題.12搶答器的系統(tǒng)概述搶答器的系統(tǒng)概述.3系統(tǒng)的主要功能.3系統(tǒng)需求分析.4搶答器的工作流程.4搶答器的工作過程.5AT89C51 特殊功能寄存器.6AT89C51 的功能及簡介.7搶答

3、器的優(yōu)點及組成.83系統(tǒng)總體方案的設(shè)計系統(tǒng)總體方案的設(shè)計.10硬件電路的設(shè)計.10總體原理圖.11時鐘頻率電路的設(shè)計.13復(fù)位電路的設(shè)計.14顯示電路的設(shè)計.14鍵盤掃描電路的設(shè)計.16發(fā)聲電路.18系統(tǒng)復(fù)位.194軟件設(shè)計軟件設(shè)計.21軟件任務(wù)分析.21程序流程圖.22主程序系統(tǒng)結(jié)構(gòu)圖.235 總結(jié)總結(jié).24附錄附錄 A: 器件選型方案及詳細清單器件選型方案及詳細清單.25附錄附錄 B: 主要程序分析主要程序分析.25附錄附錄 C: 實物圖實物圖.37參參 考考 文文 獻獻.391緒緒 論論1.1課題研究的相關(guān)背景課題研究的相關(guān)背景搶答器是一種應(yīng)用非常廣泛的設(shè)備,在各種競賽、搶答場合中,它能

4、迅速、客觀地分辨出最先獲得發(fā)言權(quán)的選手。早期的搶答器只由幾個三極管、可控硅、發(fā)光管等組成,能通過發(fā)光管的指示辯認(rèn)出選手號碼?,F(xiàn)在大多數(shù)搶答器均使用單片機(如MCS-51型)和數(shù)字集成電路,并增加了許多新功能,如選手號碼顯示、搶按前或搶按后的計時、選手得分顯示等功能。本課題利用AT89C51單片機及外圍接口實現(xiàn)的搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間和選手號碼。用開關(guān)做鍵盤輸出,揚聲器發(fā)生提示。系統(tǒng)達到要求:在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可

5、是在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒記時顯示,時間完后系統(tǒng)自動復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法1。1.2國內(nèi)外研究現(xiàn)狀國內(nèi)外研究現(xiàn)狀搶答器作為一種電子產(chǎn)品,早已廣泛應(yīng)用于各種智力和知識競賽場合,但目前所使用的搶答器有的電路較復(fù)雜不便于制作,可靠性低,實現(xiàn)起來很困難;有的則用一些專用的集成塊,而專用集成塊的購買又很困難。為適應(yīng)高校等多代表隊單位活動的需要而設(shè)計一個多功能搶答器,這種搶答器具有電路簡單,元件普通,易于購買等優(yōu)點,很好地解決了制作者制作困難和難于購買的問題。在國內(nèi)外已經(jīng)開始了普遍的應(yīng)用2。1.3搶答器目前存

6、在的主要問題搶答器目前存在的主要問題隨著改革開放事業(yè)的不斷深入,促使人們學(xué)科學(xué)、學(xué)技術(shù)、學(xué)知識的手段多種多樣,搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識競賽場合。但搶答器的使用頻率校低,且有的要么制作復(fù)雜,要么可靠性低,減少興致。作為一個單位若專購一臺搶答器雖然在經(jīng)濟上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時性就會影響活動的開展。而且目前多數(shù)搶答器存在 3 個不足之處3:第一,現(xiàn)場線路連接復(fù)雜。因為每個選手位于搶答現(xiàn)場的不同位置,每個選手與控制臺之間要有長長的連接線。選手越多,連接線就越多、越亂,這些連接線不僅影響了現(xiàn)場的美觀,而且降低了

7、搶答器的可靠性,增加了安裝的難度,甚至影響了現(xiàn)場人員的走動。第二,電路復(fù)雜。因為單片機只完成號碼處理、計時、數(shù)據(jù)運算等功能,其它功能如選手號碼的識別、譯碼、計分顯示等仍只能通過數(shù)字集成電路完成。采用單片機掃描技術(shù)識別選手搶按號碼時,電路的延遲時間較大。第三,選手搶按成功,但出現(xiàn)沒有搶答被記錄的問題。2搶答器的系統(tǒng)概述搶答器的系統(tǒng)概述2.1系統(tǒng)的主要功能系統(tǒng)的主要功能本系統(tǒng)是借用單片機采用模塊化設(shè)計的八路搶答器,包括 8 路搶答按紐、計時顯示、提示功能等(根據(jù)需要可另設(shè)或多設(shè)相關(guān)功能) 、開始與結(jié)束控制按鈕、時限設(shè)定、各種相關(guān)顯示調(diào)控功能等(根據(jù)需要也可另設(shè)或多設(shè)相關(guān)功能) 。參賽者系統(tǒng),除享有

8、搶答按紐的權(quán)利功能外,還有人性化的提示功能和時間提示功能,也可設(shè)定由主控控制在參賽者終端表現(xiàn)的趣味性功能等;主控系統(tǒng)的控制按鈕做開始與結(jié)束控制,根據(jù)活動參賽者的層次,對提前掄答者的行為設(shè)定為非法或阻隔,若設(shè)有非法搶答控制功能時,在主控處帶有公示性顯示的非法掄答者的臺位號,對搶答限時及回答問題限時設(shè)為倒計時,并有顯示提示。系統(tǒng)的主要功能模塊方框圖如圖 2.1 所示。圖 2.1 系統(tǒng)主要功能模塊本系統(tǒng)采用模塊化設(shè)計的八路搶答器,在搶答比賽中廣泛應(yīng)用,各組分別有一個搶答按鈕。一共有 8 個按鍵輸入,分別對應(yīng) 8 路選手的搶答按鍵。主持人有開始和結(jié)束鍵。在后臺主持人可以修改,搶答時間和選手回答問題的時

9、間設(shè)置,原始狀態(tài)下?lián)尨饡r間為 20s,回答問題時間為 30s。通過加鍵和減鍵修改上述時間,改完后結(jié)束鍵確定。新時間開始有效,主持人按鍵開始后,選手開始搶答為有效,數(shù)碼顯示屏顯示搶答時間倒計時和選手號,在最后五秒揚聲器發(fā)生提示。如果主持人沒有按下開始鍵而選手就搶答視為犯規(guī),數(shù)碼顯示屏顯示犯規(guī)者的代號,揚聲器持續(xù)發(fā)生。 AT89C514 位七段數(shù)碼管顯示聲音電路=復(fù)位電路開始、結(jié)束按鍵輸入加一、減一按鍵輸入時鐘8 路搶答按鍵輸入主持人可按鍵結(jié)束,新一輪搶答開始。單片機是整個搶答器的核心,內(nèi)部電路設(shè)計用匯編語言編寫。它完成了時間參數(shù)的設(shè)定,搶按號碼的譯碼,保存;顯示;輸出,搶按及答題倒計時功能等。本

10、設(shè)計中,有一個共陰的數(shù)碼管組,四個數(shù)碼管。其中兩個顯示時間,一個空位,一個顯示搶答號碼。主持人依次按下復(fù)位鍵(RESET) ,開始鍵后開始搶答??梢該尠矗撼瑫r數(shù)碼管顯示“FFF” ,當(dāng)搶按超過規(guī)定時間或答題超過規(guī)定時間后數(shù)碼管顯示“FFF” 。若有選手在規(guī)定時間內(nèi)搶按成功,則可以答題,數(shù)碼管顯示搶答時間的同時也顯示選手號碼。若在按開始鍵前搶答表示違規(guī),數(shù)碼管顯示“FF”并顯示選手號碼。2.2系統(tǒng)需求分析系統(tǒng)需求分析1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效。2、搶答限定時間和回答問題的時間可以在 199s 設(shè)定。3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示

11、。4、搶答時間和回答問題時間倒記時顯示,時間完后系統(tǒng)自動復(fù)位。5、搶答限定時間內(nèi)使用錦囊回答時間將加到 60s。6、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。2.3搶答器的工作流程搶答器的工作流程搶答器的基本工作原理4:在搶答競賽或呼叫時,有多個信號同時或不同時送入主電路中,搶答器內(nèi)部的寄存器工作,并識別、記錄第一個號碼,同時內(nèi)部的定時器開始工作,記錄有關(guān)時間并產(chǎn)生超時信號。在整個搶答器工作過程中,顯示電路、聲音電路等還要根據(jù)現(xiàn)場的實際情況向外電路輸出相應(yīng)信號。搶答器的工作流程分為:系統(tǒng)復(fù)位、正常流程、違例流程等幾部分,如圖2所示,下面分別予以介紹。圖2.2 搶答器工作流程2.4搶答器的工作過程搶

12、答器的工作過程1、如果想調(diào)節(jié)搶答時間或答題時間,按“加一”鍵或“減一”鍵進入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下加 1s鍵,如果想減一秒按一下“減 1s”鍵,時間 LED 上會顯示改變后的時間,調(diào)整范圍為 099s, 0s 時加載程序運 行行開始開始數(shù)碼管顯示 FFF 開始搶按時間倒計時開始前有選手搶按顯示違例選手號碼并伴有語音報警倒計時結(jié)束,超時有選手搶按顯示 FFF顯示選手號碼,倒計時時間,語音報警,答題,答題時間倒計時正常流程違規(guī)流程若超過答題時間,則數(shù)碼管顯示 FFF答題完畢根據(jù)選手表現(xiàn),規(guī)則由主持人減分再減 1s 會跳到 99,99s 時再加 1s 會

13、變到 0s。2、主持人按搶答開始鍵,會有提示音,并立刻進入搶答倒計時(預(yù)設(shè) 20s 搶答時間) ,如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進入回答倒計時(預(yù)設(shè) 30s搶答時間) ,不進行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于 5s會每秒響一下提示音。3、如倒計時期間,主持人想停止倒計時可以隨時按“停止”按鍵,系統(tǒng)會自動進入準(zhǔn)備狀態(tài),等待主持人按“搶答開始”進入下次搶答計時。4、如果主持人未按“搶答開始”鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED 上不斷閃爍 FF 和犯規(guī)號數(shù)并響個不停,直到按下“停止” 鍵為止??偠灾?,本課題利用AT89C51單片機及外圍接口實現(xiàn)的搶答系

14、統(tǒng)設(shè)計了搶答器,該搶答器增加了新功能、提高了系統(tǒng)的可靠性、簡化了電路結(jié)構(gòu)、節(jié)約了成本,是一個實用的工程設(shè)計。2.5AT89C51 特殊功能寄存器特殊功能寄存器特殊功能寄存器也稱專用寄存器5,是具有特殊功能的所有寄存器的集合,簡稱SFR(Special Function Register) 。特殊功能寄存器共含有 22 個不同寄存器。它們的地址分配在 80HFFH 中,即在 RAM 地址中。這些寄存器的名稱和地址見表 2.1。表 2.1 AT89C51 特殊功能寄存器列表符號地址注釋*ACCE0H累加器*BF0H乘法寄存器*PSWD0H程序狀態(tài)字SP81H堆棧指針DPL82H數(shù)據(jù)存儲器指針低 8

15、 位DPH83H數(shù)據(jù)存儲器指針高 8 位*IEA8H中斷允許控制器*IPD8H中斷優(yōu)先控制器*P080H端口 0*P190H端口 1*P2A0H端口 2*P3B0H端口 3PCON87H電源控制及波特率選擇*SCON98H串行口控制器SBUF99H串行數(shù)據(jù)緩沖器*TCON88H定時器控制TMOD89H定時器方式選擇TL08AH定時器 0 低 8 位TL18BH定時器 1 低 8 位TH08CH定時器 0 低 8 位TH18DH定時器 1 高 8 位注:帶*號的特殊功能寄存器都是可以位尋址的寄存器雖然特殊功能寄存器地址在 80HFFH 之中,但在 80HFFH 的地址單元中,不是所有的單元都被特

16、殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的,如果對這些單元進行操作,得到的是一些隨機數(shù),而寫入則無效。所以,用戶編程時不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元,它們是公司留待將來開發(fā)新產(chǎn)品時使用的。2.6AT89C51 的功能及簡介的功能及簡介AT89C51 單片機是 ATMAL 公司 89 系列單片機的一種 8 位 Flash 單片機。它最大特點是片內(nèi)含有 Flash 存儲器,用途十分廣泛,特別是在生產(chǎn)便攜式商品,手提式儀器等方面,有著十分廣泛的應(yīng)用6。AT89C51 單片機內(nèi)部主要有以下部件:8031CPU、振蕩電路、總線控制部件、中斷控制部件、片內(nèi) Flash 存儲器、片內(nèi) RAM、

17、并行 I/O 接口、定時器和串行 I/O 接口AT89C51 是 89 系列單片機的標(biāo)準(zhǔn)型,它是與 MSC-51 系列單片機兼容的。在內(nèi)部含有 4KB 或 8KB 可重復(fù)編程的 Flash 存儲器,可進行 1000 次擦寫操作。全靜態(tài)工作為0-24MHZ,有 3 級程序鎖存器,內(nèi)部含有 128-256 字節(jié)的 RAM,有 32 條可編程 I/O 口線,2-3 個 16 位定時/計數(shù)器,6-8 個中斷源,通用的串行接口,低電壓空閑及電源下降方式。AT89C51 單片機內(nèi)部由 CPU、4KB 的 FPEROM ,128B 的 RAM,兩個 16 位的定時/計數(shù)器 T0 和 T1,4 個 8 位的

18、I/O 端 P0、P1、P2、P3 等組成。單片微機內(nèi)部最核心的部分是 CPU。CPU 主要功能是產(chǎn)生各種控制信號,控制存儲器、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運算、邏輯運算以及位操作處理等,CPU 按其功能可分為運算器和控制器兩部分??刂破饔沙绦蛴嫈?shù)器 PC、指令儲存器、指令譯碼器、實時控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對來自存儲器中的指令進行譯碼,通過實時控制電路,在規(guī)定的時刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運算器由算術(shù)邏輯器部件 ALU、累加器 ACC、暫存器、程序狀態(tài)字寄存器 PSW,BCD 碼運算調(diào)整電路等組成。外部定時元件復(fù)

19、位中斷電源系統(tǒng)時鐘ROMCPU定時/計數(shù)器串行 I/O 口并行 I/O 口RAM圖 AT89C51 單片機的內(nèi)部結(jié)構(gòu)圖為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個通用寄存器 B 和一些專用寄存器,還增加了位處理邏輯電路的功能。其內(nèi)部結(jié)構(gòu)如圖 2.3 所示。AT89C51 的主要性能包括:AT89C51 與 MCS51 控制器系列產(chǎn)品兼容,片內(nèi)有 4K可在線重復(fù)編程閃速電擦除存儲器(Flash Memory) ,存儲器可循環(huán)寫入/擦除 1000 次;存儲器數(shù)據(jù)保存時間可達 10 年;工作電壓范圍寬:Vcc 可由到 6V;全靜態(tài)工作可由0Hz 到 16MHz;程序存儲器具有 3 級鎖存保護;128

20、*8 位內(nèi)部 RAM;32 條可編程 I/O線;兩個 16 位定時器/計數(shù)器;中斷結(jié)構(gòu)具有 5 個中斷源和 2 個中斷優(yōu)先級;可編程全雙工串行通信;空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲內(nèi)容。2.7搶答器的優(yōu)點及組成搶答器的優(yōu)點及組成在知識比賽中,特別是做搶答題目的時候,在搶答過程中,為了知道哪一組或哪一位選手先答題,必須要設(shè)計一個系統(tǒng)來完成這個任務(wù)。如果在搶答中,靠視覺是很難判斷出哪組先答題。利用單片機系統(tǒng)來設(shè)計搶答器,使以上問題得以解決,即使兩組的搶答時間相差幾微秒,也可分辨出哪組優(yōu)先答題。本文主要介紹了單片機搶答器設(shè)計及工作原理,以及它的實際用途。系統(tǒng)工作原理本系統(tǒng)采用 AT89C51 單

21、片機作為核心。控制系統(tǒng)的四個模塊分別為:存儲模塊、顯示模塊、聲音模塊、搶答開關(guān)模塊。該搶答器系統(tǒng)通過八個個按鍵輸入搶答信號;利用存儲程序來完成軟件的設(shè)計;利用一個 4 位七段共陰數(shù)碼管來完成顯示功能。工作時,用按鍵通過開關(guān)電路輸入各路的搶答信號,經(jīng)單片機的處理,輸出控制信號,控制 4 位七段共陰數(shù)碼管和喇叭工作。在數(shù)碼管上顯示哪一組先答題,從而實現(xiàn)整個搶答過程。3系統(tǒng)總體方案的設(shè)計系統(tǒng)總體方案的設(shè)計3.1硬件電路的設(shè)計硬件電路的設(shè)計本設(shè)計分為硬件設(shè)計和軟件設(shè)計,這兩者相互結(jié)合,不可分離;從時間上看,硬件設(shè)計的絕大部分工作量是在最初階段,到后期往往還要做一些修改。只要技術(shù)準(zhǔn)備充分,硬件設(shè)計的大返

22、工是比較少的,軟件設(shè)計的任務(wù)貫徹始終,到中后期基本上都是軟件設(shè)計任務(wù),隨著集成電路技術(shù)的飛速發(fā)展,各種功能很強的芯片不斷出現(xiàn),使硬件電路的集成度越來越高,硬件設(shè)計的工作量在整個項目中的所占的比重逐漸下降。為使硬件電路設(shè)計盡可能合理,應(yīng)注意以下幾方面7:(1) 盡可能采用功能強的芯片,以簡化電路,功能強的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價格不斷下降,并不一定比若干普通芯片價格的總和高。(2) 留有設(shè)計余地。在設(shè)計硬件電路時,要考慮到將來修改擴展的方便。因為很少有一錘定音的電路設(shè)計,如果現(xiàn)在不留余地,將來可能要為一點小小的修改或擴展而被迫進行全面返工。(3) 程序空間,選

23、用片內(nèi)程序空間足夠大的單片機,本設(shè)計采用 AT89C51 單片機。(4) RAM 空間,AT89C51 內(nèi)部 RAM 不多,當(dāng)要增強軟件數(shù)據(jù)處理功能時,往往覺得不足。如果系統(tǒng)配置了外部 RAM,則建議多留一些空間。如選用 8155 作 I/O 接口,就可以增強 256 字節(jié) RAM。如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的 RAM,如6264,62256 等。隨著軟件設(shè)計水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級換代。只要在硬件電路設(shè)計初期考慮到這一點,就應(yīng)該為系統(tǒng)將來升級留足夠的 RAM 空間,哪怕多設(shè)計一個 RAM 的

24、插座,暫不插芯片也好。(5) I/O 端口:在樣機研制出來后進行現(xiàn)場試用時,往往會發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計就預(yù)留出一些 I/O 端口,雖然當(dāng)時空著沒用,那么用的時候就派上用場了。3.2總體原理圖總體原理圖 本原理圖是利用 Proteus 軟件是英國 Labcenter electronics 公司出版的 EDA 工具(仿真軟件)。它不僅具有其它仿真軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機的工具。雖然目前國內(nèi)推廣剛起步,但已受到從事

25、單片機教學(xué)的教師、致力于單片機開發(fā)應(yīng)用的科技工作者和單片機愛好者的青睞。在編譯方面,它支持 IAR、Keil 和 MPLAB 等多種編譯器9。Proteus 軟件除了可以編輯設(shè)計電路原理圖,還可以進行電路仿真。首先在畫好的電路原理圖中選中需要編寫程序的芯片,并單擊鼠標(biāo)左鍵,打開 Edition Component 對話框,設(shè)置單片機晶振頻率為 12MHZ,在此窗口中的 program file 欄中,選擇之前用keil 軟件生成的 KEIL 生成的 HEX 文件。在 Proteus 的菜單欄中選擇 file 并 Save Desig選項,保存設(shè)計。在 Proteus 的菜單欄中,打開 Debu

26、g 下拉菜單,在菜單中選中 Use start/restart debugging 選項,這樣 proteus 中繪制的電路原理圖就可以鏈接上,keil中生成的 HEX 文件進行仿真了。打開 proteus軟件,在 File 的下拉菜單中找到New Design 新建Proteus 并選擇 A4版面,然后保存,這樣就完成proteus 的新建了。把元件排布好后,使用導(dǎo)線將各個元件連接起來,最后繪制完成八路掃描式搶答器電路原理圖。圖 系統(tǒng)仿真原理圖XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0

27、.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC133pC233pC310uR1200RR2510RLS1SPEAKER12U2:A74LS0

28、412345611128U474S30R3100kR4100kR5100kR6100kR7100kR8100kR9100k圖中 U1 為單片機 AT89C51,U2 為芯片 74HC30,U3 為芯片 74LS04。K1K8 分別為 8 路搶答按鍵,分別接到單片機的 P1.0P1.7 中。開始按鍵與結(jié)束按鍵分別接到單片機的 10、11 腳,由于單片機的 10、11 腳既有串行接口 RXD、TXD 功能,又有P3.0、P3.1 的 IO 端口功能,此處按鍵用到單片機 10、11 腳的 IO 端口功能。搶答時間調(diào)整按鍵和回答時間調(diào)整按鍵分別接到單片機的 13、14 管腳,加一按鍵和減一按鍵分別接到

29、單片機的 15、16 管腳。4 位七段數(shù)碼管段選 P0 口。4 位七段數(shù)碼管的位選接 P2口低 3 位,蜂鳴器輸出為 P3.7 口8。3.3時鐘頻率電路的設(shè)計時鐘頻率電路的設(shè)計單片機必須在時鐘的驅(qū)動下才能工作。在單片機內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的工作速度。時鐘電路如圖所示。圖 外部振蕩源電路一般選用石英晶體振蕩器。此電路在加電大約延遲 10ms 后振蕩器起振,在 XTAL2引腳產(chǎn)生幅度為 3V 左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2 的作用有兩個:一是幫助振蕩器起振;二是對

30、振蕩器的頻率進行微調(diào)。C1,C2 的典型值為 20PF。單片機在工作時,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),常用 fosc表示。圖中時鐘頻率為 12MHz,即 fosc=12MHz,則時鐘周期為 1/12s。3.4復(fù)位電路的設(shè)計復(fù)位電路的設(shè)計單片機的第 9 腳 RST 為硬件復(fù)位端,只要將該端持續(xù) 4 個機器周期的高電平即可實現(xiàn)復(fù)位,復(fù)位后單片機的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖所示:圖 復(fù)位電路圖中由按鍵 RESET1 以及電解電容 C3、電阻 R2 構(gòu)成按鍵及上電復(fù)位電路。由于單片機是高電平復(fù)位,所以當(dāng)按鍵 R

31、ESET1 按下時候,單片機的 9 腳 RESET 管腳處于高電平,此時單片機處于復(fù)位狀態(tài)。當(dāng)上電后,由于電容的緩慢充電,單片機的 9 腳電壓逐步由高向低轉(zhuǎn)化,經(jīng)過一段時間后,單片機的 9 腳處于穩(wěn)定的低電平狀態(tài),此時單片機上電復(fù)位完畢,系統(tǒng)程序從 0000H 開始執(zhí)行。值得注意的是,在設(shè)計當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲器的值都恢復(fù)到了初始值,而前面的功能介紹中提到了倒計時時間的記憶功能,該功能的實現(xiàn)的前提條件就是不能對單片機進行硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的

32、起始地址。3.5顯示電路的設(shè)計顯示電路的設(shè)計顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來解決。在這里我們使用的是七段數(shù)碼管顯示,通常在顯示上我們采用的方法一般包括兩種:一種是靜態(tài)顯示,一種是動態(tài)顯示。其中靜態(tài)顯示的特點是顯示穩(wěn)定不閃爍,程序編寫簡單,但占用端口資源多;動態(tài)顯示的特點是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但是相對靜態(tài)顯示而言占用端口資源少。在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法。通過查表法,將其在數(shù)碼管上顯示出來,其中 P0 口為字型碼輸入端,P2 口低 3 位為字選段輸入端。在這里我們通過查表將字型碼送給 7 段數(shù)碼管顯

33、示的數(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 RET4 位七段數(shù)碼管顯示電路如圖 7 所示。圖 共陰極數(shù)碼管圖中數(shù)碼管采用的是 4 位七段共陰數(shù)碼管,其中 AH 段分別接到單片機的 P0 口,由單片機輸出的 P0 口數(shù)據(jù)來決定段碼值,位選碼

34、COM1、COM3、 、P2.1、P2.2,由單片機來決定當(dāng)前該顯示的是哪一位。在圖中還有八個 1K 的電阻,連接在 P0 口上,用作 P0 口的上拉電阻,保證 P0 口沒有數(shù)據(jù)輸出時候處于高電平狀態(tài)。3.6鍵盤掃描電路的設(shè)計鍵盤掃描電路的設(shè)計鍵盤是人與單片機打交道的主要設(shè)備。關(guān)于鍵盤硬件電路的設(shè)計方法也可以在文獻和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程序。站在系統(tǒng)監(jiān)控軟件設(shè)計的立場上來看,僅僅完成鍵盤掃描,讀取當(dāng)前時刻的鍵盤狀態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們在操作鍵盤就容易引起誤操作和操作失控現(xiàn)象。在單片機應(yīng)用中鍵盤用得最多的形式是獨立鍵盤

35、及矩陣鍵盤。它們各有自己的特點,其中獨立鍵盤硬件電路簡單,而且在程序設(shè)計上也不復(fù)雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時重復(fù)掃描法,延時法的原理為:因為“毛刺”脈沖一般持續(xù)時間短,約為幾 ms,而我們按鍵的時間一般遠遠大于這個時間,所以當(dāng)單片機檢測到有按鍵動靜后再延時一段時間(這里我們?nèi)?10ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。在本文設(shè)

36、計中采用了獨立鍵盤的方式,本設(shè)計中有 8 個搶答按鍵輸入,一個開始按 鍵、一個結(jié)束按鍵,此外還有搶答時間調(diào)整鍵、回答時間調(diào)整鍵,加一按鍵、減一按鍵各一個。如圖所示。圖 搶答按鍵及調(diào)整按鍵在圖中 8 個搶答按鍵分別接入單片機的 P1.0P1.7 端口,單片機通過讀取 P1.0P1.7的值來判斷當(dāng)前輸入的是 8 個搶答按鍵中的哪一個。搶答時間調(diào)整和回答時間調(diào)整接到單片機的 P3.3 和 P3.4 接口,加一及減一按鍵接到單片機的。圖 開始、結(jié)束按鍵在圖中,開始及結(jié)束按鍵接到單片機的 10、11 腳,這里用到了單片機 10、11 腳復(fù)合功能中的 IO 端口功能,單片機通過讀取 10、11 腳的 P3

37、.0、P3.1 的 IO 端口值來判斷當(dāng)前是否處于搶答開始狀態(tài)或搶答結(jié)束狀態(tài)。按鍵的觸點在閉合和斷開時均會產(chǎn)生抖動,這時觸點的邏輯電平是不穩(wěn)定的,如不妥善處理,將會引起按鍵命令的錯誤執(zhí)行或重復(fù)執(zhí)行?,F(xiàn)在一般均用軟件延時的方法來避開抖動階段,這一延時過程一般大于 5ms,例如取 10-20ms。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺程序)或鍵盤中斷(外部中斷)子程序中,則該延時子程序便可直接插入讀鍵過程中。如果讀鍵過程安排在定時中斷子程序中,就可省去專門的延時子程序,利用兩次定時中斷的時間間隔來完成抖動處理。K1K8 八個按鍵的輸入電平靠 74HC30 輸入與非門和 74LS04 反向器組成

38、的電路改變輸入電平。圖中電路就是由一個 74HC30 輸入與非門和 74LS04 反向器組成的去抖電路。圖 3.7 去抖電路3.7發(fā)聲發(fā)聲電路電路我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高” “低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。本文設(shè)計如圖所示。圖中單片機的 14 腳輸出具有復(fù)合功能,此處用到了單片機 17腳的 IO 端口功能,單片機通過內(nèi)部定時器的操作實現(xiàn)交替變換的波形輸出驅(qū)動揚聲器發(fā)聲。圖 發(fā)聲電路3.

39、8系統(tǒng)復(fù)位系統(tǒng)復(fù)位使 CPU 進入初始狀態(tài),從 0000H 地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。從實現(xiàn)系統(tǒng)復(fù)位的方法來看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過 CPU 外部的硬件電路給 CPU 的 RESET 端加上足夠時間的高電位才能實現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個事實卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從 0000H 地址開始執(zhí)行。對各專用寄存器的復(fù)

40、位操作是容易的,也沒有必要完全模擬,可根據(jù)實際需要去主程序初始化過程中完成。而對中斷激活標(biāo)志的清除工作常被遺忘,因為它沒有明確的位地址可供編程。有的編程人員用 020000(LJMP 0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向 0000H地址就完成了軟件復(fù)位,就是這類錯誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進行的工作,這時程序出錯完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級中斷響應(yīng)。由于軟件看門是高級中斷,它將阻止說要中斷響應(yīng),由此可見清除中斷激活標(biāo)志的重要性。在所有的指令中,只有 RETI 指令能夠清除中斷激活標(biāo)志。出錯處理程序 ERR 主要完成這一功能,其他的

41、善后工作交由復(fù)位后的系統(tǒng)去完成。程序一般先關(guān)中斷,以便后續(xù)處理能順利進行,然后用兩個 RETI 指令代替兩個LJMP 指令,從而清除了兩級中斷激活標(biāo)志。有相應(yīng)軟件陷阱捕捉來的程序可能沒有全部激活兩個標(biāo)志,這也無妨。有復(fù)位時系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動”和“熱啟動” 。 “冷啟動”時,系統(tǒng)的狀態(tài)全部無效,進行徹底的初始化操作;而“熱啟動”時,對系統(tǒng)的當(dāng)前狀態(tài)進行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運行時,必須是“冷啟動” ,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動”初次上電投入運行時,必須是“冷啟動” ,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動” 。為了使系統(tǒng)能正確決定采用

42、何種啟動方式,常用上電標(biāo)志來區(qū)分,如圖所示。復(fù)位關(guān)中斷,設(shè)定堆棧上電標(biāo)志冷啟自檢全面初始化熱啟動恢復(fù)被破壞的信息部分初始化建立上電標(biāo)志開始運轉(zhuǎn)圖 系統(tǒng)復(fù)位策略圖4軟件設(shè)計軟件設(shè)計4.1軟件任務(wù)分析軟件任務(wù)分析軟件任務(wù)分析和硬件電路設(shè)計結(jié)合進行,哪些功能由硬件完成,哪些任務(wù)由軟件完成,在硬件電路設(shè)計基本定型后,也就基本上決定下來了9。軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計做一個總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實質(zhì)性的功能,如測量,計算,顯示,打印,輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件

43、的設(shè)計方法各有特色,執(zhí)行軟件的設(shè)計偏重算法效率,與硬件關(guān)系密切,千變?nèi)f化。軟件任務(wù)分析時,應(yīng)將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義(輸入輸出定義) 。在各執(zhí)行模塊進行定義時,將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個廠長就比較難了。軟件任務(wù)分析的另一個內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個系統(tǒng)軟件可分為后臺程序(背景程序)和前臺程序。后臺程序指主程序及其調(diào)用的子程序

44、,這類程序?qū)崟r性要求不是太高,延誤幾十 ms 甚至幾百 ms 也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序) ,顯示程序和打印程序等與操作者打交道的程序放在后臺程序中執(zhí)行;而前臺程序安排一些實時性要求較高的內(nèi)容,如定時系統(tǒng)和外部中斷(如掉電中斷) 。也可以將全部程序均安排在前臺,后臺程序為“使系統(tǒng)進入睡眠狀態(tài)” ,以利于系統(tǒng)節(jié)電和抗干擾。4.2程序流程圖程序流程圖在本設(shè)計中包括了以下主要的程序:主程序,查詢程序,非法搶答程序,搶答時間調(diào)整程序,回答時間調(diào)整程序,倒計時程序,正常搶答處理程序,犯規(guī)處理程序,顯示及發(fā)聲程序。主流程圖如所示:圖 程序設(shè)計流程圖4.3主程序系統(tǒng)結(jié)構(gòu)圖主程序系統(tǒng)結(jié)構(gòu)圖顯示

45、 FFF開始鍵加一鍵減一鍵回答時間 調(diào)整搶答時間去抖動非法搶答處理顯示犯規(guī)正常搶答 顯示搶答號并倒計時Y YY 初始化系統(tǒng)初始化模塊按鍵模塊非法搶答模塊正確搶答模塊調(diào)整搶答時間調(diào)整回答時間模塊數(shù)碼顯示模塊圖軟件系統(tǒng)結(jié)構(gòu)圖5 總結(jié)總結(jié)基于單片機八路掃描式搶答器的設(shè)計是我在廣泛參加校團委和學(xué)院各項活動的親身經(jīng)歷后,發(fā)現(xiàn)如果添加搶答器這樣的簡易實用的活動道具,一定能使活動更加公平公正而又妙趣橫生。因此,我主動選擇該課題,并通過姜老師和余老師的的指導(dǎo)以及同學(xué)間的切磋認(rèn)真而饒有興致的完成了本次課程設(shè)計。本次課程設(shè)計在軟、硬件設(shè)計成熟后,通過親手焊接電路板和燒制程序,最終實現(xiàn)設(shè)計指標(biāo),基本完成的課程設(shè)計任

46、務(wù)。其主要功能為:1、開始搶答時間 20 秒(時間可調(diào)) ;2、八位選手搶答過程通過掃描方式在 LED 燈處顯示出最先按鍵的選手編號,并有30 秒的答題時間(答題時間可調(diào)) ,超過答題時間則蜂鳴器警告;3、一輪結(jié)束后復(fù)位即可重新開始;4、以上搶答時間和答題時間均設(shè)計為可調(diào)。回頭再看看該設(shè)計,還可以將設(shè)計的擴展功能增強:1、可以設(shè)計聲控裝置,在主持人說開始時,系統(tǒng)自動完成清零并開始計時的功能;2、增加記分模塊,可以設(shè)定初始積分,并記錄每次搶答完成后的積分;3、將搶答按鍵用無線實現(xiàn),如紅外線,使搶答者可以遠距離進行搶答,并簡化按鍵模塊的線路布置。如果提供相應(yīng)的器材及時間上的寬限,一定可以完成上述擴

47、展功能,進一步完善作品。本設(shè)計是在姜靜老師的指導(dǎo)下完成的。感謝老師在論文的選題、設(shè)計方案的確定,設(shè)計的進行以及最后的設(shè)計說明書的撰寫整個過程中給予我細心的指引和教導(dǎo),使我能順利完成畢業(yè)設(shè)計。老師淵博的知識、敏銳的學(xué)術(shù)思維、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、求實的科學(xué)態(tài)度和工作作風(fēng)以及創(chuàng)新的工作精神,令我終身受益,是我畢生學(xué)習(xí)的典范,值此論文完成之際,謹(jǐn)向姜老師致以崇高的敬意和衷心的感謝!附錄附錄 A: 器件選型方案及詳細清單器件選型方案及詳細清單微控制器選用 ATMAL 公司生產(chǎn)的 AT89C51,該芯片貨源充足,并且價格也比較便宜。如表 1 所示。表 1 器件選型方案的詳細清單器件名稱規(guī)格型號數(shù)量微處理器AT

48、89C51174LS041芯片74HC301電阻3WATT10K8電容20PF3晶振12MHZ1按鈕117 段數(shù)碼管7SEG-MPX4-CA4揚聲器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 0040HMAIN: MOV R1,#20 ;初設(shè)搶答時間為 20s MOV R2,#30

49、;初設(shè)答題時間為 30s MOV 38h,#60 ;啟用錦囊時間從 60s 倒計時 MOV TMOD,#11H ;設(shè)置未定時器/模式 1 MOV TH0,#0F0H MOV TL0,#0FFH ;越高發(fā)聲頻率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H ;50ms 為一次溢出中斷 SETB EA SETB ET0 SETB ET1 ;允許二個中斷,T0/T1 CLR OK CLR RING SETB TR1 SETB TR0 ;一開始就運行定時器,以開始顯示FFF.如果想重新計數(shù),重置 TH1/TL1 就可以了 查詢程序:START: MOV DATA0,#0FFH ;初始

50、化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未開始搶答時候顯示 FFF JNB P3.3,SELSUB0 JNB P3.4,TZ3 ;倒計時調(diào)整 JB P3.0,NEXT ACALL DELAY JB P3.0,NEXT ;去抖動,如果“開始鍵”按下就向下執(zhí)行,否者跳到非法搶答查詢 SETB EX0 ;開放 INT0 ACALL BARK ;按鍵發(fā)聲 MOV A,R1 MOV R6,A ;送 R1-R6,因為 R1 中保存了搶答時間 SETB OK ;搶答標(biāo)志位,在使用錦囊時用作判斷是搶答倒計時還是回答倒計時 MOV R3,#0AH

51、 ;搶答只顯示計時,滅號數(shù) AJMP COUNT ;進入倒計時程序,“查詢有效搶答的程序”在 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 FALSE7TZ2: AJMP FALSE8TZ3: AJMP SELSUB1非法搶答處理程序:FALSE1: MOV R3,#01H AJMP ERRORFALSE2: MOV R3,#02

52、H AJMP ERRORFALSE3: MOV R3,#03H AJMP ERRORFALSE4: MOV R3,#04H AJMP ERRORFALSE5: MOV R3,#05H AJMP ERRORFALSE6: MOV R3,#06H AJMP ERRORFALSE7: MOV R3,#07H AJMP ERRORFALSE8: MOV R3,#08H AJMP ERRORSELSUB0(搶答時間 R1 調(diào)整程序):SELSUB0: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY ;先在兩個時

53、間 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 SELSUB0INC0: MOV A,R1 CJNE A,#63H,ADD0 ;如果不是 99,R2 加 1,如果加到 99,R1就置 0,重新加起。 MOV R1,#00H ACALL DELAY1 AJMP SELSUB0ADD0: INC R1 ACALL DELAY1 AJMP SELSUB0DEC0: MOV A,R1 JZ

54、 SETR1 ;如果 R1 為 0, R1 就置 99, DEC R1 ACALL DELAY1 AJMP SELSUB0SETR1: MOV R1,#63H ACALL DELAY1 AJMP SELSUB0BACK0: AJMP STARTSELSUB1(回答時間 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 AJMP SELSUB1INC1: MOV A,R2 CJNE A

55、,#63H,ADD1 MOV R2,#00H ACALL DELAY1AJMP SELSUB1ADD1: INC R2 ACALL DELAY1 AJMP SELSUB1DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP SELSUB1SETR2: MOV R2,#63H ACALL DELAY1 AJMP SELSUB1BACK1: AJMP START啟用錦囊程序:REPEAT:MOV A,38h ;使用錦囊時重新計時 MOV R6,A CLR RING ;當(dāng)?shù)褂嫊r進入最后 5 秒的時候,啟用錦囊能消除蜂鳴倒計時程序(搶答倒計時和回答倒計時都跳

56、到改程序):COUNT: MOV R0,#00H ;重置定時器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H ;重置定時器RECOUNT:MOV A,R6 ;R6 保存了倒計時的時間,之前先將搶答時間或回答時間給 R6 MOV B,#0AH DIV AB ;除十分出個位/十位 MOV 30H,A ;十位存于(30H) MOV 31H,B ;個位存于(31H) MOV R5,30H ;取十位 MOV R4,31H ;取個位 MOV A,R6 SUBB A,#07H JNC LARGER ;大于 5s 跳到 LARGER,小于等于 5s 會提醒 MOV A,R0 CJNE A,#0

57、AH,FULL CLR RING AJMP CHECKFULL: CJNE A,#14H,CHECK ;下面是 1s 的情況,響并顯示號數(shù)并清 R0,重新計算 SETB RING MOV A,R6 JZ QUIT ;計時完畢 MOV R0,#00H DEC R6 ;一秒標(biāo)志減 1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK ;如果 1s 向下運行,否者跳到“停/顯示” DEC R6 ;計時一秒 R6 自動減 1 MOV R0,#00HCHECK: JNB P3.1,QUIT ;如按下停止鍵退出 JNB OK,CHECKK ;只在回答倒計時才有效 A

58、JMP NEXTTCHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊NEXTT: ACALL DISPLAY JB OK,ACCOUT ;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用) AJMP RECOUNTACCOUT:MOV A,DATA0 JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ7 JNB ACC.7,TZ8 AJMP RECOUNT TZ7: AJMP TRUE7 T

59、Z8: AJMP TRUE8 QUIT: CLR OK ;如果按下了“停止鍵”執(zhí)行的程序 CLR RING AJMP START 正常搶答處理程序:TRUE1: ACALL BARK MOV A,R2 MOV R6,A ;搶答時間 R2 送 R6 MOV R3,#01H CLR OK ;因為答題的計時不再查詢搶答,所以就鎖了搶答 AJMP COUNTTRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP C

60、OUNTTRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OKAJMP COUNT犯規(guī)搶答程序:ERROR: MOV R0

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論