基于單片機(jī)的八位搶答器課程設(shè)計報告_第1頁
基于單片機(jī)的八位搶答器課程設(shè)計報告_第2頁
基于單片機(jī)的八位搶答器課程設(shè)計報告_第3頁
基于單片機(jī)的八位搶答器課程設(shè)計報告_第4頁
基于單片機(jī)的八位搶答器課程設(shè)計報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機(jī)課程設(shè)計報告題目:電子搶答器系統(tǒng)設(shè)計學(xué)院:電氣信息學(xué)院 專業(yè):通信工程 姓名: 學(xué)號: 指導(dǎo)老師:孫曉玲 一、設(shè)計任務(wù)設(shè)計一個八路的電子搶答器系統(tǒng),實(shí)現(xiàn)功能為:可供8個選手使用,可顯示30s倒計時,并可顯示出搶到的選手號,并伴有提示音。要求:(1)設(shè)計出硬件電路; (2)設(shè)計出軟件編程方法,并寫出源代碼; (3)用PROTEUS進(jìn)行仿真;二、方案設(shè)計1.設(shè)置一個定時開關(guān),開關(guān)按下后開始30s倒計時,在定時開關(guān)按下之前進(jìn)行搶答無效,使用兩位數(shù)碼管顯示倒計時。2.在30s內(nèi),等待八個按鈕中任意一個按下,按下后使用一位數(shù)碼管顯示按下的選手號,同時蜂鳴器發(fā)出響聲。3.一

2、旦有選手按下后,其他選手再按下均無效,同時30s倒計時停止計時,等待復(fù)位信號。三、硬件設(shè)計(一)選用AT89C51單片機(jī)芯片單片機(jī)(SCM)是單片微型計算機(jī)(Single Chip Microcomputer)的簡稱。它是把中央處理器CPU、隨機(jī)存儲器RAM、只讀存儲器ROM、I/O接口電路、定時/計數(shù)器以及輸入輸出適配器都集成在一塊芯片上,構(gòu)成一個完整的微型計算機(jī)。它的最大優(yōu)點(diǎn)是體積小,可放在儀表內(nèi)部。但存儲量小,輸入輸出適配器簡單,功能較低。目前,單片機(jī)在民用和工業(yè)測控領(lǐng)域得到最廣泛的應(yīng)用,早已深深地融入人們的生活中。簡單的說,用單片機(jī)系統(tǒng)來設(shè)計搶答器,實(shí)現(xiàn)兩組的搶答時間即使是相差幾微秒,

3、也可分辨出哪組優(yōu)先答題。P0端口(P0.0-P0.7):P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時,P0輸出原碼,此時P0外部必須被拉高。P1端口(P1.0-P1.7):P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時,P

4、1口作為第八位地址接收。P2端口(P2.0-P2.7):P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時接收高八位地址信號和控制信號。P3端口(P3.0-P3.7):P3口管腳是一個帶有內(nèi)部上拉

5、電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入端時,由于外部下拉為低電平,P3口將輸出電流(ILL)。(二)關(guān)鍵電路1.時鐘電路一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。單片機(jī)在工作時,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù)

6、,常用fosc表示。如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12µs。2.復(fù)位電路AT89C51的復(fù)位由外部的復(fù)位電路實(shí)現(xiàn)。復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。本次設(shè)計采用按鈕復(fù)位方式。單片機(jī)的第9腳RST為硬件復(fù)位端,只要持續(xù)4個機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲器的值都恢復(fù)到了初始值。3.數(shù)碼管顯示電路本次課程設(shè)計采用了7SEG-MPX2-CC 的兩位7段共陰極數(shù)碼管,用來顯示30s倒計時,和7SEG-MPX1-CC的一位7段共陰極數(shù)碼管,用來顯示搶答中的選手號碼。位選端分別與P2口的第七位,第六位以及第零位相接

7、。同時7段數(shù)碼管線段通過上拉電阻接power,實(shí)現(xiàn)數(shù)碼管的點(diǎn)亮。4.報警電路這里能利用程序來控制單片機(jī)P3.7口線反復(fù)輸出高電平或低電平,即在該口線上產(chǎn)生一定頻率的矩形波,接上揚(yáng)聲器就能發(fā)出一定頻率的聲音,再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使揚(yáng)聲器發(fā)出不同的聲音。5.按鈕輸入電路8個按鈕接P1口,表示8個選手的搶答按鈕,一個總開關(guān)接P3.0口負(fù)責(zé)啟動定時程序。(三)整體電路四、軟件設(shè)計(一)系統(tǒng)原理圖數(shù)碼管顯示電路 蜂鳴器報警電路AT89C51單片機(jī)八個搶答按鈕 定時開關(guān)(二)軟件流程圖在本設(shè)計中包括了以下四個主要的程序:主程序;倒計時程序;正常搶答

8、處理程序顯示及發(fā)聲程序。主流程圖如圖所示:程序開始 N判斷KEY1按下YT0定時開始N, 繼續(xù)計時是否有選手按下 Y顯示選手號,停止計時,蜂鳴器響程序結(jié)束(三)關(guān)鍵程序1.倒計時30s程序段void timer0( ) interrupt 1TH0=(65536-50000)/256;/重新賦初值TL0=(65536-50000)%256;aa+;if(aa=20)aa=0;temp-;if (temp=0)temp=30;利用計時器T0進(jìn)行30s倒計時,T0工作在方式1下,該方式最大可計時65536us,利用計時公式THx=(65536-x)/256,TLx=(65536-x)%256,設(shè)置

9、單次計數(shù)初值為50ms,再重復(fù)20次就可獲得1s,1s完成后aa清零,temp減1,temp總數(shù)為30,即可完成30s的倒計時。再利用七段數(shù)碼管的動態(tài)掃描即可完成倒計時的顯示。2.顯示選手號碼程序段if(n=1) if(k1=0)delay(10);if(k1=0)while(!k1)i=1;TR0=0;n=0;beep=1;delay(500);beep=0;if(k2=0)delay(10);if(k2=0)while(!k2)i=2;TR0=0;n=0;beep=1;delay(500);beep=0;if(k3=0)delay(10);if(k3=0)while(!k3)i=3;TR0

10、=0;n=0;beep=1;delay(500);beep=0;if(k4=0)delay(10);if(k4=0)while(!k4)i=4;TR0=0;n=0;beep=1;delay(500);beep=0;if(k5=0)delay(10);if(k5=0)while(!k5)i=5;TR0=0;n=0;beep=1;delay(500);beep=0;if(k6=0)delay(10);if(k6=0)while(!k6)i=6;TR0=0;n=0;beep=1;delay(500);beep=0;if(k7=0)delay(10);if(k7=0)while(!k7)i=7;TR0

11、=0;n=0;beep=1;delay(500);beep=0;if(k8=0)delay(10);if(k8=0)while(!k8)i=8;TR0=0;n=0;beep=1;delay(500);beep=0;變量n為檢測信號,當(dāng)TR0開始計時時置為1,此時才開始檢測是否有鍵按下,程序中包括按鍵去抖與松手檢測,i用來傳遞鍵值給一位七段數(shù)碼管,通過調(diào)用共陰極編碼數(shù)組顯示選中的號數(shù),切一旦有鍵按下后,TR0置0,停止計時。n置0,之后按下無效。蜂鳴器延時取反發(fā)出按鍵聲。五、調(diào)試過程及結(jié)果(一)系統(tǒng)調(diào)試系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計好的硬件電路和軟件程序,只有經(jīng)過

12、聯(lián)合調(diào)試,才能驗(yàn)證其正確性;軟硬件的配人情況以及是否達(dá)到設(shè)計任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終開發(fā)成實(shí)用產(chǎn)品。由于時間的限制,本次的課程設(shè)計只進(jìn)行了軟件調(diào)試與硬件仿真測試,利用keil uVision3進(jìn)行軟件調(diào)試,利用proteus進(jìn)行硬件仿真測試。對于51單片機(jī)而言,使用最廣泛的軟件編寫語言主要是用C語言。在實(shí)際工程中,除了一些小型的應(yīng)用程序或?qū)π室筝^高的關(guān)鍵部分,一般不會采用匯編語言作為系統(tǒng)開發(fā)的主語言,取而代之是高級語言,如C語言。Keil內(nèi)建了一個仿真CPU用來模擬執(zhí)行程序,在調(diào)試狀態(tài)下,該仿真CPU可以在沒有硬件和仿真機(jī)的情況下進(jìn)行程序的調(diào)試。與真實(shí)

13、的硬件執(zhí)行最明顯的就是時序,軟件模擬是不可能和真實(shí)的硬件具有相同的時序的,具體的表現(xiàn)就是程序執(zhí)行的速度和各人使用的計算機(jī)有關(guān),計算機(jī)性能越好,運(yùn)行速度越快。將寫好的程序編譯成HEX文件,通過專用STC軟件燒錄到單片機(jī)當(dāng)中。HEX文件是直接能在單片機(jī)中運(yùn)行的軟件,實(shí)現(xiàn)對單片機(jī)的控制。Proteus滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的優(yōu)勢。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI 調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。 目前支持的單片機(jī)類型有:68000

14、系列、8051系列、AVR 系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11 系列以及各種外圍芯片。支持大量的存儲器和外圍芯片。該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大,是其他任何一款軟件不能相比的。 ISIS是Preoteus系統(tǒng)的中心,具有控制原理圖畫圖的超強(qiáng)的設(shè)計環(huán)境。ISIS有下面的優(yōu)勢:豐富的器件庫:超過27000種元器件,可方便地創(chuàng)建新元件;智能的器件搜索:通過模糊搜索可以快速定位所需要的器件; 智能化的連線功能:自動連線功能使連接導(dǎo)線簡單快捷,大大縮短繪圖時間; 支持總線結(jié)構(gòu):使用總線器件和總線布線使電路設(shè)計簡明清晰; 可輸出高

15、質(zhì)量圖紙:通過個性化設(shè)置,可以生成印刷質(zhì)量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用(二)具體調(diào)試過程1.軟件調(diào)試問題1:選手搶答后計時未停止。解決辦法:在if語句判斷按鈕是否按下后,增加TR0=0語句,使計時器停止計時。問題2:倒計時開始之前,以及選手搶答后都可按下按鈕。解決辦法:增加檢測變量n,當(dāng)TR0為1是n為1,當(dāng)n為1時才開始檢測是否有鍵按下,一旦有鍵按下n置為0,此后按鍵均無效。2.硬件仿真調(diào)試問題1:七段數(shù)碼管不亮解決辦法:開始采用Input作為數(shù)碼管電源,改為power后顯示正常。問題2:一位七段數(shù)碼管管腳較密集無法正常畫線解決辦法:在走線困難的地方

16、按住ctrl鍵即可。(三)調(diào)試結(jié)果1.keil uVteus(1)開始計時(2)7號選手搶答六、總結(jié)本文研究與設(shè)計的八路電子搶答器,采用了常用的電子元器件,利用AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)了搶答系統(tǒng),利用單片機(jī)的定時器/計數(shù)器定時和計數(shù)的原理,結(jié)合了兩位數(shù)碼管動態(tài)掃描的方法實(shí)現(xiàn)了倒計時的顯示,通過兩個軟件分別進(jìn)行了軟硬件的仿真,實(shí)現(xiàn)了搶答器的基本功能。但在細(xì)節(jié)上還存在一些問題,如按下?lián)尨鸢粹o后,數(shù)碼管的顯示會存在一定的延時,不能立即顯示出搶答到的選手,由于鼠標(biāo)的限制,不能進(jìn)行兩組同時按下的情況模擬。由于時間關(guān)系,沒有對搶答器進(jìn)行功能擴(kuò)展。七、心得體會通過前期的單片機(jī)

17、理論課學(xué)習(xí),對單片機(jī)有了一定的了解。在這次課程設(shè)計中,我利用了以前學(xué)到的利用定時器定時,并循環(huán)點(diǎn)亮數(shù)碼管的方法,并在此基礎(chǔ)上增加了8個按鍵的控制,結(jié)合網(wǎng)上的一些資料,完成了本次的課程設(shè)計題目。通過實(shí)際的應(yīng)用,可以鞏固我們所學(xué)的知識,具體的去深入了解單片機(jī)的整個工作過程。參考文獻(xiàn)資料:1張毅剛單片機(jī)原理及應(yīng)用 高等教育出版社 2003年2王章瑞 單片機(jī)課程實(shí)驗(yàn)及課程設(shè)計指導(dǎo)書 西南石油大學(xué) 2013年3李光飛 單片機(jī)課程設(shè)計實(shí)例指導(dǎo) 北京航天航空大學(xué)出版社 2004年4馮育長 單片機(jī)系統(tǒng)設(shè)計與實(shí)例指導(dǎo) 西安電子科技大學(xué)出版社2007年5王冬梅等 基于單片機(jī)的八路搶答器設(shè)計與實(shí)現(xiàn) 佳木斯大學(xué)學(xué)報

18、2009年附錄一搶答器程序代碼:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit key1=P30; /定義"啟動"按鈕sbit k1=P10; sbit k2=P11; sbit k3=P12; sbit k4=P13; sbit k5=P14; sbit k6=P15; sbit k7=P16; sbit k8=P17; /選手按鍵 sbit beep=P37; /蜂鳴器uchar temp;ucharaa,shi,ge,i;uint n;uchar code

19、table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77; /共陰極數(shù)碼管編碼void display(ucharshi,ucharge); /聲明顯示子函數(shù)void dis(uchari);void delay(uint z); /聲明延時子函數(shù)void init(); /聲明初始化函數(shù)void main()init( ); /調(diào)用初始化子程序while(1)if(key1=0) /檢測"啟動"按鈕是否按下delay(10); /延時去抖動if(key1=0) /再次檢測"啟動"按鈕是否按

20、下while(!key1); /松手檢測,若按鍵沒有釋放,key1始終為0,那么!key1始終為1,程序就一直停在此while語句處 TR0=1; /啟動定時器開始工作 n=1;display(shi,ge); /調(diào)用顯示子函數(shù)dis(i); /顯示選手號數(shù)if(n=1) if(k1=0) delay(10);if(k1=0)while(!k1) i=1;TR0=0;n=0;beep=1;delay(500);beep=0; if(k2=0) delay(10);if(k2=0)while(!k2) i=2;TR0=0;n=0;beep=1;delay(500);beep=0; if(k3=0

21、) delay(10);if(k3=0)while(!k3) i=3;TR0=0;n=0;beep=1;delay(500);beep=0; if(k4=0) delay(10);if(k4=0)while(!k4) i=4;TR0=0;n=0;beep=1;delay(500);beep=0; if(k5=0) delay(10);if(k5=0)while(!k5) i=5;TR0=0;n=0;beep=1;delay(500);beep=0; if(k6=0) delay(10);if(k6=0)while(!k6) i=6;TR0=0;n=0;beep=1;delay(500);beep=0; if(k7=0) delay(10);if(k7=0)while(!k7) i=7;TR0=0;

溫馨提示

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

評論

0/150

提交評論