單片機(jī)電子搶答器課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課題概述</b></p><p><b>  課題設(shè)計(jì)要求</b></p><p>  本課題要求用單片機(jī)設(shè)計(jì)一個(gè)多功能搶答器,有三人進(jìn)行搶答和一個(gè)主持人進(jìn)行控制,并且具有搶答倒計(jì)時(shí)和答題倒計(jì)時(shí),倒計(jì)時(shí)均可修改時(shí)間。具體要求如下:</p><p>  主持人的操作面板上有復(fù)位鍵﹑開始鍵﹑設(shè)置搶

2、答時(shí)間鍵﹑設(shè)置答題時(shí)間鍵;另外,還有三個(gè)人搶答的三個(gè)按鍵及三人搶答狀態(tài)的信號(hào)燈,復(fù)位﹑開始的狀態(tài)燈,顯示器及蜂鳴器。本系統(tǒng)的設(shè)計(jì)包括硬件設(shè)計(jì)及程序設(shè)計(jì)。</p><p>  當(dāng)系統(tǒng)剛啟動(dòng)或者按下系統(tǒng)的總復(fù)位鍵時(shí),甲乙丙三人的6個(gè)狀態(tài)燈全亮,復(fù)位燈及開始燈全暗。此時(shí)系統(tǒng)只響應(yīng)支持人操作面板上的復(fù)位按鈕,當(dāng)復(fù)位按鈕被按下,復(fù)位指示燈亮,其余燈全暗。此時(shí)甲乙丙若有人搶答,則記為犯規(guī),對(duì)應(yīng)的犯規(guī)指示燈亮并由蜂鳴器報(bào)警,本

3、輪搶答不再響應(yīng)此人。支持人再按下開始按鈕允許搶答,開始指示燈亮,復(fù)位指示燈暗,搶答倒計(jì)時(shí)開始由顯示器顯示,系統(tǒng)響應(yīng)甲乙丙中不犯規(guī)的第一個(gè)按下按鈕的人,搶答成功后,對(duì)應(yīng)的成功指示燈亮,開始答題,并顯示答題倒計(jì)時(shí);若沒有人搶答,則倒計(jì)時(shí)結(jié)束后等待復(fù)位信號(hào)。</p><p>  1.2 課題設(shè)計(jì)的目的及意義</p><p>  在很多的知識(shí)競答的比賽中常常用到搶答器,為了準(zhǔn)確﹑公正﹑直觀地判斷第

4、一個(gè)搶答者,需用可靠的電子產(chǎn)品來進(jìn)行設(shè)計(jì),單片機(jī)就能勝任該任務(wù)。本次的設(shè)計(jì)讓我們能對(duì)單片機(jī)在現(xiàn)實(shí)生活中的密切關(guān)系有更深刻的認(rèn)識(shí),及感受到單片機(jī)的強(qiáng)大可擴(kuò)展性及可塑性。</p><p>  第2章 總體設(shè)計(jì)方案</p><p><b>  2.1 總體思路</b></p><p>  要設(shè)計(jì)一個(gè)比一般數(shù)字搶答器更加實(shí)用,更加先進(jìn)的搶答器才能滿足現(xiàn)

5、今的市場要求??梢圆捎脝纹瑱C(jī)的I/O進(jìn)行分配,分別進(jìn)行信號(hào)的采集和處理信號(hào)的輸出,利用單片的時(shí)鐘進(jìn)行倒計(jì)時(shí)的設(shè)計(jì)。將要實(shí)現(xiàn)的功能分成很多小部分,各個(gè)擊破。</p><p>  2. 2 搶答器課題概述和主要功能</p><p>  針對(duì)本次課題搶答器,只是單片機(jī)具體應(yīng)用的冰山一角。但通過本次課題的鍛煉依然能讓我們被單片機(jī)的靈活性深深震撼。本次設(shè)計(jì)的搶答器的主要功能如下:

6、 </p><p>  (1)搶答功能:可以精確無誤地分辨哪位選手首先按下按鈕。只要主持人按下開始鍵,即可開始搶答。</p><p> ?。?)報(bào)警功能:到主持人還未按下開始按鈕,選手就開始搶答,則該選手犯規(guī),蜂鳴器響。</p><p> ?。?)倒計(jì)時(shí)功能:在選手答題有時(shí)

7、間限制,在規(guī)定的時(shí)間里選手沒有回答完畢,則選手答題失敗。</p><p>  (4)修改倒計(jì)時(shí)功能:可以對(duì)倒計(jì)時(shí)進(jìn)行修改。</p><p> ?。?)最多可以有三個(gè)人進(jìn)行搶答。</p><p>  2.3 總體設(shè)計(jì)框圖</p><p>  2.3.1軟件總體設(shè)計(jì)框圖</p><p>  2.3.2 硬件總體設(shè)計(jì)框圖&l

8、t;/p><p>  2.4 系統(tǒng)工作原理</p><p>  2.4.1 硬件實(shí)現(xiàn)原理</p><p>  用P1口作為狀態(tài)顯示,即連接8個(gè)狀態(tài)燈。8個(gè)狀態(tài)燈分別為:開始指示燈﹑復(fù)位指示燈﹑甲搶答成功指示燈﹑甲搶答犯規(guī)指示燈﹑乙搶答成功指示燈﹑乙搶答犯規(guī)指示燈﹑丙搶答成功指示燈﹑丙搶答犯規(guī)指示燈。 用P3口與矩陣式按鈕相連做為控制信號(hào)的輸入。共有九個(gè)按鈕,分別為:復(fù)位

9、按鈕﹑開始按鈕﹑設(shè)置搶答時(shí)間按鈕﹑設(shè)置答題時(shí)間按鈕﹑設(shè)置時(shí)間加按鈕﹑設(shè)置時(shí)間減按鈕﹑甲搶答按鈕﹑乙搶答按鈕﹑丙搶答按鈕。P0口用來作為顯示器的現(xiàn)實(shí)代碼。用P2口的高四位輸出顯示器的選通信號(hào)。蜂鳴器接至P3.7,用P3.7的低電平驅(qū)動(dòng)蜂鳴器,使其發(fā)出警報(bào)。</p><p>  2.4.2 軟件實(shí)現(xiàn)原理</p><p>  該系統(tǒng)以單片機(jī)為中心,通過外部的信號(hào)的采集,經(jīng)過內(nèi)部CPU信號(hào)處理,再

10、送至控制端實(shí)現(xiàn)搶答器的搶答-響應(yīng)過程??蓪⒄麄€(gè)系統(tǒng)分為開始﹑復(fù)位功能模塊﹑鍵盤掃描模塊﹑搶答功能模塊﹑倒計(jì)時(shí)顯示模塊、搶答犯規(guī)報(bào)警模塊、設(shè)置倒計(jì)時(shí)模塊。</p><p>  當(dāng)系統(tǒng)啟動(dòng),首先進(jìn)行一些數(shù)據(jù)的初始化。然后進(jìn)入鍵盤掃描模塊,掃描到某個(gè)按鈕被按下,則轉(zhuǎn)移到對(duì)應(yīng)的子程序里去執(zhí)行相應(yīng)的命令。在沒有按鈕被按下的情況下,系統(tǒng)就一直在鍵盤掃描模塊循環(huán)。在未進(jìn)入開始模塊時(shí),有選手搶答,則進(jìn)入搶答犯規(guī)報(bào)警模塊,報(bào)警完畢

11、后接著掃描按鈕。掃面到開始按鈕被按下,則進(jìn)入開始模塊,搶答模塊。此后,甲乙丙有人先按下按鈕則搶答成功,進(jìn)入倒計(jì)時(shí)顯示模塊,同時(shí)對(duì)鍵盤進(jìn)行掃描。此間,設(shè)置按鈕被按下,則進(jìn)入設(shè)置功能模塊,一輪搶答結(jié)束,進(jìn)入下一輪的強(qiáng)大。若設(shè)置按鈕沒有被按下,則當(dāng)?shù)褂?jì)時(shí)顯示時(shí)間為零時(shí),進(jìn)入鍵盤掃描模塊,等待設(shè)置鍵被按下。</p><p>  第3章 系統(tǒng)硬件設(shè)計(jì)</p><p>  3.1 單片機(jī)的選擇<

12、/p><p>  根據(jù)初步的設(shè)計(jì)方案的分析,設(shè)置一個(gè)這樣簡單的應(yīng)用系統(tǒng),可以選擇帶有EPROM的單片機(jī),應(yīng)用程序直接儲(chǔ)存在片內(nèi),不用再外部擴(kuò)展程序存儲(chǔ)器,電路可以簡化。INTEL公司的8051和8751芯片均可選用。其他一些MCS-51系列相兼容的芯片,如ATMEL公司生產(chǎn)的AT89C××系列單片機(jī)。采用MCS-51系統(tǒng)的單片機(jī)相比有兩大優(yōu)勢:</p><p>  (1)

13、片內(nèi)程序儲(chǔ)存器采用閃速存儲(chǔ)器,使程序的寫入更加方便。</p><p> ?。?) 提供更小的芯片,使整個(gè)硬件電路體積更小。他的較小體積﹑良好的性能價(jià)格倍受青睞。</p><p>  本設(shè)計(jì)我們采用了MCS-51 8051單片機(jī),他具有程序加密功能且物美價(jià)廉,經(jīng)濟(jì)實(shí)用。</p><p>  3.2 單片機(jī)的端口分配</p><p>  3.3

14、時(shí)鐘電路和復(fù)位電路的設(shè)計(jì)</p><p>  MCS-51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成震蕩器的高增益發(fā)相放大器,管腳XTAL1和XTAL2分別是反相器的輸入端和輸出端。接一個(gè)晶振和兩個(gè)電容就構(gòu)成了單片機(jī)的時(shí)鐘電路。電路中的兩個(gè)電容具有微調(diào)頻率的作用,通常?。?0±10)pF。石英晶振可選6MHZ和12MHZ。</p><p>  單片機(jī)的RST管腳為主機(jī)提供了一個(gè)外部復(fù)位信號(hào)輸入端口

15、。復(fù)位信號(hào)高電平有效,高電平有效的持續(xù)時(shí)間為2個(gè)機(jī)器周期以上。</p><p>  3.4 LED顯示電路的設(shè)計(jì)</p><p>  顯示器已普遍用于直觀地顯示數(shù)字系統(tǒng)的運(yùn)行狀態(tài)和工作數(shù)據(jù)。顯示器件按顯示形式有:分段式﹑點(diǎn)陣式﹑光柱式顯示器。由于本課題只需顯示倒計(jì)時(shí),比較簡單,因此應(yīng)選用LED發(fā)光二極管4位七段數(shù)碼顯示器。</p><p>  顯示器顯示接口按驅(qū)動(dòng)方

16、式可分成靜態(tài)顯示和動(dòng)態(tài)顯示。其中靜態(tài)顯示的特點(diǎn)是顯示穩(wěn)定不閃爍,程序編寫簡單,但占用端口資源多;動(dòng)態(tài)顯示的特點(diǎn)是顯示穩(wěn)定性沒靜態(tài)好,程序編寫復(fù)雜,但是相對(duì)靜態(tài)顯示而言占用端口資源少。在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法。</p><p>  4位七段數(shù)碼管顯示電路如圖3-3所示。</p><p>  3.5 LED指示燈電路設(shè)計(jì)</p><p>  表(2)指

17、示燈作用分配表</p><p>  根據(jù)作用分配,使用了8個(gè)LED指示燈,在每個(gè)LED的前面加了一個(gè)電阻,形成電流保護(hù)。根據(jù)要求設(shè)計(jì)了指示燈電路圖:</p><p>  3.6 按鈕電路的設(shè)計(jì)</p><p>  系統(tǒng)共有9個(gè)按鍵,分別定義為:</p><p>  開始鍵(允許搶答開始鍵):為B11,功能是當(dāng)按下時(shí),允許搶答。</p&g

18、t;<p>  復(fù)位鍵(恢復(fù)系統(tǒng)狀態(tài)):為B12,功能是當(dāng)按下時(shí),系統(tǒng)恢復(fù)到初始狀態(tài),等待下一次開始。</p><p>  設(shè)置搶答倒計(jì)時(shí)鍵:為B13,功能是按下時(shí),搶答倒計(jì)時(shí)時(shí)間設(shè)置允許。</p><p>  設(shè)置答題倒計(jì)時(shí)鍵:為B21,功能是按下時(shí),答題倒計(jì)時(shí)時(shí)間設(shè)置允許。</p><p>  時(shí)間加一鍵:為B22,功能是短按下時(shí),時(shí)間加一秒;長按

19、下時(shí),時(shí)間連續(xù)加直到鍵釋放。</p><p>  時(shí)間減一鍵:為B23,功能是短按下時(shí),時(shí)間減一秒;長按下時(shí),時(shí)間連續(xù)減直到鍵釋放。</p><p>  甲搶答鍵:為B31,功能是當(dāng)按下時(shí)產(chǎn)生甲方的搶答信號(hào)。</p><p>  乙搶答鍵:為B32,功能是當(dāng)按下時(shí)產(chǎn)生乙方的搶答信號(hào)。</p><p>  丙搶答鍵:為B33,功能是當(dāng)按下時(shí)產(chǎn)生

20、丙方的搶答信號(hào)。</p><p>  3.7 蜂鳴器電路的設(shè)計(jì)</p><p>  當(dāng)選手搶答犯規(guī)時(shí),系統(tǒng)要求產(chǎn)生警報(bào)信號(hào),可以選擇一個(gè)蜂鳴器來實(shí)現(xiàn)這一功能。壓電式蜂鳴器(H)工作時(shí)需要10mA的驅(qū)動(dòng)電流,并設(shè)計(jì)一個(gè)相應(yīng)的驅(qū)動(dòng)及控制電路。蜂鳴器電路與單片機(jī)的接口:VT的基極到P3口的P3.7管腳,P3.7作為輸出口實(shí)用。</p><p>  具體的蜂鳴器電路的設(shè)計(jì)電

21、路如圖3-5:</p><p>  第4章 系統(tǒng)軟件設(shè)計(jì)</p><p>  4.1 系統(tǒng)軟件設(shè)計(jì)方案的確定</p><p>  可以把系統(tǒng)軟件按照其功能分為7個(gè)模塊,每個(gè)模塊間通過一定的聯(lián)系程序形成一個(gè)完整的系統(tǒng)程序。</p><p>  軟件任務(wù)分析時(shí),應(yīng)將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義(輸入輸出定義)。在各

22、執(zhí)行模塊進(jìn)行定義時(shí),將要牽扯到的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型問題也一并規(guī)劃好。</p><p>  使用模塊的設(shè)計(jì)方法可以時(shí)編程時(shí)思路更加清楚,閱讀程序時(shí)更加有條理,也更易于調(diào)試修改。</p><p>  4.2 軟件系統(tǒng)內(nèi)存空間分配</p><p>  表(3)內(nèi)存空間分配表</p><p>  4.3 系統(tǒng)應(yīng)用程序設(shè)計(jì)</p><

23、;p>  4.3.1 主程序的設(shè)計(jì)</p><p>  由于MCS-51單片機(jī)復(fù)位以后,(PC)=0000H,而0003H~002BH分別是個(gè)中斷源的入口地址。所以0000H處加上跳轉(zhuǎn)指令。系統(tǒng)一啟動(dòng)就,就顯示甲乙丙的指示燈全部都亮,這就是系統(tǒng)的初始狀態(tài)。</p><p>  初始命令執(zhí)行后,則查詢鍵盤B11(即復(fù)位鍵)是否被按下。當(dāng)復(fù)位鍵被按下復(fù)位燈亮,其他燈全暗。接下來查詢是否有

24、鍵再次按下,若有鍵被按下,先判斷是哪個(gè)鍵被按下。在還沒有按下開始鍵之前,甲乙丙任何一方搶答則犯規(guī),響應(yīng)的犯規(guī)燈的輸出信號(hào)置零。當(dāng)開始鍵被按下時(shí),搶答允許,輸出低電平給開始指示燈,并轉(zhuǎn)到鍵盤掃描模塊,在鍵盤掃描模塊里再調(diào)用顯示子程序。</p><p>  4.3.2 鍵盤掃描子程序的設(shè)計(jì)</p><p>  在單片機(jī)應(yīng)用系統(tǒng)中常常是鍵盤和顯示器同時(shí)存在,因此可以把鍵盤掃描程序和顯示程序配合起

25、來使用,既把顯示程序作為鍵盤掃描的延時(shí)子程序,實(shí)現(xiàn)軟件去抖動(dòng)。這樣做既省去了一個(gè)專門的延時(shí)子程序,又能保證顯示器常量的客觀效果。</p><p>  圖4-3 鍵盤掃描子程序流程圖</p><p>  4.3.3 字型碼的定義</p><p>  由于系統(tǒng)LED顯示器使用的是共陽極的現(xiàn)實(shí)器,而顯示器不能直接識(shí)別十進(jìn)制,所以要事先將與十進(jìn)制相對(duì)應(yīng)的字型碼建表保存。有了

26、十進(jìn)制對(duì)應(yīng)的字型碼,就能實(shí)現(xiàn)十進(jìn)制通過編譯然后再LED顯示器上顯示,準(zhǔn)確無誤。</p><p>  字形碼程序清單如下:</p><p>  DIRTAB: DB 0C0H,0F9H,0A4H,0B0H</p><p>  DB 99H,92H,82H,0F8H</p><p>  DB 80H,98H</p>

27、<p>  第5章 系統(tǒng)調(diào)試和運(yùn)行</p><p>  系統(tǒng)的調(diào)試和運(yùn)行,先將編好的程序經(jīng)過編譯生成目標(biāo)HEX文件,然后下載到單片機(jī)中進(jìn)行調(diào)試。</p><p>  系統(tǒng)啟動(dòng)后,甲乙丙六個(gè)狀態(tài)燈全亮。復(fù)位﹑開始指示燈不亮。如圖5-1</p><p>  圖5-1 系統(tǒng)啟動(dòng)調(diào)試圖</p><p>  按下復(fù)位按鈕,甲乙丙六個(gè)狀態(tài)全

28、暗,復(fù)位燈亮。如圖5-2:</p><p>  圖5-2 按下復(fù)位按鈕的效果</p><p>  按下甲乙丙三個(gè)按鈕中的一個(gè),相應(yīng)選手的犯規(guī)指示燈亮,并且系統(tǒng)蜂鳴器報(bào)警。如圖5-3:</p><p>  圖5-3 甲犯規(guī)調(diào)試圖</p><p>  按下開始鍵,開始按鈕亮,搶答倒計(jì)時(shí)開始計(jì)時(shí)。如圖5-4</p><p>

29、  圖5-4 開始搶答調(diào)試圖</p><p>  倒計(jì)時(shí)未到零之前,按下甲乙丙中沒有犯規(guī)的一個(gè),響應(yīng)的搶答成功指示燈亮,答題倒計(jì)時(shí)開始計(jì)時(shí)。如圖5-5:</p><p>  圖5-5 甲搶答成功調(diào)試圖</p><p>  復(fù)位后,按下設(shè)置倒計(jì)時(shí)時(shí)間鍵,LED顯示倒計(jì)時(shí)總時(shí)間并閃爍,短按加一鍵,時(shí)間加一顯示,長按加一鍵,時(shí)間連續(xù)加一顯示;短按減一鍵,時(shí)間減一顯示,長按

30、減一鍵,時(shí)間連續(xù)減一顯示。再按下設(shè)置倒計(jì)時(shí)時(shí)間鍵,返回。如圖5-6:</p><p>  圖5-6 設(shè)置倒計(jì)時(shí)時(shí)間調(diào)試圖</p><p>  任何時(shí)候,按下復(fù)位鍵,LED顯示“8888”,只有復(fù)位指示燈亮其他全暗。如圖5-7:</p><p>  圖5-7 設(shè)置按下整體效果圖</p><p>  經(jīng)過認(rèn)真調(diào)試與修改,所要求達(dá)到的功能已經(jīng)全部實(shí)

31、現(xiàn)。</p><p><b>  第6章 總結(jié)</b></p><p>  課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重

32、要的。</p><p>  回顧起此次單片機(jī)課程設(shè)計(jì),我仍感慨頗多,的確,從選題到定稿,從理論到實(shí)踐,在接近三星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高

33、自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對(duì)單片機(jī)匯編語言掌握得不好……通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。</p><p>  這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問題,最后在

34、王迎旭老師的辛勤指導(dǎo)下,終于游逆而解。同時(shí),在王迎旭老師那里我學(xué)得到很多實(shí)用的知識(shí),在次我表示感謝!同時(shí),對(duì)給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]王迎旭. 單片機(jī)原理及及應(yīng)用 .機(jī)械工業(yè)出版社.2004年</p><p>  [2]張毅剛. 新編MC

35、S-51單片機(jī)應(yīng)用設(shè)計(jì) 哈爾濱工業(yè)大學(xué)出版社.2003年</p><p><b>  附錄A 系統(tǒng)原理圖</b></p><p><b>  附錄A 程序清單</b></p><p><b>  ORG 0000H</b></p><p><b>  LJMP MA

36、IN</b></p><p><b>  ORG 0030H</b></p><p>  MAIN: MOV A,#00000011B </p><p>  MOV P1,A ;系統(tǒng)啟動(dòng)后,甲乙丙狀態(tài)燈全亮</p><p>  MOV R4,#10 ;設(shè)答題倒計(jì)時(shí)初值</

37、p><p>  MOV R1,#10 ;設(shè)搶答倒計(jì)時(shí)初值</p><p>  SETB P3.7 </p><p>  XA: MOV A,0FFH</p><p>  MOV P2,A ;關(guān)閉顯示器顯示</p><p>  LOOP1: MOV A,#

38、11111110B</p><p><b>  MOV P3,A</b></p><p>  JB P3.4,$ ;查詢復(fù)位鍵</p><p>  LCALL DELAY;延時(shí)去抖動(dòng)</p><p>  JB P3.4,LOOP1</p><p>  LOOP11: MOV A,#1111

39、1101B</p><p>  MOV P1,A;復(fù)位指示燈亮其余全暗</p><p>  MOV A,#00H</p><p><b>  MOV P2,A</b></p><p>  MOV A,#80H</p><p>  MOV P0,A;LED顯示“8888”,表示復(fù)位成功</p&

40、gt;<p>  CLR 00H;允許搶答標(biāo)志位清零</p><p>  CLR 01H;甲搶答是犯規(guī)標(biāo)志位清零</p><p>  CLR 02H;乙搶答是犯規(guī)標(biāo)志位清零</p><p>  CLR 03H;丙搶答是犯規(guī)標(biāo)志位清零</p><p>  KEY0: ACALL KS1;鍵盤掃描</p>

41、<p><b>  JNZ LK0</b></p><p><b>  SJMP KEY0</b></p><p>  LK0: LCALL DELAY;鍵盤去抖動(dòng)</p><p><b>  ACALL KS1</b></p><p>  JNZ

42、 LOOP2</p><p><b>  AJMP KEY0</b></p><p>  LOOP2: MOV A,#11111110B;判斷是否是開始鍵被按下</p><p><b>  NOP</b></p><p><b>  MOV P3,A</b><

43、;/p><p><b>  NOP</b></p><p>  JB P3.5,LOOP3</p><p>  JMP NEXT1;開始鍵被按下,跳轉(zhuǎn)到相應(yīng)程序段</p><p>  LOOP3: MOV A,#11111110B;判斷是否是設(shè)置搶答時(shí)間鍵被按下</p><p><b

44、>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.6,LOOP4</p><p>  LCALL SET1;設(shè)置時(shí)間鍵被按下,調(diào)用設(shè)置時(shí)間子程序</p><p><b>  JMP KEY0</b></p>&

45、lt;p>  LOOP4: MOV A,#11111101B;判斷是否是設(shè)置答題時(shí)間鍵被按下</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.4,LOOP5</p><p>  LCALL SET2&

46、lt;/p><p><b>  JMP KEY0</b></p><p>  LOOP5: JB 01H,LOOP6;判斷甲是否按下?lián)尨疰I</p><p>  MOV A,#11111011B</p><p><b>  MOV P3,A</b></p><p>&

47、lt;b>  NOP</b></p><p>  JB P3.4,LOOP6</p><p><b>  JMP NEXT2</b></p><p>  LOOP6: JB 02H,LOOP7;判斷乙是否按下?lián)尨疰I</p><p>  MOV A,#11111011B</p>

48、<p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.5,LOOP7</p><p><b>  JMP NEXT3</b></p><p>  LOOP7: JB 03H,LOOP8;判

49、斷丙是否按下?lián)尨疰I</p><p>  MOV A,#11111011B</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.6,LOOP8</p><p><b>  JMP NEXT4

50、</b></p><p>  LOOP8: MOV A,#1111110B;判斷是否設(shè)置鍵被按下</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.4,KEY0</p><p&

51、gt;  JMP LOOP11</p><p>  NEXT1: SETB 00H;搶答允許</p><p><b>  SETB P1.1</b></p><p><b>  CLR P1.0</b></p><p>  LCALL COUNT1</p><p&g

52、t;  MOV 21H,#10</p><p>  LCALL SCREEN;調(diào)用搶答倒計(jì)時(shí)顯示子程序,10ms返回</p><p> ??;= = = =掃描鍵盤并且顯示倒計(jì)時(shí)程序= = = = </p><p>  KEY1: MOV A,R2;</p><p><b>  ADD A,R3</b><

53、;/p><p>  JZ JIEXA;判斷倒計(jì)時(shí)是否結(jié)束</p><p><b>  ACALL KS1</b></p><p><b>  JNZ LK1</b></p><p><b>  MOV A,R2</b></p><p><b> 

54、 ADD A,R3</b></p><p>  JZ JIELI1</p><p>  MOV 21H,#10</p><p>  LCALL JADGE</p><p><b>  AJMP KEY1</b></p><p>  JIELI1: JMP LOOP1&l

55、t;/p><p>  JIEXA: JMP XA</p><p>  ;= = = =去抖動(dòng)程序= = = =</p><p>  LK1: MOV A,R2</p><p><b>  ADD A,R3</b></p><p>  JZ JIELI1</p&g

56、t;<p>  MOV 21H,#20</p><p>  LCALL JADGE</p><p><b>  LCALL KS1</b></p><p><b>  JNZ LK2</b></p><p><b>  MOV A,R2</b></p>

57、<p><b>  ADD A,R3</b></p><p>  JZ JIELI1</p><p>  MOV 21H,#10</p><p>  LCALL JADGE</p><p><b>  JMP KEY1</b></p><p>  LK2:

58、 MOV A,#11111110B;判斷是否設(shè)置鍵被按下</p><p><b>  MOV P3,A </b></p><p><b>  NOP</b></p><p>  JB P3.4,LK3</p><p><b>  JMP YAN1</b></

59、p><p>  LK3: MOV A,#11111011B;判斷甲是否按下?lián)尨疰I</p><p><b>  MOV P3,A </b></p><p><b>  NOP</b></p><p>  JB P3.4,LK4</p><p>  JB 01H,L

60、K4</p><p><b>  JMP YAN2</b></p><p>  LK4: MOV A,#11111011B;判斷乙是否按下?lián)尨疰I</p><p><b>  MOV P3,A </b></p><p><b>  NOP</b></p&g

61、t;<p>  JB P3.5,LK5</p><p>  JB 02H,LK5</p><p><b>  JMP YAN3</b></p><p>  LK5: MOV A,#11111011B;判斷丙是否按下?lián)尨疰I</p><p><b>  MOV P3,A </b

62、></p><p><b>  NOP</b></p><p>  JB P3.6,KEY1</p><p>  JB 03H,KEY1</p><p><b>  JMP YAN4</b></p><p>  ;= = = =設(shè)置鍵被按下處理程序= = = =<

63、/p><p>  YAN1: MOV A,0FFH</p><p><b>  MOV P2,A</b></p><p>  MOV A,#11111110B</p><p><b>  MOV P3,A</b></p><p><b>  NOP<

64、/b></p><p>  JNB P3.4 ,$</p><p>  JMP LOOP11</p><p> ?。? = = =甲搶答成功處理程序= = = =</p><p>  YAN2: MOV A,R2</p><p><b>  ADD A,R3</b></p

65、><p><b>  JZ JIELI1</b></p><p>  MOV A,#11111011B</p><p><b>  MOV P3,A</b></p><p>  MOV 21H,#10</p><p>  LCALL JADGE</p><p&

66、gt;  JNB P3.4,YAN2</p><p><b>  CLR P1.2</b></p><p>  LCALL COUNT2</p><p>  MOV 21H,#10</p><p>  LCALL SCREEN</p><p><b>  JMP RES</b>

67、;</p><p> ??;= = = =乙搶答成功處理程序= = = =</p><p>  YAN3: MOV A,R2</p><p><b>  ADD A,R3</b></p><p><b>  JZ JIELI1</b></p><p>  MOV

68、A,#11111011B</p><p><b>  MOV P3,A</b></p><p>  MOV 21H,#10</p><p>  LCALL JADGE</p><p>  JNB P3.5,YAN3</p><p><b>  CLR P1.4</b><

69、/p><p>  LCALL COUNT2</p><p>  MOV 21H,#10</p><p>  LCALL SCREEN</p><p><b>  JMP RES</b></p><p> ??;= = = =甲搶答成功處理程序= = = =</p><p>  Y

70、AN4: MOV A,R2</p><p><b>  ADD A,R3</b></p><p><b>  JZ JIELI2</b></p><p>  MOV A,#11111011B</p><p><b>  MOV P3,A</b></p>

71、<p>  MOV 21H,#10</p><p>  LCALL JADGE</p><p>  JNB P3.4,YAN4</p><p><b>  CLR P1.6</b></p><p>  LCALL COUNT2</p><p>  MOV 21H,#10</p&

72、gt;<p>  LCALL SCREEN</p><p><b>  JMP RES</b></p><p>  RES: MOV A,R2</p><p><b>  ADD A,R3</b></p><p>  JZ JIELI2</p><

73、;p>  MOV 21H,#10</p><p>  LCALL JADGE</p><p>  MOV A,#11111110B</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.4,RE

74、S</p><p><b>  MOV A,R2</b></p><p><b>  ADD A,R3</b></p><p>  JZ JIELI2</p><p>  MOV 21H,#20</p><p>  LCALL JADGE</p><p&

75、gt;  JB P3.4,RES</p><p><b>  JMP YAN1</b></p><p>  JIELI2: JMP XA</p><p>  ;= = = =甲搶答犯規(guī)處理程序= = = =</p><p>  NEXT2: SETB 01H</p><p&

76、gt;<b>  CLR P1.3</b></p><p>  LCALL ALARM</p><p><b>  JMP KEY0</b></p><p> ??;= = = =乙搶答犯規(guī)處理程序= = = =</p><p>  NEXT3: SETB 02H</p>&

77、lt;p><b>  CLR P1.5</b></p><p>  LCALL ALARM</p><p><b>  JMP KEY0</b></p><p>  ;= = = =甲搶答犯規(guī)處理程序= = = =</p><p>  NEXT4: SETB 03H</p&g

78、t;<p><b>  CLR P1.7</b></p><p>  LCALL ALARM</p><p><b>  JMP KEY0</b></p><p>  ;= = = =延時(shí)20ms子程序= = = =</p><p>  DELAY: MOV TMOD,#0

79、1H</p><p>  MOV TH0,#0B8H</p><p>  MOV TL0,#00H</p><p><b>  SETB TR0</b></p><p>  DELP: JBC TF0,DESTOP</p><p><b>  SJMP DELP</

80、b></p><p>  DESTOP: CLR TR0</p><p><b>  RET</b></p><p> ??;= = = =報(bào)警響鈴子程序= = = =</p><p>  ALARM: MOV 21H,#1</p><p><b>  SETB

81、 P3.7</b></p><p>  ALSTE: CLR P3.7</p><p>  LCALL DL300ms</p><p><b>  SETB P3.7</b></p><p>  LCALL DL300ms</p><p>  DJNZ 21H,ALSTE

82、</p><p><b>  RET</b></p><p> ?。? = = =延時(shí)300ms子程序= = = =</p><p>  DL300ms: MOV 22H,#10</p><p>  DL1: DJNZ 22H,DL2</p><p><b>

83、;  SJMP DL3</b></p><p>  DL2: LCALL DELAY</p><p><b>  JMP DL1</b></p><p>  DL3: RET</p><p> ?。? = = =搶答倒計(jì)時(shí)十進(jìn)制轉(zhuǎn)化以及初始化子程序= = = =<

84、/p><p>  COUNT1: MOV R5,#0</p><p>  MOV R0,#100</p><p>  MOV 25H,#10</p><p><b>  MOV A,R1</b></p><p><b>  SETB F0</b></p>

85、<p>  SETB 04H;搶答狀態(tài)標(biāo)志置1</p><p><b>  SJMP A2</b></p><p> ?。? = = =答題倒計(jì)時(shí)十進(jìn)制轉(zhuǎn)化以及初始化子程序= = = =</p><p>  COUNT2: MOV R5,#0</p><p>  MOV R0,#100</p&

86、gt;<p>  MOV 25H,#10</p><p><b>  MOV A,R4</b></p><p><b>  SETB F0</b></p><p><b>  CLR 04H</b></p><p><b>  SJMP A2</

87、b></p><p>  A2: CLR CY</p><p><b>  PUSH ACC</b></p><p>  SUBB A,#10</p><p><b>  INC R5</b></p><p><b>  JC A1<

88、;/b></p><p><b>  POP B</b></p><p><b>  SJMP A2</b></p><p>  A1: POP ACC</p><p><b>  MOV R2,A</b></p><p>&

89、lt;b>  MOV A,R5</b></p><p><b>  DEC A</b></p><p><b>  MOV R3,A</b></p><p><b>  RET</b></p><p> ??;= = = =搶答倒計(jì)時(shí)LED顯示子程序= = =

90、=</p><p>  SCREEN: MOV TMOD,#01H</p><p>  MOV TH0,#0FCH</p><p>  MOV TL0,#66H</p><p><b>  SETB TR0</b></p><p>  W1: MOV DPTR,#D

91、IRTAB</p><p><b>  MOV A,R2</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  SETB P2.6</b></p><p><b&

92、gt;  SETB P2.5</b></p><p><b>  SETB P2.4</b></p><p><b>  CLR P2.7</b></p><p>  LP: JBC TF0,NEXT</p><p><b>  SJMP LP</

93、b></p><p>  NEXT: MOV TH0,#0FCH</p><p>  MOV TL0,#66H</p><p><b>  CPL F0</b></p><p>  DJNZ R0,CHA</p><p>  JMP CHANGEY</p>&l

94、t;p>  CHANGEY: MOV R0,#100</p><p>  DJNZ 25H,CHA</p><p>  JMP CHANGE</p><p>  CHA: DJNZ 21H,JADGE</p><p><b>  JMP STOP2</b></p><

95、;p>  W2: MOV DPTR,#DIRTAB</p><p><b>  MOV A,R3</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p><b>  SETB P2.5&

96、lt;/b></p><p><b>  SETB P2.4</b></p><p><b>  SETB P2.7</b></p><p><b>  CLR P2.6</b></p><p><b>  JMP LP</b></p>

97、<p>  JADGE: JNB F0,W2</p><p><b>  JMP W1</b></p><p>  CHANGE: MOV 25H,#10</p><p>  CJNE R2,#00H,L1</p><p>  CJNE R3,#00H,L2</p>

98、<p><b>  JMP STOP1</b></p><p>  L1: DEC R2</p><p><b>  JMP JADGE</b></p><p>  L2: MOV R2,#09H</p><p><b> 

99、 DEC R3</b></p><p><b>  JMP JADGE</b></p><p>  STOP1: MOV A,#11111111B</p><p><b>  MOV P2,A</b></p><p>  STOP2: RET<

100、/p><p> ??;= = = =共陽性LED字形碼表= = = =</p><p>  DIRTAB: DB 0C0H,0F9H,0A4H,0B0H</p><p>  DB 99H,92H,82H,0F8H</p><p>  DB 80H,98H</p><p>  ;= = = =設(shè)置搶答

101、倒計(jì)時(shí)子程序= = = =</p><p>  SET1: LCALL COUNT1</p><p>  LCALL SETOR</p><p><b>  RET</b></p><p>  ;= = = =設(shè)置答題倒計(jì)時(shí)子程序= = = =</p><p>  SET2

102、: LCALL COUNT2</p><p>  LCALL SETOR</p><p><b>  RET</b></p><p>  ;= = = =鍵盤查詢子程序= = = =</p><p>  KS1: SETB P3.7</p><p>

103、;<b>  CLR P3.0</b></p><p><b>  CLR P3.1</b></p><p><b>  CLR P3.2</b></p><p><b>  NOP</b></p><p><b>  NOP</b>

104、</p><p>  JNB P3.4,KP</p><p>  JNB P3.5,KP</p><p>  JNB P3.6,KP</p><p><b>  MOV A,#0</b></p><p><b>  SJMP KO</b></p><p&g

105、t;  KP: MOV A,#01H</p><p>  KO: RET</p><p> ??;= = = =設(shè)置時(shí)間并顯示子程序= = = =</p><p>  SETOR: MOV 21H,#10</p><p>  LCALL SCREEN2;調(diào)用顯示設(shè)置的時(shí)

106、間子程序</p><p>  MOV R6,#30</p><p>  KEY11: LCALL KS1</p><p><b>  JZ LK11</b></p><p>  JB 05H,P10</p><p><b>  JMP P20</b><

107、;/p><p>  P10: MOV 21H,#7</p><p>  LCALL NEXTQ</p><p><b>  JMP KEY11</b></p><p>  P20: MOV 21H,#3</p><p>  LCALL NEXTR&l

108、t;/p><p><b>  JMP KEY11</b></p><p>  LK11: JB 05H,P30</p><p><b>  JMP P40</b></p><p>  P30: MOV 21H,#20</p><p&g

109、t;  LCALL NEXTQ</p><p><b>  JMP LK12</b></p><p>  P40: MOV 21H,#20</p><p>  LCALL NEXTR</p><p>  LK12: LCALL KS1</p><p&g

110、t;<b>  JNZ LK21</b></p><p>  JB 05H,P10</p><p><b>  JMP P20</b></p><p>  LK21: MOV A,#11111110B</p><p><b>  MOV P3,A</b>

111、</p><p><b>  NOP</b></p><p>  JB P3.4,LK31</p><p><b>  JMP YAN11</b></p><p>  LK31: JNB 04H,LK41</p><p>  MOV A,#111111

112、10B</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.6,LK41</p><p><b>  JMP SE1</b></p><p>  LK41:

113、 JB 04H,LK51</p><p>  MOV A,#11111101B</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.4,LK51</p><p><b>  JM

114、P SE2</b></p><p>  LK51: MOV A, #11111101B</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.5,LK61</p><

115、;p><b>  JMP INSE</b></p><p>  LK61: MOV A,#11111101B</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JB P3.6,

116、KEY11</p><p><b>  JMP DESE</b></p><p>  YAN11: MOV A,0FFH </p><p><b>  MOV P2,A</b></p><p>  MOV A,#11111110B</p><p>

117、;<b>  MOV P3,A</b></p><p><b>  NOP </b></p><p>  JNB P3.4, $</p><p>  JMP LOOP11</p><p>  SE1: MOV R0,#100</p><p> 

118、 MOV 25H,#100</p><p>  MOV 21H,#100</p><p>  LCALL NEXTQ</p><p>  MOV A,#00H</p><p><b>  MOV P2,A</b></p><p>  MOV A,#80H</p><p>&

119、lt;b>  MOV P0,A</b></p><p>  MOV A,#11111110B</p><p><b>  MOV P3,A</b></p><p><b>  NOP</b></p><p>  JNB P3.6,$</p><p>  JM

120、P SETSTOP</p><p>  SE2: MOV R0,#100</p><p>  MOV 25H,#100</p><p>  MOV 21H,#100</p><p>  LCALL NEXTQ</p><p>  MOV A,#00H</p><p&g

121、t;<b>  MOV P2,A</b></p><p>  MOV A,#80H</p><p><b>  MOV P0,A</b></p><p>  MOV A,#11111101B</p><p><b>  MOV P3,A</b></p><p

122、><b>  NOP</b></p><p>  JNB P3.4,$</p><p>  JMP SETSTOP</p><p>  INSE: JNB 04H,INSE1</p><p>  PQ: JB 05H,P5</p><

123、;p><b>  JMP P6</b></p><p>  P5: MOV 21H,#10</p><p>  LCALL NEXTQ</p><p><b>  JMP P56</b></p><p>  P6: MOV 2

124、1H,#10</p><p>  LCALL NEXTR</p><p>  P56: LCALL KS1</p><p>  DJNZ R6,PS51</p><p><b>  JMP P51</b></p><p>  PS51:

125、 JNZ PQ</p><p><b>  MOV A,#99</b></p><p><b>  CLR CY</b></p><p><b>  SUBB A,R1</b></p><p><b>  JZ JIELI3</b></p>

126、<p>  P61: INC R1</p><p>  LCALL COUNT1</p><p>  JMP JIELI3</p><p>  P51: JB 05H,P7</p><p><b>  JMP P8</b></p>&

127、lt;p>  P7: MOV 21H,#80</p><p>  LCALL NEXTQ</p><p><b>  JMP Z1</b></p><p>  P8: MOV 21H,#80</p><p>  LCALL NEXTR</p&

128、gt;<p><b>  JMP Z1</b></p><p>  JIELI3: JMP SETOR</p><p>  Z1: MOV A,#99</p><p><b>  CLR CY</b></p><p>&l

129、t;b>  SUBB A,R1</b></p><p><b>  JZ JIELI3</b></p><p><b>  LCALL KS1</b></p><p><b>  JZ P61</b></p><p><b>  INC R1<

130、;/b></p><p>  LCALL COUNT1</p><p><b>  JMP P51</b></p><p>  INSE1: MOV 21H,#10</p><p>  PQ1: JB 05H,P50</p><p&

131、gt;<b>  JMP P60</b></p><p>  P50: MOV 21H,#10</p><p>  LCALL NEXTQ</p><p><b>  JMP P560</b></p><p>  P60: MO

132、V 21H,#10</p><p>  LCALL NEXTR</p><p>  P560: LCALL KS1</p><p>  DJNZ R6,PS51O</p><p><b>  JMP P510</b></p><p>  PS51O:

133、 JNZ PQ1</p><p><b>  MOV A,#99</b></p><p><b>  CLR CY</b></p><p><b>  SUBB A,R4</b></p><p><b>  JZ JIELI3</b>&l

134、t;/p><p>  P610: INC R4</p><p>  LCALL COUNT2</p><p><b>  JMP SETOR</b></p><p>  P510: JB 05H,P70</p><p>  P80:

135、 MOV 21H,#80</p><p>  LCALL NEXTR</p><p><b>  JMP Z2</b></p><p>  P70: MOV 21H,#80</p><p>  LCALL NEXTQ</p><p&

136、gt;<b>  JMP Z2</b></p><p>  Z2: MOV A,#99</p><p><b>  CLR CY</b></p><p><b>  SUBB A,R4</b></p><p><b>  JZ J

137、IELI3</b></p><p><b>  LCALL KS1</b></p><p><b>  JZ P610</b></p><p><b>  INC R4</b></p><p>  LCALL COUNT2</p><p>&

溫馨提示

  • 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)論