基于單片機(jī)的搶答器設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的搶答器設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的搶答器設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的搶答器設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的搶答器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、xinyu university題 目二級(jí)學(xué)院專 業(yè)班級(jí)學(xué)號(hào)學(xué)生姓名指導(dǎo)教師一方案的概述1.1設(shè)計(jì)內(nèi)容1.2設(shè)計(jì)要求1.3搶答器的總體框閣.二硬件電路設(shè)計(jì)2. 1 proteus軟件介紹2. 2總電路原理2. 3吋鐘頻率電路設(shè)計(jì)2. 4復(fù)位電路設(shè)計(jì)2. 5人工復(fù)位設(shè)計(jì)2. 6顯示電路設(shè)計(jì)2. 7按鍵輸入電路設(shè)計(jì)2.7. 1獨(dú)立式鍵盤電路設(shè)計(jì) 2. 7. 2矩陣鍵盤電路設(shè)計(jì). 2. 8報(bào)警電路設(shè)計(jì)錯(cuò)誤!未定義書簽。 223錯(cuò)誤!未定義書簽。 444566788911三軟件設(shè)計(jì)123. ikeil c51 軟件簡(jiǎn)介123. 2主程序系統(tǒng)結(jié)構(gòu)123. 3程序流程閣123. 4程序設(shè)計(jì)14設(shè)計(jì)總結(jié)23

2、參考文獻(xiàn)23隱-25隨著科學(xué)技術(shù)的發(fā)展和普及,各種各樣的競(jìng)賽越來(lái)越多,其中搶答器的作 用也越來(lái)越重要。本文設(shè)計(jì)出以at89s51單片機(jī)為核心的八路搶答器,采用了 數(shù)字顯示器直接指示,g動(dòng)鎖存顯示結(jié)糶,并g動(dòng)復(fù)位的設(shè)計(jì)思想,它能根據(jù)不 同的搶答輸入信號(hào),經(jīng)過(guò)單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號(hào)相對(duì)應(yīng)的 輸出信號(hào),最后通過(guò)lro數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組的搶答吋間相差幾 微秒,也可分辨出是哪組優(yōu)先按下的按鍵,充分利用了單片機(jī)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、 功能強(qiáng)大、可靠性好、實(shí)用性強(qiáng)的特點(diǎn)。第!章方案的概述1.1設(shè)計(jì)內(nèi)容利用單片機(jī)實(shí)現(xiàn)8路智能搶答器功能。先在proteus軟件上両出系統(tǒng)的各 部分硬件電路設(shè)計(jì)

3、框閣,并且在keil軟件上完成對(duì)應(yīng)的軟件程序設(shè)計(jì),實(shí)現(xiàn)系 統(tǒng)的主要功能。硬件設(shè)計(jì)內(nèi)容主要包括:復(fù)位電路,晶振電路,矩陣鍵盤輸入,顯示模塊,報(bào)警電路部分。軟件設(shè)計(jì)內(nèi)容主要包括:鍵盤掃描,編碼顯示, 搶答選手掃描,屮斷程序控制,定吋器的使用。搶答器要求可同時(shí)供8名選手或8個(gè)代表隊(duì)參加搶答比賽。此外,設(shè)置一 個(gè)控制丌關(guān),用來(lái)控制系統(tǒng)的清零、搶答開始及定時(shí)器的預(yù)置等。搶答器具冇 數(shù)據(jù)鎖存和顯示功能。1.2設(shè)計(jì)要求(1) 搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕s0s5表o(2) 設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)s,該開關(guān)由主持人控制。(3) 搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)

4、的編號(hào),并 在wd數(shù)碼管上妞示,同時(shí)揚(yáng)聲器發(fā)出警報(bào)聲響提示。選手搶答實(shí)行優(yōu)先鎖存, 優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清零為止。(4) 搶答器具宥定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30 秒)。當(dāng)主持人啟動(dòng)“開始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫 的聲響,聲響持續(xù)吋間0.5秒左右(5) 參賽選手在設(shè)定的時(shí)問(wèn)內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,敁 示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。(6) 如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答, 定時(shí)顯示器上顯示00.1.3搶答器的總體框圖第2章硬件電路設(shè)計(jì)2. 1 proteus軟

5、件介紹proteus軟件是英w公句出版的一款eda軟件。此軟件不僅具有一般eda軟 件的仿真功能,而且能仿真單片機(jī)及其外圍電路。它是目前最好的仿真單片機(jī) 及外圍電路軟件。在進(jìn)行各種電路設(shè)計(jì)之前,必須要進(jìn)行電路原理圖的仿真,只有在軟件仿 真成功才可能在實(shí)際電路中實(shí)現(xiàn)。并且由于實(shí)驗(yàn)室器件的有限,有些電路尤法 在實(shí)際中設(shè)計(jì)出來(lái),所以我們必須要通過(guò)proteus仿真電路。proteus軟件是 世界上唯一將電路仿真、pcb設(shè)計(jì)和虛擬模型仿真三合一的設(shè)計(jì)平臺(tái),在單片 機(jī)電路設(shè)計(jì)中使用更為廣泛。42. 2總電路原理為使硬件電路設(shè)計(jì)盡可能合理,應(yīng)注意以下兒方面:(1) 盡可能采用功能強(qiáng)的芯片,以簡(jiǎn)化電路,功能

6、強(qiáng)的芯片可以代替若干 普通芯片,隨著生產(chǎn)工藝的提高,新型芯片的的價(jià)格不斷卜*降,并不一定比若 干普通芯片價(jià)格的總和高。(2) 留有設(shè)計(jì)余地。在設(shè)計(jì)硬件電路吋,要考慮到將來(lái)修改擴(kuò)展的方便。 因?yàn)楹苌儆幸诲N定音的電路設(shè)計(jì),如果現(xiàn)在不留余地,將來(lái)可能要為一點(diǎn)小小 的修改或擴(kuò)展而被迫進(jìn)行全而返工。(3) 程序空間,選用片內(nèi)程序空間足夠大的單片機(jī),木設(shè)計(jì)采用at89c51 單片機(jī)。(4) ram空間,at89s51內(nèi)部ram不多,當(dāng)要增強(qiáng)軟件數(shù)據(jù)處理功能吋, 往往覺(jué)得不足。如果系統(tǒng)配置了外部ram,則建議多留一些空問(wèn)。如選用8155 作1/0接口,就可以增強(qiáng)256字節(jié)ram.如果冇大批數(shù)據(jù)需要處理,則應(yīng)

7、配置足 夠的 ram,如 6264,62256 等。(5) t/0端口:在樣機(jī)研制出來(lái)后進(jìn)行現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問(wèn)題,而這些問(wèn)題不是靠單純的軟件措施來(lái)解決的。如宥些新的信號(hào)需要 采集,就必須培加輸入檢測(cè)端;冇些物理量需要控制,就必須培加輸出端。如 果在硬件電路設(shè)計(jì)就預(yù)留出一些i/o端口,里然當(dāng)吋空著沒(méi)用,那么用的吋候 就派上用場(chǎng)了。p2. 4為幵始搶答' p2.5為加分,p2.6為減分,p1.0-p1.7為六八搶答輸 入,數(shù)碼管段選poi,位選p2 口低3位,蜂鳴器輸出為p2. 7 口。、+5vat89c51anoan1an2an3an4an5姍an7po.op0.0/聊

8、39p0.1p0.1/c138p0.2p0.2/ad237p0.3p0.3/c336p0.4p0.4刪35p0.5p0.5/c534p0.6p0.6 靡33p0.7p0.1 湖32rst.躺eaafp31rxd/p3.0 a.e/proq30賺3.1pesh29int1?p3.3p2.7/a1528t07p3.4p2.6/a1427tw5p2.5/a1326網(wǎng) 6p2.4/a1225訓(xùn).7p2.3/a1124謝p2.2/a1023臘1p2.1/a922vssp2.0/a821vcc 405k1*2240*7if1f八路搶答器10k2.3時(shí)鐘頻率電路設(shè)計(jì)時(shí)鐘電路是計(jì)算機(jī)的心臟,它控制著計(jì)算機(jī)的工

9、作節(jié)奏。mcs-51單片機(jī)允 許的時(shí)鐘頻率是因型號(hào)而異的。品振的選擇:6mhz的晶振,其機(jī)器周期是2us。12mhz的晶振,其機(jī)器周期是lus,也就是說(shuō)在執(zhí)行同一條指令時(shí)用6mhz 的晶振所用的時(shí)問(wèn)是12mhz晶振的w倍。為了提高整個(gè)系統(tǒng)的性能我選擇了12mhz的晶振。振蕩方式的選擇:內(nèi)部振蕩方式,mcs-51內(nèi)部都宥一個(gè)反相放大器,xtal1、xtal2分別為反 相放人器輸入和輸出端,外接定時(shí)反饋元件以后就組成振蕩器,產(chǎn)生時(shí)鐘送至 單片機(jī)內(nèi)部的各個(gè)部件。這樣就構(gòu)成了內(nèi)部振蕩方式外部振蕩方式是把己有的時(shí)鐘信號(hào)引入單片機(jī)內(nèi)。這種方式適合用來(lái)使單 片機(jī)的時(shí)鐘與外部信號(hào)一致。單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)卜

10、*才能工作.在單片機(jī)內(nèi)部育一個(gè)時(shí)鐘振蕩 電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)pj部的各個(gè) 單元,決定單片機(jī)的工作速度。一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在 xtal2引腳產(chǎn)生幅度為3v左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振 的頻率確定。電路中兩個(gè)電容c1,c2的作用宥兩個(gè):一是幫助振蕩器起振;二是 對(duì)振蕩器的頻率進(jìn)行微調(diào)。c1,c2的典型值為30pf。爭(zhēng)片機(jī)在工作吋,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯 單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用 表示。如時(shí)鐘頻率為12mhz,即fosc= 12m

11、hz,則時(shí)鐘周期為1/12卯。2. 4復(fù)位電路設(shè)計(jì)在搶答器電路中,難免會(huì)出現(xiàn)操作失誤,使得程序跑偏,或者出錯(cuò),所 以需要復(fù)位電路來(lái)使得在出錯(cuò)時(shí)使電路恢復(fù)正常工作。復(fù)位電路是半片機(jī)的初始化操作,使半片機(jī)從0開始執(zhí)行程序。復(fù)位不僅 能使單片機(jī)進(jìn)入系統(tǒng)正常初始化,而且當(dāng)程序運(yùn)行出錯(cuò)或操作不當(dāng)使系統(tǒng)死鎖 時(shí),按下復(fù)位按鈕重新啟動(dòng),使單片機(jī)正常工作。復(fù)位方式宥以卜*四種:上電cj動(dòng)復(fù)位、按鍵電平復(fù)位、外部脈沖復(fù)位、 和自動(dòng)復(fù)位。即外部產(chǎn)生復(fù)位信號(hào)由單片機(jī)的9腳(rst)輸入,從而使單片機(jī) 完成復(fù)位操作。復(fù)位信號(hào)是高電平有效,有效吋間應(yīng)持續(xù)兩個(gè)機(jī)器周期以上。2.5人工復(fù)位設(shè)計(jì)除上電cj動(dòng)復(fù)位以外,常常需要

12、人工復(fù)位,將一個(gè)按鈕開關(guān)并聯(lián)于上電a 動(dòng)復(fù)位電路,按一下開關(guān)就rst端出現(xiàn)一段時(shí)間的高電平,即使器件復(fù)位。如 圖所示+5vvccrstr1 fr2lmcs-51vss2.6顯示電路設(shè)計(jì)顯示電路是最常用的輸出設(shè)備。為觀察單片機(jī)的運(yùn)行狀態(tài),往往需要顯示 器來(lái)直觀的表現(xiàn)出來(lái)。搶答器電路需要通過(guò)顯示電路,來(lái)顯示搶答選手的標(biāo)號(hào), 和倒計(jì)吋顯示。木系統(tǒng)采用四位一體共陰數(shù)碼管顯示,數(shù)碼管前兩位顯示倒計(jì) 時(shí),后兩位顯示搶答選手的標(biāo)號(hào)。<podpo/1po2po3po.4po5po6p0 7p2fip1op1.1j)12p13p25rp1espack-8cmic0000q001q102q203q304q4

13、0506q5q007q7蓋74hc573<text>u3 do001q1020203q30405q4q506q607q7u21145十zez19181716151413121q1817101513_!274hc.573<text>11fibcdefg dp£34-2.7按鍵輸入電路設(shè)計(jì)在搶答器電路屮每位選手會(huì)通過(guò)手屮的搶答按鍵來(lái)獲得優(yōu)先答題權(quán)。每位 選手的按鍵就構(gòu)成搶答器電路的鍵盤輸入。鍵盤輸入電路是單片機(jī)外圍電路中 最常見的一種電路。鍵盤宥兩種形式,編碼鍵盤和非編碼鍵盤。當(dāng)宥鍵盤被按下時(shí),通過(guò)一種 專用的硬件編碼器來(lái)識(shí)別按鍵閉合,并且確定出鍵盤編碼號(hào)碼,這種

14、鍵盤稱為 編碼鍵盤,如計(jì)算機(jī)鍵盤。而通過(guò)軟件編程方式來(lái)確定某個(gè)按鍵的閉合的鍵盤 稱為非編碼鍵盤,在單片機(jī)組成的各種系統(tǒng)中,用的比較多的是非編碼鍵盤。非編碼鍵盤又分為:獨(dú)立鍵盤和行列式鍵盤(或稱矩陣鍵盤)。對(duì)于每一個(gè)按鍵需要與單片機(jī)的i/o i相連,從而讀出鍵盤的狀態(tài)。單片 機(jī)口以通過(guò)軟件編程讀出哪個(gè)鍵按下,從而做出對(duì)應(yīng)的操作。2.7.1獨(dú)立式鍵盤電路設(shè)計(jì)獨(dú)立式鍵盤是中.片機(jī)電路中用的最多的鍵盤輸入,獨(dú)立鍵盤是由鍵盤的兩 端直接和申片機(jī)的i/o 口與接地相連。當(dāng)鍵盤按下吋,對(duì)應(yīng)端口與地相連,則直接將對(duì)放的端11變成低電平,然后做出相應(yīng)的操作。每個(gè)獨(dú)立鍵盤需要單獨(dú) 使用一根t/0線,所以當(dāng)一個(gè)電路

15、中鍵盤輸入較多時(shí)采用獨(dú)立鍵盤設(shè)計(jì)就會(huì)造 成i/o 1_1的大量浪費(fèi),從而造成i/o 口不夠用。所以,只有按鍵數(shù)量不多吋, 采用獨(dú)立鍵盤輸入。電路中的開始搶答按鍵和開始答題按鍵采用的就是獨(dú)立式 鍵盤輸入。獨(dú)立鍵盤的好處就是:每個(gè)按鍵單獨(dú)使用一根1/0線,鍵盤掃描容 易,且獨(dú)立鍵盤每個(gè)按鍵互不影響。本電路中用到的獨(dú)立鍵盤宥卜*面幾處。2221_2±22._ll_12._1a_llp2.0/a8p2.1/a9p2.2/a10p2.3/a11p2.4/a12p2.5/a13p2.6/a14p2.7/a15p3.cmrxdp3.1ftxdp3.2jnt0p3.3)lntrp3.6m)rp3.7

16、)rd"被硬件置為低電p3.4zt0 p3.5 汀 1當(dāng)按下幵始搶答按鍵時(shí)候,p2. 0門 ,控制整個(gè)電路開始,開始搶答;當(dāng)按下開始答題按鍵吋候,p2. 1被硬件置為低電平,顯示答題時(shí)問(wèn) 2.7.2矩陣鍵盤電路設(shè)計(jì)在矩陣鍵盤中,每4個(gè)鍵盤構(gòu)成一行,一共四行四列。每一行按鍵的一 端連接起來(lái),每一列按鍵的另一端連接起來(lái),總共構(gòu)成8路,所以,一個(gè)單片 機(jī)的p3 i就可以構(gòu)成16個(gè)鍵盤電路的輸入端u 了。在本次設(shè)計(jì)中,冇16個(gè)選手或代表隊(duì)參加比賽,每一個(gè)代表隊(duì)需要一 個(gè)搶答按鍵,就需要16個(gè)按鈕。在設(shè)計(jì)屮發(fā)現(xiàn),如果采用獨(dú)立鍵盤連接電路, 則需要一個(gè)端口連接一個(gè)按鍵,所以需要占用16個(gè)i/o

17、口,就會(huì)造成資源的浪 費(fèi),成本增高。所以當(dāng)冇16位選手參加搶答比賽時(shí),需要16個(gè)鍵盤,采用4x 4矩陣鍵盤只需耍8個(gè)i/o 口,從而大大減少了 i/o 口資源的浪費(fèi)。當(dāng)鍵盤個(gè) 數(shù)超過(guò)8個(gè),采用矩陣鍵盤是最為合適的。相比獨(dú)立鍵盤,矩陣鍵盤的特點(diǎn)是:電路的i/o 口需要相對(duì)較少,能有效節(jié)省i/o i資源浪費(fèi);但是硬件電路相對(duì)復(fù)雜,鍵盤掃描比獨(dú)立鍵盤掃描繁瑣, 需要獨(dú)立軟件編程,完成鍵盤掃描,從而確定那個(gè)按鍵按下,做出相應(yīng)操作, 矩陣鍵盤更適合多按鍵電路。矩陣鍵盤接好以就耍對(duì)應(yīng)的鍵盤掃描工作,判斷出那個(gè)按鍵按卜從而做 出對(duì)應(yīng)操作。當(dāng)沒(méi)冇按鍵按下的吋候所冇行線和列線是開路的。當(dāng)鍵盤上的一 個(gè)按鍵被按下

18、的吋候,該按鍵的行線和列線就會(huì)被短路。將所有的列線都置為 高電平,行線逐個(gè)置為低電平。例如當(dāng)把第一行線置為低電平,第一行有按鍵 按下時(shí)該按鍵的列線也會(huì)變成低電平,從而判斷第一行的某個(gè)按鈕被按下,以 此類推,單片機(jī)根據(jù)電平的變化從而掃描出鍵盤操作。鍵盤的掃描分為循環(huán)掃描工作方式和中斷掃描工作方式。循環(huán)掃描工作方式,是在單片機(jī)工作的過(guò)程屮調(diào)用鍵盤掃描子程序來(lái)響應(yīng)按鍵輸入。此種掃描方式缺點(diǎn)是,不管鍵盤有無(wú)按下,單片機(jī)都會(huì)掃描鍵盤, 然而在工作的過(guò)程屮不需要按鍵按下,此時(shí)系統(tǒng)處于空掃描狀態(tài)。為了提高單 片機(jī)的工作效率,采用中斷掃描,即只宥按鍵按y時(shí),才發(fā)送中斷屮請(qǐng),進(jìn)行 鍵盤掃描。木次設(shè)計(jì)采用了循環(huán)掃

19、描的工作方式。按鍵在按下的過(guò)程中有可能會(huì)產(chǎn)生抖動(dòng),此時(shí)邏輯電平是不穩(wěn)定,所以在鍵盤掃描過(guò)程中,一定要在軟件設(shè)計(jì)過(guò)程加入去抖部分。在本次設(shè)計(jì)中,我們 通過(guò)在軟件編程過(guò)程中,對(duì)按鍵掃描進(jìn)行延吋的方法中來(lái)去除抖動(dòng)。在按下按 鍵并處理完相應(yīng)操作吋,可以在軟件編程屮增加鍵盤釋放的程序。2.8報(bào)警電路設(shè)計(jì)在搶答器系統(tǒng)里,當(dāng)搶答時(shí)間快要結(jié)束時(shí)或者答題時(shí)間快耍結(jié)束時(shí),需耍 一個(gè)報(bào)警電路來(lái)提示搶答選手,所以在本次設(shè)計(jì)中添加了報(bào)警電路部分。當(dāng)答 題吋間和搶答吋間小于5秒后,則會(huì)啟動(dòng)報(bào)瞥電路第3章軟件設(shè)計(jì)3. 1 keil c51軟件簡(jiǎn)介在硬件設(shè)計(jì)完畢石,就要通過(guò)軟件編程,將設(shè)計(jì)的功能逐一實(shí)現(xiàn)。寫單片 機(jī)軟件語(yǔ)言時(shí)

20、,我們吋以采用匯編語(yǔ)言和c語(yǔ)言來(lái)完成,二者殊途同歸。匯編 語(yǔ)言是機(jī)器語(yǔ)言,而c語(yǔ)言是屮級(jí)語(yǔ)言。匯編語(yǔ)言的特點(diǎn)是執(zhí)行效率高,對(duì)爭(zhēng) 片機(jī)中的寄存器直接操作,但是開發(fā)周期長(zhǎng),移植性不強(qiáng)。c語(yǔ)言具有使用范 圍廣,可移植性強(qiáng),幵發(fā)周期短,但是執(zhí)行效率較匯編語(yǔ)言低。在本系統(tǒng)的軟件開發(fā)中,我們采用c語(yǔ)言在keil軟件上來(lái)完成軟什編程。3.2主程序系統(tǒng)結(jié)構(gòu)軟件設(shè)計(jì)分為以下五個(gè)部分:主程序設(shè)計(jì),開始鍵掃描子程序,搶答鍵盤 掃描子程序,顯示程序,定時(shí)器屮斷。3. 3程序流程圖任何一個(gè)c語(yǔ)言程序,都先從主程序開始執(zhí)行,從主程序執(zhí)行開始鍵掃描程序,若幵始鍵按卜則觸發(fā)定時(shí)器中斷1,并掃描鍵盤,若宥搶答選手按下 按鍵,則

21、顯示剩余答題吋間,并顯示鎖存搶答選手號(hào)碼,并且伴隨提示音。此 外,當(dāng)有選手按下后,就要封鎖電路,禁止其他選手搶答。若無(wú)選手搶答,則 倒計(jì)時(shí),當(dāng)剩余五秒時(shí),觸發(fā)報(bào)警程序,即定時(shí)器中斷2。當(dāng)主持人按下開始 鍵,活著復(fù)位鍵時(shí),復(fù)位電路。重新開始電路。3.4程序設(shè)計(jì)ok equ 20h;搶答開始標(biāo)志位ring equ 22h;響鈴標(biāo)志位 org 0000hajmp main org 0003h ajmp tntosub org ooobh ajmp toint org 001311 ajmp intisub org 001bh ajmp t1int org 0040hmain:mov rl, #30;

22、初設(shè)搶答時(shí)間為30smov r2, #60;初設(shè)答題吋間為60s mov tmod,#11h;設(shè)置未定時(shí)器/模式1 mov tho, #oeohmov tlo,#op下h;越高發(fā)聲頻率越高,越尖 mov th1,#3chmov tll,#0b0h;50ms為一次溢出中斷 setb easetb etosetb et1setb exosetb ex 1;允許四個(gè)中斷,t0/t1/int0/int1 clr okclr ringsetb trisetb tro; 開始就運(yùn)行定吋器,以開始顯示fff.如果想重新計(jì)數(shù),重s th1/tl1就可以了;=查詢程序=start:mov r5,#obhmov

23、r4,#obh mov r3,#obhacall display;未開始搶答時(shí)候顯示fffjb p3. 0, next;ddddddd acall delayjb p3. 0, next;去抖動(dòng),如果"開始鍵"按下就14下執(zhí)行,否者跳到非法搶答杏詢 acall bark;按鍵發(fā)聲 mov a, r1mov r6,a;送r1->r6,因?yàn)閞1中保存了搶答時(shí)間setb 0k;搶答標(biāo)志位,用于count以程序中判斷是否杏詢搶答 mov r7,#01h :讀搶答鍵數(shù)據(jù)信號(hào)標(biāo)志,這里表示只讀一次有用信號(hào) mov r3,#0ah;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)ajmp count;進(jìn)入倒

24、計(jì)吋程序,"查詢有效搶答的程序"在count里面 next:jnb p1.o,false1jnb pl. 1, false2 jnb pl. 2, false3 jnb pl. 3, false4 jnb pl. 4, false5 jnb pl. 5, false6 jnb pl. 6, false7 jnb p1.7,false8 ajmp start;=非法搶答處理程序=false1: mov r3,#01h ajmp errorfalsr2: mov r3,#02h ajmp errorfalse3: mov r3, #03h ajmp errorfalse4: m

25、ov r3,#04h ajmp errorfalse5: mov r3, #05h ajmp errorfalse6: mov r3,#06h ajmp errorfalse7: mov r3, #07h ajmp errorfalse8: mov r3,#08h ajmp error;=into(搶答時(shí)間r1調(diào)整程序)=intosub:mov a,r1mov b,#oahdiv ab mov r5, a mov r4,b mov r3,#oahacall display;先在兩個(gè)時(shí)間led上顯示r1 jnb p3. 4, inco;p3. 4 為+ls 鍵,如按下跳到 inco jnb p3

26、. 5, deco;p3. 5 為-is 鍵,如按下跳到 deco jnb p3. 1, back0;p3. 1為確定鍵,如按下跳到backoajmp intosubinco:mov a, r1cjne八,#6州,八000;如果不楚99,卩2加1,如果加到99, r1就置0,重新加起。 mov r1,#ooh acall delay1ajmp intosubaddo:inc r1acall delay1 ajmp intosubdeco:mov a,r1jz setr1;如果 r1 為 0, r1 就置 99,dec r1acall delay1 ajmp intosubsetr1: mov

27、r1,#63ii acall delay1 ajmp intosubbacko: reti;=int1 (回答時(shí)間r2調(diào)整程序)=intisub:mov a, r2 mov b,#oahdiv abmov r5, a mov r4,b mov r3,#oah acall displayjnb p3. 4, inci jnb p3. 5, deci jnb p3. 1,back1 ajmp intisubinci:mov a, r2cjne a, #6311, add1mov r2,#ooh acall delay1ajmp intisubadd1:inc r2acall delay1 ajmp

28、 int1subdeci:mov a, r2jz setr2 dec r2 acall delay1 ajmp intisubsetr2: mov r2, #6311 acall delay1 ajmp int1subback1: reti;=倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)=repeat:mov a, r2;使用錦囊時(shí)重新計(jì)吋mov r6, a clr ringcount: mov ro, #0011;重置定時(shí)器屮斷次數(shù) mov th1,#3chmov tl1,即boh;重置定時(shí)器recount:mov a, r6;r6保存y倒計(jì)吋的吋間,之前先將搶答吋間或冋答吋間給r6 m

29、ov b,#0ahdiv ab;除十分出個(gè)位/十位 mov 30h,a;十位存于(30h)mov 31h,b;個(gè)位存于(31h)mov r5,30h;取十位 mov r4, 31h;取個(gè)位 mov a, r6subb a, #07hjnc larger;大于5s跳到larger,小于等于5s會(huì)提醒 mov a, rocjne a, #oah, full; is 中 0. 5s 向下運(yùn)行 clr ring ajmp checkfull:cjne a, #1411, check; k面是is的情況,響并顯示號(hào)數(shù)并淸ro,重新計(jì)setb ringmov a, r6 jz quit;計(jì)時(shí)完畢 mov

30、ro, #0011 dec r6;秒標(biāo)志減1 ajmp checklarger: mov a, rocjne a,#14h,check;如果is向下運(yùn)行,否者跳到查停/顯示dec r6;計(jì)時(shí)一秒r6自動(dòng)減1 mov ro,#00hcheck: jnb p3. 1,quit;如按下停止鍵退出jnb ok, checkk;只在回答倒計(jì)吋才有效ajmp nexttcheckk: jnb p3. 0, repeat;判斷是否使用錦囊nextt: acall displayjb ok, accout;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過(guò)査詢繼續(xù)倒數(shù)(這里起到 鎖搶答作用)ajmp recounta

31、ccout:mov a, 36h jnb acc. 0, true1 jnb acc.1,true2 jnb acc. 2, true3 jnb acc. 3, true4 jnb acc. 4, trues jnb acc.5, true6 jnb acc. 6,tz1 jnb acc. 7, tz2 ajmp recounttz1:jmp true7 tz2:jmp true8quit: clr ok;如果按下了"停止鍵"執(zhí)行的程序 clr ring ajmp start;=正常搶答處理程序=true1: acall bark mov a, r2mov r6, a;搶答

32、時(shí)間r2送r6 mov r3,#01hclr ok;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶荇 ajmp counttrue2:acall bark mov a, r2mov r6, a mov r3, #0211 clr ok ajmp counttrue3:acall bark mov a, r2mov r6, a mov r3, #03h clr ok ajmp counttrue4:acall bark mov a, r2mov r6, a mov r3, #0411 clr ok ajmp counttrue5:acall bark mov a, r2mov r6, a mov r3

33、, #05h clr ok ajmp counttrue6: acall bark mov a, r2mov r6, amov r3, #06h clr ok ajmp counttrue7:acall bark mov a, r2mov r6, a mov r3,#07h clr ok ajmp counttrue8:acall bark mov a, r2mov r6, a mov r3, #08h clr ok ajmp count;=犯規(guī)搶答程序=error: mov ro,#ooh mov th1, #3ch mov tl1,#obohmov 34h, r3;犯規(guī)號(hào)數(shù)鋝存與(34h)

34、here:mov a,rocjne a, #06h, flash;0.3s向下運(yùn)行-滅并停響 clr ring mov r3, #oah mov r4, #oahmov r5,#0ah;三燈全滅 ajmp check1flash: cjne a, #och, check 1;下面是0. 8s的情況,響并顯示號(hào)數(shù)并淸ro,重新計(jì) setb ring mov ro,#00hmov r3,34h;取回號(hào)數(shù) mov r5, #obhmov r4, #0bh;顯示ff和號(hào)數(shù) ajmp check1check 1: jnb p3. 1,quit1 acall displayajmp herequit1:

35、clr ringclr ok ajmp start;=顯示程序=display:mov dptr, #dat1;查表敁示程序,利用po 口做段選碼門輸hi/p2低三位做位選碼輸 出,mov a, r3 movc a, a+dptrmov p2, #ofeh mov po, a acall delay2 mov dptr, #dat2 mov a, r5 movc a, a+dptr mov p2, #ofdh mov po, a acall delay2 mov a, r4 movc a, a+dptr mov p2,#ofbh mov po, a acall delay2retdat1:db

36、 ooh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, ooh, 71hdat2:db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, ooh, 71h ;第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄火 ;=加減時(shí)1x1延時(shí)(起到不會(huì)按十*就加n個(gè)數(shù))=delay1: mov 35h, #08hloopo: acall display djnz 35h, loopo ret;=延吋4236個(gè)機(jī)器周期(去抖動(dòng)用到)=delay: mov 32ii,#12hloop:mov 33h, #oafhloop1: djnz 33h, loop1 djnz 32h, loopret;=延吋4236個(gè)機(jī)器周期(顯示用到)=delay2: mov 32h,#43hloop3:mov 33h,#1ehmov a, r7;每隔6(t70個(gè)機(jī)器周期讀一次pl 口,全為1吋為無(wú)效數(shù)據(jù),繼續(xù)讀,奮一個(gè)不為1吋,轉(zhuǎn)到正常搶答處理jnz aaaa1;沒(méi)讀到有效數(shù)據(jù)時(shí)繼續(xù)轉(zhuǎn)到aaaa1l00p2: djnz 33h, l00p2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論