單片機課程設(shè)計-- 8路搶答器設(shè)計_第1頁
已閱讀1頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  單片機原理及接口技術(shù)</p><p><b>  課程設(shè)計報告 </b></p><p>  課題: 8路搶答器設(shè)計 </p><p>  學院: 軌道交通學院 </p><p>  專業(yè): 交通設(shè)備信息工程 &l

2、t;/p><p>  班級: </p><p>  姓名: </p><p>  成員: </p><p>  學號:

3、 </p><p>  指導(dǎo)老師: </p><p><b>  2014年1月</b></p><p><b>  任 務(wù) 書</b></p><p>  課題: 8路搶答器設(shè)計</p><p><

4、b>  一、設(shè)計任務(wù)</b></p><p>  設(shè)計一個可供8組同時使用的搶答器。</p><p>  1.設(shè)計系統(tǒng)的硬件和軟件設(shè)計。</p><p>  2.要求顯示搶答的結(jié)果,并有45s的答題時間顯示。</p><p><b>  二、基本要求</b></p><p>  

5、1、 設(shè)計系統(tǒng)的硬件和軟件設(shè)計;</p><p>  2、撰寫課程設(shè)計報告。</p><p>  3、課程設(shè)計報告由封面、設(shè)計任務(wù)書、目錄、摘要、正文、參考文獻、附錄等部分組成。</p><p>  4、封面可自行設(shè)計,應(yīng)包含課程設(shè)計名稱及設(shè)計題目、專業(yè)、班級、姓名、指導(dǎo)老師、設(shè)計日期等內(nèi)容。</p><p>  5、正文是設(shè)計報告的核心部分

6、。應(yīng)包含以下內(nèi)容:(1)概述所做課題的意義、本人所做的工作及系統(tǒng)的主要功能;(2)硬件電路設(shè)計及描述;(3)軟件設(shè)計流程圖及描述;(4)源程序代碼(要有注釋);(5)體會和建議等。</p><p><b>  摘 要</b></p><p>  搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識競賽場合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個

7、單位,如果專門購一臺搶答器雖然在經(jīng)濟上可以承受,但每年使用的次數(shù)極少,往往因長期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時性就會影響活動的開展,因此設(shè)計了本搶答器。本文設(shè)計出以AT89C51單片機為核心的八路搶答器,采用了數(shù)字顯示器直接指示,自動鎖存顯示結(jié)果,并自動復(fù)位的設(shè)計思想,它能根據(jù)不同的搶答輸入信號,經(jīng)過單片機的控制處理并產(chǎn)生不同的與輸入信號相對應(yīng)的輸出信號,最后通過LED數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組的搶答時間相差幾微

8、秒,也可分辨出是哪組優(yōu)先按下的按鍵,充分利用了單片機系統(tǒng)結(jié)構(gòu)簡單、功能強大、可靠性好、實用性強的特點。</p><p>  本設(shè)計是以八路搶答為基本理念??紤]到依需設(shè)定限時回答的功能,利用</p><p>  AT89C51單片機及外圍接口實現(xiàn)的搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間。用開關(guān)

9、做鍵盤輸出,揚聲器發(fā)生提示。同時系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;</p><p>  有45s的答題時間顯示;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒計時顯示,滿時后系統(tǒng)計時自動復(fù)位及主控強制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。</p><p>  關(guān)鍵詞: 搶答器 單片機 LED數(shù)碼顯示管

10、 計時</p><p><b>  目 錄</b></p><p><b>  1.概述1</b></p><p><b>  2.方案比較2</b></p><p><b>  2.1 方案A2</b></p><p>&

11、lt;b>  2.2 方案B3</b></p><p><b>  3.硬件設(shè)計4</b></p><p>  3.1原理圖的確定4</p><p>  3.2搶答器電路4</p><p>  3.3時序控制電路設(shè)計5</p><p>  3.4復(fù)位電路的設(shè)計5<

12、;/p><p>  3.5晶振電路的設(shè)計6</p><p>  3.6報警電路設(shè)計7</p><p>  3.7選手搶答鍵(矩陣式鍵盤)7</p><p>  3.8顯示與顯示驅(qū)動電路8</p><p><b>  4.程序設(shè)計8</b></p><p>  4.1系

13、統(tǒng)主程序設(shè)計8</p><p>  4.2顯示搶答違規(guī)流程10</p><p>  4.3搶答成功流程圖10</p><p>  4.4程序清單10</p><p><b>  5.調(diào)試結(jié)果11</b></p><p><b>  6.元件清單12</b><

14、/p><p><b>  7.小結(jié)13</b></p><p><b>  參考文獻14</b></p><p><b>  附錄一15</b></p><p><b>  附錄二23</b></p><p><b>

15、  8路搶答器設(shè)計</b></p><p>  摘要: 本設(shè)計是以八路搶答為基本理念??紤]到依需設(shè)定限時回答的功能,利用AT89C51單片機及外圍接口實現(xiàn)的搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,同時使數(shù)碼管能夠正確地顯示時間。用開關(guān)做鍵盤輸出,揚聲器發(fā)生提示。同時系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無

16、效;</p><p>  有45s的答題時間顯示;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時間和回答問題時間倒計時顯示,滿時后系統(tǒng)計時自動復(fù)位及主控強制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。</p><p>  關(guān)鍵詞:搶答器 單片機 LED數(shù)碼顯示管 計時</p><p><b>  1.概述</b><

17、;/p><p>  單片機原理及應(yīng)用課程設(shè)計是學生綜合運用所學知識,全面掌握單片微型計算機及其接口的工作原理、編程和使用方法的重要實踐環(huán)節(jié)。通過獨立或協(xié)作提出并論證設(shè)計方案,進行軟、硬件調(diào)試,最后獲得正確的運行結(jié)果,可以加深和鞏固對理論教學和實驗教學內(nèi)容的掌握,進一步建立計算機應(yīng)用系統(tǒng)整體概念,初步掌握單片機軟、硬件開發(fā)方法。</p><p>  根據(jù)單片機原理及應(yīng)用課程的要求,主要進行兩個方

18、面的設(shè)計,即單片機最小系統(tǒng)和存儲器擴展設(shè)計、接口技術(shù)應(yīng)用設(shè)計。其中,單片機最小系統(tǒng)主要要求學生熟悉單片機的內(nèi)部結(jié)構(gòu)和引腳功能、引腳的使用、復(fù)位電路、時鐘電路、4個并行接口和一個串行接口的實際應(yīng)用,從而可構(gòu)成最小應(yīng)用系統(tǒng),并編程進行簡單使用。</p><p>  存儲器擴展設(shè)計要求學生掌握常用半導(dǎo)體芯片與單片機的接口,如EPROM存儲器用作外部程序存儲器時與單片機的連接關(guān)系,SRAM存儲器用作外部數(shù)據(jù)存儲器時與單片

19、機的連接關(guān)系,E2PROM存儲器用作外部程序/數(shù)據(jù)存儲器時與單片機的連接關(guān)系。能合理分配和使用單片機的內(nèi)部和外部存儲器,編程實現(xiàn)正常的讀寫功能。</p><p>  本文設(shè)計出以AT89C51單片機為核心的八路搶答器,采用了數(shù)字顯示器直接指示,自動鎖存顯示結(jié)果,并自動復(fù)位的設(shè)計思想,它能根據(jù)不同的搶答輸入信號,經(jīng)過單片機的控制處理并產(chǎn)生不同的與輸入信號相對應(yīng)的輸出信號,最后通過LED數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組

20、的搶答時間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,充分利用了單片機系統(tǒng)結(jié)構(gòu)簡單、功能強大、可靠性好、實用性強的特點。</p><p><b>  2.方案比較</b></p><p><b>  2.1 方案A</b></p><p>  該系統(tǒng)采用51系列單片機AT89C51作為控制核心,該系統(tǒng)可以完成運算控制、信號

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

22、</p><p>  <2>單片機有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴充為各種規(guī)模的微電腦系統(tǒng)。</p><p>  <3> 控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。其原理框圖如下:</p><p><b>  2.2 方案B</b></p

23、><p>  根據(jù)PLC智能搶答器的控制要求,應(yīng)用程序采用一體化結(jié)構(gòu)。通過PLC控制程序來實現(xiàn)整體的運行,系統(tǒng)僅需要少量的按鈕和接口,一般的PLC配置都可運行。該系統(tǒng)本著簡單易懂、可靠性強、適應(yīng)性強等方面進行設(shè)計。在搶答時只需按動按鈕即可數(shù)碼管在系統(tǒng)程序的控制下自動顯示組號以及倒計時時間。安全、可靠、省時、省力、價格便宜。</p><p>  控制軟件應(yīng)用GX Developer編程軟件,采用

24、梯形圖語言編寫,工作系統(tǒng)自動控制流程框圖(如下圖),根據(jù)系統(tǒng)控制要求,進行針對性設(shè)計,要充分保證系統(tǒng)的安全,保證整個系統(tǒng)的運行安全可靠。自動條件下,必須復(fù)位在滿足自動條件下才能進行自動程序,當中充分應(yīng)用各個過程的互鎖來保證系統(tǒng)的安全。如下圖,有主程序和若干子程序組成,其整體設(shè)計工作系統(tǒng)自動控制流程圖如下圖所示:</p><p>  考慮到我們課程設(shè)計的目的之一是讓我們更加熟悉單片機的匯編語言和結(jié)構(gòu)規(guī)則,以及綜合各

25、種因素,我們選擇了方案A作為我們的實驗方案。</p><p><b>  3.硬件設(shè)計</b></p><p><b>  3.1原理圖的確定</b></p><p>  單片機實現(xiàn)搶答的原理圖:</p><p><b>  搶答電路的接口電路</b></p>&

26、lt;p><b>  3.2搶答器電路</b></p><p>  參考電路如上圖所示。該電路完成兩個功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號,同時譯碼顯示電路顯示編號;二是禁止其他選手按鍵操作無效。如有再次搶答需由主持人將S開關(guān)重新置,“清除”然后再進行下一次搶答。</p><p>  3.3時序控制電路設(shè)計</p><p&g

27、t;  時序控制電路是搶答器設(shè)計的關(guān)鍵,它要完成以下功能:</p><p>  主持人將控制開關(guān)撥到“開始”位置時,揚聲器發(fā)聲,搶答器電路和定時電路進入正確搶答工作狀態(tài)。</p><p>  當參賽選手按下?lián)尨疰I時,揚聲器發(fā)聲,搶答電路和定時電路停止工作。</p><p>  3.4復(fù)位電路的設(shè)計</p><p>  外部中斷和內(nèi)部中斷并存,

28、單片機硬件復(fù)位端,只要持續(xù)4個機器周期的高電平即可實現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲器的值都恢復(fù)到了初始值,因為本設(shè)計中功能中有倒計時時間的記憶功能,所以不能對單片機進行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位實際上就是當程序執(zhí)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完成復(fù)位。復(fù)位電路如下圖所示:</p><p><b>  復(fù)位電路原理圖</b></p><p>

29、  該復(fù)位電路采用上電自動復(fù)位和手動復(fù)位兩種復(fù)位方式,圖中網(wǎng)絡(luò)標號所指9連接到單片機的復(fù)位引腳。要實現(xiàn)復(fù)位只需在,51系列單片機的RESET引腳上加上5ms的高電平就可以了。上電復(fù)位是利用電容的充電來實現(xiàn)的,即上電瞬間RESET端的電位與Vcc相同,隨著電容上儲能增加,電容電壓也逐漸增大,充電電流減小,RESET端的電位。這樣就會建立一個脈沖電壓,調(diào)節(jié)電容與電阻的大小可對脈沖的持續(xù)時間進行調(diào)節(jié)。通常若采用12MHz的晶振時,復(fù)位元件參數(shù)

30、為22μF的電解電容和10kΩ的電阻。按鈕復(fù)位電路是通過按下復(fù)位按鈕</p><p>  時,電源對RESET端維持兩個機器周期的高電平實現(xiàn)復(fù)位的。</p><p>  3.5晶振電路的設(shè)計</p><p>  MSC-51單片機的定時控制功能是用時鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時鐘方式和外部時鐘方式。本設(shè)計中采用內(nèi)部時鐘方式。<

31、/p><p>  單片機內(nèi)部有一個反相放大器,XTAL1、XTAL2分別為反相放大器的輸入端和輸出端,外接定時反饋元件組成振蕩器(內(nèi)部時鐘方式),產(chǎn)生時鐘送至單片機內(nèi)部各元件。時鐘頻率越高,單片機控制器的控制節(jié)拍就越快,運算速度也就越快。</p><p>  一般來說單片機內(nèi)部有一個帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-2所示。加電以后延時一段時間(約

32、10ms)振蕩器產(chǎn)生時鐘,不受軟件控制,圖中Y1為晶振,震蕩產(chǎn)生的時鐘頻率主要由Y1確定。電容C1,C2的作用有兩個:一是幫助振蕩器起振,二是對振蕩器的頻率起微調(diào)作用,典型值為30pF。</p><p>  晶振電路的設(shè)計如圖2-2所示:</p><p><b>  晶振電路原理圖</b></p><p><b>  3.6報警電路設(shè)

33、計</b></p><p>  報警電路用于報警,當遇到報警信號時,發(fā)出警報。一般喇叭是一種電感性圖5報警電路圖。8951驅(qū)動喇叭的信號為各種頻率的脈沖。因此,最簡單的喇叭驅(qū)動方式就是利用達林頓晶體管,或者以兩個常用的小晶體管連接成達林頓架勢。在右圖中電阻R為限流電阻,在此利用晶體管的高電流增益,以達到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個10K的上拉電阻。</p&g

34、t;<p>  選手在設(shè)定的時間內(nèi)搶答時,實現(xiàn):優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次作"清除"和"開始"狀態(tài)開關(guān)。</p><p><b>  報警電路圖</b></p><p>  3.7選手搶答鍵(矩陣式鍵盤)<

35、;/p><p>  AT89C51的P1口做一個為選手搶答的輸入按鍵引腳,P1.0至P1.7輪流輸出低電位,給每一個選手編號1至8,當選手按下按鈕時,P1口個端口的電平變化從P1口輸入,經(jīng)單片機處理后從P0輸出由數(shù)碼管顯示搶答者編號。</p><p>  3.8顯示與顯示驅(qū)動電路</p><p>  此電路包括顯示和驅(qū)動,顯示采用數(shù)碼管,驅(qū)動用P2口, 違規(guī)者編號、搶答

36、30秒倒計時、正常搶答者編號和回答問題時間60秒倒計時,數(shù)碼管采用動態(tài)</p><p>  顯示。驅(qū)動電路P2口,查詢顯示程序利用P0口做段選碼口輸出P2低3位做位選碼輸出,當為低電平則能驅(qū)動數(shù)碼管使其顯示數(shù)字。在+5V電壓下接10k的電阻,保證正常壓降。</p><p><b>  4.程序設(shè)計</b></p><p>  4.1系統(tǒng)主程序設(shè)

37、計</p><p>  為了能夠達到搶答的公平、公正、合理,應(yīng)該在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時間,因而在編開始搶答前的程序得先編寫設(shè)定時間的程序,當時間設(shè)好了之后,主持人發(fā)布搶答命令按下P1.7按鍵,程序開始打開定時中斷開始倒計時,然后調(diào)用鍵盤掃描子程序,編寫鍵盤掃描程序。當在掃描到有人按下了答題鍵,馬上關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤。</p><p><b>  

38、系統(tǒng)主程序流程</b></p><p>  4.2顯示搶答違規(guī)流程</p><p>  4.3搶答成功流程圖</p><p><b>  4.4程序清單</b></p><p><b>  詳見附錄一。</b></p><p><b>  5.調(diào)試結(jié)果&

39、lt;/b></p><p>  試驗的程序通過Keil軟件編譯,產(chǎn)生HEX文件如圖4-1所示:</p><p>  程序在Keil軟件上編譯結(jié)果</p><p>  通過Proteus進行仿真,如仿真結(jié)果所示,按下開始后,數(shù)碼管開始倒計時,仿真結(jié)果如圖4-2所示。</p><p>  Proteus仿真的結(jié)果</p>&

40、lt;p>  當有選手按下按扭時,數(shù)碼管顯示選手號碼并開始倒計時,如下圖所示</p><p>  Proteus仿真的結(jié)果</p><p><b>  6.元件清單</b></p><p><b>  7.小結(jié)</b></p><p>  經(jīng)過將近一周的單片機課程設(shè)計,終于完成了八路搶答器的設(shè)

41、計,雖然沒有完全達到設(shè)計要求,但還是收獲良多。通過這次課程設(shè)計,使我更進一步地熟悉了單片機芯片的工作原理和其具體的使用方法。單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,這鍛煉了自己獨立思考問題的能力和通過查看相關(guān)資料來解決問題的習慣。還有了解了課程設(shè)計的一般步驟,和設(shè)計中應(yīng)注意的問題。</p><p>  設(shè)計不僅是對前面所學知識的一種檢驗,而且也是對自己能力的一種提高。下面我對整個設(shè)計的過程

42、做一下簡單的總結(jié)。第一,接到任務(wù)以后進行選題。選題是設(shè)計的開端,選擇恰當?shù)?、感興趣的題目,這對于整個設(shè)計是否能夠順利進行關(guān)系極大。好比走路,這開始的第一步是具有決定意義的,第一步邁向何方,需要慎重考慮。否則,就可能走許多彎路、費許多周折,甚至南轅北轍,難以到達目的地。因此,選題時一定要考慮好了。第二,題目確定后就是找資料了。查資料是做設(shè)計的前期準備工作,不管通過哪種方式查的資料都是有利用價值的,要一一記錄下來以備后用。第三,通過上面的過

43、程,已經(jīng)積累了不少資料,對所選的題目也大概有了一些了解,這一步就是在這樣一個基礎(chǔ)上,綜合已有的資料來更透徹的分析題目。第四,有了研究方向,就應(yīng)該動手實現(xiàn)了。其實以前的三步都是為這一步作的鋪墊。通過這次設(shè)計,我對數(shù)字電路設(shè)計中的邏輯關(guān)系等有了一定的認識,對以前學的數(shù)字電路又有了一定的新認識,溫習了以前學的知識,就像人們常說的溫故而知新嘛,但在設(shè)計的過程中,遇到了很多的問題,有一些知識都已經(jīng)不太清楚了,但是通過一些資料又重新的溫習了一下數(shù)字

44、電路部分的內(nèi)容。在這次設(shè)計中也使</p><p>  在此要感謝盧毓俊老師,感謝老師給我這樣的機會鍛煉。在整個設(shè)計過程中我懂得了許多東西,也培養(yǎng)了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學習工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中的探索的艱難和成功的喜悅。雖然這個項目還不是很完善,但是在設(shè)計過程中所學到的東西是這次設(shè)計的最大收獲和財富,使我終身受益。&l

45、t;/p><p><b>  參考文獻</b></p><p>  [1] 吳亦峰、陳德為.單片機原理與接口技術(shù). 北京:電子工業(yè)出版社.2005. </p><p>  [2] 周潤景、張麗娜.基于PROTEUS的電路及單片機仿真. 北京: 航空航天大學出版社.2007.</p><p>  [3] 胡耀輝、朱朝華等.單片

46、機系統(tǒng)開發(fā)實例經(jīng)典.北京:冶金工業(yè)出版社.2006.</p><p>  [4] 張迎新.單片機初級教程. 北京: 航空航天大學出版社.2007. </p><p><b>  附錄一</b></p><p><b>  源程序:</b></p><p>  OK EQU 20H

47、 ;搶答開始標志位</p><p>  RING EQU 22H ;響鈴標志位</p><p>  DATA0 EQU 36H ;搶答按鍵口數(shù)據(jù)存放地址</p><p><b>  ORG 0000H</b></p><p><b>  AJMP MAIN</b><

48、;/p><p><b>  ORG 0003H</b></p><p>  AJMP INT0SUB</p><p><b>  ORG 000BH</b></p><p>  AJMP T0INT</p><p><b>  ORG 0013H</b>&l

49、t;/p><p>  AJMP INT1SUB</p><p><b>  ORG 001BH</b></p><p>  AJMP T1INT</p><p><b>  ORG 0040H</b></p><p>  MAIN: MOV R1,#30 ;初設(shè)搶

50、答時間為30s</p><p>  MOV R2,#45 ;初設(shè)答題時間為45s</p><p>  MOV TMOD,#11H ;設(shè)置未定時器/模式1</p><p>  MOV TH0,#0F0H</p><p>  MOV TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p>

51、  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b>  SETB EA</b></p><p><b>  SETB ET0</b></p><p><b>  SETB ET1</b><

52、/p><p><b>  SETB EX0</b></p><p>  SETB EX1 ;允許四個中斷,T0/T1/INT0/INT1</p><p><b>  CLR OK</b></p><p><b>  CLR RING</b></p>

53、<p><b>  SETB TR1</b></p><p>  SETB TR0 ;一開始就運行定時器,以開始顯示PPP.如果想重新計數(shù),重置TH1/TL1就可以了</p><p><b>  ;查詢程序</b></p><p>  START: MOV DATA0,#0FFH

54、 ;初始化</p><p>  MOV R5,#0BH</p><p>  MOV R4,#0BH</p><p>  MOV R3,#0BH</p><p>  ACALL DISPLAY ;未開始搶答時候顯示PPP</p><p>  JNB P3.3 ,INT0SUB</p&

55、gt;<p>  JNB P3.4,TZ1 ;倒計時調(diào)整</p><p>  JB P3.0,NEXT ;ddddddd</p><p>  ACALL DELAY</p><p>  JB P3.0,NEXT ;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢&l

56、t;/p><p>  SETB EX0 ;開放INT0 </p><p>  ACALL BARK ;按鍵發(fā)聲</p><p><b>  MOV A,R1</b></p><p>  MOV R6,A ;送R1->R6,因為R

57、1中保存了搶答時間</p><p>  SETB OK ;搶答標志位,用于COUNT只程序中判斷是否查詢搶答(在使用錦囊時用作判斷是搶答倒計時還是回答倒計時)</p><p>  MOV R3,#0AH ;搶答只顯示計時,滅號數(shù)</p><p>  AJMP COUNT

58、 ;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面</p><p>  NEXT: JNB P1.0,FALSE1</p><p>  JNB P1.1,FALSE2</p><p>  JNB P1.2,FALSE3</p><p>  JNB P1.3,FALSE4</p><p&

59、gt;  JNB P1.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: JMP FALSE7</p><p

60、>  TZ2: JMP FALSE8</p><p><b>  ;非法搶答處理程序</b></p><p>  FALSE1: ACALL BARK ;按鍵發(fā)聲</p><p>  MOV R3,#01H</p><p>  AJMP ERROR</p><p&

61、gt;  FALSE2: ACALL BARK</p><p>  MOV R3,#02H</p><p>  AJMP ERROR</p><p>  FALSE3: ACALL BARK</p><p>  MOV R3,#03H</p><p>  AJMP ERROR</p><p> 

62、 FALSE4: ACALL BARK</p><p>  MOV R3,#04H</p><p>  AJMP ERROR</p><p>  FALSE5: ACALL BARK</p><p>  MOV R3,#05H</p><p>  AJMP ERROR</p><p>  FAL

63、SE6: ACALL BARK</p><p>  MOV R3,#06H</p><p>  AJMP ERROR</p><p>  FALSE7: ACALL BARK</p><p>  MOV R3,#07H</p><p>  AJMP ERROR</p><p>  FALSE8:

64、 ACALL BARK</p><p>  MOV R3,#08H</p><p>  AJMP ERROR</p><p>  ;INT0(搶答時間R1調(diào)整程序)</p><p>  INT0SUB: MOV A,R1</p><p>  MOV B,#0AH</p><p><b>

65、;  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 ;先在兩個時間LED上顯示R1<

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

67、;<p>  AJMP INT0SUB</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 D

68、ELAY1</p><p>  AJMP INT0SUB</p><p>  ADD0: INC R1</p><p>  ACALL DELAY1</p><p>  AJMP INT0SUB</p><p>  DEC0: MOV A,R1</p><p>  JZ SETR1

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

70、LL DELAY1</p><p>  AJMP INT0SUB</p><p>  BACK0: RETI </p><p>  ;INT1(回答時間R2調(diào)整程序)</p><p>  INT1SUB: MOV A,R2</p><p>  MOV B,#0AH</p><p><b

71、>  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><p>  JNB P

72、3.4,INC1</p><p>  JNB P3.5,DEC1</p><p>  JNB P3.1,BACK1</p><p>  AJMP INT1SUB</p><p>  INC1: MOV A,R2</p><p>  CJNE A,#63H,ADD1</p><p>  MOV

73、 R2,#00H</p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  ADD1: INC R2</p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  DEC1: MOV

74、A,R2</p><p><b>  JZ SETR2</b></p><p><b>  DEC R2</b></p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  SETR2: MOV R2,#63H</p

75、><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  BACK1: RETI </p><p>  ;倒計時程序(搶答倒計時和回答倒計時都跳到改程序)</p><p>  COUNT: MOV R0,#00H ;重置定時器中斷次數(shù)</p&

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

77、;  DIV AB ;除十分出個位/十位</p><p>  MOV 30H,A ;十位存于(30H)</p><p>  MOV 31H,B ;個位存于(31H)</p><p>  MOV R5,30H ;取十位</p>

78、;<p>  MOV R4,31H ;取個位</p><p><b>  MOV A,R6</b></p><p>  SUBB A,#07H</p><p>  JNC LARGER ;大于5s跳到LARGER,小于等于5s會提醒</p><p>

79、;<b>  MOV A,R0</b></p><p>  CJNE A,#0AH,FULL ;1s中0.5s向下運行</p><p><b>  CLR RING </b></p><p>  AJMP CHECK</p><p>  FULL: CJNE A,#14H,CHECK

80、 ;下面是1s的情況,響并顯示號數(shù)并清R0,重新計</p><p><b>  SETB RING</b></p><p><b>  MOV A,R6</b></p><p>  JZ QUIT ;計時完畢</p><p>  MOV R0,#00H&l

81、t;/p><p>  DEC R6 ;一秒標志減1</p><p>  AJMP CHECK</p><p>  LARGER: MOV A,R0</p><p>  CJNE A,#14H,CHECK ;如果1s向下運行,否者跳到查"停/顯示"</p>

82、<p>  DEC R6 ;計時一秒R6自動減1</p><p>  MOV R0,#00H</p><p>  CHECK: JNB P3.1,QUIT ;如按下停止鍵退出</p><p>  ACALL DISPLAY</p><p>  JB OK,AC

83、COUT ;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)</p><p>  AJMP RECOUNT</p><p>  ACCOUT: MOV A,DATA0 </p><p>  JNB P1.0,TRUE1</p><p>  JNB P1.1,TRUE2<

84、;/p><p>  JNB P1.2,TRUE3</p><p>  JNB P1.3,TRUE4</p><p>  JNB P1.4,TRUE5</p><p>  JNB P1.5,TRUE6</p><p>  JNB P1.6,TZ3</p><p>  JNB P1.7,TZ4</

85、p><p>  AJMP RECOUNT</p><p>  TZ3: JMP TRUE7</p><p>  TZ4: JMP TRUE8 </p><p>  QUIT: CLR OK ;如果按下了"停止鍵"執(zhí)行的程序</p>&l

86、t;p><b>  CLR RING</b></p><p>  AJMP START</p><p><b>  ;正常搶答處理程序</b></p><p>  TRUE1: ACALL BARK ;按鍵發(fā)聲</p><p><b>  MOV A

87、,R2</b></p><p>  MOV R6,A ;搶答時間R2送R6</p><p>  MOV R3,#01H</p><p>  CLR OK ;因為答題的計時不再查詢搶答,所以就鎖了搶答</p><p>  AJMP COUN

88、T</p><p>  TRUE2:ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#02H</p><p><b>  CLR OK</b&

89、gt;</p><p>  AJMP COUNT</p><p>  TRUE3:ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#03H</p>

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

91、;<p>  MOV R3,#04H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE5: ACALL BARK;</p><p><b>  MOV A,R2</b></p><p>&

92、lt;b>  MOV R6,A</b></p><p>  MOV R3,#05H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE6: ACALL BARK;</p><p><b>  MOV

93、 A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#06H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE7: ACALL BAR

94、K;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#07H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT<

95、;/p><p>  TRUE8: ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#08H</p><p><b>  CLR OK</b>

96、;</p><p>  AJMP COUNT</p><p><b>  ;犯規(guī)搶答程序</b></p><p>  ERROR: MOV R0,#00H</p><p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H</p><p>  M

97、OV 34H,R3 ;犯規(guī)號數(shù)暫存與(34H)</p><p>  HERE: MOV A,R0</p><p>  CJNE A,#0AH,FLASH ;0.5s向下運行->滅并停響</p><p><b>  CLR RING </b></p>

98、<p>  MOV R3,#0AH</p><p>  MOV R4,#0AH</p><p>  MOV R5,#0AH ;三燈全滅</p><p>  AJMP CHECK1</p><p>  FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號

99、數(shù)并清R0,重新計</p><p><b>  SETB RING</b></p><p>  MOV R0,#00H</p><p>  MOV R3,34H ;取回號數(shù)</p><p>  MOV R5,#0BH</p><p>  MOV R4,#0

100、BH ;顯示PP和號數(shù)</p><p>  AJMP CHECK1</p><p>  CHECK1: JNB P3.1,QUIT1</p><p>  ACALL DISPLAY</p><p><b>  AJMP HERE</b></p><p>  QUIT

101、1: CLR RING</p><p><b>  CLR OK</b></p><p>  AJMP START</p><p><b>  ;顯示程序</b></p><p>  DISPLAY:MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸出/P2

102、低三位做位選碼輸出,</p><p><b>  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<

103、/p><p>  MOV DPTR,#DAT2</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><

104、;p>  ACALL DELAY</p><p><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

105、DELAY</p><p><b>  RET</b></p><p>  DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H </p><p>  ;"滅","1","2","3","4&qu

106、ot;,"5","6","7","8","9","滅","P"</p><p>  DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H</p><p>  ;第一個為零,其他與上相同,因為十位

107、如果為零顯示熄滅</p><p>  ;加減時間延時(起到不會按下就加N個數(shù))</p><p>  DELAY1: MOV 35H,#08H</p><p>  LOOP0: ACALL DISPLAY</p><p>  DJNZ 35H,LOOP0</p><p><b>  RET</b>

108、</p><p>  ;延時(顯示和去抖動用到)</p><p>  DELAY: MOV 32H,#12H</p><p>  LOOP: MOV 33H,#0AFH</p><p>  LOOP1: DJNZ 33H,LOOP1</p><p>  DJNZ 32H,LOOP</p><

109、p><b>  RET</b></p><p><b>  ;發(fā)聲程序</b></p><p>  BARK: SETB RING</p><p>  ACALL DELAY1</p><p>  ACALL DELAY1</p><p>  CLR RING

110、 ;按鍵發(fā)聲</p><p><b>  RET</b></p><p>  ;TO溢出中斷(響鈴程序)</p><p>  T0INT: MOV TH0,#0ECH</p><p>  MOV TL0,#0FFH</p><p>  JNB RING,OUT;

111、</p><p>  CPL P3.6 ;RING標志位為1時候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音</p><p>  OUT: RETI</p><p>  ;T1溢出中斷(計時程序)</p><p>  T1INT: MOV TH1,#3CH</p><p>  MO

112、V TL1,#0B0H</p><p><b>  INC R0</b></p><p><b>  RETI</b></p><p>  ;INTT0中斷服務(wù)程序</p><p>  INTT0:MOV DATA0,P1</p><p><b>  CLR EX0

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論