競賽搶答器課程設計報告_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計(論文)</b></p><p>  題 目 名 稱 競 賽 搶 答 器 </p><p>  課 程 名 稱 單片機原理及應用課程設計 </p><p>  學 生 姓 名 </p><p

2、>  學 號 </p><p>  系 、專 業(yè) </p><p>  指 導 教 師 </p><p>  2011年 6 月 25 日</p><p><b>  目 錄</b><

3、/p><p><b>  1 任務要求1</b></p><p><b>  2 方案設計1</b></p><p><b>  2.1設計思路1</b></p><p>  2.2 方案論證2</p><p>  2.3 設計原理2</p&

4、gt;<p>  2.4 系統(tǒng)程序流程3</p><p><b>  3 硬件電路圖5</b></p><p>  3.1 系統(tǒng)電路原理5</p><p>  3.2主要元器件選擇6</p><p><b>  4仿真圖7</b></p><p>  

5、5課程設計心得11</p><p><b>  參考文獻12</b></p><p><b>  致謝13</b></p><p><b>  附錄:14</b></p><p><b>  摘 要</b></p><p>

6、;  知識比賽中,特別是做搶答題目的時候,在搶答過程中,為了知道哪一組或哪一位選手先答題,必須要設計一個系統(tǒng)來完成這個任務。因為在搶答過程中,靠視覺是很難判斷出哪組先答題。利用單片機系統(tǒng)來設計搶答器,使以上問題得以解決,即使各組的搶答時間相差幾微秒,也可分辨出哪組優(yōu)先答題。該課程設計主要介紹了單片機搶答器設計及工作原理,以及它的實際用途。本系統(tǒng)采用AT89C51單片機作為核心??刂葡到y(tǒng)的四個模塊分別為:存儲模塊、顯示模塊、語音模塊、搶答

7、按鍵模塊。該搶答器系統(tǒng)通過開關電路八個按鍵輸入搶答信號;利用語音芯片ISD1420完成語音的錄放功能;利用存儲程序;利用一個四位一體的七段顯示數碼管來完成顯示功能。工作時,在按下?lián)尨痖_始鍵后,用按鍵通過開關電路輸入各路的搶答信號進行搶答,經單片機的處理,輸出控制信號,控制數碼管和語音芯片工作。在位選數碼管上顯示哪一組先答題的號碼,并有倒計時顯示,以及通過語音系統(tǒng)發(fā)出報警聲音,從而實現整個搶答過程。</p><p>

8、;  關鍵詞:搶答;AT89C51;ISD1420;七段顯示譯碼管;</p><p><b>  1任務要求</b></p><p>  此課程設計課題要求設計一個可供八個參賽組或參賽隊員競賽使用的搶答器,每組需設一個按鈕。此搶答器需要有計時與鎖定輸入功能,當發(fā)出“搶答開始”的命令后計時,規(guī)定搶答時間到后無人作答,將發(fā)出“搶答時間到”的信號,同時鎖存輸入電路,從而使各

9、路搶答信號無法再次輸入。再者要求,電路具有第一搶答信號的鑒別與鎖存功能,保證同時使用后輸入的信號無效。此搶答器還需設置計分電路,每組預置100分,答對加10,答錯減10。</p><p><b>  2 方案設計</b></p><p><b>  2.1設計思路</b></p><p>  經過對任務要求的分析,我的設計

10、思路是競賽搶答器要有報警系統(tǒng),要是在規(guī)定時間內還沒有參賽者搶答或回答出問題時就會發(fā)出報警聲,倒計時為設定為5S。并且如果出現犯規(guī)搶答時也會發(fā)出報警并且顯示該犯規(guī)選手的編號。</p><p>  這個搶答器可同時供不大于8名選手或8個代表隊參加比賽,各用一個搶答按鈕,按鈕的編號與選手的編號是相對應的,分別是S1、S2、S3、S4、S5、S6、S7、S8;給節(jié)目主持人設置二個控制按鈕開關,用來控制系統(tǒng)的清零和搶答的開

11、始;該八路搶答器具有程序存儲、數據鎖存和顯示功能,搶答開始后,若有選手按動搶答按鈕,編號立即鎖存, 并在數碼管上顯示出選手的編號,同時蜂鳴器給出音響提示,此外,要封鎖輸入電路,禁止其他選手搶答,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清零為止; 搶答器具有定時搶答的功能,且一次搶答,定時的時間可由主持人設定加減。</p><p>  當節(jié)目主持人啟動"開始"鍵后,要求定時器立即減計時,并用顯示

12、器顯示,同時蜂鳴器發(fā)出短暫的聲響,聲響持續(xù)時間 0.5S左右,參賽選手在設定的時間內搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答時刻的時間, 并保持到主持人將系統(tǒng)清零;如果定時搶答的時間不大于5S后,卻沒有選手搶答時,系統(tǒng)持續(xù)報警,直到定時搶答的時間為零,本次搶答無效,并封鎖輸入電路,禁止選手超時后搶答,時間顯示器上顯示FFF 犯規(guī)處理;如果主持人沒按"開始"鍵,就有選手搶答,則顯示選手編碼,并持續(xù)報警;如

13、果已經有選手搶答了,別的選手則按鍵無效。直到主持人重新復位按下開始鍵為止。</p><p>  主持人可以根據不同的問答方式設定不同的搶答時間和回答時間。</p><p><b>  2.2 方案論證</b></p><p>  該系統(tǒng)采用MCS-51系列單片機AT89C51作為控制核心,該系統(tǒng)可以完成運算控制、信號識別以及顯示功能的實現。由于

14、用了單片機,使其技術比較成熟,應用起來方便、簡單并且單片機周圍的輔助電路也比較少,便于控制和實現。整個系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進行功能的擴張和更改性。 CS-51單片機特點如下:</p><p>  1) 可靠性好:單片機按照工業(yè)控制要求設計,抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU ,程序指令和數據都可以寫在ROM許多信號通道都在同一芯片,因此可靠性高。</p><p>  2

15、) 易擴充:單片機有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴充為各種規(guī)模的微電腦系統(tǒng)</p><p>  3) 控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。</p><p>  該方案不但從性能上優(yōu)越,而且在使用上及其功能的實現上都較簡潔,并且由于單片機具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外AT89S51單

16、片機采用12MHz的晶振,提高了信號的測量精度,并且使該系統(tǒng)可以通過軟件改進來擴張功能。</p><p><b>  2.3 設計原理</b></p><p>  本電路采用單片機AT89C51作為控制芯片,單片機的P0口外接七段顯示數碼管,數碼管用來顯示八位選手的號碼。并在各個外接電路上并接開關按鍵,按鍵另一端接地。發(fā)光二極管采用共陽極接法,由于P0口為高電平呈輸入

17、狀態(tài),當有按鍵按下時,P0口呈低電平與按鍵對應的發(fā)光二極管滿足點亮條件點亮。在程序編程上采用查詢,查詢P1口P1.0到P1.7的八個端口呈低電平,即查詢是哪個選手先按鍵,然后將選手號碼送至數碼管上顯現出來。</p><p>  蜂鳴器是利用三極管處于開關狀態(tài)是的導通與截止工作,在三極管導通時蜂鳴器工作,三極管截止時蜂鳴器不工作。三極管采用8550 PNP型基極接于P3.7口置其低電平時三極管導通,置其高電平時三極

18、管截止。</p><p>  數碼管采用共陰極七段顯示,其內部發(fā)光二極管為共陰極接低電平。在主持人按下開始鍵后,10秒倒計時在數碼管上顯示。搶答選手按下鍵的時候,其號碼被送往數碼管進行顯示。選手答題的時候,15S倒計時也送往顯示。</p><p>  軟件設計分析首先在程序的開始為選手設置了一段違規(guī)程序,該程序的作用是為了防止選手在主持人沒有按下?lián)尨疰I時,有的選手已經提前搶答了,本次搶答為

19、無效搶答,并有報警和記錄下該位選手的選號,做違規(guī)處理。如果在主持人按下?lián)尨疰I后規(guī)定時間內搶答,該次搶答被視為有效搶答,在主持按下回答問題的鍵時選手就可以在規(guī)定的時間內回答問題了。</p><p>  圖2.1 設計原理圖</p><p>  2.4 系統(tǒng)程序流程</p><p>  我將系統(tǒng)程序流程分為三塊:主程序流程、中斷服務程序流程、答題子程序流程。程序流程如圖

20、2.2、圖2.3、圖2.4所示。</p><p><b>  2.4主程序</b></p><p>  說明:程序啟動以后,先將其初始化,再判斷讀鍵盤是否有鍵按下,如若反饋Y,則調用顯示搶答器違規(guī)并報警子程序,如若反饋N,則判斷中斷條件是否滿足,如若足,則進入中斷程序,如若不滿足,則再次進入循環(huán),判斷讀鍵盤是否有鍵按下。如圖2.2所示:</p><

21、p>  圖2.2 主程序流程圖</p><p>  2.4.2 中斷服務程序</p><p>  說明:當收到進入中斷程序指令時,中斷程序啟動并有響聲提示,此時程序將設定定時器初值并啟動定時器,從十秒搶答開始顯示倒計時,倒計時時需要調用讀鍵子程序進行延時,再判斷此時是否有鍵按下,反饋Y,則調用搶答者獲得回答問題的子程序,使搶答者獲得回答權利。如若反饋N,則在倒計10秒完成后中斷返回,

22、表示無人搶答。如圖2.3所示:</p><p>  圖2.3 中斷服務程序流程圖</p><p>  2.4.3 答題子程序</p><p>  說明:當搶答者接收到響聲提示時,則說明他獲得回答問題的權利,此刻,定時器將啟動,并設定定時器初值。三秒顯示搶答者歸屬后,再啟動15秒倒計時等待回答,倒計時完成后將再次啟動計時器,設定20秒回答問題時間并響聲提示倒計時,接著

23、用RET指令中斷子程序。</p><p>  圖2.4 答題子程序流程圖</p><p><b>  3 硬件電路圖</b></p><p>  3.1 系統(tǒng)電路原理</p><p>  圖3.1 硬件電路圖</p><p>  電路工作原理和過程說明:上圖為仿真的總頁面圖,選用的單片機為AT89

24、C51,LED顯示器等。P1.0到P1.7為八個搶答開關,P3.2到P3.5為時間設計開關。P3.0為開始開關,P3.2為停止控制端。當加載好程序后,按下開始鍵就可以開始搶答了。同時顯示器上會選手的號碼和回答的時間開始倒計時,搶答時間以及回答時間都可以重新設定。當有犯規(guī)搶答時會發(fā)出報警聲,并顯示犯規(guī)選手的編號。</p><p>  3.2主要元器件選擇</p><p>  3.2.1 AT

25、89C51芯片</p><p>  AT89C51是美國ATMEL公司生產的低電壓、高性能CMOS8位單片機。AT89C51芯片不僅包括CPU、RAM、ROM、定時器、串行口、I/O接口等主要功能部件之外,還有驅動器、鎖存器、指令寄存器、地址寄存器等輔助部分。CPU是單片機最核心的部分,是單片機的大腦和心臟,主要完成運算和控制功能。RAM用于存放變化的數據,其地址空間為256個RAM單元,但其中能作為數據存儲器供

26、用戶使用的僅有前面128個,后128個被專用寄存器占用。ROM用于存放程序和固定不變的常數等等。通常采用只讀存儲器,且其有多種類型,在89系列單片機中全部采用閃存、定時/計數器用于實現定時和計數功能。AT89C51共有四個8位的并行I/O口,每個口都有一個鎖存器和1個驅動器組成。并行I/O口主要用于實現與外部設備中數據的并航輸入輸出,有些I/O口還有其他功能。AT89C51有1個UART全雙工異步串行口,用于實現單片機和其他具有相應接口

27、的設備之間的異步串行數據傳送。AT89C51采用40Pin封裝的雙列直接DIP結構。40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與</p><p>  3.2.2 74HC244</p><p>  74HC244芯片內部共有兩個四位三態(tài)緩沖器,使用時可分別以1C和2G作為它們的選通工作信號。當1C和2G都為低電平時,輸出端Y和輸入端A狀態(tài)

28、相同;當1G和2G都為高電平時,輸出呈高阻態(tài)。A0~A3為輸入端,Y1~Y4為輸出端。OE為使能端,低電平有效。</p><p>  3.2.3七段數碼管</p><p>  LED顯示器是由發(fā)光二極管顯示字段的顯示器件。由圖可知它由8個發(fā)光二極管構成,通過不同的組合可用來顯示0~9、A~F及小數點“.”等字符。圖中DP表示小數點,COM表示公共端。數碼管通常有共陰極和共陽極兩種型號。共陰

29、數管的發(fā)光二極管陰極必須接低電平,當某一發(fā)光二極管的陽極連到高電平時,此發(fā)光二極管點亮;共陽極數碼管的發(fā)光二極管是陽極并接到高電平,須點亮的發(fā)光二極管陰極接低電平即可。顯然,要顯示某字形就應使此字形的相應字段點亮,實際就是送一個用不同電平組合代表的數據到數碼管。</p><p>  圖3.2七段數碼管圖 </p><p><b>  4仿真圖 </b>&l

30、t;/p><p>  說明:當加載好程序后,按下仿真桌面的左下角的play鍵出現下圖4.1的現象</p><p>  圖4.1搶答器開啟圖</p><p>  說明:按下開始鍵后出現下圖4.2的現象顯示為20s</p><p>  圖4.2搶答倒計時圖</p><p>  說明:當按下開始鍵后,如圖4.3顯示6號正確搶答并

31、顯示6號的號碼以及回答的時間30s</p><p>  圖4.3答題倒計時圖</p><p>  說明:四號選手犯規(guī)搶答顯示如下圖4.4,顯示出四號并發(fā)出聯(lián)續(xù)不斷的報警聲</p><p><b>  圖4.4犯規(guī)報警圖</b></p><p>  說明:如下圖4.5在主持人有必要的時候可以調整搶答的時間,適應各種環(huán)境。&

32、lt;/p><p>  圖4.5搶答時間調整圖</p><p>  說明:如下圖4.6按下回答時間調整開關時間從30S加到60S回答以調整</p><p>  圖4.6答題時間調整圖</p><p><b>  5課程設計心得</b></p><p>  這次課程設計又是一次歷練。從6月3號公布選題開

33、始,一直掛著這件事。一直知道課程設計的制作過程不可能是輕松的,特別是在這段忙碌的時間段。過級、六門實驗、考試復習再加上自己部門的工作……有時候,真的很低落。</p><p>  一直知道實踐是學習中很重要的一個環(huán)節(jié),這個在課程設計中最能體現。平時課堂上所學的理論知識,雖然知道、了解了,心中卻總有疑云“這些東西除了做題學著有什么用?”還總感覺所學的各科知識無法連貫,平時上課最有印象的部分也是老師將理論與實際相聯(lián)系的

34、那一部分。課程設計就是將理論應用于實際的過程。會累,但是很有收獲。磕磕碰碰,回顧發(fā)現,課程設計需要恒心、耐心、細心,當然合作與交流也是必需的。</p><p>  長期的做一個事情,還得將所有的細節(jié)研透是很費精力的,放棄的念頭總是往外冒躥。這時需要恒心,需要與同學交流,尋求幫助。感謝他們的鼓勵與幫助,由衷的珍惜雪中送炭的援助之手。耐心與鉆研之心也是必須的,理論學習難免有很多盲點,平時不易察覺,在課程設計的時候卻可

35、能是關節(jié),重翻課本與查資料又是一個收獲的過程,很享受那種恍然大悟的瞬間。另外,在此次課程設計中有一個后悔的地方,便是沒與老師交流。在定了初稿以后變放松完成別的工作去了,之前合作的伙伴卻一直與老師進行著交流。光是論文就改了四次,到要交的時候變成了我論文的升級版。而我只得焦急匆忙修改,質量當然不能保證,將論文變成了虎頭蛇尾的工程。錯過了許多學習進步的機會。</p><p>  有勞動就會有收獲,這次課程設計又是一個教

36、訓吧,此中所學不僅能指導以后的課程設計,對今后的學習與生活都有很大的影響。我將不再畏難,努力嘗試、鉆研,為守候收獲的瞬間。</p><p><b>  參考文獻</b></p><p>  [1]李朝青.單片機原理及接口技術(修訂版)。北京:北京航空航天大學出版社,1998</p><p>  [2]李廣弟.單片機基礎.北京:北京航空航天大學出

37、版社,1992</p><p>  [3]何立民.單片機應用技術大全.北京:北京航空航天大學出版社, 1994</p><p>  [4]張毅剛. 單片機原理及接口技術.哈爾濱:哈爾濱工業(yè)大學出版社,1990</p><p>  [5]譚浩強.單片機課程設計. 北京:清華大學出版社,1989</p><p><b>  致 謝<

38、;/b></p><p>  此次競賽搶答器課程設計我學到了很多知識,使我對單片機的認識以及Proteus軟件的操作更加深刻!在此次課程設計中,我在老師的精心指導和嚴格要求下,鞏固了所學理論知識,極大地提高了實踐動手能力,同時了解了許多單片機的一些基本知識,為我今后進一步學習計算機方面的知識打下了堅實的基礎。在此,我衷心感謝申老師指導和支持。由于本次課程設計花了比較多的時間去找資料和同學們交流,就是通過問老

39、師和同學才把課程設計做出來的。</p><p>  所以這次課程設計能夠順利的完成,當然有我個人的努力,但同時也離不開指導老師的答疑解惑,同時也讓我明白了,別人幫助的重要性。有了大家的幫忙,才能事半功倍。而且在別人的身上可以學習到很多知識。在此我向老師表示感謝,謝謝老師的認真耐心的指導,讓我對單片機這門課程上,有了很多的收獲,把以前沒弄懂的部分,也弄懂了很多,謝謝老師!</p><p>&

40、lt;b>  附 錄</b></p><p><b>  程序設計源程序:</b></p><p>  ;===================================================================== </p><p>  ;======================== 八

41、路搶答器程序 =========================== </p><p>  ;======================== 吳 谞 ===========================</p><p>  ;======================== ====================

42、=======</p><p>  ;======================== 2011年6月20日 ===========================</p><p>  ;=====================================================================</p><p>  OK EQU

43、 20H ;搶答開始標志位</p><p>  RING EQU 22H ;響鈴標志位 </p><p>  DATA0 EQU 36H ;搶答按鍵口數據存放地址 </p><p><b>  ORG 000

44、0H</b></p><p><b>  AJMP MAIN</b></p><p>  ORG 0003H </p><p>  AJMP INTT0</p><p><b>  ORG 000BH</b></p><p>  AJMP T0INT</p&

45、gt;<p><b>  ORG 001BH</b></p><p>  AJMP T1INT</p><p><b>  ORG 0040H</b></p><p>  MAIN: MOV R1,#20 ;初設搶答時間為20s</p><p&g

46、t;  MOV R2,#30 ;初設答題時間為30s</p><p>  MOV 38h,#60 ;啟用錦囊時間從60s倒計時</p><p>  MOV TMOD,#11H ;設置未定時器/模式1</p><p>  MOV TH0,#0F0

47、H</p><p>  MOV TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b>  SETB EA</b>

48、;</p><p><b>  SETB ET0</b></p><p>  SETB ET1 ;允許二個中斷,T0/T1</p><p><b>  CLR OK</b></p><p><b>  CLR RING</b>&l

49、t;/p><p><b>  SETB TR1</b></p><p>  SETB TR0 ;一開始就運行定時器,以開始顯示FFF.如果想重新計數,重置TH1/TL1就可以了</p><p>  ;======================================================

50、=========== ===========================查詢程序================================ </p><p>  ;=================================================================</p><p>  START: MOV DATA0,#0FFH

51、 ;初始化 </p><p>  MOV R5,#0BH</p><p>  MOV R4,#0BH</p><p>  MOV R3,#0BH</p><p>  ACALL DISPLAY ;未開始搶答時候顯示FFF </p><p&

52、gt;  JNB P3.3,SELSUB0</p><p>  JNB P3.4,TZ3 ;倒計時調整 </p><p>  JB P3.0,NEXT</p><p>  ACALL DELAY</p><p>  JB P3.0,NEXT ;去抖動,如果"開始鍵"按下就向下執(zhí)行

53、,否者跳到非法搶答查詢</p><p>  SETB EX0 ;開放INT0 </p><p>  ACALL BARK ;按鍵發(fā)聲</p><p><b>  MOV A,R1</b></p><p>  MOV R6,A

54、 ;送R1->R6,因為R1中保存了搶答時間</p><p>  SETB OK ;搶答標志位,在使用錦囊時用作判斷是搶答倒計時還是回答倒計時</p><p>  MOV R3,#0AH ;搶答只顯示計時,滅號數</p><p>  AJMP COUNT ;進入倒計時程

55、序,"查詢有效搶答的程序"在COUNT里面</p><p>  NEXT: JNB P1.0,FALSE</p><p>  JNB P1.1,FALSE2</p><p>  JNB P1.2,FALSE3</p><p>  JNB P1.3,FALSE4</p><p>  JNB P1

56、.4,FALSE5</p><p>  JNB P1.5,FALSE6</p><p>  JNB P1.6,TZ1</p><p>  JNB P1.7,TZ2</p><p>  AJMP START </p><p>  TZ1: AJMP FALSE7</p><p>  TZ2

57、: AJMP FALSE8</p><p>  TZ3: AJMP SELSUB1</p><p>  ;===================================================================== </p><p>  ;=========================非法搶答處理程序========

58、======================</p><p>  ;=====================================================================</p><p>  FALSE1: MOV R3,#01H</p><p>  AJMP ERROR</p><p>  FALSE2:

59、 MOV R3,#02H</p><p>  AJMP ERROR</p><p>  FALSE3: MOV R3,#03H</p><p>  AJMP ERROR</p><p>  FALSE4: MOV R3,#04H</p><p>  AJMP ERROR</p><p>  FA

60、LSE5: MOV R3,#05H</p><p>  AJMP ERROR</p><p>  FALSE6: MOV R3,#06H</p><p>  AJMP ERROR</p><p>  FALSE7: MOV R3,#07H</p><p>  AJMP ERROR</p><p>

61、;  FALSE8: MOV R3,#08H</p><p>  AJMP ERROR</p><p>  ;===================================================================== </p><p>  ;=======================SELSUB0(搶答時間R1調整程序)=====

62、================</p><p>  ;=====================================================================</p><p>  SELSUB0: MOV A,R1</p><p>  MOV B,#0AH</p><p><b>  DIV AB

63、</b></p><p><b>  MOV R5,A</b></p><p><b>  MOV R4,B</b></p><p>  MOV R3,#0AH</p><p>  ACALL DISPLAY ;先在兩個時間LED上顯示R1</p&

64、gt;<p>  JNB P3.5,INC0 ;P3.5為+1s鍵,如按下跳到INCO</p><p>  JNB P3.6,DEC0 ;P3.6為-1s鍵,如按下跳到DECO</p><p>  JNB P3.1,BACK0 ;P3.1為確定鍵,如按下跳到BACKO&l

65、t;/p><p>  AJMP SELSUB0</p><p>  INC0: MOV A,R1</p><p>  CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。</p><p>  MOV R1,#00H</p><p>  ACALL DELAY1<

66、;/p><p>  AJMP SELSUB0</p><p>  ADD0: INC R1</p><p>  ACALL DELAY1</p><p>  AJMP SELSUB0</p><p>  DEC0: MOV A,R1</p><p>  JZ SETR1

67、 ;如果R1為0, R1就置99,</p><p><b>  DEC R1</b></p><p>  ACALL DELAY1 </p><p>  AJMP SELSUB0</p><p>  SETR1: MOV R1,#63H</p><p>  ACALL

68、DELAY1</p><p>  AJMP SELSUB0</p><p>  BACK0: AJMP START</p><p>  ;===================================================================== </p><p>  ;====================

69、==SELSUB1(回答時間R2調整程序)=====================</p><p>  ;=====================================================================</p><p>  SELSUB1: MOV A,R2</p><p>  MOV B,#0AH</p>

70、<p><b>  DIV AB</b></p><p><b>  MOV R5,A</b></p><p><b>  MOV R4,B</b></p><p>  MOV R3,#0AH</p><p>  ACALL DISPLAY</p>&l

71、t;p>  JNB P3.5,INC1</p><p>  JNB P3.6,DEC1</p><p>  JNB P3.1,BACK1</p><p>  AJMP SELSUB1</p><p>  INC1: MOV A,R2</p><p>  CJNE A,#63H,ADD1</p>

72、<p>  MOV R2,#00H</p><p>  ACALL DELAY1</p><p>  AJMP SELSUB1</p><p>  ADD1: INC R2</p><p>  ACALL DELAY1</p><p>  AJMP SELSUB1</p><p>

73、  DEC1: MOV A,R2</p><p><b>  JZ SETR2</b></p><p><b>  DEC R2</b></p><p>  ACALL DELAY1</p><p>  AJMP SELSUB1</p><p>  SETR2: MOV

74、 R2,#63H</p><p>  ACALL DELAY1</p><p>  AJMP SELSUB1</p><p>  BACK1: AJMP START</p><p>  ;===================================================================== </p&g

75、t;<p>  ;=============================啟用錦囊程序==============================</p><p>  ;=====================================================================</p><p>  REPEAT:MOV A,38h

76、 ;使用錦囊時重新計時</p><p><b>  MOV R6,A</b></p><p>  CLR RING ;當倒計時進入最后5秒的時候,啟用錦囊能消除蜂鳴</p><p>  ;==========================================================

77、=========== </p><p>  ;=============倒計時程序(搶答倒計時和回答倒計時都跳到改程序)==============</p><p>  ;====================================================================</p><p>  COUNT: MOV R0,#00

78、H ;重置定時器中斷次數</p><p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H ;重置定時器</p><p>  RECOUNT:MOV A,R6 ;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6<

79、;/p><p>  MOV B,#0AH</p><p>  DIV AB ;除十分出個位/十位</p><p>  MOV 30H,A ;十位存于(30H)</p><p>  MOV 31H,B

80、 ;個位存于(31H)</p><p>  MOV R5,30H ;取十位</p><p>  MOV R4,31H ;取個位</p><p><b>  MOV A,R6</b></p><p>  SUBB A,#0

81、7H</p><p>  JNC LARGER ;大于5s跳到LARGER,小于等于5s會提醒</p><p><b>  MOV A,R0</b></p><p>  CJNE A,#0AH,FULL ;1s中0.5s向下運行</p><p>

82、<b>  CLR RING </b></p><p>  AJMP CHECK</p><p>  FULL: CJNE A,#14H,CHECK ;下面是1s的情況,響并顯示號數并清R0,重新計</p><p><b>  SETB RING</b></p><p>&l

83、t;b>  MOV A,R6</b></p><p>  JZ QUIT ;計時完畢</p><p>  MOV R0,#00H</p><p>  DEC R6 ;一秒標志減1</p><p>  AJMP CHE

84、CK</p><p>  LARGER: MOV A,R0</p><p>  CJNE A,#14H,CHECK ;如果1s向下運行,否者跳到查"停/顯示"</p><p>  DEC R6 ;計時一秒R6自動減1</p><p>  MO

85、V R0,#00H</p><p>  CHECK: JNB P3.1,QUIT ;如按下停止鍵退出</p><p>  JNB OK,CHECKK ;只在回答倒計時才有效 </p><p>  AJMP NEXTT</p><p>  CHECKK:JNB P3.0,REPEAT ;判斷

86、是否使用錦囊</p><p><b>  NEXTT:</b></p><p>  ACALL DISPLAY</p><p>  JB OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(這里起到鎖搶答作用)</p><p>  AJMP RECOUNT</p><p>

87、  ACCOUT:MOV A,DATA0 </p><p>  JNB ACC.0,TRUE1</p><p>  JNB ACC.1,TRUE2</p><p>  JNB ACC.2,TRUE3</p><p>  JNB ACC.3,TRUE4</p><p>  JNB ACC.4,TRUE5</p&

88、gt;<p>  JNB ACC.5,TRUE6</p><p>  JNB ACC.6,TZ7</p><p>  JNB ACC.7,TZ8</p><p>  AJMP RECOUNT</p><p>  TZ7: AJMP TRUE7</p><p>  TZ8: AJMP TRUE8</p

89、><p>  QUIT: CLR OK ;如果按下了"停止鍵"執(zhí)行的程序</p><p><b>  CLR RING</b></p><p>  AJMP START</p><p>  ;================================

90、===================================== </p><p>  ;==========================正常搶答處理程序=============================</p><p>  ;=====================================================================&l

91、t;/p><p>  TRUE1: ACALL BARK</p><p><b>  MOV A,R2</b></p><p>  MOV R6,A ;搶答時間R2送R6</p><p>  MOV R3,#01H</p><p>  CLR OK

92、 ;因為答題的計時不再查詢搶答,所以就鎖了搶答</p><p>  AJMP COUNT</p><p>  TRUE2:ACALL BARK</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p>

93、<p>  MOV R3,#02H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE3:ACALL BARK</p><p><b>  MOV A,R2</b></p><p><b

94、>  MOV R6,A</b></p><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&l

95、t;/b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#04H</p><p><b>  CLR OK </b></p><p>  AJMP COUNT</p><p>  TRUE5: ACALL BARK <

96、;/p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#05H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p&g

97、t;<p>  TRUE6: ACALL BARK </p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#06H</p><p><b>  CLR OK</b><

98、/p><p>  AJMP COUNT</p><p>  TRUE7: ACALL BARK </p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#07H</p><

99、;p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE8: ACALL BARK </p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p>

100、<p>  MOV R3,#08H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  ;===================================================================== </p><p>  

101、;=========================犯規(guī)搶答程序=================================</p><p>  ;=====================================================================</p><p>  ERROR: MOV R0,#00H</p><p>

102、;  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H</p><p>  MOV 34H,R3 ;犯規(guī)號數暫存與(34H)</p><p>  HERE: MOV A,R0</p><p>  CJNE A,#06H,FLASH ;0.3s向下運行->滅并停響&

103、lt;/p><p><b>  CLR RING </b></p><p>  MOV R3,#0AH</p><p>  MOV R4,#0AH</p><p>  MOV R5,#0AH ;三燈全滅</p><p>  AJMP CHECK1 </p>

104、<p>  FLASH: CJNE A,#0CH,CHECK1 ;下面是0.8s的情況,響并顯示號數并清R0,重新計</p><p><b>  SETB RING</b></p><p>  MOV R0,#00H</p><p>  MOV R3,34H ;取回號數</p>

105、<p>  MOV R5,#0BH</p><p>  MOV R4,#0BH ;顯示FF和號數</p><p>  AJMP CHECK1</p><p>  CHECK1: JNB P3.1,QUIT1</p><p>  ACALL DISPLAY</p><p><

106、;b>  AJMP HERE</b></p><p>  QUIT1: CLR RING</p><p><b>  CLR OK</b></p><p>  AJMP START</p><p>  ;=================================================

107、==================== </p><p>  ;============================顯示程序==================================</p><p>  ;=====================================================================</p><

108、p>  DISPLAY:MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,</p><p><b>  MOV A,R3</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2,#0feH</p><p><

109、b>  MOV P0,A</b></p><p>  ACALL DELAY</p><p>  MOV DPTR,#DAT2</p><p><b>  MOV A,R5</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2,#0fdH&l

110、t;/p><p><b>  MOV P0,A</b></p><p>  ACALL DELAY</p><p><b>  MOV A,R4</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2,#0fbH</p><

111、p><b>  MOV P0,A</b></p><p>  ACALL DELAY</p><p><b>  RET</b></p><p>  DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H </p><p>  ;&quo

112、t;滅","1","2","3","4","5","6","7","8","9","滅","F"</p><p>  DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7d

113、h,07h,7fh,6fh,00H,71H</p><p>  ;第一個為零,其他與上相同,因為十位如果為零顯示熄滅</p><p>  ;===================================================================== </p><p>  ;===============加減時間延時(起到不會按下就加N個

114、數)======================</p><p>  ;=====================================================================</p><p>  DELAY1: MOV 35H,#08H</p><p>  LOOP0: ACALL DISPLAY</p><

115、p>  DJNZ 35H,LOOP0</p><p><b>  RET</b></p><p>  ;===================================================================== </p><p>  ;===================延時(顯示和去抖動用到)=====

116、=========================</p><p>  ;===================================================================== </p><p>  DELAY: MOV 32H,#12H</p><p>  LOOP: MOV 33H,#0AFH</p>&l

117、t;p>  LOOP1: DJNZ 33H,LOOP1</p><p>  DJNZ 32H,LOOP</p><p><b>  RET</b></p><p>  ;===================================================================== </p>&l

118、t;p>  ;========================發(fā)聲程序=====================================</p><p>  ;=====================================================================</p><p>  BARK: SETB RING</p>

119、<p>  ACALL DELAY1</p><p>  ACALL DELAY1</p><p>  CLR RING ;按鍵發(fā)聲</p><p><b>  RET</b></p><p>  ;=======================================

120、============================== </p><p>  ;====================TO溢出中斷(響鈴程序)==============================</p><p>  ;===================================================================== </p>

121、;<p>  T0INT: MOV TH0,#0ECH</p><p>  MOV TL0,#0FFH</p><p>  JNB RING,OUT;</p><p>  CPL P3.7 ;RING標志位為1時候P3.7口不斷取反使喇叭發(fā)出一定頻率的聲音</p><p>  OUT: RE

122、TI</p><p>  ;===================================================================== </p><p>  ;======================T1溢出中斷(計時程序)=============================</p><p>  ;=============

123、======================================================== </p><p>  T1INT: MOV TH1,#3CH</p><p>  MOV TL1,#0B0H</p><p><b>  INC R0</b></p><p><b>  RETI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論