單片機八路搶答器課程設(shè)計_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  題 目 單片機八路掃描式搶答器 </p><p>  二級學(xué)院 機械工程學(xué)院 </p><p>  專 業(yè) 機械設(shè)計與自動化 </p><p>  班

2、 級 機械設(shè)計與自動化專(1)班 </p><p>  學(xué) 號 1101030146 1101030136 </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師 </p><p><b>  目

3、 錄</b></p><p>  引言................... .. .........................2</p><p>  第1章 課程設(shè)計的目的和要求 .................. ..........3</p><p>  第2章 總體設(shè)計...................................

4、.. ...........4</p><p>  2.1功能介紹..................................... .............5</p><p>  2.2搶答器工作原理................................ ............5</p><p>  第3章 硬件電路設(shè)計...........

5、..................... ............6</p><p>  3.1原理圖的確定................................. .............6</p><p>  3.2搶答器電路................................... .............6</p><p>  3

6、.3時序控制電路設(shè)計............................. .............6</p><p>  3.4復(fù)位電路設(shè)計................................ ..............7</p><p>  3.5晶體振電設(shè)計................................. ............ 8</p

7、><p>  3.6報警電路設(shè)計......................................... .. .. 9</p><p>  3.7選手搶答鍵................................... ............10</p><p>  3.8顯示與顯示驅(qū)動電路.......................... ..

8、...........10</p><p>  第4章 軟件設(shè)計................................... ............11</p><p>  4.1系統(tǒng)主程序設(shè)計............................... ............11</p><p>  4.2顯示搶答違規(guī)流程圖............

9、............... ............13</p><p>  4.3搶答成功流程圖............................... ............13</p><p>  4.4程序清單................................. .. .............14</p><p>  第5章 仿真

10、調(diào)試................................... ............25</p><p>  附小組分工情況 ..............................................25 </p><p>  參考文獻..................................... ..

11、.............26</p><p>  致謝 ................................................ 27</p><p><b>  引 言</b></p><p><b>  課題研究的相關(guān)背景</b></p><p>  當(dāng)今的社會競爭日益

12、激烈,選拔人才,評選優(yōu)勝,知識競賽之類的活動愈加頻繁,而在競賽中往往分為幾組參加,這時針對主持人提出的問題,如果要是讓搶答者用舉手等方法,這在某種程度上會因為主持人的主觀誤斷造成比賽的不公平性比賽中為準(zhǔn)確、公正、直觀地判 斷出第一搶答者,這就要有一種搶答設(shè)備作為裁判員,這就必然離不開搶答器。搶答器是一種應(yīng)用非常廣泛的設(shè)備,在各種競賽、搶答場合中,它能迅速、客觀地分辨出最先獲得發(fā)言權(quán)的選手。早期的搶答器只由幾個三極管、可控硅、發(fā)光管等組成

13、,能通過發(fā)光管的指示辯認出選手號碼。現(xiàn)在大多數(shù)搶答器均使用單片機或數(shù)字集成電 路,并增加了許多新功能,如選手號碼顯示、搶按前或搶按后的計時、選手得分顯示等功能。隨著科技的發(fā)展,現(xiàn)在的搶答器有著數(shù)字化,智能化的方向發(fā)展,這就必然提高了搶答器的成本。鑒于現(xiàn)在小規(guī)模的知識競賽越來越多,操作簡單,經(jīng)濟實的小型 搶答器必將大有市場。因此,我選擇簡易邏輯數(shù)字搶答器這一課題。簡易邏輯數(shù)字搶答器由主體電路與擴展電路組成。優(yōu)先編碼電路、鎖存器、譯碼電路將

14、參賽隊的輸入信號在顯示器上輸出;用控制電路和主持人開關(guān)啟動報警電路,以上兩部分組成主體電路。通過定時電</p><p>  第1章 課程設(shè)計的目的和要求</p><p>  單片機原理及應(yīng)用課程設(shè)計是學(xué)生綜合運用所學(xué)知識,全面掌握單片微型計算機及其接口的工作原理、編程和使用方法的重要實踐環(huán)節(jié)。通過獨立或協(xié)作提出并論證設(shè)計方案,進行軟、硬件調(diào)試,最后獲得正確的運行結(jié)果,可以加深和鞏固對理論教

15、學(xué)和實驗教學(xué)內(nèi)容的掌握,進一步建立計算機應(yīng)用系統(tǒng)整體概念,初步掌握單片機軟、硬件開發(fā)方法。</p><p>  根據(jù)單片機原理及應(yīng)用課程的要求,主要進行兩個方面的設(shè)計,即單片機最小系統(tǒng)和存儲器擴展設(shè)計、接口技術(shù)應(yīng)用設(shè)計。其中,單片機最小系統(tǒng)主要要求學(xué)生熟悉單片機的內(nèi)部結(jié)構(gòu)和引腳功能、引腳的使用、復(fù)位電路、時鐘電路、4個并行接口和一個串行接口的實際應(yīng)用,從而可構(gòu)成最小應(yīng)用系統(tǒng),并編程進行簡單使用。</p>

16、;<p>  存儲器擴展設(shè)計要求學(xué)生掌握常用半導(dǎo)體芯片與單片機的接口,如EPROM存儲器用作外部程序存儲器時與單片機的連接關(guān)系,SRAM存儲器用作外部數(shù)據(jù)存儲器時與單片機的連接關(guān)系,E2PROM存儲器用作外部程序/數(shù)據(jù)存儲器時與單片機的連接關(guān)系。能合理分配和使用單片機的內(nèi)部和外部存儲器,編程實現(xiàn)正常的讀寫功能。</p><p><b>  設(shè)計目的</b></p>

17、<p>  在進行智力競賽時,為了具有一種反應(yīng)準(zhǔn)確顯示方便的搶答裝置,下面設(shè)計了一種帶有定時功能的多路搶答器。 </p><p><b>  設(shè)計任務(wù)與要求: </b></p><p>  1、八路搶答,各用一個搶答按鈕; </p><p>  2、設(shè)置一個控制開關(guān),該開關(guān)由主持人控制;</p><p>  

18、3、具有數(shù)據(jù)鎖存和顯示功能,搶答開始后若有選手按動搶答按鈕,編號立即鎖存,此外,要封鎖輸入電路,禁止其他選手搶答。優(yōu)先搶答選手的編號一直保持到系統(tǒng)清零為止;</p><p>  4、當(dāng)主持人按下“開始”按鈕,搶答開始。</p><p>  5、當(dāng)某一路搶答成功時,在數(shù)碼管上顯示成功信息和該路的號數(shù);</p><p>  6、當(dāng)某一路搶答違規(guī)時,能在數(shù)碼管上顯示違規(guī)信

19、息和號數(shù);</p><p><b>  可擴展以下功能: </b></p><p>  7、具有定時搶答的功能,選手在設(shè)定的時間內(nèi)搶答有效,且一次搶答的時間設(shè)定為30秒,超時揚聲器報警; </p><p>  8、定時搶答的時間到,卻沒有選手搶答時,本次搶答無效,系統(tǒng)短暫報警,并封鎖輸入電路,禁止選手超時搶答,時間顯示器上顯示00。</p

20、><p>  9、開始開關(guān)未動作,在數(shù)碼管上顯示出選手的編號和搶答時刻,同時揚聲器給出音響提示,選手搶答無效,并報警,系統(tǒng)復(fù)位,重新開始。 </p><p><b>  10、其它功能。</b></p><p><b>  第2章 總體設(shè)計</b></p><p>  該系統(tǒng)采用51系列單

21、片機AT89C51作為控制核心,該系統(tǒng)可以完成運算控制、信號識別以及顯示功能的實現(xiàn)。由于用了單片機,使其技術(shù)比較成熟,應(yīng)用起來方便、簡單并且單片機周圍的輔助電路也比較少,便于控制和實現(xiàn)。整個系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進行功能的擴張和更改。MCS-51單片機特點如下:</p><p>  <1>可靠性好:單片機按照工業(yè)控制要求設(shè)計,抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫

22、在ROM里,許多信號通道都在同一芯片,因此可靠性高,易擴充。</p><p>  <2>單片機有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴充為各種規(guī)模的微電腦系統(tǒng)。</p><p>  <3> 控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。其原理框圖如下:</p><p>  如圖

23、所示為電路框圖。其工作原理為:接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號顯示器滅燈,定時器顯示設(shè)定時間;主持人將開關(guān)置,“開始”狀態(tài),宣布“開始”搶答器工作。定時器倒計時,揚聲器給出聲響提示。選手在定時時間內(nèi)搶答時,搶答器完成:優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當(dāng)一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶答必須由主持人再次操作“開始、停止”狀態(tài)開關(guān)。</p>&l

24、t;p><b>  2.1功能介紹</b></p><p>  1、如果想調(diào)節(jié)搶答時間或答題時間,按"搶答時間調(diào)節(jié)"鍵或"答題時間調(diào)節(jié)"鍵進入調(diào)節(jié)狀態(tài),此時會顯示現(xiàn)在設(shè)定的搶答時間或回答時間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下"-1s"鍵,時間LED上會顯示改變后的時間,調(diào)整范圍為0s~99

25、s, 0s時再減1s會跳到99,99s時再加1s會變到0s。 </p><p>  2、主持人按"搶答開始"鍵,會有提示音,并立刻進入搶答倒計時(預(yù)設(shè)30s搶答時間),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進入回答倒計時(預(yù)設(shè)60s搶答時間),

26、不進行搶答查詢,所以只有第一個按搶答的選手有效。倒數(shù)時間到小于5s會每秒響一下提示音。 </p><p>  3、如倒計時期間,主持人想停止倒計時可以隨時按"停止"按鍵,系統(tǒng)會自動進入準(zhǔn)備狀態(tài),等待主持人按&q

27、uot;搶答開始"進入下次搶答計時。 </p><p>  4、如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號數(shù)并響個不停,直到按下&qu

28、ot;停止" 鍵為止。 </p><p>  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)整.</p><p>  2.2搶答器的工作原理</p><p>  搶答器的工作

29、原理是利用單片機的定時器T0、T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,用4個共陰極LED數(shù)碼管來顯示,用P0口作為數(shù)碼管的八個段選,用P2口中的P2.0、P2.1、P2.2、作為4個數(shù)碼管其中3個位選,P1口接8個按鍵,提供選手搶答,P3.0-P3.5四個接四個按鍵,提供開始、結(jié)束、答題時間調(diào)整、搶答時間調(diào)整,加1、減1調(diào)整之用。</p><p><b>  搶答功能:</b></p

30、><p>  通過八路按鍵配合程序來實現(xiàn)搶答功能。當(dāng)主持人按下?lián)尨疰I開始搶答后,此時任一路按下按鈕均閉鎖其它各路,由程序?qū)︽I盤譯碼并顯示最先按下?lián)尨疰I的路數(shù)及其當(dāng)前時間。</p><p><b>  搶答限時:</b></p><p>  主持人按下?lián)尨疰I后,設(shè)置30秒為搶答時間(此時間可在1-99秒之間修改)。若30秒內(nèi)無人搶答,倒計時為5時發(fā)出

31、報警,說明該搶答題目作廢。此時閉鎖所有搶答按鍵,只有當(dāng)主持人再次按下?lián)尨疰I開始下一次搶答方可搶答。</p><p><b>  答題限時:</b></p><p>  當(dāng)選手按下按鈕時,啟動倒計時(此倒計時時間可在1~99秒之間修改),倒計時為5時發(fā)出報警,說明答題時間到。</p><p>  第3章 硬件電路設(shè)計</p><

32、;p>  3.1 原理圖的確定</p><p>  單片機實現(xiàn)搶答的原理圖:</p><p><b>  搶答電路的接口電路</b></p><p><b>  3.2.搶答器電路</b></p><p>  參考電路如上圖所示。該電路完成兩個功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的

33、編號,同時譯碼顯示電路顯示編號;二是禁止其他選手按鍵操作無效。如有再次搶答需由主持人將S開關(guān)重新置,“清除”然后再進行下一次搶答。 </p><p>  3.3 時序控制電路設(shè)計</p><p>  時序控制電路是搶答器設(shè)計的關(guān)鍵,它要完成以下功能:</p><p>  a.主持人將控制開關(guān)撥到"開始"位置時,揚

34、聲器發(fā)聲,搶答電路和定時電路進人正常搶答工作狀態(tài)?!       ?             </p><p>  b.當(dāng)參賽選手按動搶答鍵時,揚聲器發(fā)聲,搶答電路和定時電路停止工作</p><p>  3.4復(fù)位電路的設(shè)計</p><p>  外部中斷和內(nèi)部中斷并存,單片機硬件復(fù)位端,只要持續(xù)4個機器周期的高電平即可實現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲

35、器的值都恢復(fù)到了初始值,因為本設(shè)計中功能中有倒計時時間的記憶功能,所以不能對單片機進行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位實際上就是當(dāng)程序執(zhí)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完成復(fù)位。復(fù)位電路如圖3所示:</p><p><b>  復(fù)位電路原理圖</b></p><p>  該復(fù)位電路采用上電自動復(fù)位和手動復(fù)位兩種復(fù)位方式,圖中網(wǎng)絡(luò)標(biāo)號所指9連接到單片機的復(fù)位引腳。

36、要實現(xiàn)復(fù)位只需在,51系列單片機的RESET引腳上加上5ms的高電平就可以了。上電復(fù)位是利用電容的充電來實現(xiàn)的,即上電瞬間RESET端的電位與Vcc相同,隨著電容上儲能增加,電容電壓也逐漸增大,充電電流減小,RESET端的電位。這樣就會建立一個脈沖電壓,調(diào)節(jié)電容與電阻的大小可對脈沖的持續(xù)時間進行調(diào)節(jié)。通常若采用12MHz的晶振時,復(fù)位元件參數(shù)為22μF的電解電容和10kΩ的電阻。按鈕復(fù)位電路是通過按下復(fù)位按鈕時,電源對RESET端維持兩

37、個機器周期的高電平實現(xiàn)復(fù)位的。</p><p>  3.5 晶振電路的設(shè)計</p><p>  MSC-51單片機的定時控制功能是用時鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時鐘方式和外部時鐘方式。本設(shè)計中采用內(nèi)部時鐘方式。</p><p>  單片機內(nèi)部有一個反相放大器,XTAL1、XTAL2分別為反相放大器的輸入端和輸出端,外接定時反饋元件組

38、成振蕩器(內(nèi)部時鐘方式),產(chǎn)生時鐘送至單片機內(nèi)部各元件。時鐘頻率越高,單片機控制器的控制節(jié)拍就越快,運算速度也就越快。</p><p>  一般來說單片機內(nèi)部有一個帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-2所示。加電以后延時一段時間(約10ms)振蕩器產(chǎn)生時鐘,不受軟件控制,圖中Y1為晶振,震蕩產(chǎn)生的時鐘頻率主要由Y1確定。電容C1,C2的作用有兩個:一是幫助振蕩器起振,二

39、是對振蕩器的頻率起微調(diào)作用,典型值為30pF。</p><p>  晶振電路的設(shè)計如圖2-2所示:</p><p><b>  晶振電路原理圖</b></p><p>  3.6 報警電路設(shè)計</p><p>  報警電路用于報警,當(dāng)遇到報警信號時,發(fā)出警報。一般喇叭是一種電感性圖5報警電路圖。8951驅(qū)動喇叭的信號為各

40、種頻率的脈沖。因此,最簡單的喇叭驅(qū)動方式就是利用達林頓晶體管,或者以兩個常用的小晶體管連接成達林頓架勢。在右圖中電阻R為限流電阻,在此利用晶體管的高電流增益,以達到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個10K的上拉電阻。</p><p>  選手在設(shè)定的時間內(nèi)搶答時,實現(xiàn):優(yōu)先判斷、編號鎖存、編號顯示、揚聲器提示。當(dāng)一輪搶答之后,定時器停止、禁止二次搶答、定時器顯示剩余時間。如果再次搶

41、答必須由主持人再次作"清除"和"開始"狀態(tài)開關(guān)。</p><p><b>  報警電路圖</b></p><p>  3.7選手搶答鍵(矩陣式鍵盤)</p><p>  AT89C51的P1口做一個為選手搶答的輸入按鍵引腳,P1.0至P1.7輪流輸出低電位,給每一個選手編號1至8,當(dāng)選手按下按鈕時,P1口

42、個端口的電平變化從P1口輸入,經(jīng)單片機處理后從P0輸出由數(shù)碼管顯示搶答者編號。</p><p>  3.8顯示與顯示驅(qū)動電路</p><p>  此電路包括顯示和驅(qū)動,顯示采用數(shù)碼管,驅(qū)動用P2口, 違規(guī)者編號、搶答30秒倒計時、正常搶答者編號和回答問題時間60秒倒計時,數(shù)碼管采用動態(tài)顯示。驅(qū)動電路P2口,查詢顯示程序利用P0口做段選碼口輸出P2低3位做位選碼輸出,當(dāng)為低電平則能驅(qū)動數(shù)碼管

43、使其顯示數(shù)字。在+5V電壓下接10k的電阻,保證正常壓降。</p><p><b>  第4章 軟件設(shè)計</b></p><p>  4.1、系統(tǒng)主程序設(shè)計</p><p>  為了能夠達到搶答的公平、公正、合理,應(yīng)該在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時間,因而在編開始搶答前的程序得先編寫設(shè)定時間的程序,當(dāng)時間設(shè)好了之后,主持人發(fā)布搶答命

44、令按下P1.7按鍵,程序開始打開定時中斷開始倒計時,然后調(diào)用鍵盤掃描子程序,編寫鍵盤掃描程序。當(dāng)在掃描到有人按下了答題鍵,馬上關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤。</p><p><b>  系統(tǒng)主程序流程圖</b></p><p>  4.2 顯示搶答違規(guī)流程圖</p><p>  4.3 搶答成功流程圖</p><p>

45、;<b>  4.4 程序清單</b></p><p>  OK EQU 20H ;搶答開始標(biāo)志位</p><p>  RING EQU 22H ;響鈴標(biāo)志位</p><p>  DATA0 EQU 36H ;搶答按鍵口數(shù)據(jù)存放地址</p><p>  ORG 0000H </

46、p><p><b>  AJMP MAIN</b></p><p><b>  ORG 0003H</b></p><p>  AJMP INT0SUB</p><p><b>  ORG 000BH</b></p><p>  AJMP T0INT<

47、/p><p><b>  ORG 0013H</b></p><p>  AJMP INT1SUB</p><p><b>  ORG 001BH</b></p><p>  AJMP T1INT</p><p><b>  ORG 0040H</b><

48、;/p><p>  MAIN: MOV R1,#30 ;初設(shè)搶答時間為30s</p><p>  MOV R2,#60 ;初設(shè)答題時間為60s</p><p>  MOV TMOD,#11H ;設(shè)置未定時器/模式1</p><p>  MOV TH0,#0F0H</p><p>  MO

49、V TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b>  SETB EA</b></p><p><b>  SETB ET0</b></

50、p><p><b>  SETB ET1</b></p><p><b>  SETB EX0</b></p><p>  SETB EX1 ;允許四個中斷,T0/T1/INT0/INT1</p><p><b>  CLR OK</b></p>

51、<p><b>  CLR RING</b></p><p><b>  SETB TR1</b></p><p>  SETB TR0 ;一開始就運行定時器,以開始顯示PPP.如果想重新計數(shù),重置TH1/TL1就可以了</p><p><b>  ;查詢程序</b>&

52、lt;/p><p>  START: MOV DATA0,#0FFH ;初始化</p><p>  MOV R5,#0BH</p><p>  MOV R4,#0BH</p><p>  MOV R3,#0BH</p><p>  ACALL DISPLAY ;未開始搶答時候顯示P

53、PP</p><p>  JNB P3.3 ,INT0SUB</p><p>  JNB P3.4,TZ1 ;倒計時調(diào)整</p><p>  JB P3.0,NEXT ;ddddddd</p><p>  ACALL DELAY</p><p>  JB P3.0,NEXT

54、 ;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢</p><p>  SETB EX0 ;開放INT0 </p><p>  ACALL BARK ;按鍵發(fā)聲</p><p><b>  MOV A,R1</b></p>&l

55、t;p>  MOV R6,A ;送R1->R6,因為R1中保存了搶答時間</p><p>  SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答(在使用錦囊時用作判斷是搶答倒計時還是回答倒計時)</p><p>  MOV R3,#0AH ;搶答只顯示

56、計時,滅號數(shù)</p><p>  AJMP COUNT ;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面</p><p>  NEXT: JNB P1.0,FALSE1</p><p>  JNB P1.1,FALSE2</p><p>  JNB P1.2,FALSE3</p&

57、gt;<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><p>  AJMP START</p>

58、<p>  TZ1: JMP FALSE7</p><p>  TZ2: JMP FALSE8</p><p><b>  ;非法搶答處理程序</b></p><p>  FALSE1: ACALL BARK ;按鍵發(fā)聲</p><p>  MOV R3,#01H&l

59、t;/p><p>  AJMP ERROR</p><p>  FALSE2: ACALL BARK</p><p>  MOV R3,#02H</p><p>  AJMP ERROR</p><p>  FALSE3: ACALL BARK</p><p>  MOV R3,#03H</p

60、><p>  AJMP ERROR</p><p>  FALSE4: ACALL BARK</p><p>  MOV R3,#04H</p><p>  AJMP ERROR</p><p>  FALSE5: ACALL BARK</p><p>  MOV R3,#05H</p>

61、<p>  AJMP ERROR</p><p>  FALSE6: ACALL BARK</p><p>  MOV R3,#06H</p><p>  AJMP ERROR</p><p>  FALSE7: ACALL BARK</p><p>  MOV R3,#07H</p>&l

62、t;p>  AJMP ERROR</p><p>  FALSE8: ACALL BARK</p><p>  MOV R3,#08H</p><p>  AJMP ERROR</p><p>  ;INT0(搶答時間R1調(diào)整程序)</p><p>  INT0SUB: MOV A,R1</p>&

63、lt;p>  MOV B,#0AH</p><p><b>  DIV AB</b></p><p><b>  MOV R5,A</b></p><p><b>  MOV R4,B</b></p><p>  MOV R3,#0AH</p><p&

64、gt;  ACALL DISPLAY ;先在兩個時間LED上顯示R1</p><p>  JNB P3.4,INC0 ;P3.4為+1s鍵,如按下跳到INCO</p><p>  JNB P3.5,DEC0 ;P3.5為-1s鍵,如按下跳到DECO</p><p>  JNB P3.1,

65、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><

66、;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

67、EC0: MOV A,R1</p><p>  JZ SETR1 ;如果R1為0, R1就置99,</p><p><b>  DEC R1</b></p><p>  ACALL DELAY1</p><p>  AJMP INT0SUB</p><p&g

68、t;  SETR1: MOV R1,#63H</p><p>  ACALL DELAY1</p><p>  AJMP INT0SUB</p><p>  BACK0: RETI </p><p>  ;INT1(回答時間R2調(diào)整程序)</p><p>  INT1SUB: MOV A,R2</p>

69、<p>  MOV B,#0AH</p><p><b>  DIV AB</b></p><p><b>  MOV R5,A</b></p><p><b>  MOV R4,B</b></p><p>  MOV R3,#0AH</p><

70、;p>  ACALL DISPLAY</p><p>  JNB P3.4,INC1</p><p>  JNB P3.5,DEC1</p><p>  JNB P3.1,BACK1</p><p>  AJMP INT1SUB</p><p>  INC1: MOV A,R2</p><

71、p>  CJNE A,#63H,ADD1</p><p>  MOV R2,#00H</p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  ADD1: INC R2</p><p>  ACALL DELAY1</p><p>

72、  AJMP INT1SUB</p><p>  DEC1: MOV A,R2</p><p><b>  JZ SETR2</b></p><p><b>  DEC R2</b></p><p>  ACALL DELAY1</p><p>  AJMP INT1SU

73、B</p><p>  SETR2: MOV R2,#63H</p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  BACK1: RETI </p><p>  ;倒計時程序(搶答倒計時和回答倒計時都跳到改程序)</p><p>  

74、COUNT: MOV R0,#00H ;重置定時器中斷次數(shù)</p><p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H ;重置定時器</p><p>  RECOUNT: MOV A,R6 ;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6<

75、/p><p>  MOV B,#0AH</p><p>  DIV AB ;除十分出個位/十位</p><p>  MOV 30H,A ;十位存于(30H)</p><p>  MOV 31H,B ;個位存于(31H)</p>&

76、lt;p>  MOV R5,30H ;取十位</p><p>  MOV R4,31H ;取個位</p><p><b>  MOV A,R6</b></p><p>  SUBB A,#07H</p><p>  JNC LARGER

77、 ;大于5s跳到LARGER,小于等于5s會提醒</p><p><b>  MOV A,R0</b></p><p>  CJNE A,#0AH,FULL ;1s中0.5s向下運行</p><p><b>  CLR RING </b></p><p>  AJMP CHECK

78、</p><p>  FULL: CJNE A,#14H,CHECK ;下面是1s的情況,響并顯示號數(shù)并清R0,重新計</p><p><b>  SETB RING</b></p><p><b>  MOV A,R6</b></p><p>  JZ QUIT

79、 ;計時完畢</p><p>  MOV R0,#00H</p><p>  DEC R6 ;一秒標(biāo)志減1</p><p>  AJMP CHECK</p><p>  LARGER: MOV A,R0</p><p>  CJNE A,#14H,CHECK

80、 ;如果1s向下運行,否者跳到查"停/顯示"</p><p>  DEC R6 ;計時一秒R6自動減1</p><p>  MOV R0,#00H</p><p>  CHECK: JNB P3.1,QUIT ;如按下停止鍵退出</p><p&

81、gt;  ACALL DISPLAY</p><p>  JB OK,ACCOUT ;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)</p><p>  AJMP RECOUNT</p><p>  ACCOUT: MOV A,DATA0 </p><p>  JNB P

82、1.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><p>  JNB

83、 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

84、 ;如果按下了"停止鍵"執(zhí)行的程序</p><p><b>  CLR RING</b></p><p>  AJMP START</p><p><b>  ;正常搶答處理程序</b></p><p>  TRUE1: ACALL BARK

85、 ;按鍵發(fā)聲</p><p><b>  MOV A,R2</b></p><p>  MOV R6,A ;搶答時間R2送R6</p><p>  MOV R3,#01H</p><p>  CLR OK ;因為答題

86、的計時不再查詢搶答,所以就鎖了搶答</p><p>  AJMP COUNT</p><p>  TRUE2:ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,

87、#02H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE3:ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</

88、b></p><p>  MOV R3,#03H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE4:ACALL BARK;</p><p><b>  MOV A,R2</b></p>

89、<p><b>  MOV R6,A</b></p><p>  MOV R3,#04H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE5: ACALL BARK;</p><p>&l

90、t;b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#05H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE6

91、: ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#06H</p><p><b>  CLR OK</b></p><p>  A

92、JMP COUNT</p><p>  TRUE7: ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#07H</p><p><b>  CLR

93、 OK</b></p><p>  AJMP COUNT</p><p>  TRUE8: ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#0

94、8H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p><b>  ;犯規(guī)搶答程序</b></p><p>  ERROR: MOV R0,#00H</p><p>  MOV TH1,#3CH</p>

95、<p>  MOV TL1,#0B0H</p><p>  MOV 34H,R3 ;犯規(guī)號數(shù)暫存與(34H)</p><p>  HERE: MOV A,R0</p><p>  CJNE A,#0AH,FLASH ;0.5s向下運行->滅并停響</p>&

96、lt;p><b>  CLR RING </b></p><p>  MOV R3,#0AH</p><p>  MOV R4,#0AH</p><p>  MOV R5,#0AH ;三燈全滅</p><p>  AJMP CHECK1</p><p>  F

97、LASH: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號數(shù)并清R0,重新計</p><p><b>  SETB RING</b></p><p>  MOV R0,#00H</p><p>  MOV R3,34H ;取回號數(shù)</p><p

98、>  MOV R5,#0BH</p><p>  MOV R4,#0BH ;顯示PP和號數(shù)</p><p>  AJMP CHECK1</p><p>  CHECK1: JNB P3.1,QUIT1</p><p>  ACALL DISPLAY</p><p><b>

99、;  AJMP HERE</b></p><p>  QUIT1: CLR RING</p><p><b>  CLR OK</b></p><p>  AJMP START</p><p><b>  ;顯示程序</b></p><p>  DISPLAY:

100、MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,</p><p><b>  MOV A,R3</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2,#0feH</p><p><b>  MOV P0,

101、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><

102、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>

103、  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,73H </p><p>  ;"滅",&qu

104、ot;1","2","3","4","5","6","7","8","9","滅","P"</p><p>  DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

105、,00H,73H</p><p>  ;第一個為零,其他與上相同,因為十位如果為零顯示熄滅</p><p>  ;加減時間延時(起到不會按下就加N個數(shù))</p><p>  DELAY1: MOV 35H,#08H</p><p>  LOOP0: ACALL DISPLAY</p><p>  DJNZ 35H,L

106、OOP0</p><p><b>  RET</b></p><p>  ;延時(顯示和去抖動用到)</p><p>  DELAY: MOV 32H,#12H</p><p>  LOOP: MOV 33H,#0AFH</p><p>  LOOP1: DJNZ 33H,LOOP1<

107、;/p><p>  DJNZ 32H,LOOP</p><p><b>  RET</b></p><p><b>  ;發(fā)聲程序</b></p><p>  BARK: SETB RING</p><p>  ACALL DELAY1</p><p>

108、;  ACALL DELAY1</p><p>  CLR RING ;按鍵發(fā)聲</p><p><b>  RET</b></p><p>  ;TO溢出中斷(響鈴程序)</p><p>  T0INT: MOV TH0,#0ECH</p><p>  

109、MOV TL0,#0FFH</p><p>  JNB RING,OUT;</p><p>  CPL P3.6 ;RING標(biāo)志位為1時候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音</p><p>  OUT: RETI</p><p>  ;T1溢出中斷(計時程序)</p><p&g

110、t;  T1INT: MOV TH1,#3CH</p><p>  MOV TL1,#0B0H</p><p><b>  INC R0</b></p><p><b>  RETI</b></p><p>  ;INTT0中斷服務(wù)程序</p><p>  INTT0:MO

111、V DATA0,P1</p><p><b>  CLR EX0</b></p><p><b>  RETI </b></p><p><b>  END</b></p><p><b>  第5章 仿真調(diào)試</b></p><p&g

112、t;  通過Proteus進行仿真,如仿真結(jié)果所示,按下開始后,數(shù)碼管開始倒計時,仿真結(jié)果如圖4-2所示。</p><p>  Proteus仿真的結(jié)果</p><p>  分工情況。 硬件電路設(shè)計由吳文譚負責(zé) 軟件設(shè)計由任雪艷負責(zé)</p><p><b>  參考文獻</b></p><p>  [1]51單片機

113、原理實用教程徐愛鈞編著電子工業(yè)出版社,2011.3</p><p>  [2]劉紅玲、邵曉根,《微機原理與接口技術(shù)》,中國電力出版社,2006年第一版</p><p>  [3]馮博琴,《微型計算機原理及接口技術(shù)》,清華大學(xué)出版社</p><p>  [4]艾德才,《微型計算機原理與接口技術(shù)》,高等教育出版社</p><p>  [5]沈美明

114、,《IBM-PC匯編語言程序設(shè)計》,清華大學(xué)出版社</p><p>  [6]任致程,《經(jīng)典集成電路400例》機械工業(yè)出版社,2002</p><p>  [7]薛棟梁,《單片機原理及應(yīng)用》,中國水利水電出版社,2001</p><p>  [8]謝筑森,張輝等,《單片機開發(fā)與典型應(yīng)用設(shè)計》,中國科學(xué)技術(shù)大學(xué)出版社,</p><p><

115、b>  致謝</b></p><p>  這次我們做的單片機課程設(shè)計題目是八路搶答器.從一開始我就對單片機產(chǎn)生了恐懼,時上課聽老師講課,總是聽得特別吃力,然后想到這次是做課程設(shè)計,難度要求不用說肯定非常大的。但一路走來,看著我跟我的搭檔把一個一個難題突破的時候,我慢慢地就發(fā)現(xiàn)其單片機并不是我們想象中那么難,通過這次課設(shè)我發(fā)現(xiàn)只有理論水平提高了能將課本知識與實踐相結(jié)合理論知識服務(wù)于實踐以增強自己的

116、動手能力。還知道了理論和實際相結(jié)合的重要性。在這個過程中,我也曾經(jīng)因為實踐經(jīng)驗的缺乏失落過,也曾經(jīng)仿真成功而熱情高漲。</p><p>  特別是roteus仿真軟件的使用,不知是由于電腦的問題還是怎么,這個軟件的安裝就花了我很長的時間,好不容易安裝好了,又對軟件的使用一點都不熟悉,要從頭開始學(xué)起,對著老師發(fā)給我們的芯片原理進行仿真畫圖,剛剛開始時候真的很難下手,因為是英文版的軟件,很多東西都看不太明白,都是通過

117、自己一個個來慢慢琢磨,才把仿真圖畫了出來,然后把寫好的程序?qū)胄酒?,進行仿真,當(dāng)看到程序正常運行的那一刻,心中真是有幾分的喜悅。生活就是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動是人類生存生活永恒不變的話題。為完成這次課程設(shè)計我們確實很辛苦。亮了起來,喇叭響起的是我一生以來最好聽的聲音,我們的心中就不免興奮,不免激動。以前種種艱辛這時就變成了最甜美的回憶!這次學(xué)習(xí)給我留下了深刻的印象,使我受益匪淺。而且對于論文的總體構(gòu)思也有了很多經(jīng)驗,相信

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論