8位競賽搶答器的設計
第1章 需求分析搶答比賽是一個參賽者與觀眾都喜愛的富有激情的比賽,在主持人宣布開始答題后,選手要在規定的時間內,以搶答的方式來回答問題。過去,人們搶答比賽僅依靠主持人人為的判斷來判定到底哪個選手是最快搶答成功的,這種搶答方式不僅精準性低而且效率也不高,所以搶答比賽就需要有搶答器來進行輔助比賽,精準選出搶答成功的選手。
本次我們要設計的是一個8位競賽搶答器,可以同時供8名選手或8支隊伍比賽。搶答器要求能快速地鎖定搶答選手或隊伍的編號,搶答的信息要能迅速顯示在數碼管上,并且要能為主持人提供方便的比賽操作,可以靈活地進行比賽時間調節與操作比賽的開始與結束,保證整場比賽的公平性與靈活性。考慮到比賽運營的費用與投入的成本,搶答器整套系統的成本也不能太高,所選用芯片的價格要求要適中,這樣才能保證搶答器系統的價格在可以普遍應用的范圍內。
第2章 系統概要設計
2.1 8位競賽搶答器的整體設計8位競賽搶答器可以同時提供 8 名選手參加比賽,使用AT89C52單片機芯片的P1^1 – P1^7口作為搶答按鈕的接口,與8個按鈕相連接,模擬選手的搶答按鍵。并在P2^0口與P2^1口分別設置一個搶答開始按鍵與搶答時間設置按鍵,提供給主持人進行比賽的控制,再利用系統的復位功能,重置系統模擬進入下一題,重新設置計時時間與計時搶答工作的準備。數碼管的顯示驅動由MAX7219顯示芯片帶動,使用AT89C52單片機芯片的P3^0(RXD)與P3^1(TXD)口分別與MAX7219芯片的DIN口與LOAD口連接,進行串行通信與數據裝載,傳送當前的搶答時間與搶答成功選手編號,CLK時鐘序列輸入口與AT89C52芯片的INT0口(外部中斷口)進行連接,提供控制信息。
2.2 8位競賽搶答器功能流程接通電源后,主持人可以按搶答時間設置按鍵進行搶答時間的設置,在設置好搶答時間后,按開始按鍵即可開始計時搶答,此時選手可以通過自己的按鍵進行搶答。在一個選手成功之后,系統會進行選手編號與搶答時間的鎖定,數碼管就會顯示當前搶答選手的編號與搶答時間。系統流程圖如下所示:

圖2-1 8位競賽器系統流程圖
第3章 仿真電路設計
3.1 仿真電路總體設計8位競賽搶答器使用了AT89C52芯片和MAX7219芯片進行設計,AT89C52是一種帶4K字節閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS,8位微處理器,俗稱單片機,用于搶答邏輯電路的設計。MAX7219是一種集成化的串行輸入/輸出共陰極顯示驅動器,它連接微處理器與8位數字的7段數字LED顯示,也可以連接條線圖顯示器或者64個獨立的LED,擁有10MHz連續串行口與獨立的LED段控制,用于顯示搶答成功選手編號顯示與搶答時間顯示。
系統的總體電路如下圖所示:
圖3-1 總體電路圖
3.2 單元電路設計為了更好的設計8位競賽搶答器,我們根據各個部分的功能將總電路劃分成為晶振電路、搶答電路、顯示電路以及主持人控制電路,以下是對各個單元電路的詳細說明。
3.2.1 晶振電路與復位電路該晶振電路使用的是內部時鐘電路,晶振的頻率為12MHZ ,提供AT89C52芯片的時鐘脈沖使AT89C52芯片工作。復位電路使用的是按鍵與上電復位,復位電路可以使單片機重置,使單片機重新開始執行程序。當復位開關按下 RST 口由低電平變為高電平,觸發復位功能,系統重置。晶振電路電路圖如下圖紅圈區域,復位電路如下圖藍圈區域,如圖:

圖3-2 晶振電路電路圖
3.2.2 搶答電路搶答電路使用AT89C52的P1^0 - P1^7作為選手的搶答按鍵,選手編號分別1到8,當選手按下按鍵時,按鍵對應的接口由高電平變為低電平,程序不斷掃描P1各個口電平的變化,在掃描到有接口變為低電平后,迅速鎖定該口的編號,模擬搶答成功情形。搶答電路電路圖如下圖紅圈區域所示:

圖3-3 搶答電路電路圖
3.2.3 顯示電路顯示電路由MAX7219芯片進行顯示驅動,兩個10引腳的LED數碼管進行選手編號的顯示與搶答時間顯示,由DIN接口(串行數據輸入端口)進行串行數據的輸入,LOAD口進行數據的裝載,再通過DIG0~DIG7口進行片選信號的輸出,對LED數碼管進行控制。顯示電路電路圖如下圖紅圈區域所示:

圖3-4 顯示電路電路圖
3.2.4 控制電路控制電路由AT89C52芯片的P2^0與P2^1口進行實現,通過與兩個按鍵進行連接,實現開始計時與搶答時間的設置。控制電路電路圖如下圖所示:

圖3-5 控制電路電路圖
第4章 系統軟件設計4.1 軟件主程序設計
圖4-1 主程序流程圖
程序Main函數
- <font style="font-size: 12pt">void main()
- {
- while(1)
- {
- do
- {
- holderscan();
- }
- //while(begin);//開始前進行設置,若未按下開始鍵 主持人是否把開始按鍵按下
- while (begin)
- delay_ms(10);//防抖
- while(!begin);
- max7219_init(); //芯片初始化
- timer_init(); //中斷初始化
- TR0=1; //開始中斷
- do
- {
- time_display(second);
- people=keyscan();//掃描選手按鍵
- scare_display(people);
- }
- while((!people)&&(second));//運行直到搶答結束或者時間結束
- TR0=0;
- }
- }</font>
復制代碼
第5章 仿真結果分析
5.1仿真結果分析系統仿真時首先要在使用KeilC編譯器,把所寫的程序進行編譯,同時在仿真器里設置生成 hex 文件,編譯無錯誤時使用 Proteus軟件仿真。電路啟動仿真結果如下所示:

圖5-1 電路啟動仿真圖
按下START按鍵后,搶答開始,開始30s倒計時,仿真結果如下所示:
圖5-2 倒計時仿真圖
點擊任意選手按鈕,倒計時暫停,顯示選手編號,仿真結果如下所示:

圖5-3 選手搶答仿真圖
若該選手打錯,繼續倒計時,選手編號清零,仿真結果如下所示:
圖5-4 繼續搶答仿真圖
一輪答題結束后,點擊復位按鈕,倒計時復位,選手編號清零,仿真結果如下所示:

圖5-5 復位仿真圖
第6章 課程設計總結在這次課程設計中,通過完成8位競賽搶答器的設計,我們對書本上的知識有了進一步的了解。將以前學習過的模電知識與proteus軟件的操作結合起來。本次課程設計我們選擇8位競賽搶答器設計的原因是這看起來是個相對簡單一點的課題,但當我們真正開始設計的時候,發現這個課題并沒有我們想象中的那么簡單,在設計電路的過程中遇到了不少的問題。雖然我們通過查閱書本和網上的資料在proteus上成功畫出本次設計所需要的電路圖,但我們在電路仿真的時候發現電路中的電阻及電容參數設置錯誤,導致仿真過程中電路無法正常運行,當我們改正后再次仿真的時候又發現了定時器的初值設置有誤以及其他元器件的參數都有點小問題,經過幾次修改,電路成功仿真并達到了我們預期設想的結果。
本次的課程設計使我們受益匪淺。加深了我們對單片機和數字電路的認識,相信這在以后的學習和工作中碰到這些基礎元器件我們會更加得心易手。我們還學習到了一些課堂上學不到的東西,這些知識可能對于我們將來的畢設、學習或者工作來說,都是很有幫助的。希望以后我們還能更多這樣的機會來學習更多的知識。
致 謝經過一周的努力,我們成功完成本次課程設計的課題,以單片機為核心設計出一個8位競賽搶答器。雖然還存在一些小問題,但基本達到本次課程設計的設計要求。
在這一周的課程設計中,我們在設計過程中遇到一些曲折。在編寫程序和完成電路仿真時,幾次因無法實現設計所要求的結果或錯漏百出,我們只好重新設計一個新的方案。好在得到老師和周圍同學及好友的幫助,我們才能堅持下去并成功完成本次課程設計。在此我們要感謝羅澤鵬老師對我們的指導,老師知識淵博,做事嚴謹,平近易人。向老師請教問題時,老師細心地解答我們的問題,還經常幫忙指出我們沒有發現的錯誤并提出改善的建議。我們還要感謝周圍的同學,在完成本次課程設計的過程中得到他們不少的幫助和支持。不過我們最想感謝的還是我們自己,正是因為我們組員互幫互助、團結友愛、堅持不懈的精神,我們才能在本次課程設計畫下一個完美的句號。
附錄總電路圖

電路元器件圖表
完整的Word格式文檔51黑下載地址(含源碼):
《8位競賽搶答器的設計》課程設計報告.docx
(650.02 KB, 下載次數: 562)
2018-6-25 09:56 上傳
點擊文件名下載附件