課程設(shè)計報告
課程名稱:單片機課程設(shè)計
報告題目:8位競賽搶答器的設(shè)計 學(xué)生姓名: 所在學(xué)院:信息科學(xué)與工程學(xué)院 專業(yè)班級: 學(xué)生學(xué)號: 指導(dǎo)教師:
2013 年12月25日 課程設(shè)計任務(wù)書 報告題目 | | | | |
| |
| |
| | | | 設(shè)計一個數(shù)字式電容測量儀電路,要求如下: 以單片機為核心,設(shè)計一個8位競賽搶答器:同時供8名選手或8個代表隊比賽,分別用8個按鈕S0~S7表示。 設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,開關(guān)由主持人控制。 搶答器具有鎖存與顯示功能。即選手按按鈕,鎖存相應(yīng)的編號,并在優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。當主持人啟動“開始”鍵后,定時器進行減計時,同時揚聲器發(fā)出短暫的聲響,聲響持續(xù)的時間為0.5s左右。 參賽選手在設(shè)定的時間內(nèi)進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。 如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00 | | 第17周: 周一、周二:選題,明確任務(wù),指導(dǎo)教師對課題進行講解,資料檢索 周三:硬件設(shè)計,硬件仿真 周四、周五:軟件設(shè)計 第18周: 周一:綜合調(diào)試 周二、周三、周四:書寫課程設(shè)計報告 周五:答辯評分 | | 1.與設(shè)計內(nèi)容對應(yīng)的軟件程序 2.課程設(shè)計總結(jié)報告 |
|
|
|
|
|
|
|
|
摘要搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識競賽場合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個單位,如果專門購一臺搶答器雖然在經(jīng)濟上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時性就會影響活動的開展,因此設(shè)計了本搶答器。 本設(shè)計是以八路搶答為基本理念。考慮到依需設(shè)定限時回答的功能,利用AT89C52單片機及外圍接口實現(xiàn)的搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間。用開關(guān)做鍵盤輸出,揚聲器發(fā)生提示。同時系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時間和回答問題的時間可在1-30s設(shè)定;可以顯示是哪位選手有效搶答,正確按鍵后有5s的音樂提示(即揚聲器發(fā)出響聲);搶答時間和回答問題時間倒記時顯示,滿時后系統(tǒng)計時自動復(fù)位及主控強制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。
關(guān)鍵詞:89c52;電路;顯示;按鍵
目錄一、概述…………………………………………………………………………1 二、方案設(shè)計………………………………………………………………1 三、硬件電路設(shè)計…………………………………………………………2 1、搶答器的電路框圖…………………………………………………………2 2、單元電路 ………………………………………………………………………………3 2.1、搶答器電路………………………………………………………………………3 2.2、時序控制電路……………………………………………………………………3 2.3、復(fù)位電路…………………………………………………………………………3 3、時鐘震蕩電路………………………………………………………………3 4、報警電路…………………………………………………………………3 四、軟件設(shè)計………………………………………………………………4 1、系統(tǒng)主程序…………………………………………………………4 2、系統(tǒng)程序…………………………………………………………5 五、結(jié)論與心得………………………………………………………………………10 六、參考文獻……………………………………………………………………10
一、概述本實驗電路由搶答電路、譯碼顯示電路、主持人控制電路、定時電路、報警電路組成。通過復(fù)位按鍵FW,電路進入準備就緒狀態(tài)。將搶答時間設(shè)定在30S,然后按下開始鍵開始搶答。,在電路中“S0-S7”為8路搶答器的8個按鍵,當有鍵按下,程序鎖定信號,從P2口輸出搶答者號碼的七段碼值,送到數(shù)碼管顯示,并封鎖按鍵,保持剛才按鍵按下時刻的時間,禁止其他人按鍵的輸入,從而實現(xiàn)了搶答的功能。當設(shè)定的搶答時間結(jié)束,仍然沒有搶答鍵被按下,則產(chǎn)生已經(jīng)超時的報警信號,結(jié)束搶答。當要進行下一次的搶答時,首先按一下復(fù)位按鍵,電路復(fù)位。 該設(shè)計是以MCS51為基礎(chǔ),結(jié)合單片機匯編語言知識,設(shè)計而成的8位競賽搶答器。在偉福試驗箱上實現(xiàn)仿真。 主持人按下“開始搶答鍵”既單脈沖鍵后,喇叭響0.5秒給出提示信號,并立刻進入搶答倒計時(預(yù)設(shè)30秒搶答時間)此時,數(shù)碼顯示管上顯示倒計時時間:有選手搶答,停止計時,八段數(shù)碼顯示搶答時間和選手號;無選手搶答,倒計時30秒后,顯示00。然后選手等待主持人按下按鈕開始新一輪搶答。 注意: (1)由于設(shè)計的局限性,如果在無人搶答期間,30秒還未到,主持人不能按下重新下一輪搶答按鈕。 (2)由于試驗箱上按鈕數(shù)量有限,故選用開關(guān)代替按鈕,供8位選手搶答使用。鑒于開關(guān)與按鈕動作過程的差異,所以每次當選手搶答,撥下開關(guān)時必須將開關(guān)復(fù)位。 (3)當系統(tǒng)出現(xiàn)錯誤的時候,停止操作,重新編譯開始。
二、方案設(shè)計方案:該系統(tǒng)采用51系列單片機AT89C51作為控制核心,該系統(tǒng)可以完成運算控制、信號識別以及顯示功能的實現(xiàn)。由于用了單片機,使其技術(shù)比較成熟,應(yīng)用起來方便、簡單并且單片機周圍的輔助電路也比較少,便于控制和實現(xiàn)。整個系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進行功能的擴張和更改。MCS-51單片機特點如下:
<1>可靠性好:單片機按照工業(yè)控制要求設(shè)計,抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫在ROM里,許多信號通道都在同一芯片,因此可靠性高,易擴充。 <2>單片機有一般電腦所必須的器件。 <3> 控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。
三、硬件電路設(shè)計1、搶答器的電路框圖 如圖3.1.1所示為電路框圖。其工作原理為:接通電源后,主持人按下開關(guān)即為“開始”狀態(tài),宣布“開始”搶答器工作。編號顯示器滅燈,定時器顯示設(shè)定時間。定時器倒計時,揚聲器給出5s聲響提示。選手在定時時間內(nèi)搶答時,搶答器完成:優(yōu)先判斷、編號鎖存、編號顯示。當一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次操作"開始、停止"狀態(tài)按鍵。
圖3.1.1電路框圖 2、單元電路3.2.1、搶答器電路 該電路完成兩個功能:一是判斷出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號,同時譯碼顯示電路顯示編號;二是禁止其他選手按鍵操作無效。如有再次搶答需由主持人將S開關(guān)重新置,“清除”然后再進行下一次搶答。 3.2.2、時序控制電路 時序控制電路是搶答器設(shè)計的關(guān)鍵,它要完成以下功能:
a.主持人將控制開關(guān)撥到"開始"位置時,揚聲器發(fā)聲,搶答電路和定時電路進人正常搶答工作狀態(tài)。
b.當參賽選手按動搶答鍵時,揚聲器發(fā)聲,搶答電路和定時電路停止工作。 3.2.3、復(fù)位電路設(shè)計 外部中斷和內(nèi)部中斷并存,單片機硬件復(fù)位端,只要持續(xù)4個機器周期的高電平即可實現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲器的值都恢復(fù)到了初始值,因為本設(shè)計中功能中有倒計時時間的記憶功能,所以不能對單片機進行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位實際上就是當程序執(zhí)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完成復(fù)位。 3、時鐘震蕩電路時鐘震蕩電路單片機必須在89C52驅(qū)動下才能工作,在單片機內(nèi)部有一個時鐘震蕩電路,只需要外接一個振蕩器就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元。 4、報警電路報警電路用于報警,當遇到報警信號時,發(fā)出警報。8952動喇叭的信號為各種頻率的脈沖。因此,最簡單的喇叭驅(qū)動方式就是利用達林頓晶體管,或者以兩個常用的小晶體管連接成達林頓架勢。在右圖中電阻R為限流電阻,在此利用晶體管的高電流增益,以達到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個10K的上拉電阻。 file:///C:/Users/83570/AppData/Local/Temp/OICE_78C48033-D549-423C-91D1-C72951558F6E.0/msohtmlclip1/01/clip_image003.jpg 圖3硬件電路圖
四、軟件設(shè)計1、系統(tǒng)主程序為了能夠達到搶答的公平、公正、合理,應(yīng)該在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時間,因而在編開始搶答前的程序得先編寫設(shè)定時間的程序,當時間設(shè)好了之后,主持人發(fā)布搶答命令按下s1按鍵,程序開始打開定時中斷開始倒計時,然后調(diào)用鍵盤掃描子程序,編寫鍵盤掃描程序。當在掃描到有人按下了答題鍵,馬上關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤。 以單片機為核心,設(shè)計一個8位競賽搶答器:同時供8名選手或8個代表隊比賽,分別用8個按鈕S0~S7表示。 設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,開關(guān)由主持人控制。 搶答器具有鎖存與顯示功能。即選手按按鈕,鎖存相應(yīng)的編號,并在優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。當主持人啟動“開始”鍵后,定時器進行減計時,同時揚聲器發(fā)出短暫的聲響,聲響持續(xù)的時間為0.5s左右。 參賽選手在設(shè)定的時間內(nèi)進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。 如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00。
file:///C:/Users/83570/AppData/Local/Temp/OICE_78C48033-D549-423C-91D1-C72951558F6E.0/msohtmlclip1/01/clip_image004.gif 圖4.1主程序方框圖 2、系統(tǒng)程序#include<reg52.h> #defineuint unsigned int #defineuchar unsigned char sbits1=P3^0; sbitwe=P3^6; ucharh[]={0xe0,0xd0,0xb0,0x70}; uchar code table[] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; uchar num,count; uchara=0,c=0,t,bb=0,t1; voiddelay(uint z) { uint x,y; for(x=110;x>0;x--) for(y=z;y>0;y--); } voidwrite_sx() { P2=0xdf; P0=0x08; P2=0x00; P0=0xff; P2=0xff; P0=table[t1]; P2=0x00; P0=0x00; delay(5); P2=0xdf; P0=0x40; P2=0x00; P0=0xff; P2=0xff; P0=table[(t/10)%10]; P2=0x00; P0=0x00; delay(5); P2=0xdf; P0=0x80; P2=0x00; P0=0xff; P2=0xff; P0=table[t%10]; P2=0x00; P0=0x00; delay(5); }
voidinit() { P2=0xbf;P0=0xbf; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=0; ET0=1; TR0=1; }
voidkeyscan() { we=0; if(s1==0) { delay(5); if(s1==0) { while(!s1); EA=1; P2=0xbf;P0=0xff; t=30; a=1; t1=10; c=0; } } if(c==0) { P3=0xfd; num=P3; num=num&0xf0; if(num!=0xf0) { delay(5); if(num!=0xf0) { while(P3!=0xfd); c=1; EA=0; if(num==h[3]) t1=1; if(num==h[2]) t1=2; if(num==h[1]) t1=3; if(num==h[0]) t1=4; } }
P3=0xfb; num=P3; num=num&0xf0; if(num!=0xf0) { delay(5); if(num!=0xf0) { while(P3!=0xfb); c=1; EA=0; if(num==h[3]) t1=5; if(num==h[2]) t1=6; if(num==h[1]) t1=7; if(num==h[0]) t1=8; } } } } voidmain() { init(); while(1) { keyscan(); if((a==1)&&((t>0)&&(t<=30))) { write_sx(); } if(t==0) { EA=0; t=0; t1=10; } } } voidtimer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==10) { P2=0xbf;P0=0xbf; } if(count==20) { count=0; t--; } } 五、結(jié)論與心得通過這次課程設(shè)計,我深刻的認識到自己在許多方面的不足。通過編程,我學(xué)會了如何獨立的寫出程序,提高了自己的分析解決問題的能力,并且使自己所學(xué)的知識與實踐相結(jié)合,應(yīng)用到實踐當中。 在剛開始的時候無從下手,感覺有些茫然,但同學(xué)和老師給予我很大的幫助,每當設(shè)計過程中遇到困難時,老師都會細心的教導(dǎo)我,耐心的為我講解,同學(xué)也熱心幫助我,為我排憂解難,讓我深深的體會到了團隊的力量和重要性。 通過設(shè)計,我也學(xué)到了很多書本上沒有的知識。在設(shè)計當中遇到了很多問題,但通過查找資料,克服了這些問題,提高了自己在實際當中解決問題的能力。 在此我感謝學(xué)校給了我們的這次實踐機會。在這里為奔波勞累在這次設(shè)計中老師便是感謝,老師們不辭勞苦,不在乎身體的不適認真為我們講解并為我們知道實際操作過程中的問題。讓我們一步一步有序完成此次課程設(shè)計。在這里對我們的廖老師、曹老師說聲謝謝,謝謝你們,你們辛苦了!也祝你們身體健康工作順利 六、參考文獻[1] 張毅剛.《單片機原理及應(yīng)用》.高等教育出版社,2009 [2] 譚浩強.《C程序設(shè)計教程》.清華大學(xué)出版社 [3] 周興華.《單片機C程序設(shè)計》.北京航空航天大學(xué)出版社 教師評語及設(shè)計成績 | |
課程設(shè)計成績: 指導(dǎo)教師:(簽名) 日期:年月日 |
|