基于單片機的八路數(shù)字搶答器的設(shè)計_第1頁
基于單片機的八路數(shù)字搶答器的設(shè)計_第2頁
基于單片機的八路數(shù)字搶答器的設(shè)計_第3頁
基于單片機的八路數(shù)字搶答器的設(shè)計_第4頁
基于單片機的八路數(shù)字搶答器的設(shè)計_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、*級學(xué)生單片機課程設(shè)計 單片機課程設(shè)計報告書課題名稱基于單片機的八路數(shù)字搶答器的設(shè)計姓 名*學(xué) 號*院 系*專 業(yè)*指導(dǎo)教師*年 *月*日一、設(shè)計任務(wù)及要求: 1搶答器同時供8名選手或8個代表隊比賽。 2設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。3搶答器具有鎖存與顯示功能。4搶答器具有定時搶答功能。 5參賽選手在設(shè)定的時間內(nèi)進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。6如果定時時間到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,顯示器上顯示00 。指導(dǎo)教師簽名: 年 月 日 二、指導(dǎo)教師評語:指導(dǎo)教師簽名: 年 月 日 三、

2、成績 驗收蓋章 年 月 日 基于單片機的八路數(shù)字搶答器的設(shè)計*一 目的1學(xué)習(xí)掌握單片機的簡單應(yīng)用。2掌握匯編語言的編程方法。3學(xué)習(xí)掌握Proteus、Keil軟件,能夠比較熟練的應(yīng)用。4設(shè)計一個八路搶答器。二 設(shè)計任務(wù)與要求1搶答器同時供8名選手或8個代表隊比賽,分別用8個按鈕1、2、3、4、5、6、7、8表示。2設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。3搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,并在LED數(shù)碼管上顯示,同時揚聲器發(fā)出報警聲響提示。選手搶答實行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。4搶答器具有定時搶答功能,且一次搶答的時間由主

3、持人設(shè)定(如30秒)。當(dāng)主持人啟動"開始"鍵后,定時器進行減計時,同時揚聲器發(fā)出短暫的聲響,聲響持續(xù)的時間0.5秒左右。5參賽選手在設(shè)定的時間內(nèi)進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。6如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00。 7熟悉Proteus、Keil_C51軟件的應(yīng)用方法。三 整體設(shè)計方案用51系列單片機AT80C51作為控制核心,該系統(tǒng)可以完成運算控制、信號識別以及顯示功能的實現(xiàn)。并且單片機周圍的輔助電路也比較少,便于控制和實現(xiàn)。整個系統(tǒng)具有極其靈活的可編程性

4、,能方便地對系統(tǒng)進行功能的擴張和更改。單片機具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外80C51單片機采用12MHz的晶振,提高了信號的測量精度,并且使該系統(tǒng)可以通過軟件改進來擴張功能。MCS-51單片機特點如下: 1可靠性好:單片機按照工業(yè)控制要求設(shè)計,抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫在ROM里,許多信號通道都在同一芯片,因此可靠性高,易擴充。2單片機有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴充為各種規(guī)模的微電腦系統(tǒng)。 3控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。搶答器在搶答過程中,為了

5、知道哪一組或哪一位選手先答題,必須要設(shè)計一個系統(tǒng)來完成這個任務(wù)。為了完成這個任務(wù)設(shè)計時系統(tǒng)能顯示搶答組號、搶答計時結(jié)束時發(fā)出警報、搶答倒計時三個要求,必須由硬件部分和軟件部分構(gòu)成,硬件和軟件分開設(shè)計。系統(tǒng)的總框圖如下:數(shù)碼管及上拉電阻AT80C51復(fù)位電路搶答器計時時間調(diào)整及語音報警獨立式按鍵鍵盤圖3.1 系統(tǒng)框架圖四 硬件電路設(shè)計1搶答器的電路原理圖如圖二所示為電路原理圖。其工作原理為:接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號顯示器滅燈,定時器顯示設(shè)定時間;主持人將開關(guān)置,“開始”狀態(tài),宣布“開始”搶答器工作。定時器倒計時,揚聲器給出聲響提示。選手在定時時間內(nèi)搶答時

6、,搶答器完成:優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當(dāng)一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次操作"開始、停止"狀態(tài)開關(guān)。圖4.1 搶答器的電路原理圖單片機AT80C51的引腳圖如下所示:圖4.2 80C51的管腳圖AT80C51,其外部接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕及揚聲器。元件為:晶體振蕩管X1,電容C1、C2、C3,電阻RP1,P3.0和P3.1有裁判控制分別是搶答停止和開始鍵;是8組搶答的輸入口;口為數(shù)碼管的段選口;位選口用的是口輸出,外部中斷0、1和P3.3,P3/4為搶答記時調(diào)整口,實現(xiàn)進行計時,并且加減

7、調(diào)整,外部中斷0,1實現(xiàn)了答題時間調(diào)整。P3.4、P3.5分別實現(xiàn)了時間的加一和減一;P3.6為蜂鳴器控制口。搶答器用單片機來設(shè)計制作完成,由于其功能的實現(xiàn)主要通過軟件編程來完成,采用單片機AT80C51,它是低功耗、高性能的CMOS型8位單片機。片內(nèi)帶有4KB的Flash存儲器,并允許在系統(tǒng)內(nèi)改寫或用編程器編程。這樣就會使搶答器的準(zhǔn)確度很高,其誤差主要由晶振自身的誤差所造成。AT80C51單片機由微處理器,存儲器,I/O口以及特殊功能寄存器SFR等部分構(gòu)成。其存儲器在物理上設(shè)計成程序存儲器和數(shù)據(jù)存儲器兩個獨立的空間,片內(nèi)程序存儲器的容量為4KB,片內(nèi)數(shù)據(jù)存儲器為128個字節(jié)。80C51單片機

8、有4個8位的并行I/O口:P0口,P1口,P2口和P3口。各個接口均由接口鎖存器,輸出驅(qū)動器和輸入緩沖器組成。P1口是唯一的但功能口,僅能用作通用的數(shù)據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還具有不同的第二功能,如P3.0是串行輸入口線,P3.1口是串行輸出口線。在需要外部程序存儲存儲器和數(shù)據(jù)存儲器擴展時,P0可作為分時復(fù)用的低8位地址/數(shù)據(jù)總線,P2口可作為高8位的地址總線。P3口也可作為AT09C51的一些特殊功能口,同時為閃爍編程和編程校驗接收一些控制信號。2單元電路設(shè)計(1)搶答電路圖4.3 搶答電路參考電路如圖4.3所示。該電路完成兩個功能:一是分辨出選

9、手按鍵的先后,并鎖存優(yōu)先搶答者的編號,同時譯碼顯示電路顯示編號;二是禁止其他選手按鍵操作無效。如有再次搶答需由主持人將S開關(guān)重新置,“清除”然后再進行下一次搶答。(2)時序控制電路設(shè)計時序控制電路是搶答器設(shè)計的關(guān)鍵,它要完成以下功能:a主持人將控制開關(guān)撥到"開始"位置時,揚聲器發(fā)聲,搶答電路和定時電路進人正常搶答工作狀態(tài)。 b當(dāng)參賽選手按動搶答鍵時,揚聲器發(fā)聲,搶答電路和定時電路停止工作。(3)復(fù)位電路的設(shè)計外部中斷和內(nèi)部中斷并存,單片機硬件復(fù)位端,只要持續(xù)4個機器周期的高電平即可實現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲器的值都恢復(fù)到了初始值,因為本設(shè)計中功能中有倒計

10、時時間的記憶功能,所以不能對單片機進行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位實際上就是當(dāng)程序執(zhí)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完成復(fù)位。復(fù)位電路如下圖示。圖4.4 復(fù)位電路(4)外部震蕩電路外部震蕩電路單片機必須在AT89C51的驅(qū)動下才能工作,在單片機內(nèi)部有一個時鐘震蕩電路,只需要外接一個振蕩器就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,外部震蕩電路如下圖所示。圖4.5 外部振蕩電路(5)報警電路設(shè)計報警電路用于報警,當(dāng)遇到報警信號時,發(fā)出警報。一般喇叭是一種電感性。80C51驅(qū)動喇叭的信號為各種頻率的脈沖。選手在設(shè)定的時間內(nèi)搶答時,實現(xiàn):優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當(dāng)一輪

11、搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次操作“清除”和“開始”狀態(tài)開關(guān)。圖4.6是數(shù)字搶答器的報警電路圖。圖4.6 報警電路圖五 軟件系統(tǒng)設(shè)計1系統(tǒng)總體軟件設(shè)計八路數(shù)字搶答器要求有記憶功能,一次時間設(shè)置完,復(fù)位后不需重新進行時間設(shè)定,通過鍵盤掃描輸出按鍵信息,再通過單片機將它轉(zhuǎn)換成能在七段數(shù)碼管上顯示字型碼。當(dāng)搶答完畢時,會在數(shù)碼管上顯示搶答者數(shù)字號碼提示以表示搶答成功,采取獨立式鍵盤,可以實現(xiàn)8路搶答。在顯示時使用的是七段數(shù)碼管顯示在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法。并通過查表發(fā)將其在數(shù)碼管上顯示出來,其中P1口為字型碼輸入端,P2口低6位

12、為字選段輸入端。通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字。軟件去抖動,如果“開始鍵”按下就向下執(zhí)行,否則就跳到開始。采用發(fā)聲報警,起到報警作用。如果想調(diào)節(jié)搶答時間或答題時間,按"搶答時間調(diào)節(jié)"鍵或"答題時間調(diào)節(jié)"鍵進入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下"-1s"鍵,時間LED上會顯示改變后的時間,調(diào)整范圍為0s99s, 0s時再減1s會跳到99s,99s時再加1s會變到0s。 主持人按"搶答開始"鍵,會有提示音,并立刻進入搶答倒計

13、時(預(yù)設(shè)30s搶答時間),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進入回答倒計時(預(yù)設(shè)60s搶答時間),不進行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于5s會每秒響一下提示音。 如倒計時期間,主持人想停止倒計時可以隨時按"停止"按鍵,系統(tǒng)會自動進入準(zhǔn)備狀態(tài),等待主持人按"搶答開始"進入下次搶答計時。 如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號數(shù)并響個不停,直到按下"停止" 鍵為止。2軟件調(diào)試的基本方法軟件的設(shè)計與調(diào)試實行分模塊實現(xiàn)方法。本設(shè)計軟件調(diào)試

14、中的分模塊包括顯示功能模塊、調(diào)正時間功能模塊,搶答功能模塊以報警功能模塊。各個獨立模塊功能調(diào)試成功后,將這些模塊程序通過主程序合并在一起,最后再對合并后的總程序進行調(diào)試。各軟件模塊首先要通過PC和仿真器進行軟件調(diào)試,當(dāng)仿真效果符合要求后,再下載進單片機看是否能正常工作。編程語言的軟件設(shè)計采用MCS-51匯編語言編寫,所使用的調(diào)試軟件包括proteus和Keil_C51。(1)軟件調(diào)試問題分析LED顯示問題:本次設(shè)計的最終方案是采用LED顯示屏實現(xiàn)顯示功能,最初數(shù)碼管顯示不正常,出現(xiàn)閃爍現(xiàn)象。通過調(diào)試發(fā)現(xiàn)這是由于延時時間選擇不當(dāng)會使人眼產(chǎn)生視覺暫留效果,每一次顯示時都必須加入適當(dāng)?shù)臅r間延時。由于

15、一開始所選用的延時時間太短,因此出現(xiàn)閃爍現(xiàn)象,在增加顯示延時之后,數(shù)碼管顯示正常。蜂鳴器異常啟動問題:蜂鳴器的啟動/關(guān)閉是通過單片機輸出的控制信號來實現(xiàn)的,當(dāng)當(dāng)前時間與鬧鐘設(shè)置時間比較吻合時,單片機將對鬧鈴控制口執(zhí)行取反命令,從而啟動蜂鳴器發(fā)聲。一開始編寫程序時,沒有對口的最初狀態(tài)作正確設(shè)置,由于系統(tǒng)開機復(fù)位后,口處于高電平狀態(tài),因此出現(xiàn)一開機蜂鳴器就處于啟動狀態(tài)的情況。通過在主程序最開始加入對口取零命令后,蜂鳴器啟動/關(guān)閉控制恢復(fù)正常。(2)按鍵消抖問題在最初編寫程序時,鍵盤控制部分按照常例加入了按鍵消抖程序。在實際調(diào)試中,發(fā)現(xiàn)按鍵出現(xiàn)反應(yīng)不靈敏現(xiàn)象。這是因為在鍵盤控制程序中,除了消抖程序外

16、,還加入了按鍵提示音程序(每次按壓鍵盤時,蜂鳴器發(fā)出“嗶”的一聲提示音)。由于在調(diào)用提示音子程序時,實際上已實現(xiàn)了一次時間的延時,因此再加入按鍵消抖程序的延時后,致使延時時間過長而出現(xiàn)按鍵反應(yīng)不靈敏問題。通過調(diào)試發(fā)現(xiàn)提示音子程序本身所產(chǎn)生的延時已能夠滿足按鍵消抖時間延遲的要求,因此在鍵盤控制程序中無需再加入專門的按鍵消抖程序。在去除按鍵消抖程序后,按鍵控制靈敏度恢復(fù)正常。3系統(tǒng)仿真用到了Proteus、Keil軟件,集成調(diào)試環(huán)境;繼承了編輯器、編譯器、調(diào)試器,支持軟件模擬,支持項目管理功能強大的觀察窗口,支持所有的數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu)顯示,一目了然,支持ASM(匯編)、C語言,多語言多模塊源程序

17、混合調(diào)試,在線直接修改、編譯、調(diào)試源程序,錯誤指令定位。功能很強大。用于對程序的調(diào)試和編輯。(1)Keil仿真界面:圖5.1 Keil仿真界面圖(2)Proteus仿真界面:圖5.2 Proteus仿真界面圖六 調(diào)試1打開電源開關(guān),數(shù)碼管顯示“FFF”。2設(shè)定"搶答"倒計時時間。3設(shè)定"答題"倒計時時間。4測試各組搶答按鍵。試按一下各組的搶答按鈕,應(yīng)立即顯示該組的組別數(shù)字,同時機內(nèi)喇叭發(fā)出"叮咚"的提示音。5啟動搶答倒計時,開始搶答。"FFF"狀態(tài)下,當(dāng)主持人宣布搶答開始時,馬上按一下"搶答"鍵

18、,屏幕顯示所設(shè)定的搶答倒計時時間并開始倒計時,提示倒計時時間馬上臨近結(jié)束。倒計時到0以后,儀器發(fā)出"叮咚"的結(jié)束提示音,同時顯示屏返回"FFF"待命狀態(tài)。在"搶答"倒計時中,如果有參賽組搶答,儀器屏幕立即顯示該組的組別號,同時發(fā)出"叮咚"的搶答成功提示音。需要返回"FFF"待命狀態(tài),按"取消"鍵即可。6啟動答題倒計時"FFF"狀態(tài)下,或有參賽組搶答成功后,需要開始答題的計時時,按"答題計時"鍵,屏幕顯示所設(shè)定的答題倒計時時間并開始倒計時

19、,提示倒計時時間馬上臨近結(jié)束。倒計時到0以后,儀器發(fā)出"丁冬"的結(jié)束提示音,同時顯示屏返回"FFF"待命狀態(tài)。7提前取消倒計時無論是"搶答"還是"答題"的倒計時時間,需要提前退出,只要按一下"取消"鍵,即可返回到"FFF"待命狀態(tài)。8時間調(diào)整如果想調(diào)節(jié)搶答時間或答題時間,按“加一”鍵或“減一”鍵進入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下“減1s”鍵,時間LED上會顯示改變后的時間,調(diào)整范圍為09

20、9s, 0s時再減1s會跳到99,99s時再加1s會變到0s。9違規(guī)搶答當(dāng)主持人讀題過程中,而未宣布搶答開始時按下?lián)尨鸢粹o。主顯示屏將顯示該違規(guī)組號,及發(fā)出提示音。及該組的紅燈亮起。通過調(diào)試,結(jié)果完全符合搶答器設(shè)計要求。七 總結(jié)這次課程設(shè)計,完成八路數(shù)字搶答器的設(shè)計,期間遇到了一些問題,通過查閱課本和其他資料、互相討論和老師的熱心指導(dǎo),最終設(shè)計出電路圖,又經(jīng)過上機仿真,不斷修改后完成設(shè)計。在這個過程中,我也曾經(jīng)因為實踐經(jīng)驗的缺乏失落過,也曾經(jīng)仿真成功而熱情高漲。特別是Proteus仿真軟件的使用,對軟件的使用一點都不熟悉,要從頭開始學(xué)起。經(jīng)過這次的課程設(shè)計發(fā)現(xiàn)了自己的問題,就是理論知識和實際操

21、作沒有很好的結(jié)合在一起,遇到問題不能及時的發(fā)現(xiàn),平時只注意了理論知識而忽略了實際操作。經(jīng)過這次課程設(shè)計以后希望我能在以后的工作中能培養(yǎng)自己的動手操作能力。參考文獻1艾德才.微型計算機原理與接口技術(shù)M. 高等教育出版社,1988.2沈美明.IBM-PC匯編語言程序設(shè)計M. 清華大學(xué)出版社,2000.3任致程.經(jīng)典集成電路400例M. 機械工業(yè)出版社,2002.4薛棟梁.單片機原理及應(yīng)用M. 中國水利水電出版社,2001.5謝筑森.單片機開發(fā)與應(yīng)用設(shè)計M. 中國科學(xué)技術(shù)大學(xué)出版社,1996.程序清單OK EQU 20H;搶答開始標(biāo)志位 RING EQU 22H;響鈴標(biāo)志位 ORG 0000H AJ

22、MP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#30;初設(shè)搶答時間為30s MOV R2,#60;初設(shè)答題時間為60s MOV TMOD,#11H;設(shè)置未定時器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms為一次溢出中斷 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB E

23、X1;允許四個中斷,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0;一開始就運行定時器,以開始顯示FFF.如果想重新計數(shù),重置TH1/TL1就可以了;=查詢程序=START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未開始搶答時候顯示FFF JB P3.0,NEXT;ddddddd ACALL DELAY JB P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢 ACALL BARK;按鍵發(fā)聲 MOV A,R1 MOV R6,A;送R1

24、->R6,因為R1中保存了搶答時間 SETB OK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答 MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號標(biāo)志,這里表示只讀一次有用信號 MOV R3,#0AH;搶答只顯示計時,滅號數(shù) AJMP COUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,FALSE7 JNB P1.7,FALSE8 AJ

25、MP START;=非法搶答處理程序=FALSE1: MOV R3,#01H AJMP ERRORFALSE2: MOV R3,#02H AJMP ERRORFALSE3: MOV R3,#03H AJMP ERRORFALSE4: MOV R3,#04H AJMP ERRORFALSE5: MOV R3,#05H AJMP ERRORFALSE6: MOV R3,#06H AJMP ERRORFALSE7: MOV R3,#07H AJMP ERRORFALSE8: MOV R3,#08H AJMP ERROR;=INT0(搶答時間R1調(diào)整程序)=INT0SUB:MOV A,R1 MOV B

26、,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;先在兩個時間LED上顯示R1 JNB P3.4,INC0 JNB P3.5,DEC0 JNB P3.1,BACK0 AJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1AJMP INT0SUBADD0: INC R1 ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1;如果R1為0, R1就置9

27、9, DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETI ;=INT1(回答時間R2調(diào)整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV ABMOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1A

28、JMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: RETI ;=倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=REPEAT:MOV A,R2 ;使用錦囊時重新計時 MOV R6,A CLR RING COUNT: MOV R0,#00H;重置定時器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H;重置定時器RECOUN

29、T:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6 MOV B,#0AH DIV AB;除十分出個位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;個位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取個位 MOV A,R6 SUBB A,#07H JNC LARGER;大于5s跳到LARGER,小于等于5s會提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下運行 CLR RING AJMP CHECKFULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并清R0,重新計 SE

30、TB RING MOV A,R6 JZ QUIT;計時完畢 MOV R0,#00H DEC R6;一秒標(biāo)志減1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示" DEC R6;計時一秒R6自動減1 MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止鍵退出 JNB OK,CHECKK ;只在回答倒計時才有效 AJMP NEXTTCHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊NEXTT: ACALL DISPLAY JB OK,ACCOUT;如果是搶答倒計

31、時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用) AJMP RECOUNTACCOUT: MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP RECOUNT TZ1:JMP TRUE7 TZ2:JMP TRUE8 QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序 CLR RING AJMP START;=正常搶答處理程序=TRUE

32、1: ACALL BARK MOV A,R2 MOV R6,A;搶答時間R2送R6 MOV R3,#01H CLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答 AJMP COUNTTRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK MOV A,R2MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5:ACALL BARK

33、 MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT;=犯規(guī)搶答程序=ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV

34、34H,R3;犯規(guī)號數(shù)暫存與(34H)HERE: MOV A,R0 CJNE A,#06H,FLASH;0.3s向下運行->滅并停響 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三燈全滅 AJMP CHECK1FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計 SETB RING MOV R0,#00H MOV R3,34H;取回號數(shù) MOV R5,#0BH MOV R4,#0BH;顯示FF和號數(shù) AJMP CHECK1CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OK AJMP START;=顯示程序=DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出, MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY2 MOV DPTR,#DAT2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY2 MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY2 RETD

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論