




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 項目項目4 4 LEDLED廣告燈設計廣告燈設計 知識目標:知識目標:1. 單片機I/O端口及端口的基本應用;2. 單片機C語言的基本結構及設計方法;3. 程序對單片機端口的控制方法。 能力目標:能力目標:1. 能根據(jù)設計任務要求編制程序流程圖,理解程序對發(fā)光二極管的控制原理;2. 會利用繪制流水廣告燈電路原理圖;3. 會用keil C51軟件對源程序進行編譯調試及與protues軟件聯(lián)調,實現(xiàn)電路仿真。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務
2、1 流水廣告燈的設計流水廣告燈的設計 廣告燈是一種常見的裝飾,常用于街上的廣告及舞臺裝飾等場合。最簡單的流水廣告燈就是各個燈依次發(fā)光。本任務利用AT89S51單片機來實現(xiàn)這一功能。 1.1 提出任務 用AT89S51的P1口做輸出口,接八只發(fā)光二極管D1、D2、D3、D4、D5、D6、D7、D8,編寫程序,使發(fā)光二級管循環(huán)點亮,時間間隔為0.2s。即剛開始時D1點亮,延時0.2s后,接著是D2點亮,接著依次點亮D3、D4、D5、D6、D7、D8,然后再點亮D7、D6、D5、D4、D3、D2、D1,重復循環(huán)。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主
3、編 1.2 分析任務 1.硬件電路設計 電路組成。這里選擇具有內(nèi)部程序存儲器的AT89S51單片機作為控制電路,其P1口接8個發(fā)光二極管(LED)和8個限流電阻,硬件電路原理圖如圖4.1所示。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 電路分析。要使LED點亮,則P1口的對應端子輸出低電平,即P1.00時,D1亮。一般情況下,驅動LED的電流約10mA左右,而LED本身的壓降為2V。當P1.0輸出為低電平時,輸出為0V,則流經(jīng)D1的電流為,為了在仿真實驗中讓LED更亮一些,在這里取限流電阻為100。相
4、反,當P1.0輸出為高電平時,輸出電壓為5V,則流經(jīng)D1的電流為0mA,D1不亮(熄滅),即P1.01時,D1不亮(熄滅)。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 2.軟件設計思路 P1口輸出電平分析。在圖3.1中,P1口的每一位都接有一個LED,要實現(xiàn)流水燈功能,就是要讓各個LED依次點亮一段時間,再熄滅一段時間,然后再點亮下一個LED一段時間,然后再熄滅一段時
5、間,如此循環(huán)。換句話來說,就是讓P1口周而復始地輸出高電平和低電平,要實現(xiàn)這一功能,最簡單和最直接的方法是依次將數(shù)據(jù)送往P1口,每送一個數(shù)據(jù)延時一段時間。根據(jù)上述分析,我們列出一個功能表,如表4-1所示。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 從表4-1可以看出,要實現(xiàn)設計任務功能,P1口輸出的8個數(shù)據(jù)分別是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個數(shù)據(jù)后再反過來送011111111B 、10111111B、11011111B、11101111B、11110111B、11111011B、11111101B、11111110B,轉化成十六進制分別是0 x7f 、0 xbf 、0 xdf、0 xef、0 xf7、0 xfb、0 xfd和0 xfe。送完后從頭開始循環(huán)。 任務任務1 流水廣告燈的設計流水廣告燈的設計
7、單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 如何采用單片機C語言編程實現(xiàn)數(shù)據(jù)從輸出P1口呢?從這些數(shù)據(jù)來看,有這么一個規(guī)律,D1至D8依次點亮時,就是數(shù)據(jù)中的二進制0的位置依次往左移動了1位,D8至D1依次點亮時,就是往右依次移動1位。在單片機C51中,要直接實現(xiàn)數(shù)據(jù)的這種計算是不容易的,如果將數(shù)據(jù)的所有二進制取反后,D1至D8依次點亮時的數(shù)據(jù)就變成了:0 x01、0 x01、0 x04、0 x08、0 x10、0 x20、0 x40、0 x80,也就是后一個數(shù)是在前一個數(shù)的基礎上乘以2(或者直接左移1位)。 任務任務1 流水廣告燈的設計流水廣告燈
8、的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 根據(jù)前面分析,實現(xiàn)任務的思路是:程序開始時,給某一個變量賦初始值0 x01,并從端口輸出反碼,延時一段時間后,讓顯示變量左移1位,再次輸出反碼并延時,直到輸出所有左移數(shù)據(jù)為止,接下來就實現(xiàn)右移數(shù)據(jù)輸出完畢,再次重復整個過程。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 延時程序編寫。單片機程序的延時有兩種,一種是軟件延時,一種是硬件延時,在這里我們重點討論軟件延時。當系統(tǒng)加電后,單片機就開始工作,按照設計的
9、程序開始運行(也稱執(zhí)行指令)。單片機執(zhí)行一條指令要花一定的時間,那么單片機執(zhí)行一條指令的執(zhí)行時間成為指令周期。指令周期是以機器周期為單位的。MCS-51單片機規(guī)定,一個機器周期為單片機振蕩器的12個振蕩周期。如果單片機時鐘電路中的晶振頻率為12MHz,則一個機器周期為1us。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 單片機的指令運行速度是很快的,要想在端口獲得一定的延時時間,就要編寫程序,使單片機運行設計程序產(chǎn)生時間延遲。 任務中要求獲得0.2s的時間長度,當單片機的指令周期是1us時,0.2s就是
10、1us的200 000倍。在程序編寫中常用循環(huán)語句來完成計數(shù)和時間延遲,從而獲得需要的延時時間。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 采用單片機C語言編寫的一個0.2s延時程序如下:void delay02s(void) / 定義延時0.2s函數(shù) unsigned char i,j,k; / 聲明3個無符號字符型變量i、j、k for(i=2;i0;i-) / 外循環(huán)2次,每次約0.1s,延時0.2s for(j=200;j0;j-) / 外循環(huán)200次,每次約0.5ms,延時0.1s for(
11、k=250;k0;k-) / 內(nèi)循環(huán)250次,每次約2us,延時05ms ; / 里面的循環(huán)的循環(huán)體什么也不做,但每次循環(huán)延時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 源程序編寫根據(jù)程序流程圖編寫的源程序如下:/ lsd4-1.c# include reg51.h / 包含頭文件#define uchar unsigned char / 定義uchar為無符號數(shù)據(jù)類型void delay02s(void) / 延時0.2s函數(shù) unsigned char i,j,k; for ( i=2;i0;
13、i- )for (j=200;j0;j- ) for (k=250;k0;k- ); void main (void) / 主函數(shù)任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 uchar i,j; / 定義變量 while (1) / 死循環(huán) j=0 x01; / j初始化為0 x01,左移初始值 for(i=0;i8;i+) / for循環(huán)語句,完成8個循環(huán) 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語言編輯軟件,在編輯區(qū)中輸入上面的源程序,并以“l(fā)sd4-1.c”為文件名存盤。 運行Keil C51,然后建立一個“l(fā)sd4-1.uv2”的工程項目。把源程序文件“l(fā)sd4-1.c”添加到工程項目中,進行編譯,得到目標代碼文件“l(fā)sd4-1.hex”。任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實
15、踐張永格張永格 何乃味何乃味主編主編 運行Proteus,在編輯窗口中繪制如圖4.1所示的電路圖并存盤。然后選中單片機AT89s51,左鍵點擊AT89s51,出現(xiàn)如圖4.2所示的對話框,在Program File后面的 “ ”按鈕,找到剛才編譯好的“l(fā)sd4-1.hex”文件,然后點擊“OK”就可以進行仿真了。點擊模擬調試按鈕的運行按鈕“”,進入調試狀態(tài)。此時可看到D1點亮,延時0.2s后,接著是D2點亮,接著依次點亮D3、D4、D5、D6、D7、D8,然后再點亮D7、D6、D5、D4、D3、D2、D1,重復循環(huán)。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與
16、實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 圖4.2 加載hex文件對話框 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 知識鏈接知識鏈接 1.文件包含處理 程序“l(fā)sd3-1.c”中的第一行# include reg51.h是一個文件包含處理。所謂文件包含是指一個文件將另外一個文件的內(nèi)容全部包含進來。這里程序中包含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編譯器可不這么認為,所以必須給它們建立聯(lián)系,這里使用了C51的關鍵字sbit來定義,如: sbit P1_0=P10; / 定義用符號P1_0來表示P1.0引腳,也可以用其他的符號來表示。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與
18、實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 3C51程序的結構特點 (1)C51程序是由函數(shù)構成的。函數(shù)是C51程序的基本單位。 (2)一個函數(shù)由兩部分組成: 函數(shù)說明部分。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、形式參數(shù)類型。一個函數(shù)名后面必須跟一個圓括號,函數(shù)參數(shù)可以沒有,如main( )。 函數(shù)體。即函數(shù)說明下面的大括號之內(nèi)的部分。 (3)一個C51程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個程序中所處的位置如何。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編
19、(4)C51程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在幾行上。 (5)每個語句和數(shù)據(jù)定義的最后必須有一個分號“;”。分號是C51語句的必要組成部分。分號不可少,即使是程序中的最后一個語句也應包含分號。 (6)C51本身沒有輸入輸出語句。標準的輸入和輸出(通過串行口)是由scanf和printf等庫函數(shù)來完成的。對于用戶定義的輸出,比如直接以輸出端口讀取鍵盤輸入和驅動LED,則需要自行編制輸出函數(shù)。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 (7)可以用/*/對C51程序中的任何部分作注
20、釋。在Keil uVision 2中,還可以使用/進行單行注釋。 4. 位運算符 程序中“j= j1;”語句中的表示左移、右移運算符。表明將j中的值左移、右移1位,得到新的數(shù)值后,再將該值賦給j。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 思考與練習 修改程序lsd3-1.c,使8只發(fā)光二極管按2Hz的頻率閃爍。1.修改程序lsd3-1.c,使D1、D3、D5、D7按10Hz的頻率依次點亮。 任務任務1 流水廣告燈的設計流水廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永
21、格 何乃味何乃味主編主編 1.任務要求 如圖4-1所示,編寫程序使發(fā)光二極管按時間依次顯示出規(guī)定的花樣,但其對于控制的顯示數(shù)據(jù)之間沒有規(guī)律,不能通過計算的方式得到。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 2.分析任務 由于本任務中是按時間變化依次控制LED亮、滅,可以采用與流水廣告燈的思路來完成程序的編寫,但顯示花樣所對應的數(shù)據(jù)的變化不一定有規(guī)律,不能采用變量直接計算的方式實現(xiàn)前后數(shù)據(jù)的變化。因此,在這里采用查表法來實現(xiàn)。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機
22、C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 將廣告燈顯示的圖案所對應的端口輸出數(shù)據(jù)依次編寫為一張數(shù)據(jù)表,表中每個數(shù)值中為的位表示對應的廣告燈亮,數(shù)據(jù)為的位表示為應的廣告燈滅。將這張數(shù)據(jù)表放在程序中,以數(shù)組的形式存儲,在使用時依次讀出組中的元素就得到需要的數(shù)據(jù),實現(xiàn)了數(shù)據(jù)的無規(guī)律變化,并且數(shù)組存儲的數(shù)據(jù)可以較多,能實現(xiàn)的花樣變化也可以復雜。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 在C51中要進行復雜計算,也可以采用數(shù)組的方式來實現(xiàn),比如:一個周期正弦值的計算
23、,可以先將這些列在表中,需要時查表讀出,這就是查表法。 將用于點亮廣告燈的數(shù)據(jù)入在數(shù)組中,讓程序依次讀這數(shù)組中的數(shù)據(jù),并將數(shù)據(jù)送到端口,控制廣告燈的點亮就實現(xiàn)了任意規(guī)律變化廣告的控制。假設有個數(shù)據(jù),當程序讀完個數(shù)據(jù)后,又從頭開始讀數(shù),具體的程序流程圖如圖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; / 定義顯示花樣數(shù)據(jù)的數(shù)組 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) / 主函數(shù)uchar i; / 定義變量while(1)for(i=0;i8;i+) / 循環(huán)8次P1=discodei; /將數(shù)組discode中的第i個數(shù)據(jù)取出來,賦給P1口輸出delay05s(); 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 4.程序調試與電路仿真 同任務1,在此不再重復。仿真效果如圖4.4所示。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格 何乃味何乃味主編主編 知識鏈接 1. C51數(shù)據(jù)類型char char 類型的長度是一個字節(jié),通常用于定義處理字符數(shù)據(jù)的變量或常量。分無符號字符類型 unsigned char 和有符號字符類型signed char,默認值為signed char 類型。 任務任務2 任意變化廣告燈的設計任意變化廣告燈的設計 單片機單片機C C語言應用技術與實踐語言應用技術與實踐張永格張永格
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度汽車維修行業(yè)人才引進與培養(yǎng)合同
- 2025年度環(huán)衛(wèi)工人勞動爭議調解與處理合同
- 二零二五年度農(nóng)村宅基地租賃協(xié)議(農(nóng)村文化產(chǎn)業(yè)發(fā)展)
- 2025年度高級建造師聘用與技術咨詢服務協(xié)議
- 二零二五年度商業(yè)企業(yè)購銷合同印花稅稅率調整與稅收籌劃實務
- 二零二五年度藝人經(jīng)紀與全產(chǎn)業(yè)鏈合作合同
- IT基礎設施建設項目投資合同
- 鄉(xiāng)村旅游資源開發(fā)利用合作協(xié)議
- 電梯采購工程合同
- 文化旅游項目開發(fā)合作框架協(xié)議
- 2025年第六屆(中小學組)國家版圖知識競賽測試題庫及答案
- GB/T 26436-2025禽白血病診斷技術
- 體育場館工程施工組織設計
- 春季校園常見傳染病及預防措施培訓課件
- 國際標準下的AI技術應用-深度研究
- 2025-2030年城市軌道交通運營行業(yè)深度調研及發(fā)展戰(zhàn)略咨詢報告
- 2025年江西生物科技職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 《信息技術(拓展模塊)》高職全套教學課件
- 2025天津市安全員《B證》考試題庫
- DB37T-住宅小區(qū)供配電設施建設標準編制說明
- 食品飲料行業(yè)酒類2025年度策略報告:拐點漸近行穩(wěn)致遠
評論
0/150
提交評論