版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文)</p><p> 設(shè)計(jì)題目: 走馬燈多工作模式控制系統(tǒng)設(shè)計(jì)</p><p> 專(zhuān) 業(yè): 應(yīng)用電子技術(shù) </p><p> 班 級(jí): 應(yīng)電08-3 </p><p> 學(xué) 號(hào):
2、 </p><p> 姓 名: </p><p> 指導(dǎo)教師: </p><p><b> 二0一0年七月十日</b></p><p> 畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)</p><p><b>
3、 目 錄</b></p><p><b> 摘 要1</b></p><p><b> 第1章 緒論2</b></p><p> 第2章 系統(tǒng)的方案論證與比較3</p><p> 2.1 方案的比較3</p><p> 2.2 方案論證4&l
4、t;/p><p> 第3章 系統(tǒng)硬件設(shè)計(jì)5</p><p> 3.1 主控芯片的介紹5</p><p> 3.1.1 8051內(nèi)部結(jié)構(gòu)6</p><p> 3.1.2 8051信號(hào)引腳7</p><p> 3.2 時(shí)鐘電路功能以及工作原理的分析9</p><p> 3.3 復(fù)位
5、電路功能以及工作原理的分析10</p><p> 3.4 顯示電路10</p><p> 3.5 按鍵電路的結(jié)構(gòu)和工作原理11</p><p> 3.6 彩燈控制12</p><p> 3.7 整機(jī)電路工作原理12</p><p> 第4章 軟件設(shè)計(jì)14</p><p>
6、 4.1 主程序模塊14</p><p> 4.2 定時(shí)器中斷模塊15</p><p> 4.3 顯示部分模塊16</p><p> 4.4 模式選擇模塊17</p><p> 第5章 系統(tǒng)的仿真與調(diào)試20</p><p> 5.1 Keil C51 軟件的使用20</p><
7、p> 5.2 Proteus 軟件仿真21</p><p> 5.3 仿真效果21</p><p><b> 結(jié) 論22</b></p><p><b> 參考文獻(xiàn)23</b></p><p> 附錄1 源程序24</p><p> 附錄2 整機(jī)
8、電路圖33</p><p> 附錄3 元器件明細(xì)表34</p><p><b> 摘 要</b></p><p> 隨著社會(huì)的進(jìn)步電子技術(shù)的應(yīng)用越來(lái)越廣泛,單片機(jī)應(yīng)用技術(shù)作為計(jì)算機(jī)技術(shù)的一個(gè)重要分支,也因此廣泛應(yīng)用到工業(yè)控制、智能化儀器儀表、家用電器、電子玩具等各個(gè)領(lǐng)域,它具有結(jié)構(gòu)簡(jiǎn)單、控制功能強(qiáng)、可靠性高、體積小、價(jià)格低等優(yōu)點(diǎn)。電子
9、設(shè)計(jì)也就成為整個(gè)的綜合體。通過(guò)電子設(shè)計(jì)可以培養(yǎng)學(xué)生的電子系統(tǒng)設(shè)計(jì)能力,加強(qiáng)實(shí)踐能力和動(dòng)手操作能力以及能力。隨著社會(huì)的發(fā)展廣告越來(lái)越體現(xiàn)出其的重要價(jià)值。夜晚,華燈初上整個(gè)城市被五顏六色豐富多彩的廣告牌閃爍的格外美麗,它們閃爍的多姿多彩代表這整個(gè)城市的繁華與向榮,所以本次電子設(shè)計(jì)是以AT89C51單片機(jī)作為主控核心,與按鍵、發(fā)光二極管、LED數(shù)碼管顯示器等較少的輔助的硬件電路相結(jié)合,利用軟件對(duì)彩燈進(jìn)行控制閃爍樣式,發(fā)光二極管采用多種顏色,顯
10、示的閃爍模式也是多樣的,給人一種悅目的感覺(jué)。本系統(tǒng)具有體積小、硬件少、電路結(jié)構(gòu)簡(jiǎn)單及容易操作等特點(diǎn)。</p><p> 關(guān)鍵詞 AT89C51;單片機(jī);發(fā)光二極管;彩燈;多種變化</p><p><b> 第1章 緒論</b></p><p> 當(dāng)今時(shí)代是一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動(dòng)化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字
11、邏輯電路控制的系統(tǒng),正以前所未見(jiàn)的速度被單片機(jī)智能控制系統(tǒng)所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說(shuō)是,智能控制與自動(dòng)控制的核心就是單片機(jī)。在大學(xué)期間,完成了前期的單片機(jī)基礎(chǔ)知識(shí)學(xué)習(xí)以后,利用理論與實(shí)際相結(jié)合,用AT89C51單片機(jī)自動(dòng)制了一款簡(jiǎn)易的流水燈,重點(diǎn)介紹了用單片機(jī)控制系統(tǒng)的運(yùn)行。在現(xiàn)在諸多的娛樂(lè)場(chǎng)所、理發(fā)店、賓館、飯店、公司等的門(mén)外,都可以看到各式各樣的廣告流水燈。所謂“廣告流水燈”,就是將一系列的顏色
12、的廣告燈連接在一起,然后令這些燈按一定的次序逐個(gè)或者幾個(gè)的一次點(diǎn)亮或熄滅。有各燈點(diǎn)亮和熄滅,產(chǎn)生的效果就像流動(dòng)的水一樣,因此,就稱這類(lèi)廣告燈為“廣告流水燈”。生活中廣告流水燈的形式和點(diǎn)亮的次序是多種多樣的。由單一顏色的幾個(gè)按固定的次序來(lái)點(diǎn)亮的,有多個(gè)不同顏色的燈構(gòu)成某一圖案依次點(diǎn)亮的也有多排廣告燈按多種組合好的次序循環(huán)點(diǎn)亮的等。這次設(shè)計(jì)的廣告流水燈,就是這些廣告燈中的類(lèi)型。</p><p> 第2章 系統(tǒng)的方案
13、論證與比較</p><p><b> 2.1 方案的比較</b></p><p><b> 方案一: </b></p><p> 利用CD4017芯片和NE555芯片的集成電路,是CD4017芯片和NE555芯片的綜合運(yùn)用。該流水燈的功能是能夠根據(jù)需要產(chǎn)生多種多樣的變化方式,從而產(chǎn)生豐富多彩的彩燈圖案。本次設(shè)計(jì)的方
14、案中采用了CD4017芯片和NE555芯片來(lái)實(shí)現(xiàn)變化的需要,采用CD4017芯片實(shí)現(xiàn)對(duì)脈沖信號(hào)的分配,使得輸出時(shí)序就是與時(shí)鐘同步的高電平,寬度等于時(shí)鐘周期,NE555產(chǎn)生連續(xù)脈沖輸入,CD4017有連續(xù)脈沖輸入時(shí),其對(duì)應(yīng)的輸出端依次變?yōu)楦唠娖綘顟B(tài),直接用作順序脈沖發(fā)生器,配合二極管,進(jìn)而形成相應(yīng)的多功能流水彩燈電路。原理電路圖由振蕩電路、譯碼電路和光源電路三部分組成。在設(shè)計(jì)電路時(shí),選用的脈沖發(fā)生器是由NE555與R2、R3及C3組成的多
15、諧振蕩器組成。主要是為燈光流動(dòng)控制器提供流動(dòng)控制的脈沖,燈光的流動(dòng)速度可以通過(guò)電位器RP進(jìn)行調(diào)節(jié)。由于RP的阻值較大,所以有較大的速度調(diào)節(jié)范圍。燈光流動(dòng)控制器由一個(gè)十進(jìn)制計(jì)數(shù)脈沖分配器CD4017和若干電阻組成。原理框圖如2-1所示。</p><p> 圖2-1 CD4017控制原理框圖</p><p><b> 方案二: </b></p>&
16、lt;p> 利用51單片機(jī)控制十六個(gè)發(fā)光二極管實(shí)現(xiàn)九種閃爍模式,具有加速減速模式以及數(shù)碼管實(shí)現(xiàn)閃爍模式的個(gè)數(shù)。本設(shè)計(jì)采用了51單片機(jī)來(lái)控制,原理框圖如2-2所示。</p><p><b> 2.2 方案論證</b></p><p> 方案一采用了CD4017芯片和NE555芯片來(lái)實(shí)現(xiàn)變化的需要,采用CD4017芯片實(shí)現(xiàn)對(duì)脈沖信號(hào)的分配,使得輸出時(shí)序就是與時(shí)
17、鐘同步的高電平,寬度等于時(shí)鐘周期,NE555產(chǎn)生連續(xù)脈沖輸入,CD4017有連續(xù)脈沖輸入時(shí),其對(duì)應(yīng)的輸出端依次變?yōu)楦唠娖綘顟B(tài),直接用作順序脈沖發(fā)生器,配合二極管,進(jìn)而形成相應(yīng)的多功能流水彩燈電路。燈光的流動(dòng)速度可以通過(guò)電位器RP進(jìn)行調(diào)節(jié)。方案二利用51單片機(jī)控制具有加速減速功能以及數(shù)碼管實(shí)現(xiàn)閃爍模式的個(gè)數(shù)。二者相比較方案一的電路和操作比較復(fù)雜,最后一點(diǎn)就是數(shù)碼管不顯示模式個(gè)數(shù),這樣不利于我們直觀的看出顯示的模式個(gè)數(shù),也不利于我們調(diào)節(jié)當(dāng)按
18、下模式鍵多次時(shí)會(huì)使我們混亂現(xiàn)象。其硬件電路和軟件調(diào)試比較復(fù)雜,制作成本較高。近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正不斷走向深入。所以我們選用單片機(jī)作為核心部件進(jìn)行邏輯控制及信號(hào)的產(chǎn)生,用單片機(jī)本生的優(yōu)勢(shì)節(jié)約成本.所以綜上所述應(yīng)采用第二種方案為本次設(shè)計(jì)方案。</p><p> 第3章 系統(tǒng)硬件設(shè)計(jì)</p><p> 3.1 主控芯片的介紹</p><p> 單
19、片微型計(jì)算機(jī)(Single Chip Microcomputer)簡(jiǎn)稱單片機(jī),是指集成在一個(gè)芯片上的微型計(jì)算機(jī),它的各種功能部件,包括CPU(Central Processing Unit) 、存儲(chǔ)器(Memory)、基本輸入/輸出(Input/Output, 簡(jiǎn)稱I/O)接口電路、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)等,都制作在一塊集成芯片上,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。單片機(jī)的內(nèi)部基本結(jié)構(gòu)圖如圖3-1所示。目前,單片機(jī)正朝著高性能和多品種方向發(fā)展。
20、今后單片機(jī)的發(fā)展趨勢(shì)將是進(jìn)一步向著CMOS化、低功耗化、低電壓化、低噪聲與高可靠性、大容量、高性能化、低價(jià)格化、外圍電路內(nèi)裝化和串行擴(kuò)展技術(shù)。隨著半導(dǎo)體集成工藝的不斷發(fā)展,單片機(jī)的集成度將更高、體積將更小和功能更強(qiáng)。單片機(jī)已成為計(jì)算機(jī)發(fā)展和應(yīng)用的一個(gè)重要方面,另一方面,單片機(jī)應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法,從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能通過(guò)單片機(jī)能實(shí)現(xiàn)了。這種用軟件代替硬件
21、的控制技術(shù)也稱微控技術(shù),是對(duì)傳統(tǒng)控制技術(shù)的一次革命。單片機(jī)的應(yīng)用系統(tǒng)是以單片機(jī)為核心,配以輸入、輸出、顯示等外圍接口電</p><p> 3.1.1 8051內(nèi)部結(jié)構(gòu)</p><p> 8051是MCS-51系列單片機(jī)的典型芯片,8051片內(nèi)有4KROM,無(wú)需外接存儲(chǔ)器。8051單片機(jī)的內(nèi)部組成如圖3-3所示。其功能劃分由8個(gè)部件組成,分別為:</p><p>
22、 圖3-3 8051 單片機(jī)的內(nèi)部組成</p><p> 1.中央處理器(CPU)</p><p> 中央處理器是單片機(jī)的控制核心,完成運(yùn)算和控制功能。CPU由運(yùn)算器和控制器組成。運(yùn)算器包括一個(gè)8位算術(shù)邏輯單元(Arithmetic Logical Unit,簡(jiǎn)稱ALU)、8位累加器(Accumulator,簡(jiǎn)稱ACC)、8位暫存器寄存器B和程序狀態(tài)寄存器(Program Stat
23、us Word,簡(jiǎn)稱PSW)等??刂破靼ǔ绦蛴?jì)數(shù)器(Program Counter,簡(jiǎn)稱PC)、指令寄存器(Instruction Register,簡(jiǎn)稱IR)、指令譯碼器(Instruction Decoder,簡(jiǎn)稱ID)及控制電路等。</p><p> 2.內(nèi)部數(shù)據(jù)存儲(chǔ)器 RAM (Random Access Memory)</p><p> 8051內(nèi)部共有256個(gè)RAM單元,
24、其中的高128個(gè)單元被專(zhuān)用寄存器占用;低128個(gè)單元供用戶暫存中間數(shù)據(jù),可讀可寫(xiě),掉電后數(shù)據(jù)會(huì)丟失。通常所說(shuō)的的內(nèi)部數(shù)據(jù)存儲(chǔ)器就是指低128個(gè)單元。</p><p> 3.內(nèi)部程序存儲(chǔ)器ROM (Read-only Memory)</p><p> 8051內(nèi)部共有4KB掩模ROM,只能讀不能寫(xiě),掉電后數(shù)據(jù)不會(huì)丟失,用于存放程序或程序運(yùn)行過(guò)程中改變的原始數(shù)據(jù),通常稱為程序存儲(chǔ)器。<
25、;/p><p><b> 4.并行I/O端口</b></p><p> 8051內(nèi)部有4個(gè)8位并行I/O端口(稱為P0、P1、P2和P3),可以實(shí)現(xiàn)數(shù)據(jù)的并行輸入輸出。</p><p><b> 5.串行口</b></p><p> 8051內(nèi)部有一個(gè)全雙工異步串行口,可以實(shí)現(xiàn)單片機(jī)與其他設(shè)備之
26、間的串行數(shù)據(jù)通信。該串行口既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用,擴(kuò)展外部I/O端口。</p><p><b> 6.定時(shí)/計(jì)數(shù)器</b></p><p> 8051內(nèi)部有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,可實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。</p><p><b> 7.中斷系統(tǒng)</b&
27、gt;</p><p> 8051內(nèi)部有5個(gè)中斷源,分為高級(jí)和低級(jí)兩個(gè)優(yōu)先級(jí)別。</p><p><b> 8.時(shí)鐘電路</b></p><p> 8051內(nèi)部有時(shí)鐘電路,只需外接石英晶體和微調(diào)電容即可。晶振頻率通常選擇12MHZ或11.0592MHZ.</p><p> 3.1.2 8051信號(hào)引腳</p
28、><p> 8051單片機(jī)采用標(biāo)準(zhǔn)40引腳雙列直插式封裝,其引腳排列如圖3-4所示,引腳功能見(jiàn)表1-1。</p><p> 表1-1 8051 引腳功能</p><p><b> 1.信號(hào)引腳介紹</b></p><p> ?。?)ALE:系統(tǒng)擴(kuò)展時(shí),P0口是8位數(shù)據(jù)線和低8為地址線復(fù)用引腳,ALE用于把P0口輸出的
29、低8位地址鎖存起來(lái),以實(shí)現(xiàn)低8位地址和數(shù)據(jù)的隔離。</p><p> (2)PSEN:PSEN有效時(shí),可實(shí)現(xiàn)對(duì)外部ROM單元的讀操作。</p><p> (3)EA:當(dāng)EA信號(hào)為低電平是,對(duì)ROM的讀操作限定在外部程序存儲(chǔ)器;而當(dāng)EA為高電平是,對(duì)ROM的讀操作是從內(nèi)部程序存儲(chǔ)器開(kāi)始的,并可延至外部程序存儲(chǔ)器。</p><p> ?。?)RST:當(dāng)輸入的復(fù)位信號(hào)
30、延續(xù)兩個(gè)機(jī)器周期以上的高電平是即為有效,用以完成單片機(jī)的復(fù)位初始化操作。</p><p> ?。?)XTAL1和XTAL2:外接晶體引線端。當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),兩引腳用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時(shí)鐘時(shí),用于連接外部時(shí)鐘脈沖信號(hào)。</p><p><b> VCC:供電電壓。</b></p><p><b> GND:接
31、地。</b></p><p> P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電
32、阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。</p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上
33、拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。</p><p> P3口:P3口是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流
34、(ILL)這是由于上拉的緣故。</p><p> 2.信號(hào)引腳的第二功能</p><p> 為了滿足實(shí)際需要,部分信號(hào)引腳被賦予雙重功能。常用的是8條P3口線所提供的第二功能,如圖1-2所示,</p><p> 表1-2 P3口各引腳的第二功能</p><p> 3.2 時(shí)鐘電路功能以及工作原理的分析</p><
35、p> 時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào),在芯片的外部通過(guò)19腳、18腳接晶體振蕩器和微調(diào)電容。形成反饋電路,構(gòu)成一個(gè)穩(wěn)定的自己振蕩器。電路中的C1、C2一般取30pF左右,而晶體振蕩器的頻率范圍通常是1.2-12MHz.一般使用振蕩頻率為6MHz或12MHz的晶振。晶體振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率也越高,單片機(jī)的運(yùn)行速度也就越快。其電路原理圖如3-1所示。</p><p> 圖3-1 時(shí)鐘電路
36、原理圖</p><p> 3.3 復(fù)位電路功能以及工作原理的分析</p><p> 復(fù)位是單片機(jī)的初始化操作,其目的是使CPU及各專(zhuān)用寄存器處于一個(gè)確定的初始狀態(tài)。如:把PC的內(nèi)容初始化為0000H,使單片機(jī)從0000H單元開(kāi)始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需要復(fù)位以使其恢復(fù)正常工作狀態(tài)。RST端的外部復(fù)位電
37、路有兩種操作方式:上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種,本系統(tǒng)設(shè)計(jì)采用上電復(fù)位,如圖3-2所示。上電復(fù)位是直接將RST端通過(guò)電阻接高電平來(lái)實(shí)現(xiàn)單片機(jī)的復(fù)位。</p><p><b> 3.4 顯示電路</b></p><p> 在單片機(jī)系統(tǒng)中,經(jīng)常采用LED數(shù)碼管來(lái)顯示單片機(jī)系統(tǒng)的工作狀態(tài)、運(yùn)算結(jié)果等各種信息,通常都需要直觀交互顯示出
38、來(lái)。本次設(shè)計(jì)顯示電路如圖3-3所示。單片機(jī)應(yīng)用系統(tǒng)中最常用的顯示器有LED和LCD兩種。這兩種顯示器都可以顯示數(shù)字、字符及系統(tǒng)的狀態(tài),LED和LED數(shù)碼顯示最為普遍,本設(shè)計(jì)采用的是LED顯示。LED數(shù)碼管是單片機(jī)人機(jī)對(duì)話的一種重要輸出設(shè)備。LED數(shù)碼管由8個(gè)發(fā)光二極管構(gòu)成,通過(guò)不同的發(fā)光字段組合可用來(lái)顯示數(shù)字0-9、字符A-F、H、L、P、R、U、Y、符號(hào)“-”及小數(shù)點(diǎn)“.”等。LED數(shù)碼管可分為共陽(yáng)極和共陰極兩種結(jié)構(gòu),共陽(yáng)極數(shù)碼管是由
39、8個(gè)發(fā)光二極管的陽(yáng)極連接在一起,作為公共控制端(com),接高電平。陰極作為“段”控制端,當(dāng)某段控制端為低電平時(shí),該段對(duì)應(yīng)的發(fā)光二極管導(dǎo)通并點(diǎn)亮,點(diǎn)亮不同的段顯示不同的字符。共陰極數(shù)碼管是由8個(gè)發(fā)光二極管的陰極連接在一起,作為公共控制端(com),接低電平。陰極作為“段”控制端,當(dāng)某段控制端為高電平時(shí),該段對(duì)應(yīng)的發(fā)光二極管導(dǎo)通并點(diǎn)亮。要使數(shù)碼管顯示出數(shù)或字符,直接將相應(yīng)的數(shù)字或字符送至數(shù)碼管的段控制端是不行的,必須使段控制端輸出相應(yīng)的字
40、型編碼。表3</p><p> 3.5 按鍵電路的結(jié)構(gòu)和工作原理</p><p> 按鍵的開(kāi)關(guān)狀態(tài)是通過(guò)一定的電路轉(zhuǎn)換為高、低電平狀態(tài)。按鍵閉合過(guò)程在相應(yīng)的I/O端口形成一個(gè)負(fù)脈沖。閉合和釋放過(guò)程都要經(jīng)過(guò)一定的過(guò)程才能達(dá)到穩(wěn)定。這一過(guò)程處于高、低電平之間的一種不穩(wěn)定狀態(tài),稱為抖動(dòng)。抖動(dòng)持續(xù)時(shí)間的長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性有關(guān),一般在5-10ms之間。為了避免CPU多次處理按鍵的一次閉合,應(yīng)采
41、用措施消除抖動(dòng)。本次采用的是獨(dú)立式按鍵,直接用I/O線構(gòu)成單個(gè)按鍵電路,每個(gè)按鍵占用一條I/O線,每個(gè)按鍵的工作狀態(tài)不會(huì)相互產(chǎn)生影響。電路原理圖如圖3-5所示。</p><p> P2.1引腳接“模式”鍵,按一下則閃爍一種模式相對(duì)應(yīng)的數(shù)碼管顯示加一。</p><p> P2.4引腳接“加速”鍵,按一下則閃爍加快速度。</p><p> P2.5引腳接“減速”鍵
42、,按一下則閃爍減慢速度。</p><p><b> 圖3-5 按鍵電路</b></p><p><b> 3.6 彩燈控制</b></p><p> LED工作條件2V的正向電壓,流過(guò)的電流為4-10mA,顯然不能直接用單片機(jī)的端口驅(qū)動(dòng),需在電路中串聯(lián)限流電阻。由于單片機(jī)I/O口的低電平驅(qū)動(dòng)能力較強(qiáng),用低電平使發(fā)光二
43、極管點(diǎn)亮,高電平熄滅。在流水燈電路中,電壓Vcc直接接到發(fā)光二極管的正極。本次設(shè)計(jì)的彩燈電路如圖3-6所示。</p><p> 圖3-6 彩燈控制電路</p><p> 3.7 整機(jī)電路工作原理</p><p> 利用51單片機(jī)控制十六個(gè)發(fā)光二極管實(shí)現(xiàn)九種閃爍模式,具有加速減速模式以及數(shù)碼管實(shí)現(xiàn)閃爍模式的個(gè)數(shù)。本設(shè)計(jì)采用了51單片機(jī)來(lái)控制,原理圖如3-7所示(
44、見(jiàn)下頁(yè))。</p><p> 圖3-7 整機(jī)電路原理圖</p><p><b> 第4章 軟件設(shè)計(jì)</b></p><p> 整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來(lái)實(shí)現(xiàn)的,當(dāng)硬件基本定型的時(shí)候軟件也基本定下拉了,從軟件的功能不同,可以分為兩的類(lèi):一是監(jiān)控軟件(主程序)它是整個(gè)軟件的核心,專(zhuān)門(mén)用來(lái)協(xié)調(diào)各個(gè)執(zhí)行模塊和操作者的聯(lián)系。二是執(zhí)行軟件(
45、子程序)它是用來(lái)完成各種實(shí)質(zhì)性的工作的,如測(cè)量、計(jì)算、顯示、通訊等。每一個(gè)執(zhí)行軟件就是一個(gè)小的執(zhí)行模塊,這里將每一個(gè)模塊一一列出來(lái),并為每個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好以后,就可以規(guī)劃監(jiān)控軟件了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的條件,合理安排監(jiān)控軟件和執(zhí)行軟件之間的調(diào)度關(guān)系。</p><p><b> 4.1 主程序模塊</b>&l
46、t;/p><p> 主程序主要完成硬件初始化,子程序調(diào)用等功能</p><p> main() </p><p><b> {</b></p><p> unsigned char Key;
47、 </p><p> InitialCPU();</p><p> InitialTimer2();</
48、p><p><b> while(1)</b></p><p><b> {</b></p><p> Key = GetKey();</p><p> if(Key!=0x00)</p><p><b> {</b></p><
49、;p> KeyDispose(Key);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void InitialCPU(void)</p><p>&l
50、t;b> {</b></p><p> RunMode = 0x00;</p><p> TimerCount = 0; </p><p> SystemSpeedIndex = 10;</p><p> P1 = 0x00;</p><p> P0 = 0x00;</p>
51、<p> P2 = 0xFF;</p><p> P3 = 0x00;</p><p> Delay1ms(500);</p><p> P1 = 0xFF;</p><p> P0 = 0xFF;</p><p> P2 = 0xFF;</p><p> P3 = 0x
52、FF;</p><p> SetSpeed(SystemSpeedIndex);</p><p> Display(RunMode); </p><p><b> }</b></p><p> 4.2 定時(shí)器中斷模塊</p><p> Unsigned int TimerCount,Sy
53、stemSpeed,SystemSpeedIndex;</p><p> void InitialTimer2(void) //定時(shí)器初始</p><p><b> {</b></p><p> T2CON = 0x00;//16Bit Auto-Reload Mode</p><p> TH2 = RCAP
54、2H = 0xFC; //重裝值,初始值</p><p> TL2 = RCAP2L = 0x18;</p><p> ET2=1;//定時(shí)器 2 中斷允許</p><p> TR2 = 1;//定時(shí)器 2 啟動(dòng)</p><p><b> EA=1;</b></p><p><
55、;b> }</b></p><p> void Timer2(void) interrupt 5 using 3 //定時(shí)器</p><p><b> {</b></p><p> TF2 = 0; //中斷標(biāo)志清除( Timer2 必須軟件清標(biāo)志!)</p><p> if(++Timer
56、Count>=SystemSpeed) TimerCount = 0;</p><p> TimerEventRun();</p><p> } </p><p><b> }</b></p><p> 4.3 顯示部分模塊</p><p> void LED
57、Flash(unsigned char Count)</p><p><b> {</b></p><p> unsigned char i;</p><p><b> bit Flag;</b></p><p> for(i = 0; i<Count;i++)</p>
58、<p><b> {</b></p><p> Flag = !Flag;</p><p><b> if(Flag)</b></p><p> Display(RunMode);</p><p><b> else</b></p><p
59、> Display(0x10);</p><p> Delay1ms(100);</p><p><b> }</b></p><p> Display(RunMode);</p><p><b> }</b></p><p> unsigned char
60、GetKey(void)</p><p><b> {</b></p><p> unsignedchar KeyTemp,CheckValue,</p><p> Key = 0x00;</p><p> CheckValue = P2&0x32;</p><p> if(Ch
61、eckValue==0x32)</p><p> return 0x00;</p><p> Delay1ms(10);</p><p> KeyTemp = P2&0x32;</p><p> if(KeyTemp==CheckValue)</p><p> return 0x00;</p&g
62、t;<p> if(!(CheckValue&0x02))</p><p> Key|=0x01;</p><p> Key|=0x02;</p><p> if(!(CheckValue&0x20))</p><p> Key|=0x04;</p><p> return K
63、ey;</p><p><b> }</b></p><p> 4.4 模式選擇模塊</p><p> //Mode 0 //模式選擇</p><p> unsignedintLEDIndex=0; </p><p> bit LEDDirection = 1,LEDFlag = 1;&
64、lt;/p><p> void Mode_0(void)</p><p><b> {</b></p><p> LEDShow(0x0001<<LEDIndex);</p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b> }
65、</b></p><p><b> //Mode 1</b></p><p> void Mode_1(void)</p><p><b> {</b></p><p> LEDShow(0x8000>>LEDIndex);</p><p>
66、 LEDIndex = (LEDIndex+1)%16;</p><p><b> }</b></p><p><b> //Mode 2</b></p><p> void Mode_2(void)</p><p><b> {</b></p><
67、p> if(LEDDirection)</p><p> LEDShow(0x0001<<LEDIndex);</p><p><b> else</b></p><p> LEDShow(0x8000>>LEDIndex);</p><p> if(LEDIndex==15)&l
68、t;/p><p> LEDDirection = !LEDDirection;</p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b> }</b></p><p><b> //Mode 3</b></p><p> void
69、 Mode_3(void)</p><p><b> {</b></p><p> if(LEDDirection)</p><p> LEDShow(~(0x0001<<LEDIndex));</p><p><b> else</b></p><p>
70、 LEDShow(~(0x8000>>LEDIndex));</p><p> if(LEDIndex==15)</p><p> LEDDirection = !LEDDirection;</p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b> }</b>
71、;</p><p> //Mode 4</p><p> void Mode_4(void)</p><p><b> {</b></p><p> if(LEDDirection)</p><p><b> {</b></p><p>
72、 if(LEDFlag)</p><p> LEDShow(0xFFFE<<LEDIndex);</p><p><b> else</b></p><p> LEDShow(~(0x7FFF>>LEDIndex));</p><p><b> }</b></
73、p><p><b> else{</b></p><p> if(LEDFlag)</p><p> LEDShow(0x7FFF>>LEDIndex);</p><p><b> else</b></p><p> LEDShow(~(0xFFFE<
74、<LEDIndex));</p><p><b> }</b></p><p> if(LEDIndex==15)</p><p><b> {</b></p><p> LEDDirection = !LEDDirection;</p><p> if(LE
75、DDirection)LEDFlag = !LEDFlag;</p><p><b> }</b></p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b> }</b></p><p> LEDShow(0x000F<<LEDIndex
76、);</p><p><b> //Mode 5</b></p><p> void Mode_5(void)</p><p><b> {</b></p><p> if(LEDDirection) </p><p><b> else</b&
77、gt;</p><p> LEDShow(0xF000>>LEDIndex);</p><p> if(LEDIndex==15)</p><p> LEDDirection = !LEDDirection;</p><p> LEDIndex = (LEDIndex+1)%16;</p><p>
78、<b> }</b></p><p><b> //Mode 6</b></p><p> void Mode_6(void)</p><p><b> {</b></p><p> if(LEDDirection)</p><p> LED
79、Show(~(0x000F<<LEDIndex));</p><p><b> Els</b></p><p><b> //Mode 7</b></p><p> void Mode_7(void)</p><p><b> {</b></p>
80、<p> if(LEDDirection)</p><p> LEDShow(0x003F<<LEDIndex);</p><p><b> else</b></p><p> LEDShow(0xFC00>>LEDIndex);</p><p> if(LEDIndex=
81、=9)</p><p> LEDDirection = !LEDDirection;</p><p> LEDIndex = (LEDIndex+1)%10;</p><p><b> ?。?lt;/b></p><p><b> //Mode 8</b></p><p>
82、 void Mode_8(void)</p><p><b> {</b></p><p> LEDShow(++LEDIndex);</p><p><b> }</b></p><p> void TimerEventRun(void)</p><p><b
83、> {</b></p><p> if(RunMode==0x00)</p><p><b> ?。?lt;/b></p><p> 第5章 系統(tǒng)的仿真與調(diào)試</p><p> 5.1 Keil C51 軟件的使用</p><p> Keil C51 軟件是目前最流行的開(kāi)發(fā)M
84、CS-51 系列單片機(jī)的軟件。Keil uVision3 集成開(kāi)發(fā)環(huán)境是 Keil Software Inc/Keil Elektronik GmbH 開(kāi)發(fā)的基于80C51 內(nèi)核的微處理器軟件開(kāi)發(fā)平臺(tái),內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開(kāi)發(fā)工具,可以完成工程建立和管理、編譯、鏈接、目標(biāo)代碼的生成、軟件仿真和硬件仿真等完整的開(kāi)發(fā)流程。Keil C51 軟件的使用步驟如下。</p><p> 首先啟動(dòng)Keil C51 軟件
85、的集成開(kāi)發(fā)環(huán)境直接雙擊uVision,再建立工程文件單擊“Project” — “New Project”菜單,出現(xiàn)“Create New Project”對(duì)話框。在“保存”在下拉列表框中選擇工程的保存目錄,并在“文件名”文本框中輸入工程名,不需要擴(kuò)展名,單擊“保存”按鈕,出現(xiàn)“Select Device for Target‘Target’”對(duì)話框,單擊“Atmel”前面的“+”號(hào),展開(kāi)該層,單擊其中的“AT89C51”,然后在單擊“
86、確定”</p><p> 按鈕,回到主界面。然后建立并添加源文件。使用菜單“File” —“New”或者單擊工具欄的“新建文件夾”按鈕,出現(xiàn)文本編輯窗口,在該窗口中輸入新編制的源程序并保存該文件。在源文件名的后面必須加擴(kuò)展名“.c”,再將左邊“Target1”前面的“+”號(hào)展開(kāi),在“Source Group1”上單擊鼠標(biāo)右鍵打開(kāi)快鍵菜單,再單擊“Add Files to Group ‘Source Group1
87、’”選項(xiàng),在選擇“文件類(lèi)型”下拉列表框中的“C Source file(*.c),找到前面新建的“ex1.c”文件后,單擊“Add”按鈕加到工程中。此時(shí),在左邊文件夾“Source Group1”前面會(huì)出現(xiàn)一個(gè)“+”號(hào),單擊“+”號(hào)展開(kāi)后,出現(xiàn)一個(gè)名為“ex1.c”文件,說(shuō)明新文件的添加已完成。最后配置工程屬性,將鼠標(biāo)移到左邊窗口的“Target1”上,單擊鼠標(biāo)右鍵打開(kāi)快捷菜單,再單擊“Options for Target‘Target
88、’對(duì)話框。再單擊“Output”選項(xiàng)卡,在“Creat Executable”選項(xiàng)前面的小圓內(nèi)打點(diǎn),確認(rèn)已選中該項(xiàng),再單擊“確定”按鈕,產(chǎn)生可執(zhí)行文件。單擊“Debug”選</p><p> 5.2 Proteus 軟件仿真</p><p> Proteus 軟件是一款電路設(shè)計(jì)與仿真軟件,它包括ISIS、ARES等軟件模塊,ISIS模塊用來(lái)完成電路原理圖的布圖與仿真。其操作步驟如下。&
89、lt;/p><p> 首先啟動(dòng)Proteus 軟件的集成開(kāi)發(fā)環(huán)境直接雙擊ISIS打開(kāi)后看到有菜單及工具欄、預(yù)覽區(qū)、元器件瀏覽區(qū)、編輯窗口、對(duì)象拾取區(qū)、元器件調(diào)整工具欄、運(yùn)行工具條這幾個(gè)區(qū)域。點(diǎn)擊啟動(dòng)界面元器件瀏覽區(qū)域中的“P”按鈕來(lái)打開(kāi)“Pick Devices”對(duì)話框從元件庫(kù)中來(lái)拾取所需的元器件,在對(duì)話框中的“Keywords”里面輸入我們要檢索的元器件關(guān)鍵詞,輸入以后我們能在中間的“Results”結(jié)果欄里看到
90、我們搜索的元器件結(jié)果,在對(duì)話框的右側(cè)可以看到元器件的仿真、引腳及PCB參數(shù)。搜索到所需元器件直接雙擊元器件名即可加到文檔中單擊“OK”按鈕完成元器件添加。這時(shí)在元器件瀏覽區(qū)域中點(diǎn)擊需要添加到文檔中的元器件可以點(diǎn)擊元器件調(diào)整工具欄里的工具進(jìn)行所需調(diào)整,完成后對(duì)所有元器件布置連線。在對(duì)象拾取區(qū)看到有選擇模式(在布局和布線時(shí)選中它)、組件模式(能夠顯示出元器件瀏覽區(qū)域中的元器件可供選擇)、文本模式(為文檔添加文本)、終端模式(為電路添加各種終
91、端)。添加電源、地選擇終端模式在元器件瀏覽區(qū)中點(diǎn)擊“POWER”、“GROUD”選中以后在文檔區(qū)中單擊放置。完成后將HEX文件載入單片機(jī),雙擊單片機(jī)圖標(biāo)系統(tǒng)會(huì)彈出“</p><p><b> 5.3 仿真效果</b></p><p> 裝載好程序開(kāi)始仿真,在工具條中有“Play”、 “Step”、 “ Pause”、 “Stop”按鈕,點(diǎn)擊“Play”按鈕來(lái)仿真運(yùn)
92、行,按下模式鍵可以看到數(shù)碼管正常顯示0~8數(shù)字時(shí)相應(yīng)的彩燈閃爍模式和預(yù)期的一樣能夠?qū)崿F(xiàn)九種閃爍,按下加速和減速鍵也能夠?qū)崿F(xiàn)其功能。整個(gè)系統(tǒng)按照程序運(yùn)行正常符合標(biāo)準(zhǔn),能夠?qū)崿F(xiàn)全部功能。點(diǎn)擊“Stop”按鈕停止運(yùn)行。</p><p><b> 結(jié) 論</b></p><p> 通過(guò)幾個(gè)月的努力此次的畢業(yè)設(shè)計(jì)也接近了尾聲,從最初的選題,確定方案,仿真調(diào)試,購(gòu)買(mǎi)元器件組
93、裝直到完成設(shè)計(jì)。其間,查找資料與同學(xué)交流,自己獨(dú)立完成,每一個(gè)過(guò)程都是對(duì)自己能力的一次檢驗(yàn)和充實(shí)。在沒(méi)有做畢業(yè)設(shè)計(jì)以前覺(jué)得畢業(yè)設(shè)計(jì)只是對(duì)這幾年來(lái)所學(xué)知識(shí)的單純總結(jié),但是通過(guò)這次做畢業(yè)設(shè)計(jì)發(fā)現(xiàn)自己的看法有點(diǎn)太片面。畢業(yè)設(shè)計(jì)不僅是對(duì)前面所學(xué)知識(shí)的一種檢驗(yàn),而且也是對(duì)自己能力的一種提高。極大的鍛煉了電路設(shè)計(jì)實(shí)踐能力,也培養(yǎng)了自己獨(dú)立設(shè)計(jì)能力。此次畢業(yè)設(shè)計(jì)是對(duì)我專(zhuān)業(yè)知識(shí)和專(zhuān)業(yè)基礎(chǔ)知識(shí)一次實(shí)際檢驗(yàn)和鞏固。也使我明白自己的知識(shí)面還比較欠缺。自己要學(xué)
94、的知識(shí)還太多需要長(zhǎng)期的積累,在以后的學(xué)習(xí)工作生活中應(yīng)該不斷的學(xué)習(xí),努力提高自己知識(shí)和綜合素質(zhì)。畢業(yè)設(shè)計(jì)收獲很多,作為電子專(zhuān)業(yè)的學(xué)生,設(shè)計(jì)師我們將來(lái)必需的技能,這次畢業(yè)設(shè)計(jì)恰恰給我們提供了一個(gè)應(yīng)用自己所學(xué)知識(shí)的機(jī)會(huì),從到圖書(shū)館查找資料到對(duì)電路的設(shè)計(jì)對(duì)電路的仿真再到對(duì)電路的最后成型,都對(duì)我所學(xué)的知識(shí)進(jìn)行了檢驗(yàn)。同時(shí)畢業(yè)設(shè)計(jì)也暴露出自己專(zhuān)業(yè)基礎(chǔ)的很多不足之處。比如缺乏綜合應(yīng)用專(zhuān)業(yè)知識(shí)的能力,對(duì)材料的不了解等等。留給我影響最深的是要設(shè)計(jì)一個(gè)成功
95、的電路必須要有足夠的耐心,要有</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 張洪潤(rùn),易濤編著.單片機(jī)應(yīng)用技術(shù)教程 (第二版).北京:清華大學(xué)出版社,2003.</p><p> [2] 求是科技編著.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航.北京:人民郵電出版社,2004.</p><p> [3]
96、孫進(jìn)生編著.電子產(chǎn)品設(shè)計(jì)實(shí)例教程.北京:冶金工業(yè)出版社,2004.</p><p> [4] 王靜霞編著.單片機(jī)應(yīng)用技術(shù)(C語(yǔ)言版). 北京:電子工業(yè)出版社,2009.</p><p> [5] 潘新民,王燕芳編著.微型計(jì)算機(jī)控制技術(shù).北京:電子工業(yè)出版社,2004.</p><p> [6] 楊寧編著.單片機(jī)與控制技術(shù).北京:北京航空航天大學(xué)出版社,2005
97、.</p><p> [7] 李庭貴編著單片機(jī)應(yīng)用技術(shù)及項(xiàng)目化訓(xùn)練.西南交通大學(xué)出版社,2009.</p><p><b> 附錄1 源程序</b></p><p> #include <REG52.H></p><p> unsigned char RunMode;</p><p
98、> //**********************************System Fuction*************************************************</p><p> void Delay1ms(unsigned int count)</p><p><b> {</b></p><
99、p> unsigned int i,j;</p><p> for(i=0;i<count;i++)</p><p> for(j=0;j<120;j++);</p><p><b> }</b></p><p> unsigned char code LEDDisplayCode[] = {
100、 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,//0~7</p><p> 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};</p><p> void Display(unsigned char Value)</p><p><b> {</b></
101、p><p> P3 = LEDDisplayCode[Value];</p><p><b> }</b></p><p> void LEDFlash(unsigned char Count)</p><p><b> {</b></p><p> unsigned
102、char i;</p><p><b> bit Flag;</b></p><p> for(i = 0; i<Count;i++)</p><p><b> {</b></p><p> Flag = !Flag;</p><p><b> if
103、(Flag)</b></p><p> Display(RunMode);</p><p><b> else</b></p><p> Display(0x10);</p><p> Delay1ms(100);</p><p><b> }</b>&
104、lt;/p><p> Display(RunMode);</p><p><b> }</b></p><p> unsigned char GetKey(void)</p><p><b> {</b></p><p> unsigned char KeyTemp,C
105、heckValue,Key = 0x00;</p><p> CheckValue = P2&0x32;</p><p> if(CheckValue==0x32)</p><p> return 0x00;</p><p> Delay1ms(10);</p><p> KeyTemp = P2&a
106、mp;0x32;</p><p> if(KeyTemp==CheckValue)</p><p> return 0x00;</p><p> if(!(CheckValue&0x02))</p><p> Key|=0x01;</p><p> if(!(CheckValue&0x10))
107、</p><p> Key|=0x02;</p><p> if(!(CheckValue&0x20))</p><p> Key|=0x04;</p><p> return Key;</p><p><b> }</b></p><p> unsig
108、ned int TimerCount,SystemSpeed,SystemSpeedIndex;</p><p> void InitialTimer2(void) //定時(shí)器初始</p><p><b> {</b></p><p> T2CON = 0x00;//16 Bit Auto-Reload Mode</p>
109、;<p> TH2 = RCAP2H = 0xFC; //重裝值,初始值TL2 = RCAP2L = 0x18;</p><p> ET2=1;//定時(shí)器 2 中斷允許</p><p> TR2 = 1;//定時(shí)器 2 啟動(dòng)</p><p><b> EA=1;</b></p><
110、;p><b> }</b></p><p> unsigned int code SpeedCode[]={1, 2, 3, 5, 8, 10, 14, 17, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 160,</p><p> 180,200,300,400,500,600, 700, 800,
111、 900,1000};//30</p><p> void SetSpeed(unsigned char Speed)</p><p><b> {</b></p><p> SystemSpeed =SpeedCode[Speed];</p><p><b> }</b></p>
112、;<p> void LEDShow(unsigned int LEDStatus)</p><p><b> {</b></p><p> P1 = ~(LEDStatus&0x00FF);</p><p> P0 = ~((LEDStatus>>8)&0x00FF);</p>
113、<p><b> }</b></p><p> void InitialCPU(void) //端口初始化</p><p><b> {</b></p><p> RunMode = 0x00;</p><p> TimerCount = 0;</p><p&
114、gt; SystemSpeedIndex = 10;</p><p> P1 = 0x00;</p><p> P0 = 0x00;</p><p> P2 = 0xFF;</p><p> P3 = 0x00;</p><p> Delay1ms(500);</p><p> P
115、1 = 0xFF;</p><p> P0 = 0xFF;</p><p> P2 = 0xFF;</p><p> P3 = 0xFF;</p><p> SetSpeed(SystemSpeedIndex);</p><p> Display(RunMode);</p><p>&
116、lt;b> }</b></p><p> //Mode 0 //模式選擇</p><p> unsigned int LEDIndex = 0;</p><p> bit LEDDirection = 1,LEDFlag = 1;</p><p> void Mode_0(void)</p><
117、p><b> {</b></p><p> LEDShow(0x0001<<LEDIndex);</p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b> }</b></p><p><b> //Mode 1</
118、b></p><p> void Mode_1(void)</p><p><b> {</b></p><p> LEDShow(0x8000>>LEDIndex);</p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b&
119、gt; }</b></p><p><b> //Mode 2</b></p><p> void Mode_2(void)</p><p><b> {</b></p><p> if(LEDDirection)</p><p> LEDShow(0
120、x0001<<LEDIndex);</p><p><b> else</b></p><p> LEDShow(0x8000>>LEDIndex);</p><p> if(LEDIndex==15)</p><p> LEDDirection = !LEDDirection;</
121、p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b> }</b></p><p><b> //Mode 3</b></p><p> void Mode_3(void)</p><p><b> {</b>
122、;</p><p> if(LEDDirection)</p><p> LEDShow(~(0x0001<<LEDIndex));</p><p><b> else</b></p><p> LEDShow(~(0x8000>>LEDIndex));</p><p&
123、gt; if(LEDIndex==15)</p><p> LEDDirection = !LEDDirection;</p><p> LEDIndex = (LEDIndex+1)%16;</p><p><b> }</b></p><p><b> //Mode 4</b><
124、/p><p> void Mode_4(void)</p><p><b> {</b></p><p> if(LEDDirection)</p><p><b> {</b></p><p> if(LEDFlag)</p><p> LE
125、DShow(0xFFFE<<LEDIndex);</p><p><b> else</b></p><p> LEDShow(~(0x7FFF>>LEDIndex));</p><p><b> }</b></p><p><b> else</b&
126、gt;</p><p><b> {</b></p><p> if(LEDFlag)</p><p> LEDShow(0x7FFF>>LEDIndex);</p><p><b> else</b></p><p> LEDShow(~(0xFFFE
溫馨提示
- 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ù)
- 走馬燈的奧秘教案
- 《走馬燈的奧秘》教學(xué)設(shè)計(jì)與反思
- 《走馬燈的奧秘》教學(xué)設(shè)計(jì)與反思
- 基于at89c51的調(diào)控走馬燈設(shè)計(jì)
- 單片機(jī)實(shí)驗(yàn)課程設(shè)計(jì)--具有可變圖案的走馬燈顯示功能的設(shè)計(jì)
- 單片機(jī)實(shí)驗(yàn)課程設(shè)計(jì)-具有可變圖案的走馬燈顯示功能的設(shè)計(jì)
- 單片機(jī)實(shí)驗(yàn)課程設(shè)計(jì)-具有可變圖案的走馬燈顯示功能的設(shè)計(jì)
- 語(yǔ)文s版三上《走馬燈的奧秘》教案(4)
- 三年級(jí)語(yǔ)文上冊(cè)走馬燈的奧秘
- 語(yǔ)文s版三年級(jí)上冊(cè)《走馬燈的奧秘》教學(xué)設(shè)計(jì)1
- 具有多種控制模式的多功能兒童玩具設(shè)計(jì)-控制系統(tǒng)類(lèi)
- 多功能工業(yè)控制平臺(tái)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)----多功能數(shù)字時(shí)鐘畢業(yè)設(shè)計(jì)
- 多功能椅子設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 多功能教室節(jié)能控制系統(tǒng)的研究畢業(yè)論文
- 多功能交通燈控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)---工作臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 多功能教室節(jié)能控制系統(tǒng)的研究畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---電梯控制系統(tǒng)
評(píng)論
0/150
提交評(píng)論