單片機課程八路搶答器設計含源程序_第1頁
單片機課程八路搶答器設計含源程序_第2頁
單片機課程八路搶答器設計含源程序_第3頁
單片機課程八路搶答器設計含源程序_第4頁
單片機課程八路搶答器設計含源程序_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢工程大學 課程設計報告設計題目:基于單片機八路搶答器設計系(院): 電氣院 專 業(yè): 測控技術與儀器 年級 (班): 09級測控02班 學 號: 0904010217 姓 名: 呂禹 指導教師 : 郝毫毫 2012年 12月 12日目 錄目錄2摘要3一、設計任務與要求4二、方案設計與論證4三、硬件電路設計53.1搶答器的電路框圖53.2 單元電路設63.3外部震蕩電路63.4報警電路設計7四、軟件設計74.1系統(tǒng)主程序設計74.2主程序清單8五、仿真過程與仿真結果115.1用到了keil軟件仿真115.2 Proteus仿真115.3用DXP連接原理115.4用DXP連接PCB圖12六、安

2、裝與調試126.1制作PCB電路板流程126.2器件選型方案的詳細清單126.3調試12七、結論與心得14八、參考文獻15摘 要搶答器作為一種工具,已廣泛應用于各種智力和知識競賽場合。但搶答器的使用頻率較低,且有的要么制作復雜,要么可靠性低。作為一個單位,如果專門購一臺搶答器雖然在經濟上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時性就會影響活動的開展,因此設計了本搶答器。本設計是以八路搶答為基本理念??紤]到依需設定限時回答的功能,利用AT89C51單片機及外圍接口實現(xiàn)的搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結合起來

3、,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間。用開關做鍵盤輸出,揚聲器發(fā)生提示。同時系統(tǒng)能夠實現(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可在1-99s設定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒記時顯示,滿時后系統(tǒng)計時自動復位及主控強制復位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。一、 設計任務與要求1.搶答器同時供8名選手或8個代表隊比賽,分別用8個按鈕S0 S5表示。2.設置一個系統(tǒng)清除和搶答控制開關S,該開關由主持人控制。3.搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應的編

4、號,并在LED數(shù)碼管上顯示,同時揚聲器發(fā)出報警聲響提示。選手搶答實行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。4.搶答器具有定時搶答功能,且一次搶答的時間由主持人設定(如20秒)。當主持人啟動"開始"鍵后,定時器進行減計時,同時揚聲器發(fā)出短暫的聲響,聲響持續(xù)的時間0.5秒左右。5.參賽選手在設定的時間內進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。6.如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00 。二、方案設計與論證方案一:系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機

5、械開關按鈕作為控制開關,完成搶答輸入信號的觸發(fā)。該方案的特點是中小規(guī)模集成電路應用技術成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由于系統(tǒng)功能要求較高,所以電路連接集成電路相對較多,而且過于復雜,并且制作過程工序比較煩瑣,使用不太方便。 方案二:該系統(tǒng)采用51系列單片機AT89C51作為控制核心,該系統(tǒng)可以完成運算控制、信號識別以及顯示功能的實現(xiàn)。由于用了單片機,使其技術比較成熟,應用起來方便、簡單并且單片機周圍的輔助電路也比較少,便于控制和實現(xiàn)。整個系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進行功能的擴張和更改。MCS-51單片機特點如下: <1>可靠性好:單片機按照工業(yè)

6、控制要求設計,抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫在ROM里,許多信號通道都在同一芯片,因此可靠性高,易擴充。<2>單片機有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴充為各種規(guī)模的微電腦系統(tǒng)。 <3> 控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。方案比較及其選用依據(jù),顯然方案二比方案一簡單的多,不但從性能上優(yōu)于方案一,而且在使用上及其功能的實現(xiàn)上都較方案一簡潔,并且由于單片機具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外80C51單片機采用12MHz的晶振,提高了信號的測量精度

7、,并且使該系統(tǒng)可以通過軟件改進來擴張功能。而方案一采用了中小規(guī)模集成電路,有其復雜的電路性能,從而可能會使信號的輸入輸出產生延時及不必要的誤差。依此依據(jù)選擇方案二比較適合。其原理框圖如下:搶答按扭優(yōu)先編碼電路鎖存器譯碼電路譯碼顯示主持人控制開關控制電路報警電路秒脈沖產生電路定時電路譯碼電路顯示電路三、硬件電路設計3.1 搶答器的電路框圖     如圖11、1所示為電路框圖。其工作原理為:接通電源后,主持人將開關撥到“清除”狀態(tài),搶答器處于禁止狀態(tài),編號顯示器滅燈,定時器顯示設定時間;主持人將開關置,“開始”狀態(tài),宣布“開始”搶答器工作。定時器倒計時,揚聲

8、器給出聲響提示。選手在定時時間內搶答時,搶答器完成:優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次操作"開始、停止"狀態(tài)開圖1 搶答器電路的接口電路原理圖如圖1所示為電路圖。其工作原理為:接通電源后,主持人將開關撥到“清除”狀態(tài),搶答器處于禁止狀態(tài),編號顯示器滅燈,定時器顯示設定時間;主持人將開關置,“開始”狀態(tài),宣布“開始”搶答器工作。定時器倒計時,揚聲器給出聲響提示。選手在定時時間內搶答時,搶答器完成:優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當一輪搶答之后,定時器停止、禁止二次搶答、

9、定時器顯示剩余時間。如果再次搶答必須由主持人再次操作“開始、停止”狀態(tài)開關。3.2 單元電路設計(1)搶答器電路    參考電路如圖11.2所示。該電路完成兩個功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號,同時譯碼顯示電路顯示編號;二是禁止其他選手按鍵操作無效。如有再次搶答需由主持人將S開關重新置,“清除”然后再進行下一次搶答。(2)時序控制電路設計時序控制電路是搶答器設計的關鍵,它要完成以下功能:a.主持人將控制開關撥到"開始"位置時,揚聲器發(fā)聲,搶答電路和定時電路進人正常搶答工作狀態(tài)。 b.當參賽選手按動搶答鍵時,揚聲器

10、發(fā)聲,搶答電路和定時電路停止工作。(3)復位電路的設計外部中斷和內部中斷并存,單片機硬件復位端,只要持續(xù)4個機器周期的高電平即可實現(xiàn)復位,硬件復位后的各狀態(tài)可知寄存器以及存儲器的值都恢復到了初始值,因為本設計中功能中有倒計時時間的記憶功能,所以不能對單片機進行硬件復位,只能用軟件復位,軟件復位實際上就是當程序執(zhí)行完之后,將程序通過一條跳轉指令讓它完成復位。復位電路如下圖示:3.3 外部震蕩電路外部震蕩電路單片機必須在AT89C51的驅動下才能工作,在單片機內部有一個時鐘震蕩電路,只需要外接一個振蕩器就能產生一定的時鐘信號送到單片機內部的各個單元,外部震蕩電路如下圖。3.4報警電路設計報警電路用

11、于報警,當遇到報警信號時,發(fā)出警報。一般喇叭是一種電感性圖11.4報警電路圖。8951驅動喇叭的信號為各種頻率的脈沖。因此,最簡單的喇叭驅動方式就是利用達林頓晶體管,或者以兩個常用的小晶體管連接成達林頓架勢。在右圖中電阻R為限流電阻,在此利用晶體管的高電流增益,以達到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個10K的上拉電阻。選手在設定的時間內搶答時,實現(xiàn):優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次*作"清除"和"開始"狀態(tài)開關。圖面是數(shù)字搶

12、答器的報警電路圖。其中555構成多諧振蕩器,振蕩頻率fo143(RI2R2)C,其輸出信號經三極管推動揚聲器。PR為控制信號,當PR為高電平時,多諧振蕩器工作,反之,電路停振。四、軟件設計4.1系統(tǒng)主程序設計為了能夠達到搶答的公平、公正、合理,應該在主持人發(fā)布搶答命令之前必須先設定搶答的時間,因而在編開始搶答前的程序得先編寫設定時間的程序,當時間設好了之后,主持人發(fā)布搶答命令按下P1.7按鍵,程序開始打開定時中斷開始倒計時,然后調用鍵盤掃描子程序,編寫鍵盤掃描程序。當在掃描到有人按下了答題鍵,馬上關閉T0、調用顯示程序、封鎖鍵盤。(1)主程序流程圖主程序設置搶答時間和回答問題時間定時器及并行口

13、初始化將時間計數(shù)器及啟動標志值1開中斷采并行口數(shù)據(jù)為0嗎?啟動標志=1嗎?判斷搶答組號將搶答組發(fā)光二極管點亮判斷哪一組為搶答組將搶答組號送顯示搶答時間到了嗎?輸出響鈴信號提示超時繼續(xù)搶答比賽嗎?系統(tǒng)返回NYYYNYN4.2主程序清單#include <reg52.h>/*-宏定義-*/#define uint unsigned int#define uchar unsigned char/*-共陰極數(shù)碼管編碼表 0 - f顯示-*/unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0

14、x77,0x7c,0x39,0x5e,0x79,0x71;/*-變量定義-*/sbit start_stop = P36;sbit reset = P37;sbit key1 = P10;sbit key2 = P11;sbit key3 = P12;sbit key4 = P13;sbit key5 = P14;sbit key6 = P15;sbit key7 = P16;sbit key8 = P17;sbit state = P34;sbit kaishi=P31;bit start_stop_flag = 0;bit key1_flag = 0;bit key2_flag = 0;b

15、it key3_flag = 0;bit key4_flag = 0;bit key5_flag = 0;bit key6_flag = 0;bit key7_flag = 0;bit key8_flag = 0;bit reset_flag = 0;bit action = 0;bit kaishi_flag=0;uchar second = 20;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;/*-延時函數(shù)-*/void delay(uint z)uint x,y;for(x=z;x>0;x-)for

16、(y=110;y>0;y-);/*-數(shù)碼管顯示驅動函數(shù)-*/void display(uchar number,uchar second)uchar second_first,second_second;second_first = second / 10;second_second = second % 10;P2 = 0xfe;P0 = tablenumber;delay(2);P2 = 0xfd;P0 = 0x40;delay(2);P2 = 0xfb;P0 = tablesecond_first;delay(2);P2 = 0xf7;P0 = tablesecond_second

17、;delay(2);/*-開始鍵掃描函數(shù)-*/void start_stop_keyscan()if(start_stop = 0)delay(8);if(start_stop = 0)&&(!start_stop_flag)start_stop_flag = 1;action = 1;TR0 = 1;state = 0;elsestart_stop_flag = 0;/*-八位搶答鍵掃描函數(shù)-*/uchar key_scan8()if(key1 = 0)delay(8);if(key1 = 0)&&(!key1_flag)key1_flag = 1;numbe

18、r = 1;number_display = number;elsekey1_flag = 0;number = 0;if(key2 = 0)delay(8);if(key2 = 0)&&(!key2_flag)key2_flag = 1;number = 2;number_display = number;elsekey2_flag = 0;number = 0;if(key3 = 0)delay(8);if(key3 = 0)&&(!key3_flag)key3_flag = 1;number = 3;number_display = number;else

19、key3_flag = 0;number = 0;if(key4 = 0)delay(8);if(key4 = 0)&&(!key4_flag)key4_flag = 1;number = 4;number_display = number;elsekey4_flag = 0;number = 0;if(key5 = 0)delay(8);if(key5 = 0)&&(!key5_flag)key5_flag = 1;number = 5;number_display = number;elsekey5_flag = 0;number = 0;if(key6 =

20、 0)delay(8);if(key6 = 0)&&(!key6_flag)key6_flag = 1;number = 6;number_display = number;elsekey6_flag = 0;number = 0;if(key7 = 0)delay(8);if(key7 = 0)&&(!key7_flag)key7_flag = 1;number = 7;number_display = number;elsekey7_flag = 0;number = 0;if(key8 = 0)delay(8);if(key8 = 0)&&

21、(!key8_flag)key8_flag = 1;number = 8;number_display = number;elsekey8_flag = 0;number = 0;if(number_display != 0)return 1;elsereturn 0;/*-復位鍵掃描函數(shù)-*/void reset_keyscan()if(reset = 0)delay(8);if(reset = 0)&&(!reset_flag)second=20;reset_flag = 1;number_display = 0;state = 1;elsereset_flag = 0;

22、/* 開機函數(shù)*/ void kaishi_keyscan()if(kaishi = 0)delay(8);if(kaishi = 0)&&(!kaishi_flag)kaishi_flag = 1;number_display = 0;state = 1;elsekaishi_flag = 0;/*-主函數(shù)-*/void main()TMOD=0x01; TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=0;while(1)while(kaishi = 0)&&(!kaishi_flag)start_stop_keyscan();reset_k

23、eyscan();while(action)while(!key_scan8()display(number_display,second);if(second = 0)second = 20;break;TR0 = 0;second = 0;display(number_display,second);action = 0;break;display(number_display,second);/*-中斷服務函數(shù)-*/void timer0() interrupt 1TH0=0x3c;TL0=0xb0;timer0_count +;if(timer0_count = 20)timer0_c

24、ount = 0;second -;if(second = 0)TR0 = 0;number_display = 0;state = 1;action = 0;五、仿真過程與仿真結果5.1 用到了keil軟件仿真,界面如下:5.2 Proteus仿真6.3調試:(1) 開機 按電源開關,顯示屏左邊的"搶答"指示燈亮,數(shù)碼管顯示。(2) 設定"搶答"倒計時時間(3) 設定"答題"倒計時時間(4) 測試各組搶答按鍵試按一下各組的搶答按鈕,應立即顯示該組的組別數(shù)字,同時機內喇叭發(fā)出"叮咚"的提示音,按"取消&q

25、uot;鍵,返回"0"閃爍狀態(tài)。 (5) 啟動搶答倒計時,開始搶答"FFF"狀態(tài)下,當主持人宣布搶答開始時,馬上按一下"搶答"鍵,屏幕顯示所設定的搶答倒計時時間并開始倒計時,提示倒計時時間馬上臨近結束。倒計時到0以后,儀器發(fā)出"叮咚"的結束提示音,同時顯示屏返回"FFF"待命狀態(tài)。在"搶答"倒計時中,如果有參賽組搶答,儀器屏幕立即顯示該組的組別號,同時發(fā)出"叮咚"的搶答成功提示音。需要返回"FFF"待命狀態(tài),按"取消"

26、;鍵即可。 (6) 啟動答題倒計時"FFF"狀態(tài)下,或有參賽組搶答成功后,需要開始答題的計時時,按"答題計時"鍵,屏幕顯示所設定的答題倒計時時間并開始倒計時,提示倒計時時間馬上臨近結束。倒計時到0以后,儀器發(fā)出"丁冬"的結束提示音,同時顯示屏返回"FFF"待命狀態(tài)。 (7) 提前取消倒計時無論是"搶答"還是"答題"的倒計時時間,需要提前退出,只要按一下"取消"鍵,即可返回到"FFF"待命狀態(tài)。 (8) 違規(guī)搶答當主持人讀題過程中,而未宣布搶答開始時按下?lián)尨鸢粹o。主顯示屏將顯示該違規(guī)組號,及發(fā)出提示音。及該組的紅燈亮起。通過調試,結果完全符合搶答器設計要求。七、結論與心得這次課程設計老師給我們安排了一個星期的時間,可以說是比較充裕的。雖然如此,我還是很用心的做設計,利用了周六周日兩天的時間在宿舍思考本次的課程設計,拿到題目,感覺太繁雜了,不知怎么下手,雖然這些知識以前都有接觸過,但也只是分部分來接觸,而這次的設計是要對前面幾次實驗的一個綜合,真的很難。也翻閱了一些資料,并自己事先編寫好了程序,到了周一去到機房時候,把自己寫的程序燒進去芯片里面,發(fā)現(xiàn)不行,那些數(shù)字閃

溫馨提示

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

評論

0/150

提交評論