單片機(jī)課程設(shè)計(jì)-- 8路搶答器設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  單片機(jī)原理及接口技術(shù)</p><p><b>  課程設(shè)計(jì)報(bào)告 </b></p><p>  課題: 8路搶答器設(shè)計(jì) </p><p>  學(xué)院: 軌道交通學(xué)院 </p><p>  專業(yè): 交通設(shè)備信息工程 &l

2、t;/p><p>  班級(jí): </p><p>  姓名: </p><p>  成員: </p><p>  學(xué)號(hào):

3、 </p><p>  指導(dǎo)老師: </p><p><b>  2014年1月</b></p><p><b>  任 務(wù) 書</b></p><p>  課題: 8路搶答器設(shè)計(jì)</p><p><

4、b>  一、設(shè)計(jì)任務(wù)</b></p><p>  設(shè)計(jì)一個(gè)可供8組同時(shí)使用的搶答器。</p><p>  1.設(shè)計(jì)系統(tǒng)的硬件和軟件設(shè)計(jì)。</p><p>  2.要求顯示搶答的結(jié)果,并有45s的答題時(shí)間顯示。</p><p><b>  二、基本要求</b></p><p>  

5、1、 設(shè)計(jì)系統(tǒng)的硬件和軟件設(shè)計(jì);</p><p>  2、撰寫課程設(shè)計(jì)報(bào)告。</p><p>  3、課程設(shè)計(jì)報(bào)告由封面、設(shè)計(jì)任務(wù)書、目錄、摘要、正文、參考文獻(xiàn)、附錄等部分組成。</p><p>  4、封面可自行設(shè)計(jì),應(yīng)包含課程設(shè)計(jì)名稱及設(shè)計(jì)題目、專業(yè)、班級(jí)、姓名、指導(dǎo)老師、設(shè)計(jì)日期等內(nèi)容。</p><p>  5、正文是設(shè)計(jì)報(bào)告的核心部分

6、。應(yīng)包含以下內(nèi)容:(1)概述所做課題的意義、本人所做的工作及系統(tǒng)的主要功能;(2)硬件電路設(shè)計(jì)及描述;(3)軟件設(shè)計(jì)流程圖及描述;(4)源程序代碼(要有注釋);(5)體會(huì)和建議等。</p><p><b>  摘 要</b></p><p>  搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個(gè)

7、單位,如果專門購(gòu)一臺(tái)搶答器雖然在經(jīng)濟(jì)上可以承受,但每年使用的次數(shù)極少,往往因長(zhǎng)期存放使(電子器件的)搶答器損壞,再購(gòu)置的麻煩和及時(shí)性就會(huì)影響活動(dòng)的開展,因此設(shè)計(jì)了本搶答器。本文設(shè)計(jì)出以AT89C51單片機(jī)為核心的八路搶答器,采用了數(shù)字顯示器直接指示,自動(dòng)鎖存顯示結(jié)果,并自動(dòng)復(fù)位的設(shè)計(jì)思想,它能根據(jù)不同的搶答輸入信號(hào),經(jīng)過單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號(hào)相對(duì)應(yīng)的輸出信號(hào),最后通過LED數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組的搶答時(shí)間相差幾微

8、秒,也可分辨出是哪組優(yōu)先按下的按鍵,充分利用了單片機(jī)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大、可靠性好、實(shí)用性強(qiáng)的特點(diǎn)。</p><p>  本設(shè)計(jì)是以八路搶答為基本理念??紤]到依需設(shè)定限時(shí)回答的功能,利用</p><p>  AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)

9、做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;</p><p>  有45s的答題時(shí)間顯示;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時(shí)間和回答問題時(shí)間倒計(jì)時(shí)顯示,滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。</p><p>  關(guān)鍵詞: 搶答器 單片機(jī) LED數(shù)碼顯示管

10、 計(jì)時(shí)</p><p><b>  目 錄</b></p><p><b>  1.概述1</b></p><p><b>  2.方案比較2</b></p><p><b>  2.1 方案A2</b></p><p>&

11、lt;b>  2.2 方案B3</b></p><p><b>  3.硬件設(shè)計(jì)4</b></p><p>  3.1原理圖的確定4</p><p>  3.2搶答器電路4</p><p>  3.3時(shí)序控制電路設(shè)計(jì)5</p><p>  3.4復(fù)位電路的設(shè)計(jì)5<

12、;/p><p>  3.5晶振電路的設(shè)計(jì)6</p><p>  3.6報(bào)警電路設(shè)計(jì)7</p><p>  3.7選手搶答鍵(矩陣式鍵盤)7</p><p>  3.8顯示與顯示驅(qū)動(dòng)電路8</p><p><b>  4.程序設(shè)計(jì)8</b></p><p>  4.1系

13、統(tǒng)主程序設(shè)計(jì)8</p><p>  4.2顯示搶答違規(guī)流程10</p><p>  4.3搶答成功流程圖10</p><p>  4.4程序清單10</p><p><b>  5.調(diào)試結(jié)果11</b></p><p><b>  6.元件清單12</b><

14、/p><p><b>  7.小結(jié)13</b></p><p><b>  參考文獻(xiàn)14</b></p><p><b>  附錄一15</b></p><p><b>  附錄二23</b></p><p><b>

15、  8路搶答器設(shè)計(jì)</b></p><p>  摘要: 本設(shè)計(jì)是以八路搶答為基本理念。考慮到依需設(shè)定限時(shí)回答的功能,利用AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無

16、效;</p><p>  有45s的答題時(shí)間顯示;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時(shí)間和回答問題時(shí)間倒計(jì)時(shí)顯示,滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。</p><p>  關(guān)鍵詞:搶答器 單片機(jī) LED數(shù)碼顯示管 計(jì)時(shí)</p><p><b>  1.概述</b><

17、;/p><p>  單片機(jī)原理及應(yīng)用課程設(shè)計(jì)是學(xué)生綜合運(yùn)用所學(xué)知識(shí),全面掌握單片微型計(jì)算機(jī)及其接口的工作原理、編程和使用方法的重要實(shí)踐環(huán)節(jié)。通過獨(dú)立或協(xié)作提出并論證設(shè)計(jì)方案,進(jìn)行軟、硬件調(diào)試,最后獲得正確的運(yùn)行結(jié)果,可以加深和鞏固對(duì)理論教學(xué)和實(shí)驗(yàn)教學(xué)內(nèi)容的掌握,進(jìn)一步建立計(jì)算機(jī)應(yīng)用系統(tǒng)整體概念,初步掌握單片機(jī)軟、硬件開發(fā)方法。</p><p>  根據(jù)單片機(jī)原理及應(yīng)用課程的要求,主要進(jìn)行兩個(gè)方

18、面的設(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)單使用。</p><p>  存儲(chǔ)器擴(kuò)展設(shè)計(jì)要求學(xué)生掌握常用半導(dǎo)體芯片與單片機(jī)的接口,如EPROM存儲(chǔ)器用作外部程序存儲(chǔ)器時(shí)與單片機(jī)的連接關(guān)系,SRAM存儲(chǔ)器用作外部數(shù)據(jù)存儲(chǔ)器時(shí)與單片

19、機(jī)的連接關(guān)系,E2PROM存儲(chǔ)器用作外部程序/數(shù)據(jù)存儲(chǔ)器時(shí)與單片機(jī)的連接關(guān)系。能合理分配和使用單片機(jī)的內(nèi)部和外部存儲(chǔ)器,編程實(shí)現(xiàn)正常的讀寫功能。</p><p>  本文設(shè)計(jì)出以AT89C51單片機(jī)為核心的八路搶答器,采用了數(shù)字顯示器直接指示,自動(dòng)鎖存顯示結(jié)果,并自動(dòng)復(fù)位的設(shè)計(jì)思想,它能根據(jù)不同的搶答輸入信號(hào),經(jīng)過單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號(hào)相對(duì)應(yīng)的輸出信號(hào),最后通過LED數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組

20、的搶答時(shí)間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,充分利用了單片機(jī)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大、可靠性好、實(shí)用性強(qiáng)的特點(diǎn)。</p><p><b>  2.方案比較</b></p><p><b>  2.1 方案A</b></p><p>  該系統(tǒng)采用51系列單片機(jī)AT89C51作為控制核心,該系統(tǒng)可以完成運(yùn)算控制、信號(hào)

21、識(shí)別以及顯示功能的實(shí)現(xiàn)。由于用了單片機(jī),使其技術(shù)比較成熟,應(yīng)用起來方便、簡(jiǎn)單并且單片機(jī)周圍的輔助電路也比較少,便于控制和實(shí)現(xiàn)。整個(gè)系統(tǒng)具有極其靈活的可編程性,能方便地對(duì)系統(tǒng)進(jìn)行功能的擴(kuò)張和更改。MCS-51單片機(jī)特點(diǎn)如下:</p><p>  <1>可靠性好:?jiǎn)纹瑱C(jī)按照工業(yè)控制要求設(shè)計(jì),抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫在ROM里,許多信號(hào)通道都在同一芯片,因此可靠性高,易擴(kuò)充。

22、</p><p>  <2>單片機(jī)有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴(kuò)充為各種規(guī)模的微電腦系統(tǒng)。</p><p>  <3> 控制功能強(qiáng):?jiǎn)纹瑱C(jī)指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。其原理框圖如下:</p><p><b>  2.2 方案B</b></p

23、><p>  根據(jù)PLC智能搶答器的控制要求,應(yīng)用程序采用一體化結(jié)構(gòu)。通過PLC控制程序來實(shí)現(xiàn)整體的運(yùn)行,系統(tǒng)僅需要少量的按鈕和接口,一般的PLC配置都可運(yùn)行。該系統(tǒng)本著簡(jiǎn)單易懂、可靠性強(qiáng)、適應(yīng)性強(qiáng)等方面進(jìn)行設(shè)計(jì)。在搶答時(shí)只需按動(dòng)按鈕即可數(shù)碼管在系統(tǒng)程序的控制下自動(dòng)顯示組號(hào)以及倒計(jì)時(shí)時(shí)間。安全、可靠、省時(shí)、省力、價(jià)格便宜。</p><p>  控制軟件應(yīng)用GX Developer編程軟件,采用

24、梯形圖語(yǔ)言編寫,工作系統(tǒng)自動(dòng)控制流程框圖(如下圖),根據(jù)系統(tǒng)控制要求,進(jìn)行針對(duì)性設(shè)計(jì),要充分保證系統(tǒng)的安全,保證整個(gè)系統(tǒng)的運(yùn)行安全可靠。自動(dòng)條件下,必須復(fù)位在滿足自動(dòng)條件下才能進(jìn)行自動(dòng)程序,當(dāng)中充分應(yīng)用各個(gè)過程的互鎖來保證系統(tǒng)的安全。如下圖,有主程序和若干子程序組成,其整體設(shè)計(jì)工作系統(tǒng)自動(dòng)控制流程圖如下圖所示:</p><p>  考慮到我們課程設(shè)計(jì)的目的之一是讓我們更加熟悉單片機(jī)的匯編語(yǔ)言和結(jié)構(gòu)規(guī)則,以及綜合各

25、種因素,我們選擇了方案A作為我們的實(shí)驗(yàn)方案。</p><p><b>  3.硬件設(shè)計(jì)</b></p><p><b>  3.1原理圖的確定</b></p><p>  單片機(jī)實(shí)現(xiàn)搶答的原理圖:</p><p><b>  搶答電路的接口電路</b></p>&

26、lt;p><b>  3.2搶答器電路</b></p><p>  參考電路如上圖所示。該電路完成兩個(gè)功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號(hào),同時(shí)譯碼顯示電路顯示編號(hào);二是禁止其他選手按鍵操作無效。如有再次搶答需由主持人將S開關(guān)重新置,“清除”然后再進(jìn)行下一次搶答。</p><p>  3.3時(shí)序控制電路設(shè)計(jì)</p><p&g

27、t;  時(shí)序控制電路是搶答器設(shè)計(jì)的關(guān)鍵,它要完成以下功能:</p><p>  主持人將控制開關(guān)撥到“開始”位置時(shí),揚(yáng)聲器發(fā)聲,搶答器電路和定時(shí)電路進(jìn)入正確搶答工作狀態(tài)。</p><p>  當(dāng)參賽選手按下?lián)尨疰I時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路停止工作。</p><p>  3.4復(fù)位電路的設(shè)計(jì)</p><p>  外部中斷和內(nèi)部中斷并存,

28、單片機(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í)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完成復(fù)位。復(fù)位電路如下圖所示:</p><p><b>  復(fù)位電路原理圖</b></p><p>

29、  該復(fù)位電路采用上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種復(fù)位方式,圖中網(wǎng)絡(luò)標(biāo)號(hào)所指9連接到單片機(jī)的復(fù)位引腳。要實(shí)現(xiàn)復(fù)位只需在,51系列單片機(jī)的RESET引腳上加上5ms的高電平就可以了。上電復(fù)位是利用電容的充電來實(shí)現(xiàn)的,即上電瞬間RESET端的電位與Vcc相同,隨著電容上儲(chǔ)能增加,電容電壓也逐漸增大,充電電流減小,RESET端的電位。這樣就會(huì)建立一個(gè)脈沖電壓,調(diào)節(jié)電容與電阻的大小可對(duì)脈沖的持續(xù)時(shí)間進(jìn)行調(diào)節(jié)。通常若采用12MHz的晶振時(shí),復(fù)位元件參數(shù)

30、為22μF的電解電容和10kΩ的電阻。按鈕復(fù)位電路是通過按下復(fù)位按鈕</p><p>  時(shí),電源對(duì)RESET端維持兩個(gè)機(jī)器周期的高電平實(shí)現(xiàn)復(fù)位的。</p><p>  3.5晶振電路的設(shè)計(jì)</p><p>  MSC-51單片機(jī)的定時(shí)控制功能是用時(shí)鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)中采用內(nèi)部時(shí)鐘方式。<

31、/p><p>  單片機(jī)內(nèi)部有一個(gè)反相放大器,XTAL1、XTAL2分別為反相放大器的輸入端和輸出端,外接定時(shí)反饋元件組成振蕩器(內(nèi)部時(shí)鐘方式),產(chǎn)生時(shí)鐘送至單片機(jī)內(nèi)部各元件。時(shí)鐘頻率越高,單片機(jī)控制器的控制節(jié)拍就越快,運(yùn)算速度也就越快。</p><p>  一般來說單片機(jī)內(nèi)部有一個(gè)帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-2所示。加電以后延時(shí)一段時(shí)間(約

32、10ms)振蕩器產(chǎn)生時(shí)鐘,不受軟件控制,圖中Y1為晶振,震蕩產(chǎn)生的時(shí)鐘頻率主要由Y1確定。電容C1,C2的作用有兩個(gè):一是幫助振蕩器起振,二是對(duì)振蕩器的頻率起微調(diào)作用,典型值為30pF。</p><p>  晶振電路的設(shè)計(jì)如圖2-2所示:</p><p><b>  晶振電路原理圖</b></p><p><b>  3.6報(bào)警電路設(shè)

33、計(jì)</b></p><p>  報(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á)到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個(gè)10K的上拉電阻。</p&g

34、t;<p>  選手在設(shè)定的時(shí)間內(nèi)搶答時(shí),實(shí)現(xiàn):優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次作"清除"和"開始"狀態(tài)開關(guān)。</p><p><b>  報(bào)警電路圖</b></p><p>  3.7選手搶答鍵(矩陣式鍵盤)<

35、;/p><p>  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)。</p><p>  3.8顯示與顯示驅(qū)動(dòng)電路</p><p>  此電路包括顯示和驅(qū)動(dòng),顯示采用數(shù)碼管,驅(qū)動(dòng)用P2口, 違規(guī)者編號(hào)、搶答

36、30秒倒計(jì)時(shí)、正常搶答者編號(hào)和回答問題時(shí)間60秒倒計(jì)時(shí),數(shù)碼管采用動(dòng)態(tài)</p><p>  顯示。驅(qū)動(dòng)電路P2口,查詢顯示程序利用P0口做段選碼口輸出P2低3位做位選碼輸出,當(dāng)為低電平則能驅(qū)動(dòng)數(shù)碼管使其顯示數(shù)字。在+5V電壓下接10k的電阻,保證正常壓降。</p><p><b>  4.程序設(shè)計(jì)</b></p><p>  4.1系統(tǒng)主程序設(shè)

37、計(jì)</p><p>  為了能夠達(dá)到搶答的公平、公正、合理,應(yīng)該在主持人發(fā)布搶答命令之前必須先設(shè)定搶答的時(shí)間,因而在編開始搶答前的程序得先編寫設(shè)定時(shí)間的程序,當(dāng)時(shí)間設(shè)好了之后,主持人發(fā)布搶答命令按下P1.7按鍵,程序開始打開定時(shí)中斷開始倒計(jì)時(shí),然后調(diào)用鍵盤掃描子程序,編寫鍵盤掃描程序。當(dāng)在掃描到有人按下了答題鍵,馬上關(guān)閉T0、調(diào)用顯示程序、封鎖鍵盤。</p><p><b>  

38、系統(tǒng)主程序流程</b></p><p>  4.2顯示搶答違規(guī)流程</p><p>  4.3搶答成功流程圖</p><p><b>  4.4程序清單</b></p><p><b>  詳見附錄一。</b></p><p><b>  5.調(diào)試結(jié)果&

39、lt;/b></p><p>  試驗(yàn)的程序通過Keil軟件編譯,產(chǎn)生HEX文件如圖4-1所示:</p><p>  程序在Keil軟件上編譯結(jié)果</p><p>  通過Proteus進(jìn)行仿真,如仿真結(jié)果所示,按下開始后,數(shù)碼管開始倒計(jì)時(shí),仿真結(jié)果如圖4-2所示。</p><p>  Proteus仿真的結(jié)果</p>&

40、lt;p>  當(dāng)有選手按下按扭時(shí),數(shù)碼管顯示選手號(hào)碼并開始倒計(jì)時(shí),如下圖所示</p><p>  Proteus仿真的結(jié)果</p><p><b>  6.元件清單</b></p><p><b>  7.小結(jié)</b></p><p>  經(jīng)過將近一周的單片機(jī)課程設(shè)計(jì),終于完成了八路搶答器的設(shè)

41、計(jì),雖然沒有完全達(dá)到設(shè)計(jì)要求,但還是收獲良多。通過這次課程設(shè)計(jì),使我更進(jìn)一步地熟悉了單片機(jī)芯片的工作原理和其具體的使用方法。單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,這鍛煉了自己獨(dú)立思考問題的能力和通過查看相關(guān)資料來解決問題的習(xí)慣。還有了解了課程設(shè)計(jì)的一般步驟,和設(shè)計(jì)中應(yīng)注意的問題。</p><p>  設(shè)計(jì)不僅是對(duì)前面所學(xué)知識(shí)的一種檢驗(yàn),而且也是對(duì)自己能力的一種提高。下面我對(duì)整個(gè)設(shè)計(jì)的過程

42、做一下簡(jiǎn)單的總結(jié)。第一,接到任務(wù)以后進(jìn)行選題。選題是設(shè)計(jì)的開端,選擇恰當(dāng)?shù)?、感興趣的題目,這對(duì)于整個(gè)設(shè)計(jì)是否能夠順利進(jìn)行關(guān)系極大。好比走路,這開始的第一步是具有決定意義的,第一步邁向何方,需要慎重考慮。否則,就可能走許多彎路、費(fèi)許多周折,甚至南轅北轍,難以到達(dá)目的地。因此,選題時(shí)一定要考慮好了。第二,題目確定后就是找資料了。查資料是做設(shè)計(jì)的前期準(zhǔn)備工作,不管通過哪種方式查的資料都是有利用價(jià)值的,要一一記錄下來以備后用。第三,通過上面的過

43、程,已經(jīng)積累了不少資料,對(duì)所選的題目也大概有了一些了解,這一步就是在這樣一個(gè)基礎(chǔ)上,綜合已有的資料來更透徹的分析題目。第四,有了研究方向,就應(yīng)該動(dòng)手實(shí)現(xiàn)了。其實(shí)以前的三步都是為這一步作的鋪墊。通過這次設(shè)計(jì),我對(duì)數(shù)字電路設(shè)計(jì)中的邏輯關(guān)系等有了一定的認(rèn)識(shí),對(duì)以前學(xué)的數(shù)字電路又有了一定的新認(rèn)識(shí),溫習(xí)了以前學(xué)的知識(shí),就像人們常說的溫故而知新嘛,但在設(shè)計(jì)的過程中,遇到了很多的問題,有一些知識(shí)都已經(jīng)不太清楚了,但是通過一些資料又重新的溫習(xí)了一下數(shù)字

44、電路部分的內(nèi)容。在這次設(shè)計(jì)中也使</p><p>  在此要感謝盧毓俊老師,感謝老師給我這樣的機(jī)會(huì)鍛煉。在整個(gè)設(shè)計(jì)過程中我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹立了對(duì)自己工作能力的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動(dòng)手的能力,使我充分體會(huì)到了在創(chuàng)造過程中的探索的艱難和成功的喜悅。雖然這個(gè)項(xiàng)目還不是很完善,但是在設(shè)計(jì)過程中所學(xué)到的東西是這次設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。&l

45、t;/p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 吳亦峰、陳德為.單片機(jī)原理與接口技術(shù). 北京:電子工業(yè)出版社.2005. </p><p>  [2] 周潤(rùn)景、張麗娜.基于PROTEUS的電路及單片機(jī)仿真. 北京: 航空航天大學(xué)出版社.2007.</p><p>  [3] 胡耀輝、朱朝華等.單片

46、機(jī)系統(tǒng)開發(fā)實(shí)例經(jīng)典.北京:冶金工業(yè)出版社.2006.</p><p>  [4] 張迎新.單片機(jī)初級(jí)教程. 北京: 航空航天大學(xué)出版社.2007. </p><p><b>  附錄一</b></p><p><b>  源程序:</b></p><p>  OK EQU 20H

47、 ;搶答開始標(biāo)志位</p><p>  RING EQU 22H ;響鈴標(biāo)志位</p><p>  DATA0 EQU 36H ;搶答按鍵口數(shù)據(jù)存放地址</p><p><b>  ORG 0000H</b></p><p><b>  AJMP MAIN</b><

48、;/p><p><b>  ORG 0003H</b></p><p>  AJMP INT0SUB</p><p><b>  ORG 000BH</b></p><p>  AJMP T0INT</p><p><b>  ORG 0013H</b>&l

49、t;/p><p>  AJMP INT1SUB</p><p><b>  ORG 001BH</b></p><p>  AJMP T1INT</p><p><b>  ORG 0040H</b></p><p>  MAIN: MOV R1,#30 ;初設(shè)搶

50、答時(shí)間為30s</p><p>  MOV R2,#45 ;初設(shè)答題時(shí)間為45s</p><p>  MOV TMOD,#11H ;設(shè)置未定時(shí)器/模式1</p><p>  MOV TH0,#0F0H</p><p>  MOV TL0,#0FFH ;越高發(fā)聲頻率越高,越尖</p><p>

51、  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H ;50ms為一次溢出中斷</p><p><b>  SETB EA</b></p><p><b>  SETB ET0</b></p><p><b>  SETB ET1</b><

52、/p><p><b>  SETB EX0</b></p><p>  SETB EX1 ;允許四個(gè)中斷,T0/T1/INT0/INT1</p><p><b>  CLR OK</b></p><p><b>  CLR RING</b></p>

53、<p><b>  SETB TR1</b></p><p>  SETB TR0 ;一開始就運(yùn)行定時(shí)器,以開始顯示PPP.如果想重新計(jì)數(shù),重置TH1/TL1就可以了</p><p><b>  ;查詢程序</b></p><p>  START: MOV DATA0,#0FFH

54、 ;初始化</p><p>  MOV R5,#0BH</p><p>  MOV R4,#0BH</p><p>  MOV R3,#0BH</p><p>  ACALL DISPLAY ;未開始搶答時(shí)候顯示PPP</p><p>  JNB P3.3 ,INT0SUB</p&

55、gt;<p>  JNB P3.4,TZ1 ;倒計(jì)時(shí)調(diào)整</p><p>  JB P3.0,NEXT ;ddddddd</p><p>  ACALL DELAY</p><p>  JB P3.0,NEXT ;去抖動(dòng),如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢&l

56、t;/p><p>  SETB EX0 ;開放INT0 </p><p>  ACALL BARK ;按鍵發(fā)聲</p><p><b>  MOV A,R1</b></p><p>  MOV R6,A ;送R1->R6,因?yàn)镽

57、1中保存了搶答時(shí)間</p><p>  SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答(在使用錦囊時(shí)用作判斷是搶答倒計(jì)時(shí)還是回答倒計(jì)時(shí))</p><p>  MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)</p><p>  AJMP COUNT

58、 ;進(jìn)入倒計(jì)時(shí)程序,"查詢有效搶答的程序"在COUNT里面</p><p>  NEXT: JNB P1.0,FALSE1</p><p>  JNB P1.1,FALSE2</p><p>  JNB P1.2,FALSE3</p><p>  JNB P1.3,FALSE4</p><p&

59、gt;  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><p>  TZ1: JMP FALSE7</p><p

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

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

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

63、SE6: ACALL BARK</p><p>  MOV R3,#06H</p><p>  AJMP ERROR</p><p>  FALSE7: ACALL BARK</p><p>  MOV R3,#07H</p><p>  AJMP ERROR</p><p>  FALSE8:

64、 ACALL BARK</p><p>  MOV R3,#08H</p><p>  AJMP ERROR</p><p>  ;INT0(搶答時(shí)間R1調(diào)整程序)</p><p>  INT0SUB: MOV A,R1</p><p>  MOV B,#0AH</p><p><b>

65、;  DIV AB</b></p><p><b>  MOV R5,A</b></p><p><b>  MOV R4,B</b></p><p>  MOV R3,#0AH</p><p>  ACALL DISPLAY ;先在兩個(gè)時(shí)間LED上顯示R1<

66、;/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,BACK0 ;P3.1為確定鍵,如按下跳到BACKO</p>

67、;<p>  AJMP INT0SUB</p><p>  INC0: MOV A,R1</p><p>  CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。</p><p>  MOV R1,#00H</p><p>  ACALL D

68、ELAY1</p><p>  AJMP INT0SUB</p><p>  ADD0: INC R1</p><p>  ACALL DELAY1</p><p>  AJMP INT0SUB</p><p>  DEC0: MOV A,R1</p><p>  JZ SETR1

69、 ;如果R1為0, R1就置99,</p><p><b>  DEC R1</b></p><p>  ACALL DELAY1</p><p>  AJMP INT0SUB</p><p>  SETR1: MOV R1,#63H</p><p>  ACA

70、LL DELAY1</p><p>  AJMP INT0SUB</p><p>  BACK0: RETI </p><p>  ;INT1(回答時(shí)間R2調(diào)整程序)</p><p>  INT1SUB: MOV A,R2</p><p>  MOV B,#0AH</p><p><b

71、>  DIV AB</b></p><p><b>  MOV R5,A</b></p><p><b>  MOV R4,B</b></p><p>  MOV R3,#0AH</p><p>  ACALL DISPLAY</p><p>  JNB P

72、3.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><p>  CJNE A,#63H,ADD1</p><p>  MOV

73、 R2,#00H</p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  ADD1: INC R2</p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  DEC1: MOV

74、A,R2</p><p><b>  JZ SETR2</b></p><p><b>  DEC R2</b></p><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  SETR2: MOV R2,#63H</p

75、><p>  ACALL DELAY1</p><p>  AJMP INT1SUB</p><p>  BACK1: RETI </p><p>  ;倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)和回答倒計(jì)時(shí)都跳到改程序)</p><p>  COUNT: MOV R0,#00H ;重置定時(shí)器中斷次數(shù)</p&

76、gt;<p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H ;重置定時(shí)器</p><p>  RECOUNT: MOV A,R6 ;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6</p><p>  MOV B,#0AH</p><p>

77、;  DIV AB ;除十分出個(gè)位/十位</p><p>  MOV 30H,A ;十位存于(30H)</p><p>  MOV 31H,B ;個(gè)位存于(31H)</p><p>  MOV R5,30H ;取十位</p>

78、;<p>  MOV R4,31H ;取個(gè)位</p><p><b>  MOV A,R6</b></p><p>  SUBB A,#07H</p><p>  JNC LARGER ;大于5s跳到LARGER,小于等于5s會(huì)提醒</p><p>

79、;<b>  MOV A,R0</b></p><p>  CJNE A,#0AH,FULL ;1s中0.5s向下運(yùn)行</p><p><b>  CLR RING </b></p><p>  AJMP CHECK</p><p>  FULL: CJNE A,#14H,CHECK

80、 ;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)</p><p><b>  SETB RING</b></p><p><b>  MOV A,R6</b></p><p>  JZ QUIT ;計(jì)時(shí)完畢</p><p>  MOV R0,#00H&l

81、t;/p><p>  DEC R6 ;一秒標(biāo)志減1</p><p>  AJMP CHECK</p><p>  LARGER: MOV A,R0</p><p>  CJNE A,#14H,CHECK ;如果1s向下運(yùn)行,否者跳到查"停/顯示"</p>

82、<p>  DEC R6 ;計(jì)時(shí)一秒R6自動(dòng)減1</p><p>  MOV R0,#00H</p><p>  CHECK: JNB P3.1,QUIT ;如按下停止鍵退出</p><p>  ACALL DISPLAY</p><p>  JB OK,AC

83、COUT ;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)</p><p>  AJMP RECOUNT</p><p>  ACCOUT: MOV A,DATA0 </p><p>  JNB P1.0,TRUE1</p><p>  JNB P1.1,TRUE2<

84、;/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 P1.6,TZ3</p><p>  JNB P1.7,TZ4</

85、p><p>  AJMP RECOUNT</p><p>  TZ3: JMP TRUE7</p><p>  TZ4: JMP TRUE8 </p><p>  QUIT: CLR OK ;如果按下了"停止鍵"執(zhí)行的程序</p>&l

86、t;p><b>  CLR RING</b></p><p>  AJMP START</p><p><b>  ;正常搶答處理程序</b></p><p>  TRUE1: ACALL BARK ;按鍵發(fā)聲</p><p><b>  MOV A

87、,R2</b></p><p>  MOV R6,A ;搶答時(shí)間R2送R6</p><p>  MOV R3,#01H</p><p>  CLR OK ;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答</p><p>  AJMP COUN

88、T</p><p>  TRUE2:ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#02H</p><p><b>  CLR OK</b&

89、gt;</p><p>  AJMP COUNT</p><p>  TRUE3:ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#03H</p>

90、<p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE4:ACALL BARK;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p>

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

92、lt;b>  MOV R6,A</b></p><p>  MOV R3,#05H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE6: ACALL BARK;</p><p><b>  MOV

93、 A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#06H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT</p><p>  TRUE7: ACALL BAR

94、K;</p><p><b>  MOV A,R2</b></p><p><b>  MOV R6,A</b></p><p>  MOV R3,#07H</p><p><b>  CLR OK</b></p><p>  AJMP COUNT<

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

96、;</p><p>  AJMP COUNT</p><p><b>  ;犯規(guī)搶答程序</b></p><p>  ERROR: MOV R0,#00H</p><p>  MOV TH1,#3CH</p><p>  MOV TL1,#0B0H</p><p>  M

97、OV 34H,R3 ;犯規(guī)號(hào)數(shù)暫存與(34H)</p><p>  HERE: MOV A,R0</p><p>  CJNE A,#0AH,FLASH ;0.5s向下運(yùn)行->滅并停響</p><p><b>  CLR RING </b></p>

98、<p>  MOV R3,#0AH</p><p>  MOV R4,#0AH</p><p>  MOV R5,#0AH ;三燈全滅</p><p>  AJMP CHECK1</p><p>  FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情況,響并顯示號(hào)

99、數(shù)并清R0,重新計(jì)</p><p><b>  SETB RING</b></p><p>  MOV R0,#00H</p><p>  MOV R3,34H ;取回號(hào)數(shù)</p><p>  MOV R5,#0BH</p><p>  MOV R4,#0

100、BH ;顯示PP和號(hào)數(shù)</p><p>  AJMP CHECK1</p><p>  CHECK1: JNB P3.1,QUIT1</p><p>  ACALL DISPLAY</p><p><b>  AJMP HERE</b></p><p>  QUIT

101、1: CLR RING</p><p><b>  CLR OK</b></p><p>  AJMP START</p><p><b>  ;顯示程序</b></p><p>  DISPLAY:MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸出/P2

102、低三位做位選碼輸出,</p><p><b>  MOV A,R3</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2,#0feH</p><p><b>  MOV P0,A</b></p><p>  ACALL DELAY<

103、/p><p>  MOV DPTR,#DAT2</p><p><b>  MOV A,R5</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2,#0fdH</p><p><b>  MOV P0,A</b></p><

104、;p>  ACALL DELAY</p><p><b>  MOV A,R4</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV P2,#0fbH</p><p><b>  MOV P0,A</b></p><p>  ACALL

105、DELAY</p><p><b>  RET</b></p><p>  DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H </p><p>  ;"滅","1","2","3","4&qu

106、ot;,"5","6","7","8","9","滅","P"</p><p>  DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H</p><p>  ;第一個(gè)為零,其他與上相同,因?yàn)槭?/p>

107、如果為零顯示熄滅</p><p>  ;加減時(shí)間延時(shí)(起到不會(huì)按下就加N個(gè)數(shù))</p><p>  DELAY1: MOV 35H,#08H</p><p>  LOOP0: ACALL DISPLAY</p><p>  DJNZ 35H,LOOP0</p><p><b>  RET</b>

108、</p><p>  ;延時(shí)(顯示和去抖動(dòng)用到)</p><p>  DELAY: MOV 32H,#12H</p><p>  LOOP: MOV 33H,#0AFH</p><p>  LOOP1: DJNZ 33H,LOOP1</p><p>  DJNZ 32H,LOOP</p><

109、p><b>  RET</b></p><p><b>  ;發(fā)聲程序</b></p><p>  BARK: SETB RING</p><p>  ACALL DELAY1</p><p>  ACALL DELAY1</p><p>  CLR RING

110、 ;按鍵發(fā)聲</p><p><b>  RET</b></p><p>  ;TO溢出中斷(響鈴程序)</p><p>  T0INT: MOV TH0,#0ECH</p><p>  MOV TL0,#0FFH</p><p>  JNB RING,OUT;

111、</p><p>  CPL P3.6 ;RING標(biāo)志位為1時(shí)候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音</p><p>  OUT: RETI</p><p>  ;T1溢出中斷(計(jì)時(shí)程序)</p><p>  T1INT: MOV TH1,#3CH</p><p>  MO

112、V TL1,#0B0H</p><p><b>  INC R0</b></p><p><b>  RETI</b></p><p>  ;INTT0中斷服務(wù)程序</p><p>  INTT0:MOV DATA0,P1</p><p><b>  CLR EX0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論