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

下載本文檔

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

文檔簡介

武漢工程大學(xué)——課程設(shè)計報告單片機八路搶答器設(shè)計系(院):電氣院專業(yè):測控技術(shù)與儀器年級(班):09級測控02班學(xué)號:姓名:呂禹指導(dǎo)教師:郝毫毫2023年12月12日目錄TOC\o"3-3"\h\z\t"標(biāo)題1,1,標(biāo)題2,2"目錄 2摘要 3一、設(shè)計任務(wù)與規(guī)定 4二、方案設(shè)計與論證 4三、硬件電路設(shè)計 53.1搶答器的電路框圖 53.2單元電路設(shè) 63.3外部震蕩電路 63.4報警電路設(shè)計 7四、軟件設(shè)計 74.1系統(tǒng)主程序設(shè)計 74.2主程序清單 8五、仿真過程與仿真結(jié)果 115.1用到了keil軟件仿真 115.2Proteus仿真 115.3用DXP連接原理 115.4用DXP連接PCB圖 12六、安裝與調(diào)試 126.1制作PCB電路板流程 126.2器件選型方案的具體清單 126.3調(diào)試 12七、結(jié)論與心得 14八、參考文獻 15摘要搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識競賽場合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個單位,假如專門購一臺搶答器雖然在經(jīng)濟上可以承受,但每年使用的次數(shù)很少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時性就會影響活動的開展,因此設(shè)計了本搶答器。本設(shè)計是以八路搶答為基本理念。考慮到依需設(shè)定限時回答的功能,運用AT89C51單片機及外圍接口實現(xiàn)的搶答系統(tǒng),運用單片機的定期器/計數(shù)器定期和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)可以對的地進行計時,同時使數(shù)碼管可以對的地顯示時間。用開關(guān)做鍵盤輸出,揚聲器發(fā)生提醒。同時系統(tǒng)可以實現(xiàn):在搶答中,只有開始后搶答才有效,假如在開始搶答前搶答為無效;搶答限定期間和回答問題的時間可在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,對的按鍵后有音樂提醒;搶答時間和回答問題時間倒記時顯示,滿時后系記錄時自動復(fù)位及主控強制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。設(shè)計任務(wù)與規(guī)定1.搶答器同時供8名選手或8個代表隊比賽,分別用8個按鈕S0~S5表達。2.設(shè)立一個系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。3.搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,并在LED數(shù)碼管上顯示,同時揚聲器發(fā)出報警聲響提醒。選手搶答實行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。4.搶答器具有定期搶答功能,且一次搶答的時間由主持人設(shè)定(如20秒)。當(dāng)主持人啟動"開始"鍵后,定期器進行減計時,同時揚聲器發(fā)出短暫的聲響,聲響連續(xù)的時間0.5秒左右。5.參賽選手在設(shè)定的時間內(nèi)進行搶答,搶答有效,定期器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。6.假如定期時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并嚴(yán)禁搶答,定期顯示器上顯示00。二、方案設(shè)計與論證方案一:系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機械開關(guān)按鈕作為控制開關(guān),完畢搶答輸入信號的觸發(fā)。該方案的特點是中小規(guī)模集成電路應(yīng)用技術(shù)成熟,性能可靠,能方便地完畢選手搶答的基本功能,但是由于系統(tǒng)功能規(guī)定較高,所以電路連接集成電路相對較多,并且過于復(fù)雜,并且制作過程工序比較煩瑣,使用不太方便。

方案二:該系統(tǒng)采用51系列單片機AT89C51作為控制核心,該系統(tǒng)可以完畢運算控制、信號辨認以及顯示功能的實現(xiàn)。由于用了單片機,使其技術(shù)比較成熟,應(yīng)用起來方便、簡樸并且單片機周邊的輔助電路也比較少,便于控制和實現(xiàn)。整個系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進行功能的擴張和更改。MCS-51單片機特點如下:

<1>可靠性好:單片機按照工業(yè)控制規(guī)定設(shè)計,抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫在ROM里,許多信號通道都在同一芯片,因此可靠性高,易擴充。<2>單片機有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴充為各種規(guī)模的微電腦系統(tǒng)。

<3>控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外尚有更豐富的條件分支跳躍指令。方案比較及其選用依據(jù),顯然方案二比方案一簡樸的多,不僅從性能上優(yōu)于方案一,并且在使用上及其功能的實現(xiàn)上都較方案一簡潔,并且由于單片機具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。此外80C51單片機采用12MHz的晶振,提高了信號的測量精度,并且使該系統(tǒng)可以通過軟件改善來擴張功能。而方案一采用了中小規(guī)模集成電路,有其復(fù)雜的電路性能,從而也許會使信號的輸入輸出產(chǎn)生延時及不必要的誤差。依此依據(jù)選擇方案二比較適合。其原理框圖如下:搶答按扭搶答按扭優(yōu)先編碼電路鎖存器譯碼電路譯碼顯示主持人控制開關(guān)控制電路報警電路秒脈沖產(chǎn)生電路定期電路譯碼電路顯示電路三、硬件電路設(shè)計3.1搶答器的電路框圖

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

參考電路如圖11.2所示。該電路完畢兩個功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號,同時譯碼顯示電路顯示編號;二是嚴(yán)禁其他選手按鍵操作無效。如有再次搶答需由主持人將S開關(guān)重新置,“清除”然后再進行下一次搶答。(2)時序控制電路設(shè)計時序控制電路是搶答器設(shè)計的關(guān)鍵,它要完畢以下功能:

a.主持人將控制開關(guān)撥到"開始"位置時,揚聲器發(fā)聲,搶答電路和定期電路進人正常搶答工作狀態(tài)。

b.當(dāng)參賽選手按動搶答鍵時,揚聲器發(fā)聲,搶答電路和定期電路停止工作。(3)復(fù)位電路的設(shè)計外部中斷和內(nèi)部中斷并存,單片機硬件復(fù)位端,只要連續(xù)4個機器周期的高電平即可實現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲器的值都恢復(fù)到了初始值,由于本設(shè)計中功能中有倒計時時間的記憶功能,所以不能對單片機進行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位事實上就是當(dāng)程序執(zhí)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完畢復(fù)位。復(fù)位電路如下圖示:3.3外部震蕩電路外部震蕩電路單片機必須在AT89C51的驅(qū)動下才干工作,在單片機內(nèi)部有一個時鐘震蕩電路,只需要外接一個振蕩器就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,外部震蕩電路如下圖。3.4報警電路設(shè)計報警電路用于報警,當(dāng)碰到報警信號時,發(fā)出警報。一般喇叭是一種電感性

圖11.4報警電路圖。8951驅(qū)動喇叭的信號為各種頻率的脈沖。因此,最簡樸的喇叭驅(qū)動方式就是運用達林頓晶體管,或者以兩個常用的小晶體管連接成達林頓架勢。在右圖中電阻R為限流電阻,在此運用晶體管的高電流增益,以達成電路快速飽和的目的。但是,假如要由P0輸出到此電路,還需要連接一個10K的上拉電阻。

選手在設(shè)定的時間內(nèi)搶答時,實現(xiàn):優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提醒。當(dāng)一輪搶答之后,定期器停止、嚴(yán)禁二次搶答、定期器顯示剩余時間。假如再次搶答必須由主持人再次*作"清除"和"開始"狀態(tài)開關(guān)。圖面是數(shù)字搶答器的報警電路圖。

其中555構(gòu)成多諧振蕩器,振蕩頻率fo=1.43/[(RI+2R2)C],其輸出信號經(jīng)三極管推動揚聲器。PR為控制信號,當(dāng)PR為高電平時,多諧振蕩器工作,反之,電路停振。四、軟件設(shè)計4.1系統(tǒng)主程序設(shè)計為了可以達成搶答的公平、公正、合理,應(yīng)當(dāng)在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時間,因而在編開始搶答前的程序得先編寫設(shè)定期間的程序,當(dāng)時間設(shè)好了之后,主持人發(fā)布搶答命令按下P1.7按鍵,程序開始打開定期中斷開始倒計時,然后調(diào)用鍵盤掃描子程序,編寫鍵盤掃描程序。當(dāng)在掃描到有人按下了答題鍵,立即關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤。(1)主程序流程圖主程序主程序設(shè)立搶答時間和回答問題時間定期器及并行口初始化將時間計數(shù)器及啟動標(biāo)志值1開中斷采并行口數(shù)據(jù)為0嗎?啟動標(biāo)志=1嗎?判斷搶答組號將搶答組發(fā)光二極管點亮判斷哪一組為搶答組將搶答組號送顯示搶答時間到了嗎?輸出響鈴信號提醒超時繼續(xù)搶答比賽嗎?系統(tǒng)返回NYYYNYN4.2主程序清單#include<reg52.h>/*宏定義*/#defineuintunsignedint#defineucharunsignedchar/*共陰極數(shù)碼管編碼表0-f顯示*/unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*變量定義*/sbitstart_stop=P3^6;sbitreset=P3^7;sbitkey1=P1^0;sbitkey2=P1^1;sbitkey3=P1^2;sbitkey4=P1^3;sbitkey5=P1^4;sbitkey6=P1^5;sbitkey7=P1^6;sbitkey8=P1^7;sbitstate=P3^4;sbitkaishi=P3^1;bitstart_stop_flag=0;bitkey1_flag=0;bitkey2_flag=0;bitkey3_flag=0;bitkey4_flag=0;bitkey5_flag=0;bitkey6_flag=0;bitkey7_flag=0;bitkey8_flag=0;bitreset_flag=0;bitaction=0;bitkaishi_flag=0;ucharsecond=20;uchartimer0_count=0;ucharnumber=0;ucharnumber_display=0;/*延時函數(shù)*/voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}/*數(shù)碼管顯示驅(qū)動函數(shù)*/voiddisplay(ucharnumber,ucharsecond){ ucharsecond_first,second_second; second_first=second/10; second_second=second%10; P2=0xfe; P0=table[number]; delay(2); P2=0xfd; P0=0x40; delay(2); P2=0xfb; P0=table[second_first]; delay(2); P2=0xf7; P0=table[second_second]; delay(2); }/*開始鍵掃描函數(shù)*/voidstart_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; } } else { start_stop_flag=0; } }/*八位搶答鍵掃描函數(shù)*/ucharkey_scan8(){ if(key1==0) { delay(8); if((key1==0)&&(!key1_flag)) { 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; } } else { key3_flag=0; number=0; } if(key4==0) { delay(8); if((key4==0)&&(!key4_flag)) { key4_flag=1; number=4; number_display=number; } } else { key4_flag=0; number=0; } if(key5==0) { delay(8); if((key5==0)&&(!key5_flag)) { key5_flag=1; number=5; number_display=number; } } else { key5_flag=0; number=0; } if(key6==0) { delay(8); if((key6==0)&&(!key6_flag)) { key6_flag=1; number=6; number_display=number; } } else { key6_flag=0; number=0; } if(key7==0) { delay(8); if((key7==0)&&(!key7_flag)) { key7_flag=1; number=7; number_display=number; } } else { key7_flag=0; number=0; } if(key8==0) { delay(8); if((key8==0)&&(!key8_flag)) { key8_flag=1; number=8; number_display=number; } } else { key8_flag=0; number=0; } if(number_display!=0) { return1; } else { return0; } }/*復(fù)位鍵掃描函數(shù)*/voidreset_keyscan(){ if(reset==0) { delay(8); if((reset==0)&&(!reset_flag)) { second=20; reset_flag=1; number_display=0; state=1; } } else { reset_flag=0; } } /* 開機函數(shù)*/voidkaishi_keyscan(){ if(kaishi==0) { delay(8); if((kaishi==0)&&(!kaishi_flag)) { kaishi_flag=1; number_display=0; state=1; } } else { kaishi_flag=0; } }/*主函數(shù)*/voidmain(){ TMOD=0x01;TH0=0x3c; TL0=0xb0; EA=1; ET0=1; TR0=0; while(1) { while((kaishi==0)&&(!kaishi_flag)) { start_stop_keyscan(); reset_keyscan(); 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); } }}/*中斷服務(wù)函數(shù)*/voidtimer0()interrupt1{ TH0=0x3c; TL0=0xb0; timer0_count++; if(timer0_count==20) { timer0_count=0; second--; if(second==0) { TR0=0; number_display=0; state=1; action=0; } } }五、仿真過程與仿真結(jié)果5.1用到了keil軟件仿真,界面如下:5.2Proteus仿真6.3調(diào)試:(1)開機按電源開關(guān),顯示屏左邊的"搶答"指示燈亮,數(shù)碼管顯示。(2)設(shè)定"搶答"倒計時時間(3)設(shè)定"答題"倒計時時間

(4)測試各組搶答按鍵

試按一下各組的搶答按鈕,應(yīng)立即顯示該組的組別數(shù)字,同時機內(nèi)喇叭發(fā)出"叮咚"的提醒音,按"取消"鍵,返回"0"閃爍狀態(tài)。

(5)啟動搶答倒計時,開始搶答

"FFF"狀態(tài)下,當(dāng)主持人宣布搶答開始時,立即按一下"搶答"鍵,屏幕顯示所設(shè)定的搶答倒計時時間并開始倒計時,提醒倒計時時間立即臨近結(jié)束。倒計時到0以后,儀器發(fā)出"叮咚"的結(jié)束提醒音,同時顯示屏返回"FFF"待命狀態(tài)。

在"搶答"倒計時中,假如有參賽組搶答,儀器屏幕立即顯示該組的組別號,同時發(fā)出"叮咚"的搶答成功提醒音。需要返回"FFF"待命狀態(tài),按"取消"鍵即可。

(6)啟動答題倒計時

"FFF"狀態(tài)下,或有參賽組搶答成功后,需要開始答題的計時時,按"答題計時"鍵,屏幕顯示所設(shè)定的答題倒計時時間并開始倒計時,提醒倒計時時間立即臨近結(jié)束。倒計時到0以后,儀器發(fā)出"丁冬"的結(jié)束提醒音,同時顯示屏返回"FFF"待命狀態(tài)。

(7)提前取消倒計時

無論是"搶答"還是"答題"的倒計時時間,需要提前退出,只要按一下"取消"鍵,即可返回到"FFF"待命狀態(tài)。(8)違規(guī)搶答

當(dāng)主持人讀題過程中,而未宣布搶答開始時按下?lián)尨鸢粹o。主顯示屏將顯示該違規(guī)組號,及發(fā)出提醒音。及該組的紅燈亮起。通過調(diào)試,結(jié)果完全符合搶答器設(shè)計規(guī)定。七、結(jié)論與心得這次課程設(shè)計老師給我們安排了一個星期的時間,可以說是比較富余的。雖然如此,我還是很專心的做設(shè)計,運用了周六周日兩天的時間在宿舍思考本次的課程設(shè)計,拿到題目,感覺太繁雜了,不

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論