搶答系統(tǒng)設(shè)計_第1頁
搶答系統(tǒng)設(shè)計_第2頁
搶答系統(tǒng)設(shè)計_第3頁
搶答系統(tǒng)設(shè)計_第4頁
搶答系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及接口課程設(shè)計報告題 目: 搶答系統(tǒng)設(shè)計 專業(yè)名稱: 電子信息工程 班 級: 學(xué) 號: 姓 名: 2014年 1月?lián)尨鹣到y(tǒng)設(shè)計 * (信息工程學(xué)院) 摘要:本文介紹基于單片機的6人搶答器設(shè)計,采用AT89C51單片機,用中斷方式,獨立式鍵盤掃描,哪個按鍵先按下,對應(yīng)的數(shù)碼管顯示該號碼,并且閃爍5次,蜂鳴器發(fā)出警報,之后所有數(shù)碼管亮該號碼,經(jīng)過調(diào)試使得系統(tǒng)達到預(yù)期目標(biāo)。該設(shè)計的不足之處就是按鍵不夠靈敏,優(yōu)點是硬件電路簡單,功能齊全,操作方便。 關(guān)鍵詞:單片機;搶答器;中斷1 設(shè)計內(nèi)容1.1 設(shè)計目標(biāo)本設(shè)計主要是在proteus+keil軟件仿真軟件設(shè)計的一種基于51系列單片機的一種六位

2、的搶答器。六路搶答器有六個搶答按鈕,分別為按鍵K1、K2、K3、K4、K5、K6,一個主持人控制的復(fù)位按鈕K0。在無人搶答時,6只數(shù)碼管輪流循環(huán)顯示16?;疽螅褐谱饕粋€6人搶答器,以開關(guān)中的某個開關(guān)的按下(閉合)作為搶答按鍵。無人搶答時,6只數(shù)碼管輪流循環(huán)顯示16(跑馬),誰先搶答,數(shù)碼管停止跑馬,6個數(shù)碼管同時亮誰的編號,其后再有人按鍵,系統(tǒng)不予響應(yīng),直到復(fù)位鍵按下,開始下一輪搶答。擴展部分:誰先按下,對應(yīng)的數(shù)碼管亮5次搶答人的編號,并發(fā)出聲音提示。1.2 設(shè)計環(huán)境Win7 Keil uVison4 Proteus7.8 普中科技單片機開發(fā)試驗儀2.22 方案論證2.1 按鍵選擇方案1:

3、用獨立的外接按鍵 方案2:用矩陣鍵盤鍵盤是單片機系統(tǒng)中通用的輸入設(shè)備,用于向系統(tǒng)輸入數(shù)據(jù)或控制信息。常用的鍵盤有兩種,分別是獨立鍵盤和矩陣式鍵盤。矩陣式鍵盤相對其更加靈敏,并且可擴展更多按鍵,適用于按鍵數(shù)量較多的場合。獨立式鍵盤接口電路,它的硬件電路和軟件編程都比較簡單,但每個按鍵必須占一根I/O口線,在按鍵個數(shù)較多時,I/O口線資源浪費較大, 故只在按鍵數(shù)量不多時采用該電路。本設(shè)計所需要的搶答鍵只要6個,也不算多,雖然矩陣式鍵盤有其較高的靈敏性,但從簡單編程的角度出發(fā),最終還是選擇獨立式鍵盤。2.2 搶答器顯示模塊方案一:采用液晶屏顯示組別號碼,LCD具有低功耗,畫面效果好,分辨率高等特點,

4、但由于只需顯示組別數(shù)字,信息亮較少,且由于液晶是以點陣的模式顯示各符號,編程工作量大,成本高方案二:使用數(shù)碼管顯示,數(shù)碼管具有耐老化,防曬等特點,對外界環(huán)境要求低,易于維護,同時精確度高,操作簡單,采用BCD編碼顯示數(shù)字,程序編譯容易,價格便宜等特點,廣泛應(yīng)用于多數(shù)場合中。本設(shè)計只需顯示組別,顯示簡單,通過論證,采用方案二。數(shù)碼管的顯示可分為兩種:動態(tài)顯示和靜態(tài)顯示。靜態(tài)顯示的段選和位選均單獨連接,所以占用的I/O口較多,本設(shè)計由于用到較多的數(shù)碼管,采用靜態(tài)顯示方式,將所有LED的段選線并聯(lián)在一起,由一個八位IO口控制,而位選線分別由相應(yīng)的IO口線控制。要想每位顯示不同的字符,必須采用動態(tài)掃描

5、顯示方式。即在每一瞬間只使某一位顯示相應(yīng)字符。在此瞬間,位選控制IO口在該顯示位送入選通電平(共陰極送低電平、共陽極送高電平)以保證該位顯示相應(yīng)字符,段選控制IO口輸出相應(yīng)字符段選碼。如此輪流,使每位顯示該位應(yīng)顯示字符,并保持延時一段時間,以造成視覺暫留效果。不斷循環(huán)送出相應(yīng)的段選碼、位選碼,就可以獲得視覺穩(wěn)定的顯示狀態(tài)。由人眼的視覺特性,每一位LED在一秒鐘內(nèi)點亮不少于30次,其效果和一直點亮相差不多。本設(shè)計采用共陰型數(shù)碼管,引腳圖2-2所示。 圖2-2 數(shù)碼管引腳2.3 蜂鳴器模塊蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計算機、打印機、復(fù)印機、報警器、汽車電子設(shè)備、

6、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O 口是無法直接驅(qū)動的,所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了。如圖2-3所示。 圖2-3 蜂鳴器驅(qū)動模塊2.4 中斷1)、MCS51系列中不同型號單片機的中斷源數(shù)量是不同的(511個),最典型的8051單片機有5個中斷源(外部中斷0、1,內(nèi)部定時器中斷0、1,串口中斷),具有兩個中斷優(yōu)先級。與中斷系統(tǒng)有關(guān)的特殊功能寄存器有中斷允許寄存器IE、中斷優(yōu)先級控制寄存器IP、中斷控制寄存器TCON和SCON中有關(guān)位。MCS51單片機基本的中斷系統(tǒng)結(jié)構(gòu)如圖2-4所示。 2)、中斷控制寄存器TCO

7、N的各位(可位尋址): IT0 0,外部中斷0程控為電平觸發(fā)方式,當(dāng)P3.2輸入低電平時,置位IE0。IT0 1,外部中斷0程控為邊沿觸發(fā)方式,相繼的兩次采樣,一個周期中采樣到為高電平,接著的下個周期中采樣到為低電平,則置1 IE0。3) 、中斷允許寄存器IE MCS51的CPU對中斷源的開放或屏蔽,即每一個中斷源是否被允許中斷,是由內(nèi)部的中斷允許寄存器IE(IE為特殊功能寄存器,它的字節(jié)地址A8H,可位尋址)控制的,其格式如下:4) 、在 CPU接收到同樣優(yōu)先級的幾個中斷請求源時,一個內(nèi)部的硬件查詢序列確定優(yōu)先服務(wù)于哪一個中斷申請,這樣在同一個優(yōu)先級里,由查詢序列確定了優(yōu)先級結(jié)構(gòu),其優(yōu)先級別

8、排列如下(最高到最低):外部中斷0定時器T0中斷外部中斷1定時器T1中斷串行口中斷5) 、中斷服務(wù)程序及例程 使用MCS51的中斷,要為使用到的中斷源編寫中斷服務(wù)程序。C51為中斷服務(wù)程序的編寫提供了方便的方法。C51的中斷服務(wù)程序是一種特殊的函數(shù),它的說明形式為:void 函數(shù)名(void) interrupt n using m 函數(shù)體語句 這里,interrupt和using是為編寫C51中斷服務(wù)程序而引入的關(guān)鍵字,interrupt表示該函數(shù)是一個中斷服務(wù)函數(shù),interrupt后的整數(shù)n表示該中斷服務(wù)函數(shù)是對應(yīng)哪一個中斷源。 每個中斷源都有系統(tǒng)指定的中斷編號:外部中斷0 中斷編號為0

9、;定時器T0中斷編號為1; 外部中斷1中斷編號為2;定時器T1中斷編號為3;串行口中斷中斷編號為4; using指定該中斷服務(wù)程序要使用的工作寄存器組號,m為03。關(guān)鍵字interrupt和using只能用于中斷服務(wù)函數(shù)的說明而不能用于其它函數(shù)。程序中的任何函數(shù)都不能調(diào)用中斷服務(wù)函數(shù),中斷服務(wù)函數(shù)是由系統(tǒng)調(diào)用的。3 硬件設(shè)計電路包括以下六個部分:單片機,晶振電路,搶答按鍵電路,6位數(shù)碼管顯示,復(fù)位開關(guān)電路及聲音提示電路。單片機內(nèi)部有一個復(fù)位開關(guān),但是只是內(nèi)部自帶的,而設(shè)計的要求就是自編程序?qū)崿F(xiàn)復(fù)位功能,所以還得附加一個復(fù)位開關(guān)電路。圖3-0 總設(shè)計框圖3.1 AT89C51控制電路AT89C5

10、1是最常用的單片機芯片,該芯片有40個引腳,其中P0P3為數(shù)據(jù)輸入/輸出接口,XTAL1和 XTAL2用于外接晶體;RESET用于復(fù)位信號輸入;ALE是地址鎖存允許控制位,其輸出頻率是時鐘振蕩頻率的16;,程序存儲器允許;,該引腳的接法決定著程序存儲器的00000FFFH 這4KB地址范圍是在單片機內(nèi)部還是外部。 圖3-1 時鐘電路MCS-51系列單片機有四組8位并行I/O口,記作P0、P1、P2和P3。每組I/O口內(nèi)部都有8位數(shù)據(jù)輸入緩沖器、8位數(shù)據(jù)輸出鎖存器及數(shù)據(jù)輸出驅(qū)動等電路。當(dāng)系統(tǒng)沒有擴展外部器件時,I/O端口用作雙向輸入輸出口;當(dāng)系統(tǒng)作外部擴展時,使用P0、P2口作系統(tǒng)地址和數(shù)據(jù)總線

11、、P3口有第二功能,與MCS-51的內(nèi)部功能器件配合使用。本設(shè)計中各引腳接法如下:P0口外接LED顯示屏用于顯示;由于P0 口內(nèi)部無上拉電阻, 為保證按鍵斷開時I/O口線有確定的高電平, 所以在P0 口外部要接上拉限流電阻。P0口接的是段選;P1口的6個端口分別與6個BUTTON按鍵相連,所以在編程的時候要分別定義;P2口接位選;P3.2接復(fù)位鍵,另一端接地,所以是低電平有效;P3.7與揚聲器相連;如圖3-1所示的單片機模塊里面左上部分的電路構(gòu)成晶振電路,于產(chǎn)生時鐘頻率;左半邊的中間電路是復(fù)位電路,采用了手動復(fù)位與自動上電復(fù)位結(jié)合的形式,復(fù)位可靠,電路簡單;復(fù)位信號是系統(tǒng)內(nèi)部初始化所需的,當(dāng)系

12、統(tǒng)加電開始工作時,或工作過程中出現(xiàn)故障無法正常工作時,都需要復(fù)位信號使系統(tǒng)能重新開始工作。此設(shè)計采用片內(nèi)RAM空間,故電路里將ALE和引腳懸空處理,將 接地。 4 軟件設(shè)計 設(shè)計基本思路:當(dāng)運行開關(guān)一打開, 6只數(shù)碼管輪流循環(huán)顯示16,開始循環(huán)跑馬,接著就開始判斷是否有人搶答,所以就要設(shè)計跑馬的程序,并在跑馬里面就要添加鍵盤掃描語句。判斷是否有人搶答,為了不能重復(fù)搶答所以得添加一個標(biāo)志位flag禁止在他人搶答的基礎(chǔ)上再次搶答?;竟δ芫褪窃趽尨鸷?個數(shù)碼管同時顯示搶答者的號碼,將位選設(shè)為全部顯示即可。擴展功能就是搶答后在相應(yīng)的位管顯示相應(yīng)的號碼及聲音提示,所以只要分別給為選和段選送相應(yīng)的位碼,

13、并連接一個揚聲器在有人搶答的時候取反即可。 圖9 搶答程序流程圖4.1 亮滅變化聲音提示設(shè)計對應(yīng)的數(shù)碼管亮5次搶答人的編號,并發(fā)出聲音提示。在子函數(shù)void display()里面,beep就是揚聲器,高電平就能發(fā)出聲音提示。先送位選,并用for語句實現(xiàn)5次循環(huán),剛開始段選為0,即滅,在每一次for語句的循環(huán)里面都是實行一滅一亮,所以只要5次。程序如下14void display() P2=weinum; for(c=0;c5;c+) beep=0; P0=0x00; delay(500); beep=1; P0=duannum; delay(500); flag1=1; while(flag

14、1) P2=weinum; P0=duannum; delay(10); 4.2 搶答按鍵電路及復(fù)位按鍵電路設(shè)計按鍵是一個機械開關(guān),鍵的按下和放開是利用機械觸點的閉合和斷開來實現(xiàn)的。由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合及斷開瞬間均有一連串的抖動,抖動的時間長短由按鍵的機械特性決定,一般為510ms。為了確保按鍵動作只確認(rèn)一次,必須消除抖動的影響。 在本設(shè)計中,定義了子函數(shù)scan()進行鍵盤掃描,并對K1到K6的搶答按鍵都進行了消抖和鎖存編程,那個鍵按下就賦值對應(yīng)的按鍵數(shù),避免受其他按鍵按下的影響,其實就相當(dāng)于鎖存起的功能,部分程序如下:if(K1=0) delay(10); if(K1

15、=0) while(K1); num=0; flag=0; 復(fù)位按鍵就只有K0,復(fù)位的目的就是將前面運行的結(jié)果清零,并從頭開始跑馬,所以要進行復(fù)位鍵是否按下的判斷,如果按下,就顯示搶答的號碼。在按鍵掃描的時候要進行判斷,哪個鍵先按下,哪個優(yōu)先級就最高,避免顯示多人同時搶答。所以在設(shè)計的時候就要設(shè)置一個搶答標(biāo)志位flag,一開始跑馬的時候flag=1表示可以開始搶答,而當(dāng)有搶答鍵按下的時候就flag=0關(guān)掉開始搶答標(biāo)志,使得按其他5個搶答鍵系統(tǒng)都不會響應(yīng)。外部中斷0控制復(fù)位,定義的num是為了防止其他按鍵的影響,掃描按鍵程序就相當(dāng)于一個鎖存器,誰按下就把對應(yīng)的數(shù)字鎖存起來,除非有復(fù)位鍵按下使系統(tǒng)

16、又可以重新開始搶答。5 功能調(diào)試及結(jié)果分析(1) 調(diào)試方法:利用Keil軟件和proteus軟件分別編寫程序和設(shè)計電路并運行。(2)調(diào)試結(jié)果:通過仿真調(diào)試和改進實現(xiàn)了跑馬,搶答,復(fù)位的功能,改變延時的參數(shù),使得數(shù)碼管顯示和跑馬有序,延遲的時間越小,其送位選的速度就越快。(3)結(jié)果分析:經(jīng)過調(diào)節(jié)及更改程序里面的延遲函數(shù)參數(shù),使得數(shù)碼管的顯示更加有序,并達到了設(shè)計的標(biāo)準(zhǔn)。不過搶答器的按鍵有時候不是很靈敏,這主要是與程序里面的延時函數(shù)有關(guān),當(dāng)運行延時程序時,按鍵不能檢測,所以應(yīng)盡量減小延時。 (4)調(diào)試現(xiàn)象基本要求:當(dāng)電源開始鍵按下的時候,搶答器就開始從16跑馬,當(dāng)K3按下的時候,6位數(shù)碼管全顯示3

17、。若有人再搶答系統(tǒng)也不會給予響應(yīng),直到復(fù)位鍵按下。 擴展要求:當(dāng)K5按下的時候,第五位數(shù)碼管就開始閃爍,先滅后亮,最后停在5。若有人再搶答系統(tǒng)也不會給予響應(yīng),直到復(fù)位鍵按下,又開始下一輪的跑馬搶答。 圖5-0 proteus 電路連接6硬件仿真使用普中科技單片機試驗儀2.2進行仿真,P0(JP10)控制數(shù)碼管的段選(JP12),P2控制數(shù)碼管的位選(JP16),P1.0P1.5接留個獨立按鍵,P3.7控制蜂鳴器,實驗電路圖如圖5-0,連接圖如圖6-0所示。 圖6-0 實驗連接圖 實驗現(xiàn)象和軟件仿真一樣,見附錄的視頻。7 設(shè)計總結(jié)7.1該系統(tǒng)的優(yōu)點(1)使用簡單的元器件,簡易的程序就可以實現(xiàn)搶答

18、,聲音提示及復(fù)位的功能。(2)使用子函數(shù)使得主程序更加明了簡潔。由于程序里多次要進行按鍵掃描,判斷是否有人搶答,而按鍵掃描又要消抖,又有6個,語句比較長,所以調(diào)用子函數(shù)顯得很有必要。(3)只需要通過允許搶答標(biāo)志位的設(shè)定可以使搶答器實現(xiàn)有一人搶答后,系統(tǒng)不再響應(yīng)他人的搶答。7.2該系統(tǒng)的缺點(1)由于循環(huán)語句程序中的延時的使用,導(dǎo)致?lián)尨鸢存I顯示電路在搶答的時候,會有延時效應(yīng),導(dǎo)致?lián)尨疰I一按下,不能立馬顯示有人搶答。雖然盡量減小和減少延時可以使得搶答按鍵更加靈敏,但是在循環(huán)送數(shù)顯示的時候,還是要設(shè)定一個合適的值,使得閃爍顯示和跑馬能夠逐一顯示,不然設(shè)置小了,跑馬就會更快。(2)中斷只能在搶答結(jié)束,

19、按下復(fù)位鍵才復(fù)位,不是很實用,沒有做到隨時按下隨時復(fù)位。8設(shè)計心得 本設(shè)計在深入理解單片機原理的基礎(chǔ)理論上,主要設(shè)計了單片機實現(xiàn)各個功能的模塊,最終實現(xiàn)了搶答器的功能。在這次課程設(shè)計中,運用了以前所學(xué)的專業(yè)知識,更加鞏固了知識和對理論有了更深的理解,在設(shè)計程序之前,要有一個較為清晰的思路和程序流程圖,不能妄想一次就做好整個程序,而要一個一個模塊的去實現(xiàn)功能,最后經(jīng)過反復(fù)的修改,整合成整個程序。在設(shè)計過程中,掌握了分析單片機應(yīng)用系統(tǒng),調(diào)試簡單C51程序以及撰寫設(shè)計報告的能力提高了發(fā)現(xiàn)問題、分析問題和解決問題的能力,做到將所學(xué)的理論知識運用到實際生活中。程序編寫的過程其實就是不斷修正的過程,編出來

20、的東西有時候不一定能實現(xiàn)最終的功能,都要通過修改運行才能看到最終結(jié)果。附錄程序:#include#define uchar unsigned char#define uint unsigned intuchar duan=0x06,0x5b,0x4f,0x66,0x6d,0x7d; /數(shù)字16 uchar wei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /位選sbit k1=P10; /定義按鍵K1K6sbit k2=P11;sbit k3=P12;sbit k4=P13;sbit k5=P14;sbit k6=P15;sbit beep=P37; /蜂鳴器位定義uint i,j,num,a,b,c,k;uchar flag=1,flag1=1; void delay(uint z) /延時函數(shù) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void scan()/鍵盤掃描;送搶答號,不允許再次搶答 if(k1=0) delay(30); if(k1=0) while(k1); num=0;flag=0; if(k2=0) delay(30); if(k2=0) wh

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論