陳娟 顧吳華
摘要:隨著人們生活的多樣性,搶答器作為一個(gè)重要的設(shè)備廣泛應(yīng)用于各類競(jìng)賽中。文章設(shè)計(jì)的四路搶答器以STC89C51單片機(jī)作為主控芯片,實(shí)現(xiàn)的功能主要是:主持人按下 “搶答開(kāi)始”按鍵后,倒計(jì)時(shí)3秒鐘,選手搶答并且顯示搶答成功的小組號(hào)。該系統(tǒng)軟硬件相結(jié)合,并且通過(guò)?!皬?qiáng)國(guó)知識(shí)競(jìng)賽”活動(dòng)驗(yàn)證了搶答器產(chǎn)品的良好性能。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);搶答器;數(shù)碼管
中圖分類號(hào):TP368.1? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)26-0168-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
1 引言
搶答器作為一款能準(zhǔn)確、直觀、公正地判斷出第一搶答者的電子應(yīng)用設(shè)備,常用于各種各樣的競(jìng)賽中,搶答器的種類和功能也層出不窮。然而,傳統(tǒng)的搶答器大多采用一些基本的數(shù)字電路來(lái)實(shí)現(xiàn),不僅體積大,而且布線復(fù)雜煩瑣、成本較高。隨著科技的發(fā)展,集成度高、控制能力強(qiáng)的單片機(jī)已經(jīng)深入到了各個(gè)應(yīng)用領(lǐng)域[1-3]。
2 整體設(shè)計(jì)介紹
本系承擔(dān)了校“強(qiáng)國(guó)知識(shí)競(jìng)賽”的組織任務(wù),要求設(shè)計(jì)一款功能準(zhǔn)確的四路搶答器應(yīng)用于競(jìng)賽活動(dòng)中。將該任務(wù)功能設(shè)計(jì)為:主持人按下“搶答開(kāi)始”按鍵,然后3秒倒計(jì)時(shí),如果單片機(jī)檢測(cè)到有選手按下?lián)尨鹌靼存I,則顯示該選手的編號(hào),如果再次搶答,必須由主持人再次按下“搶答開(kāi)始”按鍵。
3 硬件設(shè)計(jì)
3.1 總體設(shè)計(jì)
在本設(shè)計(jì)中采用STC公司生產(chǎn)的STC89C51 單片機(jī)作為主控芯片,結(jié)合簡(jiǎn)單的外圍電路來(lái)實(shí)現(xiàn)設(shè)計(jì)任務(wù)。該系統(tǒng)可以進(jìn)行運(yùn)算控制、搶答信號(hào)識(shí)別與處理以及顯示功能的實(shí)現(xiàn)。具體表現(xiàn)為:用四個(gè)獨(dú)立按鍵作為選手搶答鍵,一個(gè)獨(dú)立按鍵作為主持人鍵,數(shù)碼管用作顯示組號(hào)和倒計(jì)時(shí)時(shí)間,利用4個(gè)LED燈作為選手搶答成功的指示燈。如果主持人按鍵沒(méi)有按下,而選手按鍵提前按下?lián)尨?,則單片機(jī)不予處理選手按鍵,即搶答無(wú)效。硬件電路的總體設(shè)計(jì)框圖如圖1所示。
3.2 單片機(jī)及獨(dú)立按鍵電路
STC89C51單片機(jī)是STC公司推出的51內(nèi)核單片機(jī),包含有4個(gè)8位的并行I/O接口,分別為P0、P1、P2和P3口;其中P1、P2、P3口都是帶內(nèi)部上拉電阻的雙向I/O口,因此在使用時(shí)不需要再外接上拉電阻,可簡(jiǎn)化電路;而且P1口是唯一的單功能口,僅能作通用的數(shù)據(jù)輸入/輸出口[4-5]。所以將P1.0—P1.3作為四路搶答信號(hào)輸入端,K0—K3為四個(gè)選手搶答按鍵;P1.4是主持人宣布開(kāi)始信號(hào)輸入端,K4為主持人的“搶答開(kāi)始”按鍵,單片機(jī)在中斷中循環(huán)檢測(cè)P1口的信號(hào),當(dāng)有按鍵按下時(shí),I/O口相應(yīng)的位為低電平。具體電路如圖2所示。
3.3 顯示電路
本系統(tǒng)采用1個(gè)4位0.56寸小型共陽(yáng)極數(shù)碼管,數(shù)碼管均采用三極管驅(qū)動(dòng),5V電源,當(dāng)顯示倒計(jì)時(shí)和選手組號(hào)時(shí),數(shù)碼管工作。P0.0—P0.7為信號(hào)的輸出端,接數(shù)碼管的a—dp管腳。具體電路圖如圖3所示。
4 軟件設(shè)計(jì)
4.1 流程圖
本系統(tǒng)的單片機(jī)編程在keil uVision4環(huán)境下完成,用單片機(jī)程序控制系統(tǒng),實(shí)現(xiàn)的功能比較靈活,能較方便地對(duì)系統(tǒng)進(jìn)行功能的擴(kuò)張和改進(jìn)。搶答器開(kāi)始工作時(shí),先進(jìn)行初始化,完成對(duì)相關(guān)參數(shù)進(jìn)行配置,以及對(duì)定時(shí)器進(jìn)行設(shè)置等工作。
然后判斷主持人按鍵是否按下,如果未按下,則返回等待;否則進(jìn)入倒計(jì)時(shí)狀態(tài),倒計(jì)時(shí)結(jié)束,再判斷是否有選手搶答按鍵按下,如果未按下,則原處等待;否則顯示該搶答成功的選手組號(hào);如進(jìn)行新的一輪搶答,由需主持人按鍵重新按下。
主程序的流程圖如圖4所示。
4.2 主程序
void main ()//主程序
{
Timer0Init();//初始化定時(shí)器0
TR0=0;//定時(shí)器0停止計(jì)時(shí)
while (1) //主循環(huán)
{
if(Cont==0)//初始化搶答器
{
Display(3,0);//調(diào)用顯示子程序
Display(4,0);//調(diào)用顯示子程序
Cont=1;//進(jìn)入搶答開(kāi)始工作狀態(tài)
}
if(Cont==1)//搶答開(kāi)始
{
Display(3,0);//調(diào)用顯示子程序
Display(4,0);//調(diào)用顯示子程序
if(K4==0)//判斷主持人按鍵是否按下
{
Delay(50);//調(diào)用延時(shí)子程序
if(K4==0)//再次判斷主持人按鍵是否再次按下
{
Miao=3;//初始化倒計(jì)時(shí)時(shí)間為3秒
TR0=1;//定時(shí)器0開(kāi)始計(jì)時(shí)
Cont=2;//進(jìn)入倒計(jì)時(shí)3秒工作狀態(tài)
}while(K4!=1);//判斷主持人按鍵是否釋放
}
}
if(Cont==2)//倒計(jì)時(shí)3秒
{
Display(4,Miao);//調(diào)用顯示子程序
if(Miao==0)//判斷倒計(jì)時(shí)3秒結(jié)束
{
TR0=0;//定時(shí)器0停止計(jì)時(shí)
Cont=3;////進(jìn)入選手搶答工作狀態(tài)
}
}
if(Cont==3)//選手搶答
{
Display(3,Key_Num/10);//調(diào)用顯示子程序