2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  摘要</b></p><p>  隨著科學(xué)技術(shù)的發(fā)展和普及,各種各樣的競(jìng)賽越來越多,其中搶答器的作用也越來越重要。本文設(shè)計(jì)出以AT89S51單片機(jī)為核心的八路搶答器,采用了數(shù)字顯示器直接指示,自動(dòng)鎖存顯示結(jié)果,并自動(dòng)復(fù)位的設(shè)計(jì)思想,它能根據(jù)不同的搶答輸入信號(hào),經(jīng)過單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號(hào)相對(duì)應(yīng)的輸出信號(hào),最后通過LED數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組

2、的搶答時(shí)間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,充分利用了單片機(jī)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大、可靠性好、實(shí)用性強(qiáng)的特點(diǎn)。</p><p>  本設(shè)計(jì)是以搶答為出發(fā)點(diǎn)。考慮到依需設(shè)定限時(shí)回答的功能,利用89S51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)能

3、夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法</p><p>  【關(guān)鍵詞】搶答器 單片機(jī) LED數(shù)碼顯示管 定時(shí)器/計(jì)數(shù)器 揚(yáng)聲器。</p><p><b>  目錄</b></p><p>  摘要…………………………………………

4、…………………………………………2</p><p>  緒論………………………………………………………………………………………5</p><p>  一、搶答器的概述………………………………………………………………………………6</p><p>  1.1 系統(tǒng)設(shè)計(jì)的功能…………………………………………………………………………6</p><p

5、>  1.1.2 擴(kuò)展功能…………………………………………………………………………………6</p><p>  1.2 搶答器需求分析…………………………………………………………………………6</p><p>  1.3 搶答器的硬件設(shè)計(jì)………………………………………………………………………7</p><p>  1.4 搶答器的工作過程…………

6、……………………………………………………………7</p><p>  二、單片機(jī)的功能簡(jiǎn)介………………………………………………………………………8</p><p>  2.1 89系列單片機(jī)的概述……………………………………………………………………7 </p><p>  2.2 AT89S51的功能…………………………………………………………………………8&

7、lt;/p><p>  2.2.1 AT89S51單片機(jī)的內(nèi)部結(jié)構(gòu)…………………………………………………………8</p><p>  三、硬件電路的設(shè)計(jì)…………………………………………………………………………10</p><p>  3.1 總電路原理……………………………………………………………………………10</p><p>  3.2

8、 時(shí)鐘頻率電路的設(shè)計(jì)…………………………………………………………………11</p><p>  3.3 復(fù)位電路的設(shè)計(jì)………………………………………………………………………12</p><p>  3.3.1 復(fù)位電路的可靠性設(shè)計(jì)………………………………………………………………12</p><p>  3.3.2 人工復(fù)位………………………………………

9、………………………………………13</p><p>  3.4 顯示電路的設(shè)計(jì)…………………………………………………………………………14</p><p>  3.5 控制電路的實(shí)現(xiàn)…………………………………………………………………………16</p><p>  3.6 發(fā)聲………………………………………………………………………………………17</p>

10、<p>  3.7 系統(tǒng)復(fù)位…………………………………………………………………………………17</p><p>  四、軟件設(shè)計(jì)………………………………………………………………………………19</p><p>  4.1 軟件任務(wù)分析…………………………………………………………………………19</p><p>  4.2 顯示子程序的設(shè)計(jì)………………

11、……………………………………………………20</p><p>  4.3 定時(shí)器T0、T1中斷服務(wù)程序的設(shè)計(jì)…………………………………………………20</p><p>  4.4 搶答器處理程序的設(shè)計(jì)………………………………………………………………21</p><p>  4.5 主程序及分析…………………………………………………………………………23<

12、/p><p>  五、設(shè)計(jì)總結(jié)…………………………………………………………………………………31</p><p>  參考文獻(xiàn)………………………………………………………………………………………32</p><p>  致謝……………………………………………………………………………………………33</p><p><b>  緒論<

13、/b></p><p>  數(shù)字技術(shù)是當(dāng)前發(fā)展最快的學(xué)科之一,數(shù)字邏輯器件已從60年代的小規(guī)模集成電路(SSI)發(fā)展到目前的中、大規(guī)模集成電路(MSI、LSI)及超大規(guī)模集成電(VLSI)。相應(yīng)地,數(shù)字邏輯電路的設(shè)計(jì)方法在不斷地演變和發(fā)展,由原來的單一的硬件邏輯設(shè)計(jì)發(fā)展成三個(gè)分支,即硬件邏輯設(shè)計(jì)(中、小規(guī)模集成器件)、軟件邏輯設(shè)計(jì)(軟件組裝的LSI和VSI,如微處理器、單片機(jī)等)及兼有二者優(yōu)點(diǎn)的專用集成電路

14、(ASIC)設(shè)計(jì)。 </p><p>  目前數(shù)字電子技術(shù)已經(jīng)廣泛地應(yīng)用于計(jì)算機(jī),自動(dòng)控制,電子測(cè)量?jī)x表,電視,雷達(dá),通信等各個(gè)領(lǐng)域。例如在現(xiàn)代測(cè)量技術(shù)中,數(shù)字測(cè)量?jī)x表不僅比模擬測(cè)量?jī)x表精度高,功能高,而且容易實(shí)現(xiàn)測(cè)量的自動(dòng)化和智能化。隨著集成技術(shù)的發(fā)展,尤其是中,大規(guī)模和超大規(guī)模集成電路的發(fā)展,數(shù)字電子技術(shù)的應(yīng)用范圍將會(huì)更廣泛地滲透到國民經(jīng)濟(jì)的各個(gè)部門,并將產(chǎn)生越來越深刻的影響。隨著現(xiàn)代社會(huì)的電子科技的迅速發(fā)展

15、,要求我們要理論聯(lián)系實(shí)際,數(shù)字電子邏輯課程設(shè)計(jì)的進(jìn)行使我們有了這個(gè)非常關(guān)鍵的機(jī)會(huì)。</p><p>  通過這種綜合性訓(xùn)練,我們要達(dá)到以下的目的和要求:</p><p>  1.結(jié)合課程中所學(xué)的理論知識(shí),獨(dú)立設(shè)計(jì)方案。達(dá)到學(xué)有所用的目的.</p><p>  2.學(xué)會(huì)查閱相關(guān)手冊(cè)與資料,通過查閱手冊(cè)和文獻(xiàn)資料,進(jìn)一步熟悉常用電子器件類型和特性,并掌握合理選用的原則,

16、培養(yǎng)獨(dú)立分析與解決問題的能力,對(duì)于搶答器我們大家都知道那是用于選手做搶答題時(shí)用的,選手進(jìn)行搶答,搶到題的選手來回答問題。搶答器不僅考驗(yàn)選手的反應(yīng)速度同時(shí)也要求選手具備足夠的知識(shí)面和一定的勇氣。選手們都站在同一個(gè)起跑線上,體現(xiàn)了公平公正的原則。</p><p>  第一章 搶答器的概述</p><p>  1.1 系統(tǒng)設(shè)計(jì)的功能</p><p>  1.1.1 基本功

17、能:</p><p> ?。?) 同時(shí)供8名選手比賽,分別用8個(gè)按鈕S0 ~ S7表示。</p><p>  (2)設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。</p><p> ?。?)搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),揚(yáng)聲器發(fā)出聲響提示,并在七段數(shù)碼管上顯示選手號(hào)碼。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)

18、清除為止。</p><p>  1.1.2 擴(kuò)展功能:</p><p> ?。?)搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動(dòng)"開始"鍵后,定時(shí)器進(jìn)行減計(jì)時(shí)。</p><p> ?。?)參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。在這

19、段 (3)如果定時(shí)時(shí)間已到,無人搶答,本次搶答無效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。</p><p>  1.2 搶答器的需求分析</p><p>  1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效。</p><p>  2、搶答限定時(shí)間和回答問題的時(shí)間可是在1~99s設(shè)定。</p><p>  

20、3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示。</p><p>  4、搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,時(shí)間完后系統(tǒng)自動(dòng)復(fù)位。</p><p>  5、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。</p><p><b>  單片機(jī)的功能簡(jiǎn)介</b></p><p>  89系列單片機(jī)的概況</p&g

21、t;<p>  MCS-51 單片機(jī)是美國INTE 公司于1980 年推出的產(chǎn)品,典型產(chǎn)品有 80 31、8051和8751 等通用產(chǎn)品,一直到現(xiàn)在, MCS-5 1 內(nèi)核系列兼容的單片機(jī)仍是應(yīng)用的主流產(chǎn)品,各高校及專業(yè)學(xué)校的培訓(xùn)教材仍與MCS-51 單片機(jī)作為代表進(jìn)行理論基礎(chǔ)學(xué)習(xí)。我們常說的已經(jīng)停產(chǎn)的89C51 指的是ATMEL公司的 AT 89C51 單片機(jī),同時(shí)是在原基礎(chǔ)上增強(qiáng)了許多特性,如時(shí)鐘,更優(yōu)秀的是由Flas

22、h(程序存儲(chǔ)器的內(nèi)容至少可以改寫 1000 次)存儲(chǔ)器取帶了原來的 ROM(一次性寫入),AT89C51 的性能相對(duì)于8051 已經(jīng)算是非常優(yōu)越的了。89C51 的缺陷在于不支持ISP(在線更新程序)功能,必須加上ISP 功能等新功能才能更好延續(xù)MCS-51 的傳奇。89S51就是在這樣的背景下取代89C51 的,現(xiàn)在,89S51 目前已經(jīng)成為了實(shí)際應(yīng)用市場(chǎng)上新的寵兒,作為市場(chǎng)占有率第一的Atmel 目前公司已經(jīng)停產(chǎn)AT89C51,將用

23、AT89S51 代替。89S51 在工藝上進(jìn)行了改進(jìn),89S51 采用 0.35 新工藝,成本降低,而且將功能提升,增加了競(jìng)爭(zhēng)力。89SXX 可以像下</p><p>  AT89S51/LS51單片機(jī)是低功耗的、具有4KB在線課編程Flash存儲(chǔ)器的單片機(jī)。它與通用80C51系列單片機(jī)的指令系統(tǒng)和引腳兼容。片內(nèi)的Flash可允許在線重新編程,也可使用非易失性存儲(chǔ)器編程。他將通用CPU和在線可編程Flash集成在

24、一個(gè)芯片上,形成了功能強(qiáng)大、使用靈活和具有較高性能性價(jià)比的微控制器。</p><p>  2.2 AT89S51單片機(jī)的內(nèi)部結(jié)構(gòu)</p><p>  AT89S51單片機(jī)內(nèi)部由CPU、4KB的FPEROM ,128B的RAM,兩個(gè)16位的定時(shí)/計(jì)數(shù)器T0和T1,4個(gè)8位的I/O端P0、P1、P2、P3等組成。單片微機(jī)內(nèi)部最核心的部分是CPU。CPU主要功能是產(chǎn)生各種控制信號(hào),控制存儲(chǔ)器、

25、輸入/輸出端口的數(shù)據(jù)傳輸、數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算以及位操作處理等,CPU按其功能可分為運(yùn)算器和控制器兩部分。控制器由程序計(jì)數(shù)器PC、指令儲(chǔ)存器、指令譯碼器、實(shí)時(shí)控制與條件轉(zhuǎn)移邏輯電路等組成。它的功能是對(duì)來自存儲(chǔ)器中的指令進(jìn)行譯碼,通過實(shí)時(shí)控制電路,在規(guī)定的時(shí)刻發(fā)出各種操作所需的內(nèi)部和外部的控制信號(hào),使各部分協(xié)調(diào)工作,完成指令所規(guī)定的操作。運(yùn)算器由算術(shù)邏輯器部件ALU、累加器ACC、暫存器、程序狀態(tài)字寄存器PSW,BCD碼運(yùn)算調(diào)整電路等

26、組成。</p><p><b>  單片機(jī)的內(nèi)部結(jié)構(gòu)圖</b></p><p>  為了提高數(shù)據(jù)處理和位操作功能,片內(nèi)增加了一個(gè)通用寄存器B和一些專用寄存器,還增加了位處理邏輯電路的功能[3]。其內(nèi)部結(jié)構(gòu)如圖2-3所示。</p><p><b>  硬件電路的設(shè)計(jì)</b></p><p><b

27、>  3.1 設(shè)計(jì)原理</b></p><p>  本系統(tǒng)采用AT89S52單片機(jī)作為核心,控制系統(tǒng)的四個(gè)模塊分別為:?jiǎn)纹瑱C(jī)最小系統(tǒng)、顯示模塊、顯示驅(qū)動(dòng)模塊、搶答開關(guān)模塊。搶答器原理框圖如圖3.1所示。 </p><p>  圖 3.1 搶答器原理框圖</p><p>  總體設(shè)計(jì)之后,然后進(jìn)行單元電路設(shè)計(jì)。單元電路設(shè)計(jì)分為電源電路設(shè)計(jì)、時(shí)

28、鐘和復(fù)位電路、鍵盤電路、顯示報(bào)警電路等。</p><p><b>  總電路原理</b></p><p>  為使硬件電路設(shè)計(jì)盡可能合理,應(yīng)注意以下幾方面:</p><p>  (1) 盡可能采用功能強(qiáng)的芯片,以簡(jiǎn)化電路,功能強(qiáng)的芯片可以代替若干普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價(jià)格不斷下降,并不一定比若干普通芯片價(jià)格的總和高。<

29、/p><p>  (2) 留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路時(shí),要考慮到將來修改擴(kuò)展的方便。因?yàn)楹苌儆幸诲N定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來可能要為一點(diǎn)小小的修改或擴(kuò)展而被迫進(jìn)行全面返工。</p><p>  (3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),本設(shè)計(jì)采用AT89C51單片機(jī)。</p><p>  (4) RAM空間,AT89S51內(nèi)部RAM不多,當(dāng)要增強(qiáng)

30、軟件數(shù)據(jù)處理功能時(shí),往往覺得不足。如果系統(tǒng)配置了外部RAM,則建議多留一些空間。如選用8155作I/O接口,就可以增強(qiáng)256字節(jié)RAM.如果有大批數(shù)據(jù)需要處理,則應(yīng)配置足夠的RAM,如6264,62256等。隨著軟件設(shè)計(jì)水平的提高,往往只要改變或增加軟件中的數(shù)據(jù)處理算法,就可以使系統(tǒng)功能提高很多,而系統(tǒng)的硬件不必做任何更換就使系統(tǒng)升級(jí)換代。只要在硬件電路設(shè)計(jì)初期考慮到這一點(diǎn),就應(yīng)該為系統(tǒng)將來升級(jí)留足夠的RAM空間,哪怕多設(shè)計(jì)一個(gè)RAM的

31、插座,暫不插芯片也好。</p><p>  (5) I/O端口:在樣機(jī)研制出來后進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問題,而這些問題不是靠單純的軟件措施來解決的。如有些新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件電路設(shè)計(jì)就預(yù)留出一些I/O端口,雖然當(dāng)時(shí)空著沒用,那么用的時(shí)候就派上用場(chǎng)了。</p><p>  P2.4為開始搶答[9],P2.5

32、為加分,P2.6為減分,P1.0-P1.7為六八搶答輸入,數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P2.7口。</p><p>  3.2 時(shí)鐘頻率電路的設(shè)計(jì)</p><p>  時(shí)鐘電路是計(jì)算機(jī)的心臟,它控制著計(jì)算機(jī)的工作節(jié)奏。MCS-51單片機(jī)允許的時(shí)鐘頻率是因型號(hào)而異的。</p><p><b>  晶振的選擇:</b><

33、/p><p>  6MHz的晶振,其機(jī)器周期是2us。</p><p>  12MHz的晶振,其機(jī)器周期是1us, 也就是說在執(zhí)行同一條指令時(shí)用6MHz的晶振所用的時(shí)間是12MHz晶振的兩倍。為了提高整個(gè)系統(tǒng)的性能我選擇了12MHz的晶振。</p><p><b>  振蕩方式的選擇:</b></p><p>  內(nèi)部振蕩方

34、式,MCS-51內(nèi)部都有一個(gè)反相放大器,XTAL1、XTAL2分別為反相放大器輸入和輸出端,外接定時(shí)反饋元件以后就組成振蕩器,產(chǎn)生時(shí)鐘送至單片機(jī)內(nèi)部的各個(gè)部件。這樣就構(gòu)成了內(nèi)部振蕩方式</p><p>  外部振蕩方式是把已有的時(shí)鐘信號(hào)引入單片機(jī)內(nèi)。這種方式適合用來使單片機(jī)的時(shí)鐘與外部信號(hào)一致。</p><p>  在我的這個(gè)設(shè)計(jì)中沒有也無需與外部時(shí)鐘信號(hào)一致,所以我選擇了內(nèi)部振蕩方式,由

35、于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。晶振我選擇了12MHz,相對(duì)于6MHz的晶振,整個(gè)系統(tǒng)的運(yùn)行速度更快了。電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值我選擇了30pF。內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)穩(wěn)定性高。</p><p>  圖3-2時(shí)鐘電路的設(shè)計(jì)</p><p>  單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振

36、蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。</p><p>  一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 C1,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。</p>

37、<p>  單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為12MHz,即fosc=12MHz,則時(shí)鐘周期為1/12µs。</p><p><b>  復(fù)位電路的設(shè)計(jì)</b></p><p>  3.3.1 復(fù)位電路的可靠性設(shè)計(jì)</p&

38、gt;<p>  計(jì)算機(jī)在啟動(dòng)運(yùn)行是都需要復(fù)位,使中央處理器CPU和系統(tǒng)中的其它部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。MCS-51的復(fù)位輸入引腳RST為MCS-51提供了初始化的手段,可以使程序從指定處開始執(zhí)行,在MCS-51的時(shí)鐘電路工作后,只要RST引腳上出現(xiàn)超過兩個(gè)機(jī)器周期以上的高電平時(shí),即可產(chǎn)生復(fù)位的操作。只要 RST保持高電平,則MCS-51循環(huán)復(fù)位。只有當(dāng)RST由高電平變低電平以后,MCS-51才

39、從0000H地址開始執(zhí)行程序。本系統(tǒng)采用按鍵復(fù)位方式的復(fù)位電路。</p><p>  MCS-51單片機(jī)有一個(gè)復(fù)位引腳RST,它是施密特觸發(fā)輸入,當(dāng)振蕩器起振</p><p>  后,該引腳上出現(xiàn)2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘周期)以上的高電平。使器件復(fù)位,只要RST保持高電平,MCS-51保持復(fù)位狀態(tài)。此時(shí)ALE、/PSEN、P0、P1、P2、P3口都輸出高電平。RST變?yōu)榈碗娖胶?,退出?fù)位

40、,CPU從初始狀態(tài)開始工作。復(fù)位以后內(nèi)部寄存器的初始狀態(tài)為(SP=07,P0、P1、P2、P3為0FFH外,其它寄存器都為0。在RST復(fù)位端接一個(gè)電容至VccHE 一個(gè)電阻至Vss,就能實(shí)現(xiàn)上電自動(dòng)復(fù)位,對(duì)于CMOS單片機(jī)只要接一個(gè)電容至Vcc即可。如圖,在加電瞬間,電容通過電阻充電,就在RST端出現(xiàn)一定時(shí)間的高電平,只要高電平時(shí)間足夠長(zhǎng),就可以使MCS-51有效地復(fù)位。RST端在加電時(shí)應(yīng)保持的高電平時(shí)間包括Vcc的上升時(shí)間和振蕩器起

41、振時(shí)間,Vcc上升時(shí)間若為10ms,振蕩器起振時(shí)間和頻率有關(guān)。10MHz時(shí)間約為1ms,1MHz時(shí)約為10ms,所以一般為了可靠地復(fù)位,RST在上電時(shí)應(yīng)保持20ms以上的高電平。圖2.5中,RC時(shí)間常數(shù)越大,上電時(shí)RST端保持高電平的時(shí)間越長(zhǎng)。當(dāng)振蕩頻率為12MHZ時(shí),典型值為C=10uF,R=8.2kΩ. </p><p>  圖3-3上電復(fù)位電路</p><p><b> 

42、 3.3.2人工復(fù)位</b></p><p>  除上電自動(dòng)復(fù)位以外,常常需要人工復(fù)位,將一個(gè)按鈕開關(guān)并聯(lián)于上電自動(dòng)復(fù)位電路,按一下開關(guān)就RST端出現(xiàn)一段時(shí)間的高電平,即使器件復(fù)位。如圖所示</p><p>  圖3-4上電和開關(guān)復(fù)位</p><p>  而我們?cè)谶@次的畢業(yè)設(shè)計(jì)中運(yùn)用的人工復(fù)位電路. 其中電平復(fù)位是通過RST端經(jīng)電阻和電源Vcc接通而實(shí)現(xiàn)

43、的,按鍵手動(dòng)電平復(fù)位電路如圖。當(dāng)時(shí)鐘頻率選用12MHz時(shí),C選取10uF,R選擇1000歐。</p><p>  3.4 顯示電路的設(shè)計(jì)</p><p>  顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來解決。</p><p>  3.4.1 顯示模塊在系統(tǒng)硬件中的安排</p><p> 

44、 操作者主要設(shè)計(jì)從顯示設(shè)備上獲取微機(jī)系統(tǒng)的信息的,因此,操作者每操作一下,顯示設(shè)備商都應(yīng)該有一定的反應(yīng)。這說明,顯示模塊與操作有關(guān),即監(jiān)控程序是需要調(diào)用顯示模塊。不同的操作需要顯示不同的內(nèi)容,這又說明各執(zhí)行模塊對(duì)顯示模塊的驅(qū)動(dòng)方式是不同的。另一方面,在操作者沒有進(jìn)行操作時(shí),顯示內(nèi)容也是變化的,如顯示現(xiàn)場(chǎng)各物理量的變化情況。這時(shí)顯示模塊不是由操作者通過命令鍵來驅(qū)動(dòng),而是由各類自動(dòng)執(zhí)行的功能模塊來驅(qū)動(dòng)。自動(dòng)執(zhí)行的各類模塊在安排在各種中斷子程

45、序中,這就是說,各種中斷子程序也要調(diào)用顯示模塊。如果監(jiān)控安排在中斷子程序中,兩者的要求就統(tǒng)一了,問題比較好解決,如果監(jiān)控程序安排在主程序中,在監(jiān)控程序調(diào)用顯示模塊的過程中發(fā)生了中斷,中斷子程序也調(diào)用顯示模塊,這時(shí)就容易出問題。一種比較妥善的辦法是只讓一處調(diào)用顯示模塊,其他各處均不得直接調(diào)用顯示模塊,但有權(quán)申請(qǐng)顯示。這就要設(shè)置一個(gè)顯示申請(qǐng)標(biāo)志,當(dāng)某模塊需要顯示時(shí),將申請(qǐng)標(biāo)志置位,同時(shí)設(shè)定有關(guān)顯示內(nèi)容(或指針)。由于一處調(diào)用顯示模塊,故不會(huì)

46、發(fā)生沖突。為了使顯示模塊能及時(shí)反應(yīng)系統(tǒng)需要,應(yīng)將顯示模塊安排在一個(gè)重復(fù)執(zhí)行的循環(huán)(如監(jiān)控循環(huán)或時(shí)鐘中斷子程序)中。當(dāng)監(jiān)控程</p><p>  這里將顯示功能集中到一起,作為一個(gè)功能模塊,就要求它的功能全面,能根據(jù)系統(tǒng)軟件提供的信息自動(dòng)完成顯示內(nèi)容的查找,變換和輸出驅(qū)動(dòng)。這樣設(shè)計(jì)使得各功能模塊都不必考慮顯示問題,只要給出一個(gè)簡(jiǎn)單的信息(如顯示格式編碼)甚至不用再提供額外信息,直接利用當(dāng)前狀態(tài)變量和軟件標(biāo)志就可以完

47、成所需的顯示要求。</p><p>  如果編寫這樣一個(gè)集中顯示模塊有困難,也可以將顯示模塊編小一些,只完成顯示緩沖區(qū)的內(nèi)容輸出到顯示器件上的工作。這時(shí)各功能模塊在提出顯示申請(qǐng)時(shí),還需要將顯示內(nèi)容按需要的格式送入顯示緩沖區(qū)中。這樣分而治之比較容易編程,但要小心出現(xiàn)顯示混亂。例如后臺(tái)程序需要調(diào)用顯示,將有關(guān)信息送入到現(xiàn)實(shí)緩沖區(qū)進(jìn)行顯示;中斷返回后,后臺(tái)程序繼續(xù)送完后半部分顯示內(nèi)容,但前半部分內(nèi)容已經(jīng)變了,這樣就出現(xiàn)

48、了顯示錯(cuò)誤。解決的辦法是,在申請(qǐng)顯示前,先檢查是否已經(jīng)有顯示申請(qǐng),如果有,就不再申請(qǐng),等待下次機(jī)會(huì);如果沒有,則先申請(qǐng)標(biāo)志位,再將顯示內(nèi)容送入顯示緩沖區(qū)。這時(shí)就不必?fù)?dān)心其他前臺(tái)模塊來打擾了,就可以得到一次完整的顯示機(jī)會(huì)。</p><p>  在這里我們使用的是七段數(shù)碼管顯示,通常在顯示[6]上我們采用的方法一般包括兩種:一種是靜態(tài)顯示,一種是動(dòng)態(tài)顯示。其中靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,程序編寫簡(jiǎn)單,但占用端口資

49、源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但是相對(duì)靜態(tài)顯示而言占用端口資源少。在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法。</p><p>  并通過查表法,將其在數(shù)碼管上顯示出來,其中P0口為字型碼輸入端,P2口低3位為字選段輸入端。在這里我們通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字,數(shù)碼管顯示原理如下: </p><p><b>  MOV A,R5 </

50、b></p><p>  MOVC A,@A+DPTR ;查字型</p><p>  MOV P2,#01H ;送位選碼</p><p>  MOV P0,A ;送字型碼</p><p>  ACALL DELAY ;調(diào)延時(shí),去閃爍</p>&

51、lt;p>  在七段數(shù)碼管顯示中可分為共陽極和共陰極兩種類型極。以共陰為例,要想a段亮,向a段送1就是,返之送0,共陽剛好相反。</p><p><b>  掃描電路的實(shí)現(xiàn)</b></p><p>  鍵盤是人與微機(jī)系統(tǒng)打交道的主要設(shè)備。關(guān)于鍵盤硬件電路的設(shè)計(jì)方法也可以在文獻(xiàn)和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程序。站在系統(tǒng)

52、監(jiān)控軟件設(shè)計(jì)的立場(chǎng)上來看,僅僅完成鍵盤掃描,讀取當(dāng)前時(shí)刻的鍵盤狀態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們?cè)诓僮麈I盤就容易引起誤操作和操作失控現(xiàn)象。在單片機(jī)應(yīng)用中鍵盤用得最多的形式是獨(dú)立鍵盤及矩陣鍵盤。</p><p>  它們各有自己的特點(diǎn),其中獨(dú)立鍵盤硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤與獨(dú)立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨(dú)立鍵盤復(fù)雜得多,而且

53、在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢(shì)得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用最常用的方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。</p><p>  3.

54、5.1 按鈕輸入的硬件處理</p><p>  按鈕的觸點(diǎn)在閉合和斷開時(shí)均會(huì)產(chǎn)生抖動(dòng),這是觸點(diǎn)的邏輯電平是不穩(wěn)定的,如不妥善處理,將會(huì)引起按鍵命令的錯(cuò)誤執(zhí)行或重復(fù)執(zhí)行。現(xiàn)在一般均用軟件延時(shí)的方法來避開抖動(dòng)階段,這一延時(shí)過程一般大于5ms,例如取10-20ms。如果監(jiān)控程序中的讀鍵操作安排在主程序(后臺(tái)程序)或鍵盤中斷(外部中斷)子程序中,則該延時(shí)子程序便可直接插入讀鍵過程中。如果讀鍵過程安排在定時(shí)中斷子程序中,就

55、可省去專門的延時(shí)子程序,利用兩次定時(shí)中斷的時(shí)間間隔來完成抖動(dòng)處理。</p><p><b>  發(fā)聲</b></p><p>  我們知道,聲音的頻譜范圍約在幾十到幾千赫茲[7],若能利用程序來控制單片機(jī)某個(gè)口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,

56、從而改變音調(diào),使喇叭發(fā)出不同的聲音。 </p><p><b>  3.7 系統(tǒng)復(fù)位</b></p><p>  使CPU進(jìn)入初始狀態(tài),從0000H地址開始執(zhí)行程序的過程叫系統(tǒng)復(fù)位。從實(shí)現(xiàn)系統(tǒng)復(fù)位的方法來看,系統(tǒng)復(fù)位可分為硬件復(fù)位和軟件復(fù)位。硬件復(fù)位必須通過CPU外部的硬件電路給CPU的RESET端加上足夠時(shí)間的高電位才能實(shí)現(xiàn)。上電復(fù)位,人工按鈕復(fù)位和硬件看門狗

57、復(fù)位均為硬件復(fù)位。硬件復(fù)位后,各專用寄存器的狀態(tài)均被初始化,且對(duì)片內(nèi)通用寄存器的內(nèi)容沒有影響。但是,硬件復(fù)位還能自動(dòng)清除中斷激活標(biāo)志,使中斷系統(tǒng)能夠正常工作,這樣一個(gè)事實(shí)卻容易為不少編碼人員所忽視。軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能,最后通過轉(zhuǎn)移指令使程序從0000H地址開始執(zhí)行。對(duì)各專用寄存器的復(fù)位操作是容易的,也沒有必要完全模擬,可根據(jù)實(shí)際需要去主程序初始化過程中完成。而對(duì)中斷激活標(biāo)志的清除工作常被遺忘,因?yàn)樗鼪]有明確的位地

58、址可供編程。有的編程人員用020000(LJMP 0000H)作為軟件陷阱,認(rèn)為直接轉(zhuǎn)向0000H地址就完成了軟件復(fù)位,就是這類錯(cuò)誤的典型代表。軟件復(fù)位是使用軟件陷阱和軟件看門狗后必須進(jìn)行的工作,這時(shí)程序出錯(cuò)完全有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已置位,它將阻止同級(jí)中斷響應(yīng)。由于軟件看門是高級(jí)中斷,它</p><p>  在所有的指令中,只有RETI指令能夠清除中斷激活標(biāo)志。前文各處提案到的出錯(cuò)處理程序E

59、RR主要完成這一功能,其他的善后工作交由復(fù)位后的系統(tǒng)去完成。</p><p>  有復(fù)位時(shí)系統(tǒng)的歷史狀況,可將復(fù)位分為“冷啟動(dòng)”和“熱啟動(dòng)”。 “冷啟動(dòng)”時(shí),系統(tǒng)的狀態(tài)全部無效,進(jìn)行徹底的初始化操作;而“熱啟動(dòng)”時(shí),對(duì)系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的初始化。系統(tǒng)初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作一般均為“熱啟動(dòng)”初次上電投入運(yùn)行時(shí),必須是“冷啟動(dòng)”,以后由抗干擾措施引起的復(fù)位操作

60、一般均為“熱啟動(dòng)”。為了使系統(tǒng)能正確決定采用何種啟動(dòng)方式,常用上電標(biāo)志來區(qū)分,如圖3-6所示:</p><p>  圖3-6 系統(tǒng)復(fù)位策略圖</p><p><b>  第四章 軟件設(shè)計(jì)</b></p><p>  4.1 軟件任務(wù)分析</p><p>  軟件任務(wù)分析和硬件電路設(shè)計(jì)結(jié)合進(jìn)行,哪些功能由硬件完成,哪些

61、任務(wù)由軟件完成,在硬件電路設(shè)計(jì)基本定型后,也就基本上決定下來了。</p><p>  軟件任務(wù)分析環(huán)節(jié)是為軟件設(shè)計(jì)做一個(gè)總體規(guī)劃。從軟件的功能來看可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量,計(jì)算,顯示,打印[8],輸出控制和通信等,另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色的軟件。這兩類軟件的設(shè)計(jì)方法各有特色,執(zhí)行軟件的設(shè)計(jì)偏重算法效率,與硬件關(guān)系

62、密切,千變?nèi)f化。</p><p>  軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義(輸入輸出定義)。在各執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。各執(zhí)行模塊規(guī)劃好后,就可以監(jiān)控程序了。首先根據(jù)系統(tǒng)功能和鍵盤設(shè)置選擇一種最適合的監(jiān)控程序結(jié)構(gòu)。相對(duì)來講,執(zhí)行模塊任務(wù)明確單純,比較容易編程,而監(jiān)控程序較易出問題。這如同當(dāng)一名操作工人比較容易,而當(dāng)一個(gè)廠長(zhǎng)就比

63、較難了。</p><p>  軟件任務(wù)分析的另一個(gè)內(nèi)容是如何安排監(jiān)控軟件和各執(zhí)行模塊。整個(gè)系統(tǒng)軟件可分為后臺(tái)程序(背景程序)和前臺(tái)程序。后臺(tái)程序指主程序及其調(diào)用的子程序,這類程序?qū)?shí)時(shí)性要求不是太高,延誤幾十ms甚至幾百ms也沒關(guān)系,故通常將監(jiān)控程序(鍵盤解釋程序),顯示程序和打印程序等與操作者打交道的程序放在后臺(tái)程序中執(zhí)行;而前臺(tái)程序安排一些實(shí)時(shí)性要求較高的內(nèi)容,如定時(shí)系 統(tǒng)和外部中斷(如掉電中斷)。也可以將全

64、部程序均安排在前臺(tái),后臺(tái)程序?yàn)椤笆瓜到y(tǒng)進(jìn)入睡眠狀態(tài)”,以利于系統(tǒng)節(jié)電和抗干擾。</p><p><b>  顯示子程序的設(shè)計(jì)</b></p><p>  顯示子程序,及部分注解如下:</p><p>  DISPLAY:MOV DPTR,#DAT1; 查表顯示程序,利用P0口做段選碼口輸出P2低三位做位選碼輸出</p>

65、<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</p><p>  MOV

66、 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><p>  ACALL DELAY<

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

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

69、,"6","7","8","9","滅","F"</p><p>  DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H</p><p>  第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅</p>

70、<p>  定時(shí)器T0、T1中斷服務(wù)程序的設(shè)計(jì)</p><p>  TO溢出中斷(響鈴程序)</p><p>  T0INT:  MOV TH0,#0ECH</p><p>  MOV TL0,#0FFH</p><p>  JNB RING,OUT;</p><p>  CPL P3.6;RI

71、NG標(biāo)志位為1時(shí)候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音</p><p>  OUT:    RETI</p><p>  T1溢出中斷(計(jì)時(shí)程序):</p><p>  T1INT:  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H</p><p>

72、;<b>  INC R0</b></p><p><b>  RETI</b></p><p><b>  END</b></p><p>  搶答器處理程序的設(shè)計(jì)</p><p><b>  搶答器處理程序:</b></p><p&

73、gt;  TRUE1: ACALL BARK;按鍵發(fā)聲</p><p><b>  MOV A,R2</b></p><p>  MOV R6,A;搶答時(shí)間R2送R6</p><p>  MOV R3,#01H</p><p>  CLR OK;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答</p><p

74、>  AJMP COUNT</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>

75、  CLR OK</b></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

76、,#03H</p><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<

77、/b></p><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>&l

78、t;/p><p><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>

79、<p><b>  MOV 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><

80、;p>  TRUE7:  ACALL BARK;</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

81、><p>  AJMP COUNT</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>

82、<p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p><b>  程序及分析</b></p><p>  單片機(jī)控制8路搶答器程序</p><p>  OK EQU 20H ;搶答開始標(biāo)志位</p>&l

83、t;p>  RING EQU 22H ;響鈴標(biāo)志位</p><p><b>  ORG 0000H</b></p><p><b>  AJMP MAIN</b></p><p><b>  ORG 0003H</b></p><p>  AJMP I

84、NT0SUB</p><p><b>  ORG 000BH</b></p><p>  AJMP T0INT</p><p><b>  ORG 0013H</b></p><p>  AJMP INT1SUB</p><p><b>  ORG 001BH<

85、;/b></p><p>  AJMP T1INT</p><p><b>  ORG 0040H</b></p><p>  MAIN: MOV R1,#30 ;初設(shè)搶答時(shí)間為30s</p><p>  MOV R2,#60 ;初設(shè)答題時(shí)間為60s<

86、;/p><p>  MOV TMOD,#11H ;設(shè)置未定時(shí)器/模式1</p><p>  MOV TH0,#0F0H</p><p>  MOV TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H

87、 ; 50ms為一次溢出中斷</p><p><b>  SETB EA</b></p><p><b>  SETB ET0</b></p><p><b>  SETB ET1</b></p><p><b>  SETB EX0</b&

88、gt;</p><p>  SETB EX1 ;允許四個(gè)中斷,T0/T1/INT0/INT1</p><p><b>  CLR OK</b></p><p><b>  CLR RING</b></p><p><b>  SETB TR1</b&g

89、t;</p><p>  SETB TR0 ;一開始就運(yùn)行定時(shí)器,以開始顯示FFF.</p><p>  如果想重新計(jì)數(shù),重置TH1/TL1就可以了</p><p><b>  查詢程序</b></p><p>  START: MOV R5,#0BH</p><p

90、>  MOV R4,#0BH</p><p>  MOV R3,#0BH</p><p>  ACALL DISPLAY ;未開始搶答時(shí)候顯示FFF</p><p>  JB P3.0,NEXT</p><p>  ACALL DELAY</p><p>  JB P

91、3.0,NEXT ;去抖動(dòng),如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢</p><p>  ACALL BARK ;按鍵發(fā)聲</p><p><b>  MOV A,R1</b></p><p>  MOV R6,A

92、 ;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間</p><p>  SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答</p><p>  MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p>  AJMP COUNT ;

93、進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在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>  

94、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>  

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

96、E2: 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>  FALS

97、E4: 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>  FALS

98、E6: 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>  FA

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

100、t;<b>  DIV A,B</b></p><p><b>  MOV R5,A</b></p><p><b>  MOV R4,B</b></p><p>  MOV R3,#0AH</p><p>  ACALL DISPLAY ;先在兩個(gè)時(shí)間LE

101、D上顯示R1</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><p>  AJMP

102、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 DELAY1</p><p>  AJ

103、MP INT0SUB</p><p>  ADD0: INC R1</p><p>  ACALL DELAY1</p><p>  AJMP INT0SUB</p><p>  DEC0: MOV A,R1</p><p>  JZ SETR1 ;如果R1為0, R1就置99,

104、</p><p><b>  DEC R1</b></p><p>  ACALL DELAY1</p><p>  AJMP INT0SUB</p><p>  SETR1: MOV R1,#63H</p><p>  ACALL DELAY1</p><p> 

105、 AJMP INT0SUB</p><p>  BACK0: RETI </p><p>  ;=====INT1(回答時(shí)間R2調(diào)整程序)=====</p><p>  INT1SUB:MOV A,R2</p><p>  MOV B,#0AH</p><p><b>  DIV AB</b>

106、;</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 P3.4,INC1</p>&

107、lt;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 R2,#00H</p>&

108、lt;p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  ADD1: INC R2</p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  DEC1: MOV A,R2</p><p

109、><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><p>  ACAL

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

111、#3CH</p><p>  MOV TL1,#0B0H;重置定時(shí)器</p><p>  RECOUNT:MOV A,R6;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6</p><p>  MOV B,#0AH</p><p>  DIV AB;除十分出個(gè)位/十位</p><p>  MOV 30H,A;十

112、位存于(30H)</p><p>  MOV 31H,B;個(gè)位存于(31H)</p><p>  MOV R5,30H;取十位</p><p>  MOV R4,31H;取個(gè)位</p><p><b>  MOV A,R6</b></p><p>  SUBB A,#07H</p>

113、<p>  JNC LARGER;大于5s跳到LARGER,小于等于5s會(huì)提醒</p><p><b>  MOV A,R0</b></p><p>  CJNE A,#0AH,FULL;1s中0.5s向下運(yùn)行</p><p><b>  CLR RING </b></p><p>  A

114、JMP CHECK</p><p>  FULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b>  SETB RING</b></p><p><b>  MOV A,R6</b></p><p>  JZ QUIT;計(jì)時(shí)完畢<

115、;/p><p>  MOV R0,#00H</p><p>  DEC R6;一秒標(biāo)志減1</p><p>  AJMP CHECK</p><p>  LARGER: MOV A,R0</p><p>  CJNE A,#14H,CHECK;如果1s向下運(yùn)行,否者跳到查"停/顯示"</p>

116、<p>  DEC R6;計(jì)時(shí)一秒R6自動(dòng)減1</p><p>  MOV R0,#00H</p><p>  CHECK: JNB P3.1,QUIT;如按下停止鍵退出</p><p>  ACALL DISPLAY</p><p>  JB OK,ACCOUT;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到

117、鎖搶答作用)</p><p>  AJMP RECOUNT</p><p>  ACCOUT:JNB P1.0,TRUE1</p><p>  JNB P1.1,TRUE2</p><p>  JNB P1.2,TRUE3</p><p>  JNB P1.3,TRUE4</p><p>  J

118、NB P1.4,TRUE5</p><p>  JNB P1.5,TRUE6</p><p>  JNB P1.6,TZ3</p><p>  JNB P1.7,TZ4</p><p>  AJMP RECOUNT</p><p>  TZ3:JMP TRUE7</p><p>  TZ4:JM

119、P TRUE8 </p><p>  QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序</p><p><b>  CLR RING</b></p><p>  AJMP START</p><p>  ;=====正常搶答處理程序=====</p><p>  

120、TRUE1: ACALL BARK;按鍵發(fā)聲</p><p><b>  MOV A,R2</b></p><p>  MOV R6,A;搶答時(shí)間R2送R6</p><p>  MOV R3,#01H</p><p>  CLR OK;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答</p><p> 

121、 AJMP COUNT</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

122、 OK</b></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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論