




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
任務(wù)1流水廣告燈的設(shè)計
廣告燈是一種常見的裝飾,常用于街上的廣告及舞臺裝飾等場合。最簡單的流水廣告燈就是各個燈依次發(fā)光。本任務(wù)利用AT89S51單片機(jī)來實現(xiàn)這一功能。1.1提出任務(wù)用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,重復(fù)循環(huán)。
任務(wù)1流水廣告燈的設(shè)計廣告燈是一種常見的裝飾,常用于11.2分析任務(wù)1.硬件電路設(shè)計電路組成。這里選擇具有內(nèi)部程序存儲器的AT89S51單片機(jī)作為控制電路,其P1口接8個發(fā)光二極管(LED)和8個限流電阻,硬件電路原理圖如圖4.1所示。
任務(wù)1流水廣告燈的設(shè)計
1.2分析任務(wù)任務(wù)1流水廣告燈的設(shè)計2電路分析。要使LED點亮,則P1口的對應(yīng)端子輸出低電平,即P1.0=0時,D1亮。一般情況下,驅(qū)動LED的電流約10mA左右,而LED本身的壓降為2V。當(dāng)P1.0輸出為低電平時,輸出為0V,則流經(jīng)D1的電流為,為了在仿真實驗中讓LED更亮一些,在這里取限流電阻為100Ω。相反,當(dāng)P1.0輸出為高電平時,輸出電壓為5V,則流經(jīng)D1的電流為0mA,D1不亮(熄滅),即P1.0=1時,D1不亮(熄滅)。
任務(wù)1流水廣告燈的設(shè)計
電路分析。要使LED點亮,則P1口的對應(yīng)端子輸出低電平,即P3任務(wù)1流水廣告燈的設(shè)計
任務(wù)1流水廣告燈的設(shè)計42.軟件設(shè)計思路P1口輸出電平分析。在圖3.1中,P1口的每一位都接有一個LED,要實現(xiàn)流水燈功能,就是要讓各個LED依次點亮一段時間,再熄滅一段時間,然后再點亮下一個LED一段時間,然后再熄滅一段時間,如此循環(huán)。換句話來說,就是讓P1口周而復(fù)始地輸出高電平和低電平,要實現(xiàn)這一功能,最簡單和最直接的方法是依次將數(shù)據(jù)送往P1口,每送一個數(shù)據(jù)延時一段時間。根據(jù)上述分析,我們列出一個功能表,如表4-1所示。
任務(wù)1流水廣告燈的設(shè)計
2.軟件設(shè)計思路任務(wù)1流水廣告燈的設(shè)計5任務(wù)1流水廣告燈的設(shè)計
任務(wù)1流水廣告燈的設(shè)計6從表4-1可以看出,要實現(xiàn)設(shè)計任務(wù)功能,P1口輸出的8個數(shù)據(jù)分別是11111110B、11111101B、11111011B、11110111B、11101111B、11011111B、10111111B、011111111B,轉(zhuǎn)化成十六進(jìn)制分別是0xfe、0xfd、0xfb、0xf7、0xef、0xdf、0xbf和0x7f。送完這8個數(shù)據(jù)后再反過來送011111111B、10111111B、11011111B、11101111B、11110111B、11111011B、11111101B、11111110B,轉(zhuǎn)化成十六進(jìn)制分別是0x7f、0xbf、0xdf、0xef、0xf7、0xfb、0xfd和0xfe。送完后從頭開始循環(huán)。任務(wù)1流水廣告燈的設(shè)計
從表4-1可以看出,要實現(xiàn)設(shè)計任務(wù)功能,P1口輸出的8個數(shù)據(jù)7如何采用單片機(jī)C語言編程實現(xiàn)數(shù)據(jù)從輸出P1口呢?從這些數(shù)據(jù)來看,有這么一個規(guī)律,D1至D8依次點亮?xí)r,就是數(shù)據(jù)中的二進(jìn)制0的位置依次往左移動了1位,D8至D1依次點亮?xí)r,就是往右依次移動1位。在單片機(jī)C51中,要直接實現(xiàn)數(shù)據(jù)的這種計算是不容易的,如果將數(shù)據(jù)的所有二進(jìn)制取反后,D1至D8依次點亮?xí)r的數(shù)據(jù)就變成了:0x01、0x01、0x04、0x08、0x10、0x20、0x40、0x80,也就是后一個數(shù)是在前一個數(shù)的基礎(chǔ)上乘以2(或者直接左移1位)。任務(wù)1流水廣告燈的設(shè)計
如何采用單片機(jī)C語言編程實現(xiàn)數(shù)據(jù)從輸出P1口呢?從這些數(shù)據(jù)來8根據(jù)前面分析,實現(xiàn)任務(wù)的思路是:程序開始時,給某一個變量賦初始值0x01,并從端口輸出反碼,延時一段時間后,讓顯示變量左移1位,再次輸出反碼并延時,直到輸出所有左移數(shù)據(jù)為止,接下來就實現(xiàn)右移數(shù)據(jù)輸出完畢,再次重復(fù)整個過程。任務(wù)1流水廣告燈的設(shè)計
根據(jù)前面分析,實現(xiàn)任務(wù)的思路是:程序開始時,給某一個變量賦初9延時程序編寫。單片機(jī)程序的延時有兩種,一種是軟件延時,一種是硬件延時,在這里我們重點討論軟件延時。當(dāng)系統(tǒng)加電后,單片機(jī)就開始工作,按照設(shè)計的程序開始運(yùn)行(也稱執(zhí)行指令)。單片機(jī)執(zhí)行一條指令要花一定的時間,那么單片機(jī)執(zhí)行一條指令的執(zhí)行時間成為指令周期。指令周期是以機(jī)器周期為單位的。MCS-51單片機(jī)規(guī)定,一個機(jī)器周期為單片機(jī)振蕩器的12個振蕩周期。如果單片機(jī)時鐘電路中的晶振頻率為12MHz,則一個機(jī)器周期為1us。任務(wù)1流水廣告燈的設(shè)計
延時程序編寫。單片機(jī)程序的延時有兩種,一種是軟件延時,一種是10單片機(jī)的指令運(yùn)行速度是很快的,要想在端口獲得一定的延時時間,就要編寫程序,使單片機(jī)運(yùn)行設(shè)計程序產(chǎn)生時間延遲。任務(wù)中要求獲得0.2s的時間長度,當(dāng)單片機(jī)的指令周期是1us時,0.2s就是1us的200000倍。在程序編寫中常用循環(huán)語句來完成計數(shù)和時間延遲,從而獲得需要的延時時間。任務(wù)1流水廣告燈的設(shè)計
單片機(jī)的指令運(yùn)行速度是很快的,要想在端口獲得一定的延時時間,11采用單片機(jī)C語言編寫的一個0.2s延時程序如下:voiddelay02s(void)//定義延時0.2s函數(shù){unsignedchari,j,k;//聲明3個無符號字符型變量i、j、kfor(i=2;i>0;i--)//外循環(huán)2次,每次約0.1s,延時0.2s{for(j=200;j>0;j--)//外循環(huán)200次,每次約0.5ms,延時0.1s{for(k=250;k>0;k--)//內(nèi)循環(huán)250次,每次約2us,延時05ms{;}//里面的循環(huán)的循環(huán)體什么也不做,但每次循環(huán)延時2us}}}任務(wù)1流水廣告燈的設(shè)計
采用單片機(jī)C語言編寫的一個0.2s延時程序如下:任務(wù)112上述程序可以簡化為:voiddelay02s(void){unsignedchari,j,k;
for(i=2;i>0;i--)for(j=200;j>0;j--)for(k=250;k>0;k--);}整個子程序延時為:2us×250×200×2=200000us=0.5s任務(wù)1流水廣告燈的設(shè)計
上述程序可以簡化為:任務(wù)1流水廣告燈的設(shè)計13
思考:如將延時改為1s,該怎樣修改程序呢?任務(wù)1流水廣告燈的設(shè)計
思考:如將延時改為1s,該怎樣修改程序呢?任務(wù)1141.3源程序編寫根據(jù)程序流程圖編寫的源程序如下:
//lsd4-1.c#include"reg51.h"http://包含頭文件#defineucharunsignedchar//定義uchar為無符號數(shù)據(jù)類型voiddelay02s(void)//延時0.2s函數(shù)
{unsignedchari,j,k;
for(i=2;i>0;i--)for(j=200;j>0;j--)for(k=250;k>0;k--);
}
voidmain(void)//主函數(shù)任務(wù)1流水廣告燈的設(shè)計
1.3源程序編寫任務(wù)1流水廣告燈的設(shè)計15{uchari,j;//定義變量
while(1)//死循環(huán)
{j=0x01;//j初始化為0x01,左移初始值
for(i=0;i<8;i++)//for循環(huán)語句,完成8個循環(huán)
{P1=~j;//對變量j中的值按位取反后,從P1口輸出
delay02s();//延時0.2sj=j<<1;//左移1位
} j=0x80;//設(shè)置右移初始值j為0x80for(i=0;i<8;i++)任務(wù)1流水廣告燈的設(shè)計
{任務(wù)1流水廣告燈的設(shè)計16{P1=~j;
delay02s();
j=j>>1;//右移1位
}}}任務(wù)1流水廣告燈的設(shè)計
{任務(wù)1流水廣告燈的設(shè)計171.4程序調(diào)試與電路仿真運(yùn)行C語言編輯軟件,在編輯區(qū)中輸入上面的源程序,并以“l(fā)sd4-1.c”為文件名存盤。運(yùn)行KeilC51,然后建立一個“l(fā)sd4-1.uv2”的工程項目。把源程序文件“l(fā)sd4-1.c”添加到工程項目中,進(jìn)行編譯,得到目標(biāo)代碼文件“l(fā)sd4-1.hex”。任務(wù)1流水廣告燈的設(shè)計
1.4程序調(diào)試與電路仿真任務(wù)1流水廣告燈的設(shè)計18運(yùn)行Proteus,在編輯窗口中繪制如圖4.1所示的電路圖并存盤。然后選中單片機(jī)AT89s51,左鍵點擊AT89s51,出現(xiàn)如圖4.2所示的對話框,在ProgramFile后面的“”按鈕,找到剛才編譯好的“l(fā)sd4-1.hex”文件,然后點擊“OK”就可以進(jìn)行仿真了。點擊模擬調(diào)試按鈕的運(yùn)行按鈕“”,進(jìn)入調(diào)試狀態(tài)。此時可看到D1點亮,延時0.2s后,接著是D2點亮,接著依次點亮D3、D4、D5、D6、D7、D8,然后再點亮D7、D6、D5、D4、D3、D2、D1,重復(fù)循環(huán)。
任務(wù)1流水廣告燈的設(shè)計
運(yùn)行Proteus,在編輯窗口中繪制如圖4.1所示的電路圖并19圖4.2加載hex文件對話框
任務(wù)1流水廣告燈的設(shè)計
圖4.2加載hex文件對話框任務(wù)1流水廣告燈的設(shè)20
知識鏈接1."文件包含"處理程序“l(fā)sd3-1.c”中的第一行#include"reg51.h"是一個"文件包含"處理。所謂"文件包含"是指一個文件將另外一個文件的內(nèi)容全部包含進(jìn)來。這里程序中包含reg51.h文件的目的是為了要使用P1這個符號,即通知C編譯器,程序中所寫的P1是指AT89S51單片機(jī)的P1端口而不是其它變量。任務(wù)1流水廣告燈的設(shè)計
知識鏈接任務(wù)1流水廣告燈的設(shè)計212.單片機(jī)某個引腳的符號表示以P1.0引腳為例。在C語言里,如果直接寫P1.0,C編譯器并不能識別,而且P1.0也不是一個合法的C語言變量名,所以得給它另起一個名字,這里起的名為P1_0,可是P1_0是不是就是P1.0呢?你這么認(rèn)為,C編譯器可不這么認(rèn)為,所以必須給它們建立聯(lián)系,這里使用了C51的關(guān)鍵字sbit來定義,如:sbitP1_0=P1^0;//定義用符號P1_0來表示P1.0引腳,也可以用其他的符號來表示。
任務(wù)1流水廣告燈的設(shè)計
2.單片機(jī)某個引腳的符號表示任務(wù)1流水廣告燈的設(shè)計223.C51程序的結(jié)構(gòu)特點(1)C51程序是由函數(shù)構(gòu)成的。函數(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ù)在整個程序中所處的位置如何。
任務(wù)1流水廣告燈的設(shè)計
3.C51程序的結(jié)構(gòu)特點任務(wù)1流水廣告燈的設(shè)計23(4)C51程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在幾行上。(5)每個語句和數(shù)據(jù)定義的最后必須有一個分號“;”。分號是C51語句的必要組成部分。分號不可少,即使是程序中的最后一個語句也應(yīng)包含分號。
(6)C51本身沒有輸入輸出語句。標(biāo)準(zhǔn)的輸入和輸出(通過串行口)是由scanf和printf等庫函數(shù)來完成的。對于用戶定義的輸出,比如直接以輸出端口讀取鍵盤輸入和驅(qū)動LED,則需要自行編制輸出函數(shù)。
任務(wù)1流水廣告燈的設(shè)計
(4)C51程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句24
(7)可以用/*……*/對C51程序中的任何部分作注釋。在KeiluVision2中,還可以使用//進(jìn)行單行注釋。4.位運(yùn)算符程序中“j=j<<1;”和“j=j>>1;”語句中的<<、>>表示左移、右移運(yùn)算符。表明將j中的值左移、右移1位,得到新的數(shù)值后,再將該值賦給j。
任務(wù)1流水廣告燈的設(shè)計
(7)可以用/*……*/對C51程序中的任何部分作注釋。在25
思考與練習(xí)修改程序lsd3-1.c,使8只發(fā)光二極管按2Hz的頻率閃爍。修改程序lsd3-1.c,使D1、D3、D5、D7按10Hz的頻率依次點亮。
任務(wù)1流水廣告燈的設(shè)計
思考與練習(xí)任務(wù)1流水廣告燈的設(shè)計261.任務(wù)要求如圖4-1所示,編寫程序使發(fā)光二極管按時間依次顯示出規(guī)定的花樣,但其對于控制的顯示數(shù)據(jù)之間沒有規(guī)律,不能通過計算的方式得到。
任務(wù)2任意變化廣告燈的設(shè)計1.任務(wù)要求任務(wù)2任意變化廣告燈的設(shè)計272.分析任務(wù)由于本任務(wù)中是按時間變化依次控制LED亮、滅,可以采用與流水廣告燈的思路來完成程序的編寫,但顯示花樣所對應(yīng)的數(shù)據(jù)的變化不一定有規(guī)律,不能采用變量直接計算的方式實現(xiàn)前后數(shù)據(jù)的變化。因此,在這里采用查表法來實現(xiàn)。
任務(wù)2任意變化廣告燈的設(shè)計2.分析任務(wù)任務(wù)2任意變化廣告燈的設(shè)計28將廣告燈顯示的圖案所對應(yīng)的端口輸出數(shù)據(jù)依次編寫為一張數(shù)據(jù)表,表中每個數(shù)值中為0的位表示對應(yīng)的廣告燈亮,數(shù)據(jù)為1的位表示為應(yīng)的廣告燈滅。將這張數(shù)據(jù)表放在程序中,以數(shù)組的形式存儲,在使用時依次讀出組中的元素就得到需要的數(shù)據(jù),實現(xiàn)了數(shù)據(jù)的無規(guī)律變化,并且數(shù)組存儲的數(shù)據(jù)可以較多,能實現(xiàn)的花樣變化也可以復(fù)雜。
任務(wù)2任意變化廣告燈的設(shè)計將廣告燈顯示的圖案所對應(yīng)的端口輸出數(shù)據(jù)依次編寫為一張數(shù)據(jù)表,29在C51中要進(jìn)行復(fù)雜計算,也可以采用數(shù)組的方式來實現(xiàn),比如:一個周期正弦值的計算,可以先將這些列在表中,需要時查表讀出,這就是查表法。將用于點亮廣告燈的數(shù)據(jù)入在數(shù)組中,讓程序依次讀這數(shù)組中的數(shù)據(jù),并將數(shù)據(jù)送到端口,控制廣告燈的點亮就實現(xiàn)了任意規(guī)律變化廣告的控制。假設(shè)有N個數(shù)據(jù),當(dāng)程序讀完N個數(shù)據(jù)后,又從頭開始讀數(shù),具體的程序流程圖如圖4.3所示。
任務(wù)2任意變化廣告燈的設(shè)計在C51中要進(jìn)行復(fù)雜計算,也可以采用數(shù)組的方式來實現(xiàn),比如:30任務(wù)2任意變化廣告燈的設(shè)計任務(wù)2任意變化廣告燈的設(shè)計313.源程序編寫
/*文件名lsd4-2.c*/#include"reg51.h"http://包含頭文件#defineucharunsignedchar//設(shè)置變量類型uchardiscode[8]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0xff};//定義顯示花樣數(shù)據(jù)的數(shù)組voiddelay02s(void)//延時時間{unsignedchari,j,k;for(i=2;i>0;i--)任務(wù)2任意變化廣告燈的設(shè)計3.源程序編寫任務(wù)2任意變化廣告燈的設(shè)計32for(j=200;j>0;j--)for(k=250;k>0;k--);}
voidmain(void)//主函數(shù){uchari;//定義變量while(1){for(i=0;i<8;i++)//循環(huán)8次{P1=discode[i];//將數(shù)組discode中的第i個數(shù)據(jù)取出來,賦給P1口輸出delay05s();}}}任務(wù)2任意變化廣告燈的設(shè)計for(j=200;j>0;j--)任務(wù)2任意變化廣告燈334.程序調(diào)試與電路仿真同任務(wù)1,在此不再重復(fù)。仿真效果如圖4.4所示。
任務(wù)2任意變化廣告燈的設(shè)計4.程序調(diào)試與電路仿真任務(wù)2任意變化廣告燈的設(shè)計34任務(wù)2任意變化廣告燈的設(shè)計任務(wù)2任意變化廣告燈的設(shè)計35
知識鏈接
1.C51數(shù)據(jù)類型——charchar類型的長度是一個字節(jié),通常用于定義處理字符數(shù)據(jù)的變量或常量。分無符號字符類型
unsignedchar和有符號字符類型signedchar,默認(rèn)值為signedchar類型。
任務(wù)2任意變化廣告燈的設(shè)計
知識鏈接任務(wù)2任意變化廣告燈的設(shè)
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安建筑科技大學(xué)華清學(xué)院《安裝工程計量與計價實訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州輕工業(yè)大學(xué)《數(shù)據(jù)分析與大數(shù)據(jù)技術(shù)的數(shù)學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 做賬實操-快遞公司加盟商保證金的賬務(wù)處理分錄
- 2025年江西省建筑安全員考試題庫附答案
- 四川建筑職業(yè)技術(shù)學(xué)院《建筑材料(B)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國地質(zhì)大學(xué)(北京)《熱力系統(tǒng)工程與仿真》2023-2024學(xué)年第二學(xué)期期末試卷
- 濟(jì)寧職業(yè)技術(shù)學(xué)院《植物營養(yǎng)與肥料學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南水利與環(huán)境職業(yè)學(xué)院《栽培與耕作學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 楊凌職業(yè)技術(shù)學(xué)院《飛行控制系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東文理職業(yè)學(xué)院《輻射防護(hù)課程設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 陪診服務(wù)項目計劃書
- Unit7ArtLesson2BeijingOpera課件高中英語北師版
- 2023高考語文文言文復(fù)習(xí):《說苑》練習(xí)題(含答案解析)
- 低血糖健康宣教
- 《煉油化工基本知識》課件
- 關(guān)于高中語文教學(xué)中“微課”的運(yùn)用分析獲獎科研報告論文
- 《射頻同軸電纜》課件2
- 以工代賑政策培訓(xùn)課件
- 垃圾分類校本教材
- 中職學(xué)生開學(xué)心理知識講座
- 虛擬現(xiàn)實技術(shù)中的智能感知與識別技術(shù)應(yīng)用
評論
0/150
提交評論