版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單</b></p><p><b> 片</b></p><p><b> 機</b></p><p><b> 課</b></p><p><b> 程</b></p><p
2、><b> 設(shè)</b></p><p><b> 計</b></p><p><b> 目 錄</b></p><p> 內(nèi)容摘要…………………………...…………...…………………………….…..3</p><p> 關(guān)鍵字……………………………………………
3、……...………………………..3</p><p> 一、概述………...……...…………………..…………………………………..3.</p><p> 1-1引言………............….…………………………………….3</p><p> 1-2設(shè)計任務(wù)與要求………………………..…………………….4</p><p> 二
4、、設(shè)計原理與方案………………………………………………..5</p><p> 2-1設(shè)計原理…………...………………............……………..5</p><p> 2-2設(shè)計方案…………...………………............……………...6</p><p> 三、硬件設(shè)計…………………………………………………………8</p>
5、<p> 3-1 AT89S51介紹…………...………………............…………8</p><p> 3-2彩燈設(shè)計電路…………...………………............…………12</p><p> 3.3按鍵模塊設(shè)計…………...………………............………….13</p><p> 四、軟件設(shè)計…………………………
6、………………………………14</p><p> 4-1第一種彩燈效果程序設(shè)計…………………………………………….15</p><p> 4-2第二種彩燈效果程序設(shè)計…………………………………………….16</p><p> 4-3第三種彩燈效果程序設(shè)計……………………………………………..17</p><p> 4-4第四種彩燈效果程
7、序設(shè)計……………………………………………..17</p><p> 4-5延時程序……………………………………………………………….18</p><p> 4-6暫停(外部中斷)……………………….…………………………….18</p><p> 五、硬件介紹及仿真…………………………………………………..19</p><p> 5-1
8、 Proteus ISIS和keil c51介紹………………………………19</p><p> 5-2測試結(jié)果分析……………………………………………….20</p><p> 5-2-1 keil 調(diào)試結(jié)果……………………………………………..20</p><p> 5-2-2proteus仿真電路圖…………………………………………..21</p>
9、<p> 六、課程設(shè)計小結(jié)…………...………………………...…………………………22</p><p> 附錄:彩燈控制系統(tǒng)的程序…………………………...…………………...…........22</p><p><b> 內(nèi)容摘要</b></p><p> 本次設(shè)計是以單片機c語言進(jìn)行軟件設(shè)計的,系統(tǒng)以AT89C51
10、單片機作為主控核心,按鍵控制電路,彩燈顯示電路等模塊共同組成主控電路,可以實現(xiàn)LED彩燈的不同功能類型顯示切換,用戶可以變換想要的閃爍方式。其硬件電路主要有主控制器,LED顯示電路,復(fù)位電路。系統(tǒng)程序的設(shè)計包括主程序,中斷服務(wù)程序,暫停程序等的設(shè)計,設(shè)計程序直接通過keil軟件編譯,利用Proteus進(jìn)行仿真調(diào)試,以方便修改程序。</p><p> 本系統(tǒng)具有電路結(jié)構(gòu)簡單、易操作、硬件少、體積小、成本低等優(yōu)點,
11、具有一定的實用和參考價值。</p><p> 關(guān)鍵詞:LED彩燈、主控電路、閃爍方式</p><p><b> 一、概述</b></p><p><b> 1.1引言</b></p><p> 當(dāng)今世界科技日新月異,發(fā)展速度之快超人想像。特別是電子領(lǐng)域,在上世紀(jì)有了重大突破,其集成化越來越高
12、,前景一片看好,中國在這方面也做出了驕人成績,但與國外那種熱烈的學(xué)術(shù)氛圍不同的是,這些研究一般都只停留在實驗室,普通愛好者則不多見。這與我國教育重理論輕實踐的傾向有一定關(guān)系,很多學(xué)生講起理論時候滔滔不絕,當(dāng)具體到做課題研究需要自己動手時卻無從下手,茫茫然不知所以。還有一部分人平時不愿意接觸試驗,久而久之對實驗產(chǎn)生一種恐懼心里,認(rèn)為難度太大而放棄等,這些不好現(xiàn)象造成大家動手能力普遍不行。</p><p> 課程設(shè)
13、計是學(xué)完一門課后應(yīng)用本課知識及以前的知識積累而進(jìn)行的綜合性、開放性的訓(xùn)練,是培養(yǎng)學(xué)生工程意識和創(chuàng)新能力的重要環(huán)節(jié)。進(jìn)一步鞏固和加深“單片機”課程的基本知識,了解單片機設(shè)計知識在實際中的應(yīng)用。綜合運用“單片機”課程和先修課程的理論及生產(chǎn)實際知識去分析和解決電路設(shè)計問題,進(jìn)行單片機電路設(shè)計的訓(xùn)練。學(xué)習(xí)單片機設(shè)計電路的一般方法,了解和掌握單片機電路的設(shè)計過程和進(jìn)行方式,培養(yǎng)正確的設(shè)計思想和分析問題、解決問題的能力,特別是總體電路設(shè)計能力。通過
14、計算和繪圖,學(xué)會運用標(biāo)準(zhǔn)、規(guī)范和查閱有關(guān)技術(shù)資料等,培養(yǎng)單片機電路設(shè)計的基本技能。</p><p> 本文提出了一種基于AT89C51單片機的彩燈控制方案,實現(xiàn)對LED彩燈的控制。該程序示例了單片機鍵盤控制P1和P2口流水燈花樣的方法;具體表現(xiàn)為:k1,K2,K3,K4四個小按鍵,分別實現(xiàn)了四種彩燈效果控制。通過這次實驗,我們也了解了團(tuán)隊合作的重要性,集體的力量是偉大的,一個人如何融入一個團(tuán)隊是是一個重要問題,
15、講究合作才能取得最后的成功!</p><p> 1.2設(shè)計任務(wù)與要求</p><p> 1、用16只以上的LED,實現(xiàn)至少4種彩燈燈光效果(不含全部點亮,全部熄滅);</p><p> 2、可以用輸入按鈕在幾種燈光效果間切換;</p><p> 3、可以通過按鈕暫停彩燈效果,使小燈全亮,再次按下相同按鈕后繼續(xù)之前的效果;</p&
16、gt;<p> 4、增加自動在幾種效果間切換的功能,手動模式間切換。</p><p> 5、使用定時中斷延時。</p><p> 6、實現(xiàn)其他除1-5中提到的功能。</p><p><b> 二、設(shè)計原理及方案</b></p><p><b> 2.1設(shè)計原理</b><
17、/p><p> 本次課程設(shè)計中較多的用到了定時中斷指令。</p><p> 在CPU和外設(shè)交換信息時,存在著快速CPU和慢速外設(shè)間的矛盾,機器內(nèi)部有時也可能出現(xiàn)突發(fā)事件,為此,計算機中通常采用中斷技術(shù)。</p><p> CPU和外設(shè)并行工作,當(dāng)外設(shè)數(shù)據(jù)準(zhǔn)備好( 或有某種突發(fā)事件發(fā)生)時向CPU提出請求,CPU暫停正在執(zhí)行的程序轉(zhuǎn)而為該外設(shè)服務(wù)(或處 理緊急事件)
18、,處理完畢再回到原斷點繼續(xù)執(zhí)行原程序。</p><p> 中斷優(yōu)先級:當(dāng)有多個中斷源同時 向CPU申請中斷時,CPU優(yōu)先響應(yīng)最需緊急處理的中斷請求,處理完畢再響應(yīng)優(yōu)先級別較低的 ,這種預(yù)先安排的響應(yīng)次序。 </p><p> 中斷的嵌套:在中斷系統(tǒng)中,高優(yōu)先級的 中斷請求能中斷正在進(jìn)行的較低級的中斷源處理,</p><p> ?。?)中斷技術(shù)是實時控制中的常用技
19、術(shù),51系列單片機有三個內(nèi)部中斷,二個外部中斷。所謂 外部中斷就是在外部引腳上有產(chǎn)生中斷所需要的信號。</p><p> 每個中斷源有固定的中斷服務(wù)程序的入口地址(稱矢量地址或向量地址)。當(dāng)CPU響應(yīng)中斷以 后單片機內(nèi)部硬件保證它能自動的跳轉(zhuǎn)到該地址。因此,此地址是應(yīng)該熟記的,在匯編程序 中,中斷服務(wù)程序應(yīng)存放在正確的向量地址內(nèi)。</p><p> (或存放一條轉(zhuǎn)移指令);在C語言中是
20、靠Interrupt n的關(guān)鍵字n自動設(shè)置的。</p><p> (2)單片機的中斷是靠內(nèi)部的寄存器管理的,這就是中斷允許寄存器IE,中斷優(yōu)先權(quán)寄存器IP ,必須在CPU開中斷即開全局中斷開關(guān)EA,開各中斷源的中斷開關(guān),CPU才能響應(yīng)該中斷源的 中斷請求,其中缺一不可。</p><p> (3)從程序表面看來,主程序和中斷服務(wù)程序好象是沒有關(guān)連的,只有掌握中斷響應(yīng)的過程, 才能理解中斷
21、的發(fā)生和返回,看得懂中斷程序,并能編寫高質(zhì)量中斷程序。</p><p><b> 表2.1 常用中斷</b></p><p><b> 定時計數(shù)</b></p><p> 定時模式:C51有四種工作模式:模式0,模式1模式2模式3</p><p> 模式0:選擇定時器的高8位和低五位組成一個
22、13位的定時、計數(shù)器,TL低五位溢出想TH進(jìn)位,TH溢出時向中斷標(biāo)志位TF進(jìn)位,并申請中斷。</p><p> 模式1:TH和TL組成16位的定時、計數(shù)器,定時時間t=65536-N</p><p> (3) 模式2:把TL和TH組成一個自動重裝初值的8位定時、計數(shù)器,其中TL用作定時計數(shù),TH用于保存初值,TL計數(shù)溢出時不僅TF0置1,而且還自動將TH中的內(nèi)容重新裝載到TL中。<
23、;/p><p> ?。?)模式3:TH和TL為兩個獨立的8位的定時計數(shù)器。</p><p><b> 2.2設(shè)計方案</b></p><p> 本方案提出了一種基于AT89C51單片機的彩燈控制方案,實現(xiàn)對LED彩燈的控制。本方案以AT89C51單片機作為主控核心,與鍵盤、顯示、驅(qū)動等模塊組成核心主控制模塊。在主控模塊上設(shè)有6個按鍵;根據(jù)用戶需
24、要可以編寫4種亮燈模式,利用其內(nèi)部定時器T0實現(xiàn)一個基本單位時間為5 ms的定時中斷,根據(jù)各種亮燈時間的不同需要,在不同時刻輸出燈亮或燈滅的控制信號,然后驅(qū)動各種顏色的燈亮或滅?!?、系統(tǒng)功能如圖:</p><p> LED彩燈分為2部分,即彩燈控制器(主控模塊AT89C51)和管內(nèi)LED板模塊(受控模塊)。彩燈控制器可直接與220 V交流市電相連接,經(jīng)過開關(guān)電源變換,輸出直流工作電壓,一方面為管內(nèi)LED模塊
25、提供12 V工作電源,另一方面為主控模塊單片機系統(tǒng)(彩燈控制器)提供5 V工作電源。整個系統(tǒng)工作由軟件程序控制運行,根據(jù)需要,用戶可以在LED彩燈工作時通過主控模塊上的按鍵來設(shè)定亮燈時間和燈光閃動頻率?! ∩想姾笙到y(tǒng)經(jīng)過初始化,查詢是否有功能切換鍵按下:有,則進(jìn)入用戶設(shè)定模式狀態(tài);無,則進(jìn)入默認(rèn)缺省工作狀態(tài)。在用戶設(shè)定模式狀態(tài)下,用戶可以根據(jù)需要來指定調(diào)用哪些模式,并且可以改變每種模式的時間Ti、參數(shù),如果用戶想進(jìn)入缺省狀態(tài)模式,只需
26、按一下功能切換鍵即可跳入缺省模式,程序會自動順序調(diào)用亮燈模式;在缺省工作狀態(tài)下,LED彩燈控制器按照程序設(shè)定好的若干亮燈花樣模式程序效果1順序調(diào)用往下走,從效果1模式開始工作,到效果4為一個亮燈周期,然后再回到效果1循環(huán)繼續(xù)工作,同樣如果想進(jìn)入用戶設(shè)定模式狀態(tài),只需按下功能切換鍵即可。整個4種亮燈模式時間可以看作一個大周期T,其中的每一種花樣工作模式時間為小周期</p><p><b> 三、 硬件
27、設(shè)計</b></p><p> 3.1 AT89S51介紹</p><p><b> 圖3.1</b></p><p> AT89S51是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司
28、的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。</p><p> AT89S51具有如下特點:40個引腳,4k Bytes Flash片內(nèi)程序存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O
29、)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。 </p><p><b> 主要特性:</b></p><p> ·與MCS-51 兼容 </p><p> ·4K字節(jié)可編程閃爍存儲器 </p><p&
30、gt; ·壽命:1000寫/擦循環(huán)</p><p> ·數(shù)據(jù)保留時間:10年</p><p> ·全靜態(tài)工作:0Hz-24MHz</p><p> ·三級程序存儲器鎖定</p><p> ·128×8位內(nèi)部RAM</p><p> ·32
31、可編程I/O線</p><p> ·兩個16位定時器/計數(shù)器</p><p><b> ·5個中斷源 </b></p><p><b> ·可編程串行通道</b></p><p> ·低功耗的閑置和掉電模式</p><p>
32、·片內(nèi)振蕩器和時鐘電路</p><p><b> 管腳說明:</b></p><p><b> VCC:供電電壓。</b></p><p><b> GND:接地。</b></p><p> P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電
33、流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p> P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將
34、輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出
35、地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p> P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上
36、拉的緣故。</p><p> P3口也可作為AT89C51的一些特殊功能口,如下表所示:</p><p><b> 口管腳 備選功能</b></p><p> P3.0 RXD(串行輸入口)</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 /INT0(外部中
37、斷0)</p><p> P3.3 /INT1(外部中斷1)</p><p> P3.4 T0(記時器0外部輸入)</p><p> P3.5 T1(記時器1外部輸入)</p><p> P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)</p><p> P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)</p>
38、<p> P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。</p><p> ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的
39、1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p> /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有
40、效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p> /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:反
41、向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p><p> 振蕩器特性: XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的
42、高低電平要求的寬度。</p><p><b> 3.2彩燈電路設(shè)計</b></p><p> 16個LED彩燈結(jié)成共陽極,其中p0接了8個排電阻,因為p1,p2,p3口內(nèi)部都有上拉電阻,可以在它們引腳不加外部電阻,而p0口沒有上拉電阻,所以必須接外部上拉電阻。</p><p><b> 3.3按鍵模塊設(shè)計</b>&l
43、t;/p><p> 其中k1接p1.0,作為第一種彩燈效果的按鍵;k2接p1.1,作為第二種彩燈效果的按鍵;k3接p1.2,作為第三種彩燈效果的按鍵;k4接p3.7,作為第四種彩燈效果的按鍵。K5接p3.2,作為暫停彩燈效果的按鍵;k作為擴(kuò)展功能按鍵,實現(xiàn)彩燈效果加快功能</p><p><b> 四、 軟件設(shè)計</b></p><p><
44、;b> 主程序</b></p><p><b> main()</b></p><p><b> {</b></p><p><b> // 初始化燈光</b></p><p><b> IP=0x01;</b></p&g
45、t;<p> IE=0x83;TMOD=0x02;</p><p> TH0=-50000/256;</p><p> TL0=-50000%256;</p><p><b> TR0=1;</b></p><p> P0=0xFE;P2=0xFE;</p><p><
46、;b> while(1)</b></p><p><b> {</b></p><p> if(k1==0) {while(k1==0); bz=0;km=5; zt=1; }</p><p> if(k2==0) {while(k2==0); bz=1; km=50;zt=1; }</p>
47、<p> if(k3==0) {while(k3==0);bz=2;km=30;zt=1;}</p><p> if(k4==0) {while(k4==0);bz=3;km=39; zt=1; }</p><p> if(k ==0) {while(k ==0);km-=1; if(km==0)km=0; }</p><p>
48、;<b> }</b></p><p> 實現(xiàn)幾種彩燈效果程序</p><p> void EX_T0() interrupt 1</p><p><b> {</b></p><p> count++; TH0=-50000/256;</p><p> TL
49、0=-50000%256;</p><p> if(count!=km) return;</p><p><b> count=0;</b></p><p> //燈光閃爍 實現(xiàn)代碼</p><p> if( zt ==0) </p><p> {P0=0x00;P2=0xFF; }
50、</p><p> if( zt ==1)</p><p><b> {</b></p><p> if(bz==0) flash_1(); </p><p> if(bz==1) flash_2(); </p><p> if(bz==2) flash_3(); </p>
51、<p> if(bz==3) flash_4(); </p><p><b> }</b></p><p> 4.1 第一種彩燈效果:</p><p><b> 實現(xiàn)程序 </b></p><p> void flash_1()</p><p> {
52、delay(30);P0=_cror_(P0,1);</p><p> delay(30);P2=_cror_(P2,1);}</p><p><b> 實現(xiàn)流程圖:</b></p><p> 實現(xiàn)過程:當(dāng)開始后經(jīng)初始化以后,如果k1按下即p1.0=0,執(zhí)行while空操作,當(dāng)按鍵上來后執(zhí)行bz=0;km=5;zt=1使程序轉(zhuǎn)向定時程
53、序,經(jīng)過25ms后執(zhí)行效果1,使p0口p2口右移一次,每25ms循環(huán)右移一次。</p><p> 實現(xiàn)功能:從下到上依次點亮。</p><p> 4.2第二種彩燈效果程序</p><p> void flash_2()</p><p><b> {</b></p><p> delay(
54、50);P0=_crol_(P0,4);</p><p> delay(50);P2=_crol_(P2,4);</p><p><b> }</b></p><p> 實現(xiàn)功能:從上往下跳四個燈亮</p><p> 4.3第三種彩燈效果程序</p><p> void flash_
55、3()</p><p><b> {</b></p><p> delay(30);P0=(P0+38)%255;</p><p> delay(30);P2=(P2+34)%255;</p><p><b> }</b></p><p><b> 實
56、現(xiàn):亂序點亮熄滅</b></p><p> 4.4第四種彩燈效果程序</p><p> void flash_4()</p><p><b> {</b></p><p> delay(30);P0=_crol_(P0,1);</p><p> delay(30);P2=
57、_crol_(P2,1);</p><p><b> }</b></p><p> 實現(xiàn):從上到下依次點亮功能。</p><p><b> 4.5 延時程序</b></p><p><b> //延時函數(shù)</b></p><p> void d
58、elay(int m)</p><p><b> { int i;</b></p><p> while(m--)</p><p> for(i=0;i<120;i++);</p><p> 實現(xiàn)了外部m次,內(nèi)部120次共m*120us的延時。</p><p> 4.6暫停(外部
59、中斷)</p><p> void EX_INT0() interrupt 0</p><p><b> {</b></p><p> while(P3^2==0) ; </p><p> zt=(zt+1)%2; </p><p><b> }</b&g
60、t;</p><p> 當(dāng)暫停時zt=0,執(zhí)行/燈光閃爍 實現(xiàn)代碼</p><p> if( zt ==0) </p><p> {P0=0x00;P2=0xFF; }</p><p> 使p0口全亮,p2口全熄。</p><p> 5.1Proteus ISIS和keil c51介紹</p>
61、<p> 在這次課程設(shè)計中我用到了Proteus ISIS和keil c51這兩個軟件,下面簡單的介紹下。</p><p> Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:①實現(xiàn)了單片機仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍
62、電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。②支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當(dāng)
63、前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。④具有強大的原理圖繪制功能??傊?,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。本章介紹Proteus ISIS軟件的工作環(huán)境和一</p><p> Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C
64、語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。</p><p> Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。</p
65、><p> 5-2測試結(jié)果與分析</p><p> 利用KeilC與Proteus連接仿真并調(diào)試。</p><p> 假若KeilC與Proteus均已正確安裝在C:\Program Files的目錄里,把C:\Program Files\Labcenter Electronics\Proteus 6 Professional\MODELS\VDM51.dll復(fù)制
66、到C:\Program Files\keilC\C51\BIN目錄中。用記事本打開C:\Program Files\keilC\C51\TOOLS.INI文件,在[C51]欄目下加入:TDRV5=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver")其中“TDRV5”中的“5”要根據(jù)實際情況寫,不要和原來的重復(fù)。進(jìn)入KeilC μVision2開發(fā)集成環(huán)境,創(chuàng)建一個新項目(Pr
67、oject),并為該項目選定合適的單片機CPU器件(如:Atmel公司的AT89C51)。并為該項目加入KeilC源程序。</p><p> 在軟件調(diào)試過程中,先對各模塊結(jié)構(gòu)程序在符合現(xiàn)場環(huán)境的下進(jìn)行獨立的調(diào)試。在此主要檢查系統(tǒng)CPU的現(xiàn)場、RAM的內(nèi)容和I/O口的狀態(tài),檢測其執(zhí)行結(jié)果以發(fā)現(xiàn)各類的錯誤,如:程序中的死循環(huán)錯誤、機器碼錯誤、轉(zhuǎn)移地址的錯誤、軟件算法及硬件設(shè)計的錯誤;并不斷調(diào)整系統(tǒng)的軟件和硬件,使每
68、個模塊得以通過。其后進(jìn)行整體程序的綜合調(diào)試,此過程則主要關(guān)注各子程序在運行時是否破壞現(xiàn)場,是否發(fā)生緩沖單元沖突,是否有零位建立和清除設(shè)計上的錯誤,是否有堆棧區(qū)域的溢出錯誤幾輸入設(shè)備狀態(tài)異常錯誤等。經(jīng)過單步和斷點調(diào)試后,最后是進(jìn)行連續(xù)調(diào)試,以確定定時精度及CPU的實時響應(yīng)等問題。要特別注意實時性操作(如中斷等)利用單步運行方式無法調(diào)試,必須采用連續(xù)運行方式進(jìn)行調(diào)試。同時要考慮在有監(jiān)控程序存在的情況下,緩沖單元是否與監(jiān)控程序的工作單元發(fā)生沖
69、突。</p><p> 5-2-1 Keil調(diào)試結(jié)果:</p><p> 5-2-2 Proteus 仿真電路圖</p><p><b> 六、設(shè)計小結(jié)</b></p><p> 經(jīng)過兩個周的努力,我們組終于完成這次數(shù)字彩燈的課程設(shè)計任務(wù)。我們通過查閱了大量的書本資料,又上網(wǎng)搜集了許多有用信息,有時候為找不到一個
70、合適的電路而苦惱,然而有時候又為取得一點成功而由衷的高興。</p><p> 當(dāng)最終的方案設(shè)計出來以后,運用C程序編輯軟件程序,并在KEIL軟件調(diào)試仿真。這次課程設(shè)計我主要是負(fù)責(zé)Proteus ISIS繪制電路圖,并且調(diào)制程序,進(jìn)行仿真。經(jīng)過努力我終于將程序調(diào)制成功,仿真出結(jié)果,感到成功的驚喜,但是也有美中不足的地方,暫停按鈕不靈敏!由于第一次做電路圖繪制,技術(shù)不夠過硬的原因,我希望在以后學(xué)習(xí)中多運用該軟件繪制
71、電路圖,進(jìn)行單片機仿真! </p><p> 通過課程設(shè)計,我們增強了對單片機的理解,學(xué)會查尋資料﹑比較方案,學(xué)會單片機的設(shè)計﹑計算;進(jìn)一步提高分析解決實際問題的能力,創(chuàng)造一個動腦動手﹑獨立開展電路實驗的機會,鍛煉分析﹑解決程序編寫問題的實際本領(lǐng),真正實現(xiàn)由課本知識向?qū)嶋H能力的轉(zhuǎn)化;通過典型程序的設(shè)計與制作,加深對基本原理的了解,增強了實踐能力。由于我們的能力和水平有限,實驗過程不夠完美,首次做課程設(shè)計沒有經(jīng)驗
72、,錯誤之處在所難免,懇請老師加以糾正,我將在以后學(xué)習(xí)中不斷改進(jìn)!</p><p> 附錄 彩燈控制系統(tǒng)程序</p><p> #include<reg51.h></p><p> #include<intrins.h></p><p><b> // 定義開關(guān)</b></p>
73、<p> sbit k1=P1^0;</p><p> sbit k2=P1^1;</p><p> sbit k3=P1^2;</p><p> sbit k4=P3^7;</p><p> sbit k5=P3^2; //暫停 外部中斷</p><p>
74、; sbit k=P1^7; //擴(kuò)展功能 km--</p><p><b> // 控制 快慢</b></p><p> unsigned char km=20;</p><p><b> //計數(shù)器</b></p><p> unsigned char count=0;
75、 //形成1S 的定時</p><p><b> //燈光閃爍標(biāo)志位</b></p><p> unsigned char bz=0; //bz=0,1 2 3 </p><p><b> //暫停標(biāo)志</b></p><p> unsigned char zt=1; //暫停標(biāo)
76、志位</p><p><b> //延時函數(shù)</b></p><p> void delay(int m)</p><p><b> { int i;</b></p><p> while(m--)</p><p> for(i=0;i<120;i++);&
77、lt;/p><p><b> }</b></p><p><b> //第一種燈光效果</b></p><p> void flash_1()</p><p><b> {</b></p><p> delay(30);P0=_cror_(P0,
78、1); //向右移</p><p> delay(30);P2=_cror_(P2,1);</p><p><b> }</b></p><p><b> //第二種燈光效果</b></p><p> void flash_2()</p><p><b>
79、 {</b></p><p> delay(50);P0=_crol_(P0,4); //從上往下跳四個燈亮</p><p> delay(50);P2=_crol_(P2,4);</p><p><b> }</b></p><p><b> //第三種燈光效果</b>&
80、lt;/p><p> void flash_3()</p><p><b> {</b></p><p> delay(30);P0=(P0+38)%255; //亂序點亮熄滅</p><p> delay(30);P2=(P2+34)%255;</p><p><b> }&
81、lt;/b></p><p> //第四種彩燈效果程序</p><p> void flash_4()</p><p><b> {</b></p><p> delay(30);P0=_crol_(P0,1); //從上到下依次點亮功能</p><p> delay(30);
82、P2=_crol_(P2,1);</p><p><b> }</b></p><p> void EX_T0() interrupt 1//T0 定時中斷</p><p><b> {</b></p><p> count++; TH0=-50000/256;</p>
83、<p> TL0=-50000%256;</p><p> if(count!=km) return;</p><p><b> count=0;</b></p><p> //燈光閃爍 實現(xiàn)代碼</p><p> if( zt ==0) </p><p> {P0=0x0
84、0;P2=0x00; } </p><p> if( zt ==1)</p><p><b> {</b></p><p> if(bz==0) flash_1(); </p><p> if(bz==1) flash_2(); </p><p> if(bz==2) flash_3()
85、; </p><p> if(bz==3) flash_4(); </p><p><b> } </b></p><p><b> }</b></p><p> void EX_INT0() interrupt 0 //外部中斷</p><p> {
86、 while(P3^2==0); </p><p> zt=(zt+1)%2; </p><p><b> }</b></p><p><b> main()</b></p><p><b> {</b></p><p><b>
87、; // 初始化燈光</b></p><p> IP=0x01; //優(yōu)先級</p><p><b> IE=0x83;</b></p><p> TMOD=0x02; </p><p> TH0=-50000/256;</p><p> TL0=-50
88、000%256;</p><p> TR0=1; //啟動 定時中斷</p><p> P0=0xFE;P2=0xFE;</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(k1==0)
89、 {while(k1==0); bz=0;km=5; zt=1; }</p><p> if(k2==0) {while(k2==0); bz=1; km=50;zt=1; }</p><p> if(k3==0) {while(k3==0);bz=2;km=30;zt=1;}</p><p> if(k4==0) {while(k4==
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 彩燈單片機課程設(shè)計
- 基于單片機彩燈控制課程設(shè)計
- 單片機課程設(shè)計--鍵控彩燈
- 單片機彩燈控制課程設(shè)計
- 單片機節(jié)日彩燈課程設(shè)計
- 單片機課程設(shè)計彩燈實驗
- 單片機流水彩燈課程設(shè)計
- 單片機流水彩燈課程設(shè)計
- 單片機課程設(shè)計---簡易節(jié)日彩燈
- 單片機花樣彩燈課程設(shè)計報告
- 單片機課程設(shè)計---節(jié)日彩燈控制
- 單片機課程設(shè)計---單片機節(jié)日彩燈控制器
- 單片機課程設(shè)計:彩燈控制器設(shè)計
- 單片機課程設(shè)計--藝術(shù)彩燈控制系統(tǒng)設(shè)計
- 單片機課程設(shè)計-- 彩燈控制器的設(shè)計
- 彩燈控制器的設(shè)計 單片機課程設(shè)計
- 單片機課程設(shè)計---藝術(shù)彩燈控制系統(tǒng)設(shè)計
- 單片機課程設(shè)計--節(jié)日彩燈控制器設(shè)計
- 單片機課程設(shè)計---用單片機設(shè)計節(jié)日彩燈控制器
- 彩燈控制器的設(shè)計 單片機課程設(shè)計
評論
0/150
提交評論