版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、. . . . 大學(xué) 單片機(jī) 課程設(shè)計說明書課題:八路搶答器 學(xué)生:光鍵學(xué)號:8 院系:機(jī)電汽車工程學(xué)院專業(yè):機(jī)械設(shè)計制造與其自動化指導(dǎo)老師:王衛(wèi)忠同組成員:啟家 何海琴 徐化文 馬振閣組長:光鍵 2012 年 06 月 07 日目錄1 概述.22設(shè)計任務(wù).23 系統(tǒng)總體方案.34 硬件設(shè)計.4 4.1 控制系統(tǒng)所需硬件.4 4.2 硬件原理介紹.45 軟件設(shè)計.75.1 軟件總體設(shè)計.75.2 程序流程圖.86 Proteus軟件仿真.126.1Keil軟件.126.2在Proteus軟件.127小結(jié).148心得體會.15附1:源程序代碼.16附2:參考文獻(xiàn) .241 .概述8路智能搶答器的
2、設(shè)計 現(xiàn)如今,各種智力知識競賽已經(jīng)成為人們的一種娛樂形式,人們在答題的過程中不僅可以享受到樂趣,還可以學(xué)到一些科學(xué)知識和生活常識。然而在搶答過程中,單靠視覺是很難判斷出哪組最先完成搶答操作。為了辨別哪一組或哪一位選手獲得答題權(quán),必須要設(shè)計一個智能搶答控制系統(tǒng)智能搶答器。搶答器作為一種電子產(chǎn)品,已被人們所熟知并廣泛應(yīng)用于各種智力知識競賽場合。搶答器在競賽中有很大用處,通過搶答器的指示燈顯示,數(shù)碼管顯示和警示蜂鳴等手段,能準(zhǔn)確,公正,直觀地判斷出第1搶答者并協(xié)助比賽的順利進(jìn)行。但是,目前使用的搶答器大多數(shù)都采用了邏輯電路進(jìn)行設(shè)計,分立元件較多,造成搶答器的成本較高。此外一般搶答器由模擬電路,數(shù)字電
3、路或二者結(jié)合組成,其智能化程度低,故障率高,顯示簡單?,F(xiàn)代電子技術(shù)的發(fā)展要求電子電路朝數(shù)字化,集成化方向發(fā)展,因此設(shè)計出全集成電路的多路搶答器是現(xiàn)代電子技術(shù)發(fā)展的要求。2 .設(shè)計任務(wù) 本設(shè)計要求學(xué)生結(jié)合現(xiàn)有的實際條件,以單片機(jī)為控制核心,設(shè)計一個8路智能搶答器。要現(xiàn)的功能如下: 1) 搶答器可同時供8名選手或8個代表隊比賽,分別用8個按鍵S1S8進(jìn)行搶答。 2) 主持人可以通過智能搶答器的按鍵設(shè)定每道題的搶答時間和回答時間。 3) 具有清零和非法搶答控制功能,并由主持人操縱,避免選手在主持人說“開始”前提前搶答,違反規(guī)則。 4) 當(dāng)主持人啟動“開始搶答鍵”后,定時器進(jìn)行減計時,在10s無人搶答
4、表示所有參賽選手或參賽隊對本題棄權(quán),搶答時間耗盡后禁止搶答。 5) 倒計時5s時,如果仍無人搶答,則系統(tǒng)每1s報警一次,用以提示參賽選手。 6) 搶答器具有鎖存與顯示功能。即選手按下按鍵,鎖存相應(yīng)選手的參賽,并在LED數(shù)碼管上顯示,同時揚(yáng)聲器發(fā)出報警聲響提示。選手搶答實行優(yōu)先鎖存,其他按鍵者將不能響應(yīng),以便公平地選擇第一個搶答者。 7) 參賽選手在設(shè)定的時間進(jìn)行搶答,搶答有效,顯示器上顯示選手的編號同時進(jìn)入回答問題的30s倒計時。 8) 倒計時期間,如果主持人想終止倒計時,可以按下“停止”按鍵,系統(tǒng)會自動進(jìn)入準(zhǔn)備狀態(tài)。 主要硬件設(shè)備:AT89C51單片機(jī),8輸入3態(tài)緩沖器/線驅(qū)動器74LS24
5、4,六反相驅(qū)動器7404,共陽極LED數(shù)碼管等,12MHZ晶振,74LS04反相器,手動開關(guān),按鍵若干,報警喇叭。 3.系統(tǒng)總體方案設(shè)計2.1整體方案設(shè)計 該智能搶答器以AT89C51單片機(jī)為控制核心,控制精度較高,操作誤差主要來自晶振自身所造成的誤差。其他外圍電路包括復(fù)位電路,時鐘電路,報警電路,LED顯示電路,搶答按鍵,功能設(shè)置鍵等。該智能搶答器具有計時記憶功能,一次時間設(shè)置完,復(fù)位后不需重新進(jìn)行時間設(shè)定;通過按鍵掃描輸出按鍵信息,并通過單片機(jī)將它轉(zhuǎn)化為在七段數(shù)碼管上顯示的字符型。單片機(jī)的P1口為8組搶答按鍵的輸入口,P0.0P0.6為數(shù)碼管的段選口,P2.0P2,2為數(shù)碼管的片選口。外部
6、中斷INT0和INT1分別為搶答時間和回答時間的調(diào)整口,P3.4和P3.5分別實現(xiàn)時間調(diào)整的加1和減1功能:P3.6為報警電路的控制口。智能搶答器的整體方案設(shè)計圖如下所示。智能搶答器的整體方案設(shè)計圖4.硬件系統(tǒng)設(shè)計 1)控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲器接口電路、顯示接口電路組成。其中單片機(jī)AT89C51是系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個部分協(xié)調(diào)工作. 2)硬件組成與所需元件:該系統(tǒng)的核心器件是AT89C51。在其外圍接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕與揚(yáng)聲器。元件為:晶振X1、電容C1、C2、C3、 電阻RP1。P3.0和P3.1由裁判控制,分別是搶答停止和開始鍵。P1.0-P1.7是
7、8組搶答的輸入口,P2.0-P2.3口為數(shù)碼管的段選口,位選口用的是P0.0-P0.6口輸出,外部中斷0、1和P3.4,P3.5為搶答記時調(diào)整口,實現(xiàn)對各個隊進(jìn)行計時,并且加減調(diào)整,外部中斷0,1實現(xiàn)了答題時間調(diào)整.P3.4 P3.5分別實現(xiàn)了時間的加一和減一.P3.6為蜂鳴器的控制口。 硬件接線圖如圖所示: 7SEG-MPX4-CC LED顯示部結(jié)構(gòu)如上圖所示:4.1 控制系統(tǒng)與所需元件 控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲器接口電路、顯示接口電路組成。其中單片機(jī)AT89C51是系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個部分協(xié)調(diào)工作. 所需元件:該系統(tǒng)的核心器件是AT89C51。在其外圍接上復(fù)位電路、
8、上拉電阻、數(shù)碼管、按鈕與揚(yáng)聲器。元件為:晶振X1、電容C1、C2、C3、 電阻8、P3.0和P3.1由裁判控制,分別是搶答停止和開始鍵。P1.0-P1.7是8組搶答的輸入口,P2.0-P2.3口為數(shù)碼管的段選口,位選口用的是P0.0-P0.6口輸出,外部中斷0、1和P3.4,P3.5為搶答記時調(diào)整口,實現(xiàn)的對個隊進(jìn)行計時,并且加減調(diào)整,P3.4 P3.5分別實現(xiàn)了時間的加一和減一.P3.6為蜂鳴器的控制口。4.2 原理介紹 智力競賽搶答器用單片機(jī)來設(shè)計制作完成,由于其功能的實現(xiàn)主要通過軟件編程來完成, 采用單片機(jī)AT89C51,它是低功耗、高性能的CMOS型8位單片機(jī)。片帶有4KB的Flash
9、存儲器,且允許在系統(tǒng)改寫或用編程器編程。該智力競賽搶答器的準(zhǔn)確度很高,其誤差主要由晶振自身的誤差所造成。AT89C51單片機(jī)由微處理器,存儲器,I/O口以與特殊功能寄存器SFR等部分構(gòu)成。其存儲器在物理上設(shè)計成程序存儲器和數(shù)據(jù)存儲器兩個獨(dú)立的空間,片程序存儲器的容量為4KB,片數(shù)據(jù)存儲器為128個字節(jié)。89C51單片機(jī)有4個8位的并行I/O口:P0口,P1口,P2口和P3口。各個接口均由接口鎖存器,輸出驅(qū)動器,和輸入緩沖器組成。P1口是唯一的單功能口,僅能用作通用的數(shù)據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還具有不同的第二功能,如P3.0是串行輸入口線,P3.1口
10、是串行輸出口線。在需要外部程序存儲器和數(shù)據(jù)存儲器擴(kuò)展時,P0可作為分時復(fù)用的低8位地址/數(shù)據(jù)總線,P2口可作為高8位的地址總線。P3口也可作為AT89C51的一些特殊功能口,同時為閃爍編程和編程校驗接收一些控制信號。AT89C51的管腳圖:外部振蕩電路單片機(jī)必須在AT89C51的驅(qū)動下才能工作.在單片機(jī)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機(jī)部的各個單元。外部振蕩電路見圖一 復(fù)位電路采用圖二所示: 圖一圖二外部中斷和部中斷并存,單片機(jī)有硬件復(fù)位端,只要輸入持續(xù)4個機(jī)器周期的高電平即可實現(xiàn)復(fù)位。硬件復(fù)位后的各狀態(tài)可知寄存器與存儲器的值都恢復(fù)到了初始值,應(yīng)為本設(shè)計
11、功能中有倒計時時間的記憶功能,所以不能對單片機(jī)進(jìn)行硬件復(fù)位。只能用軟復(fù)位。軟復(fù)位實際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程。外部還接有蜂鳴器用來發(fā)出報警音,其圖形如下:采用七段碼7SEG-MPX4-CC 顯示,它是共陽極的由低電平點(diǎn)亮。圖形如下:采用八個BUTTON按鈕作為搶答的選擇按鍵如圖所示:5.軟件系統(tǒng)設(shè)計5.1軟件總體設(shè)計 智力競賽搶答器要求有計時記憶功能,一次時間設(shè)置完, 復(fù)位后不需重新進(jìn)行時間設(shè)定,通過鍵盤掃描輸出按鍵信息,再通過單片機(jī)將它轉(zhuǎn)換成能在七段數(shù)碼管上顯示字型碼. 當(dāng)搶答完畢時,會在數(shù)碼管上顯示搶答者數(shù)字提示以表示搶答成功.同時顯示其分?jǐn)?shù),分?jǐn)?shù)的
12、加減可由裁判手動進(jìn)行. 采用獨(dú)立式鍵盤,可實現(xiàn)8路搶答. 在顯示時使用的是七段數(shù)碼管顯示在本設(shè)計中根據(jù)實際情況采用的是動態(tài)顯示方法. 并通過查表法 將其在數(shù)碼管上顯示出來,其中P1口為字型碼輸入端,P2口低3位為字選段輸入端.通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字。軟件去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到開始。采用倒計時程序,使其具有倒計時功能?;卮鸬褂嫊r30秒。搶答時間10秒。采用發(fā)聲警報,起到報警作用。 1、如果想調(diào)節(jié)搶答時間或答題時間,按"搶答時間調(diào)節(jié)"鍵或"答題時間調(diào)節(jié)"鍵進(jìn)入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間
13、或回答時間值,如想加一秒按一下"T+"鍵,如果想減一秒按一下"T-"鍵,時間LED上會顯示改變后的時間,調(diào)整圍為0s99s, 0s時再減1s會跳到99,99s時再加1s會變到0s。 2、主持人按"搶答開始"鍵,會有提示音,并立刻進(jìn)入搶答倒計時(預(yù)設(shè)10s搶答時間),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進(jìn)入回答倒計時(預(yù)設(shè)30s搶答時間),不進(jìn)行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于5s會每秒響一下提示音。 3、如倒計時期間,主持人想停止倒計時可以隨時按"停止"按鍵,系統(tǒng)會自動進(jìn)入準(zhǔn)備狀態(tài)
14、,等待主持人按"搶答開始"進(jìn)入下次搶答計時。 4、如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號數(shù)并響個不停,直到按下"停止" 鍵為止。5、P3.0為開始搶答,P3.1為停止,p1.0-p1.7為八路搶答輸入 數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P3.6口。P3.2搶答時間調(diào)整結(jié),P3.3回答時間調(diào)整,P3.4為時間加1調(diào)整,P3.5為時間減1調(diào)整。5.2流程圖5.2.1主程序流程圖智能搶答器在正常工作的情況下,首先對控制系統(tǒng)進(jìn)行初始化,然后進(jìn)行鍵盤掃描,判斷主持人是否按下了“開始
15、搶答”按鍵按下則執(zhí)行倒計時子程序和顯示子程序。其中倒計時程序包括搶答倒計時和回答倒計時。主程序流程圖如下圖所示:開始初始化子程序P3.0是否按下非法搶答處理子程序倒計時子程序顯示子程序正常搶答處理子程序結(jié)束5.2.2初始化子程序流程圖任何控制系統(tǒng)開始正常工作前都必須要進(jìn)行初始化,該智能搶答器的初始化子程序主要是兩個定時器和兩個外部中斷初始化。初始化子程序流程圖如上圖所示開始設(shè)計搶答和答題時間設(shè)計定時器的工作模式定時器T0,T1初始化開四個中斷啟動定時器返回5.2.4非法搶答查詢子程序流程圖開始在主持人未按下“搶答開始鍵”P1.0按下時,為防止參賽選手發(fā)生搶答, Y專門設(shè)計了非法搶答查詢子程序。
16、當(dāng)有選手發(fā)生搶答時,系統(tǒng)會將選手的保存,P1.1按下N下來,并送到LED顯示裝置 Y進(jìn)行顯示,同時調(diào)用犯規(guī)搶答子程序。非法搶答查詢子程序流程圖如圖P1.2按下:NYP1.3按下NYNP1.4按下YYP1.5按下NYYP1.6按下NYYNP1.7按下YYNP1.8按下YY將犯規(guī)號送到R3犯規(guī)搶答程序返回5.2.4搶答時間調(diào)整子程序流程圖 該智能搶答器的搶答時間是可以根據(jù)實際需要進(jìn)行調(diào)整的。如果想調(diào)節(jié)搶答時間,按下“搶答時間調(diào)整鍵”此時LED顯示裝置會顯示當(dāng)前搶答時間的設(shè)定值,如果想加1S,按一下“T+”鍵;如果想減1S,按一下“T-”鍵。LED顯示裝置會自動顯示修改后的搶答時間。搶答時間的設(shè)定圍
17、是099S,0S再減1S會變成99S,同理99S再加1S會變成0S?;卮饡r間的調(diào)整與此類似。搶答時間調(diào)整子程序流程圖如圖所示:開始搶答時間R1送A將R1的十位和個位分別送到R5、R4調(diào)顯示子程序調(diào)延時子程序P3.4鍵按下?YR1=99?R1+1送到R1NNYR1=0P3.5鍵按下?YR2=0?NR1-1送到R1NP3.1鍵按下?YNR1=99返回Y6. 系統(tǒng)仿真6.1:Keil軟件 用該軟件進(jìn)行程序的檢查調(diào)試,調(diào)試完成后在仿真器里設(shè)置生成*.HEX文件。6.2:Protus軟件 系統(tǒng)仿真還用到了Protus軟件,可通過仿真可以完全顯示出所設(shè)計系統(tǒng)的功能,對于程序的調(diào)試等有很大的幫助.系統(tǒng)仿真時
18、首先要在使用Keil編譯器,把所寫的程序進(jìn)行編譯,同時在仿真器里設(shè)置生成HEX文件,編譯無錯誤時進(jìn)行Protus仿真。首先要新建一個文檔是DNS型的找出需要的器件,可以使用搜索功能。接著把各個器件放到合適的位置都要放到藍(lán)色框。然后根據(jù)自己的設(shè)計要求連線。等所有的元件都連接完成后可以把,偉福編譯生成的無錯誤文件加載到AT89C51中,方法是,右鍵點(diǎn)中器件然后在用左鍵點(diǎn)擊,出來一個對話框在program file后選擇要添加文件,文件要求必須是HEX文件。然后可以點(diǎn)擊運(yùn)行觀察現(xiàn)象,看與自己設(shè)置的符合否,如果不相符在查找錯誤進(jìn)行修改,一般的錯誤都是程序中的,所以要認(rèn)真的讀取程序的每一個部分 作好的P
19、rotus圖:六號搶答到時時的顯示圖:加法調(diào)整圖:減法調(diào)整圖:倒計時到30秒時的顯示圖:蜂鳴器會發(fā)出一聲警報倒計時還有5秒時的報警顯示圖:蜂鳴器會開始發(fā)出警報7. 小結(jié) 該設(shè)計的硬件部分較簡單,主要包括復(fù)位電路,時鐘電路、報警電路、LED顯示電路、功能鍵設(shè)置電路和搶答鍵電路。 其中,LED顯示電路中的數(shù)碼管采用動態(tài)顯示方式和共陽極的連接方式,該電路的驅(qū)動器件采用74LS244、7404和上拉電阻,以此來增加顯示裝置的驅(qū)動電流,提高數(shù)碼管的顯示亮度。 按鍵電路的設(shè)計是本設(shè)計任務(wù)的一個難點(diǎn),一點(diǎn)要注意考慮按鍵的“抖動”效應(yīng)。根據(jù)實際情況,選用獨(dú)立式鍵盤并采用“軟件”的方式來消除按鍵的“抖動”效應(yīng)。
20、利用Proteus仿真軟件對控制系統(tǒng)進(jìn)行實物仿真是本設(shè)計的一大亮點(diǎn),通過Proteus仿真軟件既可以對源程序進(jìn)行調(diào)試,又可以對控制系統(tǒng)的設(shè)計原理進(jìn)行檢測,從而有效地縮短系統(tǒng)的開發(fā)周期。另外,該設(shè)計在“去抖”方面需要進(jìn)一步改善,“去抖”效果不是很好,硬件復(fù)位電路沒有起到應(yīng)有的作用,這是我們這次設(shè)計的不足之處。8. 心得體會 這次的單片機(jī)課程設(shè)計真的讓我學(xué)到了很多知識,通過查閱大量的書籍,使我對單片機(jī)應(yīng)用系統(tǒng)有了更深的理解。 拿到題目之后我們按照題目要求查資料,找參考,編程序,查到相關(guān)的資料之后,我們便開始畫圖,進(jìn)行仿真,在硬件接線圖和程序都正確的情況下,我們沒有仿真出預(yù)定的效果,后來我從資料和網(wǎng)
21、上查到那個溫度傳感器在Proteus中無法仿真,又嘗試了幾次之后,我們決定放棄這個題目,重新開始一個課題,當(dāng)別人已經(jīng)確定下來并且進(jìn)行的差不多了時,我有點(diǎn)著急,可是沒辦法,又重新開始查資料,找題目,最終我們確定了一個新的課題八路搶答器。因為這個題目可查到直接相關(guān)的資料,所以這就大大減少了我們的工作量,程序基本上是現(xiàn)成的,只需要我們稍做完善,所以我們分工畫圖,完善程序,這些工作做完之后,便開始做仿真,這次的仿真比較順利,一次便成功了,這樣我們便有大量的時間整理說明書,二十多頁的說明書對我來說也是個不小的工作量,我們分工合作,每人負(fù)責(zé)一部分文字的編輯整理,最后是我們組一起把整個設(shè)計流程理解了一遍,把
22、程序進(jìn)一步理解完善,組員一起討論總結(jié)這次設(shè)計的不足之處。通過這次課程設(shè)計,我學(xué)到了很多,首先學(xué)會了用PROTEUS這款軟件,然后對匯編語言編程進(jìn)一步的熟悉練習(xí),在編程方面有了很大提高,作為我們小組的組長,是我充分意識到分工的重要性,每個人有自己的特長,每個人都有自己擅長的方面,要善于發(fā)現(xiàn)組員所擅長的方面,合理的進(jìn)行分工,團(tuán)結(jié)協(xié)作才能提高效率。通過這次課程設(shè)計,我的最大的感觸是理論與實踐相結(jié)合是學(xué)習(xí)知識最有效的方法。任何理論都要經(jīng)得起實踐的檢驗,真理都是在不斷地完善,不斷的修改,不斷的學(xué)習(xí),不斷地實踐中產(chǎn)生的。今后的學(xué)習(xí)中我們要繼續(xù)發(fā)揚(yáng)理論與實踐相結(jié)合的學(xué)習(xí)方法,將知識學(xué)扎實,抓住問題的本質(zhì)。附
23、1:源程序代碼OK EQU 20H;搶答開始標(biāo)志位RING EQU 22H;響鈴標(biāo)志位ORG 0000H;主程序入口地址AJMP MAIN;跳轉(zhuǎn)到主程序ORG 0003H;外部中斷0服務(wù)程序入口地址AJMP INT0SUB;跳轉(zhuǎn)到中斷服務(wù)子程序ORG 000BH;定時器0服務(wù)程序入口地址AJMP T0INT;跳轉(zhuǎn)到定時器0服務(wù)子程序ORG 0013H;外部中斷1服務(wù)程序入口地址AJMP INT1SUB;跳轉(zhuǎn)到外部中斷1服務(wù)子程序ORG 001BH;定時器1服務(wù)程序入口地址AJMP T1INT;跳轉(zhuǎn)到定時器1服務(wù)子程序ORG 0040H;主程序起始地址MAIN:MOV R1,#0AH;初設(shè)搶答時
24、間為10sMOV R2,#1EH;初設(shè)答題時間為30sMOV TMOD,#11H;設(shè)置T0,T1定時器/計數(shù)器均工作在1模式MOV TH0,#0F0H;設(shè)置T0計數(shù)初值MOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖MOV TH1,#3CH;設(shè)置T1計數(shù)初值MOV TL1,#0B0H;50ms為一次溢出中斷SETB EA;開總中斷SETB ET0;開T0中斷SETB ET1;開T1中斷SETB EX0;開外部中斷0SETB EX1;開外部中斷1CLR OK ;清搶答開始標(biāo)志位CLR RING;清響鈴標(biāo)志位SETB TR1;T1開始計數(shù)SETB TR0;一開始就運(yùn)行定時器,以開始顯示FFF.如
25、果想重新計數(shù),重置TH1/TL1就可以了;=查詢程序=START:MOV R5,#0BH;R3,R4,R5賦值在DISPLAY中顯示F FFMOV R4,#0BHMOV R3,#0BHACALL DISPLAY;未開始搶答時候顯示FFF P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢ACALL DELAY P3.0,NEXT;判斷開始搶答鍵是否按下,否則執(zhí)行進(jìn)入非法程序查詢ACALL BARK;按鍵發(fā)聲MOV A,R1MOV R6,A;送R1->R6,因為R1中保存了搶答時間SETB OK;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢
26、搶答MOV R7,#01H;讀搶答鍵數(shù)據(jù)信號標(biāo)志,這里表示只讀一次有用信號 MOV R3,#0AH;搶答只顯示計時,滅號數(shù) AJMP COUNT;進(jìn)入倒計時程序,其中包括查詢有效搶答的查詢;=-非法搶答查詢程序=NEXT:JNB P1.0,FALSE1; 判斷1號選手是否按鍵JNB P1.1,FALSE2;判斷2號選手是否按鍵JNB P1.2,FALSE3;判斷3號選手是否按鍵JNB P1.3,FALSE4;判斷4號選手是否按鍵JNB P1.4,FALSE5;判斷5號選手是否按鍵JNB P1.5,FALSE6;判斷6號選手是否按鍵JNB P1.6,FALSE7;判斷7號選手是否按鍵JNB P1
27、.7,FALSE8;判斷8號選手是否按鍵AJMP START;跳轉(zhuǎn)到查詢程序FALSE1:MOV R3,#01H;R3中保存“1”號數(shù)AJMP ERROR;跳轉(zhuǎn)到ERROR犯規(guī)搶答子程序FALSE2:MOV R3,#02H;R3中保存“2”號數(shù)AJMP ERROR;跳轉(zhuǎn)到ERROR犯規(guī)搶答子程序FALSE3:MOV R3,#03H;R3中保存“3”號數(shù)AJMP ERROR;跳轉(zhuǎn)到ERROR非法搶答子程序FALSE4:MOV R3,#04H;R3中保存“4”號數(shù)AJMP ERROR;跳轉(zhuǎn)到ERROR犯規(guī)搶答子程序FALSE5:MOV R3,#05H;R3中保存“5”號數(shù)AJMP ERROR;跳轉(zhuǎn)
28、到ERROR犯規(guī)搶答子程序FALSE6:MOV R3,#06H;R3中保存“6”號數(shù)AJMP ERROR;跳轉(zhuǎn)到ERROR犯規(guī)搶答子程序FALSE7:MOV R3,#07H;R3中保存“7”號數(shù)AJMP ERROR;跳轉(zhuǎn)到ERROR犯規(guī)搶答子程序FALSE8:MOV R3,#08H;R3中保存“8”號數(shù)AJMP ERROR;跳轉(zhuǎn)到ERROR犯規(guī)搶答子程序;=犯規(guī)搶答程序=ERROR:MOV R0,#00HMOV TH1,#3CH;重置T1初值MOV TL1,#0B0H MOV 34H,R3;犯規(guī)號數(shù)暫存與34H_指示燈閃爍處理程序_HERE:MOV A,R0CJNE A,#06H,FLASH;
29、0.3s向下運(yùn)行->滅并停響CLR RINGMOV R3,#0AHMOV R4,#0AH MOV R5,#0AH;三個燈全滅AJMP CHECK1FLASH:CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計數(shù)SETB RING;響鈴MOV R0,#00HMOV R3,#34H;取回號數(shù)MOV R4,#0BH MOV R5,#0BH;顯示FF和號數(shù)AJMP CHECK1CHECK1:JNB P3.1,QUIT1;判斷復(fù)位鍵是否按下MOV R3,34H;號數(shù)給R3ACALL DISPLAY;顯示號數(shù)AJMP HEREQUIT1:CLR RING ;停止
30、響鈴CLR OK;禁止搶答AJMP START;跳轉(zhuǎn)到查詢程序;=顯示子程序=DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,MOV A,R3MOVC A,A+DPTR;查第一個顯示字形碼MOV P2,#0FBH;段選MOV P0,A;字形碼送到P0口ACALL DELAY2;調(diào)用延時子程序MOV DPTR,#DAT2;MOV A,R5;MOVC A,A+DPTR;查第二個顯示字形碼MOV P2,#0FEH;段選MOV P0,A;字形碼送到P0口ACALL DELAY2;調(diào)用延時子程序MOV A,R4MOVC A,A+DPTR;查第
31、三個顯示字形碼MOV P2,#0FDH;段選MOV P0,A;字形碼送到P0口ACALL DELAY2;調(diào)用延時子程序RETDAT1:DB 0FFH,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH;"滅","1","2","3","4","5","6","7","8","9","滅","F"DAT2
32、:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH;第一個為零,其他與上一樣,因為十位如果為零顯示熄滅;=倒計時程序=REPEAT:MOV A,R2;使用重新計數(shù)時 MOV R6,ACOUNT:MOV R0,#00H;重置定時器的中斷次數(shù)MOV TH1,#3CHMOV TL1,#0B0H;重置定時器RECOUNT:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6MOV B,#0AHDIV AB;除十分出個位/十位MOV 30H,A;十位存于(30H)MOV 31H,B;個位存于(31H)MOV
33、R5,30H;取十位MOV R4,31H;取個位MOV A,R6SUBB A,#07HJNC LARGER;大于5s跳到LARGER,小于等于5s會提醒MOV A,R0CJNE A,#0AH,FULL;1s中0.5s向下運(yùn)行CLR RINGAJMP CHECKFULL:CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數(shù)并清R0,重新計數(shù)SETB RINGMOV A,R6JZ QUITMOV R0,#00HDEC R6;一秒標(biāo)志減1AJMP CHECKLARGER:MOV A,R0CJNE A,#14H,CHECK;如果1s向下運(yùn)行,否者跳到查"停/顯示"DE
34、C R6;計時一秒R6自動減1MOV R0,#00HCHECK:JNB P3.1,QUIT;如按下停止鍵退出JNB OK,CHECKK;只在回答倒計時才有效AJMP NEXTTCHECKK:JNB P3.0,REPEAT ;判斷是否使用重新計數(shù)NEXTT:ACALL DISPLAY OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)AJMP RECOUNTACCOUT:MOV A,36HJNB ACC.0,TRUE1JNB ACC.1,TRUE2JNB ACC.2,TRUE3JNB ACC.3,TRUE4JNB ACC.4,TRUE5JNB ACC
35、.5,TRUE6JNB ACC.6,TRUE7JNB ACC.7,TRUE8AJMP RECOUNTQUIT:CLR OK;如果按下了"停止鍵"執(zhí)行的程序CLR RINGAJMP START;=正常搶答處理程序=TRUE1:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2MOV R6,A;搶答時間R2送R6MOV R3,#01HCLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答AJMP COUNT;調(diào)用倒計時子程序TRUE2:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2;搶答時間R2送R6MOV R6,AMOV R3,#02HCLR OKAJMP COUNT;
36、調(diào)用倒計時子程序TRUE3:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2;搶答時間R2送R6MOV R6,AMOV R3,#03HCLR OKAJMP COUNT;調(diào)用倒計時子程序TRUE4:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2;搶答時間R2送R6MOV R6,AMOV R3,#04HCLR OKAJMP COUNT;調(diào)用倒計時子程序TRUE5:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2;搶答時間R2送R6MOV R6,AMOV R3,#05HCLR OKAJMP COUNT;調(diào)用倒計時子程序TRUE6:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2;搶答時間R
37、2送R6MOV R6,AMOV R3,#06HCLR OKAJMP COUNT;調(diào)用倒計時子程序TRUE7:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2;搶答時間R2送R6MOV R6,AMOV R3,#07HCLR OKAJMP COUNT;調(diào)用倒計時子程序TRUE8:ACALL BARK;調(diào)用發(fā)聲程序MOV A,R2;搶答時間R2送R6MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;調(diào)用倒計時子程序;=INT0(搶答時間R1調(diào)整程序)=INT0SUB:MOV A,R1;將搶答時間給AMOV B,#0AHDIV AB ;作除法運(yùn)算MOV R5,A;十位給R5MO
38、V R4,B;個位給R4MOV R3,#0AH;ACALL DISPLAY;調(diào)用延時子程序JNB P3.4,INC0;加一鍵是否按下JNB P3.5,DEC0;減一鍵是否按下JNB P3.1,BACK0AJMP INT0SUBINC0:MOV A,R1CJNE A,#63H,ADD0MOV R1,#00HACALL DELAY1;調(diào)用延時子程序AJMP INT0SUBADD0:INC R1;加一ACALL DELAY1;調(diào)用延時子程序AJMP INT0SUBDEC0:MOV A,R1JZ SETR1DEC R1;減一ACALL DELAY1;調(diào)用延時子程序AJMP INT0SUBSETR1:MOV R1,#63HACALL DELAY1;調(diào)用延時子程序AJMP DELAY1;調(diào)用延時子程序AJMP INT0SUBBACK0:RETI=INT1(回答時間R2調(diào)整程序)=INT1SUB:MOV A,R2MOV B,#0AHDIV AB MOV R5,AMOV R4,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45153-2024老齡化社會照顧人員包容性組織通用要求與指南
- 手術(shù)室護(hù)士工作小結(jié)范文(5篇)
- 我愛讀書演講稿15篇
- 護(hù)理督查工作匯報
- 感恩節(jié)前的精彩講話稿(9篇)
- 情感電臺廣播稿集錦15篇
- 市場營銷畢業(yè)的實習(xí)總結(jié)
- 師德師風(fēng)宣講活動簡報(18篇)
- 初級會計實務(wù)-2021年5月16日上午初級會計職稱考試《初級會計實務(wù)》真題
- 初級會計經(jīng)濟(jì)法基礎(chǔ)-初級會計《經(jīng)濟(jì)法基礎(chǔ)》??荚嚲?17
- 搞笑小品劇本《大城小事》臺詞完整版
- 《大模型原理與技術(shù)》全套教學(xué)課件
- 2023年護(hù)理人員分層培訓(xùn)、考核計劃表
- 《銷售培訓(xùn)實例》課件
- 2025年四川省新高考八省適應(yīng)性聯(lián)考模擬演練(二)地理試卷(含答案詳解)
- 【經(jīng)典文獻(xiàn)】《矛盾論》全文
- Vue3系統(tǒng)入門與項目實戰(zhàn)
- 2024年寧夏回族自治區(qū)中考英語試題含解析
- 光伏發(fā)電項目試驗檢測計劃
- 房屋建筑工程投標(biāo)方案(技術(shù)方案)
- 2025年高考語文作文備考:議論文萬能模板
評論
0/150
提交評論