




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 清華大學(xué)微機(jī)原理與接口技術(shù)課程設(shè)計(jì) 題 目 _競(jìng)賽搶答器課程設(shè)計(jì)_學(xué)生姓名 劉闖 專(zhuān)業(yè)班級(jí) 10計(jì)科2班 學(xué) 號(hào) 201015056 所 在 系 信息工程學(xué)院 指導(dǎo)教師 曾毅 完成時(shí)間 2013 年 1 月 1 日 鄭 州 科 技 學(xué) 院微機(jī)原理與接口技術(shù)課程設(shè)計(jì)任務(wù)書(shū) 題目 競(jìng)賽搶答器課程設(shè)計(jì) 專(zhuān)業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) _10計(jì)科2班_ 學(xué)號(hào) 201015056 姓名 劉闖 1、 基本要求 設(shè)計(jì)一個(gè)具有8路搶答的搶答器,利用并行接口和開(kāi)關(guān)鍵。邏輯開(kāi)關(guān)K0-K7代表?yè)尨鸢粹o,當(dāng)某個(gè)邏輯開(kāi)關(guān)閉合時(shí),相當(dāng)于搶答按鈕按下,此時(shí)在七段數(shù)碼管上將其號(hào)碼顯示出來(lái),并使喇叭響一聲(或者以發(fā)光二極管代替
2、)。二、設(shè)計(jì)任務(wù)啟動(dòng)計(jì)算機(jī),計(jì)算機(jī)自動(dòng)為系統(tǒng)各芯片進(jìn)行初始化,搶答器開(kāi)始工作。比賽開(kāi)始,在主持人按下開(kāi)始鍵,綠燈亮后,選手才可開(kāi)始搶答,否則違規(guī)。若選手搶答成功,LED顯示器顯示選手號(hào)碼,揚(yáng)聲器鳴叫。若選手搶答違規(guī)(主持人未按開(kāi)媽鍵),LED顯示器顯示違規(guī)選手號(hào)碼,紅燈亮,揚(yáng)聲器報(bào)警,并根據(jù)比賽規(guī)則進(jìn)行對(duì)該選手進(jìn)行扣分。若系統(tǒng)提示某號(hào)選手搶答違規(guī),主持人仍未按開(kāi)始鍵,此時(shí)該號(hào)選手又按下?lián)尨疰I,LED顯示器顯示該選手的號(hào)碼。本系統(tǒng)開(kāi)機(jī)后,若主持人既未按復(fù)位鍵又未按開(kāi)始鍵,此時(shí)有選手按下?lián)尨疰I,系統(tǒng)提示紅燈亮,并報(bào)警。 1、搶答成功,置8253通道2計(jì)數(shù)值為1000,揚(yáng)聲器的鳴叫聲音頻率為1MHz
3、/1000=1KHz。2、搶答失敗,置8253通道2計(jì)數(shù)值為2000,揚(yáng)聲器的鳴叫聲音頻率為1MHz/2000=0.5KHz。3、揚(yáng)聲器鳴叫或報(bào)警的時(shí)間為12s。三、設(shè)計(jì)時(shí)間_2012_年_12_月_31_日 至 _2013_年_1_月_4_日指導(dǎo)教師: 教研室主任: 目錄一 課程設(shè)計(jì)的目的和要求.2二 總體設(shè)計(jì).2三 硬件電路設(shè)計(jì).4四 軟件設(shè)計(jì).9五 仿真調(diào)試.20六 源程序.22 七 總結(jié).28八 參考文獻(xiàn) .30一、課程設(shè)計(jì)的目的和要求單片機(jī)原理及應(yīng)用課程設(shè)計(jì)是學(xué)生綜合運(yùn)用所學(xué)知識(shí),全面掌握單片微型計(jì)算機(jī)及其接口的工作原理、編程和使用方法的重要實(shí)踐環(huán)節(jié)。通過(guò)獨(dú)立或協(xié)作提出并論證設(shè)計(jì)方案
4、,進(jìn)行軟、硬件調(diào)試,最后獲得正確的運(yùn)行結(jié)果,可以加深和鞏固對(duì)理論教學(xué)和實(shí)驗(yàn)教學(xué)內(nèi)容的掌握,進(jìn)一步建立計(jì)算機(jī)應(yīng)用系統(tǒng)整體概念,初步掌握單片機(jī)軟、硬件開(kāi)發(fā)方法。根據(jù)單片機(jī)原理及應(yīng)用課程的要求,主要進(jìn)行兩個(gè)方面的設(shè)計(jì),即單片機(jī)最小系統(tǒng)和存儲(chǔ)器擴(kuò)展設(shè)計(jì)、接口技術(shù)應(yīng)用設(shè)計(jì)。其中,單片機(jī)最小系統(tǒng)主要要求學(xué)生熟悉單片機(jī)的內(nèi)部結(jié)構(gòu)和引腳功能、引腳的使用、復(fù)位電路、時(shí)鐘電路、4個(gè)并行接口和一個(gè)串行接口的實(shí)際應(yīng)用,從而可構(gòu)成最小應(yīng)用系統(tǒng),并編程進(jìn)行簡(jiǎn)單使用。存儲(chǔ)器擴(kuò)展設(shè)計(jì)要求學(xué)生掌握常用半導(dǎo)體芯片與單片機(jī)的接口,如EPROM存儲(chǔ)器用作外部程序存儲(chǔ)器時(shí)與單片機(jī)的連接關(guān)系,SRAM存儲(chǔ)器用作外部數(shù)據(jù)存儲(chǔ)器時(shí)與單片機(jī)的
5、連接關(guān)系,E2PROM存儲(chǔ)器用作外部程序/數(shù)據(jù)存儲(chǔ)器時(shí)與單片機(jī)的連接關(guān)系。能合理分配和使用單片機(jī)的內(nèi)部和外部存儲(chǔ)器,編程實(shí)現(xiàn)正常的讀寫(xiě)功能。在進(jìn)行智力競(jìng)賽時(shí),為了具有一種反應(yīng)準(zhǔn)確顯示方便的搶答裝置,下面設(shè)計(jì)了一種帶有定時(shí)功能的多路搶答器。 1、八路搶答,各用一個(gè)搶答按鈕; 2、設(shè)置一個(gè)控制開(kāi)關(guān),該開(kāi)關(guān)由主持人控制;3、具有數(shù)據(jù)鎖存和顯示功能,搶答開(kāi)始后若有選手按動(dòng)搶答按鈕,編號(hào)立即鎖存,此外,要封鎖輸入電路,禁止其他選手搶答。優(yōu)先搶答選手的編號(hào)一直保持到系統(tǒng)清零為止;4、當(dāng)主持人按下“開(kāi)始”按鈕,搶答開(kāi)始。5、當(dāng)某一路搶答成功時(shí),在數(shù)碼管上顯示成功信息和該路的號(hào)數(shù);6、當(dāng)某一路搶答違規(guī)時(shí),能在
6、數(shù)碼管上顯示違規(guī)信息和號(hào)數(shù);可擴(kuò)展以下功能: 7、具有定時(shí)搶答的功能,選手在設(shè)定的時(shí)間內(nèi)搶答有效,且一次搶答的時(shí)間設(shè)定為30秒,超時(shí)揚(yáng)聲器報(bào)警; 8、定時(shí)搶答的時(shí)間到,卻沒(méi)有選手搶答時(shí),本次搶答無(wú)效,系統(tǒng)短暫報(bào)警,并封鎖輸入電路,禁止選手超時(shí)搶答,時(shí)間顯示器上顯示00。 9、開(kāi)始開(kāi)關(guān)未動(dòng)作,在數(shù)碼管上顯示出選手的編號(hào)和搶答時(shí)刻,同時(shí)揚(yáng)聲器給出音響提示,選手搶答無(wú)效,并報(bào)警,系統(tǒng)復(fù)位,重新開(kāi)始。 二、總體設(shè)計(jì)該系統(tǒng)采用51系列單片機(jī)AT89C51作為控制核心,該系統(tǒng)可以完成運(yùn)算控制、信號(hào)識(shí)別以及顯示功能的實(shí)現(xiàn)。由于用了單片機(jī),使其技術(shù)比較成熟,應(yīng)用起來(lái)方便、簡(jiǎn)單并且單片機(jī)周?chē)妮o助電路也比較少,
7、便于控制和實(shí)現(xiàn)。整個(gè)系統(tǒng)具有極其靈活的可編程性,能方便地對(duì)系統(tǒng)進(jìn)行功能的擴(kuò)張和更改。MCS-51單片機(jī)特點(diǎn)如下: <1>可靠性好:?jiǎn)纹瑱C(jī)按照工業(yè)控制要求設(shè)計(jì),抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫(xiě)在ROM里,許多信號(hào)通道都在同一芯片,因此可靠性高,易擴(kuò)充。<2>單片機(jī)有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴(kuò)充為各種規(guī)模的微電腦系統(tǒng)。<3> 控制功能強(qiáng):?jiǎn)纹瑱C(jī)指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。其原理框圖如下:搶答按鈕優(yōu)先編碼電路鎖存器譯碼電路譯碼顯示主持人按鈕開(kāi)關(guān)控制電路報(bào)警電路秒脈
8、沖產(chǎn)生電路定時(shí)電路譯碼電路顯示電路 如圖所示為電路框圖。其工作原理為:接通電源后,主持人將開(kāi)關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開(kāi)關(guān)置,“開(kāi)始”狀態(tài),宣布“開(kāi)始”搶答器工作。定時(shí)器倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次操作“開(kāi)始、停止”狀態(tài)開(kāi)關(guān)。(一)功能介紹1、如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按"搶答時(shí)間調(diào)節(jié)"鍵或"答題時(shí)間調(diào)節(jié)"鍵進(jìn)入調(diào)節(jié)狀態(tài),此時(shí)會(huì)
9、顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下"-1s"鍵,時(shí)間LED上會(huì)顯示改變后的時(shí)間,調(diào)整范圍為0s99s, 0s時(shí)再減1s會(huì)跳到99,99s時(shí)再加1s會(huì)變到0s。 2、主持人按"搶答開(kāi)始"鍵,會(huì)有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)30s搶答時(shí)間),如有選手搶答,會(huì)有提示音,并會(huì)顯示其號(hào)數(shù)并立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè)60s搶答時(shí)間),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。倒數(shù)時(shí)間到小于5s會(huì)每秒響一下提示音。 3、如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按"停止"
10、按鍵,系統(tǒng)會(huì)自動(dòng)進(jìn)入準(zhǔn)備狀態(tài),等待主持人按"搶答開(kāi)始"進(jìn)入下次搶答計(jì)時(shí)。 4、如果主持人未按"搶答開(kāi)始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號(hào)數(shù)并響個(gè)不停,直到按下"停止" 鍵為止。 5、P3.0為開(kāi)始搶答,P3.1為停止,p1.0-p1.7為八路搶答輸入 數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P3.6口。P3.2搶答時(shí)間調(diào)整結(jié),P3.3回答時(shí)間調(diào)整,P3.4為時(shí)間加1調(diào)整,P3.5為時(shí)間減1調(diào)整。(二)搶答器的工作原理?yè)尨鹌鞯墓ぷ髟硎抢脝纹瑱C(jī)的定時(shí)器T0、T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序
11、,用4個(gè)共陰極LED數(shù)碼管來(lái)顯示,用P0口作為數(shù)碼管的八個(gè)段選,用P2口中的P2.0、P2.1、P2.2、作為4個(gè)數(shù)碼管其中3個(gè)位選,P1口接8個(gè)按鍵,提供選手搶答,P3.0-P3.5四個(gè)接四個(gè)按鍵,提供開(kāi)始、結(jié)束、答題時(shí)間調(diào)整、搶答時(shí)間調(diào)整,加1、減1調(diào)整之用。搶答功能:通過(guò)八路按鍵配合程序來(lái)實(shí)現(xiàn)搶答功能。當(dāng)主持人按下?lián)尨疰I開(kāi)始搶答后,此時(shí)任一路按下按鈕均閉鎖其它各路,由程序?qū)︽I盤(pán)譯碼并顯示最先按下?lián)尨疰I的路數(shù)及其當(dāng)前時(shí)間。搶答限時(shí):主持人按下?lián)尨疰I后,設(shè)置30秒為搶答時(shí)間(此時(shí)間可在1-99秒之間修改)。若30秒內(nèi)無(wú)人搶答,倒計(jì)時(shí)為5時(shí)發(fā)出報(bào)警,說(shuō)明該搶答題目作廢。此時(shí)閉鎖所有搶答按鍵,只
12、有當(dāng)主持人再次按下?lián)尨疰I開(kāi)始下一次搶答方可搶答。答題限時(shí):當(dāng)選手按下按鈕時(shí),啟動(dòng)倒計(jì)時(shí)(此倒計(jì)時(shí)時(shí)間可在199秒之間修改),倒計(jì)時(shí)為5時(shí)發(fā)出報(bào)警,說(shuō)明答題時(shí)間到。三、硬件電路設(shè)計(jì)1.原理圖的確定單片機(jī)實(shí)現(xiàn)搶答的原理圖:搶答電路的接口電路 2.搶答器電路參考電路如上圖所示。該電路完成兩個(gè)功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號(hào),同時(shí)譯碼顯示電路顯示編號(hào);二是禁止其他選手按鍵操作無(wú)效。如有再次搶答需由主持人將S開(kāi)關(guān)重新置,“清除”然后再進(jìn)行下一次搶答。 3. 時(shí)序控制電路設(shè)計(jì) a.主持人將控制開(kāi)關(guān)撥到"開(kāi)始"位置時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路進(jìn)人正常搶答工作狀
13、態(tài)。b.當(dāng)參賽選手按動(dòng)搶答鍵時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路停止工作4.復(fù)位電路的設(shè)計(jì)外部中斷和內(nèi)部中斷并存,單片機(jī)硬件復(fù)位端,只要持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲(chǔ)器的值都恢復(fù)到了初始值,因?yàn)楸驹O(shè)計(jì)中功能中有倒計(jì)時(shí)時(shí)間的記憶功能,所以不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完之后,將程序通過(guò)一條跳轉(zhuǎn)指令讓它完成復(fù)位。復(fù)位電路如圖3所示: 復(fù)位電路原理圖5. 晶振電路的設(shè)計(jì)MSC-51單片機(jī)的定時(shí)控制功能是用時(shí)鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)中采用內(nèi)部時(shí)鐘方式。單片
14、機(jī)內(nèi)部有一個(gè)反相放大器,XTAL1、XTAL2分別為反相放大器的輸入端和輸出端,外接定時(shí)反饋元件組成振蕩器(內(nèi)部時(shí)鐘方式),產(chǎn)生時(shí)鐘送至單片機(jī)內(nèi)部各元件。時(shí)鐘頻率越高,單片機(jī)控制器的控制節(jié)拍就越快,運(yùn)算速度也就越快。一般來(lái)說(shuō)單片機(jī)內(nèi)部有一個(gè)帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-2所示。加電以后延時(shí)一段時(shí)間(約10ms)振蕩器產(chǎn)生時(shí)鐘,不受軟件控制,圖中Y1為晶振,震蕩產(chǎn)生的時(shí)鐘頻率主要由Y1確定。電容C1,C2的作用有兩個(gè):一是幫助振蕩器起振,二是對(duì)振蕩器的頻率起微調(diào)作用,典型值為30pF。晶振電路的設(shè)計(jì)如圖2-2所示:晶振電路原理圖6. 報(bào)警電路設(shè)計(jì)
15、報(bào)警電路用于報(bào)警,當(dāng)遇到報(bào)警信號(hào)時(shí),發(fā)出警報(bào)。一般喇叭是一種電感性圖5報(bào)警電路圖。8951驅(qū)動(dòng)喇叭的信號(hào)為各種頻率的脈沖。因此,最簡(jiǎn)單的喇叭驅(qū)動(dòng)方式就是利用達(dá)林頓晶體管,或者以兩個(gè)常用的小晶體管連接成達(dá)林頓架勢(shì)。在右圖中電阻R為限流電阻,在此利用晶體管的高電流增益,以達(dá)到電路快速飽和的目的。不過(guò),如果要由P0輸出到此電路,還需要連接一個(gè)10K的上拉電阻。選手在設(shè)定的時(shí)間內(nèi)搶答時(shí),實(shí)現(xiàn):優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次作"清除"和"開(kāi)始"狀態(tài)開(kāi)關(guān)。 7.選手
16、搶答鍵(矩陣式鍵盤(pán))AT89C51的P1口做一個(gè)為選手搶答的輸入按鍵引腳,P1.0至P1.7輪流輸出低電位,給每一個(gè)選手編號(hào)1至8,當(dāng)選手按下按鈕時(shí),P1口個(gè)端口的電平變化從P1口輸入,經(jīng)單片機(jī)處理后從P0輸出由數(shù)碼管顯示搶答者編號(hào)。8.顯示與顯示驅(qū)動(dòng)電路 此電路包括顯示和驅(qū)動(dòng),顯示采用數(shù)碼管,驅(qū)動(dòng)用P2口, 違規(guī)者編號(hào)、搶答30秒倒計(jì)時(shí)、正常搶答者編號(hào)和回答問(wèn)題時(shí)間60秒倒計(jì)時(shí),數(shù)碼管采用動(dòng)態(tài)顯示。驅(qū)動(dòng)電路P2口,查詢顯示程序利用P0口做段選碼口輸出P2低3位做位選碼輸出,當(dāng)為低電平則能驅(qū)動(dòng)數(shù)碼管使其顯示數(shù)字。在+5V電壓下接10k的電阻,保證正常壓降。四、軟件設(shè)計(jì)1、系統(tǒng)主程序設(shè)計(jì)為了能夠
17、達(dá)到搶答的公平、公正、合理,應(yīng)該在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時(shí)間,因而在編開(kāi)始搶答前的程序得先編寫(xiě)設(shè)定時(shí)間的程序,當(dāng)時(shí)間設(shè)好了之后,主持人發(fā)布搶答命令按下P1.7按鍵,程序開(kāi)始打開(kāi)定時(shí)中斷開(kāi)始倒計(jì)時(shí),然后調(diào)用鍵盤(pán)掃描子程序,編寫(xiě)鍵盤(pán)掃描程序。當(dāng)在掃描到有人按下了答題鍵,馬上關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤(pán)。主程序設(shè)置搶答時(shí)間和回答問(wèn)題時(shí)間定時(shí)器及并行口初始化將時(shí)間計(jì)數(shù)器及啟動(dòng)標(biāo)志值1開(kāi)中斷采并行口數(shù)據(jù)為0嗎?啟動(dòng)標(biāo)志=1嗎?判斷搶答組號(hào)報(bào)警電路發(fā)聲判斷哪一組為搶答組將搶答組號(hào)送顯示搶答時(shí)間到了嗎?輸出響鈴信號(hào)提示超時(shí)繼續(xù)搶答比賽嗎?系統(tǒng)返回NYYYNYN系統(tǒng)主程序流程圖2. 顯示搶
18、答違規(guī)流程圖 開(kāi) 始報(bào)警一直提示顯示違規(guī)者編號(hào)3. 搶答成功流程圖 開(kāi) 始響聲提示設(shè)置定時(shí)器初值并啟動(dòng)顯示搶答者后30秒倒計(jì)時(shí)60秒答問(wèn)題時(shí)間到并響聲提示RET4. 程序清單 定時(shí)器T1時(shí)間初值設(shè)50ms時(shí)間初值為Z,Z的計(jì)算方法為(216- Z)×12=12×50×103,結(jié)果Z=15536D=3CB0H OK EQU 20H ;搶答開(kāi)始標(biāo)志位 RING EQU 22H ;響鈴標(biāo)志位 DATA0 EQU 36H ;搶答按鍵口數(shù)據(jù)存放地址 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT
19、 ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#30 ;初設(shè)搶答時(shí)間為30s MOV R2,#60 ;初設(shè)答題時(shí)間為60s MOV TMOD,#11H ;設(shè)置未定時(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 EX1 ;允許四個(gè)中斷,T0/T1/INT0/INT1 CLR OK CLR RING SET
20、B TR1 SETB TR0 ;一開(kāi)始就運(yùn)行定時(shí)器,以開(kāi)始顯示PPP.如果想重新計(jì)數(shù),重置TH1/TL1就可以了;查詢程序START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未開(kāi)始搶答時(shí)候顯示PPP JNB P3.3 ,INT0SUB JNB P3.4,TZ1 ;倒計(jì)時(shí)調(diào)整 JB P3.0,NEXT ;ddddddd ACALL DELAY JB P3.0,NEXT ;去抖動(dòng),如果"開(kāi)始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢 SETB EX0 ;開(kāi)放INT0 ACAL
21、L BARK ;按鍵發(fā)聲 MOV A,R1 MOV R6,A ;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間 SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答(在使用錦囊時(shí)用作判斷是搶答倒計(jì)時(shí)還是回答倒計(jì)時(shí)) MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù) AJMP COUNT ;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在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
22、,TZ1 JNB P1.7,TZ2 AJMP STARTTZ1: JMP FALSE7TZ2: JMP FALSE8 ;非法搶答處理程序FALSE1: ACALL BARK ;按鍵發(fā)聲 MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV R3,#05H AJMP ERRORFALSE6: ACALL BARK MO
23、V R3,#06H AJMP ERRORFALSE7: ACALL BARK MOV R3,#07H AJMP ERRORFALSE8: ACALL BARK MOV R3,#08H AJMP ERROR ;INT0(搶答時(shí)間R1調(diào)整程序)INT0SUB: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY ;先在兩個(gè)時(shí)間LED上顯示R1 JNB P3.4,INC0 ;P3.4為+1s鍵,如按下跳到INCO JNB P3.5,DEC0 ;P3.5為-1s鍵,如按下跳到DECO JNB P3.1,BACK0
24、 ;P3.1為確定鍵,如按下跳到BACKO AJMP INT0SUBINC0: MOV A,R1 CJNE 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就置99, DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETI
25、 ;INT1(回答時(shí)間R2調(diào)整程序)INT1SUB: MOV A,R2 MOV B,#0AH DIV AB MOV 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 DELAY1AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELA
26、Y1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: RETI ;倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)COUNT: MOV R0,#00H ;重置定時(shí)器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H ;重置定時(shí)器RECOUNT: MOV A,R6 ;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6 MOV B,#0AH DIV AB ;除十分出個(gè)位/十位 MOV 30H,A ;十位存于(30H) MOV 31H,B ;個(gè)位存于(31H) MOV R5,30H ;取十位 MOV R4
27、,31H ;取個(gè)位 MOV A,R6 SUBB A,#07H JNC LARGER ;大于5s跳到LARGER,小于等于5s會(huì)提醒 MOV A,R0 CJNE A,#0AH,FULL ;1s中0.5s向下運(yùn)行 CLR RING AJMP CHECKFULL: CJNE A,#14H,CHECK ;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì) SETB RING MOV A,R6 JZ QUIT ;計(jì)時(shí)完畢 MOV R0,#00H DEC R6 ;一秒標(biāo)志減1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK ;如果1s向下運(yùn)行,否者跳到查"停
28、/顯示" DEC R6 ;計(jì)時(shí)一秒R6自動(dòng)減1 MOV R0,#00HCHECK: JNB P3.1,QUIT ;如按下停止鍵退出 ACALL DISPLAY JB OK,ACCOUT ;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過(guò)查詢繼續(xù)倒數(shù) AJMP RECOUNTACCOUT: MOV A,DATA0 JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TZ3 JNB P1.7,TZ4 AJMP RECOUNT TZ3: JMP TRU
29、E7 TZ4: JMP TRUE8 QUIT: CLR OK ;如果按下了"停止鍵"執(zhí)行的程序 CLR RING AJMP START ;正常搶答處理程序TRUE1: ACALL BARK ;按鍵發(fā)聲 MOV A,R2 MOV R6,A ;搶答時(shí)間R2送R6 MOV R3,#01H CLR OK ;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答 AJMP COUNTTRUE2:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,
30、#03H CLR OK AJMP COUNTTRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK; 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 BA
31、RK; MOV A,R2 MOV R6,A MOV R3,#08H CLR OKAJMP COUNT ;犯規(guī)搶答程序ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯規(guī)號(hào)數(shù)暫存與(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH ;0.5s向下運(yùn)行->滅并停響 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ;三燈全滅 AJMP CHECK1FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì) SETB RI
32、NG MOV R0,#00H MOV R3,34H ;取回號(hào)數(shù) MOV R5,#0BH MOV R4,#0BH ;顯示PP和號(hào)數(shù) AJMP CHECK1CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OKAJMP START ;顯示程序DISPLAY:MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做 MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,A
33、+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73HDELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET ;延時(shí)(顯示和去抖動(dòng)用到)DELAY: MOV 32H,#
34、12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOPRET ;發(fā)聲程序BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING ;按鍵發(fā)聲RET ;TO溢出中斷(響鈴程序)T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.6 ;RING標(biāo)志位為1時(shí)候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音OUT: RETI ;T1溢出中斷(計(jì)時(shí)程序)T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0RETI ;I
35、NTT0中斷服務(wù)程序INTT0:MOV DATA0,P1CLR EX0RETI END五、仿真調(diào)試試驗(yàn)的程序通過(guò)Keil軟件編譯,產(chǎn)生HEX文件如圖4-1所示:程序在Keil軟件上編譯結(jié)果 通過(guò)Proteus進(jìn)行仿真,如仿真結(jié)果所示,按下開(kāi)始后,數(shù)碼管開(kāi)始倒計(jì)時(shí),仿真結(jié)果如圖4-2所示。Proteus仿真的結(jié)果當(dāng)有選手按下按扭時(shí),數(shù)碼管顯示選手號(hào)碼并開(kāi)始倒計(jì)時(shí),如圖4-3所示 Proteus仿真的結(jié)果通過(guò)仿真結(jié)果證實(shí),該方案可行。該設(shè)計(jì)方案同過(guò)51系列單片機(jī)的P0口作為段選輸出,用P2口作為位選輸出,動(dòng)態(tài)掃描LED顯示管,顯示時(shí)間。并通過(guò)接在P3.0-P3.6口的按鍵開(kāi)關(guān)控制開(kāi)始、結(jié)束、喇叭提
36、示等功能。P1口接選手按鍵,控制搶答。本設(shè)計(jì)實(shí)現(xiàn)簡(jiǎn)單,成本較低很適合我們大學(xué)生動(dòng)手實(shí)踐。6 源程序 OK EQU 20H ;搶答開(kāi)始標(biāo)志位 RING EQU 22H ;響鈴標(biāo)志位 DATA0 EQU 36H ;搶答按鍵口數(shù)據(jù)存放地址 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#30 ;初設(shè)搶答時(shí)間為30s MOV R2,#60 ;初設(shè)答題時(shí)間為60s MOV TMOD,#11H
37、;設(shè)置未定時(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 EX1 ;允許四個(gè)中斷,T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR ;查詢程序START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未開(kāi)始搶答時(shí)候顯示PPP JNB P3.3
38、,INT0SUB JNB P3.4,TZ1 ;倒計(jì)時(shí)調(diào)整 JB P3.0,NEXT ;ddddddd ACALL DELAY JB P3.0,NEXT ;去抖動(dòng),如果"開(kāi)始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢 SETB EX0 ;開(kāi)放INT0 ACALL BARK ;按鍵發(fā)聲 MOV A,R1 MOV R6,A ;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間 SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答 MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù) AJMP COUNT ;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在COUN
39、T里面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,TZ1 JNB P1.7,TZ2 AJMP STARTTZ1: JMP FALSE7TZ2: JMP FALSE8 ;非法搶答處理程序FALSE1: ACALL BARK ;按鍵發(fā)聲 MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H
40、AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV R3,#05H AJMP ERRORFALSE6: ACALL BARK MOV R3,#06H AJMP ERRORFALSE7: ACALL BARK MOV R3,#07H AJMP ERRORFALSE8: ACALL BARK MOV R3,#08H AJMP ERROR ;INT0(搶答時(shí)間R1調(diào)整程序)INT0SUB: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY ;先在兩個(gè)時(shí)間LED上顯示R1 JNB P3.4,INC0 ;P3.4為+1s鍵,如按下跳到INCO JNB P3.5,DEC0 ;P3.5為-1s鍵,如按下跳到DECO JNB P3.1,BACK0 ;P3.1為確定鍵,如按下跳到BACKO AJMP INT0SUBINC0: MOV A,R1 CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1AJMP INT0S
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 潔凈儀表施工方案
- 定制化服務(wù)市場(chǎng)滲透率-全面剖析
- 機(jī)器人大堂經(jīng)理行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 互聯(lián)網(wǎng)證券社區(qū)互動(dòng)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 光儲(chǔ)材料企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 花?;ɑ茕N(xiāo)售企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 三級(jí)安全教育培訓(xùn)
- 生產(chǎn)企業(yè)電氣車(chē)間三級(jí)教育
- 中國(guó)金屬密封件制造市場(chǎng)運(yùn)行態(tài)勢(shì)及行業(yè)發(fā)展前景預(yù)測(cè)報(bào)告
- 2025年中國(guó)多功能光波導(dǎo)調(diào)制器行業(yè)全景評(píng)估及投資規(guī)劃建議報(bào)告
- 國(guó)內(nèi)外化工發(fā)展情況及安全形勢(shì)
- 讀書(shū)分享讀書(shū)交流會(huì)《四世同堂》
- 2024年人教精通版四年級(jí)下冊(cè)英語(yǔ)期末專(zhuān)項(xiàng)復(fù)習(xí)-閱讀理解
- 中醫(yī)推拿基礎(chǔ)培訓(xùn)課件
- 防電信詐騙安全教案
- 產(chǎn)品履歷表完
- 保健食品備案產(chǎn)品可用輔料及其使用規(guī)定
- 肺癌伴胸腔積液護(hù)理查房
- 健康管理中的健康教育與健康促進(jìn)研究
- 2024年中考化學(xué)復(fù)習(xí)把握中考方向共研備考策略
- 新聞宣傳“三審三?!睂彶楸?/a>
評(píng)論
0/150
提交評(píng)論