LED廣告燈設計教材_第1頁
LED廣告燈設計教材_第2頁
LED廣告燈設計教材_第3頁
LED廣告燈設計教材_第4頁
LED廣告燈設計教材_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 項目項目4 4 LEDLED廣告燈設計廣告燈設計 知識目標:知識目標:1. 單片機I/O端口及端口的基本應用;2. 單片機C語言的基本結構及設計方法;3. 程序對單片機端口的控制方法。 能力目標:能力目標:1. 能根據設計任務要求編制程序流程圖,理解程序對發光二極管的控制原理;2. 會利用繪制流水廣告燈電路原理圖;3. 會用keil C51軟件對源程序進行編譯調試及與protues軟件聯調,實現電路仿真。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務

2、1 流水廣告燈的設計流水廣告燈的設計 廣告燈是一種常見的裝飾,常用于街上的廣告及舞臺裝飾等場合。最簡單的流水廣告燈就是各個燈依次發光。本任務利用AT89S51單片機來實現這一功能。 1.1 提出任務 用AT89S51的P1口做輸出口,接八只發光二極管D1、D2、D3、D4、D5、D6、D7、D8,編寫程序,使發光二級管循環點亮,時間間隔為0.2s。即剛開始時D1點亮,延時0.2s后,接著是D2點亮,接著依次點亮D3、D4、D5、D6、D7、D8,然后再點亮D7、D6、D5、D4、D3、D2、D1,重復循環。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主

3、編 1.2 分析任務 1.硬件電路設計 電路組成。這里選擇具有內部程序存儲器的AT89S51單片機作為控制電路,其P1口接8個發光二極管(LED)和8個限流電阻,硬件電路原理圖如圖4.1所示。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 電路分析。要使LED點亮,則P1口的對應端子輸出低電平,即P1.00時,D1亮。一般情況下,驅動LED的電流約10mA左右,而LED本身的壓降為2V。當P1.0輸出為低電平時,輸出為0V,則流經D1的電流為,為了在仿真實驗中讓LED更亮一些,在這里取限流電阻為100。相

4、反,當P1.0輸出為高電平時,輸出電壓為5V,則流經D1的電流為0mA,D1不亮(熄滅),即P1.01時,D1不亮(熄滅)。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 2.軟件設計思路 P1口輸出電平分析。在圖3.1中,P1口的每一位都接有一個LED,要實現流水燈功能,就是要讓各個LED依次點亮一段時間,再熄滅一段時間,然后再點亮下一個LED一段時間,然后再熄滅一段時

5、間,如此循環。換句話來說,就是讓P1口周而復始地輸出高電平和低電平,要實現這一功能,最簡單和最直接的方法是依次將數據送往P1口,每送一個數據延時一段時間。根據上述分析,我們列出一個功能表,如表4-1所示。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 從表4-1可以看出,要實現設計任務功能,P1口輸出的8個數據分別是11111110B、11111101B、11111011

6、B、11110111B、11101111B、11011111B、10111111B、011111111B,轉化成十六進制分別是0 xfe、0 xfd、0 xfb、0 xf7、0 xef、0 xdf、0 xbf和0 x7f。送完這8個數據后再反過來送011111111B 、10111111B、11011111B、11101111B、11110111B、11111011B、11111101B、11111110B,轉化成十六進制分別是0 x7f 、0 xbf 、0 xdf、0 xef、0 xf7、0 xfb、0 xfd和0 xfe。送完后從頭開始循環。 任務任務1 流水廣告燈的設計流水廣告燈的設計

7、單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 如何采用單片機C語言編程實現數據從輸出P1口呢?從這些數據來看,有這么一個規律,D1至D8依次點亮時,就是數據中的二進制0的位置依次往左移動了1位,D8至D1依次點亮時,就是往右依次移動1位。在單片機C51中,要直接實現數據的這種計算是不容易的,如果將數據的所有二進制取反后,D1至D8依次點亮時的數據就變成了:0 x01、0 x01、0 x04、0 x08、0 x10、0 x20、0 x40、0 x80,也就是后一個數是在前一個數的基礎上乘以2(或者直接左移1位)。 任務任務1 流水廣告燈的設計流水廣告燈

8、的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 根據前面分析,實現任務的思路是:程序開始時,給某一個變量賦初始值0 x01,并從端口輸出反碼,延時一段時間后,讓顯示變量左移1位,再次輸出反碼并延時,直到輸出所有左移數據為止,接下來就實現右移數據輸出完畢,再次重復整個過程。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 延時程序編寫。單片機程序的延時有兩種,一種是軟件延時,一種是硬件延時,在這里我們重點討論軟件延時。當系統加電后,單片機就開始工作,按照設計的

9、程序開始運行(也稱執行指令)。單片機執行一條指令要花一定的時間,那么單片機執行一條指令的執行時間成為指令周期。指令周期是以機器周期為單位的。MCS-51單片機規定,一個機器周期為單片機振蕩器的12個振蕩周期。如果單片機時鐘電路中的晶振頻率為12MHz,則一個機器周期為1us。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 單片機的指令運行速度是很快的,要想在端口獲得一定的延時時間,就要編寫程序,使單片機運行設計程序產生時間延遲。 任務中要求獲得0.2s的時間長度,當單片機的指令周期是1us時,0.2s就是

10、1us的200 000倍。在程序編寫中常用循環語句來完成計數和時間延遲,從而獲得需要的延時時間。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 采用單片機C語言編寫的一個0.2s延時程序如下:void delay02s(void) / 定義延時0.2s函數 unsigned char i,j,k; / 聲明3個無符號字符型變量i、j、k for(i=2;i0;i-) / 外循環2次,每次約0.1s,延時0.2s for(j=200;j0;j-) / 外循環200次,每次約0.5ms,延時0.1s for(

11、k=250;k0;k-) / 內循環250次,每次約2us,延時05ms ; / 里面的循環的循環體什么也不做,但每次循環延時2us 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 上述程序可以簡化為:void delay02s(void) unsigned char i,j,k; for(i=2;i0;i-) for(j=200;j0;j-) for(k=250;k0;k-);整個子程序延時為:2us2502002=200 000us=0.5s任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C

12、C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 思考:思考: 如將延時改為1s,該怎樣修改程序呢?任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 1.3 源程序編寫根據程序流程圖編寫的源程序如下:/ lsd4-1.c# include reg51.h / 包含頭文件#define uchar unsigned char / 定義uchar為無符號數據類型void delay02s(void) / 延時0.2s函數 unsigned char i,j,k; for ( i=2;i0;

13、i- )for (j=200;j0;j- ) for (k=250;k0;k- ); void main (void) / 主函數任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 uchar i,j; / 定義變量 while (1) / 死循環 j=0 x01; / j初始化為0 x01,左移初始值 for(i=0;i8;i+) / for循環語句,完成8個循環 P1= j; / 對變量j 中的值按位取反后,從P1口輸出 delay02s( ); / 延時0.2s j= j1; / 左移1位 j=0 x80

14、; / 設置右移初始值j為0 x80 for (i=0;i1; / 右移1位 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 1.4 程序調試與電路仿真 運行C語言編輯軟件,在編輯區中輸入上面的源程序,并以“lsd4-1.c”為文件名存盤。 運行Keil C51,然后建立一個“lsd4-1.uv2”的工程項目。把源程序文件“lsd4-1.c”添加到工程項目中,進行編譯,得到目標代碼文件“lsd4-1.hex”。任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實

15、踐張永格張永格 何乃味何乃味主編主編 運行Proteus,在編輯窗口中繪制如圖4.1所示的電路圖并存盤。然后選中單片機AT89s51,左鍵點擊AT89s51,出現如圖4.2所示的對話框,在Program File后面的 “ ”按鈕,找到剛才編譯好的“lsd4-1.hex”文件,然后點擊“OK”就可以進行仿真了。點擊模擬調試按鈕的運行按鈕“”,進入調試狀態。此時可看到D1點亮,延時0.2s后,接著是D2點亮,接著依次點亮D3、D4、D5、D6、D7、D8,然后再點亮D7、D6、D5、D4、D3、D2、D1,重復循環。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與

16、實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 圖4.2 加載hex文件對話框 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 知識鏈接知識鏈接 1.文件包含處理 程序“lsd3-1.c”中的第一行# include reg51.h是一個文件包含處理。所謂文件包含是指一個文件將另外一個文件的內容全部包含進來。這里程序中包含reg51.h文件的目的是為了要使用P1這個符號,即通知C編譯器,程序中所寫的P1是指AT89S51單片機的P1端口而不是其它變量。 任務任務1 流水廣告燈的設計流水廣告燈的設計

17、 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 2. 單片機某個引腳的符號表示 以P1.0引腳為例。在C語言里,如果直接寫P1.0,C編譯器并不能識別,而且P1.0也不是一個合法的C語言變量名,所以得給它另起一個名字,這里起的名為P1_0,可是P1_0是不是就是P1.0呢?你這么認為,C編譯器可不這么認為,所以必須給它們建立聯系,這里使用了C51的關鍵字sbit來定義,如: sbit P1_0=P10; / 定義用符號P1_0來表示P1.0引腳,也可以用其他的符號來表示。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與

18、實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 3C51程序的結構特點 (1)C51程序是由函數構成的。函數是C51程序的基本單位。 (2)一個函數由兩部分組成: 函數說明部分。包括函數名、函數類型、函數屬性、函數參數(形參)名、形式參數類型。一個函數名后面必須跟一個圓括號,函數參數可以沒有,如main( )。 函數體。即函數說明下面的大括號之內的部分。 (3)一個C51程序總是從main函數開始執行,而不論main函數在整個程序中所處的位置如何。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編

19、(4)C51程序書寫格式自由,一行內可以寫幾個語句,一個語句可以分寫在幾行上。 (5)每個語句和數據定義的最后必須有一個分號“;”。分號是C51語句的必要組成部分。分號不可少,即使是程序中的最后一個語句也應包含分號。 (6)C51本身沒有輸入輸出語句。標準的輸入和輸出(通過串行口)是由scanf和printf等庫函數來完成的。對于用戶定義的輸出,比如直接以輸出端口讀取鍵盤輸入和驅動LED,則需要自行編制輸出函數。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 (7)可以用/*/對C51程序中的任何部分作注

20、釋。在Keil uVision 2中,還可以使用/進行單行注釋。 4. 位運算符 程序中“j= j1;”語句中的表示左移、右移運算符。表明將j中的值左移、右移1位,得到新的數值后,再將該值賦給j。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 思考與練習 修改程序lsd3-1.c,使8只發光二極管按2Hz的頻率閃爍。1.修改程序lsd3-1.c,使D1、D3、D5、D7按10Hz的頻率依次點亮。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永

21、格 何乃味何乃味主編主編 1.任務要求 如圖4-1所示,編寫程序使發光二極管按時間依次顯示出規定的花樣,但其對于控制的顯示數據之間沒有規律,不能通過計算的方式得到。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 2.分析任務 由于本任務中是按時間變化依次控制LED亮、滅,可以采用與流水廣告燈的思路來完成程序的編寫,但顯示花樣所對應的數據的變化不一定有規律,不能采用變量直接計算的方式實現前后數據的變化。因此,在這里采用查表法來實現。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機

22、C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 將廣告燈顯示的圖案所對應的端口輸出數據依次編寫為一張數據表,表中每個數值中為的位表示對應的廣告燈亮,數據為的位表示為應的廣告燈滅。將這張數據表放在程序中,以數組的形式存儲,在使用時依次讀出組中的元素就得到需要的數據,實現了數據的無規律變化,并且數組存儲的數據可以較多,能實現的花樣變化也可以復雜。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 在C51中要進行復雜計算,也可以采用數組的方式來實現,比如:一個周期正弦值的計算

23、,可以先將這些列在表中,需要時查表讀出,這就是查表法。 將用于點亮廣告燈的數據入在數組中,讓程序依次讀這數組中的數據,并將數據送到端口,控制廣告燈的點亮就實現了任意規律變化廣告的控制。假設有個數據,當程序讀完個數據后,又從頭開始讀數,具體的程序流程圖如圖4.3所示。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 3. 源程序編寫/* 文件名 lsd4-2.

24、c*/#include reg51.h /包含頭文件#define uchar unsigned char / 設置變量類型uchar discode8=0 x7e,0 xbd,0 xdb,0 xe7,0 xdb,0 xbd,0 x7e,0 xff; / 定義顯示花樣數據的數組 void delay02s(void) / 延時時間unsigned char i,j,k;for(i=2;i0;i-)任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 for(j=200;j0;j-)for(k=250;k0

25、;k-); void main(void) / 主函數uchar i; / 定義變量while(1)for(i=0;i8;i+) / 循環8次P1=discodei; /將數組discode中的第i個數據取出來,賦給P1口輸出delay05s(); 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 4.程序調試與電路仿真 同任務1,在此不再重復。仿真效果如圖4.4所示。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 知識鏈接 1. C51數據類型char char 類型的長度是一個字節,通常用于定義處理字符數據的變量或常量。分無符號字符類型 unsigned char 和有符號字符類型signed char,默認值為signed char 類型。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論