版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 《單片機(jī)原理與接口技術(shù)》</p><p><b> 課程設(shè)計(jì)報(bào)告書</b></p><p> 設(shè)計(jì)題目: 八路搶答器的設(shè)計(jì) </p><p> 專 業(yè): 自動(dòng)化 </p><p> 班 級(jí): 二班
2、 </p><p> 學(xué)生姓名: </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)教師: </p><p> 2013年12月16日</p><
3、p> 物理與電子工程學(xué)院 課程設(shè)計(jì)任務(wù)書</p><p><b> 摘 要</b></p><p> 搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競賽場合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個(gè)單位,如果專門購一臺(tái)搶答器雖然在經(jīng)濟(jì)上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時(shí)性
4、就會(huì)影響活動(dòng)的開展,因此設(shè)計(jì)了本搶答器。 </p><p> 本設(shè)計(jì)是以八路搶答為基本理念??紤]到依需設(shè)定限時(shí)回答的功能,利用AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶
5、答為無效;搶答限定時(shí)間和回答問題的時(shí)間可在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。</p><p> 關(guān)鍵字:搶答器;競賽;單片機(jī)</p><p><b> 目 錄</b></p><p>
6、1 設(shè)計(jì)任務(wù)與要求5</p><p><b> 1.1設(shè)計(jì)目的5</b></p><p><b> 1.2設(shè)計(jì)要求5</b></p><p> 2 總體設(shè)計(jì)思路5</p><p> 3 硬件電路設(shè)計(jì)5</p><p> 3.1原理圖的確定5</p&
7、gt;<p> 3.2搶答器接口電路6</p><p> 3.3時(shí)序控制電路設(shè)計(jì)6</p><p> 3.4復(fù)位電路的設(shè)計(jì)6</p><p> 3.5晶振電路的設(shè)計(jì)7</p><p> 3.6報(bào)警電路設(shè)計(jì)8</p><p> 3.7 選手搶答鍵(矩陣式鍵盤)8</p>
8、<p> 3.8顯示與顯示驅(qū)動(dòng)電路9</p><p><b> 4 軟件設(shè)計(jì)10</b></p><p> 4.1系統(tǒng)主程序設(shè)計(jì)10</p><p> 4.2 程序清單11</p><p><b> 5 仿真調(diào)試19</b></p><p>&
9、lt;b> 6 總結(jié)20</b></p><p> 參 考 文 獻(xiàn)20</p><p><b> 1 設(shè)計(jì)任務(wù)與要求</b></p><p><b> 1.1設(shè)計(jì)目的</b></p><p> 鞏固單片機(jī)原理與接口技術(shù)課程中所學(xué)的知識(shí),提高學(xué)生的動(dòng)手能力和創(chuàng)新能力,培
10、養(yǎng)學(xué)生查閱資料和閱讀文獻(xiàn)的能力,培養(yǎng)學(xué)生初步的科研能力,為畢業(yè)設(shè)計(jì)奠定基礎(chǔ)。</p><p> 主要內(nèi)容:本課程設(shè)計(jì)主要是利用單片機(jī)原理與接口技術(shù)課程中所學(xué)的知識(shí),完成一個(gè)知識(shí)競賽中用到的8路搶答器的設(shè)計(jì)。設(shè)計(jì)內(nèi)容包括硬件電路原理圖、顯示程序設(shè)計(jì)、硬件和軟件的綜合調(diào)試。</p><p><b> 1.2設(shè)計(jì)要求</b></p><p>
11、(1)以80C51系列單片機(jī)為核心器件,組成一個(gè)8路搶答器,能夠供8個(gè)參賽隊(duì)進(jìn)行搶答。</p><p> (2)在現(xiàn)有的單片機(jī)實(shí)驗(yàn)系統(tǒng)上完成硬件電路接線。</p><p> (3)完成該課題的程序設(shè)計(jì)、提交程序設(shè)計(jì)框圖及程序設(shè)計(jì)清單。</p><p> (4)完成硬件與軟件的綜合調(diào)試,實(shí)現(xiàn)預(yù)定功能。</p><p> (5)通過老師審
12、核,提交課程設(shè)計(jì)報(bào)告。</p><p><b> 2 總體設(shè)計(jì)思路</b></p><p> 接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置,“開始”狀態(tài),宣布“開始”搶答器工作。定時(shí)器倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶
13、答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次操作“開始、停止”狀態(tài)開關(guān)。</p><p><b> 3 硬件電路設(shè)計(jì)</b></p><p><b> 3.1原理圖的確定</b></p><p> 單片機(jī)實(shí)現(xiàn)搶答的原理圖同搶答電路的接口電路</p><p>
14、;<b> 如圖3-1-1</b></p><p> 圖3-1-1單片機(jī)實(shí)現(xiàn)搶答的原理圖</p><p> 3.2搶答器接口電路</p><p> 參考電路如圖3-1-1所示。該電路完成兩個(gè)功能:一是分辨出 選手按鍵的先后,并鎖存優(yōu)先搶答者的編號(hào),同時(shí)譯碼顯示電路顯示編號(hào);二是禁止其他選手按鍵操作無效。如有再
15、次搶答需由主持人將S開關(guān)重新置,“清除” 然后再進(jìn)行下一次搶答。 </p><p> 3.3時(shí)序控制電路設(shè)計(jì)</p><p> 時(shí)序控制電路是搶答器設(shè)計(jì)的關(guān)鍵,它要完成以下功能:</p><p> a.主持人將控制開關(guān)撥到"開始"位置時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路進(jìn)人正常搶答工作狀態(tài)?! ?
16、 </p><p> b.當(dāng)參賽選手按動(dòng)搶答鍵時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路停止工作</p><p> 3.4復(fù)位電路的設(shè)計(jì)</p><p> 外部中斷和內(nèi)部中斷并存,單片機(jī)硬件復(fù)位端,只要持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲(chǔ)器的值都恢復(fù)到了初始值,因?yàn)楸驹O(shè)計(jì)中功能中有倒計(jì)時(shí)時(shí)間的記憶功能,所
17、以不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完成復(fù)位。復(fù)位電路如圖3-4-1,3-4-2所示: </p><p><b> 復(fù)位電路原理圖</b></p><p> 圖3-4-2復(fù)位電路 圖3-4-1復(fù)位電路</p><p>
18、; 該復(fù)位電路采用上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種復(fù)位方式,圖中網(wǎng)絡(luò)標(biāo)號(hào)所指9連接到單片機(jī)的復(fù)位引腳。要實(shí)現(xiàn)復(fù)位只需在,51系列單片機(jī)的RESET引腳上加上5ms的高電平就可以了。上電復(fù)位是利用電容的充電來實(shí)現(xiàn)的,即上電瞬間RESET端的電位與Vcc相同,隨著電容上儲(chǔ)能增加,電容電壓也逐漸增大,充電電流減小,RESET端的電位。這樣就會(huì)建立一個(gè)脈沖電壓,調(diào)節(jié)電容與電阻的大小可對(duì)脈沖的持續(xù)時(shí)間進(jìn)行調(diào)節(jié)。通常若采用12MHz的晶振時(shí),復(fù)位元件參
19、數(shù)為22μF的電解電容和10kΩ的電阻。按鈕復(fù)位電路是通過按下復(fù)位按鈕時(shí),電源對(duì)RESET端維持兩個(gè)機(jī)器周期的高電平實(shí)現(xiàn)復(fù)位的。</p><p> 3.5晶振電路的設(shè)計(jì)</p><p> MSC-51單片機(jī)的定時(shí)控制功能是用時(shí)鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)中采用內(nèi)部時(shí)鐘方式。如圖3-5-1所示</p><p
20、> 圖3-5-1晶振電路原理圖</p><p><b> 3.6報(bào)警電路設(shè)計(jì)</b></p><p> 報(bào)警電路用于報(bào)警,當(dāng)遇到報(bào)警信號(hào)時(shí),發(fā)出警報(bào)。一般喇叭是一種電感性圖5報(bào)警電路圖。8951驅(qū)動(dòng)喇叭的信號(hào)為各種頻率的脈沖。因此,最簡單的喇叭驅(qū)動(dòng)方式就是利用達(dá)林頓晶體管,或者以兩個(gè)常用的小晶體管連接成達(dá)林頓架勢。如圖3-6-1中電阻R為限流電阻,在此利用
21、晶體管的高電流增益,以達(dá)到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個(gè)10K的上拉電阻。</p><p> 選手在設(shè)定的時(shí)間內(nèi)搶答時(shí),實(shí)現(xiàn):優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次作"清除"和"開始"狀態(tài)開關(guān)。</p><p> 3.
22、7 選手搶答鍵(矩陣式鍵盤)</p><p> AT89C51的P1口做一個(gè)為選手搶答的輸入按鍵引腳,如圖3-7-1,P1.0至P1.7輪流輸出低電位,給每一個(gè)選手編號(hào)1至8,當(dāng)選手按下按鈕時(shí),P1口個(gè)端口的電平變化從P1口輸入,經(jīng)單片機(jī)處理后從P0輸出由數(shù)碼管顯示搶答者編號(hào)。</p><p> 圖3-7-1選手搶答鍵電路</p><p> 3.8顯示與顯示驅(qū)
23、動(dòng)電路</p><p> 此電路包括顯示和驅(qū)動(dòng),顯示采用數(shù)碼管,如圖3-8-1驅(qū)動(dòng)用P2口, 違規(guī)者編號(hào)、搶答30秒倒計(jì)時(shí)、正常搶答者編號(hào)和回答問題時(shí)間60秒倒計(jì)時(shí),數(shù)碼管采用動(dòng)態(tài)顯示。驅(qū)動(dòng)電路P2口,查詢顯示程序利用P0口做段選碼口輸出P2低3位做位選碼輸出,當(dāng)為低電平則能驅(qū)動(dòng)數(shù)碼管使其顯示數(shù)字。在+5V電壓下接10k的電阻,保證正常壓降。</p><p><b> 4 軟
24、件設(shè)計(jì)</b></p><p> 4.1系統(tǒng)主程序設(shè)計(jì)</p><p> 為了能夠達(dá)到搶答的公平、公正、合理,應(yīng)該在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時(shí)間,因而在編開始搶答前的程序得先編寫設(shè)定時(shí)間的程序。如圖4-1-1所示當(dāng)時(shí)間設(shè)好了之后,主持人發(fā)布搶答命令按下P1.7按鍵,程序開</p><p> 始打開定時(shí)中斷開始倒計(jì)時(shí),然后調(diào)用鍵盤掃描子
25、程序,編寫鍵盤掃描程序。當(dāng)在掃描到有人按下了答題鍵,馬上關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤。</p><p><b> 4.2 程序清單</b></p><p> 定時(shí)器T1時(shí)間初值:</p><p> 設(shè)50ms時(shí)間初值為Z,Z的計(jì)算方法為</p><p> (216- Z)×12=12×50
26、×103,結(jié)果Z=15536D=3CB0H</p><p> OK EQU 20H ;搶答開始標(biāo)志位</p><p> RING EQU 22H ;響鈴標(biāo)志位</p><p> DATA0 EQU 36H ;搶答按鍵口數(shù)據(jù)存放地址</p><p><b> ORG 0000H&
27、lt;/b></p><p><b> AJMP MAIN</b></p><p><b> ORG 0003H</b></p><p> AJMP INT0SUB</p><p><b> ORG 000BH</b></p><p>
28、AJMP T0INT</p><p><b> ORG 0013H</b></p><p> AJMP INT1SUB</p><p><b> ORG 001BH</b></p><p> AJMP T1INT</p><p><b> ORG 0040
29、H</b></p><p> MAIN: MOV R1,#30 ;初設(shè)搶答時(shí)間為30s</p><p> MOV R2,#60 ;初設(shè)答題時(shí)間為60s</p><p> MOV TMOD,#11H ;設(shè)置未定時(shí)器/模式1</p><p> MOV TH0,#0F0H</p>
30、<p> MOV TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b> SETB EA</b></p><p><b> SETB ET0&
31、lt;/b></p><p><b> SETB ET1</b></p><p><b> SETB EX0</b></p><p> SETB EX1 ;允許四個(gè)中斷,T0/T1/INT0/INT1</p><p><b> CLR OK</b&
32、gt;</p><p><b> CLR RING</b></p><p><b> SETB TR1</b></p><p> SETB TR0 ;一開始就運(yùn)行定時(shí)器,以開始顯示PPP.如果想重新計(jì)數(shù),重置TH1/TL1就可以了</p><p><b> ;查
33、詢程序</b></p><p> START: MOV DATA0,#0FFH ;初始化</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH</p><p> MOV R3,#0BH</p><p> ACALL DISPLAY
34、 ;未開始搶答時(shí)候顯示PPP</p><p> JNB P3.3 ,INT0SUB</p><p> JNB P3.4,TZ1 ;倒計(jì)時(shí)調(diào)整</p><p> JB P3.0,NEXT ;ddddddd</p><p> ACALL DELAY</p><p> JB
35、 P3.0,NEXT ;去抖動(dòng),如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢</p><p> SETB EX0 ;開放INT0 </p><p> ACALL BARK ;按鍵發(fā)聲</p><p><b> MOV A,R1</b><
36、/p><p> MOV R6,A ;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間</p><p> SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是 </p><p> 否查詢搶答(在使用錦囊時(shí)用作判斷是搶</p><p> 答倒計(jì)時(shí)還是回答倒計(jì)時(shí))
37、</p><p> MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p> AJMP COUNT ;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序" </p><p><b> 在COUNT里面</b></p><p> NEXT: JNB
38、P1.0,FALSE1</p><p> JNB P1.1,FALSE2</p><p> JNB P1.2,FALSE3</p><p> JNB P1.3,FALSE4</p><p> JNB P1.4,FALSE5</p><p> JNB P1.5,FALSE6</p><p&g
39、t; JNB P1.6,TZ1</p><p> JNB P1.7,TZ2</p><p> AJMP START</p><p> TZ1: JMP FALSE7</p><p> TZ2: JMP FALSE8</p><p><b> ;非法搶答處理程序</b>&
40、lt;/p><p> FALSE1: ACALL BARK ;按鍵發(fā)聲</p><p> MOV R3,#01H</p><p> AJMP ERROR</p><p> FALSE2: ACALL BARK</p><p> MOV R3,#02H</p><p&g
41、t; AJMP ERROR</p><p> FALSE3: ACALL BARK</p><p> MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: ACALL BARK</p><p> MOV R3,#04H</p><p>
42、AJMP ERROR</p><p> FALSE5: ACALL BARK</p><p> MOV R3,#05H</p><p> AJMP ERROR</p><p> FALSE6: ACALL BARK</p><p> MOV R3,#06H</p><p> AJMP
43、 ERROR</p><p> FALSE7: ACALL BARK</p><p> MOV R3,#07H</p><p> AJMP ERROR</p><p> FALSE8: ACALL BARK</p><p> MOV R3,#08H</p><p> AJMP ERR
44、OR</p><p> ;INT0(搶答時(shí)間R1調(diào)整程序)</p><p> INT0SUB: MOV A,R1</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p&
45、gt;<p><b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY ;先在兩個(gè)時(shí)間LED上顯示R1</p><p> JNB P3.4,INC0 ;P3.4為+1s鍵,如按下跳到INCO</p
46、><p> JNB P3.5,DEC0 ;P3.5為-1s鍵,如按下跳到DECO</p><p> JNB P3.1,BACK0 ;P3.1為確定鍵,如按下跳到BACKO</p><p> AJMP INT0SUB</p><p> INC0: MOV A,R1</p>
47、;<p> CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到 </p><p> 99,R1就置0,重新加起。</p><p> MOV R1,#00H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p>
48、<p> ADD0: INC R1</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> DEC0: MOV A,R1</p><p> JZ SETR1 ;如果R1為0, R1就置99,</p><p
49、><b> DEC R1</b></p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> SETR1: MOV R1,#63H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p&
50、gt;<p> BACK0: RETI </p><p> ;INT1(回答時(shí)間R2調(diào)整程序)</p><p> INT1SUB: MOV A,R2</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b>
51、; MOV R5,A</b></p><p><b> MOV R4,B</b></p><p> MOV R3,#0AH</p><p> ACALL DISPLAY</p><p> JNB P3.4,INC1</p><p> JNB P3.5,DEC1</p&
52、gt;<p> JNB P3.1,BACK1</p><p> AJMP INT1SUB</p><p> INC1: MOV A,R2</p><p> CJNE A,#63H,ADD1</p><p> MOV R2,#00H</p><p> ACALL DELAY1</p&g
53、t;<p> AJMP INT1SUB</p><p> ADD1: INC R2</p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> DEC1: MOV A,R2</p><p><b> JZ SETR2</b&
54、gt;</p><p><b> DEC R2</b></p><p> ACALL DELAY1</p><p> AJMP INT1SUB</p><p> SETR2: MOV R2,#63H</p><p> ACALL DELAY1</p><p>
55、 AJMP INT1SUB</p><p> BACK1: RETI ;倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都</p><p><b> 跳到改程序)</b></p><p> COUNT: MOV R0,#00H ;重置定時(shí)器中斷次數(shù)</p><p>
56、; MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;重置定時(shí)器</p><p> RECOUNT: MOV A,R6 ;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)</p><p><b> 間或回答時(shí)間給R6</b></p><p> MOV
57、B,#0AH</p><p> DIV AB ;除十分出個(gè)位/十位</p><p> MOV 30H,A ;十位存于(30H)</p><p> MOV 31H,B ;個(gè)位存于(31H)</p><p> MOV R5,30H ;取十位<
58、/p><p> MOV R4,31H ;取個(gè)位</p><p><b> MOV A,R6</b></p><p> SUBB A,#07H</p><p> JNC LARGER ;大于5s跳到LARGER,小于等于5s會(huì)提醒</p><p><
59、;b> 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,CHECK
60、 ;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,</p><p><b> 重新計(jì)</b></p><p><b> SETB RING</b></p><p><b> MOV A,R6</b></p><p> JZ QUIT ;計(jì)
61、時(shí)完畢</p><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 ;如果1s
62、向下運(yùn)行,否者跳到查"停/顯示"</p><p> DEC R6 ;計(jì)時(shí)一秒R6自動(dòng)減1</p><p> MOV R0,#00H</p><p> CHECK: JNB P3.1,QUIT ;如按下停止鍵退出</p><p> ACALL DISPL
63、AY</p><p> JB OK,ACCOUT ;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否</p><p> 者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答</p><p><b> 作用)</b></p><p> AJMP RECOUNT</p><p> ACCOUT
64、: MOV A,DATA0 </p><p> JNB P1.0,TRUE1</p><p> JNB P1.1,TRUE2</p><p> JNB P1.2,TRUE3</p><p> JNB P1.3,TRUE4</p><p> JNB P1.4,TRUE5</p><
65、p> JNB P1.5,TRUE6</p><p> JNB P1.6,TZ3</p><p> JNB P1.7,TZ4</p><p> AJMP RECOUNT</p><p> TZ3: JMP TRUE7</p><p> TZ4: JMP TRUE8 </
66、p><p> QUIT: CLR OK ;如果按下了"停止鍵"執(zhí)行的程序</p><p><b> CLR RING</b></p><p> AJMP START</p><p><b> ;正常搶答處理程序</b></p&
67、gt;<p> TRUE1: ACALL BARK ;按鍵發(fā)聲</p><p><b> MOV A,R2</b></p><p> MOV R6,A ;搶答時(shí)間R2送R6</p><p> MOV R3,#01H</p><
68、;p> CLR OK ;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就</p><p><b> 鎖了搶答</b></p><p> AJMP COUNT</p><p> TRUE2:ACALL BARK;</p><p><b> MOV A,R2</
69、b></p><p><b> MOV R6,A</b></p><p> MOV R3,#02H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE3:ACALL BARK;</p>
70、<p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#03H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><
71、;p> TRUE4:ACALL BARK;</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#04H</p><p><b> CLR OK</b></p>&
72、lt;p> AJMP COUNT</p><p> TRUE5: ACALL BARK;</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p> MOV R3,#05H</p><p><
73、;b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE6: ACALL BARK;</p><p><b> MOV A,R2</b></p><p><b> MOV R6,A</b></p><p>
74、 MOV R3,#06H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE7: ACALL BARK;</p><p><b> MOV A,R2</b></p><p><b> MO
75、V R6,A</b></p><p> MOV R3,#07H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE8: ACALL BARK;</p><p><b> MOV A,R2</b&
76、gt;</p><p><b> MOV R6,A</b></p><p> MOV R3,#08H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p><b> ;犯規(guī)搶答程序</b><
77、;/p><p> ERROR: MOV R0,#00H</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&g
78、t;<p> CJNE A,#0AH,FLASH ;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
79、 ;三燈全滅</p><p> AJMP CHECK1</p><p> FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號(hào)數(shù)并清</p><p><b> R0,重新計(jì)</b></p><p><b> SETB RING</b
80、></p><p> MOV R0,#00H</p><p> MOV R3,34H ;取回號(hào)數(shù)</p><p> MOV R5,#0BH</p><p> MOV R4,#0BH ;顯示PP和號(hào)數(shù)</p><p> AJMP CHECK1&
81、lt;/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>&l
82、t;/p><p> AJMP START</p><p><b> ;顯示程序</b></p><p> DISPLAY:MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸</p><p> 出/P2低三位做位選碼輸出,</p><p><b&g
83、t; MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0feH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p> MOV DPTR,#DAT2</
84、p><p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fdH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p&g
85、t;<b> MOV A,R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p><p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p><b> R
86、ET</b></p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H </p><p> ;"滅","1","2","3","4","5","6","
87、7","8","9","滅","P"</p><p> DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H</p><p> ;第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅</p><p> DELAY1:
88、 MOV 35H,#08H ;加減時(shí)間延時(shí)(起到不會(huì)按下就加N個(gè)數(shù))</p><p> LOOP0: ACALL DISPLAY</p><p> DJNZ 35H,LOOP0</p><p> RET ;延時(shí)(顯示和去抖動(dòng)用到)</p><p> DELAY: MOV 32H
89、,#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><b> ;發(fā)聲程序</b&g
90、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>
91、<p> ;TO溢出中斷(響鈴程序)</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ā)出一定頻率的
92、聲音</p><p> 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>
93、; RETI ;INTT0中斷服務(wù)程序</p><p> INTT0:MOV DATA0,P1</p><p><b> CLR EX0</b></p><p><b> RETI </b></p><p><b> END
94、</b></p><p><b> 5 仿真調(diào)試</b></p><p> 試驗(yàn)的程序通過Keil軟件編譯,產(chǎn)生HEX文件如圖5-1-1所示</p><p> 圖5-1-1程序在Keil軟件上編譯結(jié)果</p><p> 通過Proteus進(jìn)行仿真,如仿真結(jié)果所示,按下開始后,數(shù)碼管開始倒計(jì)時(shí),仿真結(jié)果
95、如圖5-1-2所示。</p><p> 圖5-1-2 Proteus仿真</p><p> 當(dāng)有選手按下按扭時(shí),數(shù)碼管顯示選手號(hào)碼并開始倒計(jì)時(shí),如圖5-1-3所示:</p><p> 圖5-1-3 選手按下鍵的Proteus仿真結(jié)果</p><p> 通過仿真結(jié)果證實(shí),該方案可行。該設(shè)計(jì)方案同過51系列單片機(jī)的P0口作為段選輸出,用P
96、2口作為位選輸出,動(dòng)態(tài)掃描LED顯示管,顯示時(shí)間。并通過接在P3.0-P3.6口的按鍵開關(guān)控制開始、結(jié)束、喇叭提示等功能。P1口接選手按鍵,控制搶答。本設(shè)計(jì)實(shí)現(xiàn)簡單,成本較低很適合我們大學(xué)生動(dòng)手實(shí)踐。</p><p><b> 6 總結(jié)</b></p><p> 經(jīng)過歷時(shí)兩周的時(shí)間,通過查閱書籍、文獻(xiàn)終于把八路搶答器的設(shè)計(jì)完成了。在這其間,讓我更加了解到單片機(jī)的神
97、奇,更加體會(huì)到單片機(jī)軟件硬件結(jié)合所能發(fā)揮的能量。雖然在設(shè)計(jì)其間遇到了很多難題,如:繁瑣的程序設(shè)計(jì),復(fù)雜的硬件電路組合等,但是經(jīng)過不斷的查閱資料,反復(fù)地推敲中我還是順利完成了這個(gè)設(shè)計(jì)。通過自己動(dòng)手,我學(xué)會(huì)了很多東西:在學(xué)習(xí)設(shè)計(jì)中不可能一蹴而就,這需要我們反復(fù)推敲,不斷學(xué)習(xí)新的知識(shí);這次設(shè)計(jì)是我更加了解了單片機(jī),使我能夠更加熟練地應(yīng)用單片機(jī)知識(shí)。</p><p><b> 參 考 文 獻(xiàn)</b>
98、;</p><p> 【1】張迎新.單片機(jī)初級(jí)教程. 北京: 航空航天大學(xué)出版社,2007.</p><p> 【2】韓志軍,沈晉源,王振波.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M]機(jī)械工業(yè)出版社,2005年</p><p> 【3】李全利.單片機(jī)原理與接口技術(shù)[M]高等教育出版社,2009年第二版</p><p> 【4】馬淑蘭.單片機(jī)技術(shù)及應(yīng)用實(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)---八路搶答器
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器設(shè)計(jì)課程設(shè)計(jì)
- 《八路搶答器》課程設(shè)計(jì)報(bào)告
- 八路搶答器課程設(shè)計(jì)報(bào)告
- 八路搶答器eda課程設(shè)計(jì)
- 八路定時(shí)搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)報(bào)告
- 八路搶答器cpld課程設(shè)計(jì)
- 八路搶答器的設(shè)計(jì)課程設(shè)計(jì)
- 八路電子搶答器課程設(shè)計(jì)
- 電子課程設(shè)計(jì)--八路搶答器
- 八路搶答器課程設(shè)計(jì)報(bào)告
- 八路搶答器課程設(shè)計(jì) (2)
- 八路搶答器-eda課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論