版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1 引言4</b></p><p> 2 總體方案設(shè)計4</p><p> 3 硬件電路設(shè)計5</p><p> 3.1 單片機及其外圍電路5</p><p> 3.2 硬件電路組成
2、6</p><p> 4 系統(tǒng)軟件設(shè)計10</p><p> 4.1 初始化程序設(shè)計10</p><p> 4.2 主程序設(shè)計11</p><p> 4.3 倒計時30s子程序的設(shè)計12</p><p> 4.4 外部中斷T1中斷子程序設(shè)計14</p><p> 4.5 定
3、時器T1中斷子程序設(shè)計17</p><p> 4.6 選手按鍵程序的設(shè)計18</p><p> 4.7 數(shù)碼管顯示程序的設(shè)計19</p><p> 5 系統(tǒng)調(diào)試與總結(jié)21</p><p> 附錄A 系統(tǒng)原理圖22</p><p> 附錄B 源程序22</p><p><
4、;b> 1 引言</b></p><p> 此次設(shè)計提出了用80C51單片機為核心控制元件,設(shè)計一個簡易的搶答器,本方案以80C51單片機作為主控核心,與數(shù)碼管、蜂鳴器等構(gòu)成八路搶答器,利用了單片機的延時電路、按鍵復(fù)位電路、時鐘電路、定時/中斷等電路,設(shè)計的八路搶答器具有倒計時和實時顯示搶答選手的號碼的特點,還有復(fù)位電路,使其再開始新的一輪的答題和比賽。</p><p&g
5、t; 它的功能實現(xiàn)是比賽開始,主持人讀完題之后按下總開關(guān),倒計時開始,此時數(shù)碼管開始進行30s的倒計時,是選手的思考時間,倒計時完后,才允許開始搶答,若有人答題,對應(yīng)的會在數(shù)碼管上顯示出該選手的編號并由蜂鳴器發(fā)出聲音,在30s倒計時內(nèi)答題無效。</p><p><b> 2 總體方案設(shè)計</b></p><p> 圖2.1 總體電路設(shè)計框圖</p>
6、<p> 總體程序設(shè)計思路圖為如圖2.1所示。</p><p> 復(fù)位電路:當(dāng)一輪進行完時,由主持人按下,下一輪倒計時開始,復(fù)位電路接P3.3口。</p><p> 獨立式按鍵鍵盤:用于輸入高低電平,連接到P1口,由P1口檢測電平的變化。</p><p> 搶答器倒計時顯示電路:有三位數(shù)碼管組成,前兩位顯示30s倒計時,由第三位顯示成功搶答選手
7、編號。</p><p> 蜂鳴電路:有選手搶答成功,P3.1口發(fā)出脈沖,使蜂鳴器發(fā)出聲音。</p><p><b> 3 硬件電路設(shè)計</b></p><p> 3.1 單片機最小系統(tǒng)</p><p> 微控制器采用AT89C51。AT89C51是美國ATMEL公司生產(chǎn)的與MCS-51系列單片機完全兼容的高性能C
8、MOS 8位單片機,MCS-51系列單片機以其推出時間早、配套資源豐富、開發(fā)手段完善、性價比高等特點而得到了廣泛的應(yīng)用,是單片機的主流品種。</p><p> AT89C51的內(nèi)部資源主要包括:</p><p> ·與MCS--51 系列完全兼容的高性能8位CPU;</p><p> ·4K字節(jié)可重復(fù)編程的Flash存儲器;</p&g
9、t;<p> ·256字節(jié)的SRAM;</p><p> ·4個8位的并行口,共32條I/O口線;</p><p> ·3個16位的定時器/計數(shù)器;</p><p> ·6個中斷源,2個中斷優(yōu)先級的中斷系統(tǒng);</p><p> ·一個全雙工的串行口;</p>
10、<p><b> ·內(nèi)部振蕩器;</b></p><p><b> ·可編程串行通道 </b></p><p> ·低功耗的閑置和掉電模式 </p><p> ·片內(nèi)振蕩器和時鐘電路</p><p> 其最小系統(tǒng)主要包括復(fù)位電路,時鐘電
11、路,如下圖3.1所示。</p><p> 圖3.1 單片機最小系統(tǒng)電路圖</p><p> 3.2 硬件電路功能說明</p><p> ?。?)復(fù)位電路的設(shè)計</p><p> MCS-5l的復(fù)位輸入引腳RST為MCS-51提供了初始化的手段,可以使程序從指定處開始執(zhí)行,在MCS-5l的時鐘電路工作后,只要RST引腳上出現(xiàn)超過兩個機器周
12、期以上的高電平時,即可產(chǎn)生復(fù)位的操作.只要RST保持高電平,則MCS-5l循環(huán)復(fù)位.只有當(dāng)RST由高電平變低電平以后。MCS-51才從0000H地址開始執(zhí)行程序。本系統(tǒng)采用按鍵復(fù)位方式的復(fù)位電路。</p><p> 復(fù)位電路:當(dāng)一輪進行完時,由主持人按下,下一輪倒計時開始,如圖3.2所示。</p><p> 圖3.2 復(fù)位控制電路</p><p> ?。?)獨立
13、式按鍵鍵盤設(shè)計</p><p> 鍵盤接口中使用多少根I/O線,鍵盤中就有幾個按鍵,鍵盤接口使用了8根I/O口線,該鍵盤就有8個按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。因此可以根據(jù)實際需要對鍵盤中的按鍵靈活的編碼。</p><p> 最簡單的編碼方式就是根據(jù)I/O輸入口所直接反映的相應(yīng)按鍵,按下的狀態(tài)進行編碼,稱按鍵直接狀態(tài)碼,對于這樣編碼的獨立式鍵盤,CP
14、U可以通過直接讀取I/O口的狀態(tài)來獲取按鍵的直接狀態(tài)編碼值,根據(jù)這個值直接進行按鍵識別,這樣形式的鍵盤結(jié)構(gòu)簡單,按鍵識別容易。</p><p> 獨立式鍵盤的缺點是需要占用比較多的I/O口線,當(dāng)單片機應(yīng)用系統(tǒng)鍵盤中需要的按鍵比較少或I/O口線比較富余時,可以采用這樣類型的鍵盤。 </p><p> 獨立式按鍵鍵盤:用于輸入高低電平,八位選手搶答時高低電平發(fā)生變化,如圖3.3所示。<
15、;/p><p> 圖3.3 搶答按鍵部分</p><p> (3)數(shù)碼管顯示部分設(shè)計 </p><p> LED動態(tài)顯示是單片機中應(yīng)用最為廣泛的一種顯示方式,其接口電路是把所有顯示器的8個筆劃段a-dp 同名端并聯(lián)在一起,而每一個顯示器的公共極COM是各自獨立地受I/O線控制,CPU的字段輸出口送出字形碼時,所有顯示器由于同名端并連接收到相同的字形碼,但究竟哪個
16、顯示器亮,則取決于COM端,而這一端是由I/O控制的,所以就可以自行決定何時顯示哪一位了,在輪流點亮掃描過程中,每位顯示器的點亮?xí)r間表是極為短暫的,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝將就盡管實際上各位顯示器并非間時點亮,但只要掃描速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。</p><p> 搶答器倒計時顯示電路:有三位數(shù)碼管組成,前兩位顯示30s倒計時,第三位顯示成功搶答選手編號,如圖3
17、.4所示。</p><p> 圖3.4 顯示控制部分圖</p><p> (4)蜂鳴器電路設(shè)計</p><p> 我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的巨型波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),
18、使喇叭發(fā)出不同的聲音。單片機通過內(nèi)部定時器的操作實現(xiàn)交替變換的波形輸出驅(qū)動揚聲器發(fā)聲,有選手搶答成功,使蜂鳴器發(fā)出聲音,如圖3.5所示。</p><p> 圖3.5 蜂鳴器提示時間部分圖</p><p><b> 4 系統(tǒng)軟件設(shè)計</b></p><p> 系統(tǒng)軟件分為主程序、中斷服務(wù)程序和子程序三部分</p><p
19、> 4.1 主程序(主程序流程框圖見圖4.1)</p><p> 圖4.1 主程序流程框圖</p><p> 主程序是系統(tǒng)上電或復(fù)位后首先要執(zhí)行的程序,主程序主要完成系統(tǒng)的初始化、掃描顯示、掃描鍵盤等工作。程序流程如圖4.1所示,對單片機進行初始化,包括設(shè)置堆棧、倒計時30S設(shè)置、定時器T0設(shè)置,外部中斷設(shè)置,鍵盤掃描設(shè)置,初始化狀態(tài)時顯示000。</p>&l
20、t;p> 4.3 倒計時30s子程序:(定時器T0中斷子程序框圖如圖4.2所示)</p><p> 圖4.2 定時器T0中斷子程序框圖 </p><p> 首先要把累加器ACC和程序狀態(tài)字PSW放入堆棧保護,然后進行倒計時的設(shè)置,設(shè)置為30S倒計時,先看看1S到?jīng)],如果到,倒計時自動減1,并在數(shù)碼管顯示,再判斷倒計時的30s到?jīng)],沒到繼續(xù)倒計時并顯示,倒計時計完為止,然后彈
21、出累加器ACC與程序狀態(tài)字PSW,中斷退出,返回到中斷入口處。 </p><p> 4.4 外部中斷T1中斷子程序:(外部T1中斷子程序框圖如圖4.3所示)</p><p> 圖4.3 外部T1中斷子程序框圖</p><p> 外部中斷T1中斷時要先把累加器ACC和程序狀態(tài)字PSW放入堆棧保護,然后把20H標(biāo)志位置0,再調(diào)用顯示程序,T0開始定時,T1停止
22、,然后設(shè)置30S倒計時,設(shè)置之后彈出累加器ACC與程序狀態(tài)字PSW,中斷退出,返回到中斷入口處。 </p><p> 4.5 定時器T1中斷子程序:(定時器T1中斷程序框圖如圖4.4所示)</p><p> 圖4.4 定時器T1中斷程序框圖</p><p> 定時器T1中斷時要先把累加器ACC和程序狀態(tài)字PSW放入堆棧保護,然后就是響鈴,接上喇叭,利用延時
23、程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。設(shè)置之后彈出累加器ACC與程序狀態(tài)字PSW,中斷退出,返回到中斷入口處。 </p><p> 4.6 選手按鍵程序:(鍵盤掃描程序框圖如圖4.5所示)</p><p> 圖4.5 鍵盤掃描程序框圖</p><p> 鍵盤掃描時先判斷20H單元和21H單元標(biāo)志位是否為0,
24、是的話說明允許鍵盤掃描,否的話即不允許鍵盤掃描,不允許掃描就返回調(diào)用,結(jié)束,允許掃描時開始掃描P1口看有沒有選手按下答題鍵,按下時此口變?yōu)榈碗娖?,如果沒有選手按鍵,則判斷P1口有沒有掃描完,沒有掃描完就繼續(xù)掃描,掃面完沒有選手按下就檢查20H和21H</p><p> 4.7 數(shù)碼管顯示程序:(顯示子程序框圖如圖4.6所示)</p><p> 圖4.6 顯示子程序框圖</p&
25、gt;<p> 進入顯示子程序先把選手的號碼顯示于01數(shù)碼管,然后是選手的答題時間十秒鐘倒計時顯示,把個位顯示在02數(shù)碼管上,把十位顯示在04數(shù)碼管上,同時把倒計時的數(shù)值減1后存在61H和62H中,判斷倒計時是否結(jié)束到0,結(jié)束的話返回調(diào)用,倒計時沒有結(jié)束即繼續(xù)倒計時。</p><p><b> 5 總結(jié)</b></p><p> 這次課程設(shè)計老師給
26、我們安排了兩個星期的時間,可以說是比較充裕的。雖然如此,我還是很用心的做設(shè)計程序,剛拿到題目,感覺太繁雜了,不知怎么下手,雖然這些知識以前都有接觸過,但也只是分部分來接觸,而這次的設(shè)計是要對前面幾次實驗的一個綜合,真的很難。也翻閱了一些資料,到圖書館翻閱了很多資料,可是還是一片空白,于是也在網(wǎng)上參考一些個程序,然后自己事先編寫好了程序,到了周一去到機房時候,把自己寫的程序燒進去芯片里面,發(fā)現(xiàn)不行,才知是我把段碼地址搞錯了,所以不能在數(shù)碼
27、管上正常顯示。通過運用單片機設(shè)計八路搶答器程設(shè)計,發(fā)現(xiàn)自己的很多不足,自己知識的很多漏洞,看到了自己的實踐經(jīng)驗還是比較缺乏,理論聯(lián)系實際的能力還急需提高。</p><p><b> 附錄A 系統(tǒng)原理圖</b></p><p><b> 附錄B 源程序</b></p><p> KEY_OPEN EQU 20H&l
28、t;/p><p> KEY EQU 21H</p><p> BOOL EQU P3.1</p><p><b> ORG 0000H</b></p><p><b> LJMP MAIN</b></p><p><b> ORG 0
29、00BH</b></p><p><b> LJMP T0</b></p><p><b> ORG 0013H</b></p><p><b> LJMP INT1</b></p><p> ORG 0001BH</p><p>&
30、lt;b> LJMP T1</b></p><p><b> MAIN:</b></p><p> MOV SP,#70H</p><p> MOV R1,#60H</p><p> MOV R5,#20</p><p><b> MOV A,#0<
31、/b></p><p><b> MOV 59H,A</b></p><p> MOV TMOD,#21H</p><p> MOV TH0,#3CH</p><p> MOV TL0,#0B0H</p><p> MOV TH1,#7FH</p><p>
32、 MOV TL1,#7FH</p><p><b> CLR BOOL</b></p><p><b> CLR KEY</b></p><p><b> SETB IT1</b></p><p><b> SETB ET0</b></p&
33、gt;<p><b> SETB ET1</b></p><p><b> SETB EX1</b></p><p><b> SETB EA</b></p><p> CLR KEY_OPEN</p><p> WAIT:LCALL KEY_SCAN&
34、lt;/p><p> LCALL DISPLY</p><p><b> SJMP WAIT</b></p><p> T0: PUSH ACC</p><p><b> PUSH PSW</b></p><p> MOV TH0,#3CH</p><
35、;p> MOV TL0,#0B0H</p><p> DJNZ R5,T0END</p><p> MOV R5,#10</p><p><b> MOV A,59H</b></p><p><b> DEC A</b></p><p> CJNE A,#0
36、,L1</p><p><b> CLR TR0</b></p><p><b> SETB KEY</b></p><p> L1: MOV 59H,A</p><p><b> MOV A,#10</b></p><p><b>
37、 MOV B,A</b></p><p><b> MOV A,59H</b></p><p><b> DIV AB</b></p><p> MOV R1,#62H</p><p><b> DA A</b></p><p>&l
38、t;b> MOV @R1,A</b></p><p><b> DEC R1</b></p><p><b> MOV A,B</b></p><p><b> MOV @R1,A</b></p><p> LCALL DISPLY</p>
39、;<p> T0END:POP PSW</p><p><b> POP ACC</b></p><p><b> RETI</b></p><p> T1:PUSH ACC</p><p><b> PUSH PSW</b></p>&l
40、t;p> MOV R0,#20</p><p> DJNZ R0,L2</p><p> LJMP T1END</p><p> L2:CPL BOOL</p><p> T1END:POP PSW</p><p><b> POP ACC</b></p><
41、p><b> RETI</b></p><p> INT1:PUSH ACC</p><p><b> PUSH PSW</b></p><p> CLR KEY_OPEN</p><p> MOV P1,#0FFH</p><p> LCALL DISPL
42、Y</p><p> MOV 60H,#0</p><p> MOV 61H,#0</p><p> MOV 62H,#0</p><p><b> SETB TR0</b></p><p><b> CLR TR1</b></p><p>
43、;<b> CLR KEY</b></p><p> MOV 59H,#31</p><p><b> POP ACC</b></p><p><b> POP PSW</b></p><p><b> RETI</b></p>&
44、lt;p><b> KEY_SCAN:</b></p><p> JNB KEY,KEYEND0</p><p> JB KEY_OPEN ,KEYEND0</p><p> JNB P1.0,KEY1</p><p> JNB P1.1,KEY2</p><p> JNB
45、 P1.2,KEY3</p><p> JNB P1.3,KEY4</p><p> JNB P1.4,KEY5</p><p> JNB P1.5,KEY6</p><p> JNB P1.6,KEY7</p><p> JNB P1.7,KEY8</p><p> L
46、JMP KEYEND0</p><p> KEY1: MOV 60H,#1</p><p> LJMP KEYEND</p><p> KEY2: MOV 60H,#2</p><p> LJMP KEYEND</p><p> KEY3: MOV 60H,#3</p><p>
47、 LJMP KEYEND</p><p> KEY4: MOV 60H,#4</p><p> LJMP KEYEND</p><p> KEY5: MOV 60H,#5</p><p> LJMP KEYEND</p><p> KEY6: MOV 60H,#6</p><p>
48、; LJMP KEYEND</p><p> KEY7: MOV 60H,#7</p><p> LJMP KEYEND</p><p> KEY8: MOV 60H,#8</p><p> KEYEND:SETB KEY_OPEN</p><p><b> SETB TR1</b>
49、;</p><p> KEYEND0:MOV P1,#0FFH</p><p><b> RET</b></p><p> DELAY: MOV R7,#100</p><p> DS2: MOV R6,#100</p><p><b> DJNZ R6,$</b
50、></p><p> DJNZ R7,DS2</p><p><b> RET</b></p><p> DISPLY: MOV R4,#3</p><p> MOV R1,#60H</p><p> MOV R3,#01H</p><p> LOO
51、P1: MOV A,R3</p><p> MOV DPTR,#9002H</p><p> MOVX @DPTR,A</p><p> MOV DPTR,#TAB</p><p> MOV A,@R1</p><p> MOVC A,@A+DPTR</p><p> M
52、OV DPTR,#9004H</p><p> MOVX @DPTR,A</p><p> LCALL DELAY1</p><p><b> INC R1</b></p><p><b> MOV A,R3</b></p><p><b> R
53、L A</b></p><p> JB ACC.3 ,L3</p><p><b> MOV R3,A</b></p><p> LJMP LOOP1</p><p> L3: MOV A,#01H</p><p> MOV R1,#60H</p><
54、;p><b> MOV R3,A</b></p><p><b> RET</b></p><p> TAB: DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H</p><p> DB 7FH 6FH 77H 7CH 39H 5EH 79H 71H</p><p&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機的八路搶答器課程設(shè)計
- 基于51單片機的八路搶答器課程設(shè)計
- 基于51單片機的八路搶答器課程設(shè)計.doc
- 單片機課程設(shè)計---基于51單片機的八路競賽搶答器的設(shè)計
- 基于51單片機八路搶答器的設(shè)計
- 單片機八路搶答器課程設(shè)計
- 單片機課程設(shè)計---八路搶答器
- 單片機八路搶答器課程設(shè)計
- 課程設(shè)計---單片機八路搶答器設(shè)計
- 基于單片機的八路智能搶答器課程設(shè)計
- 基于單片機的八路智能搶答器課程設(shè)計
- 單片機課程設(shè)計八路搶答器設(shè)計
- 八路搶答器課程設(shè)計---基于單片機的八位搶答器的設(shè)計
- 課程設(shè)計-單片機原理基于單片機的八路搶答器設(shè)計
- 單片機課程設(shè)計報告--八路搶答器
- 基于單片機的八路智能搶答器課程設(shè)計.doc
- 課程設(shè)計--基于單片機控制的八路搶答器計
- 課程設(shè)計--基于單片機控制的八路搶答器計
- 基于51單片機的八路搶答器設(shè)計(含視頻)
- 基于單片機的八路搶答器
評論
0/150
提交評論