單片機十多個實例分享,設計八路搶答器手把手教你
\\\插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我(禾厶-亻言-手戈)免費的。最近比較閒,帶做畢設,帶學生參加省級以上比賽///
單片機作為可編程器件,簡化了電路的設計、方便了邏輯設計,從此再也不用使用一大堆電路做硬體邏輯了。拆開任何一件功能稍微複雜一點電子產品,裡邊都可以看到單片機的身影。學會單片機對找工作也很有利,而且待遇還不錯,今天就從實例分享的角度和大家共享一個案例,用單片機來實現一個搶答器。
在電視節目中,經常看到搶答器出現在知識競賽、答題競賽節目中,如某衛視的《一站到底》,搶答器可以準確、公正、直觀、公平的顯示出搶答選手的編號,可以更好的促進各選手之間的競爭意識,營造緊張的搶答氣氛,增加節目的趣味性和觀賞性。
搶答器的設計框圖
搶答器要實現如下功能:搶答功能、顯示功能、倒計時功能、自鎖功能。節目後台需要控場,擁有搶答器的絕對控制權。功能需求如下:
.開始、結束功能:只有按下開始按鍵後,現場選手才可以開始搶答,否則搶答事件不被處理視為無效;
.自鎖、互鎖功能:為了保證搶答的公平性,在開始搶答後,第一個按下搶答的視為有效搶答,產生有效搶答後其他搶答視為無效;
.計時、設置功能:後台/主持人可以設置搶答時間的長短,以倒數秒的方式顯示,增強緊張氣氛;
.顯示、聲音功能:用數碼管顯示倒計時秒數,選手搶答成功後顯示搶答者編號和剩餘時間;
在該設計中,按鍵採用機械式的四腿按鍵來實現,按鍵數量10個;顯示採用三位數碼管來實現,兩位顯示時間,一位顯示選手編號;聲音提示用蜂鳴器來實現。核心器件采用51單片機來實現。其功能框圖如下圖所示。
1-搶答器功能框圖
按鍵輸入電路設計
該搶答器設計中總共有10個按鍵,其中8個按鍵用於給用戶搶答用,所代表的編號為1-8,另外兩個按鍵分別為開始鍵和結束鍵,由主持人或者後台控制。由於8路輸入搶答按鍵具有互鎖功能,所以只要有一個有效輸入後,其他搶答都是無效的,這個功能可以在程序中實現,為了方便程序設計,這裡采用8輸入與非門來實現,所用型號為74LS30,該與非門有8路輸入,1個輸出,功能框圖如下所示。
2-74LS30與非門框圖
8個按鍵作為74LS30的輸入,輸出通過NPN三極體接入51單片機的外部中斷0接口,以中斷的方式實現按鍵功能的檢測,單片機的中斷資源為低電平有效,為了提高電路穩定性在三極體的集電極上加入上拉電阻,以防誤動作。
3-按鍵輸入電路設計
開始和結束兩個按鍵採用獨立式按鍵設計,占用掉單片機的兩個IO口,程序中採用輪詢來實現。
數碼管顯示電路設計
顯示部分採用數碼管來實現,根據設計要求,兩位用於顯示倒計時時間,最大可以顯示99;一位用於顯示選手編號,故需要3顆數碼管,該設計中採用共陽數碼管來實現,所謂共陽數碼管是指公共端接高電平,段選管腳接低電平後相應的欄位才會被點亮。共陰數碼管正好相反,公共端接低電平,段選管腳接高電平後相應的欄位才會被點亮。
4-數碼管實物圖
數碼管的引腳比較多,除了8個段選管腳外,還有公共端/位選引腳,如果用三顆獨立的數碼管可能需要較多單片機引腳資源,為了解決這個問題,本例設計采用74HC595作為數碼管驅動。74HC595是串入並出的移位寄存器,只需要三個引腳就可以控制8個引腳的輸出,而且還可以實現級聯。所以74HC595通常在數碼管驅動和點陣屏中應用比較多。
這三顆數碼管中,分為時間顯示和編號顯示兩組,用到三顆74HC595,其中兩顆級聯用於控制時間顯示的數碼管,總共用到6個單片機的IO口,驅動電路如下圖所示。
5-數碼管驅動電路
蜂鳴器發聲電路設計
需求中提到發聲設計,當有效按鍵事件發生時,蜂鳴器發聲作為提示音,當倒計時進入5秒之內後還沒有人按鍵搶答時,蜂鳴器每隔1秒發聲,製造現場緊張的氣氛,提高節目的觀賞性和娛樂性,增強節目效果。本例中選擇了蜂鳴器,蜂鳴器驅動電路如下圖所示。
6-蜂鳴器驅動電路
由於單片機的IO口驅動能力有限,所以採用三極體來驅動,這裡選用了PNP三極體。三極體驅動蜂鳴器時工作於飽和狀態,為了讓三極體充分飽和,將蜂鳴器接在了三極體的集電極,這個地方初學者在設計電路時要注意。圖中當單片機的IO口輸出低電平時蜂鳴器工作發聲。
搶答器程序設計
該設計使用keil5作為編程環境,涉及到數碼管顯示、按鍵檢測/互鎖、蜂鳴器發聲、定時器等相關功能模塊的程序編寫。
7-程序設計流程圖
程序的功能邏輯介紹如下,上電後數碼管顯示FFF字樣,並首先檢測「開始」按鍵是否按下,如果沒有按下開始按鍵則表示搶答未開始。如果按下了開始按鍵,搶答器啟動,秒顯示開始倒計時,有人按下搶答鍵時蜂鳴器發聲、倒計時停止並顯示搶答者編號,整個搶答事件結束,直到主持人/後台按下結束按鍵後再顯示FFF。如果倒計時進入5秒內,仍未有人搶答,則每個整秒蜂鳴器響一次,直至結束。
以上為程序邏輯設計和程序的流程圖講解,下面介紹各功能模塊的程序設計。
首先介紹數碼管的程序編寫,再編寫程序時,都會預先定義好數碼管的欄位表,根據共陽數碼管和共陰數碼管的不同,其欄位表也是不一樣的,但是兩者是互補的,數碼管可顯示的欄位表如下圖所示。
8-數碼管欄位表
程序代碼如下:
/*共陽數碼管的0-9數字字碼表*/
uchar code seg_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x8e,0xff};
其次是按鍵部分,搶答按鍵採用中斷來實現,開始/結束按鍵採用輪詢實現,部分定義代碼如下所示。
//定義搶答按鍵
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
//定義開始/結束按鍵
sbit START = P2^4;
sbit STOP = P2^5;
廣告愛上單片機(第3版附DVD光碟)
作者:杜洋
京東
仿真電路的設計和驗證
在做板子之前,先用Proteus仿真軟體做了仿真。Proteus仿真支持51單片機並可以實現運行程序的功能,當把程序寫好後加載至Proteus即可實現程序的調試,Proteus還可以與Keil軟體實現聯調功能。所設計的仿真電路如下圖所示。
9-仿真電路-初始顯示FFF字樣
在上電初期,顯示「FFF」字樣,前兩個數碼管代表倒計時時間,後一個數碼管代表搶答者的編號。按下開始按鍵後,搶答器開始工作,如下圖所示。
10-搶答成功介面
上圖表示,在倒計時時間還有7秒的時候,5號選手完成了有效搶答,直至主持人/後台按下結束後再顯示FFF,否則一直顯示該介面。
搶答器的焊接調試
為了實現功能驗證,選擇用萬用板手工焊接實現這個設計。最終的實物圖如下所示:
11-最終實物圖正面
電源供電為DC5V,可以使用電池盒供電,也可以選擇5V輸出的手機充電器供電,導線走在了電路板正面,雖然丑了點,但是方便一點。電路板的反面如下圖所示。
12-最終實物圖背面
反面是用焊錫連接實現的。由於功能不是很複雜,程序寫完後,調試了沒幾次就完成了功能,前文中所描述的功能都實現了。按鍵互鎖的功能也實現了。下圖是通電運行的介面,表示5號搶答者在倒計時28秒的時候搶答成功,這時候其他搶答者的按鍵無效。只有開始或者結束按鍵是其作用的。
13-搶答成功介面
該搶答器的設計雖然是一個很簡略的練手項目,但是卻波及到了單片機中最常用的外設電路,能夠幫助初學者熟悉數碼管、按鍵、蜂鳴器的使用和控制方法。初學者能夠藉助這個產品熟悉單片機開發過程中所用的各種軟體和產品開發的流程。
對這個電路進行PCB Layout,設計個外殼就成了一個不錯的產品。還能夠增加藍牙模塊或者WiFi模塊,實現電子屏的控制和顯示,再把功能完善一下,
綠色圖標【‟で】liutianwang123