版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 搶答器設(shè)計(jì) </b></p><p><b> 內(nèi)容提要:</b></p><p> 電子智能搶答計(jì)分器在搶答過(guò)程中,為了知道哪一組或哪一位選手先答題,必須要設(shè)計(jì)一個(gè)系統(tǒng)來(lái)完成這個(gè)任務(wù)。如果在搶答中,靠視覺(jué)是很難判斷出哪組先答題。利用單片機(jī)系統(tǒng)來(lái)設(shè)計(jì)搶答器,使以上問(wèn)題得以解決,即使兩組的搶答時(shí)間相差幾微秒,
2、也可分辨出哪組優(yōu)先答題。本設(shè)計(jì)使用AT89C51單片機(jī)來(lái)設(shè)計(jì)智能搶答器,組數(shù)可以在八組以內(nèi)任意使用。并且具有倒計(jì)時(shí)和時(shí)間設(shè)置及報(bào)警功能。利用AT89C51單片機(jī)對(duì)信號(hào)進(jìn)行鎖存、顯示等功能。分別從硬件和軟件兩方面闡述了該控制系統(tǒng)的設(shè)計(jì)方法,并經(jīng)過(guò)調(diào)試和運(yùn)行使該系統(tǒng)達(dá)到預(yù)期目標(biāo),具有反應(yīng)快、功能齊全、實(shí)用性強(qiáng)的特點(diǎn)。</p><p><b> 系統(tǒng)總體方案設(shè)計(jì)</b></p>&
3、lt;p> 電子智能搶答計(jì)分器在搶答過(guò)程中,為了知道哪一組或哪一位選手先答題,必須要設(shè)計(jì)一個(gè)系統(tǒng)來(lái)完成這個(gè)任務(wù)。為了完成這個(gè)任務(wù)設(shè)計(jì)時(shí)系統(tǒng)能顯示搶答組號(hào)、各組計(jì)分并能計(jì)分顯示以及比賽結(jié)束時(shí)能發(fā)出報(bào)警聲三個(gè)要求;電子智能搶答計(jì)分器主要是由硬件部分和軟件部分構(gòu)成,硬件和軟件分開設(shè)計(jì);系統(tǒng)綜框圖如下:</p><p> 圖1-1 系統(tǒng)框架圖</p><p><b> 搶答器
4、的工作原理</b></p><p> 搶答器的工作原理是利用單片機(jī)的定時(shí)器T0、T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,用4個(gè)共陰極LED數(shù)碼管來(lái)顯示,用P0口作為數(shù)碼管的八個(gè)段選,用P2口中的P2.0、P2.1、P2.2、作為4個(gè)數(shù)碼管其中3個(gè)位選,P1口接4個(gè)按鍵,提供選手搶答,P3.0-P3.5四個(gè)接四個(gè)按鍵,提供開始、結(jié)束、答題時(shí)間調(diào)整、搶答時(shí)間調(diào)整,加1、減1調(diào)整之用。</p>
5、;<p><b> 搶答功能:</b></p><p> 通過(guò)四路按鍵配合程序來(lái)實(shí)現(xiàn)搶答功能。當(dāng)主持人按下?lián)尨疰I開始搶答后,此時(shí)任一路按下按鈕均閉鎖其它各路,由程序?qū)︽I盤譯碼并顯示最先按下?lián)尨疰I的路數(shù)及其當(dāng)前時(shí)間。</p><p><b> 搶答限時(shí):</b></p><p> 主持人按下?lián)尨疰I后,設(shè)
6、置5秒為搶答時(shí)間(此時(shí)間可在1-99秒之間修改)。若5秒內(nèi)無(wú)人搶答,倒計(jì)時(shí)為0時(shí)發(fā)出報(bào)警,說(shuō)明該搶答題目作廢。此時(shí)閉鎖所有搶答按鍵,只有當(dāng)主持人再次按下?lián)尨疰I開始下一次搶答方可搶答。</p><p><b> 答題限時(shí):</b></p><p> 當(dāng)選手按下按鈕時(shí),啟動(dòng)倒計(jì)時(shí)(此倒計(jì)時(shí)時(shí)間可在1~99秒之間修改),倒計(jì)時(shí)為0時(shí)發(fā)出報(bào)警,說(shuō)明答題時(shí)間到。</p
7、><p><b> 系統(tǒng)硬件設(shè)計(jì)</b></p><p> 1、控制系統(tǒng)及所需元件</p><p><b> 芯片的選擇</b></p><p> 搶答器電路的核心是89C51單片機(jī),其內(nèi)部帶有4KB的FLASH ROM,無(wú)需外擴(kuò)程序存儲(chǔ)器;搶答器沒(méi)有大量的運(yùn)算和暫存數(shù)據(jù)現(xiàn)有的128B篇內(nèi)RAM
8、已經(jīng)能滿足容量需求,故不需外擴(kuò)片外RAM,系統(tǒng)配有8位8段數(shù)碼顯示管,管采用共陰數(shù)碼管,作為時(shí)鐘的顯示輸出。</p><p> 控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲(chǔ)器、接口電路、顯示接口電路組成;其中單片機(jī)采用的是AT89C51單片機(jī)使系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個(gè)部分協(xié)調(diào)工作。</p><p> 所需元件:該系統(tǒng)的核心器件是AT89C51,其外部接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕
9、及揚(yáng)聲器。元件為:晶體振蕩管X1,電容C1、C2、C3,電阻RP1,P3.0和P3.1有裁判控制分別是搶答停止和開始鍵;P1.0-P1.7是8組搶答的輸入口;P2.0-P2.3口為數(shù)碼管的段選口;位選口用的是P0.0-P0.6口輸出,外部中斷0、1和P3.3,P3/4為搶答記時(shí)調(diào)整口,實(shí)現(xiàn)的對(duì)個(gè)隊(duì)進(jìn)行計(jì)時(shí),并且加減調(diào)整,外部中斷0,1實(shí)現(xiàn)了答題時(shí)間調(diào)整。P3.4、P3.5分別實(shí)現(xiàn)了時(shí)間的加一和減一;P3.6為蜂鳴器控制口。</p&
10、gt;<p> 智能搶答器用單片機(jī)來(lái)設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,采用單片機(jī)AT89C51,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲(chǔ)器,并允許在系統(tǒng)內(nèi)改寫或用編程器編程。該智力競(jìng)賽搶答器的準(zhǔn)確度很高,其誤差主要由晶振自身的誤差所造成。</p><p> AT89C51單片機(jī)由微處理器,存儲(chǔ)器,I/O口以及特殊功能寄存器SFR等部分構(gòu)成。其存
11、儲(chǔ)器在物理上設(shè)計(jì)成程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩個(gè)獨(dú)立的空間,片內(nèi)程序存儲(chǔ)器的容量為4KB,片內(nèi)數(shù)據(jù)存儲(chǔ)器為128個(gè)字節(jié)。89C51單片機(jī)有4個(gè)8位的并行I/O口:P0口,P1口,P2口和P3口。各個(gè)接口均由接口鎖存器,輸出驅(qū)動(dòng)器和輸入緩沖器組成。P1口是唯一的但功能口,僅能用作通用的數(shù)據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還具有不同的第二功能,如P3.0是串行輸入口線,P3.1口是串行輸出口線。在需要外部程序
12、存儲(chǔ)存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器擴(kuò)展時(shí),P0可作為分時(shí)復(fù)用的低8位地址/數(shù)據(jù)總線,P2口可作為高8位的地址總線。P3口也可作為AT89C51的一些特殊功能口,同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p><b> 復(fù)位電路的設(shè)計(jì)</b></p><p> 圖2-1 復(fù)位電路原理圖</p><p> 該復(fù)位電路采用上電自動(dòng)復(fù)位和手動(dòng)復(fù)
13、位兩種復(fù)位方式,圖中網(wǎng)絡(luò)標(biāo)號(hào)所指9連接到單片機(jī)的復(fù)位引腳。要實(shí)現(xiàn)復(fù)位只需在,51系列單片機(jī)的RESET引腳上加上5ms的高電平就可以了。上電復(fù)位是利用電容的充電來(lái)實(shí)現(xiàn)的,即上電瞬間RESET端的電位與Vcc相同,隨著電容上儲(chǔ)能增加,電容電壓也逐漸增大,充電電流減小,RESET端的電位。這樣就會(huì)建立一個(gè)脈沖電壓,調(diào)節(jié)電容與電阻的大小可對(duì)脈沖的持續(xù)時(shí)間進(jìn)行調(diào)節(jié)。通常若采用12MHz的晶振時(shí),復(fù)位元件參數(shù)為22μF的電解電容和10kΩ的電阻。
14、按鈕復(fù)位電路是通過(guò)按下復(fù)位按鈕時(shí),電源對(duì)RESET端維持兩個(gè)機(jī)器周期的高電平實(shí)現(xiàn)復(fù)位的。</p><p> 3.4 晶振電路的設(shè)計(jì)</p><p> MSC-51單片機(jī)的定時(shí)控制功能是用時(shí)鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)中采用內(nèi)部時(shí)鐘方式。</p><p> 單片機(jī)內(nèi)部有一個(gè)反相放大器,XTAL1、XT
15、AL2分別為反相放大器的輸入端和輸出端,外接定時(shí)反饋元件組成振蕩器(內(nèi)部時(shí)鐘方式),產(chǎn)生時(shí)鐘送至單片機(jī)內(nèi)部各元件。時(shí)鐘頻率越高,單片機(jī)控制器的控制節(jié)拍就越快,運(yùn)算速度也就越快。</p><p> 一般來(lái)說(shuō)單片機(jī)內(nèi)部有一個(gè)帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-2所示。加電以后延時(shí)一段時(shí)間(約10ms)振蕩器產(chǎn)生時(shí)鐘,不受軟件控制,圖中Y1為晶振,震蕩產(chǎn)生的時(shí)鐘頻率主要由Y
16、1確定。電容C1,C2的作用有兩個(gè):一是幫助振蕩器起振,二是對(duì)振蕩器的頻率起微調(diào)作用,典型值為30pF。</p><p> 晶振電路的設(shè)計(jì)如圖2-2所示:</p><p> 圖2-2 晶振電路原理圖</p><p> 3.5數(shù)碼顯示管的選擇</p><p> 數(shù)碼顯示管用來(lái)作為時(shí)間的顯示輸出,一般用7段數(shù)碼顯示管。本次設(shè)計(jì)中采用7段
17、共陰數(shù)碼顯示管應(yīng)用簡(jiǎn)單、可靠性高、成本低,作為顯示輸出。連接時(shí)段選信號(hào)接在P0口的P0.0~P0.6七個(gè)I/O口上,P1口是準(zhǔn)雙向I/O接口在輸出驅(qū)動(dòng)部分具有驅(qū)動(dòng)4個(gè)TTL負(fù)載的能力,即輸出電流不大于400μA,所以在接電阻時(shí)選擇接510Ω限流電阻。而在位選方面采用單片機(jī)P2口的P2.0~P2.2三個(gè)I/O口作為位選信號(hào)的輸出口。</p><p><b> 軟件設(shè)計(jì)</b></p&g
18、t;<p> 4.1 主程序的設(shè)計(jì)</p><p> 此程序的及時(shí)采用定時(shí)器T0和T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序。系統(tǒng)主程序流程圖如圖3-1所示。</p><p> 圖3-1 系統(tǒng)主程序流程圖</p><p> 4.2顯示子程序的設(shè)計(jì)</p><p> 由于采用軟件動(dòng)態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示,顯示用十進(jìn)制BCD碼
19、的數(shù)據(jù)對(duì)應(yīng)段碼存放在ROM表中。顯示時(shí),先取出70H~75H某一地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示段碼從P0口輸出。P2口將對(duì)應(yīng)的數(shù)碼管選中,就能顯示該地址單元的數(shù)據(jù)值。</p><p> 4.3定時(shí)器T0、T1中斷服務(wù)程序的設(shè)計(jì)</p><p> 定時(shí)器T0用于響鈴程序,定時(shí)器T1用于計(jì)時(shí)程序。當(dāng)答題剩余5秒種時(shí)P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音,提示選手。中斷服務(wù)程序流程圖如
20、圖3-2所示。</p><p><b> N </b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p> 圖3-2 中斷服務(wù)程序流程圖&l
21、t;/p><p><b> 4.4程序清單</b></p><p><b> 定時(shí)器T1時(shí)間初值</b></p><p> 設(shè)50ms時(shí)間初值為Z,Z的計(jì)算方法為</p><p> (216- Z)×12=12×50×103,結(jié)果Z=15536D=3CB0H<
22、/p><p> OK EQU 20H ;搶答開始標(biāo)志位</p><p> RING EQU 22H ;響鈴標(biāo)志位</p><p><b> ORG 0000H</b></p><p><b> AJMP MAIN</b>
23、</p><p><b> ORG 0003H</b></p><p> AJMP INT0SUB</p><p><b> ORG 000BH</b></p><p> AJMP T0INT</p><p><b> ORG 0013H</b>
24、;</p><p> AJMP INT1SUB</p><p><b> ORG 001BH</b></p><p> AJMP T1INT</p><p><b> ORG 0040H</b></p><p> MAIN: MOV R1,#30
25、 ;初設(shè)搶答時(shí)間為30s</p><p> MOV R2,#60 ;初設(shè)答題時(shí)間為60s</p><p> MOV TMOD,#11H ;設(shè)置定時(shí)器T0/T1模式1</p><p> MOV TH0,#0F0H</p><p> MOV
26、 TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b> SETB EA</b></p><p><b&g
27、t; SETB ET0</b></p><p><b> SETB ET1</b></p><p><b> SETB EX0</b></p><p> SETB EX1 ;允許四個(gè)中斷,T0/T1/INT0/INT1</p><p>
28、<b> CLR OK</b></p><p><b> CLR RING</b></p><p><b> SETB TR1</b></p><p> SETB TR0 ;一開始就運(yùn)行定時(shí)器,以開始顯示FFF</p><p>
29、 =====查詢程序=====</p><p> START: MOV R5,#0BH</p><p> MOV R4,#0BH</p><p> MOV R3,#0BH</p><p> ACALL DISPLAY ;未開始搶答時(shí)候顯示FFF</p><p> JB P3.0
30、,NEXT;ddddddd</p><p> ACALL DELAY</p><p> JB P3.0,NEXT</p><p> ACALL BARK ;按鍵發(fā)聲</p><p><b> MOV A,R1</b></p><p> M
31、OV R6,A ;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間</p><p> SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答</p><p> MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p> AJMP COUNT
32、 ;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在COUNT里面</p><p> NEXT: JNB P1.0,FALSE1</p><p> JNB P1.1,FALSE2</p><p> JNB P1.2,FALSE3</p><p> JNB P1.3,FALSE4</p><p>
33、 AJMP START</p><p> TZ1: JMP FALSE7</p><p> TZ2: JMP FALSE8</p><p> =====非法搶答處理程序=====</p><p> FALSE1: ACALL BARK; ; 按鍵發(fā)聲</p>&
34、lt;p> MOV R3,#01H</p><p> AJMP ERROR</p><p> FALSE2: ACALL BARK</p><p> MOV R3,#02H</p><p> AJMP ERROR</p><p> FALSE3: ACALL BARK</p><p
35、> MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: ACALL BARK</p><p> MOV R3,#04H</p><p> AJMP ERROR</p><p> =====INT0(搶答時(shí)間R1調(diào)整程序)=====</p>&
36、lt;p> INT0SUB:MOV A,R1</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p><p><b> MOV R4,B</b></p>&
37、lt;p> MOV R3,#0AH</p><p> ACALL DISPLAY ;先在兩個(gè)時(shí)間LED上顯示R1</p><p> JNB P3.4,INC0 ; P3.4為+1s鍵,如按下跳到INCO</p><p> JNB P3.5,DEC0
38、 ; P3.5為-1s鍵,如按下跳到DECO</p><p> JNB P3.1,BACK0 ; P3.1為確定鍵,如按下跳到BACKO</p><p> AJMP INT0SUB</p><p> INC0: MOV A,R1</p><p> CJNE A,#63H,ADD0 ;如果不是99
39、,R2加1,如果加到99,R1就置0,重新加起。</p><p> MOV R1,#00H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> ADD0: INC R1</p><p> ACALL DELAY1</p><p>
40、 AJMP INT0SUB</p><p> DEC0: MOV A,R1</p><p> JZ SETR1 ;如果R1為0, R1就置99</p><p><b> DEC R1</b></p><p> ACALL DELAY1</p>
41、;<p> AJMP INT0SUB</p><p> SETR1: MOV R1,#63H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> BACK0: RETI </p><p> =====INT1(回答時(shí)間R2調(diào)整程序)===
42、==</p><p> INT1SUB:MOV A,R2</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p><p><b> MOV R4,B</b&g
43、t;</p><p> MOV R3,#0AH</p><p> ACALL DISPLAY</p><p> JNB P3.4,INC1</p><p> JNB P3.5,DEC1</p><p> JNB P3.1,BACK1</p><p> AJMP INT1SUB<
44、/p><p> INC1: MOV A,R2</p><p> CJNE A,#63H,ADD1</p><p> MOV R2,#00H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> ADD1: INC R2</
45、p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> DEC1: MOV A,R2</p><p><b> JZ SETR2</b></p><p><b> DEC R2</b></p><p&
46、gt; ACALL DELAY1</p><p> AJMP INT1SUB</p><p> SETR2: MOV R2,#63H</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> BACK1: RETI </p><p>
47、; ===倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)===</p><p> COUNT: MOV R0,#00H ;重置定時(shí)器中斷次數(shù)</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;重置定時(shí)
48、器</p><p> RECOUNT:MOV A,R6;R6 保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6</p><p> MOV B,#0AH</p><p> DIV AB ;除十分出個(gè)位/十位</p><p> MOV 30H,A
49、 ;十位存于(30H)</p><p> MOV 31H,B ;個(gè)位存于(31H)</p><p> MOV R5,30H ; 取十位</p><p> MOV R4,31H
50、 ; 取個(gè)位</p><p><b> MOV A,R6</b></p><p> SUBB A,#07H</p><p> JNC LARGER ; 大于5s跳到LARGER,小于等于5s會(huì)提醒</p><p><b&
51、gt; MOV A,R0</b></p><p> CJNE A,#0AH,FULL 1s中0.5s向下運(yùn)行</p><p><b> CLR RING </b></p><p> AJMP CHECK</p><p> FULL: CJNE A,#14H,C
52、HECK 下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b> SETB RING</b></p><p><b> MOV A,R6</b></p><p> JZ QUIT ;計(jì)時(shí)完畢</p>
53、;<p> MOV R0,#00H</p><p> DEC R6 ;一秒標(biāo)志減1</p><p> AJMP CHECK</p><p> LARGER: MOV A,R0</p><p> CJNE A,#14H,CHECK
54、 如果1s向下運(yùn)行,否者跳到查"停/顯示"</p><p> DEC R6 ;計(jì)時(shí)一秒R6自動(dòng)減1</p><p> MOV R0,#00H</p><p> CHECK: JNB P3.1,QUIT ;如按
55、下停止鍵退出</p><p> ACALL DISPLAY</p><p> JB OK,ACCOUT 如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過(guò)查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)</p><p> AJMP RECOUNT</p><p> ACCOUT:JNB P1.0,TRUE1</p><p&
56、gt; JNB P1.1,TRUE2</p><p> JNB P1.2,TRUE3</p><p> JNB P1.3,TRUE4</p><p> JNB P1.4,TRUE5</p><p> JNB P1.5,TRUE6</p><p> JNB P1.6,TZ3</p><p&
57、gt; JNB P1.7,TZ4</p><p> AJMP RECOUNT</p><p> TZ3: JMP TRUE7</p><p> TZ4: JMP TRUE8 </p><p> QUIT: CLR OK ; 如果按下了"停止鍵"執(zhí)行的程
58、序</p><p><b> CLR RING</b></p><p> AJMP START</p><p> =====正常搶答處理程序=====</p><p> TRUE1: ACALL BARK ;按鍵發(fā)聲</p&
59、gt;<p><b> MOV A,R2</b></p><p> MOV R6,A ; 搶答時(shí)間R2送R6</p><p> MOV R3,#01H</p><p> CLR OK 因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答
60、</p><p> AJMP COUNT</p><p> TRUE2:ACALL BARK</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#02H</p>&l
61、t;p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE3:ACALL BARK;</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p>&
62、lt;p> MOV R3,#03H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE4:ACALL BARK;</p><p><b> MOV A,R2</b></p><p><b&g
63、t; MOV R6,A</b></p><p> MOV R3,#04H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> =====犯規(guī)搶答程序=====</p><p> ERROR: MOV R0,#00H&l
64、t;/p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p> MOV 34H,R3 ;犯規(guī)號(hào)數(shù)暫存與(34H)</p><p> HERE: MOV A,R0</p><p> CJNE A,#0AH,F
65、LASH ; 0.5s向下運(yùn)行->滅并停響</p><p><b> CLR RING </b></p><p> MOV R3,#0AH</p><p> MOV R4,#0AH</p><p> MOV R5,#0AH
66、 ; 三燈全滅</p><p> AJMP CHECK1</p><p> FLASH: CJNE A,#14H,CHECK1 下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b> SETB RING</b></p><p> MOV R0,#00H</p
67、><p> MOV R3,34H ;取回號(hào)數(shù)</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH ;顯示FF和號(hào)數(shù)</p><p> AJMP CHECK1<
68、/p><p> CHECK1: JNB P3.1,QUIT1</p><p> ACALL DISPLAY</p><p><b> AJMP HERE</b></p><p> QUIT1: CLR RING</p><p><b> CLR OK</b></
69、p><p> AJMP START</p><p> =====顯示程序=====</p><p> DISPLAY:MOV DPTR,#DAT1 查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,</p><p><b> MOV A,R3</b></p><p> MOV
70、C A,@A+DPTR</p><p> MOV P2,#0feH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p> MOV DPTR,#DAT2</p><p><b> MOV A,R5</b><
71、;/p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fdH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p><b> MOV A,R4</b></p><p
72、> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p><b> RET</b></p><p> DAT1:DB 00h,0
73、6h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H </p><p> ;"滅","1","2","3","4","5","6","7","8","9","滅"
74、;,"F"</p><p> DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H</p><p> ;第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅</p><p> ====加減時(shí)間延時(shí)(起到不會(huì)按下就加N個(gè)數(shù))======</p><p> DEL
75、AY1: MOV 35H,#08H</p><p> LOOP0: ACALL DISPLAY</p><p> DJNZ 35H,LOOP0</p><p><b> RET</b></p><p> =====延時(shí)(顯示和去抖動(dòng)用到)=====</p><p> DELAY: M
76、OV 32H,#12H</p><p> LOOP: MOV 33H,#0AFH</p><p> LOOP1: DJNZ 33H,LOOP1</p><p> DJNZ 32H,LOOP</p><p><b> RET</b></p><p> =====發(fā)聲程序=====&l
77、t;/p><p> BARK: SETB RING</p><p> ACALL DELAY1</p><p> ACALL DELAY1</p><p> CLR RING;按鍵發(fā)聲</p><p><b> RET</b></p><p> =====TO溢
78、出中斷(響鈴程序)=====</p><p> T0INT: MOV TH0,#0ECH</p><p> MOV TL0,#0FFH</p><p> JNB RING,OUT;</p><p> CPL P3.6;RING 標(biāo)志位為1時(shí)候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音</p><p>
79、OUT: RETI</p><p> =====T1溢出中斷(計(jì)時(shí)程序)=====</p><p> T1INT: MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p><b> INC R0</b></p><p><b> RETI
80、</b></p><p><b> END</b></p><p><b> 結(jié)束語(yǔ)</b></p><p> 經(jīng)過(guò)將近二周的單片機(jī)課程設(shè)計(jì),終于完成了四路搶答器的設(shè)計(jì),雖然沒(méi)有完全達(dá)到設(shè)計(jì)要求,但還是收獲良多。通過(guò)這次課程設(shè)計(jì),使我更進(jìn)一步地熟悉了單片機(jī)芯片的工作原理和其具體的使用方法。單片機(jī)課程設(shè)計(jì)重
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于at89c51單片機(jī)的多人搶答器設(shè)計(jì)課程設(shè)計(jì)
- 基于at89c51單片機(jī)的多人搶答器設(shè)計(jì)
- 基于89c51單片機(jī)的數(shù)字搶答器課程設(shè)計(jì)
- 單片機(jī)搶答器課程設(shè)計(jì) --搶答器
- 單片機(jī)at89c51
- 基于51單片機(jī)搶答器的課程設(shè)計(jì)
- 單片機(jī)搶答器課程設(shè)計(jì)
- 單片機(jī)搶答器課程設(shè)計(jì)
- 單片機(jī)搶答器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---搶答器
- 搶答器 單片機(jī)課程設(shè)計(jì)
- at89c51單片機(jī)課程設(shè)計(jì)說(shuō)明書
- 課程設(shè)計(jì)--基于at89c51單片機(jī)控制步進(jìn)電機(jī)
- 畢業(yè)設(shè)計(jì)---聲光顯示89c51單片機(jī)搶答器
- 基于at89c51單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)搶答器(16路搶答器)
- 課程設(shè)計(jì)--基于51單片機(jī)8路搶答器設(shè)計(jì)
- 智力搶答器單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)多路搶答器
- 畢業(yè)設(shè)計(jì)(論文)-基于at89c51單片機(jī)的六路智能搶答器的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論