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

下載本文檔

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

文檔簡介

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

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

3、n14:(P1.0P1.3)作為矩陣式鍵盤或獨立按鍵的輸入,P1口只能用于輸入,默認用于模擬輸入,作為數(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激勵電流源,可配合RTD等做應(yīng)用。Pin13:兩路AD輸入做普通輸入時

4、的電壓參考端,AD輸入電壓不能低于此引腳電壓。Pin14:片內(nèi)DAC輸出。Pin15:復(fù)位引腳。Pin16、17:單片機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信號。Pin23:(P3.5)LCD1602和LCD12864A的RW。Pin24:(P3.6)LCD1602和LCD12864A的RS。Pin25:LCD12864A的CS

5、1。Pin26:IIC接口時鐘信號。Pin27:IIC接口data信號。Pin28:(P2.0)SPI接口時鐘信號。Pin29:(P2.1)SPI接口MOSI信號、控制第6位數(shù)碼管的位碼。Pin30:(P2.2)SPI接口MISO信號、控制第7位數(shù)碼管的位碼。Pin31:(P2.3)SPI接口SS信號、控制第8位數(shù)碼管的位碼;P2.03也作為4X4矩陣式鍵盤的掃描輸出信號、步進電機的控制信號、數(shù)碼管第數(shù)碼管第6、7、8位位碼。但是SPI、4X4矩陣式鍵盤、步進電機、數(shù)碼管第6、7、8位功能不能同時實現(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模塊的外部時鐘輸入(也可以用內(nèi)部時鐘)。Pin40:EA,低電平有效,正常使用時拉低。Pin41:PSEN,在此引腳電平為低時按復(fù)位鍵進入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ù)碼管: 五個共陰極的數(shù)碼管,用作顯示數(shù)據(jù)。由于I/O的驅(qū)動能力有限,因此是用PNP來驅(qū)動數(shù)碼管的段,用NPN來進行數(shù)碼管的位選。段碼在低電平有效,位碼在高電平有效 鍵盤:使用矩陣鍵盤,使用16個按鍵,最多可以滿足13名選手進行搶答。 LED:一個綠色的LED,正極接P25,陰極接地。 無源蜂鳴器:采用PWM控制發(fā)聲。 下載程序芯片:與PC機的通信使用RS232協(xié)議,使用的通信芯片是MAX2322.硬件設(shè)計:(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:步進電機驅(qū)動信號。DISCTRL04:顯示控制信號,控制數(shù)碼管低5位。D08:單片機P0口。(3)8路LED 8個LED接P0口,低電平時LED亮,這樣不會影響P0口邏輯電平。LED限流電阻取4.7K,通過LED電流約為0.8mA,在P0口驅(qū)動能力范圍之內(nèi)。插針配置: 使用該模塊,可以接通插針2,(4)蜂鳴器 本設(shè)計中采用無源電磁式蜂鳴器,蜂鳴器由PWM1(P2.6)控制。PWM1和PWM0均為片內(nèi)PWM模塊的輸出。蜂鳴器采用普通NPN三極管。插針配置: 使用蜂鳴器,可以接通

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

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

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

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

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

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

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

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

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

19、和主函數(shù)編寫在一個文件中。#include "aduc848.h"/*蜂鳴器的I/O端口*/sbit fmq = P26;/蜂鳴器的控制端口/*LED綠燈的I/O端口*/sbit LED = P25;/*北京時間顯示參數(shù)*/unsigned char hour=0;unsigned char min=0;unsigned char sec=0;unsigned char flag;/*中斷計數(shù)*/unsigned char InterruptCounter=0;/定義中斷計數(shù)變量并賦初值0/*延時函數(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ù)(為了發(fā)聲)*/void delay500us(unsigned char music) /500us基準(zhǔn)延時程序unsigned char j;while(music-)for(j=0;j<57;j+) ; void delayxus() /xus基準(zhǔn)延時程序unsigned char j;for(j=0;j<20;j+) ; /*PWM控制的發(fā)聲函數(shù),都是50%的占空比,4個不同的頻率(為了發(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>否則,將會出現(xiàn)沒有管腳定義的錯誤*/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的高四位不受影響則用"或",但是又要保證其低四位為給定值/所以,先將讀進的P2的進行"與"使高四位保持不變,低四位清零,在同給定的值"或"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為表示沒人作答時的情況,三橫/18.19兩個是給時鐘小時和分鐘之間的標(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ù)為段碼+位碼每次只打開一個數(shù)碼管,即只有一個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;/限時30s的搶答時間unsigned char return1;/搶答的按鍵編號unsigned char rst;/清零鍵/unsigned char stop;/暫停鍵14unsigned char shi;unsigned ch

29、ar ge;unsigned char num;rst = 0;return1 = 0xff;limite = 30;/*掃描選手按鍵和倒計時的代碼*/while(limite!=0)shi = limite/10;/顯示倒計時 ge = limite%10; for(num = 0;num<50;num+) /20ms×50ms=1sdisplay(shi,1); delay1ms(10); display(ge,0); delay1ms(10);/*最后10s的報警程序由于光的速度比聲音快,所以就先出現(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;/表示有人搶答的時候綠燈熄滅/*搶答成功后的聲音,*/for(beep1=0;beep1

31、<100;beep1+)buzzer1000Hz();goto loop; /當(dāng)有按鍵按下的時候跳出for循環(huán)/*14號按鍵作為暫停按鍵,這里注意不要再設(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;/有人搶答的時候綠燈熄滅/*搶答成功后的聲音,*/for(beep2=0;beep2<100;beep2+)buzzer1000Hz();goto loop; /當(dāng)有按鍵按下的時候跳出

33、for循環(huán) if(limite=0) LED = 0;/時間到了之后沒人搶答燈也會熄滅搶答的時候綠燈熄滅 return1 = 16;/16表示0x6d,顯示雷電表示木有人搶答 loop: while(rst!=15) rst = keyscan();/掃描,直到掃到清零鍵 if(limite =0)/沒有人搶答時刻的發(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); /*清零之后就該回到北京時間模式了 清零之后就是qiangda()程序運行結(jié)束回到主函數(shù)*/*主函數(shù)*/void main(void)/unsigned char begin;/開始按鍵,13unsigned char adjust;/調(diào)整時間的按鍵P2 &= 0xe1;/初始化,一開始全滅P3 &= 0x17;TMOD=0x01;/配置定時器0為16位模式,時鐘是core clock,默認為1.572864MHz IE=0x82;/使能定時器0中斷和全局中斷 TH0=0X00; TL0=0X00; TR0=1;/開啟定時器0whi

35、le(1)/*時間的調(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;/*時間的顯示代碼*/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;/搶答成功時刻的提示聲音for(beep=0;beep<80;beep+)/搶答開始的提示聲buzzer200Hz();LED = 1;/表示進入搶答階段開始時刻綠燈亮qiangda();/*此處函數(shù)名符合標(biāo)識符規(guī)范即可,之所以為

37、interrupt 1,與定時器0 的中斷向量有關(guān):編號=(中斷向量 -3)/8*/void TimerInterrupt() interrupt 1 InterruptCounter+; if(InterruptCounter>=24)/T = 1/1.572864MHZ;24*T65536 = 1s;定時器默認初值為65536,因此中斷中不用重新給初值 InterruptCounter=0;/*開始執(zhí)行計時程序*/sec+;/*標(biāo)志位更新代碼*/if(sec%2 = 0)flag = 17;elseflag = 18;/*時分秒更新代碼*/if(sec>=60)sec = 0;min+;if(min>=60)min = 0;hour+;if(hour>=24)hour = 0; 六、多路搶答器使用說明書1、功能列表功能1多路搶答器,最多13路功能2北京時間2. 產(chǎn)品特點(1)一多路數(shù)字搶答器(2)一個系統(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)容里面會有圖紙預(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

提交評論