版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p> 課程名稱 單片機(jī)原理與應(yīng)用 </p><p> 課題名稱 電子搶答器的設(shè)計(jì) </p><p> 2013年 7 月 5 日</p><p><b> 目錄</b></p
2、><p> 第1章 課題概述…………………………………………………………6</p><p> 1.1 課題的設(shè)計(jì)要求…………………………………………………6</p><p> 1.2 課程設(shè)計(jì)的目的和意義…………………………………………6</p><p> 第2章 總體設(shè)計(jì)方案……………………………………………………7</p
3、><p> 2.1 總體思路…………………………………………………………7</p><p> 2.3 總體設(shè)計(jì)框圖……………………………………………………7</p><p> 2.4 系統(tǒng)工作原理……………………………………………………8</p><p> 第3章 系統(tǒng)的硬件設(shè)計(jì)…………………………………………………9</p
4、><p> 3.1 單片機(jī)的選擇……………………………………………………9</p><p> 3.2 LED顯示器………………………………………………………10</p><p> 3.3 時(shí)鐘電路設(shè)計(jì)……………………………………………………11</p><p> 3.4 復(fù)位電路設(shè)計(jì)……………………………………………………12&l
5、t;/p><p> 第4章 系統(tǒng)軟件設(shè)計(jì)……………………………………………………13</p><p> 4.1 系統(tǒng)軟件設(shè)計(jì)方案………………………………………………13</p><p> 4.2 系統(tǒng)應(yīng)用程序設(shè)計(jì)………………………………………………13</p><p> 4.2.1 主程序設(shè)計(jì)…………………………………………………
6、…13</p><p> 4.2.2 1秒定時(shí)子程序設(shè)計(jì)…………………………………………14</p><p> 4.2.3 中斷服務(wù)程序…………………………………………………15</p><p> 4.2.4 字形碼的定義…………………………………………………16</p><p> 第5章 仿真與調(diào)試…………………………………
7、……………………17</p><p> 第6章 總結(jié)與體會(huì)………………………………………………………20</p><p> 第7章 參考文獻(xiàn)…………………………………………………………21</p><p> 第8章 附錄………………………………………………………………22</p><p> 8.1 總機(jī)硬件設(shè)計(jì)原理圖……………
8、………………………………22</p><p> 8.2 源程序清單………………………………………………………23</p><p><b> 第1章 課題概述</b></p><p> 1.1 課題的設(shè)計(jì)要求</p><p> 以單片機(jī)為核心,設(shè)計(jì)一個(gè)8位競(jìng)賽搶答器:同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按
9、鈕S0~S7表示。</p><p> 設(shè)置一個(gè)系統(tǒng)清除和搶答控制開(kāi)關(guān)S,開(kāi)關(guān)由主持人控制。搶答器具有鎖存與顯示功能。即選手按按鈕,鎖存相應(yīng)的編號(hào),并在優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動(dòng)“開(kāi)始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間為0.5s左右。</p><p> 參
10、賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。</p><p> 1.2 課題的設(shè)計(jì)目的和意義</p><p> 在許多比賽活動(dòng)中,為了準(zhǔn)確、公正、直觀地判斷出第一搶答者,通常設(shè)置一臺(tái)搶答器,通過(guò)數(shù)顯、燈光及音響等多種手段指示出
11、第一搶答者。該系統(tǒng)設(shè)計(jì)就是針對(duì)上述各種要求設(shè)計(jì)出的供8名選手參賽使用的電子搶答器。而且可以通過(guò)本次的課程設(shè)計(jì)我們可以學(xué)到關(guān)于單片機(jī)在實(shí)際生活中的設(shè)計(jì)應(yīng)用,也可以深入地學(xué)習(xí)到單片機(jī)的編程。</p><p> 第2章 總體設(shè)計(jì)方案</p><p><b> 2.1 總體思路</b></p><p> 該電路的根本任務(wù)是準(zhǔn)確的判斷出第一搶答者
12、的信號(hào)和搶答的剩余時(shí)間并將其鎖存。而目前使用的小型搶答器基本上采用小規(guī)模數(shù)字集成電路設(shè)計(jì),其功能比較單一,使用起來(lái)也不夠理想。但在各種知識(shí)、智力競(jìng)賽中,電子搶答器又是必不可少的設(shè)備之一。因此研制開(kāi)發(fā)一個(gè)更先進(jìn)、更實(shí)用的電子搶答器顯得很重要。本次的課程設(shè)計(jì)就是為此而做。因此選用單片機(jī)技術(shù)為核心的設(shè)計(jì)方法設(shè)計(jì)一款數(shù)字搶答器,其技術(shù)、功能等方面都能滿足現(xiàn)行的各種知識(shí)、智力競(jìng)賽的要求。</p><p> 2.2 總體設(shè)
13、計(jì)框圖</p><p> 圖2.1 總體設(shè)計(jì)框圖</p><p> 2.3 系統(tǒng)工作原理</p><p> 系統(tǒng)主要以單片機(jī)為核心,設(shè)計(jì)了開(kāi)始、復(fù)位功能模塊,搶答功能模塊,倒計(jì)時(shí)顯示模塊和系統(tǒng)報(bào)警模塊。八名選手,意味著是八路輸入的數(shù)字搶答器。用AT89C51的單片機(jī)的P1口連接系統(tǒng)八位選手的搶答開(kāi)關(guān),而控制輸入信號(hào)從P3口輸入,分別都是外接了上拉電阻的按鈕構(gòu)成
14、。蜂鳴器只需要接到P3.2上,通過(guò)其電平輸出驅(qū)動(dòng)蜂鳴器發(fā)聲,達(dá)到報(bào)警的效果。</p><p> 工作原理軟件的實(shí)現(xiàn)通過(guò)對(duì)各個(gè)按鈕的掃描,實(shí)現(xiàn)搶答的功能,由于掃描時(shí)間相當(dāng)小,所以可以很精確得判斷出那一位選手最先搶答成功和準(zhǔn)確地判斷出那一位選手搶答失敗而導(dǎo)致犯規(guī),并顯示。在倒計(jì)時(shí)顯示中,我使用了單片機(jī)的串行通信,到事先存好的字形碼傳送到顯示上來(lái),用的是查表方式。倒計(jì)時(shí)還要一個(gè)秒單位的脈沖計(jì)時(shí),系統(tǒng)使用了單片機(jī)內(nèi)部硬
15、件定時(shí)器,實(shí)現(xiàn)延時(shí)一秒的功能,使得倒計(jì)時(shí)以秒為單位準(zhǔn)確地計(jì)時(shí)。</p><p> 第3章 系統(tǒng)硬件設(shè)計(jì)</p><p> 3.1 單片機(jī)的選擇</p><p> AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機(jī)。AT89C51芯片不僅包括CPU、RAM、ROM、定時(shí)器、串行口、I/O接口等主要功能部件之外,還有驅(qū)動(dòng)器、鎖存器、指令寄存
16、器、地址寄存器等輔助部分。CPU是單片機(jī)最核心的部分,是單片機(jī)的大腦和心臟,主要完成運(yùn)算和控制功能。RAM用于存放變化的數(shù)據(jù),其地址空間為256個(gè)RAM單元,但其中能作為數(shù)據(jù)存儲(chǔ)器供用戶使用的僅有前面128個(gè),后128個(gè)被專用寄存器占用。ROM用于存放程序和固定不變的常數(shù)等等。通常采用只讀存儲(chǔ)器,且其有多種類型,在89系列單片機(jī)中全部采用閃存、定時(shí)/計(jì)數(shù)器用于實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能。AT89C51共有四個(gè)8位的并行I/O口,每個(gè)口都有一個(gè)鎖
17、存器和1個(gè)驅(qū)動(dòng)器組成。并行I/O口主要用于實(shí)現(xiàn)與外部設(shè)備中數(shù)據(jù)的并航輸入輸出,有些I/O口還有其他功能。AT89C51有1個(gè)UART全雙工異步串行口,用于實(shí)現(xiàn)單片機(jī)和其他具有相應(yīng)接口的設(shè)備之間的異步串行數(shù)據(jù)傳送。AT89C51采用40Pin封裝的雙列直接DIP結(jié)構(gòu)。40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與</p><p> 圖3.1 AT89C51<
18、;/p><p> 3.2 LED顯示器</p><p> LED顯示器是由發(fā)光二極管顯示字段的顯示器件。由圖可知它由8個(gè)發(fā)光二極管構(gòu)成,通過(guò)不同的組合可用來(lái)顯示0~9、A~F及小數(shù)點(diǎn)“.”等字符。圖中DP表示小數(shù)點(diǎn),COM表示公共端。數(shù)碼管通常有共陰極和共陽(yáng)極兩種型號(hào)。共陰數(shù)管的發(fā)光二極管陰極必須接低電平,當(dāng)某一發(fā)光二極管的陽(yáng)極連到高電平時(shí),此發(fā)光二極管點(diǎn)亮;共陽(yáng)極數(shù)碼管的發(fā)光二極管是陽(yáng)
19、極并接到高電平,須點(diǎn)亮的發(fā)光二極管陰極接低電平即可。顯然,要顯示某字形就應(yīng)使此字形的相應(yīng)字段點(diǎn)亮,實(shí)際就是送一個(gè)用不同電平組合代表的數(shù)據(jù)到數(shù)碼管。</p><p> LED顯示器的驅(qū)動(dòng)是一個(gè)非常重要得問(wèn)題,顯示電路由LED顯示器、段驅(qū)動(dòng)電路和位驅(qū)動(dòng)電路組成。由于單片機(jī)的并行口不能直接驅(qū)動(dòng)LED顯示器,所以必須采用專用的驅(qū)動(dòng)電路芯片,使之產(chǎn)生足夠大的電流,顯示器才能正常工作。如果驅(qū)動(dòng)電路能力差,即負(fù)載能力不夠,顯
20、示器亮度不夠,而且驅(qū)動(dòng)電路長(zhǎng)期在超負(fù)荷下工作容易損壞。LED顯示器顯示控制方式有兩種:靜態(tài)和動(dòng)態(tài)。本設(shè)計(jì)方案選擇的是動(dòng)態(tài)控制方式。由于一位數(shù)據(jù)的顯示是由段碼和位碼信號(hào)共同配合完成的,因此,要同時(shí)考慮段和位的驅(qū)動(dòng)能力,而且段的驅(qū)動(dòng)能力決定位的驅(qū)動(dòng)能力。</p><p> 圖3.2 顯示器共陽(yáng)極與共陰極</p><p> 3.3 時(shí)鐘電路的設(shè)計(jì)</p><p>
21、單片機(jī)工作的時(shí)間基準(zhǔn)是由時(shí)鐘電路提供的。在單片機(jī)的XTAL1和XTAL2兩個(gè)管腳,接一只晶振及兩只電容就構(gòu)成了單片機(jī)的時(shí)鐘電路。電路中,電容器C1和C2對(duì)振蕩頻率有微調(diào)作用,通常?。?0±10)pF。石英晶體選擇12MHz。如圖3.3</p><p> 圖3.3 時(shí)鐘電路設(shè)計(jì)原理圖</p><p> 3.4 復(fù)位電路的設(shè)計(jì)</p><p> 單片機(jī)的
22、RST管腳為主機(jī)提供了一個(gè)外部復(fù)位信號(hào)輸入端口。復(fù)位信號(hào)是高電平有效,高電平有效的持續(xù)時(shí)間為2個(gè)機(jī)器周期以上。單片機(jī)的復(fù)位方式由上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種。電阻電容器件的參考值R=1K歐、C3=10uF。如圖3.4</p><p> 圖3.4 復(fù)位電路設(shè)計(jì)</p><p> 第4章 系統(tǒng)軟件設(shè)計(jì)</p><p> 4.1 系統(tǒng)軟件設(shè)計(jì)方案</p>
23、<p> 系統(tǒng)軟件設(shè)計(jì)方案的確定可以把系統(tǒng)軟件按照其功能分為6的模塊,每個(gè)獨(dú)立的模塊在通過(guò)聯(lián)系程序聯(lián)系成一個(gè)完整的系統(tǒng)程序。</p><p> 系統(tǒng)的6的功能模塊分別是:</p><p><b> ?。?)主程序模塊</b></p><p> ?。?)數(shù)碼管顯示模塊</p><p> (3)按鍵掃描輸
24、入模塊</p><p> (4)1秒的定時(shí)硬中斷模塊</p><p> ?。?)LED燈輸出顯示模塊</p><p> ?。?)蜂鳴器報(bào)警輸出模塊</p><p> 圖4.1 電子搶答器軟件設(shè)計(jì)模塊</p><p> 4.2 系統(tǒng)應(yīng)用程序設(shè)計(jì)</p><p> 4. 2. 1 主程序的設(shè)
25、計(jì)</p><p> AT89C-51系列單片機(jī)復(fù)位后,系統(tǒng)一啟動(dòng),就顯示00,這就是系統(tǒng)的初始狀態(tài)。此時(shí)等待復(fù)位鍵的輸入信號(hào),一直處于掃描P3.1的輸入電平。然后等待開(kāi)始信號(hào)的輸入,同時(shí)掃描所有選手的輸入信號(hào),檢查是否發(fā)生犯規(guī)。若開(kāi)始鍵按下,則進(jìn)行搶答過(guò)程,主要是掃描各選手的輸入信號(hào)。先產(chǎn)生輸入信號(hào)的選手搶答成功,轉(zhuǎn)到顯示模塊。主程序流程圖如圖4.2</p><p> 圖4.2 主程
26、序流程圖</p><p> 4. 2. 2 1秒定時(shí)子程序的設(shè)計(jì)</p><p> 1S定時(shí)有硬件定時(shí)和軟件定時(shí)兩種,由于軟件定時(shí)浪費(fèi)CPU的資源,在很多的地方都不才用。相比之下,硬件定時(shí)他不浪費(fèi)CPU資源,且定時(shí)準(zhǔn)確,使用方便,因此得到了廣泛的使用。</p><p> 由于定時(shí)器定時(shí)初值較小,所以需擴(kuò)展定時(shí)時(shí)間。使用寄存器R2,設(shè)定R2=20,通過(guò)20個(gè)5
27、0ms為1S的方法來(lái)實(shí)現(xiàn)定時(shí)。圖4.3是硬件定時(shí)的使用流程圖。</p><p> 本系統(tǒng)要顯示倒計(jì)時(shí)間,所以在1S定時(shí)子程序的中斷服務(wù)程序中加如了修改倒計(jì)值的指令,從而實(shí)現(xiàn)計(jì)數(shù)的變化。</p><p> 圖4.3 1秒定時(shí)程序流程圖</p><p> 4.2.3 中斷服務(wù)程序</p><p> 圖4.4 中斷服務(wù)程序流程圖</
28、p><p> 4. 2. 4 字形碼的定義</p><p> 由于系統(tǒng)LED顯示器使用的是共陰極的顯示器,而顯示器不能直接識(shí)別十進(jìn)制和別的進(jìn)制,他這樣根據(jù)給定的字行碼進(jìn)行顯示,有了十進(jìn)制對(duì)應(yīng)的字行碼,就能實(shí)現(xiàn)十進(jìn)制數(shù)通過(guò)編譯然后在LED顯示器上顯示,準(zhǔn)確無(wú)誤。字行碼程序清單如下:</p><p> ORG 10000H</p><p>&
29、lt;b> TAB:</b></p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,1FH </p><p> DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H</p>
30、;<p> 第5章 仿真與調(diào)試</p><p> 1、主持人按下?lián)尨痖_(kāi)始鍵之前,搶答選手若按下?lián)尨疰I,視為違規(guī),顯示其號(hào)碼,同時(shí)報(bào)警,仿真電路如圖5.1:</p><p> 圖5.1 顯示違規(guī)組號(hào)</p><p> 2、當(dāng)主持人按下?lián)尨痖_(kāi)始鍵后,進(jìn)入30秒搶答倒計(jì)時(shí),顯示仿真電路如圖5.2:</p><p> 圖5.
31、2 開(kāi)始搶答并倒計(jì)時(shí)</p><p> 3、主持人按下?lián)尨痖_(kāi)始鍵,若有選手進(jìn)行搶答,顯示其號(hào)碼和剩余槍彈時(shí)間,顯示仿真電路如圖5.3:</p><p> 圖5.3 顯示搶答選手號(hào)碼和搶答剩余時(shí)間</p><p> 4、主持人可以調(diào)整搶答時(shí)間,仿真電路如圖5.4:</p><p> 圖5.4 調(diào)整搶答時(shí)間</p><
32、p> 第6章 總結(jié)與體會(huì)</p><p> 經(jīng)過(guò)將近二周的單片機(jī)課程設(shè)計(jì),終于完成了八路搶答器的設(shè)計(jì),其中有著許多苦悶也有著許多實(shí)驗(yàn)成功的喜悅。我們的課題并不是很難,在圖書(shū)管里也有很多資料可查。平時(shí)的學(xué)習(xí)只是理論性的,很難理解,而且很難知道自己有沒(méi)有掌握。在兩周的時(shí)間里充分的把學(xué)過(guò)的東西拿來(lái)回味,拿來(lái)用。不但了解了那些已經(jīng)掌握,那些還不知道在設(shè)計(jì)的同時(shí)復(fù)習(xí)了掌握的知識(shí),還在此基礎(chǔ)上把知識(shí)擴(kuò)開(kāi)學(xué)到了更廣
33、的內(nèi)容。同時(shí)還學(xué)習(xí)掌握了以前沒(méi)學(xué)好的知識(shí)?,F(xiàn)在我感受到課程設(shè)計(jì)的收獲是很大的,它不但使我對(duì)單片機(jī)的知識(shí)有了一個(gè)整體的認(rèn)識(shí),使知識(shí)形成了一個(gè)連貫的體系,原來(lái)在課堂上學(xué)到的原理知識(shí),感覺(jué)空洞了些,但是在這里實(shí)踐了兩周之后才發(fā)現(xiàn),原來(lái)這些器件還可以實(shí)現(xiàn)這么多的功能。而且隨著課程設(shè)計(jì)的深入,我們對(duì)單片機(jī)及其擴(kuò)展有了更深刻的認(rèn)識(shí)。</p><p> 雖然在設(shè)計(jì)過(guò)程中我遇到了很多困難,但還是收獲良多。設(shè)計(jì)不僅是對(duì)前面所學(xué)知
34、識(shí)的一種檢驗(yàn),而且也是對(duì)自己能力的一種提高。在設(shè)計(jì)的過(guò)程中,遇到了很多的問(wèn)題,有一些知識(shí)都已經(jīng)不太清楚了,但是通過(guò)一些資料又重新的溫習(xí)了一下數(shù)字電路部分的內(nèi)容。在這次設(shè)計(jì)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽(tīng)聽(tīng)不同的看法我們更好的理解知識(shí),所以在這里非常感謝幫助我的同學(xué)。</p><p> 在此要感謝我的指導(dǎo)老師,感謝老師給我這樣的機(jī)會(huì)鍛煉。在整個(gè)設(shè)計(jì)過(guò)程中我懂得了許多
35、東西,也培養(yǎng)了我獨(dú)立工作的能力,樹(shù)立了對(duì)自己工作能力的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動(dòng)手的能力,使我充分體會(huì)到了在創(chuàng)造過(guò)程中的探索的艱難和成功的喜悅。雖然這個(gè)項(xiàng)目還不是很完善,但是在設(shè)計(jì)過(guò)程中所學(xué)到的東西是這次設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。我也將繼續(xù)努力,不斷完善和充實(shí)自己。</p><p><b> 第7章 參考文獻(xiàn)</b></p>
36、<p> 1、王迎旭.單片機(jī)原理及及應(yīng)用.北京:機(jī)械工業(yè)出版社,2012.</p><p> 2、李建忠.單片機(jī)原理及應(yīng)用. 西安:西安電子科技大學(xué)出版社,2002</p><p> 3、高峰.單片微型計(jì)算機(jī)原理與接口技術(shù).北京:電子工業(yè)出版社,2003.</p><p> 4、鄒逢興.單片機(jī)應(yīng)用新技術(shù)教程.北京: 高等教育出版社,2008<
37、;/p><p> 5、朱宇光.16位微型計(jì)算機(jī)原理接口及其應(yīng)用.北京: 電子工業(yè)出版社, </p><p> 6、陳海宴主編. 51單片機(jī)原理及應(yīng)用—基于Keil C 與Proteus. 北京:北京航空航天大學(xué)出版社,2010.</p><p><b> 第8章 附錄</b></p><p> 8.1 總機(jī)硬件設(shè)計(jì)
38、原理圖</p><p> 圖8.1 總機(jī)硬件設(shè)計(jì)原理圖</p><p><b> 8.2 源程序清單</b></p><p> OK EQU 20H ;搶答開(kāi)始標(biāo)志位</p><p> RING EQU 22H ;響鈴標(biāo)志位</p><p> DATOA EQ
39、U 36H ;搶答按鍵口數(shù)據(jù)存放地址</p><p><b> ORG 0000H</b></p><p><b> AJMP MAIN</b></p><p><b> ORG 0003H</b></p><p> AJMP INT0SUB</p>
40、;<p><b> ORG 000BH</b></p><p> AJMP T0INT</p><p><b> ORG 0013H</b></p><p><b> ORG 001BH</b></p><p> AJMP T1INT</p>
41、<p><b> ORG 0040H</b></p><p> MAIN: MOV R1,#30 ;初設(shè)搶答時(shí)間為30s</p><p> MOV TMOD,#11H ;設(shè)置未定時(shí)器/模式1</p><p> MOV TH0,#0F0H</p><p> MOV TL0,#0
42、FFH ;越高發(fā)聲頻率越高,越尖</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b> SETB EA</b></p><p><b> SETB ET0</b></p>&
43、lt;p><b> SETB ET1</b></p><p><b> SETB EX0</b></p><p> SETB EX1 ;允許四個(gè)中斷,T0/T1/INT0/INT1</p><p><b> CLR OK</b></p><p&g
44、t;<b> CLR RING</b></p><p><b> SETB TR1</b></p><p> SETB TR0 </p><p> START: MOV DATOA,#0FFH ;查詢程序 </p>
45、<p> MOV R5,#00H</p><p> MOV R4,#00H</p><p> MOV R3,#00H</p><p> ACALL DISPLAY </p><p> JNB P3.3 ,INT0SUB</p><p> JNB P3.4,TZ1
46、 ;倒計(jì)時(shí)調(diào)整</p><p> JB P3.0,NEXT </p><p> ACALL DELAY</p><p> JB P3.0,NEXT ;去抖動(dòng),如果"開(kāi)始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢</p><p> SETB EX0
47、 ;開(kāi)放INT0 </p><p> ACALL BARK ;按鍵發(fā)聲</p><p><b> MOV A,R1</b></p><p> MOV R6,A ;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間</p><p> SETB OK </p&g
48、t;<p> MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p> AJMP COUNT ;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在COUNT里面</p><p> NEXT: JNB P1.0,FALSE1</p><p> JNB P1.1,FALSE2</p>&
49、lt;p> JNB P1.2,FALSE3</p><p> JNB P1.3,FALSE4</p><p> JNB P1.4,FALSE5</p><p> JNB P1.5,FALSE6</p><p> JNB P1.6,TZ1</p><p> JNB P1.7,TZ2</p>
50、<p> AJMP START</p><p> TZ1: JMP FALSE7</p><p> TZ2: JMP FALSE8</p><p><b> ;非法搶答處理程序</b></p><p> FALSE1: ACALL BARK ;按鍵發(fā)聲<
51、/p><p> MOV R3,#01H</p><p> AJMP ERROR</p><p> FALSE2: ACALL BARK</p><p> MOV R3,#02H</p><p> AJMP ERROR</p><p> FALSE3: ACALL BARK</p&g
52、t;<p> MOV R3,#03H</p><p> AJMP ERROR</p><p> FALSE4: ACALL BARK</p><p> MOV R3,#04H</p><p> AJMP ERROR</p><p> FALSE5: ACALL BARK</p>
53、<p> MOV R3,#05H</p><p> AJMP ERROR</p><p> FALSE6: ACALL BARK</p><p> MOV R3,#06H</p><p> AJMP ERROR</p><p> FALSE7: ACALL BARK</p><
54、p> MOV R3,#07H</p><p> AJMP ERROR</p><p> FALSE8: ACALL BARK</p><p> MOV R3,#08H</p><p> AJMP ERROR </p><p> INT0SUB
55、: MOV A,R1 ;INT0(搶答時(shí)間R1調(diào)整程序)</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p><b> MOV R5,A</b></p><p><b> MOV R4,B</b><
56、/p><p> MOV R3,#0AH</p><p> ACALL DISPLAY ;先在兩個(gè)時(shí)間LED上顯示R1</p><p> JNB P3.4,INC0 ;P3.4為+1s鍵,如按下跳到INCO</p><p> JNB P3.5,DEC0 ;P3.5為-1s鍵,如按下跳到DECO</p>
57、;<p> JNB P3.1,BACK0 ;P3.1為確定鍵,如按下跳到BACKO</p><p> AJMP INT0SUB</p><p> INC0: MOV A,R1</p><p> CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。</p><
58、;p> MOV R1,#00H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> ADD0: INC R1</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> D
59、EC0: MOV A,R1</p><p> JZ SETR1 </p><p><b> DEC R1</b></p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> SETR1: MOV R
60、1,#63H</p><p> ACALL DELAY1</p><p> AJMP INT0SUB</p><p> BACK0: RETI </p><p> COUNT: MOV R0,#00H ;倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)跳到改程序) </p>
61、;<p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H ;重置定時(shí)器</p><p> RECOUNT: MOV A,R6 </p><p> MOV B,#0AH</p><p> DIV AB ;
62、除十分出個(gè)位/十位</p><p> MOV 30H,A ;十位存于(30H)</p><p> MOV 31H,B ;個(gè)位存于(31H)</p><p> MOV R5,30H ;取十位</p><p> MOV R4,31H
63、 ;取個(gè)位</p><p><b> MOV A,R6</b></p><p> SUBB A,#02H</p><p> JNC LARGER </p><p><b> MOV A,R0</b></p><p> CJ
64、NE A,#0AH,FULL </p><p><b> CLR RING </b></p><p> AJMP CHECK</p><p> FULL: CJNE A,#14H,CHECK </p><p><b> SETB RING</b></p><
65、;p><b> MOV A,R6</b></p><p> JZ QUIT ;計(jì)時(shí)完畢</p><p> MOV R0,#00H</p><p> DEC R6 ;一秒標(biāo)志減1</p><p> AJMP CHECK</p>
66、;<p> LARGER: MOV A,R0</p><p> CJNE A,#14H,CHECK ;如果1s向下運(yùn)行,否者跳到查"停/顯示"</p><p> DEC R6 ;計(jì)時(shí)一秒R6自動(dòng)減1</p><p> MOV R0,#00H</p><p>
67、CHECK: JNB P3.1,QUIT ;如按下停止鍵退出</p><p> ACALL DISPLAY</p><p> JB OK,ACCOUT </p><p> AJMP RECOUNT</p><p> ACCOUT: MOV A,DATOA </p><p&
68、gt; JNB P1.0,TRUE1</p><p> JNB P1.1,TRUE2</p><p> JNB P1.2,TRUE3</p><p> JNB P1.3,TRUE4</p><p> JNB P1.4,TRUE5</p><p> JNB P1.5,TRUE6</p><
69、p> JNB P1.6,TZ3</p><p> JNB P1.7,TZ4</p><p> AJMP RECOUNT</p><p> TZ3: JMP TRUE7</p><p> TZ4: JMP TRUE8 </p><p> QUIT: CLR OK ;如果按
70、下了"停止鍵"執(zhí)行的程序</p><p><b> CLR RING</b></p><p> AJMP START </p><p> TRUE1: ACALL BARK ;正常搶答處理程序
71、 </p><p> MOV R3,#01H</p><p> CLR OK ;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答</p><p> AJMP COUNT</p><p> TRUE2:ACALL BARK;</p><p> MOV R3,#02H</p><p&
72、gt;<b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE3:ACALL BARK;</p><p> MOV R3,#03H</p><p><b> CLR OK</b></p><p> AJMP COUNT&l
73、t;/p><p> TRUE4:ACALL BARK;</p><p> MOV R3,#04H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE5: ACALL BARK;</p><p> MO
74、V R3,#05H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TRUE6: ACALL BARK; </p><p> MOV R3,#06H</p><p><b> CLR OK</b>&
75、lt;/p><p> AJMP COUNT</p><p> TRUE7: ACALL BARK; </p><p> MOV R3,#07H</p><p><b> CLR OK</b></p><p> AJMP COUNT</p><p> TR
76、UE8: ACALL BARK; </p><p> MOV R3,#08H</p><p><b> CLR OK</b></p><p> AJMP COUNT </p><p> ERROR: MOV R0,#00H
77、 ;犯規(guī)搶答程序</p><p> MOV TH1,#3CH</p><p> MOV TL1,#0B0H</p><p> MOV 34H,R3 ;犯規(guī)號(hào)數(shù)暫存與(34H)</p><p> HERE: MOV A,R0</p><p> CJNE A,#
78、0AH,FLASH ;0.5s向下運(yùn)行->滅并停響</p><p><b> CLR RING </b></p><p> MOV R3,#0AH</p><p> MOV R4,#0AH</p><p> MOV R5,#0AH </p><p&
79、gt; AJMP CHECK1</p><p> FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b> SETB RING</b></p><p> MOV R0,#00H</p><p> MOV R3,34H
80、 ;取回號(hào)數(shù)</p><p> MOV R5,#00H</p><p> MOV R4,#00H ;顯示00和號(hào)數(shù)</p><p> AJMP CHECK1</p><p> CHECK1: JNB P3.1,QUIT1</p><p> A
81、CALL DISPLAY</p><p><b> AJMP HERE</b></p><p> QUIT1: CLR RING</p><p><b> CLR OK</b></p><p> AJMP START <
82、/p><p> DISPLAY:MOV DPTR,#DAT1 ;顯示程序 </p><p><b> MOV A,R3</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0feH</p><p><b> MOV
83、P0,A</b></p><p> ACALL DELAY</p><p> MOV DPTR,#DAT2</p><p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fdH</p>&
84、lt;p><b> MOV P0,A</b></p><p> ACALL DELAY</p><p><b> MOV A,R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV P2,#0fbH</p><p><b&
85、gt; MOV P0,A</b></p><p> ACALL DELAY</p><p><b> RET</b></p><p> DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,1FH </p><p> DAT2:DB 3fh,06h
86、,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H </p><p> DELAY1: MOV 35H,#08H ;加減時(shí)間延時(shí)</p><p> LOOP0: ACALL DISPLAY</p><p> DJNZ 35H,LOOP0</p><p&
87、gt;<b> RET</b></p><p> DELAY: MOV 32H,#12H ;延時(shí)(顯示和去抖動(dòng)用到)</p><p> LOOP: MOV 33H,#0AFH</p><p> LOOP1: DJNZ 33H,LOOP1</p><p> DJNZ 32H,LOOP<
88、;/p><p> RET </p><p> BARK: SETB RING ;發(fā)聲程序</p><p> ACALL DELAY1</p><p> ACALL DELAY1</p><p> CLR RING
89、 ;按鍵發(fā)聲</p><p> RET </p><p> T0INT: MOV TH0,#0ECH ;TO溢出中斷(響鈴程序)</p><p> MOV TL0,#0FFH</p><p> JNB RING,OUT;</
90、p><p> CPL P3.6 ;RING標(biāo)志位為1時(shí)候P3.6口不 </p><p> OUT: RETI</p><p> T1INT: MOV TH1,#3CH ;T1溢出中斷(計(jì)時(shí)程序)</p><p> MOV TL1,#0B0H</p><p
91、><b> INC R0</b></p><p> RETI </p><p> INTT0:MOV DATOA,P1 ;INTT0中斷服務(wù)程序</p><p><b> CLR EX0</b></p><p&
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八路電子搶答器課程設(shè)計(jì)
- 電子課程設(shè)計(jì)--八路搶答器
- 搶答器課程設(shè)計(jì)--八路搶答器
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)
- 課程設(shè)計(jì)---八路搶答器
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)
- 八路搶答器設(shè)計(jì)課程設(shè)計(jì)
- 《八路搶答器》課程設(shè)計(jì)報(bào)告
- 八路搶答器課程設(shè)計(jì)報(bào)告
- 八路搶答器eda課程設(shè)計(jì)
- 八路定時(shí)搶答器課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)報(bào)告
- 八路搶答器cpld課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)報(bào)告
- 八路搶答器課程設(shè)計(jì) (2)
- 八路搶答器-eda課程設(shè)計(jì)
- 八路搶答器課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論