單片機(jī)課設(shè)__多路搶答器__課程設(shè)計(jì)報(bào)告兼程序_第1頁
單片機(jī)課設(shè)__多路搶答器__課程設(shè)計(jì)報(bào)告兼程序_第2頁
單片機(jī)課設(shè)__多路搶答器__課程設(shè)計(jì)報(bào)告兼程序_第3頁
單片機(jī)課設(shè)__多路搶答器__課程設(shè)計(jì)報(bào)告兼程序_第4頁
單片機(jī)課設(shè)__多路搶答器__課程設(shè)計(jì)報(bào)告兼程序_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、設(shè)計(jì)課題:多路搶答器學(xué)院:電氣與信息工程學(xué)院專業(yè):電氣工程及其自動(dòng)化班級(jí):學(xué)號(hào):姓 名:目 錄一、任務(wù)及設(shè)計(jì)要求21.任務(wù)22.要求2二、系統(tǒng)原理圖2三、硬件原理圖61.元器件清單62.硬件設(shè)計(jì)63.軟件設(shè)計(jì)114.性能分析13四、流程圖151.總體流程圖152.搶答器模塊163.北京時(shí)間模塊流程圖17五、程序18六、產(chǎn)品使用說明書271.功能272.使用說明28七、心得體會(huì)29八、參考文獻(xiàn),教師評(píng)語30一、任務(wù)及設(shè)計(jì)要求1、任務(wù)設(shè)計(jì)一多路搶答器,每組設(shè)計(jì)一搶答按扭供選手使用2、要求(1)設(shè)計(jì)一多路數(shù)字搶答器(2)設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān),該開關(guān)由主持人控制(3)搶答器具有鎖存與顯示功能

2、。選手按動(dòng)按扭,鎖存相應(yīng)的編號(hào),并在LED數(shù)碼管或LCD上顯示,同時(shí)系統(tǒng)報(bào)警。優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)信號(hào)清除為止(4)搶答器具有定時(shí)搶答功能。當(dāng)主持人啟動(dòng)“開始”鍵后,計(jì)時(shí)器進(jìn)行計(jì)時(shí),同時(shí)綠燈亮(可蜂鳴器替代或顯示對應(yīng)標(biāo)志)。參賽選手在設(shè)定時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,綠燈滅,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止,如果定時(shí)時(shí)間已到,無人搶答,本次搶答無效,系統(tǒng)報(bào)警。中途可以暫停。(5)顯示定時(shí)時(shí)間,可倒數(shù)顯示(6)定時(shí)時(shí)間進(jìn)入最后十秒時(shí),可用蜂鳴器提醒(7)顯示北京時(shí)間,可調(diào)整二、系統(tǒng)原理圖硬件原理:ADUC848管腳圖如下圖所示。Pi

3、n14:(P1.0P1.3)作為矩陣式鍵盤或獨(dú)立按鍵的輸入,P1口只能用于輸入,默認(rèn)用于模擬輸入,作為數(shù)字輸入使用時(shí)應(yīng)先往P1口相應(yīng)引腳寫0,這里可以用P0&=0xf0。若P2、P3、P0口要作為輸入,則應(yīng)往相應(yīng)引腳寫1。Pin5、6:AVDD、AGND,模擬電源輸入。Pin7、8:外部參考電壓接入,Pin7接AGND。片內(nèi)DAC有2.5V內(nèi)部參考,ADC有1.25V內(nèi)部參考。Pin9、10:(P1.4、P1.5)兩路AD輸入,可做差分輸入,需要設(shè)置ADC的寄存器。Pin11、12:(P1.6、P1.7)各200uA激勵(lì)電流源,可配合RTD等做應(yīng)用。Pin13:兩路AD輸入做普通輸入時(shí)

4、的電壓參考端,AD輸入電壓不能低于此引腳電壓。Pin14:片內(nèi)DAC輸出。Pin15:復(fù)位引腳。Pin16、17:單片機(jī)RS232接口的RXD(P3.0) TXD(P3.1)。Pin18:(P3.2) 外部中斷0,用于紅外接收和PS/2接口。Pin19:(P3.3)LCD1602,LCD12864A的EN引腳,控制第一位數(shù)碼管。Pin20、21:DVDD、DGND數(shù)字電源輸入。Pin22:(P3.4)PS/2接口的data信號(hào)。Pin23:(P3.5)LCD1602和LCD12864A的RW。Pin24:(P3.6)LCD1602和LCD12864A的RS。Pin25:LCD12864A的CS

5、1。Pin26:IIC接口時(shí)鐘信號(hào)。Pin27:IIC接口data信號(hào)。Pin28:(P2.0)SPI接口時(shí)鐘信號(hào)。Pin29:(P2.1)SPI接口MOSI信號(hào)、控制第6位數(shù)碼管的位碼。Pin30:(P2.2)SPI接口MISO信號(hào)、控制第7位數(shù)碼管的位碼。Pin31:(P2.3)SPI接口SS信號(hào)、控制第8位數(shù)碼管的位碼;P2.03也作為4X4矩陣式鍵盤的掃描輸出信號(hào)、步進(jìn)電機(jī)的控制信號(hào)、數(shù)碼管第數(shù)碼管第6、7、8位位碼。但是SPI、4X4矩陣式鍵盤、步進(jìn)電機(jī)、數(shù)碼管第6、7、8位功能不能同時(shí)實(shí)現(xiàn)。Pin32、Pin33:接外部32.768KHz晶振。Pin34、Pin35:DVDD、DG

6、ND。Pin36:(P2.4)LCD12864A的CS2。Pin37:(P2.5)內(nèi)部PWM模塊輸出,控制紅外LED。Pin38:(P2.6)內(nèi)部PWM模塊輸出,控制蜂鳴器。Pin39:(P2.7)內(nèi)部PWM模塊的外部時(shí)鐘輸入(也可以用內(nèi)部時(shí)鐘)。Pin40:EA,低電平有效,正常使用時(shí)拉低。Pin41:PSEN,在此引腳電平為低時(shí)按復(fù)位鍵進(jìn)入debug模式,可以下載和調(diào)試程序。Pin42:ALE。Pin47、Pin48:DGND、DVDD。Pin43、44、45、46、49、50、51、52:P0口、LCD1602和LCD12864的數(shù)據(jù)總線,數(shù)碼管的段碼。三 、硬件原理圖1.元器件清單:

7、MCU:選用ADUC848芯片,core clock為1.572864MHz。帶有PWM脈寬調(diào)制功能。 數(shù)碼管: 五個(gè)共陰極的數(shù)碼管,用作顯示數(shù)據(jù)。由于I/O的驅(qū)動(dòng)能力有限,因此是用PNP來驅(qū)動(dòng)數(shù)碼管的段,用NPN來進(jìn)行數(shù)碼管的位選。段碼在低電平有效,位碼在高電平有效 鍵盤:使用矩陣鍵盤,使用16個(gè)按鍵,最多可以滿足13名選手進(jìn)行搶答。 LED:一個(gè)綠色的LED,正極接P25,陰極接地。 無源蜂鳴器:采用PWM控制發(fā)聲。 下載程序芯片:與PC機(jī)的通信使用RS232協(xié)議,使用的通信芯片是MAX2322.硬件設(shè)計(jì):(1)電源模塊 共有如下3種供電方式: 5V電源適配器供電(開關(guān)往上撥、插針1下面兩

8、腳接跳線帽)。將開關(guān)sw4第2、3腳接通(開關(guān)往上撥),電源網(wǎng)絡(luò)DVDD連接到插針1第2腳的輸出,將插針1的第1、2腳(插針1下面兩腳)接跳線帽,DVDD直接連接到電源適配器輸入端,即為5V電源適配器供電模式。712V電源適配器供電(開關(guān)往上撥、插針1上面兩腳接跳線帽) 將開關(guān)sw4第2、3腳接通(開關(guān)往上撥),電源網(wǎng)絡(luò)DVDD連接到插針1第2腳的輸出,將插針1的第2、3腳(插針1上面兩腳)接跳線帽,DVDD連接到穩(wěn)壓芯片7805的輸出,而7805的輸入端連接到電源適配器輸入端,即為712V的電源適配器經(jīng)7805給學(xué)習(xí)板供電的模式。USB供電(開關(guān)往下?lián)埽?。將開關(guān)sw4第1、2腳接通(開關(guān)往下

9、撥),電源網(wǎng)絡(luò)DVDD連接到USB電源輸入端。(2)數(shù)碼管DS07:數(shù)碼管段碼。BIT07:數(shù)碼管位碼。MOTORAD:步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào)。DISCTRL04:顯示控制信號(hào),控制數(shù)碼管低5位。D08:單片機(jī)P0口。(3)8路LED 8個(gè)LED接P0口,低電平時(shí)LED亮,這樣不會(huì)影響P0口邏輯電平。LED限流電阻取4.7K,通過LED電流約為0.8mA,在P0口驅(qū)動(dòng)能力范圍之內(nèi)。插針配置: 使用該模塊,可以接通插針2,(4)蜂鳴器 本設(shè)計(jì)中采用無源電磁式蜂鳴器,蜂鳴器由PWM1(P2.6)控制。PWM1和PWM0均為片內(nèi)PWM模塊的輸出。蜂鳴器采用普通NPN三極管。插針配置: 使用蜂鳴器,可以接通

10、插針3。(5)按鍵模塊 由于P1口(用于行掃描)內(nèi)部無上拉電阻,為使無鍵按下時(shí)行信號(hào)為高電平,故將行信號(hào)接上拉電阻,電阻大小10K即可。引腳復(fù)用:P2.0P2.3為4X4矩陣式鍵盤列掃描信號(hào),又復(fù)用作步進(jìn)電機(jī)控制信號(hào),SPI信號(hào)、P2.1P2.3還復(fù)用為數(shù)碼管第5、6、7位位碼控制信號(hào)。參與復(fù)用的一項(xiàng)功能使用時(shí),其他參與復(fù)用的功能則不能使用。插針配置: 插針10上面兩腳接跳線帽,4X4矩陣式鍵盤輸入,行掃描信號(hào)為P1.0P1.3,列掃描信號(hào)為P2.02.3。插針10下面兩腳接跳線帽,獨(dú)立按鍵輸入,該模式有4個(gè)獨(dú)立按鍵可用,按鍵掃描所用端口為P1.0P1.3。這4個(gè)按鍵為4X4矩陣鍵盤的左邊4個(gè)

11、按鍵。(6)復(fù)位與下載 復(fù)位與下載電路如圖進(jìn)入下載或調(diào)試模式的步驟為: 按住BTN1(down or debug按鍵)不要放開; 按下BTN2(reset按鍵),然后放開BTN2(reset按鍵);放開BTN1(down or debug按鍵)。這樣單片機(jī)就進(jìn)入了調(diào)試模式,可以下載或調(diào)試程序(7)下載程序芯片(MAX 232)3.軟件設(shè)計(jì)(1)軟件設(shè)計(jì):分析了產(chǎn)品需要具有功能及工程任務(wù)和指標(biāo)。這個(gè)多路搶答器功能有多路搶答器,北京時(shí)間,及其搶答過程中主持人的開始、暫停、清零,報(bào)警器的發(fā)聲,LED顯示。因此將搶答器這個(gè)小工程分成X個(gè)模塊:LED顯示模塊,發(fā)聲模塊及PWM控制模塊,數(shù)碼管顯示模塊,按

12、鍵掃描模塊,功能選擇模塊。(2)數(shù)碼管掃描:采用動(dòng)態(tài)掃描法。先選中位選,再將七段碼送出,延時(shí)一段時(shí)間,接著是點(diǎn)亮下一個(gè),完成一輪后則掃描程序結(jié)束。全過程由display(unsigned char duan,unsigned char wei)函數(shù)實(shí)現(xiàn)。但是,關(guān)鍵在于延時(shí)選擇多長時(shí)間,延時(shí)太短則數(shù)碼管點(diǎn)不亮或是不清晰,延時(shí)太長則會(huì)不連續(xù)或是影響后面的程序的執(zhí)行如鍵盤掃描,而這個(gè)時(shí)間是需要調(diào)試的。(3)鍵盤掃描:aduc848芯片比較特殊性,其P1口不具備驅(qū)動(dòng)能力只能讀入,而且讀入前要先將P1口置0,這點(diǎn)與AT89C51完全不同,如果不仔細(xì)閱讀說明書,按鍵的的掃描將是永遠(yuǎn)無解。鍵盤還有另一個(gè)問題

13、,就是使用“閉環(huán)”還是“開環(huán)”。“閉環(huán)”的按鍵就是等待按鍵直到有按鍵按下才會(huì)退出按鍵掃描,而“開環(huán)”則不需要等到按鍵,只要沒有按鍵就執(zhí)行其后面的程序但是有一點(diǎn),他必須用在循環(huán)中,而且一般是用在while(1)之中,進(jìn)行循環(huán)掃描。關(guān)于延時(shí)程序,也是要考慮的,如果程序?qū)懥说菦]有調(diào)用就會(huì)占用code和data區(qū),而data區(qū)直接尋址僅僅128B,故延時(shí)選擇合適的延時(shí)時(shí)間作為單位。(4)北京時(shí)間:運(yùn)用定時(shí)器0,16位計(jì)數(shù)方式實(shí)現(xiàn)。計(jì)數(shù)器是加一計(jì)數(shù)器,當(dāng)加到65535,即1s鐘時(shí)定時(shí)器產(chǎn)生中斷,同時(shí)對現(xiàn)實(shí)的時(shí)間進(jìn)行刷新。由于在本產(chǎn)品的設(shè)計(jì)中我們只采用了一個(gè)中斷,因此不存在中斷的優(yōu)先級(jí),中斷的嵌套。因此

14、不會(huì)對中斷的發(fā)生時(shí)間產(chǎn)生影響。同時(shí)core clock的穩(wěn)定,保證了時(shí)鐘的穩(wěn)定可靠。(5)倒計(jì)時(shí)與報(bào)警提示:倒計(jì)時(shí)采用延時(shí)程序完成,利用1 ms延時(shí)函數(shù)delay1ms(unsigned char),執(zhí)行1000后延時(shí)就為1s。每個(gè)1s對數(shù)碼管顯示的段碼進(jìn)行刷新。報(bào)警功能通過蜂鳴器實(shí)現(xiàn),在特定的時(shí)間給蜂鳴器占空比為50%的,頻率不相同的脈沖波,發(fā)出不同的報(bào)警提示音。 搶答開始提示有一盞綠色的LED來反映。但允許搶答時(shí)刻,給搶答器的控制引腳送高電平,搶答器發(fā)光,當(dāng)搶答暫停、搶答時(shí)間到、已搶答中任一種情況發(fā)生時(shí),綠燈熄滅。4.性能分析(1)通過按鍵實(shí)現(xiàn)選手的搶答,主持人的開始,暫停,清零,北京時(shí)間

15、調(diào)節(jié)信號(hào)。由于按鍵是有限的,用較少的按鍵實(shí)現(xiàn)這些功能則需要按鍵的復(fù)用,也就是不同模塊中按鍵的功能是不同的。選手搶答需要在檢測到按鍵時(shí),通過行掃描法分析判斷搶答成功選手的按鍵編號(hào)。主持人開始按鍵按下時(shí)倒計(jì)時(shí)開始。暫停按鍵按下時(shí),程序進(jìn)入死循環(huán),同時(shí)倒計(jì)時(shí)暫停,跳出死循環(huán)的方法就是按下開始按鍵。清零按鍵按下時(shí),搶答程序結(jié)束,屏幕顯示北京時(shí)間,等待下一次搶答。北京時(shí)間調(diào)節(jié),通過四個(gè)按鍵實(shí)現(xiàn)時(shí)和分的加減,同時(shí)不影響定時(shí)器工作。(2)警告聲音是采用無源蜂鳴器發(fā)聲。利用PWM給蜂鳴器不同頻率的占空比都為50%的脈沖波,再通過延時(shí)發(fā)出聲音。為了聲音的不同,采用了不同的頻率,有1000Hz,500Hz,333

16、Hz,200Hz.(3)北京時(shí)間功能采用T0計(jì)時(shí)器中斷來實(shí)現(xiàn)。ADuC848的core clock頻率默認(rèn)為1.572864MHz,定時(shí)器0的時(shí)鐘為core clock,1572864=65536*24。故將定時(shí)器0設(shè)置為16位計(jì)數(shù)模式,且初值為0,無需在定時(shí)器溢出中斷中給定時(shí)器賦初值(中斷溢出就開始執(zhí)行中斷程序,計(jì)數(shù)器為加法計(jì)數(shù)器,從0加到65536)。每65536個(gè)core clock周期將產(chǎn)生一次中斷,在中斷處理程序中累計(jì)中斷次數(shù),當(dāng)有24次中斷產(chǎn)生時(shí)即為1秒,進(jìn)行計(jì)時(shí)。同時(shí)產(chǎn)生中斷,在數(shù)碼管上顯示。(4)由于矩陣鍵盤和左邊三位數(shù)碼管I/O口沖突,為了顯示的避免誤操作,采用了五位數(shù)碼管顯

17、示,用電子手表的形式顯示北京時(shí)間。搶答器模式下,右起第五位數(shù)碼管顯示選手編號(hào),右起最后兩位顯示搶答剩余時(shí)間,當(dāng)搶答時(shí)間到?jīng)]選手搶答時(shí),結(jié)果顯示特殊符號(hào)。(5)搶答開始提示有一個(gè)綠色的LED實(shí)現(xiàn),通過P25給高電平時(shí)發(fā)光。四流程圖1. 總體流程圖開始初始化按鍵掃描按鍵判斷搶答模式時(shí)鐘調(diào)節(jié)北京時(shí)間模式模式13號(hào)鍵Else10、1114、15鍵 2. 搶答器模塊流程圖搶答模式初始化限時(shí)30s綠燈亮Limit=0?數(shù)碼管掃描,延時(shí)1sLimit=10?發(fā)出最后10s警報(bào),響2s按鍵掃描按鍵判斷Limit數(shù)碼管掃描按鍵判斷?按鍵掃描Led燈熄滅搶答成功提示音響一次數(shù)碼管掃描Limit=0?時(shí)間到30s警

18、告按鍵判斷按鍵掃描北京時(shí)間模式Y(jié)NYYNNElseElseElse按鍵01214號(hào)鍵13號(hào)鍵15號(hào)鍵返回段碼綠燈滅3. 北京時(shí)間模塊流程圖Sec>59?NYMin+Min>59NMin>59Min=0Hour+YHour>23NHour=0數(shù)碼管掃描按鍵掃描按鍵判斷13號(hào)Else15號(hào)搶答模式10號(hào)11號(hào)14號(hào)Hour<23Min<59Hour>1Min>1Hour+Hour=0Min+Min=0Hour-Hour=23Min-Min=59YYYYNNNNSec+T0初值為0每過1sT0中斷一次Y五、程序程序分模塊進(jìn)行測試,然后將模塊整合成函數(shù),

19、和主函數(shù)編寫在一個(gè)文件中。#include "aduc848.h"/*蜂鳴器的I/O端口*/sbit fmq = P26;/蜂鳴器的控制端口/*LED綠燈的I/O端口*/sbit LED = P25;/*北京時(shí)間顯示參數(shù)*/unsigned char hour=0;unsigned char min=0;unsigned char sec=0;unsigned char flag;/*中斷計(jì)數(shù)*/unsigned char InterruptCounter=0;/定義中斷計(jì)數(shù)變量并賦初值0/*延時(shí)函數(shù)1ms*/void delay1ms(unsigned int time)

20、while(time-)unsigned char a;for(a = 0;a <= 114;a+); /1/12.58*12*105=1ms/*PWM發(fā)生的延時(shí)函數(shù)(為了發(fā)聲)*/void delay500us(unsigned char music) /500us基準(zhǔn)延時(shí)程序unsigned char j;while(music-)for(j=0;j<57;j+) ; void delayxus() /xus基準(zhǔn)延時(shí)程序unsigned char j;for(j=0;j<20;j+) ; /*PWM控制的發(fā)聲函數(shù),都是50%的占空比,4個(gè)不同的頻率(為了發(fā)聲)*/void

21、 buzzer1000Hz() fmq=1;delay500us(1);fmq=0;delay500us(1);void buzzer500Hz() fmq=1;delay500us(2);fmq=0;delay500us(2);void buzzer333Hz() fmq=1;delay500us(3);fmq=0;delay500us(3);void buzzer200Hz() fmq=1;delay500us(5);fmq=0;delay500us(5);void buzzerhigh()fmq=1;delayxus();fmq=0;delayxus(); /*鍵盤掃描*/*子程序功能:

22、掃描矩陣按鍵,返回鍵值入口參數(shù):無出口參數(shù):按鍵鍵值占用資源:ROM中的數(shù)組注意:(1)此子程序是"開環(huán)的",應(yīng)當(dāng)用在循環(huán)中 對于按鍵的處理,應(yīng)當(dāng)先判斷是否為 有效按鍵值,返回0xff表示無按鍵 (2)需要調(diào)用其他的子程序 void delay_ms(uchar k); (3)使用到了其他文件的管腳定義: P1 、P2故在調(diào)用此函數(shù)之前必須現(xiàn)包含相關(guān)管腳的宏定義文件:#include<aduc848.h>否則,將會(huì)出現(xiàn)沒有管腳定義的錯(cuò)誤*/unsigned char keyscan(void)unsigned char mov4=0x07,0x0b,0x0d,0

23、x0e; /檢測的P2口定義,表示4列unsigned char i,k; unsigned char keyvalue; P1&=0xf0;P2&=0xf0;if(P1&0x0f)!=0x0f)delay1ms(5);if(P1&0x0f)!=0x0f)for(i=0;i<4;i+)P2=(P2&0xf0)|movi; /保證P2的高四位不受影響則用"或",但是又要保證其低四位為給定值/所以,先將讀進(jìn)的P2的進(jìn)行"與"使高四位保持不變,低四位清零,在同給定的值"或"if(P1&0

24、x0f)!=0x0f)break;for(k=0;k<4;k+)if(P1&0x0f)=mov3-k)break;keyvalue=i+k*4;while(P1&0x0f)!=0x0f);return keyvalue;return 0xff;/*段碼定義*/ 0 F段碼/第17為表示沒人作答時(shí)的情況,三橫/18.19兩個(gè)是給時(shí)鐘小時(shí)和分鐘之間的標(biāo)志位unsigned char code table19=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xd9,

25、0xfd,0xff; /*位碼定義*/sbit bit0 = P33;sbit bit1 = P35;sbit bit2 = P36;sbit bit3 = P37;sbit bit4 = P24;sbit bit5 = P21;sbit bit6 = P22;sbit bit7 = P23;/*顯示函數(shù)參數(shù)為段碼+位碼每次只打開一個(gè)數(shù)碼管,即只有一個(gè)bit為有效*/display(unsigned char duan,unsigned char wei)switch(wei)case 0:bit0 = 1;bit1 = 0;bit2 = 0;bit3 = 0;bit4 = 0;bit5 =

26、0;bit6 = 0;bit7 = 0;P0=tableduan;break;case 1:bit0 = 0;bit1 = 1;bit2 = 0;bit3 = 0;bit4 = 0;bit5 = 0;bit6 = 0;bit7 = 0;P0=tableduan;break;case 2:bit0 = 0;bit1 = 0;bit2 = 1;bit3 = 0;bit4 = 0;bit5 = 0;bit6 = 0;bit7 = 0;P0=tableduan;break;case 3:bit0 = 0;bit1 = 0;bit2 = 0;bit3 = 1;bit4 = 0;bit5 = 0;bit6

27、 = 0;bit7 = 0;P0=tableduan;break;case 4:bit0 = 0;bit1 = 0;bit2 = 0;bit3 = 0;bit4 = 1;bit5 = 0;bit6 = 0;bit7 = 0;P0=tableduan;break;case 5:bit0 = 0;bit1 = 0;bit2 = 0;bit3 = 0;bit4 = 0;bit5 = 1;bit6 = 0;bit7 = 0;P0=tableduan;break;case 6:bit0 = 0;bit1 = 0;bit2 = 0;bit3 = 0;bit4 = 0;bit5 = 0;bit6 = 1;b

28、it7 = 0;P0=tableduan;break;case 7:bit0 = 0;bit1 = 0;bit2 = 0;bit3 = 0;bit4 = 0;bit5 = 0;bit6 = 0;bit7 = 1;P0=tableduan;break;default:break;/*搶答程序*/void qiangda()unsigned char limite;/限時(shí)30s的搶答時(shí)間unsigned char return1;/搶答的按鍵編號(hào)unsigned char rst;/清零鍵/unsigned char stop;/暫停鍵14unsigned char shi;unsigned ch

29、ar ge;unsigned char num;rst = 0;return1 = 0xff;limite = 30;/*掃描選手按鍵和倒計(jì)時(shí)的代碼*/while(limite!=0)shi = limite/10;/顯示倒計(jì)時(shí) ge = limite%10; for(num = 0;num<50;num+) /20ms×50ms=1sdisplay(shi,1); delay1ms(10); display(ge,0); delay1ms(10);/*最后10s的報(bào)警程序由于光的速度比聲音快,所以就先出現(xiàn)光然后發(fā)出聲音*/if(limite=10|limite=9)buzze

30、rhigh();return1 = keyscan();if( return1 = 0|return1 = 1|return1 = 2|return1 = 3|return1 = 4|return1 = 5|return1 = 6|return1 = 7|return1 = 8|return1 = 9|return1 = 10|return1 = 11|return1 = 12)/假如有人回答的了就跳出按鍵掃描的循環(huán)程序,0xff是在按鍵掃描里面定義的unsigned char beep1;LED = 0;/表示有人搶答的時(shí)候綠燈熄滅/*搶答成功后的聲音,*/for(beep1=0;beep1

31、<100;beep1+)buzzer1000Hz();goto loop; /當(dāng)有按鍵按下的時(shí)候跳出for循環(huán)/*14號(hào)按鍵作為暫停按鍵,這里注意不要再設(shè)定一個(gè)參數(shù)作為停止鍵的按鍵掃描,因?yàn)檫@樣子會(huì)打亂時(shí)序,按鍵掃描需要較長的時(shí)間,導(dǎo)致這里無法執(zhí)行g(shù)oto的跳出循環(huán)程序*/*暫停程序*/if(return1 = 14)while(keyscan()!=13)display(shi,1); delay1ms(5); display(ge,0); delay1ms(5);limite = limite-1;return1 = keyscan();if( return1 = 0|return1

32、 = 1|return1 = 2|return1 = 3|return1 = 4|return1 = 5|return1 = 6|return1 = 7|return1 = 8|return1 = 9|return1 = 10|return1 = 11|return1 = 12)/假如有人回答的了就跳出按鍵掃描的循環(huán)程序,0xff是在按鍵掃描里面定義的unsigned char beep2;LED = 0;/有人搶答的時(shí)候綠燈熄滅/*搶答成功后的聲音,*/for(beep2=0;beep2<100;beep2+)buzzer1000Hz();goto loop; /當(dāng)有按鍵按下的時(shí)候跳出

33、for循環(huán) if(limite=0) LED = 0;/時(shí)間到了之后沒人搶答燈也會(huì)熄滅搶答的時(shí)候綠燈熄滅 return1 = 16;/16表示0x6d,顯示雷電表示木有人搶答 loop: while(rst!=15) rst = keyscan();/掃描,直到掃到清零鍵 if(limite =0)/沒有人搶答時(shí)刻的發(fā)聲程序 buzzer500Hz(); shi = limite/10; ge = limite%10; display(return1,3);/顯示上面的搶答結(jié)果 delay1ms(5);/數(shù)碼管顯示延遲5ms display(shi,1); delay1ms(5); displ

34、ay(ge,0); delay1ms(5); /*清零之后就該回到北京時(shí)間模式了 清零之后就是qiangda()程序運(yùn)行結(jié)束回到主函數(shù)*/*主函數(shù)*/void main(void)/unsigned char begin;/開始按鍵,13unsigned char adjust;/調(diào)整時(shí)間的按鍵P2 &= 0xe1;/初始化,一開始全滅P3 &= 0x17;TMOD=0x01;/配置定時(shí)器0為16位模式,時(shí)鐘是core clock,默認(rèn)為1.572864MHz IE=0x82;/使能定時(shí)器0中斷和全局中斷 TH0=0X00; TL0=0X00; TR0=1;/開啟定時(shí)器0whi

35、le(1)/*時(shí)間的調(diào)整代碼*/adjust = keyscan();if(adjust!=0xff)switch(adjust)case 10:if(hour=23)hour = 0;elsehour+;break;case 14:if(hour=0)hour = 23;elsehour-;break;case 11:if(min=59)min = 0;elsemin+;break;case 15:if(min=0)min = 59;elsemin-;break;/*時(shí)間的顯示代碼*/display(min%10),0);delay1ms(5);display(min/10),1);dela

36、y1ms(5);display(flag,2);delay1ms(5);display(hour%10),3);delay1ms(5);display(hour/10),4);delay1ms(5);/*搶答程序的入口,參數(shù)意義。qiangda:表示搶答開始鍵,qiang()表示搶答器函數(shù)*/if(adjust = 13)unsigned char beep;/搶答成功時(shí)刻的提示聲音for(beep=0;beep<80;beep+)/搶答開始的提示聲buzzer200Hz();LED = 1;/表示進(jìn)入搶答階段開始時(shí)刻綠燈亮qiangda();/*此處函數(shù)名符合標(biāo)識(shí)符規(guī)范即可,之所以為

37、interrupt 1,與定時(shí)器0 的中斷向量有關(guān):編號(hào)=(中斷向量 -3)/8*/void TimerInterrupt() interrupt 1 InterruptCounter+; if(InterruptCounter>=24)/T = 1/1.572864MHZ;24*T65536 = 1s;定時(shí)器默認(rèn)初值為65536,因此中斷中不用重新給初值 InterruptCounter=0;/*開始執(zhí)行計(jì)時(shí)程序*/sec+;/*標(biāo)志位更新代碼*/if(sec%2 = 0)flag = 17;elseflag = 18;/*時(shí)分秒更新代碼*/if(sec>=60)sec = 0;min+;if(min>=60)min = 0;hour+;if(hour>=24)hour = 0; 六、多路搶答器使用說明書1、功能列表功能1多路搶答器,最多13路功能2北京時(shí)間2. 產(chǎn)品特點(diǎn)(1)一多路數(shù)字搶答器(2)一個(gè)系統(tǒng)清除和搶答控制開關(guān),該開關(guān)由主持人控

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論