單片機八路競賽搶答器課程設計報告書_第1頁
單片機八路競賽搶答器課程設計報告書_第2頁
單片機八路競賽搶答器課程設計報告書_第3頁
單片機八路競賽搶答器課程設計報告書_第4頁
單片機八路競賽搶答器課程設計報告書_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄摘要21 設計方案選擇與討論31.1方案設計31.2核心控制器件89C52簡介32硬件電路設計52.1單元電路設計52.2單元電路設計52.2.1核心控制器件STC89C52最小系統62.2.2時序控制電路設計62.2.3復位與加減時間電路的設計72.2.4搶答與數碼管顯示電路72.2.5聲音電路設計73 軟件編程設計83.1大體思路84仿真與調試105焊接與實際調試116心得體會12參考文獻13附錄I 元件清單14附錄 程序代碼1525 / 26摘要搶答器作為一種工具,已廣泛應用于各種智力和知識競賽場合。本設計是以八路搶答為基本理念。考慮到依需設定限時回答的功能,利用AT89C52單片機

2、與外圍接口實現的搶答系統,利用單片機的定時器/計數器定時和記數的原理,將軟、硬件有機地結合起來,使得系統能夠正確地進行計時,同時使數碼管能夠正確地顯示時間。用開關做鍵盤輸出,揚聲器發生提示。同時系統能夠實現:在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可在1-30s設定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒記時顯示,滿時后系統計時自動復位與主控強制復位;按鍵鎖定,在有效狀態下,按鍵無效非法。關鍵詞:搶答器 單片機 軟硬件結合 1 方案設計 1.1方案設計該系統采用51系列單片機STC89C52作為控制核

3、心,該系統可以完成運算控制、信號識別以與顯示功能的實現。由于用了單片機,使其技術比較成熟,應用起來方便、簡單并且單片機周圍的輔助電路也比較少,便于控制和實現。整個系統具有極其靈活的可編程性,能方便地對系統進行功能的擴和更改。STC89C52單片機特點如下: 第一,可靠性好:單片機按照工業控制要求設計,抵抗工業噪聲干擾優于一般的CPU,程序指令和數據都可以寫在ROM里,許多信號通道都在同一芯片,因此可靠性高,易擴充。 第二,單片機有一般電腦所必須的器件,如三態雙向總線,串并行的輸入與輸出引腳,可擴充為各種規模的微電腦系統。第三, 控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的

4、條件分支跳躍指令。其原理框圖如下:搶答按扭優先編碼電路鎖存器譯碼電路譯碼顯示裁判控制開關控制電路報警電路秒脈沖產生電路定時電路譯碼電路顯示電路圖1.1 原理框圖 1.2 核心控制器件89C52簡介STC89C52是STC公司生產的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統可編程Flash存儲器。STC89C52使用經典的MCS-51核,但做了很多的改進使得芯片具有傳統51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統可編程Flash,使得STC89C52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節Flash,512字節R

5、AM, 32 位I/O 口線,看門狗定時器,置4KB EEPROM,MAX810復位電路,3個16 位定時器/計數器,4個外部中斷,一個7向量4級中斷結構(兼容傳統51的5向量2級中斷結構),全雙工串行口。另外 STC89C52 可降至0Hz 靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。其引腳圖如下:圖1.2 單片機引腳圖2 硬件電路設計2.1搶答器的電路框圖如圖1.1所示為電路框圖

6、。其工作原理為:接通電源后,裁判將開關撥到“清除”狀態,搶答器處于禁止狀態,編號顯示器滅燈,定時器顯示設定時間,裁判可在搶答開始;裁判將開關置“開始”狀態,宣布“開始”搶答器工作。定時器倒計時,揚聲器給出聲響提示。選手在定時時間搶答時,搶答器完成:優先判斷、編號鎖存、編號顯示、揚聲器提示。當一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由裁判再次操作開始、停止狀態開關。2.2 單元電路設計2.2.1 核心控制器件STC89C52最小系統 此次課程設計使用原碼實驗室的89C52最小系統板進行設計,再加上一塊焊有數碼管等外圍模塊的電路板。原碼實驗室的單片機最小系統已經

7、焊接完成,其中只對需要用到的時鐘晶振外部電路,中斷,以與復位和一些邏輯I/O口進行電路圖繪制,其他進行程序燒入的部分。最小系統電路圖如下:圖2.2.1 STC89C52最小系統電路圖中我們可以看到P2整個八個關鍵用來為搶答者提供搶答器,當按鍵開關第一次被按下后,那位搶答者所對應的座位便可以顯示出來。 2.2.2時序控制電路設計時序控制電路是搶答器設計的關鍵,它要完成以下功能:第一,裁判將控制開關撥到開始位置時,揚聲器發聲,搶答電路和定時電路進人正常搶答工作狀態。 第二,當參賽選手按動搶答鍵時,揚聲器發聲,搶答電路和定時電路停止工作。2.2.3復位與加減時間電路的設計外部中斷和部中斷并存,單片機

8、硬件復位端,只要持續4個機器周期的高電平即可實現復位,硬件復位后的各狀態可知寄存器以與存儲器的值都恢復到了初始值,因為本設計中功能中有倒計時時間的記憶功能,所以不能對單片機進行硬件復位,只能用軟件復位,軟件復位實際上就是當程序執行完之后,將程序通過一條跳轉指令讓它完成復位。而對時間的加減設置也可以通過對相應的按鍵中斷進行定義以實現。復位電路如下圖所示:圖2.2.2 復位電路圖 2.2.4搶答以與數碼管顯示電路搶答電路即裁判與搶答者的用按鍵掃描來完成,剩下的由軟件完成其功能。而數碼管的顯示則需要經過74HC573這個鎖存器芯片進行鎖存,在第一位搶答者搶答成功之后倒計時以與顯示“誰搶到”的2個2段

9、數碼管分別被兩個鎖存器進行鎖存,是數碼管現實不會再有變化,即實現功能。數顯電路如下圖:圖2.2.3 數顯電路 2.2.5聲音電路設計 聲音電路用于以聲音提示,當遇到報警信號時,發出警報。一般喇叭是一種電感性原件。89C52驅動喇叭的信號為各種頻率的脈沖。因此,最簡單的喇叭驅動方式就是利用達林頓晶體管,或者以兩個常用的小晶體管連接成達林頓架勢。在右圖中電阻R為限流電阻,在此利用晶體管的高電流增益,以達到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個10K的上拉電阻。選手在設定的時間搶答時,實現:優先判斷、編號鎖存、編號顯示、揚聲器提示。當一輪搶答之后,定時器停止、禁止二次搶答

10、、定時器顯示剩余時間。如果再次搶答必須由主持人再次作清除和開始狀態開關。對于不同情況下的聲音有不同的設置,此處也是利用軟件進行設計,聲音電路模塊如下圖:圖2.2.4 聲音電路3 軟件設計 3.1系統主程序設計為了能夠達到搶答的公平、公正、合理,應該在裁判發布搶答命令之前必須先設定搶答的時間,因而在編開始搶答前的程序得先編寫設定時間的程序,當時間設好了之后,裁判發布搶答命令按下INTO按鍵,程序開始打開定時中斷開始倒計時,然后調用鍵盤掃描子程序,編寫鍵盤掃描程序。當在掃描到有人按下了答題鍵,馬上關閉T0、調用顯示程序、封鎖鍵盤。其主程序流程圖如下:主程序設置搶答時間和回答問題時間定時器與并行口初

11、始化將時間計數器與啟動標志值1開中斷采并行口數據為0嗎?啟動標志=1嗎?判斷搶答組號將搶答組發光二極管點亮判斷哪一組為搶答組將搶答組號送顯示搶答時間到了嗎?輸出響鈴信號提示超時繼續搶答比賽嗎?系統返回NYYYNYN圖3.1 主程序流程圖4 仿真與調試 使用proteus進行仿真,仿真圖如下:圖4.1 仿真電路圖仿真開始后按下按鍵1時,數碼管前兩位顯示 “1”,剛好在還剩6秒的時候,所以后兩位數碼管顯示“6”。結果如下圖所示:圖4.2仿真時的按鍵圖 此時的數碼管顯示如下圖:圖4.3 仿真時的數碼管顯示圖 即搶答器完成了在規定時間搶答并鎖存的功能,即仿真成功。5 焊接與實物調試完成焊接之后,實物圖

12、如下:圖5.1 實物圖1(未上電)圖5.2 實物圖2(上電)經過幾次調試,結果符合要求,且效果比較良好。6 心得體會通過此次的課程設計,讓我更進一步的鞏固了單片機的各種知識。我在設計電路板的時候,我在一開始設計的基礎上稍微改變了一下I/O口的應用,使線的連接更加方便,在外圍模塊的設計上也稍微花了點功夫,雖然我們沒有實現本來想實現的LED顯示搶答成功選手的功能,但設計還是較成功的。此次的課程設計讓我相信這會對今后的學習工作生活都有非常重要的影響,而且大大的提高了動手能力,使我充分的體會到了創造過程中的探索的艱難和成功的喜悅。雖然這次做出的作品還存在很多需要改進的地方,但是在整個設計過程中所學習到

13、的東西是這次實訓所得到的最大收獲跟財富,使我終身受益。參考文獻1小堅 主編,Protel DXP電路設計與制版使用教程,人民郵電,20012徐進強等 主編,單片機技術任務驅動式教程,大學,20023海濱 主編,單片機技術課程設計與項目實例,中國電力,20054瑞新 主編,單片機原理與應用教程,機械工業,20075廣弟等 主編,單片機基礎,冶金工業,20046全利等 主編,基于Proteus的單片機可視軟硬件仿真,2010附錄I 元件清單表1 器件選型方案的詳細清單器件名稱規格型號數量微處理器AT89C511極性電容10uF1電阻3WTT10K9電容20PF3晶振12MHZ1按鈕15共陽4位7段

14、數碼管SMG SM410561K1揚聲器1附錄程序代碼/搶答器/Responder.c#includereg52.h#define LED_DATA_PORT P0 /0亮,共陽數碼管#define ADJUST 0/搶答器處于調整狀態#define ANSWER1/搶答狀態/單片機IO口位聲明,51單片機可以對IO的每一位或Px八位單獨進行讀寫操作sbit com1=P13; /1亮sbit com2=P12;sbit com3=P11;sbit com4=P10;sbit key1=P21;sbit key2=P23;sbit key3=P25;sbit key4=P27;sbit key

15、5=P20;sbit key6=P22;sbit key7=P24;sbit key8=P26;sbit key9=P35;/倒計時減sbit key10=P36;/倒計時加sbit key11=P37;/清零端,控制端sbit beep=P17;/1響unsigned char num1=0,time=15;/num1是用來輔助定時器計數,累計時間到一秒,time為倒計時unsigned char shi=0,ge=0;/倒計時time的十位和個位unsigned char result=0;/搶答結果unsigned char state=ADJUST;/搶答器狀態,初始為調整狀態unsi

16、gned char flag=0;/結束標識,狀態標識,0復位,沒有有效信號;1有人搶答,結束搶答過程;2時間到,無人搶答,結束搶答過程const unsigned char ledNum = / 0 1 2 3 4 5 6 7 8 9 A b c d E F 不顯示 - o(18)H(19)h(20)C(21)0(22)n(23)0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8e,0xFF,0xbf,0xa3,0x89,0x8b,0xc6,0xc0,0xab; /*- 延時函數,含有輸

17、入參數 unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的圍是 065535-*/void Delay(unsigned int t) while(-t);/延時函數,n毫秒void Delay_ms(unsigned int n)unsigned int i,j;for(i=n;i0;i-)for(j=110;j0;j-);/開始聲音void SoundStart(void)/開始聲音beep=1;Delay_ms(200);beep=0;/報警聲音void SoundWarning(void)unsigned char i;for(i=0;i20

18、;i+)/報警聲音beep=1;Delay_ms(i);beep=0;Delay_ms(20-i);/結束聲音void SoundOver(void)unsigned char i;for(i=0;i80;i+)/結束聲音beep=1;Delay(100);beep=0;Delay(100);/按鍵掃描函數,只掃描K1到K8/需要尋求一種方式對重復的代碼進行優化unsigned char KeyScan_8(void)unsigned char num=0;if(key1=0)Delay_ms(10);if(key1=0)num=1;/Delay_ms(20);/while(!key1);re

19、turn num;if(key2=0)Delay_ms(10);if(key2=0)num=2;/Delay_ms(20);/while(!key2);return num;if(key3=0)Delay_ms(10);if(key3=0)num=3;/Delay_ms(20);/while(!key3);return num;if(key4=0)Delay_ms(10);if(key4=0)num=4;/Delay_ms(20);/while(!key4);return num;if(key5=0)Delay_ms(10);if(key5=0)num=5;/Delay_ms(20);/whi

20、le(!key5);return num;if(key6=0)Delay_ms(10);if(key6=0)num=6;/Delay_ms(20);/while(!key6);return num;if(key7=0)Delay_ms(10);if(key7=0)num=7;/Delay_ms(20);/while(!key7);return num;if(key8=0)Delay_ms(10);if(key8=0)num=8;/Delay_ms(20);/while(!key8);return num;return num;/按鍵掃描函數,只掃描S11,S10,S9,分別為控制端,倒計時加,

21、倒計時減unsigned char KeyScan_3(void)unsigned char num=0;if(key9=0)Delay_ms(10);if(key9=0)num=9;while(!key9);return num;if(key10=0)Delay_ms(10);if(key10=0)num=10;while(!key10);return num;if(key11=0)Delay_ms(10);if(key11=0)num=11;while(!key11);return num;return num;/按鍵掃描函數,只掃描控制端,清零端S11,P3.7unsigned char

22、 KeyScan_1(void)unsigned char num=0;if(key11=0)Delay_ms(10);if(key11=0)num=11;while(!key11);return num;return num;/*/定時器初始化void InitInter(void)TMOD=0X11;/設置定時器工作方式為1TH0=(65535-45872)/256;/裝初值,11.0592M晶振,50毫秒TL0=(65535-45872)%256;EA=1;/開總中斷ET0=1;/開定時器0中斷TR0=1;/啟動定時器0*/關閉中斷void CloseInter(void)TR0=0;/

23、停止定時器0ET0=0;/關定時器0中斷EA=0;/關總中斷/重新打開中斷void OpenInter(void)num1=0;/計數初始化TH0=(65535-45872)/256;/裝初值,11.0592M晶振,50毫秒TL0=(65535-45872)%256;EA=1;/開總中斷ET0=1;/開定時器0中斷TR0=1;/啟動定時器0/關數碼管顯示void DisplayClose(void)com1=0;com2=0;com3=0;com4=0;LED_DATA_PORT=0X00;/考慮到要保護硬件,不能長時間讓數碼管承受反向電壓,/但再次使用數碼管時,要先送段選,再打開位選。/倒計

24、時顯示,調用該函數之前要先關閉顯示,/因為是動態掃描,所以要在循環里面一直重復執行void DisplayTime(void)/DisplayClose();LED_DATA_PORT=ledNumshi;com3=1;Delay(200);com3=0;LED_DATA_PORT=ledNumge;com4=1;Delay(200);com4=0;/顯示結果,將搶答結果,即搶答者序號,倒計時所剩時間顯示出來,/該函數之前要先關閉顯示,因為是動態掃描,所以要在循環里面一直重復執行void DisplayResult(void)/DisplayClose();LED_DATA_PORT=ledN

25、umresult;com1=1;Delay(200);com1=0;LED_DATA_PORT=ledNumshi;com3=1;Delay(200);com3=0;LED_DATA_PORT=ledNumge;com4=1;Delay(200);com4=0;/按鍵釋放void KeyFree(void)if(KeyScan_8()Delay_ms(10);if(KeyScan_8()state=ADJUST;/SoundWarning();/LED_DATA_PORT=0x00;/com1=com2=com3=com4=1;while(KeyScan_8();/com1=com2=com3

26、=com4=0;/定時器調整進程void ProcessAdjust(void)time=15;shi=time/10;ge=time%10;while(!state)switch(KeyScan_3()case 9:/倒計時減time-;if(time30)time=1;shi=time/10;ge=time%10;break;case 11:/狀態轉換state=ANSWER;break;default: ;DisplayTime();/實時刷新倒計時,/存在的問題:Keyscan()函數可能會占用一定時間,對數碼管動態掃描顯示有影響/解決方案:可以把Keyscan函數分開,只檢測key9,key10,key11三個按鍵,減少掃描時間KeyFree();/定時器搶答進程void ProcessAnswer(void)/KeyFree();/按鍵釋放,在搶答開始之前,確保所有按鍵都以釋放,否則,發出報警聲flag=0;/結束標識復位OpenInter();SoundStart();while(flag=0)DisplayTime();switch(Key

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論