文/何勉
搶答器可以采用數(shù)字電路來實現(xiàn),但電路較為復(fù)雜,也可以采用單片機來實現(xiàn),主要通過軟件編寫來完成,不但可以簡化電路,而且可以降低成本。本文主要介紹一種以AT89S52單片機為核心的簡易搶答器,它充分利用單片機控制系統(tǒng)的特點,結(jié)構(gòu)簡單、可靠性好、成本較低,實用性強。
本系統(tǒng)以AT89S52單片機為核心,使用8個獨立按鍵作為搶答輸入信號,驅(qū)動一位數(shù)碼管顯示搶答成功者的編號。本系統(tǒng)所具備的功能如下:
設(shè)置8個按鍵同時供8名(或8組)選手進(jìn)行搶答。
當(dāng)主持人按下開始鍵后,才可以搶答,用1位數(shù)碼管顯示出第一搶答者編號。若主持人還沒有按下開始鍵,有人搶答,則屬于犯規(guī),數(shù)碼管顯示犯規(guī)者編號并點亮小數(shù)點。
按下復(fù)位按鍵后,開始新一輪的搶答。
使用的元器件有:核心芯片AT89S52,輕觸開關(guān),8輸入與門/與非門集成電路CD4068以及一位共陽極數(shù)碼管顯示器。
本系統(tǒng)軟件主要包括主程序模塊及按鍵模塊。系統(tǒng)程序流程包括主程序流程及外部中斷流程,如圖1、圖2所示。
3.2.1 主程序模塊
主程序模塊主要用于完成外部中斷的初始化、查詢開始搶答按鍵是否按下等。
3.2.2 按鍵模塊
這是本系統(tǒng)的難點。用單片機來設(shè)計搶答器,無論使用獨立式按鍵還是行列鍵盤,都無法對多個按鍵同時按下作出正確判斷。本系統(tǒng)采用中斷與查詢相結(jié)合的方法,把所有的按鍵都作為外部設(shè)備連接到到單片機的P2口,當(dāng)其中的一個按鍵被按下,單片機將進(jìn)入中斷服務(wù)程序,并將所有按鍵的狀態(tài)保存起來,然后查詢是哪個按鍵按下引起的中斷,在此期間,CPU不再響應(yīng)其他任何按鍵,從而確定誰是第一搶答者。按鍵中斷服務(wù)程序如下:
圖1:主程序流程圖
圖2:外部中斷程序流程圖
圖3:八路搶答器仿真原理圖
圖4:CD4068引腳圖
采用 Proteus軟件進(jìn)行仿真,仿真圖如圖3所示。
按鍵S1-S8為8個搶答按鍵,與8個搶答按鍵連接的是一組8輸入與門/與非門集成電路CD4068,其 中2,3,4,5,9,10,11,12腳是輸入引腳,1腳為與門輸出引腳,13腳為與非門輸出引腳,其引腳圖如圖4所示。
其工作過程為:按鍵S1 ~S8在沒有按下時,輸人到與門輸人端為高電平,當(dāng)某個按鍵被按下時,根據(jù)與非門邏輯關(guān)系CD4068輸出為1,再經(jīng)過非門CD40106取反輸出為低電平0,單片機的INT1 (P3. 3)腳變?yōu)榈碗娖?,從而引發(fā)外部中斷1的中斷請求,同時,單片機通過對這8個按鍵狀態(tài)的查詢來確定哪個按鍵引腳引起的中斷,確定第一搶答者。
功能鍵分為“開始”鍵和“復(fù)位”鍵,當(dāng)主持人按下“開始”鍵,選手進(jìn)人開始搶答狀態(tài)當(dāng)答題結(jié)束進(jìn)人下一題搶答時或者當(dāng)主持人還未按下“開始”鍵有選手搶答違規(guī)時主持人按下“復(fù)位”鍵,本設(shè)計中“復(fù)位”鍵采用復(fù)位電路中的按鍵來實現(xiàn)復(fù)位,既可以減少電路的復(fù)雜性,讓初學(xué)者更容易掌握。
本設(shè)計采用一位共陽極8段數(shù)碼管顯示器,采用靜態(tài)掃描方式,顯示出第一搶答者編號,如果有人犯規(guī),數(shù)碼管除顯示犯規(guī)者編號外同時點亮數(shù)碼管小數(shù)點,以示區(qū)別。
該系統(tǒng)利用AT89S52單片機及外圍借口實現(xiàn)搶答系統(tǒng),將軟件和硬件有機地結(jié)合起來,實現(xiàn)8人同時參賽,并可清晰顯示第一搶答選手編號,并能提示違規(guī)狀態(tài)。今后,還可以擴展其他功能,如利用軟件實現(xiàn)倒計時,在搶答賽中進(jìn)行倒計時提醒,并增加報警電路。