(完整word版)第1章單片機(jī)8路搶答器(word文檔良心出品).doc_第1頁(yè)
(完整word版)第1章單片機(jī)8路搶答器(word文檔良心出品).doc_第2頁(yè)
(完整word版)第1章單片機(jī)8路搶答器(word文檔良心出品).doc_第3頁(yè)
(完整word版)第1章單片機(jī)8路搶答器(word文檔良心出品).doc_第4頁(yè)
(完整word版)第1章單片機(jī)8路搶答器(word文檔良心出品).doc_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 1章單片機(jī) 8路搶答器1.1功能要求搶答器是為智力競(jìng)賽參賽者大體是進(jìn)行搶答而設(shè)計(jì)的一種優(yōu)先判決器電路, 廣泛應(yīng)用于各種知識(shí)競(jìng)賽、文娛活動(dòng)等場(chǎng)合。實(shí)現(xiàn)搶答器功能的方式有很多種,本項(xiàng)目要求利用51 系列單片機(jī)作為核心部件設(shè)計(jì)一個(gè)供8 名選手參加,能進(jìn)行邏輯控制及顯示的8 路搶答器。每名選手有一個(gè)搶答按扭,按扭的編號(hào)與選手的編號(hào)相對(duì)應(yīng),搶答器具有信號(hào)的鑒別和數(shù)據(jù)的鎖存、顯示的功能。搶答開始后,若有選手搶答按扭,在數(shù)碼管上顯示相應(yīng)的編號(hào),蜂鳴器發(fā)出音響提示。同時(shí),電路應(yīng)具備自鎖功能,禁止其他選手再搶答,優(yōu)先搶答選手的編號(hào)一直保持到主持人按開始答題開始。搶答器具有定時(shí)搶答的功能。在主持人發(fā)出搶答指令

2、后, 定時(shí)器立即進(jìn)行減計(jì)時(shí),并在顯示器上顯示,同時(shí)蜂鳴器發(fā)出短暫的聲響,聲響持續(xù)0.5s 左右。選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器顯示選手編號(hào)及最后倒計(jì)時(shí)剩下的時(shí)間。 主持人按開始答題開始, 答題時(shí)間開始倒計(jì)時(shí)。 當(dāng)按復(fù)位鍵后,完成一次搶答流程。系統(tǒng)完成的主要功能:( 1)設(shè)置一個(gè)由主持人控制的系統(tǒng)清除和搶答控制開關(guān),主持人提問(wèn)后按動(dòng)啟動(dòng)開關(guān)。參加競(jìng)賽者要在最短的時(shí)間內(nèi)對(duì)問(wèn)題做出判斷,并按下?lián)尨鸢存I回答問(wèn)題。( 2)搶答器具有鎖存與顯示功能。當(dāng)?shù)谝粋€(gè)人按下按鍵后,在顯示器上顯示此競(jìng)賽者的編號(hào),揚(yáng)聲器發(fā)出短暫聲響提示。 同時(shí)對(duì)其它搶答案件封鎖,使其不起作用。競(jìng)賽者的編號(hào)

3、保持到主持人將系統(tǒng)清除為止。( 3)系統(tǒng)具有定時(shí)搶答功能,定時(shí)時(shí)間由主持人設(shè)定。當(dāng)主持人啟動(dòng)“開始”鍵后,倒計(jì)時(shí)顯示定時(shí)時(shí)間。( 4)競(jìng)賽者在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示競(jìng)賽者的編號(hào)和搶答剩余的時(shí)間,并保持到主持人將系統(tǒng)清除為止。( 5)如在規(guī)定的搶答定時(shí)時(shí)間內(nèi)無(wú)人搶答,則本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示 00。1.2 主要器件介紹LED 顯示器是由發(fā)光二極管按一定結(jié)構(gòu)組合起來(lái)顯示字段的顯示器件,也稱數(shù)碼管。在單片機(jī)應(yīng)用系統(tǒng)中通常使用的是 8 段式 LED 數(shù)碼顯示器,其外形結(jié)構(gòu)和引腳如圖1.1(a)所示。它由8 個(gè)發(fā)光二極管構(gòu)成,通過(guò)不同的組

4、合可顯示09、 A F及小數(shù)點(diǎn)“ ”等字符。其中7 段發(fā)光二極管構(gòu)成7 筆的“ 8” 字形, 1 段組成小數(shù)點(diǎn)。數(shù)碼管有共陰極和共陽(yáng)極兩種結(jié)構(gòu)。圖1.1( b)所示為共陰極結(jié)構(gòu),8 段發(fā)光二極管的陰極端連接在一起作為公共端,陽(yáng)極端分開控制。使用時(shí)公共端接地,此時(shí)當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平,則此發(fā)光二極管點(diǎn)亮。圖1.1( c)所示為共陽(yáng)極結(jié)構(gòu),8 段發(fā)光二極管的陽(yáng)極端連接在一起作為公共端,陰極端分開控制。使用時(shí)公共端接電源,此時(shí)當(dāng)某個(gè)發(fā)光二極管的陰極為低電平(通常接地),則此發(fā)光二極管點(diǎn)亮。顯然,要顯示某種字形就應(yīng)使此字形的相應(yīng)字段點(diǎn)亮,即從圖1.1( a)中 a g 引腳輸入不同的8 位二

5、進(jìn)制編碼, 可顯示不同的數(shù)值或字符。通常稱控制發(fā)光二極管的8 位數(shù)據(jù)為“字段碼”。不同數(shù)字或字符的字段碼不一樣,而對(duì)于同一個(gè)數(shù)字或字符,共陰極連接和共陽(yáng)極連接的字段碼也不一樣,共陰極和共陽(yáng)極的字段碼互為反碼,表1.1 所示為 0 9 數(shù)字的共陰極和共陽(yáng)極的字段碼。圖 1.1 LED 數(shù)碼管表 1.1 數(shù)字的共陰極和共陽(yáng)極的字段碼顯示數(shù)字共陰順序小數(shù)點(diǎn)暗共陰逆序小數(shù)點(diǎn)暗共陽(yáng)順序共陽(yáng)順序Dp g f e d c b a十六進(jìn)制A b c d e f g Dp十六進(jìn)制小數(shù)點(diǎn)亮小數(shù)點(diǎn)暗0001111113FH11111100FCH40HC0H10000011006H0110000060H69HF9H2

6、010110115BH11011010DAH24HA4H3010011114FH11110010F2H30HB0H40110011066H0110011066H19H99H5011011016DH10110110B6H12H92H6011111017DH10111110BEH02H82H70000011107H11100000E0H78HF8H8011111117FH11111110FEH00H80H9011011116FH11110110F6H10H90H數(shù)碼管按其外形尺寸有多種形式,使用較多的是0.5和0.8 ,顯示的顏色也有多種形式,主要有紅色和綠色,亮度強(qiáng)弱可分為超亮、高亮和普亮。數(shù)碼

7、管的正向壓降一般為1.5 2V ,額定電流為10mA ,最大電流為40mA 。由顯示數(shù)字或字符轉(zhuǎn)換到相應(yīng)的字段碼的方式稱為譯碼方式。數(shù)碼管是單片機(jī)的輸出顯示器件,單片機(jī)要輸出顯示的數(shù)字或字符圖 1.2硬件譯碼電路通常有兩種譯碼方式:硬件譯碼方式和軟件譯碼方式。硬件譯碼方式是指用專門的顯示譯碼芯片來(lái)實(shí)現(xiàn)字符到字段碼的轉(zhuǎn)換。硬件譯碼電路如圖 1.2 所示。硬件譯碼時(shí), 要顯示的一個(gè)數(shù)字,單片機(jī)只須送出這個(gè)數(shù)字的4 位二進(jìn)制編碼,經(jīng) I/O 接口電路并鎖存,然后通過(guò)顯示譯碼器,就可以驅(qū)動(dòng)LED 顯示器中的相應(yīng)字段發(fā)光。硬件譯碼由于使用的硬件較多(顯示器的段數(shù)和位數(shù)越多,電路越復(fù)雜),缺乏靈活性,且只

8、能顯示十六進(jìn)制數(shù),硬件電路較為復(fù)雜。軟件譯碼方式就是通過(guò)編寫軟件譯碼程序(通常為查表程序)來(lái)得到要顯示字符的字段碼。由于軟件譯碼不需外接顯示譯碼芯片,使硬件電路簡(jiǎn)單,并且能顯示更多的字符,因此在實(shí)際應(yīng)用系統(tǒng)中經(jīng)常采用。1.3硬件電路設(shè)計(jì)根據(jù)系統(tǒng)要求的功能,硬件電路可分為搶答電路、顯示電路、主持人控制電路、定時(shí)電路、報(bào)警電路、聲音提示電路、鍵盤控制電路、設(shè)置電路及單片機(jī)控制電路等。整個(gè)硬件電路如圖 1.3 所示。在圖 1.3 中,通過(guò)復(fù)位鍵RST使電路進(jìn)入就緒狀態(tài),等待搶答。 首先由主持人發(fā)布搶答命令,按下 S3( 啟動(dòng) ) 鍵,進(jìn)入倒計(jì)時(shí)狀態(tài)和搶答狀態(tài)。在電路中“ S7 S14”為 8 路搶答

9、器的 8 個(gè)按鍵,如果有人按下按鍵,程序就會(huì)判斷是誰(shuí)先按下的,然后從 P0 口輸出搶答者號(hào)碼的七段碼值, 送到碼管顯示,并封鎖鍵盤, 保持剛才按鍵按下時(shí)刻的時(shí)間,禁止其他人按鍵的輸入, 從而實(shí)現(xiàn)了搶答的功能。 如果在設(shè)定的時(shí)間中沒(méi)有一個(gè)人按下按鍵, 一到時(shí)間則產(chǎn)生報(bào)警信號(hào)已超時(shí),不可以搶答。當(dāng)主持人按 S4(限時(shí)開始 ) 鍵,答題開始,答題時(shí)間開始倒計(jì)時(shí)。如沒(méi)有按復(fù)位鍵,時(shí)間倒計(jì)直到 0,并報(bào)警。當(dāng)要進(jìn)行下一次搶答時(shí),由主持人先按一下復(fù)位按鍵 S2,電路復(fù)位,進(jìn)入下一次搶答的就緒狀態(tài)。主持人可以在搶答開始前按“ S5”、” S6”分別設(shè)置搶答時(shí)間,和答題時(shí)間。A1J14LEDCON2a12J2

10、fbg9排阻ecddpp4 321a bc de fdgPPPPLS1S1+5 V1021234567897425 39861111SW SPST1SPEAKERP1AT140+5VP1.0VCC+5VP2393P1.1P0.0P3381P1.2P0.1Q1P437S2P1.3P0.2P5363R1C1P1.4P0.3P6351 21P3.7P1.5P0.4210uF11P7P1.6P0.534210KP833STC40P0.6PNP29P1.732RSTP0.7P3.010312R3P3.0/RXDEX_LVD1130P3.1/TXDALE+5V1KP3.21229R2P3.2 INT0NA

11、P3.31328P3.3/INT1P2.710KP3.41427P3.4/T0P2.6S31526P3.5/T1P2.5P3.01625P3.6/WPP2.4S4P3.71724P3.7/RDP2.3P3.2C21823XTAL2P2.2S512221922XTAL1P2.1P3.3C3202112MHZGNDP2.0S612P3.422S7S8S9S10S11S12S13S14P1P2P3P4P5P6P7P8圖 1.38 路搶答器硬件電路圖1.3.1LED數(shù)碼管顯示電路在圖 1.3 中, 4 個(gè)數(shù)碼管選用共陰極數(shù)碼管。左邊的2個(gè)數(shù)碼管作為倒計(jì)時(shí)顯示用,最右邊的 1 個(gè)數(shù)碼管用于顯示搶答者的編

12、號(hào),它們中間的那個(gè)數(shù)碼管顯示 “ - ”,用于兩種信息的分隔。P0口外接上拉電阻, 輸出軟件譯碼后的字段碼,P2.0P2.3 輸出 4 個(gè)數(shù)碼管的位線,用于控制數(shù)碼管的動(dòng)態(tài)掃描顯示。1.3.2按鍵電路在圖 1.3 中,共有13 個(gè)按鍵,分別為:復(fù)位鍵S2、功能鍵 S3S6、搶答鍵S7S14。復(fù)位鍵 S2 控制單片機(jī)的復(fù)位引腳RST,4 個(gè)功能鍵S3S6 分別接單片機(jī)的P3.0、P3.2、P3.3、P3.4。它們的功能為:S3 鍵為主持人的搶答開始啟動(dòng)鍵;S4 鍵是限時(shí)答題啟動(dòng)鍵;S5 鍵是搶答時(shí)間調(diào)整鍵;S6 鍵是限時(shí)時(shí)間調(diào)整鍵。8 個(gè)搶答按鍵S7S14 分別為1 號(hào)至8 號(hào)搶答者的按鍵,接單

13、片機(jī)的P0 口。當(dāng)主持人按“S2 開始”鍵時(shí),搶答電路和定時(shí)電路進(jìn)入正常搶答狀態(tài)。當(dāng)參賽選手按動(dòng)搶答鍵時(shí),蜂鳴器聲響,搶答電路和定時(shí)電路停止工作。主持人按“答題開始”鍵時(shí),定時(shí)電路進(jìn)入答題時(shí)間倒計(jì)時(shí)狀態(tài)。1.3.3 聲音提示電路聲音提示電路由一個(gè)10K 的電阻,一個(gè)三級(jí)管和一個(gè)蜂鳴器組成,如圖1.4 所示。1.蜂鳴器電路蜂鳴器根據(jù)結(jié)構(gòu)不同可分為壓電式蜂鳴器和電磁式蜂鳴器,而兩種蜂鳴器又分為有源蜂鳴器和無(wú)源蜂鳴器。這里的源特指振蕩源。有源蜂鳴器直接加電就可以響起,無(wú)源蜂鳴器需要提供振蕩源,理想的振蕩源為一定頻率(1.52.5KHZ )的方波。工作電源為1.515V 。在圖 1.4 中采用的是無(wú)源

14、蜂鳴器,三極管用于驅(qū)動(dòng),接在三極管基極的10K 電阻為限流電阻,利用晶體管的高電流增益,以達(dá)到電路快速飽和的目的。由于系統(tǒng)采用了無(wú)源蜂鳴器,所以需要通過(guò)編程來(lái)控制P3.7 口的翻轉(zhuǎn)來(lái)產(chǎn)生一定頻率的方波。LS11SPEAKER3Q13R11 21 P3.7211210KPNP2+5V圖 1.4聲音提示電路2. 聲音提示電路功能聲音提示電路在主持人發(fā)出可以搶答信號(hào)時(shí)、在有人按下?lián)尨鸢存I時(shí)、在倒計(jì)時(shí)時(shí)間到時(shí)等 3 種情況下發(fā)出蜂鳴聲。搶答器具有定時(shí)搶答功能,并且一次搶答的時(shí)間由主持人設(shè)定(如30 秒)。當(dāng)主持人啟動(dòng)總控制的啟動(dòng)鍵后,定時(shí)器進(jìn)行搶答倒計(jì)時(shí),并在顯示器上顯示。參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶

15、答,搶答有效,定時(shí)器停止工作,并在LED 數(shù)碼管上顯示選手的編號(hào),同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響,提示主持人。 同時(shí)其他人在按就無(wú)效,并一直保持到主持人將系統(tǒng)清除為止。 當(dāng)在設(shè)定的時(shí)間內(nèi)沒(méi)有人搶答, 倒計(jì)時(shí)完畢后蜂鳴器也會(huì)發(fā)出短時(shí)間的叫聲, 提示本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示 0,并發(fā)出一段時(shí)間的報(bào)警聲。1.3.4 單片機(jī)電路單片機(jī)電路根據(jù)鍵盤輸入控制數(shù)碼管顯示或聲音提示。通過(guò)讀取按鍵的情況;通過(guò)讀取P3.0 的狀態(tài)讀取搶答是否開始的信息;通過(guò)讀取P1.0P1.7 的狀態(tài)讀取P3.2 的狀態(tài)讀取答題倒計(jì)時(shí)是否開始的信息; 通過(guò)讀取 P3.3 的狀態(tài)來(lái)確定是否要修改答題的時(shí)間;通過(guò)的

16、狀態(tài)來(lái)確定是否要修改搶答時(shí)間;通過(guò)讀取P2.0P2.3 控制顯示模塊以顯示搶答者的編號(hào)和P3.4倒計(jì)時(shí)所剩時(shí)間;通過(guò)P3.7 控制蜂鳴器。1.4程序設(shè)計(jì)系統(tǒng)的工作過(guò)程如下:設(shè)定搶答的時(shí)間已設(shè)置好,默認(rèn)為20 秒。主持人發(fā)布搶答命令,按下S3 按鍵后,蜂鳴器響一聲,開始倒計(jì)時(shí)。4 個(gè)數(shù)碼管的高兩位顯示倒計(jì)時(shí)時(shí)間,最低一位顯示“0”。如有搶答者率先在規(guī)定時(shí)間內(nèi)按鍵,則蜂鳴器響一聲,4 個(gè)數(shù)碼管的最低一位顯示搶答者的編號(hào)。如在主持人未按下?lián)尨饐?dòng)鍵或搶答限時(shí)結(jié)束后有選手搶答,則此時(shí)蜂鳴器響一聲,最低一位數(shù)碼管顯示犯規(guī)者的編號(hào),最高兩位數(shù)碼管顯示“FF”以指示有人犯規(guī)。如在規(guī)定時(shí)間內(nèi)無(wú)人搶答,4 個(gè)數(shù)

17、碼管顯示“FF F”。搶答時(shí)間調(diào)整時(shí),4 個(gè)數(shù)碼管高兩位顯示搶答預(yù)置時(shí)間,低兩位顯示“- -”。答題時(shí)間調(diào)整時(shí), 4 個(gè)數(shù)碼管高兩位顯示答題預(yù)置時(shí)間,低兩位顯示“= =”。在搶答完畢后, 主持人需按一下復(fù)位鍵,數(shù)碼管計(jì)時(shí)和編號(hào)顯示位都不顯示,恢復(fù)到初始狀態(tài),準(zhǔn)備下一輪搶答。因此,系統(tǒng)軟件分為按鍵掃描程序模塊、顯示程序模塊、報(bào)警程序模塊和主程序等。1.4.1顯示程序顯示程序?qū)⑼瓿梢韵鹿δ埽涸趽尨鹣迺r(shí)內(nèi)有人搶答,則 4 個(gè)數(shù)碼管中最低位數(shù)碼管顯示搶答者的編號(hào), 最高 2 位數(shù)碼管顯示倒計(jì)時(shí)時(shí)間;若無(wú)人搶答則最低位數(shù)碼管不顯示;如超過(guò)搶答限時(shí)時(shí)間還有人搶答,則最低位數(shù)碼管顯示搶答者的編號(hào),最高 2

18、位數(shù)碼管顯示 “ FF”,表示搶答無(wú)效;如超過(guò)搶答限時(shí)時(shí)間且無(wú)人搶答時(shí),判若有搶答時(shí)間設(shè)置鍵(鍵S5)按下,則最高 2 位數(shù)碼管顯示時(shí)間的設(shè)置,最低2 位數(shù)碼管顯示“ ”,若有答題時(shí)間設(shè)置鍵(鍵 S6)按下,則最高2 位數(shù)碼管顯示時(shí)間的設(shè)置,最低2 位數(shù)碼管顯示“=”;若時(shí)間設(shè)置鍵沒(méi)有按下,則4 個(gè)數(shù)碼管顯示“FFF”。顯示在搶答限時(shí)內(nèi)有人搶答的程序代碼如下:void display(void)/ 顯示函數(shù)if(flag=1)/判如果標(biāo)志flag 是否為 1,如為 1,在限時(shí)范圍內(nèi)if(num!=0)/ 如有人搶答成功P0=tabledunum;P2=tablewe0;/ 在最低位數(shù)碼管顯示搶

19、答者的編號(hào)delay(2);/ 延時(shí)P0=0;P2=0XFF;/清屏else/否則無(wú)人成功搶答P0=0;P2=0XFF;/ 清屏,不顯示P0=tabledus/10;P2=tablewe2;/ 在最高位數(shù)碼管上顯示倒計(jì)時(shí)時(shí)間的十位數(shù)delay(2);/ 延時(shí)P0=0;P2=0XFF;/ 清屏P0=tabledus%10;P2=tablewe3;/ 在次高位數(shù)碼管上顯示倒計(jì)時(shí)時(shí)間的個(gè)位數(shù)delay(2);/ 延時(shí)P2=0XFF;P0=0;/ 清屏1.4.2按鍵掃描程序按鍵掃描程序模塊主要掃描鍵盤,讀取鍵盤值。判斷主持人是否按動(dòng)啟動(dòng)鍵,是否有搶答者按動(dòng)答題鍵以及對(duì)相應(yīng)按鍵進(jìn)行處理的函數(shù)。Key_S

20、can(void) 函數(shù)用于檢測(cè)主持人是否按動(dòng)啟動(dòng)按鍵。當(dāng)程序檢測(cè)到單片機(jī)P3.0 引腳變?yōu)榈碗娖?,延時(shí)去抖動(dòng)后,仍檢測(cè)為低電平時(shí),判斷主持人確實(shí)按動(dòng)了啟動(dòng)鍵,開啟搶答倒計(jì)時(shí)。程序代碼如下:void Key_Scan(void)/ 檢測(cè)主持人是否按鍵函數(shù)if(K0=0)/如 K0 為低電平說(shuō)明有鍵按下delay(10);/去抖動(dòng)if(K0=0)/ 如 K0 為低電平說(shuō)明確實(shí)有鍵按下,執(zhí)行下列程序while(!K0);/ 等待K0釋放TR0=1;/啟動(dòng)搶答,開始計(jì)數(shù)s=time;/搶答倒計(jì)時(shí)時(shí)間送變量S函數(shù)Scan(void) 用于檢測(cè)是否有搶答者按動(dòng)答題按鍵。程序讀取P1 口的值,按照從P1.

21、0P1.7 的順序逐個(gè)檢測(cè),當(dāng)某個(gè)引腳值為0 時(shí),表明有按鍵按下。同時(shí)對(duì)答題按鍵進(jìn)行處理,當(dāng)搶答者按動(dòng)答題按鍵時(shí),函數(shù)顯示搶答者號(hào)碼,程序代碼如下:void Scan(void)/8 個(gè)搶答鍵掃描函數(shù)if(K1=0)/ 判 1 號(hào)搶答者是否按鍵delay(10);/ 延時(shí)去抖動(dòng)if(K1=0)while(!K1);/ 等待1 號(hào)搶答者釋放按鍵num=1;/記編號(hào)為1TR0=0;/停止搶答計(jì)時(shí)TR1=1;/開啟答題計(jì)時(shí)s_flag=0;/標(biāo)號(hào)s_flag 清0if(K2=0)/判2 號(hào)搶答者是否按鍵delay(10);if(K2=0)/延時(shí)去抖動(dòng)while(!K2);/ 等待2 號(hào)搶答者釋放按鍵

22、num=2;/記編號(hào)為2TR0=0;/停止搶答計(jì)時(shí)TR1=1;/開啟答題計(jì)時(shí)s_flag=0;/標(biāo)號(hào)s_flag 清0if(K3=0)/ 判 3 號(hào)搶答者是否按鍵delay(10);if(K3=0)/延時(shí)去抖動(dòng)while(!K3);/等待3 號(hào)搶答者釋放按鍵num=3;/記編號(hào)為3TR0=0;/停止搶答計(jì)時(shí)TR1=1;/開啟答題計(jì)時(shí)s_flag=0;/標(biāo)號(hào)s_flag清0if(K4=0)/ 判 4 號(hào)搶答者是否按鍵delay(10);/延時(shí)去抖動(dòng)if(K4=0)while(!K4);/等待3 號(hào)搶答者釋放按鍵num=4;/記編號(hào)為4TR0=0;/ 停止搶答計(jì)時(shí)TR1=1;/ 開啟答題計(jì)時(shí)s_f

23、lag=0;/標(biāo)號(hào)s_flag 清0if(K5=0)/ 判 5 號(hào)搶答者是否按鍵delay(10);if(K5=0)/延時(shí)去抖動(dòng)while(!K5);/等待5 號(hào)搶答者釋放按鍵num=5;/記編號(hào)為5TR0=0;/ 停止搶答計(jì)時(shí)TR1=1;/ 開啟答題計(jì)時(shí)s_flag=0;/標(biāo)號(hào)s_flag清0if(K6=0)/判6 號(hào)搶答者是否按鍵delay(10);/延時(shí)去抖動(dòng)if(K6=0)while(!K6);/ 等待6 號(hào)搶答者釋放按鍵num=6;/記編號(hào)為6TR0=0;/停止搶答計(jì)時(shí)TR1=1;/開啟答題計(jì)時(shí)s_flag=0;/標(biāo)號(hào)s_flag 清0if(K7=0)/判7 號(hào)搶答者是否按鍵dela

24、y(10);if(K7=0)/延時(shí)去抖動(dòng)while(!K7);/ 等待7 號(hào)搶答者釋放按鍵num=7;/記編號(hào)為7TR0=0;/停止搶答計(jì)時(shí)TR1=1;/ 開啟答題計(jì)時(shí)s_flag=0;/標(biāo)號(hào)s_flag清0if(K8=0)/判8 號(hào)搶答者是否按鍵delay(10);if(K8=0)/延時(shí)去抖動(dòng)while(!K8);/ 等待8 號(hào)搶答者釋放按鍵num=8;/記編號(hào)為8TR0=0;/停止搶答計(jì)時(shí)TR1=1;/開啟答題計(jì)時(shí)s_flag=0;/標(biāo)號(hào)s_flag清01.4.3報(bào)警程序模塊報(bào)警程序模塊主要是控制蜂鳴器發(fā)出報(bào)警提示聲音,利用定時(shí)器T1 定時(shí)中斷來(lái)實(shí)現(xiàn)。程序代碼如下:void timer1(

25、void) interrupt 3/定時(shí)器T1中斷函數(shù),蜂鳴器響1 秒鐘TH1=(65536-2000)/256;/2ms定時(shí)初值TL1=(65536-2000)%256;beep=beep;/每2ms P3. 7 口(接蜂鳴器)輸出電平翻轉(zhuǎn)t1+;/ t1計(jì)數(shù)加1if(t1=500)/當(dāng)t1 計(jì)數(shù)到500 時(shí),定時(shí)1 秒t1=0;/ t1清0TR1=0;/定時(shí)器T1停止計(jì)數(shù)1.4.4主程序模塊主程序模塊主要完成以下功能:定時(shí)器初始化后,循環(huán)執(zhí)行以下功能:調(diào)檢測(cè)主持人是否按鍵函數(shù),如按下,調(diào)8 按鍵掃描函數(shù),調(diào)顯示函數(shù);如有搶答者按鍵,則等主持人按下答題計(jì)時(shí)鍵時(shí),蜂鳴器聲響提示,開始答題倒計(jì)時(shí)

26、。程序代碼如下:void main(void)/ 主函數(shù)T0_Init();/ 調(diào)定時(shí)器初始化函數(shù)while(1)/ 無(wú)限循環(huán)執(zhí)行Key_Scan();/ 調(diào)檢測(cè)主持人是否按鍵函數(shù)if(flag=0)&(s_flag=1)/ 如標(biāo)志 flag=0 且 s_flag=1 ,即超過(guò)搶答限時(shí),/無(wú)人搶答,則執(zhí)行下面大括號(hào)內(nèi)語(yǔ)句Time_Scan();/調(diào)搶答和答題時(shí)間設(shè)置函數(shù)if(flag=1)&(s_flag=0)/如標(biāo)志 flag=1 且 s_flag=0 ,說(shuō)明在搶答限時(shí)內(nèi)有/人搶答,則執(zhí)行下面大括號(hào)內(nèi)語(yǔ)句if(K_Time=0)/判 P3.2 是否為 0,即答題是否開始delay(10);/

27、延時(shí)去抖動(dòng)if(K_Time=0)while(!K_Time);/等待鍵釋放s=datitime;/ 答題設(shè)置的時(shí)間送變量sTR0=1;/T0定時(shí)器開始計(jì)時(shí)tt=0;/變量tt 設(shè)為0TR1=1;/T1定時(shí)器開始計(jì)時(shí),蜂鳴器響1 秒鐘提示if(flag=0)&(s_flag=0)/如標(biāo)志 flag=0 且 s_flag=0 ,即超過(guò)限時(shí)還有人搶答/ 或沒(méi)按啟動(dòng)鍵就有人搶答,則執(zhí)行下面大括號(hào)內(nèi)語(yǔ)句Scan();/調(diào)8 個(gè)搶答鍵掃描函數(shù)if(num!=0)/ 若有人搶答fall_flag=1;/則設(shè)標(biāo)志fall_flag為1rled=0;/設(shè)標(biāo)志rled 為0if(flag=1)&(s_flag=

28、1)/如標(biāo)志 flag=1 且 s_flag=1 ,在規(guī)定時(shí)間內(nèi)無(wú)人按鍵/則執(zhí)行下面大括號(hào)內(nèi)語(yǔ)句Scan();/調(diào) 8 個(gè)搶答鍵掃描函數(shù)display();/調(diào)顯示函數(shù)1.4.5系統(tǒng)參考程序系統(tǒng)程序流程圖如圖1.5 所示。圖 1.5系統(tǒng)程序流程圖參考程序如下:#include#define uchar unsigned char#define uint unsigned intchar s;uchar num=0;/用于記錄搶答者的編號(hào)char time=20;/設(shè)默認(rèn)搶答倒計(jì)時(shí)為20char datitime=30;/設(shè)默認(rèn)答題倒計(jì)時(shí)為30uint tt,t1;/用于計(jì)時(shí)累加bit flag

29、,s_flag=1,b_flag,fall_flag;/ 分別為顯示時(shí)間結(jié)束否標(biāo)志、搶答者按鍵否標(biāo)志、bit K_startcountflag,K_timecountflag;sbit K0=P30;/主持人搶答啟動(dòng)按鍵sbit beep=P37;/ 接蜂鳴器sbit rled=P31;/ 接發(fā)光二極管指示燈sbit K1=P10;/ 以下P1 口接8 個(gè)搶答按鍵sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit K5=P14;sbit K6=P15;sbit K7=P16;sbit K8=P17;sbit K_Time=P32;/接主持人答題開始按鍵sbit K

30、_startcount=P33;/接搶答時(shí)間調(diào)整按鍵sbit K_timecount=P34;/接答題時(shí)間調(diào)整按鍵void delay(uchar ms)/延時(shí)函數(shù)uchar y;for(;ms0;ms-)for(y=120;y0;y-);uchar code tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/09、 AF的字段碼uchar code tablewe=0XFE,0XFD, 0XF7, 0XFB ;/位碼void T0_Init(void)/ 定時(shí)器初始

31、化函數(shù)TMOD=0X11;/定時(shí)器T0、T1工作方式1TH0=(65536-2000)/256;/ 定時(shí)器T0初值TL0=(65536-2000)%256;TH1=(65536-2000)/256;/ 定時(shí)器T1初值TL1=(65536-2000)%256;ET0=1;/開定時(shí)器T0中斷ET1=1;/開定時(shí)器T1中斷EA=1;P0=0;/ 開總中斷void Key_Scan(void)/ 檢測(cè)主持人是否按鍵函數(shù)if(K0=0)/如K0為低電平說(shuō)明有鍵按下delay(10);/去抖動(dòng)if(K0=0)/ 如K0為低電平說(shuō)明確實(shí)有鍵按下,執(zhí)行下列程序while(!K0);/ 等待K0釋放TR0=1;/啟動(dòng)搶答,開始計(jì)數(shù)s=time;/搶答倒計(jì)時(shí)時(shí)間送變量Stt=0;/ 以下設(shè)置各變量和各標(biāo)志的初值flag=1;s_flag=1;b_flag=1;num=0;beep=1;rled=1;fall_flag=0;K_startcountflag=0;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論