版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
黃河科技學院1基本內容和技術方案采用AT89C52單片機作為主控制器,彩燈控制器包括缺省模式和用戶模式,通過鍵盤可以切換模式,用戶模式下可以隨意設定亮燈時間和閃爍頻率參數(shù),要求每種模式下都能實時的在數(shù)碼管顯示出模式號,時間和頻率,合理選擇系統(tǒng)方案,簡述其工作原理;完成系統(tǒng)硬件設計,畫出電路原理圖;完成系統(tǒng)軟件設計,可采用C語言和匯編語言混合編程;完成LED彩燈控制器的設計與制作,要求初始化后運行在缺省模式下,需要此模式下循環(huán)運行四種以上預設的彩燈閃爍方案;技術方案:本方案以AT89C52單片機作為主控核心,與鍵盤、顯示等模塊組成核心主控制模塊。在主控模塊上設有3個按鍵和1位七段碼LED顯示器,根據(jù)用戶需要可以編寫若干種亮燈模式,利用其內部定時器T0實現(xiàn)一個基本單位時間為1ms的定時中斷,根據(jù)各種亮燈時間的不同需要,在不同時刻輸出燈亮或燈滅的控制信號,然后驅動各種顏色的燈亮或滅。該方案的優(yōu)點是系統(tǒng)體積小、功耗小、可靠性高、調節(jié)靈活、多功能、多花案、使用靈活方便。用戶模式下可以隨意設定亮燈的閃爍頻率參數(shù),并且每種模式下都能實現(xiàn)在數(shù)碼管上顯示出模式號。初始化后運行在缺省模式下,在此模式下可以循環(huán)運行9種預設的彩燈閃爍方案。主程序中默認執(zhí)行左右來回閃爍,在中斷服務程序中,首先讀取按鍵狀態(tài),然后延時10ms,再次讀取按鍵狀態(tài)。把兩次獲得的按鍵狀態(tài)比較,如果不同,就表示是抖動,退出中斷;否則,就去判斷是哪個按鍵按下。如果是K1,就執(zhí)行下一個閃爍方案;如果是K2,就執(zhí)行加速;如果是K3,就執(zhí)行減速。采用置標志位的方法,即在主程序中設定兩個標志位,一個閃爍模式標志位,一個閃爍速度標志位。不斷的對這兩個標志進行查詢:如果模式標志為狀態(tài)0,就執(zhí)行方案0,Mode_0;如果是狀態(tài)1,就執(zhí)行方案1,Mode_1,依次類推。閃爍速度標志默認值為500,對應延時值為500ms。而在中斷服務程序中,只需要進行如下工作:去抖動,鍵盤識別,改變標志位。2系統(tǒng)硬件設計整個系統(tǒng)包括AT89C51主控模塊和受控模塊,即發(fā)光二極管LED。以下就分別介紹一下這兩個模塊的主要功能。2.1主控模塊電路設計主控模塊電路見【圖1】。主控模塊主要設計器件有AT89C51,1個數(shù)碼管顯示器,3個按鈕。通過軟件設計,使單片機P0和P1作為LED驅動信號輸出口,P2口與三位按鈕相接作為按鈕輸入口,P3口與二極管LED相接作為顯示器的輸出口。圖1主控模塊硬件圖2.2受控模塊電路設計LED板模塊設計主要器件有LED彩燈(紅,綠,藍,黃)、限流電阻。根據(jù)實際應用彩燈長度需要,可將不同數(shù)量的LED模塊實現(xiàn)級連,組成一個完整的LED彩燈。考慮到視覺效果,可以將不同顏色的LED混合搭配,即將LED發(fā)光管按順序L0(紅)、L1(綠)、L2(藍)、L3(黃)、L4(紅)、L5(綠)、L6(藍)……依次均勻擺放在一條直線上。通過軟件設計的各種方案,運行起來就會具有很好的動感視覺效果。2.3主要元器件介紹2.3.1單片機AT89C51AT89C51是主控模塊的核心控制器,其芯片內含4KBROM和128ByteRAM;系統(tǒng)的振蕩周期為12MHz。AT89C51具有如下特征(Features):=1\*GB3①與IntelMCS-51產(chǎn)品兼容;=2\*GB3②內部含有4KBEEPROM,可重復擦寫1000次;=3\*GB3③支持晶振頻率從0Hz到24MHz;=4\*GB3④內部含有128*8bit的RAM;=5\*GB3⑤32位可編程的I/O線;=6\*GB3⑥2個16位的定時/計數(shù)器,=7\*GB3⑦6個中斷源;=8\*GB3⑧可編程的串行口;AT89C51有40個引腳,是雙列直插式芯片(DIP)[8],引腳定義及功能見【圖3】。圖3AT89C51引腳圖=1\*GB2⑴振蕩電路單片機是一種時序電路,必須提供脈沖信號才能正常工作,在單片機內部已集成了振蕩器,接18、19號引腳(XTAL1和XTAL2)[9]。AT89C51使用12MHz晶振,兩電容的電容大小均為22pF。引腳XTAL1和XTAL2見【圖4】。圖4晶振電路圖5復位電路=2\*GB2⑵控制信號引腳RST、/VPPRST(9號引腳):單片機上電時,其內部各寄存器處于隨機狀態(tài),在該引腳輸入24個時鐘周期寬度以上的高電平將使單片機復位(RESET)[10],見【圖4】。EA=0,單片機只訪問外部程序存儲器。對8031此引腳必須接地。EA=1,單片機訪問內部程序存儲器。對內部有程序存儲器的8XX51單片機,此引腳應接高電平,但若地址值超過4KB(0FFFH),單片機將自動訪問外部程序存儲器。在8751單片機片內EPROM編程期間,此引腳引入21V編程電源VPP。=3\*GB2⑶輸入輸出引腳(P0、P1、P2和P3端口引腳)P0~P3是89C51與外界聯(lián)系的4個8位雙向并行I/O口。本設計中P0和P1口作為LED驅動信號輸出口,P2口與三位按鈕連接作為按鈕輸入口,P3口與七段碼LED相接作為顯示器的輸出口。=4\*GB2⑷AT89C51單片機的基本結構見【圖5】圖5AT89C51基本結構=5\*GB2⑸單片機89C51的定時器/計數(shù)器:在彩燈控制系統(tǒng)中需要有某種方式來控制彩燈的亮燈時間、頻率等,那就必須使用到定時器。在AT89C51單片機內部設有兩個16位可編程定時器/計數(shù)器,簡稱定時器T0和定時器T1。提供給定時器的是計數(shù)源(見【圖6】)即是單片機的晶振經(jīng)過12分頻后獲得的一個脈沖源。晶振的頻率相當準,所以這個計數(shù)脈沖的時間間隔也很準。一個12M的晶振,它提供給計數(shù)器的脈沖時間間隔就是12M/12等于1M,也就是1個微秒。結論:計數(shù)脈沖的間隔與晶振有關,12M的晶振,計數(shù)脈沖的間隔是1微秒[11]。 圖6計數(shù)器工作方式定時器有四種工作方式,方式0至方式3,本設計中使用方式1。方式1是16位的定時/計數(shù)方式,定時器以全16位二進制數(shù)參與操作,且定時時間為:t=(216-T0初值)×時鐘周期×12[12](1)在AT89C51中還有兩個特殊功能寄存器與定時/計數(shù)有關,那就是TMOD和TCON。TMOD格式如下表所示:表1TMOD格式用于T1用于T0GATEC/M1M2GATEC/M1M0可以看出,TMOD被分成兩部份,每部份4位。分別用于控制T1和T0。其中:C/為功能選擇位,C/=0為定時器,C/=1為計數(shù)器。GATE為門控位,GATE=1硬件啟動;GATE=0軟件啟動。M1M0工作方式選擇位如下表所示:表2M1MM0M1功能說明M0M1功能說明00方式010方式201方式111方式3TCON格式如下表所示:表3M用于定時器/計數(shù)器用于中斷TF1TR1TF0TR0IE1IT1IE0IT0可以看出,TCON也被分成兩部份,高4位用于定時/計數(shù)器,低4位則用于中斷。而TF1(0),當計數(shù)溢出后TF1(0)就由0變?yōu)?。同時計數(shù)脈沖要進入計數(shù)器有層層關要通過,最起碼,就是TR0(1)要為1,開關才能合上,脈沖才能過來。因此,TR0(1)稱之為運行控制位,可用指令SETB來置位以啟動計數(shù)器/定時器運行,用指令CLR來清0[13]。2.3.2LED彩燈限流電阻的確定設計管內LED板模塊時還需注意彩燈限流電阻的確定。限流電阻過小會導致彩燈燒壞。紅綠藍三色燈,它們的額定電流相同,都為20mA,而額定電壓有差異,紅燈與黃燈為2V,綠燈與藍燈為2.2V。所有彩燈的正極都與+5V工作電源相連接,于是它們的限流電阻可根據(jù)如下計算得到:紅燈與黃燈:R=5V-2V20mA=150藍燈與綠燈:R=5V-2.2V20mA=2.3.3數(shù)碼管結構及工作原理數(shù)碼管由七個發(fā)光二極管組成,此外,還有一個圓點型發(fā)光二極管(在圖中以dp表示),用于顯示小數(shù)點。通過七段發(fā)光二極管亮暗的不同組合,可以顯示多種數(shù)字、字母以及其它符號。數(shù)碼管中的發(fā)光二極管共有兩種連接方法:圖7數(shù)碼管模型及實物圖=1\*GB3①共陰極接法:把發(fā)光二極管的陰極連在一起構成公共陰極。使用時公共陰極接地,這樣陽極端輸入高電平的段發(fā)光二極管就導通點亮,而輸入低電平的則不點亮。=2\*GB3②共陽極接法:把發(fā)光二極管的陽極連在一起構成公共陽極。使用時公共陽極接+5V。這樣陰極端輸入低電平的段發(fā)光二極管就導通點亮,而輸入高電平的則不點亮。本次設計顯示器采用共陽極接法[14]。為了顯示數(shù)字或符號,要為顯示器提供代碼,因為這些代碼是為顯示字形的,因此稱之為字形代碼。七段發(fā)光二極管,再加上一個小數(shù)點位,共計八段。因此提供給顯示器的字形代碼正好一個字節(jié)。若a、b、c、d、e、f、g、dp8個顯示段依次對應一個字節(jié)的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,則用共陽極數(shù)碼管顯示十六進制數(shù)時所需的字形代碼如【表4】所示[15]。表4共陽極數(shù)碼管字形代碼字形共陽極代碼字形共陽極代碼字形共陽極代碼00xC060x82C0xC610xF970xF8D0xA120xA480x80E0x8630xB090x90F0x8E40x99A0x88滅0xFF50x92B0x833系統(tǒng)軟件設計3.1綜述本次的任務是設計一個基于單片機的LED彩燈控制器,需要循環(huán)運行四種以上預設的彩燈閃爍方案,這里的各種的方案還有顯示方式都是由單片機內部的程序控制。在這里我將16個發(fā)光二極管分別接在P0和P1口,通過程序控制這兩個端口的電平高低,將16個發(fā)光二極管的正極接P0和P1口,負極接地,即P0和P1口的相應端口為高電平時LED就能被點亮。再通過程序循環(huán)的讓各個端口以不同的方式點亮來達到各種花樣的效果,并且當中要有一定的延時,延時時間小于人眼視覺暫留時間,否則人眼看上去每個燈都是亮的也就沒有實際效果。設計的LED彩燈系統(tǒng)分為兩部分,即AT89C51主控模塊和發(fā)光二極管LED受控模塊。整個系統(tǒng)工作由軟件程序控制運行,同時根據(jù)不同的需要,用戶可以在LED彩燈工作時通過主控模塊上的按鈕來設定亮燈模式和燈光閃動頻率。模塊功能:該部分主要涉及功能的實現(xiàn)方式,即程序編寫。程序要實現(xiàn)的功能包括讀按鍵,通過對讀入按鍵的值控制LED點亮方式和數(shù)碼管顯示。鍵盤有三個按鍵K1、K2、K3,K1控制LED點亮模式,K2、K3鍵控制彩燈閃爍速度,K2加速,K3減速。不論K1被按下多少次,LED九種點亮模式是循環(huán)的,K2、K3鍵控制速度分別有上限和下限,多按無效。程序設計思路:主程序中默認執(zhí)行左右來回閃爍,在中斷服務程序中,首先讀取按鍵狀態(tài),然后延時10ms,再次讀取按鍵狀態(tài)。把兩次獲得的按鍵狀態(tài)比較,如果不同,就表示是抖動,退出中斷;否則,就去判斷是哪個按鍵按下。如果是K1,就執(zhí)行下一個閃爍方案;如果是K2,就執(zhí)行加速;如果是K3,就執(zhí)行減速。采用置標志位的方法,即在主程序中設定兩個標志位,一個閃爍模式標志位,一個閃爍速度標志位。不斷的對這兩個標志進行查詢:如果模式標志為狀態(tài)0,就執(zhí)行方案0,Mode_0;如果是狀態(tài)1,就執(zhí)行方案1,Mode_1,依次類推。閃爍速度標志默認值為500,對應延時值為500ms。而在中斷服務程序中,只需要進行如下工作:去抖動,鍵盤識別,改變標志位。本次設計的LED彩燈控制器另一特點是所有亮燈模式均由軟件控制完成。系統(tǒng)中軟件分為主程序和中斷服務程序。這里以順序調用Mode_i花樣亮燈模式流程為主程序,以一個單位時間1ms的T0定時為中斷服務程序。在這個1ms的T0定時基礎上,我們可以根據(jù)需要來確定各亮燈模式Mode_i內點亮和熄滅各種顏色LED燈的時刻。整個系統(tǒng)軟件由主程序(Main)、各模式子程序(Mode_i)、1ms中斷服務子程序(T0Interrupt)、按鍵掃描處理子程序、顯示子程序等程序組成。利用T0定時器作為定時基本單位,根據(jù)模式需要計算好各控制信號的發(fā)生時刻,根據(jù)不同的模式Mode_i可以設定不同的脈沖翻轉頻率Fi通過P0和P1口輸出,使各色LED燈的驅動時刻與移位觸發(fā)的翻轉時刻步調一致,使LED彩燈按照設計的模式工作。因此在LED彩燈上電工作后,用戶可以很方便地通過主控模塊上的顯示器隨時知道LED彩燈當前工作模式Mode_i。若實際應用需要根據(jù)不同場合和時間來改變彩燈閃亮效果,用戶可以通過主控模塊上的按鈕來設定LED不同的閃爍頻率Fi,以便符合實際需要。此外如果用戶對某一種模式感興趣需要仔細觀看該亮燈花樣,也可以通過鍵盤選定任意第Mode_i模式使系統(tǒng)循環(huán)重復工作在該花樣模式下。3.2主程序與中斷程序3.2.1主程序及流程圖AT89C51通過編寫程序應完成以下功能:通過P0口和P1口控制發(fā)光二極管LED的亮與滅,從而實現(xiàn)多種閃爍方案;通過P2口查詢三個按鈕的情況以作出相應的操作;P3口的P3.0~P3.7為七段碼顯示器的位控,顯示當前亮燈的模式。主程序需完成的任務主要是三個:切換彩燈亮燈模式,以及實現(xiàn)頻率加速和頻率減速的功能。按照上述繪制出主程序流程圖。主程序主程序初始化初始化 開中斷開中斷初始化 讀按鍵保存 讀按鍵保存 Y 延時10ms去抖動調按鍵掃描子程序 延時10ms去抖動調按鍵掃描子程序再讀按鍵K1按下?再讀按鍵K1按下? 兩次按鍵相同?置模式標志 Y兩次按鍵相同?置模式標志NK2按下? K2按下? N Y速度加1 N速度加1K3按下? K3按下? Y速度減1 N 速度減1調數(shù)碼管顯示子程序 調數(shù)碼管顯示子程序 結束結束圖8主程序流程圖3.2.2中斷程序及流程圖所謂中斷就是指當中央處理器CPU正在處理某件事情的時候,外部發(fā)成了一件事(如這里是定時器計數(shù)溢出),請求CPU迅速去處理,CPU暫時中斷當前的工作,轉入處理所發(fā)生的事件,處理完以后,再回到原來的地方,繼續(xù)原來的工作,這個過程就稱為中斷[16]。關閉中斷 N關閉中斷重裝初值重裝初值保護現(xiàn)場保護現(xiàn)場恢復現(xiàn)場中斷次數(shù)恢復現(xiàn)場中斷次數(shù)≥systemSpeed? 開中斷開中斷模式0? Y模式0?返回主函數(shù)數(shù) N返回主函數(shù)數(shù)模式1?模式1? … N 模式8? Y 模式8? Y N Y調Mode_8子函數(shù)調Mode_1子函數(shù)調Mode_0子函數(shù) 調Mode_8子函數(shù)調Mode_1子函數(shù)調Mode_0子函數(shù) … 置模式標識號置模式標識號調數(shù)碼管顯示子程序調數(shù)碼管顯示子程序圖9中斷程序流程圖3.3子程序的編程思路雖然大致的流程圖已經(jīng)繪制完畢,但編程過程中會遇到更加具體的問題,需要編制一些子程序來解決,以下是一些主要子程序的流程圖繪制思路。3.3.1頻率增減按鈕查詢子程序頻率增減功能:所謂頻率增減功能就是加快或者減慢彩燈的閃動頻率。本設計中每按一次頻率增按鈕,每種亮燈模式就按預先設置好的頻率加1;相反每按一次頻率減按鈕,頻率減1,可以一鍵按多次。實現(xiàn)方法是通過設置一個計數(shù)單元CLOCK,其初值設定為10,然后另設計器單元計時,該計時單元每進入一次中斷服務程序就加1,然后把其計時結果不斷與CLOCK比較從而確定什么時候要翻轉。如果查詢到頻率減按鈕按下CLOCK加1,相反查詢到頻率增按鈕按下CLOCK減1。3.3.2延遲子程序數(shù)碼管的顯示必須有足夠長的時間長到肉眼能夠察覺到,因此在點亮數(shù)碼管時要給予其一個適當?shù)难舆t。一個機器周期包括12個時鐘周期。單片機AT89C51工作于12M晶振,它的時鐘周期是1/12(微秒)。它的一個機器周期是12*(1/12)也就是1微秒。一共執(zhí)行1000次,正好1000微秒,也就是1毫秒。3.3.4數(shù)碼管顯示子程序數(shù)碼管完成的主要功能是:顯示當前工作模式的序號Mode_i,它其實是對系統(tǒng)工作狀態(tài)起到了一個很好的實時監(jiān)控作用。本設計采用靜態(tài)顯示,位選線同時選通,每位的段選線分別與一個8位鎖存器輸出相連(設計中接P3口,并外接一個8×1KΩ排阻限流),各位相互獨立,各位顯示一經(jīng)輸出,則相應顯示將維持不變,直至顯示下一字符為止。靜態(tài)顯示方式有較高的亮度和簡單的軟件編程,缺點是占用口線資源太多。3.3.3計數(shù)初值的設定本設計采用定時中斷的方式,因此必須首先確定TMOD與計數(shù)初值,然后設置TCON來啟動T0。計數(shù)初值可按照以下公式計算,假定計數(shù)初值為a,晶振頻率為fOSC赫茲,希望得到一個時間為T秒的中斷則:a=-(4)本設計中fOSC=12MHz,T=1ms,于是a=-=-=64536即FC18(轉換為十六進制),因此TH2(置高八位)初值為0xFC,TL2(置低八位)初值為0x18。4系統(tǒng)調試與仿真分析4.1硬件選材及電路制作首先要對整個任務進行分析,基本確定該彩燈控制系統(tǒng)可分為兩大模塊:主控模塊以及管內LED板模塊。然后進一步確定應該采用哪些元器件。比如:主控模塊首選就是由單片機作為主控核心,其成本很低,且功能很完善。除此以外當然還需要一些按鈕、七段碼顯示器等輔助器件。在確定完所需何種功能的元器件后,就可以進行實物確定,主要通過上網(wǎng)搜索(比如21中國電子網(wǎng)),以及一些元器件手冊。其要求是元器件報價較低,且能夠實際購買的到。確定完這些元器件后通過Protel99繪制原理圖及印刷板電路圖。其繪制印刷板電路的過程中必須注意元器件的尺寸及布線的合理性,盡可能減小板的體積。隨后就是通過自己動手將這些元器件焊接到印刷板上。4.2硬件調試硬件的調試主要是吧電路各種參數(shù)調整到符合設計要求。先排除硬件電路故障,包括設計性錯誤和工藝性故障。一般原則是先靜態(tài)后動態(tài)。硬件靜態(tài)調試主要是檢測電路是否有短路、斷路、虛焊等,檢測芯片引腳焊接是否有錯誤,數(shù)碼管段位是否焊接正確單片機的硬件調試和軟件調試是分不開的。調試方法:在上電前,首先用萬能表、示波器根據(jù)硬件圖和印刷板電路圖仔細檢查其連線是否正確。核對各元器件的型號、規(guī)格以及安裝的方向是否正確。其中重點檢查電源走線,以避免電源之間短路。單片機AT89C51是系統(tǒng)的核心,利用萬用表檢測單片機電源VCC(40腳)是否為+5V、晶振是否正常工作(可用示波器測試,也可以用萬用表檢測,兩引腳電壓一般為1.8V~2.3V之間)、復位引腳RST(復位時為高電平,工作時為低電平)。尤其要注意單片機插座上的電位,由于單片機電源僅5V,因此如果有高電壓,聯(lián)機時會損壞模擬器。4.3軟件調試本次所有軟體程序均采用C51語言編寫,程序寫完后要對其編譯,在Proteus軟件里實現(xiàn)硬件電路仿真。下面分別簡單介紹單片機C語言和這兩款軟件。4.3.1單片機C語言單片機C語言程序設計不同于通用計算機應用程序設計,它必須針對具體的微控制器及外圍電路來完成,為了便于學習單片機應用程序設計和系統(tǒng)開發(fā),很多公司退出了單片機實驗箱、仿真器和開發(fā)板等,這些硬件設備可用于驗證單片機程序,開發(fā)和調試單片機應用系統(tǒng)。開發(fā)8051單片機系統(tǒng)時,使用C語言會使開發(fā)周期大為縮短,開發(fā)效率大幅提高,程序可讀性好且易于移植,所以使用C語言開發(fā)單片機系統(tǒng)已經(jīng)成為必然趨勢。C語言在單片機系統(tǒng)開發(fā)中的優(yōu)勢:=1\*GB2⑴用C語言編寫的程序可讀性強;=2\*GB2⑵在不了解單片機指令系統(tǒng)而僅熟悉8051單片機存儲結構時就可以開發(fā)單片機程序;=3\*GB2⑶寄存器分配和不同存儲器尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理;=4\*GB2⑷程序可分為多個不同的函數(shù),這使程序設計結構化;=5\*GB2⑸函數(shù)庫豐富,數(shù)據(jù)處理能力強;=6\*GB2⑹程序編寫及調試時間大大縮短,開發(fā)效率遠高于匯編語言;=7\*GB2⑺C語言具有模塊化編程技術,已編寫好的通用程序模塊很容易植入新程序,這進一步提高了程序開發(fā)效率。4.3.2KeiluVision2C51單片機支持HEX文件,我采用的編譯器是KeiluVision2軟件,該軟件是美國KeilSoftware公司開發(fā)的,關于8051系列MCU的開發(fā)工具,是目前世界上最好的51單片機開發(fā)工具之一。軟件本身支持數(shù)百種51系列單片機芯片,可以用來編譯C源碼,匯編源程序以及兩者的混合編程代碼,連接重定位目標文件和庫文件,創(chuàng)建HEX文件,調試目標程序等,是一種集成化的文件管理編譯環(huán)境。使用步驟如下:=1\*GB2⑴建立一個項目,啟動Keil,單擊“Project菜單/New”選項,從彈出的窗口中選擇要保存的路徑,并輸入項目文件名“彩燈.uv2”,然后保存。這時會彈出一個選擇CPU型號的對話框,根據(jù)所使用的單片機來選擇,我用的單片機是AT89C51。=2\*GB2⑵創(chuàng)建程序文件,單擊“File菜單/New”選項,輸入C51語言源程序,單擊“File菜單/Save”并輸入程序文件名“彩燈.C”,保存。=3\*GB2⑶程序文件添加到項目中,右鍵點擊“Target1”前面的“+”,展開里面的內容“SourceGroup1”,右鍵單擊“SourceGroup1”彈出一個右鍵菜單,單擊“AddFiletoGroup’sSourceGroup1”,從彈出的窗口中選擇之前保存的文件“彩燈.C”=4\*GB2⑷設置當前項目的目標選項,右鍵單擊“Target1”,從彈出的右鍵菜單中單擊“OptionforTarget”選項,從彈出的“Options”窗口中選擇“Target”標簽欄,在“CreateHEXFile”前面打鉤。=5\*GB2⑸運行編譯,右鍵單擊“Target1”,從彈出的右鍵菜單中單擊“Buildtarget”選項,此時若源程序沒有語法錯誤,Keil就會生成HEX文件,并自動保存在之前設置的路徑里。4.4.3ProteusProteus是英國Labenterelectronics公司開發(fā)的電路分析與實物仿真軟件,是目前最好的模擬單片機外圍器件的工具,它可以仿真、分析各種模擬電路與集成電路,軟件提供了大量模擬與數(shù)字元器件及外部設備,各種虛擬儀表(如電壓表、電流表、示波器、邏輯分析儀、信號發(fā)生器等),特別是它具有對單片機及其外圍電路組成的綜合系統(tǒng)的交互仿真功能。Proteus操作非常簡單,啟動“ISIS.exe”。在設計原理圖時,根據(jù)當前電路復雜程度和特定要求,選擇恰當?shù)哪K進行設計,打開模塊式需要單擊“文件/新建設計”(File/NewDesign)菜單,打開“創(chuàng)建新設計”(CreateNewDesign)對話框,然后選擇相應模塊。創(chuàng)建空白文件后,先將DSN文件保存到指定位置,接下來就可以開始在圖紙中添加元件了,單擊模式工具上的元件模式(ComponentMode)圖標,對象選擇窗口上會出設備(Device),這時單擊“P”按鈕,打開元件選擇窗口,在元件庫選擇硬件電路所需要的元器,合理擺放位置,然后按要求連接好電路圖。4.4軟件仿真結果及分析完成單片機系統(tǒng)仿真電路圖設計后,即可開始仿真運行單片機綁定的程序文件,雙擊單片機,打開單片機屬性窗口(也可以先在單片機上單擊右鍵,再單擊左鍵,或者選中單片機后按下(Ctrl+E組合鍵),在“ProgramFiles”項中選擇對應的HEX文件。在仿真電路和程序都沒有問題時,直接單擊Proteus主窗口下的“運行”(Play)按鈕,即可仿真運行單片機系統(tǒng),在運行過程中如果希望觀察內存、24C0X、溫度寄存器、時鐘芯片等內部數(shù)據(jù)可在運行時單擊“單步”(Step)或“暫?!保≒ause)按鈕,然后再“調試”(Debug)菜單中打開相應設備。如果要觀察仿真電路中某些位置的電壓或波形等,可向電路中添加相應的虛擬儀器,例如,電壓表、示波器等。Mode_0模式0(一個燈亮從左到右跑)程序及仿真結果:圖10模式0仿真圖Mode_3模式3(一個燈滅先從左到右再從右到左跑)程序及仿真結果:圖11模式3仿真圖Mode_5模式5(四個亮左右來回跑)程序及仿真結果:圖12模式5仿真圖5結束語個管腳功能的理解和掌握。實現(xiàn)了軟件和硬件的有效結合,缺一不可。設計讓我把單片機的理論知識用在實踐中,實現(xiàn)了理論和實踐相結合,從中更懂得理論的是實踐的基礎,實踐有能檢驗理論的正確性,更激發(fā)了我對專業(yè)知識的渴求,這些對我以后參加工作或者繼續(xù)學習都會有很大的幫助和影響。通過本文的論述從而為實際中生產(chǎn)各種亮燈模式的彩燈打下理論基礎,與市面上大多數(shù)的LED彩燈相比,我設計的彩燈具有更好的燈光裝飾經(jīng)過一學期的課程設計,我對單片機的使用有了不同于以往的認識。從書本上的理論到現(xiàn)實中的硬件電路制作、軟件編制以及軟硬件調試,難度大大地增加。但是通過這一過程我對單片機的認識更加深刻。這對我今后從事該方面的學習工作是一個很好的基礎。通過這次的畢業(yè)設計,讓我受益匪淺,讓我了解和掌握了一些編程思想和對I/O口的使用和應用的條件的思考,對單片機的各效果,性價比更高,與普通的全硬件LED彩燈相比具有較好的經(jīng)濟效益。應用主控模塊輸出的控制信號去控制燈管內的LED板模塊工作,使的產(chǎn)品性能穩(wěn)定,便以安裝容易操作。由于控制程序存儲在89C51單片機的電可擦除Flash閃存EPROM中,如果用戶需要更改系統(tǒng)的亮燈模式Mode_i,無須改變系統(tǒng)硬件電路,只需修改其中程序即可,是一種很有發(fā)展前途的彩燈控制器。.參考文獻單片機課程設計指導書 皮大能 北京理工大學出版社 2012.78051單片機實踐與應用 吳金戎 清華大學出版社 2003.8單片機技術基礎教程與實踐夏路易 電子工業(yè)出版社 2008.1單片機原理及應用 張毅剛高等教育出版社2012.11基于Proteus的單片機系統(tǒng)設計與仿真實例蔣輝平機械工業(yè)出版社2007.7
附錄附錄1元器件清單表5元器件清單所用器材型號數(shù)量/只51單片機AT89C511發(fā)光二極管普通16電阻1/8W1KΩ1排阻3KΩ×81電容25V22uF電解電容1電容瓷片30pF2晶振12MHz1按鍵普通3七段數(shù)碼管共陽極1附錄2總電路圖圖13總電路圖附錄3程序#include<REG52.H>unsignedcharRunMode;voidDelay1ms(unsignedintcount)//延時子程序{unsignedinti,j;for(i=0;i<count;i++)for(j=0;j<125;j++);}unsignedcharcodeLEDDisplayCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80};//七段共陽極數(shù)碼管0到8字形碼voidDisplay(unsignedcharValue)//七段數(shù)碼管顯示子程序{P3=LEDDisplayCode[Value];}voidLEDFlash(unsignedcharCount){unsignedchari;bitFlag;for(i=0;i<Count;i++){Flag=!Flag;if(Flag)Display(RunMode);elseDisplay(0x10);Delay1ms(100);}Display(RunMode);}unsignedcharGetKey(void)//按鍵讀入函數(shù){unsignedcharKeyTemp,CheckValue,Key=0x00;CheckValue=P2&0x32;if(CheckValue==0x32)//第一次讀按鍵值return0x00;Delay1ms(10);KeyTemp=P2&0x32;//第二次讀按鍵值if(KeyTemp==CheckValue)//若兩次值相同,無鍵按下,返回0值return0x00;if(!(CheckValue&0x02))//K1鍵被按下Key|=0x01;if(!(CheckValue&0x10))//K2鍵被按下Key|=0x02;if(!(CheckValue&0x20))//K3鍵被按下Key|=0x04;returnKey;//返回鍵值}unsignedintTimerCount,SystemSpeed,SystemSpeedIndex;voidInitialTimer2(void){TMOD=0x01;//定時器1TH2=RCAP2H=0xFC;//重裝值,初始值TL2=RCAP2L=0x18;ET2=1; //定時器2中斷允許TR2=1; //定時器2啟動EA=1;}unsignedintcodeSpeedCode[]={1,2,3,5,8,10,12,14,17,20,25,30,40,50,60};//15個預設置頻率速度voidSetSpeed(unsignedcharSpeed){SystemSpeed=SpeedCode[Speed];}voidLEDShow(unsignedintLEDStatus){P1=~(LEDStatus&0x00FF);P0=~((LEDStatus>>8)&0x00FF);}voidInitialCPU(void){RunMode=0x00;TimerCount=0;SystemSpeedIndex=8;//初始速度取值P1=0x00;P0=0x00;P2=0xFF;P3=0x00;Delay1ms(1000);//延時1000msP1=0xFF;P0=0xFF;P2=0xFF;P3=0xFF;SetSpeed(SystemSpeedIndex);Display(RunMode);}//Mode0模式0:一個燈亮從左到右跑unsignedintLEDIndex=0;bitLEDDirection=1,LEDFlag=1;voidMode_0(void){LEDShow(0x0001<<LEDIndex);LEDIndex=(LEDIndex+1)%16;}//Mode1模式1:一個燈亮從右到左跑voidMode_1(void){LEDShow(0x8000>>LEDIndex);LEDIndex=(LEDIndex+1)%16;}//Mode2模式2:一個燈亮先從左到右再從右到左跑voidMode_2(void){if(LEDDirection)LEDShow(0x0001<<LEDIndex);elseLEDShow(0x8000>>LEDIndex);if(LEDIndex==15)LEDDirection=!LEDDirection;LEDIndex=(LEDIndex+1)%16;}//Mode3模式3:一個燈滅先從左到右再從右到左跑voidMode_3(void){if(LEDDirection)LEDShow(~(0x0001<<LEDIndex));elseLEDShow(~(0x8000>>LEDIndex));if(LEDIndex==15)LEDDirection=!LEDDirection;LEDIndex=(LEDIndex+1)%16;}//Mode4模式4:全亮后逐個滅,先左右、后右左,然后全滅逐個亮,先右左、后左右voidMode_4(void){if(LEDDirection){if(LEDFlag)LEDShow(0xFFFE<<LEDIndex);elseLEDShow(~(0x7FFF>>LEDIndex));}else{if(LEDFlag)LEDShow(0x7FFF>>LEDIndex);elseLEDShow(~(0xFFFE<<LEDIndex));}if(LEDIndex==15){LEDDirection=!LEDDirection;if(LEDDirection) LEDFlag=!LEDFlag;}LEDIndex=(LEDIndex+1)%16;}//Mode5模式5:四個亮左右來
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年UPS產(chǎn)品保修及售后服務條款2篇
- 2024年版加油服務全面承包協(xié)議模板版B版
- 2024-2030年中國實時數(shù)據(jù)庫行業(yè)發(fā)展模式規(guī)劃分析報告
- 2024-2030年中國城市配送行業(yè)發(fā)展模式規(guī)劃分析報告
- 2024年獨家版:新材料研發(fā)與技術轉讓合同
- 2024年物業(yè)管理與保養(yǎng)服務合同書版B版
- 2024年技術服務與維護合同
- 2024年挖掘機租賃期間的保險責任合同
- 2025個人承包快遞運輸合同
- 單位人力資源管理制度展示大全
- FMEA-培訓教材-汽車fmea培訓課件
- 《項目進度管理研究文獻綜述》
- 信用風險加權資產(chǎn)計量與管理手冊課件
- 光伏項目試驗報告
- 小學“雙減”作業(yè)設計:小學數(shù)學四年級上冊作業(yè)設計案例
- 知識產(chǎn)權法(英文) Intellectual Property Right Law課件
- 綜合評分法評分表(建設工程)
- SBS卷材防水施工工藝
- 深化設計確認記錄
- 小學生心理健康教育課件
- 熱力管道焊接技術交底記錄大全
評論
0/150
提交評論