基于單片機的搶答器設(shè)計報告_第1頁
基于單片機的搶答器設(shè)計報告_第2頁
基于單片機的搶答器設(shè)計報告_第3頁
基于單片機的搶答器設(shè)計報告_第4頁
基于單片機的搶答器設(shè)計報告_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 湖南商學(xué)院單片機應(yīng)用系統(tǒng)課程設(shè)計(實習(xí))報告題目 基于單片機的搶答器設(shè)計 姓 名:胡飄學(xué) 號:100910122專 業(yè):電子信息工程班 級:電信1004班指導(dǎo)教師:肖婧職 稱:實驗師計算機與信息工程學(xué)院2013年6月課程設(shè)計(實習(xí))評審表姓 名胡飄學(xué) 院計信學(xué)院學(xué) 號100910122專業(yè)班級電信1004班題 目基于單片機的搶答器設(shè)計評審意見評審成績指導(dǎo)教師簽名職稱評審時間 年 月 日課程設(shè)計(實習(xí))作品驗收表題目基于單片機的搶答器設(shè)計參與人員姓 名胡飄班 級電信1004班學(xué) 號100910122設(shè)計任務(wù)與要求: 具有3路搶答輸入(由獨立按鍵實現(xiàn)),時間分辨率小于100ms。顯示搶答剩余時間

2、,初始為10秒。搶答成功,蜂鳴器響,同時顯示搶答成功的號碼。作品完成情況: 上電顯示10s,按開始鍵開始倒計時,若有按鍵顯示時間和搶答者號碼,同時蜂鳴器響,若倒計時為0,蜂鳴器響,按清除鍵則復(fù)位到10s。驗收情況: 驗收教師簽名:_ 年 月 日注:1. 除“驗收情況”欄外,其余各欄均由學(xué)生在作品驗收前填寫。2. “驗收情況”欄由驗收小組按實際驗收的情況如實填寫。目 錄1 設(shè)計任務(wù)與要求1 2 系統(tǒng)功能描述13 系統(tǒng)總體設(shè)計14 系統(tǒng)詳細設(shè)計34.1 主要電路設(shè)計34.1.1 輸入模塊設(shè)計34.1.2 單片機模塊44.1.3 顯示模塊44.1.4 聲音模塊54.2 軟件設(shè)計64.2.1 主程序設(shè)

3、計64.2.2 定時器設(shè)計75 系統(tǒng)實現(xiàn)與測試75.1 Proteus軟件75.2 安裝和調(diào)試過程85.2.1 軟硬件調(diào)試85.2.2 硬件安裝86 課程設(shè)計總結(jié)106.1 心得體會10 6.2. 實踐總結(jié)10參考文獻11附錄11基于單片機的搶答器設(shè)計1 設(shè)計任務(wù)與要求具有3路搶答輸入(由獨立按鍵實現(xiàn)),時間分辨率小于100ms。顯示搶答剩余時間,初始為10秒。搶答成功,蜂鳴器響,同時顯示搶答成功的號碼。2 系統(tǒng)功能描述(1)具有3路搶答輸入(由獨立按鍵實現(xiàn)),時間分辨率小于100ms。(2)主持人按“開始”鍵,顯示搶答剩余時間,初始為10秒。(3)搶答成功,蜂鳴器響,同時顯示搶答成功的號碼。

4、(4)主持人按“清除鍵”鍵,復(fù)位為初始10秒,進入準備狀態(tài)。(5)若十秒倒計時時間到,則蜂鳴器響。3 系統(tǒng)總體設(shè)計搶答輸入和控制輸入共同控制單片機輸出顯示和蜂鳴器響,輸出鎖存控制輸入的優(yōu)先性。各模塊如下:(1)輸入模塊:由獨立按鍵實現(xiàn)搶答輸入和“開始”“清除”控制輸入。(2)單片機控制模塊:采用AT89S51芯片控制輸出。(3)輸出鎖存模塊:采用74HC573芯片鎖存數(shù)據(jù)。(4)顯示輸出模塊:由四位共陽數(shù)碼管輸出顯示倒計時和搶答者號碼。(5)聲音輸出模塊:由蜂鳴器的工作來控制聲音。原理方框圖如圖1所示。顯示輸出聲音輸出輸出鎖存搶答輸入模塊控制輸入模塊單片機模塊圖1 原理方框圖整體電路圖如圖2所

5、示。圖2 基于單片機的搶答器系統(tǒng)整體電路圖4 系統(tǒng)詳細設(shè)計4.1 主要電路設(shè)計4.1.1 輸入模塊設(shè)計(1)搶答鍵輸入模塊搶答鍵輸入電路圖如圖3所示。圖3 搶答鍵輸入電路圖由3個獨立按鍵表示1號,2號,3號搶答者,一端接地一端分別接接單片機的P1.0,P1.1,P1.2,如果按下,則相應(yīng)I/O口變?yōu)榈碗娖?,從而控制單片機P1口。(2)“開始”“清除”控制鍵輸入模塊 “開始”“清除”控制鍵輸入電路圖如圖4所示圖4 “開始”“清除”控制鍵輸入電路圖由2個獨立按鍵控制“開始”和“清除”,一端接地一端分別接接單片機的P3.6,P3.7,如果按下,則相應(yīng)I/O口變?yōu)榈碗娖?,從而控制單片機P1口。4.1.

6、2 單片機模塊單片機主要由程序設(shè)計和輸入模塊信號控制,用于對顯示、聲音等模塊進行控制。單片機控制輸出電路圖如圖5所示。接蜂鳴器接排阻和74HC753接數(shù)碼管位選端圖5 單片機控制輸出電路圖P0口連接有一個排阻,用作P0口的上拉電阻,保證P0口沒有數(shù)據(jù)輸出時候處于高電平狀態(tài)。還接在74HC753芯片的D端,作為它的輸入,鎖存輸出到數(shù)碼管。P2口低四位接數(shù)碼管未選端,P3.4接蜂鳴器。4.1.3 顯示模塊顯示模塊主要是顯示搶答倒計時的時間,搶答者號碼。數(shù)碼管顯示方法包括兩種:一種是靜態(tài)顯示,一種是動態(tài)顯示。其中靜態(tài)顯示的特點是顯示穩(wěn)定不閃爍,程序編寫簡單,但占用端口資源多;動態(tài)顯示的特點是:顯示穩(wěn)

7、定性沒靜態(tài)好,程序編寫復(fù)雜,但是相對靜態(tài)顯示而言占用端口資源少。在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法。4位七段數(shù)碼管顯示電路如圖6所示。接74HC753即P0口接AT89S51的P2端口低四位圖6 4位七段數(shù)碼管顯示電路圖上圖中數(shù)碼管采用的是4位一體七段共陽數(shù)碼管,其中AG段分別接到單片機的P0口,由單片機輸出的P0口數(shù)據(jù)來決定段碼值,位選碼COM1, COM2,COM3,COM4分別接到單片機的P2.0,P2.1,P2.2 ,P2.3,由單片機來決定當(dāng)前該顯示的是哪一位。通過查表法,將其在數(shù)碼管上顯示出來,其中P0口為字型碼輸入端,P2口低4位為字選段輸入段。在這里我們通過查表將字型碼

8、送給7段數(shù)碼管顯示的數(shù)字。4.1.4 聲音模塊聲音模塊主要是單片機控制蜂鳴器發(fā)聲。選取壓電式無源蜂鳴器,聲音的頻譜范圍約在幾十到幾千赫茲,編寫程序控制單片機P3.4口的“高”“低”電平轉(zhuǎn)換頻率,產(chǎn)生一定頻率的巨型波,接上蜂鳴器就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使蜂鳴器發(fā)出不同的聲音。單片機控制蜂鳴器電路圖如圖7所示。圖7 單片機控制蜂鳴器電路圖單片機通過內(nèi)部定時器的操作實現(xiàn)交替變換的波形輸出驅(qū)動揚聲器發(fā)聲。4.2 軟件設(shè)計4.2.1 主程序設(shè)計一上電數(shù)碼管顯示100,表示初始時間為10s,0表示沒有搶答,先掃描“開始”“清除

9、”鍵,判斷“開始”鍵是否按下,若按下,則開始倒計時,并掃描搶答鍵,若有搶答鍵按下,則顯示搶答者號碼和搶答的時間,判斷倒計時是否為0,若是則蜂鳴器響。程序流程圖如圖8所示。開始掃描開始鍵和清除鍵蜂鳴器響,復(fù)位開始鍵按下?Y顯示倒計時,掃描搶答鍵倒計時為0嗎?YNN有搶答鍵按下嗎Y顯示搶答者號碼,蜂鳴器響N清除鍵按下?Y復(fù)位結(jié)束圖8 程序流程圖4.2.2 定時器設(shè)計采用定時器/計數(shù)器T0的方式1定時,定時時間為50ms,對應(yīng)的十進制數(shù)的初始值為15536,因使用的時鐘為12MHz,所以定時的時間為1us*(65536-15536)=1us*50000=50ms。要想定時1s,需要20次中斷,因此程

10、序中定義了中斷次數(shù)單元count,來對中斷次數(shù)進行計數(shù)。要使最小分辨率為50ms,在定時器計時一次即50ms時,對鍵盤進行一次掃描實現(xiàn)。因為采用74HC753芯片,因此程序變得簡單,只需將秒單元進行“second / 10”運算,即可得到秒的十位的BCD碼,秒的個位BCD碼只需取余數(shù)“second % 10”運算就可得到,并都送P0口經(jīng)鎖存器利用動態(tài)方式顯示。5 系統(tǒng)實現(xiàn)與測試5.1 Proteus 軟件Proteus軟件是由英國Labcenter Electronics公司于1989年推出的EDA工具軟件,Proteus軟件不僅具有原理布圖,PCB自動制版或人工布線及互動電路仿真的功能,針對

11、微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實現(xiàn)軟件源碼級的實時調(diào)試,如有顯示及輸出, 還能看到運行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器,邏輯分析儀等,為單片機系統(tǒng)的虛擬仿真提供了功能強大的軟硬件調(diào)試手段。Proteus軟件的特點:(1)除了既可以仿真模擬電路又可仿真數(shù)字電路以及數(shù)字、模擬混合電路外,其獨特是能夠仿真各種單片機及嵌入式處理器。(2)具有各種仿真儀器儀表工具,如示波器、邏輯分析儀、各種信號發(fā)生器、計數(shù)器、電壓源、電壓表、電流表、虛擬終端等,同一種儀器儀表可在同一電路中隨意調(diào)動。(3)可以進行軟、硬件結(jié)合的仿真系統(tǒng),且仿真是交互的、可視化的。5.2 安裝和

12、調(diào)試過程5.2.1 軟件調(diào)試利用Keil uVision4軟件進行程序編寫,編譯,調(diào)試,生成.hex文件,利用Proteus進行電路原理圖描繪,然后把.hex文件載入AT89S51芯片中,再仿真,通過功能對照,來檢查修改程序,一步步使仿真與實現(xiàn)功能相近。一開始蜂鳴器怎么的都不響,通過查資料請教別人,最后發(fā)現(xiàn)是因為蜂鳴器的一次高低電平變換的程序沒有循環(huán),所以沒有維持一定時間讓它工作,通過在蜂鳴器的子程序中加入一個100次的循環(huán),并是高低電平之間延時1ms發(fā)現(xiàn)蜂鳴器的工作是最合理的。后來又發(fā)現(xiàn)按下?lián)尨疰I,倒計時不停止,經(jīng)過很多次試驗之后,發(fā)現(xiàn)是應(yīng)該在判斷搶答鍵是否按下的肯定條件下是定時器的使能標(biāo)示

13、位置0。當(dāng)主持人按下開始鍵,2號搶答者按下?lián)尨疰I時,Proteus仿真運行圖如圖所示圖9 Proteus仿真運行圖5.2.2 硬件安裝由于經(jīng)費的限制,元件數(shù)量也不是特別多,所以準備自己焊板子,晶振復(fù)位都準備自己焊。精心策劃每個元件的安裝位置,和可以節(jié)省的引線,我把每個元件多余的引腳部分當(dāng)做線路來用,以使電路美觀一點。完工之后運行不正常,分析可能是各個引腳和線路之間不穩(wěn)定的原因,特別是所以電源和地都是通過引一根線出來接的電源孔懸在空中接的電源,覺得還是不可靠,于是最后還是決定用最小系統(tǒng)來作為硬件的核心,以避免不必要的影響。后來又最小系統(tǒng),杜邦線和排針再一次焊好了電路,一上電顯示-1,8,8,0,

14、蜂鳴器響的時間和仿真圖里蜂鳴器該響的時間一樣長,“開始”“搶答”“清除”鍵都不作用。暫時連接數(shù)碼管的各線我都用萬用表測試過了,是連通的,我想可能會是以下的原因:(1)可能是排阻的問題,但是如果是的話,數(shù)碼管應(yīng)該不會亮。(2)可能是數(shù)碼管的問題,但是也已經(jīng)測試過,是正確的對應(yīng)的各引腳,而且可以顯示。(3)調(diào)用蜂鳴器響的程序放錯位置了,但是檢查了沒錯。經(jīng)過仔細檢查、測試、修改、調(diào)試之后,硬件電路圖如圖10所示。圖10 硬件電路圖6 課程設(shè)計總結(jié)6.1 心得體會此次課程設(shè)計,先從分析題目開始,從課本上找類似可能實現(xiàn)的功能塊,明確整體思路,大概畫出整體電路模塊,由于第一次接觸實際應(yīng)用設(shè)計,思維比較混亂

15、,很多功能覺得考慮的地方太多,很難。后來去圖書館查閱了兩天資料,找到類似的應(yīng)用系統(tǒng),仔細研究了一番,多了個沒接觸過的芯片,通過幾本書上的資料,拼湊修改之后還是仿真不了,也請教了一些老師,后來通過比較另外一種方案,覺得性價比和簡便程度更高,所以放棄了原有的方案,重新開始設(shè)計。經(jīng)過修改程序和仿真調(diào)試,顯示的部分是差不多按我所想實現(xiàn)了,但蜂鳴器要么不響,要么能聽到一丁點聲響,參考了別的同學(xué)蜂鳴器響的程序,還有在網(wǎng)上找了很多關(guān)于蜂鳴器的資料,又請教老師問題,最終終于把蜂鳴器的問題解決了。仿真出來后,焊接電路,中途發(fā)現(xiàn)焊反了,怕影響電路拆了又重焊,還是顯示不正常,一上電是一些不該有的數(shù)字,按開始鍵三個數(shù)

16、碼管都一起顯示倒計時,蜂鳴器一直響,一動電路又斷斷續(xù)續(xù),問過老師之后,決定還是用最小系統(tǒng)來作為硬件的核心,以避免不必要的影響。終于是又把電路板焊出來了,但是還是不如我所愿,顯示還是不正常,一上電蜂鳴器響的時間和仿真蜂鳴器該響時的時間一樣長,按開始鍵也沒有反應(yīng)。經(jīng)過同學(xué)幫助,檢驗了數(shù)碼管以及和單片機連接的地方,都沒有問題,按理來說一上電應(yīng)該和主程序一開始設(shè)定的功能一樣,只能再重新測好每一個電路線和元件。經(jīng)老師指導(dǎo),應(yīng)該在上電時,測每個腳應(yīng)該有的電壓,看元件輸出功能是否正確,再逐步確定每一個芯片和電路的是否有問題,然后修改調(diào)試。我只能想到是,仿真和實際電路對于程序下載可能存在一些區(qū)別,特別是數(shù)碼管

17、的位選和顯示段,還需不斷學(xué)習(xí),改進。6.2 實踐總結(jié)經(jīng)過這段時間天天起早貪黑的守著電腦旁調(diào)試,以及不斷查閱資料和請教別人的過程中,發(fā)現(xiàn)自己是多么的不懂,時間是過得很充實,幾乎忘了吃喝拉撒,每天做到凌晨一兩點,身心疲憊,天天睡覺夢到先是程序該怎么改,后來又硬件該怎么測試,夢里想出來很多修改并最終成功的方法??偠灾舜握n程設(shè)計讓我更加細心,認真地去做每一個部分,一步步的根據(jù)功能來測試電路,鎖定要修改的地方,學(xué)到的不僅是單片機的知識,還有很多對于我們這個專業(yè)來說必備的一些技能。參考文獻1.唐穎、程菊花等.單片機原理與應(yīng)用及C51程序設(shè)計M.北京大學(xué)出版社,2008年2.張毅剛、楊志明等.基于Pr

18、oteus的單片機課程的基礎(chǔ)實驗與課程設(shè)計M.人民郵電出版社,2012年3.宋戈、黃鶴松等.51單片機范例大全M.中國郵電出版社,2010年4.徐愛鈞、彭秀華等.單片機高級語言編程與uVision2應(yīng)用實踐M.電子工業(yè)出版社,2008年附錄源程序清單#include #define uint unsigned int #define uchar unsigned char unsigned char code table=0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e; /共陰極數(shù)

19、碼管編碼表 0 - f顯示sbit start= P36; / 變量定義sbit reset = P37; sbit key1 = P10; sbit key2 = P11; sbit key3 = P12;sbit buzzer = P34; bit start_flag = 0; bit key1_flag = 0; bit key2_flag = 0; bit key3_flag = 0;bit reset_flag = 0; bit action = 0; uchar second = 10; uchar count = 0; uchar number = 0; uchar numbe

20、r_display = 0;void delay(uint z) /延時函數(shù) uint x,y; for(x=z;x0;x-) for(y=100;y0;y-);void display(uchar number,uchar second) /數(shù)碼管顯示驅(qū)動函數(shù) uchar second_first,second_second; second_first = second / 10; second_second = second % 10; P2 = 0xfd; P0 = tablenumber; delay(2); P2 = 0xf7; P0 = 0x3f; delay(2); P2 = 0

21、xfb; P0 = tablesecond_first; delay(2); P2 = 0xfe; P0 = tablesecond_second; delay(2);void start_keyscan() /開始鍵掃描函數(shù) if(start = 0) delay(8); if(start = 0)&(!start_flag) start_flag = 1; action = 1; TR0 = 1; else start_flag = 0;uchar key_scan3() /3位搶答鍵掃描函數(shù) if(key1 = 0) delay(8); if(key1 = 0)&(!key1_flag)

22、 key1_flag = 1; number = 1; number_display = number; else key1_flag = 0; number = 0; if(key2 = 0) delay(8); if(key2 = 0)&(!key2_flag) key2_flag = 1; number = 2; number_display = number; else key2_flag = 0; number = 0; if(key3 = 0) delay(8); if(key3 = 0)&(!key3_flag) key3_flag = 1; number = 3; number_display = number;elsekey3_flag = 0;number = 0; if(number_display != 0)return 1;elsereturn 0;void reset_keyscan() / 復(fù)位鍵掃描函數(shù)if(reset = 0)delay(8);if(reset = 0)&(!reset_flag)reset_flag = 1;number_display = 0; second=10;elsereset_flag = 0;void beep() /蜂鳴

溫馨提示

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

評論

0/150

提交評論