文/何勉
搶答器可以采用數字電路來實現,但電路較為復雜,也可以采用單片機來實現,主要通過軟件編寫來完成,不但可以簡化電路,而且可以降低成本。本文主要介紹一種以AT89S52單片機為核心的簡易搶答器,它充分利用單片機控制系統的特點,結構簡單、可靠性好、成本較低,實用性強。
本系統以AT89S52單片機為核心,使用8個獨立按鍵作為搶答輸入信號,驅動一位數碼管顯示搶答成功者的編號。本系統所具備的功能如下:
設置8個按鍵同時供8名(或8組)選手進行搶答。
當主持人按下開始鍵后,才可以搶答,用1位數碼管顯示出第一搶答者編號。若主持人還沒有按下開始鍵,有人搶答,則屬于犯規,數碼管顯示犯規者編號并點亮小數點。
按下復位按鍵后,開始新一輪的搶答。
使用的元器件有:核心芯片AT89S52,輕觸開關,8輸入與門/與非門集成電路CD4068以及一位共陽極數碼管顯示器。
本系統軟件主要包括主程序模塊及按鍵模塊。系統程序流程包括主程序流程及外部中斷流程,如圖1、圖2所示。
3.2.1 主程序模塊
主程序模塊主要用于完成外部中斷的初始化、查詢開始搶答按鍵是否按下等。
3.2.2 按鍵模塊
這是本系統的難點。用單片機來設計搶答器,無論使用獨立式按鍵還是行列鍵盤,都無法對多個按鍵同時按下作出正確判斷。本系統采用中斷與查詢相結合的方法,把所有的按鍵都作為外部設備連接到到單片機的P2口,當其中的一個按鍵被按下,單片機將進入中斷服務程序,并將所有按鍵的狀態保存起來,然后查詢是哪個按鍵按下引起的中斷,在此期間,CPU不再響應其他任何按鍵,從而確定誰是第一搶答者。按鍵中斷服務程序如下:

圖1:主程序流程圖

圖2:外部中斷程序流程圖


圖3:八路搶答器仿真原理圖

圖4:CD4068引腳圖
采用 Proteus軟件進行仿真,仿真圖如圖3所示。
按鍵S1-S8為8個搶答按鍵,與8個搶答按鍵連接的是一組8輸入與門/與非門集成電路CD4068,其 中2,3,4,5,9,10,11,12腳是輸入引腳,1腳為與門輸出引腳,13腳為與非門輸出引腳,其引腳圖如圖4所示。
其工作過程為:按鍵S1 ~S8在沒有按下時,輸人到與門輸人端為高電平,當某個按鍵被按下時,根據與非門邏輯關系CD4068輸出為1,再經過非門CD40106取反輸出為低電平0,單片機的INT1 (P3. 3)腳變為低電平,從而引發外部中斷1的中斷請求,同時,單片機通過對這8個按鍵狀態的查詢來確定哪個按鍵引腳引起的中斷,確定第一搶答者。
功能鍵分為“開始”鍵和“復位”鍵,當主持人按下“開始”鍵,選手進人開始搶答狀態當答題結束進人下一題搶答時或者當主持人還未按下“開始”鍵有選手搶答違規時主持人按下“復位”鍵,本設計中“復位”鍵采用復位電路中的按鍵來實現復位,既可以減少電路的復雜性,讓初學者更容易掌握。
本設計采用一位共陽極8段數碼管顯示器,采用靜態掃描方式,顯示出第一搶答者編號,如果有人犯規,數碼管除顯示犯規者編號外同時點亮數碼管小數點,以示區別。
該系統利用AT89S52單片機及外圍借口實現搶答系統,將軟件和硬件有機地結合起來,實現8人同時參賽,并可清晰顯示第一搶答選手編號,并能提示違規狀態。今后,還可以擴展其他功能,如利用軟件實現倒計時,在搶答賽中進行倒計時提醒,并增加報警電路。