版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 1 設計課題任務、功能要求說明及總體方案介紹</p><p> 1.1 設計課題任務</p><p> ?。ㄒ唬┰O計題目:單片機搶答器課程設計</p><p><b> (二)設計任務:</b></p><p> 通過理論知識的運用和實物制作相結合,寫出搶答器匯編程序,做出搶答器實物,掌握
2、和理解《單片機技術》書本中所學的理論知識和實驗方法,掌握一些單片機應用系統(tǒng)的設計方法,掌握keil和proteus軟件的使用方法,提高自己的思維能力、學習能力以及動手實踐能力,為以后從事電子電路設計、研發(fā)電子產品打下良好的基礎。</p><p> 1.2 功能要求說明</p><p> 設計一個具有特定功能的搶答器。該搶答器上電或按鍵復位后能自動顯示系統(tǒng)提示符“P.”, 進入準備工作
3、狀態(tài)。主持人按下開始按鈕后,搶答開始并限定時間30S;10S內無人搶答,蜂鳴器發(fā)出音響;主持人按下開始按鈕之前有人按下搶答器,搶答違規(guī),顯示器顯示違規(guī)臺號,違規(guī)指示燈亮,其它按鈕不起作用;正常搶答,顯示器顯示臺號,蜂鳴器發(fā)出音響,其它搶答按鈕無效;正常搶答下,從按下搶答按鈕開始30S內,答完按鈕沒按下,則作超時處理,超時處理時,違規(guī)指示燈亮,數碼管顯示違規(guī)臺號。蜂鳴器發(fā)出音響;各臺數字顯示的消除,蜂鳴器音響及違規(guī)指示燈的關斷,都要通過主
4、持人按復位按鈕。</p><p> 1.3 設計總體方案介紹</p><p> 設計中采用AT89S52芯片、LED顯示器、蜂鳴器、LED燈、數碼管和一些獨立式按鍵構成一個簡易六路搶答器。設計中是采用單片機的內部定時器進行定時,原理框圖如圖1所示 </p><p> 圖1 搶答器原理框圖</p><p> 整個搶答器的工作原理是:在
5、正常的供電狀態(tài)下顯示“P.”,開始搶答時利用單片機倒計時,并由單片機將所需要顯示的數據送到LED顯示器的輸入口,當有鍵按下時則執(zhí)行相應的鍵功能程序。</p><p> 2 搶答器的硬件系統(tǒng)的設計</p><p> 2.1 搶答器硬件系統(tǒng)各模塊功能簡要介紹</p><p> 該搶答器主要由單片機最小系統(tǒng)、按鍵電路模塊、LED顯示電路模塊、蜂鳴電路模塊和LED
6、指示燈電路模塊組成。各模塊的功能如下:</p><p> ?。?)單片機最小系統(tǒng)</p><p> 單片機最小系統(tǒng)包括AT89S52單片機如圖2、晶振電路如圖3所示、復位電路如圖4所示。只有當單片機有了這些電路才會工作。電源電路給單片機供電,晶振電路給單片機提供計數時間,復位電路可以實現單片機的復位。</p><p> 圖2 AT89S52單片機芯片</
7、p><p><b> 圖3 晶振電路</b></p><p><b> 圖4 復位電路</b></p><p> ?。?)獨立鍵盤電路模塊 </p><p> 如圖5所示運用獨立鍵盤電路,設計一段公共接地,另一端通過上拉電阻接到P1口,當有按鍵按下,相應的口就會變成低電平,產生一個下降沿。&l
8、t;/p><p><b> 圖5 獨立鍵盤電路</b></p><p> ?。?)LED顯示電路模塊</p><p> 如圖6所示采用兩個四位一體共陽型數碼管顯示器進行顯示。由于位控線的驅動電流較大,因此在P2口線上接了8個PNP型三極管提高驅動能力;在單片機的P1口線和P2口線上接了16個470Ω的電阻,這些電阻起限流的作用。將段控口a--d
9、p接在P0.0--P0.7上,位控口接在P2口線上,實現對顯示的控制。LED顯示電路模塊主要用來指示第一搶答者,顯示倒計時和違規(guī)的臺號。</p><p> 圖6 LED顯示電路模塊</p><p><b> (4)蜂鳴電路模塊</b></p><p> 如圖7所示單片機P3.1口線上接上一個1KΩ電阻然后再通過一個PNP型三極管與蜂鳴器
10、相連接組成蜂鳴器電路,接入PNP型三極管是為了增強蜂鳴器的驅動電流。蜂鳴電路主要完成提示和違規(guī)報警功能。</p><p> 圖7 蜂鳴電路模塊</p><p> ?。?)LED指示燈電路模塊</p><p> 如圖8所示單片機P3.2口線上經過一個470Ω的電阻與LED燈的陰極相連接,LED燈的陽極接正五伏電壓。470Ω的電阻起限流的作用。LED指示燈電路模塊
11、主要用來指示用違規(guī)操作發(fā)生。</p><p> 圖8 LED 指示燈電路模塊</p><p> ?。?)下載口電路模塊</p><p> 如圖9所示下載口的1腳接P1.5口,2腳懸空,3腳接單片機的復位口,4腳接P1.6口,5腳接P1.7口,6腳接地,7、8、8、10腳接地。</p><p><b> 圖9 下載口電路<
12、/b></p><p> 搶答器電路原理圖、PCB圖、元器件布局圖</p><p> Proteus原理圖、PCB頂層圖、PCB底層圖 、元器件布局圖分別見附錄A附錄B附錄C以及附錄D。</p><p><b> 搶答器元器件清單</b></p><p> 元器件清單見附錄E。</p><
13、;p> 3 搶答器軟件系統(tǒng)的設計</p><p> 3.1 搶答器使用單片機資源的情況</p><p> 該搶答器使用了單片機的定時器的功能,其中具體用到了單片機的定時器0和定時器1,并且讓它們都以中斷方式工作,沒有用到外部中斷。寄存器用到了第0組,第1組,第2組。在數據的顯示時,采用查表的方法,因此需要將表格、數據存放在單片機的程序存儲器上。用到的LED顯示器接到了單片機
14、的P0口線上和P2口線上。LED指示燈和蜂鳴器接在P3口線上。</p><p> 3.2 搶答器軟件系統(tǒng)各模塊功能簡要介紹</p><p> 該搶答器所用的軟件模塊有定時器模塊、按鍵模塊、LED顯示模塊。</p><p><b> ?。?)定時器模塊</b></p><p> 選擇定時器0,設置定時器定時方式為方
15、式1以中斷方式工作,設置定時時間為50ms。</p><p><b> (2)按鍵模塊</b></p><p> 采用獨立式鍵盤,共用七個按鍵對電路進行控制和操作,分別為S1、S2、S3、S4、S5、S6、S7來控制搶答器。S1、S2、S3、S4、S5、S6代表選手;S7為答完鍵、S8為開始鍵、S9為復位鍵。</p><p> ?。?)數碼
16、管顯示模塊</p><p> 搶答器上電顯示“P.”,按開始鍵開始搶答,顯示器顯示倒計時30s,10s內若無人搶答報警一次,若30s內都無人搶答,報警并燈亮。若沒按下開始鍵為無效搶答則顯示器顯示違規(guī)臺號并報警。</p><p> 3.3 搶答器軟件系統(tǒng)程序流程框圖</p><p> 3.3.1 主程序流程框圖</p><p> 主
17、程序流程框圖如圖10所示。</p><p> 圖10 主程序流程框圖</p><p> 3.3.2 開始鍵程序流程框圖</p><p> 開始鍵程序流程框圖如圖11所示。</p><p> 圖11 開始鍵程序流程框圖</p><p> 3.3.3 搶答鍵程序流程框圖</p><p>
18、; 搶答鍵程序流程框圖如圖12所示。</p><p> 圖12 開始鍵程序流程框圖</p><p> 3.3.4 答完鍵程序流程框圖</p><p> 答完鍵程序流程框圖如圖13所示。</p><p> 圖13 答完鍵程序流程框圖</p><p> 3.3.5 復位鍵程序流程框圖</p>
19、<p> 復位鍵程序流程框圖如圖14所示。</p><p> 圖14 答完鍵程序流程框圖</p><p><b> 程序清單</b></p><p><b> 見附錄F。</b></p><p> 搶答器的設計結論、心得體會、教學建議</p><p>
20、4.1 搶答器的設計結論</p><p> 4.1.1 搶答器的設計結論</p><p> 通過對單片機進行外接鍵盤和LED數碼管的操作以及加上硬件電路和軟件的結合,實現了搶答器P.顯示以及搶答倒計時的顯示,正常搶答時顯示臺號,搶答違規(guī)時顯示違規(guī)臺號、違規(guī)指示燈亮、蜂鳴器報警。本課程設計直接在實物數碼管板子上測試和修改,沒有仿真。該搶答器完成了設計任務,符合設計要求。</p&
21、gt;<p> 4.1.2 使用說明</p><p> 本設計的S2到S7為搶答鍵,S8為自定義復位鍵,S9為開始鍵,S1為系統(tǒng)復位鍵。當開始鍵按下后才能進行搶答,搶答時間為30秒,搶答時,其他按鍵無效,答完后,答題人按下答完鍵,答題結束。若10S內無人搶答,蜂鳴器發(fā)出警示音,若計時到仍無人搶答則違規(guī)指示燈亮,蜂鳴器報警。若沒有按下開始就搶答則違規(guī),違規(guī)燈亮,顯示違規(guī)者臺號。若倒計時時間到,還
22、沒按下答完鍵則違規(guī),違規(guī)燈亮。各臺數字顯示的消除、蜂鳴器音響及違規(guī)指示燈的關斷,都要通過主持人按復位鍵來實現。</p><p> 4.2 搶答器課題心得體會及教學建議</p><p> 臨近期末考試,學了一個學期的單片機課了,雖然感覺要掌握的知識內容很復雜,而且需要完成的實驗也比較多,但是真正覺得學到了不少東西。通過這次搶答器課程設計,不僅加深了我對書本知識的認識,而且更加深一步地掌
23、握了單片機的接口技術以及匯編語言的應用和功能。在剛剛接觸單片機匯編語言的時候,別說自己編相關的程序,就是要我看懂某個不太難的程序都感覺有點吃力,然在進行了一系列的知識學習、實驗實踐,特別是這次的搶答器課程設計以后,讓我深刻的了解了單片機的匯編功能以及方法,不僅可以看懂許多的程序,而且也能編寫一些不是太難的程序,也使得自己也不再像以前那樣,總把匯編看成是一個老大難的問題。當然在這其中,也出現了不少問題。比如說在進行數碼管的焊接時,因沒去了
24、解其不同引腳的排列順序,導致數碼管正反順序焊反,從而使得顯示數字也變法了。這算是個自己不細心導致的,所以以后再做此類相關的課程設計或者實驗的時候,許多細節(jié)方便一定得多注意些。</p><p> 從這個學期開始到結束,凌云老師一直都兢兢業(yè)業(yè)的指導我們學好單片機這門課程,很感謝老師的這份責任心。總體來說,我覺得老師的教學還是挺好的,要說建議的話,可能還真說不上一兩點什么。</p><p>&
25、lt;b> 結束語</b></p><p> 將本設計的程序下載到單片機中,通過測試,基本上完成了任務書的要求,并且搶答的精確度也比較高,因為在調用鍵掃描函數的時候是在500ms函數中,基本上每50ms就會調用一次鍵掃描函數。當然對于高精度的搶答比賽,本設計的精度還是不夠的,還需要進一步的改進,甚至可以精度提高到微秒級。還有就是搶答的人數有限,只有六個人,所以當有更多的人搶答時,應該把獨立式
26、鍵盤改接成行列式鍵盤。而且制作工藝比較粗糙。 </p><p> 通過本次單片機課程設計,讓我更加深刻的了解了AT89S52芯片在電氣工程各方面的應用,掌握了keil軟件和proteus軟件的使用操作。</p><p> 而且通過本次單片機課程設計,讓我也意識到了自己的理論知識掌握的不夠熟練,動手實踐能力也有待加強,所以在以后的學習中,一定要努力學會掌握書本上的知識,鍛煉自己在專業(yè)設計
27、方面的動手能力。</p><p><b> 致 謝</b></p><p> 在本次搶答器課程設計的過程中,得到了**老師的悉心指導和同學們的熱情幫助,在這里特別要感謝老師和同學們。雖然說我們是**老師教的第一屆學生,老師在教學經驗和方法上和其他一些有著豐富教學經驗的老師相比,可能欠缺一點,但是真心覺得老師的教學很不錯,特別是不像其他老師那樣管得特別死板,很有活
28、力。也很注重和同學們的溝通和交流,是我們的良師益友哦。</p><p><b> 參考文獻</b></p><p> [1]馬忠梅,籍順心,張凱,馬巖.單片機的C語言應用程序設計[M],北京:北京航空航天大學出版社,2006</p><p> Ma Zhongmei, Ji shunxin, Zhang Kai, MaYan. MCU C
29、 language program design [M] .beijing: Beijing aerospace university press, 2006</p><p> [2]李廣弟,朱月秀,冷祖祁.單片機基礎[M].北京:北京航空航天大學出版社,2007</p><p> Li Guangdi, ZhuYuexiu, Leng Zuqi. Microcontroller [M
30、] .Beijing: Beijing university of aeronautics and press, 2007 </p><p> [3]李光飛.單片機課程設計實例指導[M].北京:北京航空航天大學出版社,2004.9</p><p> Li Guangfei. This course design example guide [M] .Beijing: Beijing u
31、niversity of aeronautics and press, 2004.9 </p><p> ?。?]邢增平.Protel 99 SE設計專家指導[M].北京:中國鐵道出版社,2004</p><p> Xing Zengping. Protel 99 SE design expert guidance [M] .Beijing: China railway publish
32、ing house, 2004 </p><p> 附錄 A proteus原理圖</p><p> 附錄B PCB頂層圖</p><p> 附錄C PCB底層圖</p><p> 附錄D 元器件布局圖</p><p><b> 附錄E 元器件清單</b></p>&
33、lt;p> 附錄 F 匯編語言程序清單</p><p> **************************************************************************</p><p><b> 項目名稱:搶答器</b></p><p><b> 設 計 者:謝湘平</b>
34、;</p><p> 時 間:2012年12月14日</p><p> 項目功能:該搶答器上電或按鍵復位后能自動顯示系統(tǒng)提示符"P.",進入準備工作狀態(tài)。主持人按下開始按鈕后,搶答開始并限定時間30S;10S內無人搶答,蜂鳴器發(fā)出音響;主持人按下開始按鈕之前有人按下搶答器,搶答違規(guī),顯示器顯示違規(guī)臺號,違規(guī)指示燈亮,其它按鈕不起作用;正常搶答,顯示器顯示臺號,
35、蜂鳴器發(fā)出音響,其它搶答按鈕無效;正常搶答下,從按下搶答按鈕開始30S內,答完按鈕沒;按下,則作超時處理,超時處理時,違規(guī)指示燈亮,數碼管顯示違規(guī)臺號,蜂鳴器發(fā)出音響;各臺數字顯示的消除,蜂鳴器音響及違規(guī)指示燈的關斷,都要通過主持人按復位按鈕。</p><p> 偽指令定義**********************************************************************
36、****</p><p> G EQU 78H ;賦值命令 EQU</p><p> SHI EQU 79H</p><p> X1 EQU 7FH</p><p> X2 EQU 7EH</p><p> X3 EQU
37、7DH</p><p> X4 EQU 7CH</p><p> X5 EQU 7BH</p><p> X6 EQU 7AH</p><p> 系統(tǒng)起始程序區(qū)****************************************************************
38、********** </p><p> ORG 0000H </p><p> LJMP MAIN ;跳轉主程序</p><p> ORG 000BH ;定時器0中斷向量區(qū)</p><p> LJMP TTC0 ;跳轉中斷服務子程序
39、</p><p> ORG 001BH ;定時器1中斷向量區(qū)</p><p> LJMP TTC1 ;跳轉中斷服務子程序</p><p> 監(jiān)控程序區(qū)**************************************************************************<
40、/p><p> ORG 0030H</p><p> MAIN:MOV SP, #60H ;設置棧底為60H</p><p> SETB EA ;定時器和中斷初始化</p><p> SETB ET0 ;允許定時器0中斷</p>
41、<p> SETB ET1 ;允許定時器1中斷</p><p> MOV TMOD, #11H ;定時器0/定時器1選擇工作方式1</p><p> MOV TH0, #3CH ;定時器0設置計數初值</p><p> MOV TL0, #0B0H </
42、p><p> MOV TH1, #3CH ;定時器1設置計數初值</p><p> MOV TL1, #0B0H </p><p> MOV DPTR, #DISBH ;系統(tǒng)初始化后提示符"P."字符代碼表首地址</p><p> MOV R5,
43、#08H</p><p> MOV R0, #78H</p><p> DISPTSF:CLR A ;上電顯示P</p><p> MOVC A, @A+DPTR ;查表</p><p> MOV @R0, A</p><p> I
44、NC R0 ;R0自動加1</p><p> INC DPTR ;DPTR自動加1</p><p> DJNZ R5, DISPTSF ;減1條件轉移</p><p> D:LCALL DISP ;調用顯示子程序</p>
45、<p> LCALL KEY;調鍵掃描程序</p><p><b> ;判斷鍵值</b></p><p> JB 20H.7, KEY7 ;指定位狀態(tài)為1轉移</p><p> JB 20H.0, KEY1 ;20H單元地址的第0位</p><p&
46、gt; JB 20H.1, KEY2 ;20H單元地址的第1位</p><p> JB 20H.2, KEY3 ;20H單元地址的第2位</p><p> JB 20H.3, KEY4 ;20H單元地址的第3位</p><p> JB 20H.4, KEY5 ;2
47、0H單元地址的第4位</p><p> JB 20H.5, KEY6 ;20H單元地址的第6位</p><p> LJMP D ;跳轉回D</p><p> 鍵功能程序區(qū)*****************************************************************
48、*********</p><p><b> ;開始鍵</b></p><p> KEY7: MOV A, #30;按下開始鍵,時間30秒</p><p> MOV R2, A ;將A送入R2</p><p> LOOP: LCALL JS
49、;計算當前秒,并送給顯示緩沖區(qū)</p><p> MOV X1, #0FFH </p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL Z1;顯示當前秒</p><p> DEC R2 ;R2自減1<
50、;/p><p> MOV A, R2 ;將R2的值送入寄存器A</p><p> JZ TZ;判斷30秒是否到</p><p> CJNE R2, #20, PDCY;判斷是否過了10秒</p><p> SJMP FM ;跳轉FM
51、</p><p> PDCY:CJNE R2,#10,LOOP ;R2為10跳轉 </p><p> FM: MOV R7,#125</p><p> FM1: CLR P3.1 ;過了10秒,開蜂鳴器</p><p> DJNZ R7,FM1
52、 ;判斷R7是否為1跳轉</p><p> SETB P3.1 ;P3.1置1</p><p> LJMP LOOP ;返回循環(huán)</p><p> TZ: LCALL JS ;停止在00處</p><p> TZ1: LC
53、ALL DISP ;調用顯示子程序</p><p> CLR P3.1 ;P3.1清零</p><p> LCALL KEY</p><p> JNB 20H.6,TZ1 ;</p><p> LJMP FUWEI
54、;跳轉復位程序</p><p><b> 違 規(guī) 區(qū)</b></p><p> **************************************************************************</p><p> 1號選手違規(guī) ;1號違規(guī),顯示1號臺和違規(guī)燈</p><
55、p> KEY1: CLR P3.0 ;P3.0清零</p><p> CLR P3.1 ;P3.1清零</p><p> MOV 7FH, #01H ;01H賦值給7FH</p><p> LCALL DISP ;調用顯示子程序</p>
56、;<p> LCALL KEY </p><p> JNB 20H.6,KEY1</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 2號選手違規(guī) ;2號違規(guī),顯示2號臺和違規(guī)燈</p><p> KEY2: CLR P3
57、.1 ;P3.1清零</p><p> CLR P3.1 ;P3.1清零 </p><p> MOV 7FH, #10H</p><p> MOV 7EH, #02H</p><p> LCALL DISP ;調用
58、顯示子程序</p><p> LCALL KEY</p><p> JNB 20H.6,KEY2</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 3號選手違規(guī) ;3號違規(guī),顯示3號臺和違規(guī)燈</p><p> KEY3: CLR P
59、3.2 ;P3.2清零</p><p> CLR P3.1 ;P3.1清零</p><p> MOV 7FH, #10H</p><p> MOV 7DH, #03H</p><p> LCALL DISP ;調用顯示子程序
60、</p><p> LCALL KEY</p><p> JNB 20H.6,KEY3</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 4號選手違規(guī) ;4號違規(guī),顯示4號臺和違規(guī)燈</p><p> KEY4: CLR P3.
61、3 ;P3.3清零</p><p> CLR P3.1 ;P3.1清零</p><p> MOV 7FH, #10H</p><p> MOV 7CH, #04H</p><p> LCALL DISP ;調用顯示子程序&
62、lt;/p><p> LCALL KEY</p><p> JNB 20H.6,KEY4</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 5號選手違規(guī) ;5號違規(guī),顯示5號臺和違規(guī)燈</p><p> KEY5: CLR P3.4
63、 ;P3.4清零</p><p> CLR P3.1 ;P3.1清零</p><p> MOV 7FH, #10H</p><p> MOV 7BH, #05H</p><p> LCALL DISP ;調用顯示子程序&l
64、t;/p><p> LCALL KEY</p><p> JNB 20H.6,KEY5</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 6號選手違規(guī) ;6號違規(guī),顯示6號臺和違規(guī)燈</p><p> KEY6: CLR P3.5
65、 ;P3.5清零 </p><p> CLR P3.1 ;P3.1清零</p><p> MOV 7FH, #10H</p><p> MOV 7AH, #06H</p><p> LCALL DISP ;調用顯示子程序
66、</p><p> LCALL KEY</p><p> JNB 20H.6,KEY6</p><p> LJMP FUWEI ;跳轉復位程序</p><p><b> 搶 答 區(qū)</b></p><p> ********************
67、******************************************************1號搶答 ;1號搶答,倒計時30秒</p><p> KEY11: MOV R1, #01H</p><p> MOV A, #30 ;預置時間30秒</p><p> MOV R2
68、, A</p><p> LOOP10:LCALL JS ;調用JS</p><p> MOV X1, #01H ;送入#7FH</p><p> CLR P3.1 ;P3.1清零</p><p> LCALL DISP
69、 ;調用顯示子程序</p><p> LCALL Z2 ;調用Z2程序</p><p> DJNZ R2, LOOP10 ;滿1跳轉循環(huán)</p><p> LCALL JS ;繼續(xù)調用JS</p><p> L
70、OOP11:LCALL DISP ;調用顯示子程序</p><p> CLR P3.0 ;P3.0清零</p><p> CLR P3.1 ;P3.1清零</p><p> LCALL KEY</p><p> J
71、NB 20H.6,LOOP11</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 2號搶答;2號搶答,倒計時30秒</p><p> KEY22: MOV R1, #2 </p><p> MOV A, #30
72、 ;預置時間30秒 </p><p> MOV R2, A</p><p> LOOP20:LCALL JS ;調用JS</p><p> MOV X2, #02H ;送入#7EH</p><p> CLR P3.1
73、 ;P3.1清零</p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL Z2 ;調用延時子程序</p><p> DJNZ R2, LOOP20 ;滿1跳轉循環(huán)</p><p> LCALL JS
74、 ;繼續(xù)調用JS</p><p> LOOP21:LCALL DISP ;調用顯示子程序</p><p> CLR P3.0 ;P3.0清零</p><p> CLR P3.1 ;P3.1清零</p><p&g
75、t; LCALL KEY</p><p> JNB 20H.6,LOOP21</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 3號搶答 ;3號搶答,倒計時30秒</p><p> KEY33: MOV R1, #3</p><
76、;p> MOV A, #30 ;預置時間30秒</p><p> MOV R2, A</p><p> LOOP30:LCALL JS ;調用JS</p><p> MOV X3, #03H ;送入#7DH</p><p> CLR
77、 P3.1 ;P3.1清零</p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL Z2 ;調用延時子程序</p><p> DJNZ R2, LOOP30 ;滿1跳轉循環(huán)</p><p> LCALL
78、 JS ;繼續(xù)調用JS</p><p> LOOP31:LCALL DISP</p><p> CLR P3.0 ;P3.0清零</p><p> CLR P3.1 ;P3.1清零</p><p> LCALL KEY<
79、/p><p> JNB 20H.6,LOOP31</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 4號搶答;4號搶答,倒計時30秒</p><p> KEY44: MOV R1, #4</p><p> MOV A,
80、 #30 ;預置時間30秒</p><p> MOV R2, A</p><p> LOOP40:LCALL JS ;調用JS</p><p> MOV X4, #04H ;送入#7CH</p><p> CLR P3.1
81、 ;P3.1清零</p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL Z2 ;調用延時子程序</p><p> DJNZ R2, LOOP40 ;滿1跳轉循環(huán)</p><p> LCALL JS
82、 ;繼續(xù)調用JS</p><p> LOOP41:LCALL DISP</p><p> CLR P3.0 ;P3.0清零</p><p> CLR P3.1 ;P3.1清零</p><p> LCALL KEY</p&
83、gt;<p> JNB 20H.6,LOOP41</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 5號搶答;5號搶答,倒計時30秒</p><p> KEY55: MOV R1, #5</p><p> MOV A,
84、#30 ;預置時間30秒</p><p> MOV R2, A</p><p> LOOP50:LCALL JS ;調用JS</p><p> MOV X5, #05H ;送入#7BH</p><p> CLR P3.1
85、 ;P3.1清零</p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL Z2 ;調用延時子程序</p><p> DJNZ R2, LOOP50 ;滿1跳轉循環(huán)</p><p> LCALL JS
86、 ;繼續(xù)調用JS</p><p> LOOP51:LCALL DISP</p><p> CLR P3.0 ;P3.0清零</p><p> CLR P3.1 ;P3.1清零</p><p> LCALL KEY</p><p
87、> JNB 20H.6,LOOP51</p><p> LJMP FUWEI ;跳轉復位程序</p><p> 6號搶答;6號搶答,倒計時30秒</p><p> KEY66: MOV R1, #6</p><p> MOV A, #30 ;預置
88、時間30秒</p><p> MOV R2, A</p><p> LOOP60:LCALL JS ;調用JS</p><p> MOV X6, #06H ;送入#7AH</p><p> CLR P3.1 ;P3.1清零</p>&
89、lt;p> LCALL DISP ;調用顯示子程序</p><p> LCALL Z2 ;調用延時子程序</p><p> DJNZ R2, LOOP60 ;滿1跳轉循環(huán)</p><p> LCALL JS ;繼續(xù)調用JS</p><p&
90、gt; LOOP61:LCALL DISP</p><p> CLR P3.0 ;P3.0清零</p><p> CLR P3.1 ;P3.1清零</p><p> LCALL KEY </p><p> JNB 20H.6,LOOP61</p>&l
91、t;p> LJMP FUWEI ;跳轉復位程序</p><p><b> 答 完 區(qū)</b></p><p> **************************************************************************</p><p> KEY111:CJNE
92、R1, #1, TT1;1號答完,顯示臺號和當前剩余時間</p><p> SETB P3.1 ;開啟P3.1</p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL KEY</p><p> JB 20H.6,FUWEI<
93、;/p><p> LJMP KEY111</p><p> TT1:LJMP FF</p><p> KEY222:CJNE R1, #2, TT2;2號答完,顯示臺號和當前剩余時間</p><p> SETB P3.1 ;開啟P3.1</p><p>
94、; LCALL DISP ;調用顯示子程序</p><p> LJMP KEY222</p><p> TT2: LJMP FF</p><p> KEY333:CJNE R1, #3, TT3 ;3號答完,顯示臺號和當前剩余時間</p><p> SETB P3.
95、1 ;開啟P3.1</p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL KEY</p><p> JB 20H.6,FUWEI</p><p> LJMP KEY333</p><p> TT3:
96、 LJMP FF</p><p> KEY444:CJNE R1, #4, TT4;4號答完,顯示臺號和當前剩余時間</p><p> SETB P3.1 ;開啟P3.1</p><p> LCALL DISP ;調用顯示子程序</p><p>
97、LCALL KEY</p><p> JB 20H.6,FUWEI</p><p> LJMP KEY444</p><p> TT4: LJMP FF ;跳轉FF</p><p> KEY555:CJNE R1, #5, TT5 ;5號答完,顯示臺號和當前剩余
98、時間</p><p> SETB P3.1 ;開啟P3.1</p><p> LCALL DISP ;調用顯示子程序</p><p> LCALL KEY</p><p> JB 20H.6,FUWEI</p><p> LJMP
99、 KEY555</p><p> TT5: LJMP FF</p><p> KEY666: CJNE R1, #6, TT6 ;6號答完,顯示臺號和當前剩余時間</p><p> SETB P3.1 ;開啟P3.1</p><p> LCALL DISP
100、 ;調用顯示子程序</p><p> LCALL KEY</p><p> JB 20H.6,FUWEI</p><p> LJMP KEY666</p><p> TT6: LJMP FF</p><p> FUWEI: MOV P3,#0FFH</p>&l
101、t;p> LJMP MAIN</p><p> *************************************************************** **********</p><p><b> 子 程 序 區(qū);</b></p><p> ******************************
102、************************************** *****</p><p> 定時器延時子程序******************延時子程序,延時1秒,用于搶答時的倒計時延時</p><p> Z1: PUSH PSW ;堆棧保護</p><p> CLR RS0 ;開啟寄存器組2&l
103、t;/p><p> SETB RS1 </p><p> SETB TR0 ;啟動定時器0</p><p> MOV R5, #20</p><p> EE: LCALL DISP ;調用顯示子程序</p><p> LCALL KEY<
104、;/p><p> JB 20H.0, K1</p><p> JB 20H.1, K2</p><p> JB 20H.2, K3</p><p> JB 20H.3, K4</p><p> JB 20H.4, K5</p><p>
105、JB 20H.5, K6 </p><p> CJNE R5, #0, CC;判斷R5為0跳轉CC</p><p> CLR TR0 ;定時器0清零</p><p> POP PSW </p><p> LJMP BB ;跳轉BB
106、</p><p> CC:LJMP EE ;跳轉EE</p><p> BB:RET ;中斷返回</p><p> 跳轉區(qū)*************************************;由于跳轉范圍有限,在此設一跳轉區(qū)</p><p> K1: LJMP
107、 KEY11</p><p> K2: LJMP KEY22</p><p> K3: LJMP KEY33</p><p> K4: LJMP KEY44</p><p> K5: LJMP KEY55</p><p> K6: LJMP KE
108、Y66</p><p> K11: LJMP KEY111</p><p> K22: LJMP KEY222</p><p> K33: LJMP KEY333</p><p> K44: LJMP KEY444</p><p> K55: LJMP KEY
109、555</p><p> K66: LJMP KEY666</p><p> 定時延時子程序2***************延時子程序,延時1秒,用于回答問題倒計時時的延時</p><p> Z2: PUSH PSW ;堆棧保護</p><p> CLR RS0 ;開啟寄存器組
110、2</p><p> SETB RS1</p><p> SETB TR1 ;開啟定時器1</p><p> MOV R6, #20</p><p> FF: LCALL DISP ;調用顯示子程序</p><p> LCALL KEY</
111、p><p> JB 20H.0, K11</p><p> JB 20H.1, K22</p><p> JB 20H.2, K33</p><p> JB 20H.3, K44</p><p> JB 20H.4, K55</p><p>
112、; JB 20H.5, K66 </p><p> CJNE R6, #0, FF;判斷R6為0跳轉FF</p><p> CLR TR1 ;定時器1清零</p><p> POP PSW ;恢復現場</p><p> RET ;中斷
113、返回</p><p> 計算字符序號子程序 ;把當前秒分成十位和個位送往顯示緩沖數組</p><p> JS: MOV A, R2</p><p> MOV B, #10</p><p><b> DIV AB</b></p><p> MOV
114、 SHI, A</p><p> MOV G, B</p><p><b> ;鍵盤掃瞄子程序</b></p><p> KEY: LCALL KEYCHU; 調P1口數據處理子程序</p><p> JZ EXIT; 沒有鍵按下,轉返回</p&g
115、t;<p> LCALL DISP; 調顯示子程序去抖動</p><p> LCALL DISP;</p><p> LCALL KEYCHU; 調P1口數據處理子程序</p><p> JZ EXIT; 沒有鍵按下,轉返回</p><p> MOV B,
116、 20H ; 保存取反后的鍵值</p><p> KEYSF: LCALL KEYCHU; 調P1口數據處理子程序</p><p> JZ KEYA; 鍵釋放,轉恢復鍵值</p><p> LCALL DISP; 調顯示子程序延時</p><p> LJMP KEYSF;
117、 等待鍵釋放</p><p> KEYA: MOV 20H, B ; 鍵值送20H保存 </p><p> EXIT: RET </p><p> KEYCHU: PUSH PSW; 保護現場 </p><p> MOV P1, #0FFH; 先
118、向P1口寫1 </p><p> MOV A, P1; 讀P1口數據</p><p> CPL A; P1口數據取反</p><p> ANL A, #0FFH;</p><p> MOV 20H , A; </p&g
119、t;<p> POP PSW; ;恢復現場</p><p> RET; ;中斷返回</p><p> ;數碼管顯示子程序DISP</p><p><b> 入口:</b></p><p> 7FH,7EH,7DH,7CH,7BH,7AH,79H,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論