單片機(jī)實(shí)現(xiàn)八路搶答器實(shí)例分享
單片機(jī)作為可編程器件,簡(jiǎn)化了電路的設(shè)計(jì)、方便了邏輯設(shè)計(jì),從此再也不用使用一大堆電路做硬件邏輯了。拆開(kāi)任何一件功能稍微復(fù)雜一點(diǎn)電子產(chǎn)品,里邊都可以看到單片機(jī)的身影。學(xué)會(huì)單片機(jī)對(duì)找工作也很有利,而且待遇還不錯(cuò),今天就從實(shí)例分享的角度和大家共享一個(gè)案例,用單片機(jī)來(lái)實(shí)現(xiàn)一個(gè)搶答器。
在電視節(jié)目中,經(jīng)常看到搶答器出現(xiàn)在知識(shí)競(jìng)賽、答題競(jìng)賽節(jié)目中,如江蘇衛(wèi)視的《一站到底》,搶答器可以準(zhǔn)確、公正、直觀、公平的顯示出搶答選手的編號(hào),可以更好的促進(jìn)各選手之間的競(jìng)爭(zhēng)意識(shí),營(yíng)造緊張的搶答氣氛,增加節(jié)目的趣味性和觀賞性。
搶答器的設(shè)計(jì)框圖
搶答器要實(shí)現(xiàn)如下功能:搶答功能、顯示功能、倒計(jì)時(shí)功能、自鎖功能。節(jié)目后臺(tái)需要控場(chǎng),擁有搶答器的絕對(duì)控制權(quán)。功能需求 如下:
開(kāi)始、結(jié)束功能:只有按下開(kāi)始按鍵后,現(xiàn)場(chǎng)選手才可以開(kāi)始搶答,否則搶答事件不被處理視為無(wú)效;
自鎖、互鎖功能:為了保證搶答的公平性,在開(kāi)始搶答后,第一個(gè)按下?lián)尨鸬囊暈橛行尨?,產(chǎn)生有效搶答后其他搶答視為無(wú)效;
計(jì)時(shí)、設(shè)置功能:后臺(tái)/主持人可以設(shè)置搶答時(shí)間的長(zhǎng)短,以倒數(shù)秒的方式顯示,增強(qiáng)緊張氣氛;
顯示、聲音功能:用數(shù)碼管顯示倒計(jì)時(shí)秒數(shù),選手搶答成功后顯示搶答者編號(hào)和剩余時(shí)間;
在該設(shè)計(jì)中,按鍵采用機(jī)械式的四腿按鍵來(lái)實(shí)現(xiàn),按鍵數(shù)量10個(gè);顯示采用三位數(shù)碼管來(lái)實(shí)現(xiàn),兩位顯示時(shí)間,一位顯示選手編號(hào);聲音提示用蜂鳴器來(lái)實(shí)現(xiàn)。核心器件采用51單片機(jī)來(lái)實(shí)現(xiàn)。其功能框圖如下圖所示。
1-搶答器功能框圖
按鍵輸入電路設(shè)計(jì)
該搶答器設(shè)計(jì)中總共有10個(gè)按鍵,其中8個(gè)按鍵用于給用戶(hù)搶答用,所代表的編號(hào)為1-8,另外兩個(gè)按鍵分別為開(kāi)始鍵和結(jié)束鍵,由主持人或者后臺(tái)控制。由于8路輸入搶答按鍵具有互鎖功能,所以只要有一個(gè)有效輸入后,其他搶答都是無(wú)效的,這個(gè)功能可以在程序中實(shí)現(xiàn),為了方便程序設(shè)計(jì),這里采用8輸入與非門(mén)來(lái)實(shí)現(xiàn),所用型號(hào)為74LS30,該與非門(mén)有8路輸入,1個(gè)輸出,功能框圖如下所示。
2-74LS30與非門(mén)框圖
8個(gè)按鍵作為74LS30的輸入,輸出通過(guò)NPN三極管接入51單片機(jī)的外部中斷0接口,以中斷的方式實(shí)現(xiàn)按鍵功能的檢測(cè),單片機(jī)的中斷資源為低電平有效,為了提高電路穩(wěn)定性在三極管的集電極上加入上拉電阻,以防誤動(dòng)作。
3-按鍵輸入電路設(shè)計(jì)
開(kāi)始和結(jié)束兩個(gè)按鍵采用獨(dú)立式按鍵設(shè)計(jì),占用掉單片機(jī)的兩個(gè)IO口,程序中采用輪詢(xún)來(lái)實(shí)現(xiàn)。
數(shù)碼管顯示電路設(shè)計(jì)
顯示部分采用數(shù)碼管來(lái)實(shí)現(xiàn),根據(jù)設(shè)計(jì)要求,兩位用于顯示倒計(jì)時(shí)時(shí)間,最大可以顯示99;一位用于顯示選手編號(hào),故需要3顆數(shù)碼管,該設(shè)計(jì)中采用共陽(yáng)數(shù)碼管來(lái)實(shí)現(xiàn),所謂共陽(yáng)數(shù)碼管是指公共端接高電平,段選管腳接低電平后相應(yīng)的字段才會(huì)被點(diǎn)亮。共陰數(shù)碼管正好相反,公共端接低電平,段選管腳接高電平后相應(yīng)的字段才會(huì)被點(diǎn)亮。數(shù)碼管的實(shí)物圖如下所示。
4-數(shù)碼管實(shí)物圖
數(shù)碼管的引腳比較多,除了8個(gè)段選管腳外,還有公共端/位選引腳,如果用三顆獨(dú)立的數(shù)碼管可能需要較多單片機(jī)引腳資源,為了解決這個(gè)問(wèn)題,本例設(shè)計(jì)采用74HC595作為數(shù)碼管驅(qū)動(dòng)。74HC595是串入并出的移位寄存器,只需要三個(gè)引腳就可以控制8個(gè)引腳的輸出,而且還可以實(shí)現(xiàn)級(jí)聯(lián)。所以74HC595通常在數(shù)碼管驅(qū)動(dòng)和點(diǎn)陣屏中應(yīng)用比較多。
這三顆數(shù)碼管中,分為時(shí)間顯示和編號(hào)顯示兩組,用到三顆74HC595,其中兩顆級(jí)聯(lián)用于控制時(shí)間顯示的數(shù)碼管,總共用到6個(gè)單片機(jī)的IO口,驅(qū)動(dòng)電路如下圖所示。
5-數(shù)碼管驅(qū)動(dòng)電路
蜂鳴器發(fā)聲電路設(shè)計(jì)
需求中提到發(fā)聲設(shè)計(jì),當(dāng)有效按鍵事件發(fā)生時(shí),蜂鳴器發(fā)聲作為提示音,當(dāng)?shù)褂?jì)時(shí)進(jìn)入5秒之內(nèi)后還沒(méi)有人按鍵搶答時(shí),蜂鳴器每隔1秒發(fā)聲,制造現(xiàn)場(chǎng)緊張的氣氛,提高節(jié)目的觀賞性和娛樂(lè)性,增強(qiáng)節(jié)目效果。本例中選擇了蜂鳴器,蜂鳴器驅(qū)動(dòng)電路如下圖所示。
6-蜂鳴器驅(qū)動(dòng)電路
由于單片機(jī)的IO口驅(qū)動(dòng)能力有限,所以采用三極管來(lái)驅(qū)動(dòng),這里選用了PNP三極管。三極管驅(qū)動(dòng)蜂鳴器時(shí)工作于飽和狀態(tài),為了讓三極管充分飽和,將蜂鳴器接在了三極管的集電極,這個(gè)地方初學(xué)者在設(shè)計(jì)電路時(shí)要注意。圖中當(dāng)單片機(jī)的IO口輸出低電平時(shí)蜂鳴器工作發(fā)聲。
搶答器程序設(shè)計(jì)
該設(shè)計(jì)使用keil5作為編程環(huán)境,涉及到數(shù)碼管顯示、按鍵檢測(cè)/互鎖、蜂鳴器發(fā)聲、定時(shí)器等相關(guān)功能模塊的程序編寫(xiě)。程序設(shè)計(jì)的流程圖如下所示。
7-程序設(shè)計(jì)流程圖
程序的功能邏輯介紹如下,上電后數(shù)碼管顯示FFF字樣,并首先檢測(cè)“開(kāi)始”按鍵是否按下,如果沒(méi)有按下開(kāi)始按鍵則表示搶答未開(kāi)始。如果按下了開(kāi)始按鍵,搶答器啟動(dòng),秒顯示開(kāi)始倒計(jì)時(shí),有人按下?lián)尨疰I時(shí)蜂鳴器發(fā)聲、倒計(jì)時(shí)停止并顯示搶答者編號(hào),整個(gè)搶答事件結(jié)束,直到主持人/后臺(tái)按下結(jié)束按鍵后再顯示FFF。如果倒計(jì)時(shí)進(jìn)入5秒內(nèi),仍未有人搶答,則每個(gè)整秒蜂鳴器響一次,直至結(jié)束。
以上為程序邏輯設(shè)計(jì)和程序的流程圖講解,下面介紹各功能模塊的程序設(shè)計(jì)。
首先介紹數(shù)碼管的程序編寫(xiě),再編寫(xiě)程序時(shí),都會(huì)預(yù)先定義好數(shù)碼管的字段表,根據(jù)共陽(yáng)數(shù)碼管和共陰數(shù)碼管的不同,其字段表也是不一樣的,但是兩者是互補(bǔ)的,數(shù)碼管可顯示的字段表如下圖所示。
8-數(shù)碼管字段表
程序代碼如下:
/*共陽(yáng)數(shù)碼管的0-9數(shù)字字碼表*/
uchar code seg_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x8e,0xff};
其次是按鍵部分,搶答按鍵采用中斷來(lái)實(shí)現(xiàn),開(kāi)始/結(jié)束按鍵采用輪詢(xún)實(shí)現(xiàn),部分定義代碼如下所示。
//定義搶答按鍵
sbit KEY_1=P0^0; //1
sbit KEY_2=P0^1; //2
sbit KEY_3=P0^2; //3
sbit KEY_4=P0^3; //4
sbit KEY_5=P0^4; //5
sbit KEY_6=P0^5; //6
sbit KEY_7=P0^6; //6
sbit KEY_8=P0^7; //6
//定義開(kāi)始/結(jié)束按鍵
sbit START = P2^4;
sbit STOP = P2^5;
仿真電路的設(shè)計(jì)和驗(yàn)證
在做板子之前,先用Proteus仿真軟件做了仿真。Proteus仿真支持51單片機(jī)并可以實(shí)現(xiàn)運(yùn)行程序的功能,當(dāng)把程序?qū)懞煤蠹虞d至Proteus即可實(shí)現(xiàn)程序的調(diào)試,Proteus還可以與Keil軟件實(shí)現(xiàn)聯(lián)調(diào)功能。所設(shè)計(jì)的仿真電路如下圖所示。
9-仿真電路-初始顯示FFF字樣
在上電初期,顯示“FFF”字樣,前兩個(gè)數(shù)碼管代表倒計(jì)時(shí)時(shí)間,后一個(gè)數(shù)碼管代表?yè)尨鹫叩木幪?hào)。按下開(kāi)始按鍵后,搶答器開(kāi)始工作,如下圖所示。
10-搶答成功界面
上圖表示,在倒計(jì)時(shí)時(shí)間還有7秒的時(shí)候,5號(hào)選手完成了有效搶答,直至主持人/后臺(tái)按下結(jié)束后再顯示FFF,否則一直顯示該界面。
搶答器的焊接調(diào)試
為了實(shí)現(xiàn)功能驗(yàn)證,選擇用萬(wàn)用板手工焊接實(shí)現(xiàn)這個(gè)設(shè)計(jì)。最終的實(shí)物圖如下所示:
11-最終實(shí)物圖正面
電源供電為DC5V,可以使用電池盒供電,也可以選擇5V輸出的手機(jī)充電器供電,導(dǎo)線走在了電路板正面,雖然丑了點(diǎn),但是方便一點(diǎn)。電路板的反面如下圖所示。
12-最終實(shí)物圖背面
反面是用焊錫連接實(shí)現(xiàn)的。由于功能不是很復(fù)雜,程序?qū)懲旰螅{(diào)試了沒(méi)幾次就完成了功能,前文中所描述的功能都實(shí)現(xiàn)了。按鍵互鎖的功能也實(shí)現(xiàn)了。下圖是通電運(yùn)行的界面,表示5號(hào)搶答者在倒計(jì)時(shí)28秒的時(shí)候搶答成功,這時(shí)候其他搶答者的按鍵無(wú)效。只有開(kāi)始或者結(jié)束按鍵是其作用的。
13-搶答成功界面
該搶答器的設(shè)計(jì)雖然是一個(gè)很簡(jiǎn)單的練手項(xiàng)目,但是卻涉及到了單片機(jī)中最常用的外設(shè)電路,可以幫助初學(xué)者熟悉數(shù)碼管、按鍵、蜂鳴器的使用和控制方法。初學(xué)者可以借助這個(gè)產(chǎn)品熟悉單片機(jī)開(kāi)發(fā)過(guò)程中所用的各種軟件和產(chǎn)品開(kāi)發(fā)的流程。
對(duì)這個(gè)電路進(jìn)行PCB Layout,設(shè)計(jì)個(gè)外殼就成了一個(gè)不錯(cuò)的產(chǎn)品。還可以增加藍(lán)牙模塊或者WiFi模塊,實(shí)現(xiàn)電子屏的控制和顯示,再把功能完善一下,就可以用在舞臺(tái)上了。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!





