版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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ù)位電路:當一輪進行完時,由主持人按下,下一輪倒計時開始,復(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ù)位.只有當RST由高電平變低電平以后。MCS-51才從0000H地址開始執(zhí)行程序。本系統(tǒng)采用按鍵復(fù)位方式的復(fù)位電路。</p><p> 復(fù)位電路:當一輪進行完時,由主持人按下,下一輪倒計時開始,如圖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口線,當單片機應(yīng)用系統(tǒng)鍵盤中需要的按鍵比較少或I/O口線比較富余時,可以采用這樣類型的鍵盤。 </p><p> 獨立式按鍵鍵盤:用于輸入高低電平,八位選手搶答時高低電平發(fā)生變化,如圖3.3所示。<
15、;/p><p> 圖3.3 搶答按鍵部分</p><p> ?。?)數(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> ?。?)蜂鳴器電路設(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標志位置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單元標志位是否為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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于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
提交評論