走馬燈多功能工作模式控制系統(tǒng)畢業(yè)設(shè)計_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  畢業(yè)設(shè)計說明書(論文)</p><p>  設(shè)計題目: 走馬燈多工作模式控制系統(tǒng)設(shè)計</p><p>  專 業(yè): 應用電子技術(shù) </p><p>  班 級: 應電08-3 </p><p>  學 號:

2、 </p><p>  姓 名: </p><p>  指導教師: </p><p><b>  二0一0年七月十日</b></p><p>  畢業(yè)設(shè)計(論文)任務(wù)書</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è)計5</p><p>  3.1 主控芯片的介紹5</p><p>  3.1.1 8051內(nèi)部結(jié)構(gòu)6</p><p>  3.1.2 8051信號引腳7</p><p>  3.2 時鐘電路功能以及工作原理的分析9</p><p>  3.3 復位

5、電路功能以及工作原理的分析10</p><p>  3.4 顯示電路10</p><p>  3.5 按鍵電路的結(jié)構(gòu)和工作原理11</p><p>  3.6 彩燈控制12</p><p>  3.7 整機電路工作原理12</p><p>  第4章 軟件設(shè)計14</p><p> 

6、 4.1 主程序模塊14</p><p>  4.2 定時器中斷模塊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>  參考文獻23</b></p><p>  附錄1 源程序24</p><p>  附錄2 整機

8、電路圖33</p><p>  附錄3 元器件明細表34</p><p><b>  摘 要</b></p><p>  隨著社會的進步電子技術(shù)的應用越來越廣泛,單片機應用技術(shù)作為計算機技術(shù)的一個重要分支,也因此廣泛應用到工業(yè)控制、智能化儀器儀表、家用電器、電子玩具等各個領(lǐng)域,它具有結(jié)構(gòu)簡單、控制功能強、可靠性高、體積小、價格低等優(yōu)點。電子

9、設(shè)計也就成為整個的綜合體。通過電子設(shè)計可以培養(yǎng)學生的電子系統(tǒng)設(shè)計能力,加強實踐能力和動手操作能力以及能力。隨著社會的發(fā)展廣告越來越體現(xiàn)出其的重要價值。夜晚,華燈初上整個城市被五顏六色豐富多彩的廣告牌閃爍的格外美麗,它們閃爍的多姿多彩代表這整個城市的繁華與向榮,所以本次電子設(shè)計是以AT89C51單片機作為主控核心,與按鍵、發(fā)光二極管、LED數(shù)碼管顯示器等較少的輔助的硬件電路相結(jié)合,利用軟件對彩燈進行控制閃爍樣式,發(fā)光二極管采用多種顏色,顯

10、示的閃爍模式也是多樣的,給人一種悅目的感覺。本系統(tǒng)具有體積小、硬件少、電路結(jié)構(gòu)簡單及容易操作等特點。</p><p>  關(guān)鍵詞 AT89C51;單片機;發(fā)光二極管;彩燈;多種變化</p><p><b>  第1章 緒論</b></p><p>  當今時代是一個新技術(shù)層出不窮的時代,在電子領(lǐng)域尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字

11、邏輯電路控制的系統(tǒng),正以前所未見的速度被單片機智能控制系統(tǒng)所取代。單片機具有體積小、功能強、成本低、應用面廣等優(yōu)點,可以說是,智能控制與自動控制的核心就是單片機。在大學期間,完成了前期的單片機基礎(chǔ)知識學習以后,利用理論與實際相結(jié)合,用AT89C51單片機自動制了一款簡易的流水燈,重點介紹了用單片機控制系統(tǒng)的運行。在現(xiàn)在諸多的娛樂場所、理發(fā)店、賓館、飯店、公司等的門外,都可以看到各式各樣的廣告流水燈。所謂“廣告流水燈”,就是將一系列的顏色

12、的廣告燈連接在一起,然后令這些燈按一定的次序逐個或者幾個的一次點亮或熄滅。有各燈點亮和熄滅,產(chǎn)生的效果就像流動的水一樣,因此,就稱這類廣告燈為“廣告流水燈”。生活中廣告流水燈的形式和點亮的次序是多種多樣的。由單一顏色的幾個按固定的次序來點亮的,有多個不同顏色的燈構(gòu)成某一圖案依次點亮的也有多排廣告燈按多種組合好的次序循環(huán)點亮的等。這次設(shè)計的廣告流水燈,就是這些廣告燈中的類型。</p><p>  第2章 系統(tǒng)的方案

13、論證與比較</p><p><b>  2.1 方案的比較</b></p><p><b>  方案一: </b></p><p>  利用CD4017芯片和NE555芯片的集成電路,是CD4017芯片和NE555芯片的綜合運用。該流水燈的功能是能夠根據(jù)需要產(chǎn)生多種多樣的變化方式,從而產(chǎn)生豐富多彩的彩燈圖案。本次設(shè)計的方

14、案中采用了CD4017芯片和NE555芯片來實現(xiàn)變化的需要,采用CD4017芯片實現(xiàn)對脈沖信號的分配,使得輸出時序就是與時鐘同步的高電平,寬度等于時鐘周期,NE555產(chǎn)生連續(xù)脈沖輸入,CD4017有連續(xù)脈沖輸入時,其對應的輸出端依次變?yōu)楦唠娖綘顟B(tài),直接用作順序脈沖發(fā)生器,配合二極管,進而形成相應的多功能流水彩燈電路。原理電路圖由振蕩電路、譯碼電路和光源電路三部分組成。在設(shè)計電路時,選用的脈沖發(fā)生器是由NE555與R2、R3及C3組成的多

15、諧振蕩器組成。主要是為燈光流動控制器提供流動控制的脈沖,燈光的流動速度可以通過電位器RP進行調(diào)節(jié)。由于RP的阻值較大,所以有較大的速度調(diào)節(jié)范圍。燈光流動控制器由一個十進制計數(shù)脈沖分配器CD4017和若干電阻組成。原理框圖如2-1所示。</p><p>  圖2-1 CD4017控制原理框圖</p><p><b>  方案二: </b></p>&

16、lt;p>  利用51單片機控制十六個發(fā)光二極管實現(xiàn)九種閃爍模式,具有加速減速模式以及數(shù)碼管實現(xiàn)閃爍模式的個數(shù)。本設(shè)計采用了51單片機來控制,原理框圖如2-2所示。</p><p><b>  2.2 方案論證</b></p><p>  方案一采用了CD4017芯片和NE555芯片來實現(xiàn)變化的需要,采用CD4017芯片實現(xiàn)對脈沖信號的分配,使得輸出時序就是與時

17、鐘同步的高電平,寬度等于時鐘周期,NE555產(chǎn)生連續(xù)脈沖輸入,CD4017有連續(xù)脈沖輸入時,其對應的輸出端依次變?yōu)楦唠娖綘顟B(tài),直接用作順序脈沖發(fā)生器,配合二極管,進而形成相應的多功能流水彩燈電路。燈光的流動速度可以通過電位器RP進行調(diào)節(jié)。方案二利用51單片機控制具有加速減速功能以及數(shù)碼管實現(xiàn)閃爍模式的個數(shù)。二者相比較方案一的電路和操作比較復雜,最后一點就是數(shù)碼管不顯示模式個數(shù),這樣不利于我們直觀的看出顯示的模式個數(shù),也不利于我們調(diào)節(jié)當按

18、下模式鍵多次時會使我們混亂現(xiàn)象。其硬件電路和軟件調(diào)試比較復雜,制作成本較高。近年來隨著科技的飛速發(fā)展,單片機的應用正不斷走向深入。所以我們選用單片機作為核心部件進行邏輯控制及信號的產(chǎn)生,用單片機本生的優(yōu)勢節(jié)約成本.所以綜上所述應采用第二種方案為本次設(shè)計方案。</p><p>  第3章 系統(tǒng)硬件設(shè)計</p><p>  3.1 主控芯片的介紹</p><p>  單

19、片微型計算機(Single Chip Microcomputer)簡稱單片機,是指集成在一個芯片上的微型計算機,它的各種功能部件,包括CPU(Central Processing Unit) 、存儲器(Memory)、基本輸入/輸出(Input/Output, 簡稱I/O)接口電路、定時/計數(shù)器和中斷系統(tǒng)等,都制作在一塊集成芯片上,構(gòu)成一個完整的微型計算機。單片機的內(nèi)部基本結(jié)構(gòu)圖如圖3-1所示。目前,單片機正朝著高性能和多品種方向發(fā)展。

20、今后單片機的發(fā)展趨勢將是進一步向著CMOS化、低功耗化、低電壓化、低噪聲與高可靠性、大容量、高性能化、低價格化、外圍電路內(nèi)裝化和串行擴展技術(shù)。隨著半導體集成工藝的不斷發(fā)展,單片機的集成度將更高、體積將更小和功能更強。單片機已成為計算機發(fā)展和應用的一個重要方面,另一方面,單片機應用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法,從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能通過單片機能實現(xiàn)了。這種用軟件代替硬件

21、的控制技術(shù)也稱微控技術(shù),是對傳統(tǒng)控制技術(shù)的一次革命。單片機的應用系統(tǒng)是以單片機為核心,配以輸入、輸出、顯示等外圍接口電</p><p>  3.1.1 8051內(nèi)部結(jié)構(gòu)</p><p>  8051是MCS-51系列單片機的典型芯片,8051片內(nèi)有4KROM,無需外接存儲器。8051單片機的內(nèi)部組成如圖3-3所示。其功能劃分由8個部件組成,分別為:</p><p>

22、  圖3-3 8051 單片機的內(nèi)部組成</p><p>  1.中央處理器(CPU)</p><p>  中央處理器是單片機的控制核心,完成運算和控制功能。CPU由運算器和控制器組成。運算器包括一個8位算術(shù)邏輯單元(Arithmetic Logical Unit,簡稱ALU)、8位累加器(Accumulator,簡稱ACC)、8位暫存器寄存器B和程序狀態(tài)寄存器(Program Stat

23、us Word,簡稱PSW)等??刂破靼ǔ绦蛴嫈?shù)器(Program Counter,簡稱PC)、指令寄存器(Instruction Register,簡稱IR)、指令譯碼器(Instruction Decoder,簡稱ID)及控制電路等。</p><p>  2.內(nèi)部數(shù)據(jù)存儲器 RAM (Random Access Memory)</p><p>  8051內(nèi)部共有256個RAM單元,

24、其中的高128個單元被專用寄存器占用;低128個單元供用戶暫存中間數(shù)據(jù),可讀可寫,掉電后數(shù)據(jù)會丟失。通常所說的的內(nèi)部數(shù)據(jù)存儲器就是指低128個單元。</p><p>  3.內(nèi)部程序存儲器ROM (Read-only Memory)</p><p>  8051內(nèi)部共有4KB掩模ROM,只能讀不能寫,掉電后數(shù)據(jù)不會丟失,用于存放程序或程序運行過程中改變的原始數(shù)據(jù),通常稱為程序存儲器。<

25、;/p><p><b>  4.并行I/O端口</b></p><p>  8051內(nèi)部有4個8位并行I/O端口(稱為P0、P1、P2和P3),可以實現(xiàn)數(shù)據(jù)的并行輸入輸出。</p><p><b>  5.串行口</b></p><p>  8051內(nèi)部有一個全雙工異步串行口,可以實現(xiàn)單片機與其他設(shè)備之

26、間的串行數(shù)據(jù)通信。該串行口既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用,擴展外部I/O端口。</p><p><b>  6.定時/計數(shù)器</b></p><p>  8051內(nèi)部有兩個16位的定時/計數(shù)器,可實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結(jié)果對計算機進行控制。</p><p><b>  7.中斷系統(tǒng)</b&

27、gt;</p><p>  8051內(nèi)部有5個中斷源,分為高級和低級兩個優(yōu)先級別。</p><p><b>  8.時鐘電路</b></p><p>  8051內(nèi)部有時鐘電路,只需外接石英晶體和微調(diào)電容即可。晶振頻率通常選擇12MHZ或11.0592MHZ.</p><p>  3.1.2 8051信號引腳</p

28、><p>  8051單片機采用標準40引腳雙列直插式封裝,其引腳排列如圖3-4所示,引腳功能見表1-1。</p><p>  表1-1 8051 引腳功能</p><p><b>  1.信號引腳介紹</b></p><p> ?。?)ALE:系統(tǒng)擴展時,P0口是8位數(shù)據(jù)線和低8為地址線復用引腳,ALE用于把P0口輸出的

29、低8位地址鎖存起來,以實現(xiàn)低8位地址和數(shù)據(jù)的隔離。</p><p> ?。?)PSEN:PSEN有效時,可實現(xiàn)對外部ROM單元的讀操作。</p><p> ?。?)EA:當EA信號為低電平是,對ROM的讀操作限定在外部程序存儲器;而當EA為高電平是,對ROM的讀操作是從內(nèi)部程序存儲器開始的,并可延至外部程序存儲器。</p><p> ?。?)RST:當輸入的復位信號

30、延續(xù)兩個機器周期以上的高電平是即為有效,用以完成單片機的復位初始化操作。</p><p>  (5)XTAL1和XTAL2:外接晶體引線端。當使用芯片內(nèi)部時鐘時,兩引腳用于外接石英晶體和微調(diào)電容;當使用外部時鐘時,用于連接外部時鐘脈沖信號。</p><p><b>  VCC:供電電壓。</b></p><p><b>  GND:接

31、地。</b></p><p>  P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  P1口:P1口是一個內(nèi)部提供上拉電

32、阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。</p><p>  P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上

33、拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。</p><p>  P3口:P3口是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流

34、(ILL)這是由于上拉的緣故。</p><p>  2.信號引腳的第二功能</p><p>  為了滿足實際需要,部分信號引腳被賦予雙重功能。常用的是8條P3口線所提供的第二功能,如圖1-2所示,</p><p>  表1-2 P3口各引腳的第二功能</p><p>  3.2 時鐘電路功能以及工作原理的分析</p><

35、p>  時鐘電路用于產(chǎn)生單片機工作所需要的時鐘信號,在芯片的外部通過19腳、18腳接晶體振蕩器和微調(diào)電容。形成反饋電路,構(gòu)成一個穩(wěn)定的自己振蕩器。電路中的C1、C2一般取30pF左右,而晶體振蕩器的頻率范圍通常是1.2-12MHz.一般使用振蕩頻率為6MHz或12MHz的晶振。晶體振蕩頻率越高,系統(tǒng)的時鐘頻率也越高,單片機的運行速度也就越快。其電路原理圖如3-1所示。</p><p>  圖3-1 時鐘電路

36、原理圖</p><p>  3.3 復位電路功能以及工作原理的分析</p><p>  復位是單片機的初始化操作,其目的是使CPU及各專用寄存器處于一個確定的初始狀態(tài)。如:把PC的內(nèi)容初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當單片機系統(tǒng)在運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要復位以使其恢復正常工作狀態(tài)。RST端的外部復位電

37、路有兩種操作方式:上電自動復位和按鍵手動復位。按鍵手動復位有電平方式和脈沖方式兩種,本系統(tǒng)設(shè)計采用上電復位,如圖3-2所示。上電復位是直接將RST端通過電阻接高電平來實現(xiàn)單片機的復位。</p><p><b>  3.4 顯示電路</b></p><p>  在單片機系統(tǒng)中,經(jīng)常采用LED數(shù)碼管來顯示單片機系統(tǒng)的工作狀態(tài)、運算結(jié)果等各種信息,通常都需要直觀交互顯示出

38、來。本次設(shè)計顯示電路如圖3-3所示。單片機應用系統(tǒng)中最常用的顯示器有LED和LCD兩種。這兩種顯示器都可以顯示數(shù)字、字符及系統(tǒng)的狀態(tài),LED和LED數(shù)碼顯示最為普遍,本設(shè)計采用的是LED顯示。LED數(shù)碼管是單片機人機對話的一種重要輸出設(shè)備。LED數(shù)碼管由8個發(fā)光二極管構(gòu)成,通過不同的發(fā)光字段組合可用來顯示數(shù)字0-9、字符A-F、H、L、P、R、U、Y、符號“-”及小數(shù)點“.”等。LED數(shù)碼管可分為共陽極和共陰極兩種結(jié)構(gòu),共陽極數(shù)碼管是由

39、8個發(fā)光二極管的陽極連接在一起,作為公共控制端(com),接高電平。陰極作為“段”控制端,當某段控制端為低電平時,該段對應的發(fā)光二極管導通并點亮,點亮不同的段顯示不同的字符。共陰極數(shù)碼管是由8個發(fā)光二極管的陰極連接在一起,作為公共控制端(com),接低電平。陰極作為“段”控制端,當某段控制端為高電平時,該段對應的發(fā)光二極管導通并點亮。要使數(shù)碼管顯示出數(shù)或字符,直接將相應的數(shù)字或字符送至數(shù)碼管的段控制端是不行的,必須使段控制端輸出相應的字

40、型編碼。表3</p><p>  3.5 按鍵電路的結(jié)構(gòu)和工作原理</p><p>  按鍵的開關(guān)狀態(tài)是通過一定的電路轉(zhuǎn)換為高、低電平狀態(tài)。按鍵閉合過程在相應的I/O端口形成一個負脈沖。閉合和釋放過程都要經(jīng)過一定的過程才能達到穩(wěn)定。這一過程處于高、低電平之間的一種不穩(wěn)定狀態(tài),稱為抖動。抖動持續(xù)時間的長短與開關(guān)的機械特性有關(guān),一般在5-10ms之間。為了避免CPU多次處理按鍵的一次閉合,應采

41、用措施消除抖動。本次采用的是獨立式按鍵,直接用I/O線構(gòu)成單個按鍵電路,每個按鍵占用一條I/O線,每個按鍵的工作狀態(tài)不會相互產(chǎn)生影響。電路原理圖如圖3-5所示。</p><p>  P2.1引腳接“模式”鍵,按一下則閃爍一種模式相對應的數(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的正向電壓,流過的電流為4-10mA,顯然不能直接用單片機的端口驅(qū)動,需在電路中串聯(lián)限流電阻。由于單片機I/O口的低電平驅(qū)動能力較強,用低電平使發(fā)光二

43、極管點亮,高電平熄滅。在流水燈電路中,電壓Vcc直接接到發(fā)光二極管的正極。本次設(shè)計的彩燈電路如圖3-6所示。</p><p>  圖3-6 彩燈控制電路</p><p>  3.7 整機電路工作原理</p><p>  利用51單片機控制十六個發(fā)光二極管實現(xiàn)九種閃爍模式,具有加速減速模式以及數(shù)碼管實現(xiàn)閃爍模式的個數(shù)。本設(shè)計采用了51單片機來控制,原理圖如3-7所示(

44、見下頁)。</p><p>  圖3-7 整機電路原理圖</p><p><b>  第4章 軟件設(shè)計</b></p><p>  整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當硬件基本定型的時候軟件也基本定下拉了,從軟件的功能不同,可以分為兩的類:一是監(jiān)控軟件(主程序)它是整個軟件的核心,專門用來協(xié)調(diào)各個執(zhí)行模塊和操作者的聯(lián)系。二是執(zhí)行軟件(

45、子程序)它是用來完成各種實質(zhì)性的工作的,如測量、計算、顯示、通訊等。每一個執(zhí)行軟件就是一個小的執(zhí)行模塊,這里將每一個模塊一一列出來,并為每個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好以后,就可以規(guī)劃監(jiān)控軟件了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實時性的條件,合理安排監(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 定時器中斷模塊</p><p>  Unsigned int TimerCount,Sy

53、stemSpeed,SystemSpeedIndex;</p><p>  void InitialTimer2(void) //定時器初始</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;//定時器 2 中斷允許</p><p>  TR2 = 1;//定時器 2 啟動</p><p><b>  EA=1;</b></p><p><

55、;b>  }</b></p><p>  void Timer2(void) interrupt 5 using 3 //定時器</p><p><b>  {</b></p><p>  TF2 = 0; //中斷標志清除( Timer2 必須軟件清標志!)</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 軟件是目前最流行的開發(fā)M

84、CS-51 系列單片機的軟件。Keil uVision3 集成開發(fā)環(huán)境是 Keil Software Inc/Keil Elektronik GmbH 開發(fā)的基于80C51 內(nèi)核的微處理器軟件開發(fā)平臺,內(nèi)嵌多種符合當前工業(yè)標準的開發(fā)工具,可以完成工程建立和管理、編譯、鏈接、目標代碼的生成、軟件仿真和硬件仿真等完整的開發(fā)流程。Keil C51 軟件的使用步驟如下。</p><p>  首先啟動Keil C51 軟件

85、的集成開發(fā)環(huán)境直接雙擊uVision,再建立工程文件單擊“Project” — “New Project”菜單,出現(xiàn)“Create New Project”對話框。在“保存”在下拉列表框中選擇工程的保存目錄,并在“文件名”文本框中輸入工程名,不需要擴展名,單擊“保存”按鈕,出現(xiàn)“Select Device for Target‘Target’”對話框,單擊“Atmel”前面的“+”號,展開該層,單擊其中的“AT89C51”,然后在單擊“

86、確定”</p><p>  按鈕,回到主界面。然后建立并添加源文件。使用菜單“File” —“New”或者單擊工具欄的“新建文件夾”按鈕,出現(xiàn)文本編輯窗口,在該窗口中輸入新編制的源程序并保存該文件。在源文件名的后面必須加擴展名“.c”,再將左邊“Target1”前面的“+”號展開,在“Source Group1”上單擊鼠標右鍵打開快鍵菜單,再單擊“Add Files to Group ‘Source Group1

87、’”選項,在選擇“文件類型”下拉列表框中的“C Source file(*.c),找到前面新建的“ex1.c”文件后,單擊“Add”按鈕加到工程中。此時,在左邊文件夾“Source Group1”前面會出現(xiàn)一個“+”號,單擊“+”號展開后,出現(xiàn)一個名為“ex1.c”文件,說明新文件的添加已完成。最后配置工程屬性,將鼠標移到左邊窗口的“Target1”上,單擊鼠標右鍵打開快捷菜單,再單擊“Options for Target‘Target

88、’對話框。再單擊“Output”選項卡,在“Creat Executable”選項前面的小圓內(nèi)打點,確認已選中該項,再單擊“確定”按鈕,產(chǎn)生可執(zhí)行文件。單擊“Debug”選</p><p>  5.2 Proteus 軟件仿真</p><p>  Proteus 軟件是一款電路設(shè)計與仿真軟件,它包括ISIS、ARES等軟件模塊,ISIS模塊用來完成電路原理圖的布圖與仿真。其操作步驟如下。&

89、lt;/p><p>  首先啟動Proteus 軟件的集成開發(fā)環(huán)境直接雙擊ISIS打開后看到有菜單及工具欄、預覽區(qū)、元器件瀏覽區(qū)、編輯窗口、對象拾取區(qū)、元器件調(diào)整工具欄、運行工具條這幾個區(qū)域。點擊啟動界面元器件瀏覽區(qū)域中的“P”按鈕來打開“Pick Devices”對話框從元件庫中來拾取所需的元器件,在對話框中的“Keywords”里面輸入我們要檢索的元器件關(guān)鍵詞,輸入以后我們能在中間的“Results”結(jié)果欄里看到

90、我們搜索的元器件結(jié)果,在對話框的右側(cè)可以看到元器件的仿真、引腳及PCB參數(shù)。搜索到所需元器件直接雙擊元器件名即可加到文檔中單擊“OK”按鈕完成元器件添加。這時在元器件瀏覽區(qū)域中點擊需要添加到文檔中的元器件可以點擊元器件調(diào)整工具欄里的工具進行所需調(diào)整,完成后對所有元器件布置連線。在對象拾取區(qū)看到有選擇模式(在布局和布線時選中它)、組件模式(能夠顯示出元器件瀏覽區(qū)域中的元器件可供選擇)、文本模式(為文檔添加文本)、終端模式(為電路添加各種終

91、端)。添加電源、地選擇終端模式在元器件瀏覽區(qū)中點擊“POWER”、“GROUD”選中以后在文檔區(qū)中單擊放置。完成后將HEX文件載入單片機,雙擊單片機圖標系統(tǒng)會彈出“</p><p><b>  5.3 仿真效果</b></p><p>  裝載好程序開始仿真,在工具條中有“Play”、 “Step”、 “ Pause”、 “Stop”按鈕,點擊“Play”按鈕來仿真運

92、行,按下模式鍵可以看到數(shù)碼管正常顯示0~8數(shù)字時相應的彩燈閃爍模式和預期的一樣能夠?qū)崿F(xiàn)九種閃爍,按下加速和減速鍵也能夠?qū)崿F(xiàn)其功能。整個系統(tǒng)按照程序運行正常符合標準,能夠?qū)崿F(xiàn)全部功能。點擊“Stop”按鈕停止運行。</p><p><b>  結(jié) 論</b></p><p>  通過幾個月的努力此次的畢業(yè)設(shè)計也接近了尾聲,從最初的選題,確定方案,仿真調(diào)試,購買元器件組

93、裝直到完成設(shè)計。其間,查找資料與同學交流,自己獨立完成,每一個過程都是對自己能力的一次檢驗和充實。在沒有做畢業(yè)設(shè)計以前覺得畢業(yè)設(shè)計只是對這幾年來所學知識的單純總結(jié),但是通過這次做畢業(yè)設(shè)計發(fā)現(xiàn)自己的看法有點太片面。畢業(yè)設(shè)計不僅是對前面所學知識的一種檢驗,而且也是對自己能力的一種提高。極大的鍛煉了電路設(shè)計實踐能力,也培養(yǎng)了自己獨立設(shè)計能力。此次畢業(yè)設(shè)計是對我專業(yè)知識和專業(yè)基礎(chǔ)知識一次實際檢驗和鞏固。也使我明白自己的知識面還比較欠缺。自己要學

94、的知識還太多需要長期的積累,在以后的學習工作生活中應該不斷的學習,努力提高自己知識和綜合素質(zhì)。畢業(yè)設(shè)計收獲很多,作為電子專業(yè)的學生,設(shè)計師我們將來必需的技能,這次畢業(yè)設(shè)計恰恰給我們提供了一個應用自己所學知識的機會,從到圖書館查找資料到對電路的設(shè)計對電路的仿真再到對電路的最后成型,都對我所學的知識進行了檢驗。同時畢業(yè)設(shè)計也暴露出自己專業(yè)基礎(chǔ)的很多不足之處。比如缺乏綜合應用專業(yè)知識的能力,對材料的不了解等等。留給我影響最深的是要設(shè)計一個成功

95、的電路必須要有足夠的耐心,要有</p><p><b>  參考文獻</b></p><p>  [1] 張洪潤,易濤編著.單片機應用技術(shù)教程 (第二版).北京:清華大學出版社,2003.</p><p>  [2] 求是科技編著.單片機典型模塊設(shè)計實例導航.北京:人民郵電出版社,2004.</p><p>  [3]

96、孫進生編著.電子產(chǎn)品設(shè)計實例教程.北京:冶金工業(yè)出版社,2004.</p><p>  [4] 王靜霞編著.單片機應用技術(shù)(C語言版). 北京:電子工業(yè)出版社,2009.</p><p>  [5] 潘新民,王燕芳編著.微型計算機控制技術(shù).北京:電子工業(yè)出版社,2004.</p><p>  [6] 楊寧編著.單片機與控制技術(shù).北京:北京航空航天大學出版社,2005

97、.</p><p>  [7] 李庭貴編著單片機應用技術(shù)及項目化訓練.西南交通大學出版社,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) //定時器初始</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;//定時器 2 中斷允許</p><p>  TR2 = 1;//定時器 2 啟動</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論