天天看點

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

單片機作為可程式設計器件,簡化了電路的設計、友善了邏輯設計,從此再也不用使用一大堆電路做硬體邏輯了。拆開任何一件功能稍微複雜一點電子産品,裡邊都可以看到單片機的身影。學會單片機對找工作也很有利,而且待遇還不錯,今天就從執行個體分享的角度和大家共享一個案例,用單片機來實作一個搶答器。

在電視節目中,經常看到搶答器出現在知識競賽、答題競賽節目中,如江蘇衛視的《一站到底》,搶答器可以準确、公正、直覺、公平的顯示出搶答選手的編号,可以更好的促進各選手之間的競争意識,營造緊張的搶答氣氛,增加節目的趣味性和觀賞性。

搶答器的設計框圖

搶答器要實作如下功能:搶答功能、顯示功能、倒計時功能、自鎖功能。節目背景需要控場,擁有搶答器的絕對控制權。功能需求 如下:

  1. 開始、結束功能:隻有按下開始按鍵後,現場選手才可以開始搶答,否則搶答事件不被處理視為無效;
  2. 自鎖、互鎖功能:為了保證搶答的公平性,在開始搶答後,第一個按下搶答的視為有效搶答,産生有效搶答後其他搶答視為無效;
  3. 計時、設定功能:背景/主持人可以設定搶答時間的長短,以倒數秒的方式顯示,增強緊張氣氛;
  4. 顯示、聲音功能:用數位管顯示倒計時秒數,選手搶答成功後顯示搶答者編号和剩餘時間;

在該設計中,按鍵采用機械式的四腿按鍵來實作,按鍵數量10個;顯示采用三位數位管來實作,兩位顯示時間,一位顯示選手編号;聲音提示用蜂鳴器來實作。核心器件采用51單片機來實作。其功能框圖如下圖所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

1-搶答器功能框圖

按鍵輸入電路設計

該搶答器設計中總共有10個按鍵,其中8個按鍵用于給使用者搶答用,所代表的編号為1-8,另外兩個按鍵分别為開始鍵和結束鍵,由主持人或者背景控制。由于8路輸入搶答按鍵具有互鎖功能,是以隻要有一個有效輸入後,其他搶答都是無效的,這個功能可以在程式中實作,為了友善程式設計,這裡采用8輸入與非門來實作,所用型号為74LS30,該與非門有8路輸入,1個輸出,功能框圖如下所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

2-74LS30與非門框圖

8個按鍵作為74LS30的輸入,輸出通過NPN三極管接入51單片機的外部中斷0接口,以中斷的方式實作按鍵功能的檢測,單片機的中斷資源為低電平有效,為了提高電路穩定性在三極管的集電極上加入上拉電阻,以防誤動作。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

3-按鍵輸入電路設計

開始和結束兩個按鍵采用獨立式按鍵設計,占用掉單片機的兩個IO口,程式中采用輪詢來實作。

數位管顯示電路設計

顯示部分采用數位管來實作,根據設計要求,兩位用于顯示倒計時時間,最大可以顯示99;一位用于顯示選手編号,故需要3顆數位管,該設計中采用共陽數位管來實作,所謂共陽數位管是指公共端接高電平,段選管腳接低電平後相應的字段才會被點亮。共陰數位管正好相反,公共端接低電平,段選管腳接高電平後相應的字段才會被點亮。數位管的實物圖如下所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

4-數位管實物圖

數位管的引腳比較多,除了8個段選管腳外,還有公共端/位選引腳,如果用三顆獨立的數位管可能需要較多單片機引腳資源,為了解決這個問題,本例設計采用74HC595作為數位管驅動。74HC595是串入并出的移位寄存器,隻需要三個引腳就可以控制8個引腳的輸出,而且還可以實作級聯。是以74HC595通常在數位管驅動和點陣屏中應用比較多。

這三顆數位管中,分為時間顯示和編号顯示兩組,用到三顆74HC595,其中兩顆級聯用于控制時間顯示的數位管,總共用到6個單片機的IO口,驅動電路如下圖所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

5-數位管驅動電路

蜂鳴器發聲電路設計

需求中提到發聲設計,當有效按鍵事件發生時,蜂鳴器發聲作為提示音,當倒計時進入5秒之内後還沒有人按鍵搶答時,蜂鳴器每隔1秒發聲,制造現場緊張的氣氛,提高節目的觀賞性和娛樂性,增強節目效果。本例中選擇了蜂鳴器,蜂鳴器驅動電路如下圖所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

6-蜂鳴器驅動電路

由于單片機的IO口驅動能力有限,是以采用三極管來驅動,這裡選用了PNP三極管。三極管驅動蜂鳴器時工作于飽和狀态,為了讓三極管充分飽和,将蜂鳴器接在了三極管的集電極,這個地方初學者在設計電路時要注意。圖中當單片機的IO口輸出低電平時蜂鳴器工作發聲。

搶答器程式設計

該設計使用keil5作為程式設計環境,涉及到數位管顯示、按鍵檢測/互鎖、蜂鳴器發聲、定時器等相關功能子產品的程式編寫。程式設計的流程圖如下所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

7-程式設計流程圖

程式的功能邏輯介紹如下,上電後數位管顯示FFF字樣,并首先檢測“開始”按鍵是否按下,如果沒有按下開始按鍵則表示搶答未開始。如果按下了開始按鍵,搶答器啟動,秒顯示開始倒計時,有人按下搶答鍵時蜂鳴器發聲、倒計時停止并顯示搶答者編号,整個搶答事件結束,直到主持人/背景按下結束按鍵後再顯示FFF。如果倒計時進入5秒内,仍未有人搶答,則每個整秒蜂鳴器響一次,直至結束。

以上為程式邏輯設計和程式的流程圖講解,下面介紹各功能子產品的程式設計。

首先介紹數位管的程式編寫,再編寫程式時,都會預先定義好數位管的字段表,根據共陽數位管和共陰數位管的不同,其字段表也是不一樣的,但是兩者是互補的,數位管可顯示的字段表如下圖所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

8-數位管字段表

程式代碼如下:

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;

仿真電路的設計和驗證

在做闆子之前,先用Proteus仿真軟體做了仿真。Proteus仿真支援51單片機并可以實作運作程式的功能,當把程式寫好後加載至Proteus即可實作程式的調試,Proteus還可以與Keil軟體實作聯調功能。所設計的仿真電路如下圖所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

9-仿真電路-初始顯示FFF字樣

在上電初期,顯示“FFF”字樣,前兩個數位管代表倒計時時間,後一個數位管代表搶答者的編号。按下開始按鍵後,搶答器開始工作,如下圖所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

10-搶答成功界面

上圖表示,在倒計時時間還有7秒的時候,5号選手完成了有效搶答,直至主持人/背景按下結束後再顯示FFF,否則一直顯示該界面。

搶答器的焊接調試

為了實作功能驗證,選擇用萬用闆手工焊接實作這個設計。最終的實物圖如下所示:

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

11-最終實物圖正面

電源供電為DC5V,可以使用電池盒供電,也可以選擇5V輸出的手機充電器供電,導線走在了電路闆正面,雖然醜了點,但是友善一點。電路闆的反面如下圖所示。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

12-最終實物圖背面

反面是用焊錫連接配接實作的。由于功能不是很複雜,程式寫完後,調試了沒幾次就完成了功能,前文中所描述的功能都實作了。按鍵互鎖的功能也實作了。下圖是通電運作的界面,表示5号搶答者在倒計時28秒的時候搶答成功,這時候其他搶答者的按鍵無效。隻有開始或者結束按鍵是其作用的。

m0單片機io口_從一個簡單的項目,學會單片機的使用:51單片機設計的8路搶答器...搶答器的設計框圖按鍵輸入電路設計數位管顯示電路設計蜂鳴器發聲電路設計搶答器程式設計仿真電路的設計和驗證搶答器的焊接調試

13-搶答成功界面

該搶答器的設計雖然是一個很簡單的練手項目,但是卻涉及到了單片機中最常用的外設電路,可以幫助初學者熟悉數位管、按鍵、蜂鳴器的使用和控制方法。初學者可以借助這個産品熟悉單片機開發過程中所用的各種軟體和産品開發的流程。

對這個電路進行PCB Layout,設計個外殼就成了一個不錯的産品。還可以增加藍牙子產品或者WiFi子產品,實作電子屏的控制和顯示,再把功能完善一下,就可以用在舞台上了。

繼續閱讀