段學(xué)濤 郭子洋 劉鑫 胡亮達 趙鍶婷
摘要:搶答器是一種在知識競賽中十分常用的器件,本設(shè)計主要采用了AT89C52單片機來作為數(shù)字搶答器的MCU,運用按鍵I/O狀態(tài)采集,定時器的配置與使用以及數(shù)碼管的顯示。采用Proteus仿真軟件進行仿真,并通過Altium Designer完成了PCB板的制作,通過焊接完成了實物的制作,經(jīng)過軟件調(diào)試,完成了十路搶答器的設(shè)計
關(guān)鍵詞:AT89C52;搶答器;狀態(tài)采集;Proteus;PCB
0 引言
知識競賽不僅是中小學(xué)常見的“游戲”方式,在大學(xué)中很多的科技競賽也是作為常用的一種搶答工具,從中我們不僅可以感受到很多的樂趣也可以學(xué)到很多書本上很多學(xué)不到的知識。但是,在進行科技競賽過過程中,參賽者搶答的先后順序的確定,如果僅通過主持人的主觀意識來判斷決定,很容易產(chǎn)生誤判的現(xiàn)象。因此,本文就通過使用AT89C52主控芯片來實現(xiàn)十路搶答,具有鎖存、清零和設(shè)定時間的功能。并且還加入了語音播報模塊,對選手的搶答順序進行播報。利用該十路數(shù)字搶答器可以使知識競賽更加順利的進行,使搶答比賽更加公平。
1 系統(tǒng)整體方案設(shè)計
本系統(tǒng)主要分為硬件和軟件兩大部分,主控采用AT89C52芯片,采用7.2V鋰電池供電,因為主控MCU和系統(tǒng)器件都是5V的工作電壓,通過5V穩(wěn)壓電路為系統(tǒng)提供穩(wěn)定的5V電壓,通過按鍵實現(xiàn)搶答與時間的設(shè)定,完成人機交互,通過定時器來實現(xiàn)準確定時。通過兩位數(shù)碼管顯示設(shè)定的時間,一位數(shù)碼管顯示0-9為10位搶答選手的編號。一共有十位選手進行搶答,單片機反應(yīng)時間低于0.1ms,反應(yīng)時間短,一旦有選手按下?lián)尨疰I,系統(tǒng)將會對其進行鎖存,直至裁判按下清零鍵,清零鍵可對系統(tǒng)進行清零,裁判可重新設(shè)定時間,選手重新進行搶答。本系統(tǒng)在原有的要求上加了SYN6288語音識別模塊,其模塊采用串口通信可直接輸出語音,默認波特率為9600bit/s,如果波特率設(shè)置不對發(fā)出的聲音會出錯,為此務(wù)必要確保單片機的串口波特率保持正確,使得播報正常。
2 系統(tǒng)硬件電路設(shè)計
2.1最小系統(tǒng)
AT89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,AT89C52單片機在電子行業(yè)中有著廣泛的應(yīng)用。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規(guī)方法進行編程,也可以在線編程。其最小系統(tǒng)由復(fù)位及時鐘電路組成。
2.2按鍵電路
AT89C52的I/O默認準雙向輸出,由于其具有32個通用引腳,故采用獨立按鍵的模式更加方便,SW1—SW10為選手進行搶答的按鍵,UP1、DOWN1按鍵分別用于定時時間的加減,START1為裁判的啟動按鍵。
2.3數(shù)碼管電路
本系統(tǒng)一共需要兩個顯示部分,第一個NUM1是顯示搶答選手的編號,第二個是系統(tǒng)定時的時間顯示。本數(shù)碼管都采用共陰極驅(qū)動,其中通過選擇SEG1、SEG2、SEG3來選擇不同的數(shù)碼管,利用人眼的余暉效應(yīng),可實現(xiàn)不同信息的顯示。
2.4蜂鳴器電路
本系統(tǒng)采用有源蜂鳴器,在其正負極直接加上額定電壓,就會發(fā)出響聲。由于單片機I/O輸出電流有限,不足直接以驅(qū)動蜂鳴器,故使用一個NPN的三極管對其進行驅(qū)動,此時電流足以驅(qū)動蜂鳴器使其發(fā)生聲音,R6為基極限流電阻,當(dāng)beep為高電平時三極管導(dǎo)通,蜂鳴器發(fā)出響聲。
2.5穩(wěn)壓電路
本系統(tǒng)采用兩節(jié)3.7V的鋰電池進行供電,電壓在7.2V左右,但單片機額度電壓在5V,故需要對電源電壓進行穩(wěn)壓后輸出,穩(wěn)壓芯片采用AMS117-5.0,此芯片直接將7.2V轉(zhuǎn)化為5V,并通過兩個10uf的鉭電容對其電源進行濾波,提供相對穩(wěn)定的電壓。LED1用于指示系統(tǒng)是否通電,具有指示作用。
3 系統(tǒng)軟件設(shè)計
3.1軟件流程
軟件設(shè)計流程主要先對定時器進行初始化、對系統(tǒng)的I/O進行初始化,定時器采用10ms定時一次,之后在while(1)里面進行按鍵的判斷,在設(shè)定好時間后按下啟動按鍵,蜂鳴器響0.5s,開啟定時器,即TR0置1,在設(shè)定時間內(nèi)如果有搶答按鍵按下,通過不同的I/O檢測到低電平來判斷哪一個選手進行了搶答,此時立即停止計時,顯示搶答人的編號,如果在設(shè)定時間內(nèi)一直沒有搶答,那么蜂鳴器會進行報警,定時器停止計時,雙位數(shù)碼管顯示00,直至按下清零鍵。
3.2定時器設(shè)計
AT89C52采用12MHZ的晶振,由于其機器周期是(1/12M)*12為1us,采用10ms定時器中斷一次,即10ms溢出一次,當(dāng)其溢出次數(shù)達到一百次時計時1s。選用定時器0,定時模式,方式0,十六位自動重裝,此時TMOD=0x00。
3.3按鍵掃描
按鍵判斷是直接讀取I/O的狀態(tài),按鍵程序關(guān)鍵是消抖,當(dāng)機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。軟件處理方法即第一次判斷按鍵按下后延時20ms左右再進行一次按鍵的判斷,此時按鍵判斷為還是屬于按下時才對其操作,通過軟件消抖解決了需要再硬件上面加電容的操作,在最開始按一次按鈕,數(shù)據(jù)會加或者減少很多次,最后在按鍵判斷的后面加上一個while(KEY==0)就是為了按鍵松開才執(zhí)行下面的程序,這樣子在按鍵松開后才會進行下一次的加減。
3.4數(shù)碼管顯示
本系統(tǒng)使用包括時間和選手的編號,通過P0口加上拉電阻,接數(shù)碼管的八個I/O,通過給不同的I/O賦值,來實現(xiàn)取不同的數(shù)值用P20、P21、P22選用不同的數(shù)碼管,數(shù)碼管需要顯示對其進行消隱,即顯示后在下次顯示之前對所有的I/0變成低電平,數(shù)碼管在極短的時間內(nèi)滅掉,但是肉眼無法觀察到,然而有利于觀察下一次要顯示的值,數(shù)據(jù)同時還需要對時間兩位數(shù)進行取值,即分別取個位和十位來進行顯示。
4 結(jié)束語
本次的搶答器設(shè)計與平常所用的普通搶答器設(shè)計相比,通過AT89C52內(nèi)置的定時計數(shù)計算搶答的時間更具可靠性,且可以檢測搶答時間內(nèi)有無選手搶答,更具有適用性,將為未來知識競賽搶答提供更多有利的幫助。
5 參考文獻
[1]丁向榮.單片機原理與接口技術(shù)-基于STC15系列單片機[M].北京:電子工業(yè)出版社,2018:150-380.
[2]米閣,何建軍,謝日華,侯穎,何汶俊.數(shù)字搶答器的設(shè)計與實現(xiàn)[J].中國新通信,2016,18(16):157.
[3]宋昕一,萬宏飛.基于Proteus的數(shù)碼管動態(tài)顯示與計數(shù)設(shè)計[J].電子制作,2021(08):73-75.
[4]吳中華.Altium Designer 10使用快速入門[J].電子制作,2012(06):75-78.
[5]宋昕一,萬宏飛.基于Proteus的數(shù)碼管動態(tài)顯示與計數(shù)設(shè)計[J].電子制作,2021(08):73-75.
[6]宋春華,劉江濤,王貴恩,裴小英.基于單片機控制的數(shù)字搶答器[J].河南機電高等專科學(xué)校學(xué)報,2005(05):32-33.