51單片機C語言編程100例.doc_第1頁
51單片機C語言編程100例.doc_第2頁
51單片機C語言編程100例.doc_第3頁
51單片機C語言編程100例.doc_第4頁
51單片機C語言編程100例.doc_第5頁
已閱讀5頁,還剩246頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、范文范例學(xué)習(xí)指導(dǎo)目錄實例3:用單片機控制第一個燈亮3實例4:用單片機控制一個燈閃爍:認識單片機的工作頻率3實例5:將P1 口狀態(tài)分別送入PO、P2、P3 口:認識I/O 口的引腳功能4實例6:使用P3 口流水點亮8位LED4實例7:通過對P3 口地址的操作流水點亮8位LED5實例8:用不同數(shù)據(jù)類型控制燈閃爍時間6實例9:用POD、P1 口分別顯示加法和減法運算結(jié)果8實例10:用PO、P1 口顯示乘法運算結(jié)果8實例11:用P1、P0 口顯示除法運算結(jié)果9實例12:用自增運算控制P0 口 8位LED流水花樣9實例13:用P0 口顯示邏輯“與”運算結(jié)果10實例14:用P0 口顯示條件運算結(jié)果10實例

2、15:用P0 口顯示按位“異或“運算結(jié)果10實例16:用P0顯示左移運算結(jié)果10實例17:”萬能邏輯電路”實驗11實例18:用右移運算流水點亮P1 口 8位LED11實例19:用if語句控制P0 口 8位LED的流水方向12實例20:用swt ich語句的控制P0 口 8位LED的點亮狀態(tài)12實例21:用for語句控制蜂鳴器鳴笛次數(shù)14實例22:用whi Ie語句控制LED15實例23:用do-whi Ie語句控制P0 口 8位LED流水點亮16實例24:用字符型數(shù)組控制P0 口 8位LED流水點亮16實例25:用P0 口顯示字符串常量17實例26:用P0 口顯示指針運算結(jié)果18實例27:用指

3、針數(shù)組控制P0 口 8位LED流水點亮18實例28:用數(shù)組的指針控制P0 口 8位LED流水點亮19實例29:用P0、P1 口顯示整型函數(shù)返回值20實例30:用有參函數(shù)控制P0 口 8位LED流水速度21實例31:用數(shù)組作函數(shù)參數(shù)控制流水花樣22實例32:用指針作函數(shù)參數(shù)控制P0 口 8位LED流水點亮23實例33:用函數(shù)型指針控制P1 口燈花樣24實例34:用指針數(shù)組作為函數(shù)的參數(shù)顯示多個字符串25實例35:字符函數(shù)ctype. h應(yīng)用舉例26實例36:內(nèi)部函數(shù)intrins.h應(yīng)用舉例27實例37:標(biāo)準(zhǔn)函數(shù)stdlib. h應(yīng)用舉例27實例38:字符串函數(shù)string, h應(yīng)用舉例28實例

4、39:宏定義應(yīng)用舉例228實例40:宏定義應(yīng)用舉例229實例41:宏定義應(yīng)用舉例329實例42:用定時器T0查詢方式P2 口 8位控制LED閃爍30實例43:用定時器T1查詢方式控制單片機發(fā)出1KHz音頻31實例44:將計數(shù)器T0計數(shù)的結(jié)果送P1 口 8位LED顯示31實例45:用定時器TO的中斷控制1位LED閃爍32實例46:用定時器TO的中斷實現(xiàn)長時間定時33實例47:用定時器T1中斷控制兩個LED以不同周期閃爍34實例48:用計數(shù)器T1的中斷控制蜂鳴器發(fā)出1KHz音頻35實例49:用定時器TO的中斷實現(xiàn)“渴望”主題曲的播放35實例50-1 :輸出50個矩形脈沖38實例50-2:計數(shù)器T0

5、統(tǒng)計外部脈沖數(shù)39實例51-2:定時器T0的模式2測量正脈沖寬度40實例52:用定時器T0控制揄出高低寬度不同的矩形波40實例53:用外中斷0的中斷方式進行數(shù)據(jù)采集41實例54-1:輸出負脈寬為200微秒的方波42實例54-2:測量負脈沖寬度43實例55:方式0控制流水燈循環(huán)點亮44實例567:數(shù)據(jù)發(fā)送程序45實例56-2:數(shù)據(jù)接收程序46實例57-1:數(shù)據(jù)發(fā)送程序47實例57-2:數(shù)據(jù)接收程序48實例58:單片機向PC發(fā)送數(shù)據(jù)49實例59:單片機接收PC發(fā)出的數(shù)據(jù)50實例60:用LED數(shù)碼顯示數(shù)字551實例61:用LED數(shù)碼顯示器循環(huán)顯示數(shù)字0951實例62:用數(shù)碼管慢速動態(tài)掃描顯示數(shù)字“1

6、234”52實例63:用LED數(shù)碼顯示器偽靜態(tài)顯示數(shù)字1234 53實例64:用數(shù)碼管顯示動態(tài)檢測結(jié)果54實例65:數(shù)碼秒表設(shè)計56實例66:數(shù)碼時鐘設(shè)計57實例67:用LED數(shù)碼管顯示計數(shù)器T0的計數(shù)值61實例68:方爭態(tài)顯示數(shù)字“59” 62實例69:無軟件消抖的獨立式鍵盤輸入實險63實例70:軟件消抖的獨立式鍵盤揄入實驗63實例71: CPU控制的獨立式鍵盤掃描實臉64實例72:定時器中斷控制的獨立式鍵盤掃描實臉67實例73:獨立式鍵盤控制的4級變速流水燈70實例74:獨立式鍵盤的按鍵功能擴展:“以一當(dāng)四”72實例75:獨立式鍵盤調(diào)時的數(shù)碼時鐘實臉74實例76:獨立式鍵盤控制步進電機實險

7、78實例77:矩陣式鍵盤按鍵值的數(shù)碼管顯示實驗81實例78:矩陣式鍵盤按鍵音84實例79:簡易電子室85實例80:矩陣式鍵盤實現(xiàn)的也子密碼鎖91實例81:用LCD顯示字符'A'95實例82:用LCD循環(huán)右移顯示“Welcome to China"98實例83:用LCD顯示適時檢測結(jié)果102實例84:液晶時鐘設(shè)計106實例85:將數(shù)據(jù)“OxOf”寫入AT24co2再讀出送P1 口顯示112實例86:將按鍵次數(shù)寫入AT24co2,再讀出并用1602LCD顯示116實例87:對12c總線上掛接多個AT24co2的讀寫操作124實例88:基于AT24co2的多機通信 讀取程序

8、129實例88:基于AT24co2的多機通信 寫入程序133實例90:DS18B20溫度檢測及其液晶顯示144實例91:將數(shù)據(jù)“Oxaa”寫入X5045再讀出送P1 口顯示153實例92:將流水燈控制碼寫入X5045并讀出送P1 口顯示157實例93:對SPI總線上掛接多個X5045的讀寫操作161實例94:基于ADC0832的數(shù)字電壓表165實例95:用DAC0832產(chǎn)生鋸齒波電壓171實例96:用P1 口顯示紅外遙控器的按鍵值172實例97:用紅外遙控器控制繼電器174實例98:基于DS1302的日歷時鐘177實例99:單片機數(shù)據(jù)發(fā)送程序186實例100:電機轉(zhuǎn)速表設(shè)計187模擬霍爾脈沖1

9、92/*函數(shù)的使用和熟悉*/實例3:用單片機控制第一個燈亮#include<reg51.h> /包含51單片機寄存器定義的頭文件 void main(void)while無限循環(huán)P1=0xfe; /P1=1111 1110B,即 P1.0 揄出低電平)實例4:用單片機控制一個燈閃爍:認識單片機的工作頻率#include<reg51. h> 包含單片機寄存器的頭文件/*函教功能:延時一段時間 */void delay (void)/兩個void意思分別為無需返回值,沒有參數(shù)傳遞(unsigned int i;/定義無符號整數(shù),最大取值范圍65535for (i=0; i

10、<20000; i+) 做 20000 次空循環(huán);什么也不做,等待一個機器周期/*函數(shù)功能:主函數(shù)(C語言規(guī)定必須有也只能有1個主函數(shù))*/void ma in (void)(while 無限循環(huán)(P1=0xfe;/P1=1111 1110B, P1.0 輸出低電平de I ay ();延時一段時間P1=0xff;/P1=1111 1111B, P1.0 輸出高電平delay () ; /延時一段時間I)實例5:將P1 狀態(tài)分別送入PO、P2、P3 :認識I/O 的引腳功能#include<reg51. h> /包含單片機寄存器的頭文件/* 的數(shù)功能:主函數(shù)(C語言規(guī)定必須有

11、也只能有1個主函數(shù)) */ void ma in (void)(whi le(1)無限循環(huán)P1=0xff; / P1=1111 1111,熄滅 LEDP0=P1;/將P1 口狀態(tài)送入PO 口P2=P1;/將P1 口狀態(tài)送入P2 口P3=P1 ;/將P1 口狀態(tài)送入P3 口)實例6:使用P3 口流水點亮8位LED#include<reg51. h>/包含單片機寄存器的頭文件/*函數(shù)功能:延時一段時間*/void delay (void)unsigned char i, j;for (i=0;i<250;i+)for (j=0;j<250;j+)一 一 一 ,4 一 一 一

12、 一 ,一,一 一 一 一 一 -一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 L一 1一 一 一 一 一 一 一 一 一 一 ./* 的數(shù)功能:主函數(shù)*/ void ma in (void)wh i Ie (1)P3=0xfe;delay 0;P3=0xfd; delay ();P3=0xfb; delay 0;P3=0xf7; delay ();P3=0xef; delay();P3=0xdf; delay 0;P3=0xbf; delay();P3=0x7f; delay 0;/第一個燈亮 /調(diào)用延時函數(shù) /第二個燈亮 /調(diào)用延時函數(shù) /第三個燈亮 /調(diào)

13、用延時函數(shù) 第四個燈亮 /調(diào)用延時函數(shù) /第五個燈亮 調(diào)用延時函數(shù) /第六個燈亮 /調(diào)用延時函數(shù) 第七個燈亮 調(diào)用延時函數(shù) /第八個燈亮 /調(diào)用延時函數(shù)/實例7:通過對P3 口地址的操作流水點亮8位LED#include<reg51. h>包含單片機寄存器的頭文件sfr x=0xb0;/P3 口在存儲器中的地址是bOH,通過sfr可定義8051內(nèi)核單片機/的所有內(nèi)部8位特殊功能寄存器,對地址x的操作也就是對P1口的操作/*函數(shù)功能:延時一段時間*/ void delay (void)unsigned char i,j;for(i=0;i<250;i+)for (j=0;j&l

14、t;250;j+);/利用循環(huán)等待若干機器周期,從而延時一段時間)/* 函數(shù)功能:主函數(shù)*/ void ma in (void)whi le(1)x=Oxfe;de I ay ();x=Oxfd; delay();x=Oxfb; de I ay ();x=0xf7; delay(); x=Oxef;de I ay 0; x=Oxdf; delay();x=Oxbf;de I ay 0;x=0x7f;delay ();/第一個燈亮 /調(diào)用延時函數(shù) 第二個燈亮 /調(diào)用延時函數(shù) 第三個燈亮 /調(diào)用延時函數(shù) 第四個燈亮 調(diào)用延時函數(shù) 第五個燈亮 調(diào)用延時函數(shù) 第六個燈亮 /調(diào)用延時函數(shù) 第七個燈亮 調(diào)

15、用延時函數(shù) 第八個燈亮 /調(diào)用延時函數(shù)實例8:用不同數(shù)據(jù)類型控制燈閃爍時間#include<reg51. h> 包含單片機寄存器的頭文件/* word完美整理版范文范例學(xué)習(xí)指導(dǎo)函教功能:用整形數(shù)據(jù)延時一段時間*/ void int_delay (void) /延時一段較長的時間unsigned int m; 定義無符號整形變量,雙字節(jié)數(shù)據(jù),值域為。65535 for(m=0;m<36000;m+);空操作/* 函數(shù)功能:用字符型數(shù)據(jù)延時一段時間void char de lay (void) /延時一段較短的時間unsigned char i, j ; 定義無符號字符型變量,單

16、字節(jié)數(shù)據(jù),值域。255 for (i=0;i<200;i+)for(j=0;j<180;j+);空操作函數(shù)功能:主函數(shù)*/ void main (void)(uns igned char i ;whiIe (for(i=0;i<3;i+)P1=0xfe;/P1.0 口的燈點亮i nt_de I ay (); 延時一段較長的時間P1=0xff;熄滅int_delay(); 延時一段較長的時間 )一for (i=0;i<3;i+)(P1=0xef;/P1.4 口的燈點亮char_delay 0 ; /延時一段較長的時間P1=0xff;/熄滅char delay() ; /延

17、時一段較長的時間)實例9:用POD、P1 口分別顯示加法和減法運算結(jié)果#include<reg51. h>void main (void)(unsigned char m, n;np43;/即十進制數(shù) 2x16+11=43n=60;/ 即十進制數(shù) 3x 16+12=60P1=m+n; /P1 =103=0110 0111,結(jié)果 P1.3、P1. 4、P1.7 口的燈被點亮P0=n-m; /P0=17=0001 0001,結(jié)果 P0.0、P0.4 的燈被熄滅 /實例10:用P0、P1 口顯示乘法運算結(jié)果#include<reg51. h> /包含單片機寄存器的頭文件 vo

18、id main(void)(unsigned char m,n;unsigned int s;rrp64;n=71;s=m*n;/s=64*71=4544,需要16位二進制數(shù)表示,高8位送P1 口,低8位送P0 口由于 4544=17*256+192=H3*16*16*16+H2*16*16+H1 *16+HO兩邊同除以 256,可得 17+192/256=H3*16+H2+(H1 *16+H0)/256因此,高8位16進制數(shù)H3*16+H2必然等于17,即4544除以 256的商低8位16進制數(shù)H1*16+H0必然等于192,即4544除以256 的余數(shù)P1=s/256; 高 8 位送 P1

19、 口 , P1=17=11H=0001 0001B,1.0和1.4口 滅,其余亮P0=s%256;低 8 位送 P0 口 , P3=192=cOH=1100 0000B, P3.1, P3. 6, P3. 7口滅,其余亮 實例11:用P1、P0 口顯示除法運算結(jié)果# i ncI ude<reg51. h>/包含單片機寄存器的頭文件void main (void)(PI =36/5;求整數(shù)P0= (36%5) *10)/5; /求小數(shù)whi le(1);/無限循環(huán)防止程序“跑飛”)/實例12:用自增運算控制P0 口 8位LED流水花樣# include<reg51.h>/

20、包含單片機寄存器的頭文件/* 函數(shù)功能:延時一段時間*/ void de I ay (void)(unsigned int i;for (i=0;i<20000;i+)/*函數(shù)功能:主函數(shù)*/ void main (void)(uns igned char i;for (i=0;i<255;i+) /注意i的值不能超過255(P0=i; 將i的值送PODdelayO ; /調(diào)用延時函數(shù))/實例13:用P0 口顯示邏輯”與“運算結(jié)果# include<reg51. h>/包含單片機寄存器的頭文件void main (void)(P0=(4>0)&&(

21、9>0xab) ;/將邏輯運算結(jié)果送P0 口whiIe ;設(shè)直無限循環(huán),防止程序“跑飛”/實例14:用P0 口顯示條件運算結(jié)果# include<reg51. h>包含單片機寄存器的頭文件void main(void)(PO=(8>4)?8:4;將條件運算結(jié)果送 PO 口,P0=8=0000 1000B whi le(1);/設(shè)置無限循環(huán),防止程序“跑飛”)/實例15:用P0 口顯示按住“異或“運算結(jié)果# include<reg51. h> /包含單片機寄存器的頭文件 void main(void)(P0=0xa27)x3c;將條件運算結(jié)果送 PO 口,P0

22、=8=0000 1000B whiIe ;設(shè)置無限循環(huán),防止程序“跑飛”/實例16:用P0顯示左移運算結(jié)果# include<reg51. h> 包含單片機寄存器的頭文件 void ma in (void)(P0=0x3b«2; /將左移運算結(jié)果送 PO 口,P0=1110 1100B=0xec whi le(1)word完工整.版范文范例學(xué)習(xí)指導(dǎo)無限循環(huán),防止程序“跑飛”實例17: “萬能迂輯電路”實驗#i ncIude<reg51. h>sbit F二P4;sbit X二Pr5;sbit Y二P6;sbit Z=Pr7;void main(void)/包含

23、單片機寄存器的頭文件/將F位定義為P1.4將X位定義為P1.5將Y位定義為P1.6將Z位定義為P1.7wh i le(1)F=(CX)&Y) |Z; /將邏輯運算結(jié)果賦給F/實例18:用右移運算流水點亮P1 口 8位LED#include<reg51. h> /包含單片機寄存器的頭文件 /* 函數(shù)功能:延時一段時間 */void delay (void)unsigned int n;for (n=0;n<30000;n+)/*函數(shù)功能:主函數(shù)*/ void ma in (void)uns igned char i ; whiIe (P1=0xff;delay();fo

24、r (i=0; i<8; i+)設(shè)置循環(huán)次數(shù)為8P1=P1»1;delay ();/實例19:if語句控制P0 口 8位LED的流水方向每次循環(huán)P1的各二進位右移1位,高位補0 調(diào)用延時函數(shù)word完美整理版#include<reg51.h> sbit S1 二P4; sbit S2二P5;if (S1=0)P0=0x0f; if (S2=0)P0=0xf0;sbit S1=P1'4;/將S1位定義為P1.4包含單片機寄存器的頭文件將S1位定義為P1.4/將S2位定義為P1.5 /* 函教功能:主函數(shù)*/ void ma in (void)wh i Ie (

25、1)如果按鍵S1按下/P0 口高四位LED點亮如果按鍵S2按下/P0 口低四位LED點亮實例20:用swtich語句的控制P0 口 8位LED的點亮狀態(tài)#include<reg51. h> /包含單片機寄存器的頭文件/* 函數(shù)功能:延時一段時間*/ void delay (void)unsigned int n;for(n=0;n<10000;n+)/*函教功能:主函數(shù)*/void ma in (void)unsigned char i;i=0; 將i初始化為0whi le(1)(if (S1=0) 如果S1鍵按下(de I ay 0 ; 延時一7殳時間if (S1=0) /

26、如果再次檢測到S1鍵按下 i+;/i 自增 1if(i=9) /如果i=9,重新將其置為1 i=1;)swi tch (i)/使用多分支選擇語句case 1: PO=Oxfe; /第一個 LED 亮break;case 2: P0=0xfd;第二個LED亮break;case 3:P0=0xfb;/第三個 LED 亮break;case 4:P0=0xf7; 第四個 LED 亮 break;case 5:P0=0xef;/第五個 LED 亮break;case 6:P0=0xdf; 第六個 LED 亮 break;case 7:P0=0xbf;/第七個 LED 亮break;case 8:P0

27、=0x7f; 第八個 LED 亮 break;default: 缺省值,關(guān)閉所有LEDP0=0xff;范文范例學(xué)習(xí)指導(dǎo)/實例21:用for語句控制蜂鳴器鳴笛次數(shù)#include<reg51. h> 包含單片機寄存器的頭文件 sb it sound=P3'7; /將 sound 位定義為 P3. 7 /* 函數(shù)功能:延時形成1600Hz音頻 */ void delay1600 (void)unsigned char n;for(n=0;n<100;n+)/* 函數(shù)功能:延時形成800Hz音頻*/ void de Iay800 (void)(unsigned char n

28、;for (n=0;n<200;n+)/* 的教功能:主函數(shù)*/void main(void)uns i gned i nt i;whi le(1)(for(i=0;i<830;i+)(sound=0; /P3. 7輸出低電平delay1600 ();sound=1; P3. 7輸出高電平de I ay1600 ();)for(i=0;i<200;i+)(sound=0; /P3. 7輸出低也平delay800();sound=1; /P3. 7輸出高電平 de I ay800 ();)實例22:用while語句控制LED#include<reg51.h> 包含單

29、片機寄存器的頭文件 /* 函數(shù)功能:延時約 60ms (3*100*200=60000 us) */ void delay60ms (void)unsigned char m, n;for(m=0;m<100;m+)for (n=0;n<200;n+)/* 函教功能:主函數(shù)*/ void ma in (void)unsigned char i ;i=0; 將 iwhi Ie(i<0xff)whi le(1) 無限循環(huán)初始化為0當(dāng)i小于Oxff (255)時執(zhí)行循環(huán)體PO=i;/將i送P0 口顯示word完美整理版delay60ms() ; /延時i+;/i自增1實例23:用d

30、orrhile語句控制P0 口 8住LED流水點亮#include<reg51. h> /包含單片機寄存器的頭文件 /* 的數(shù)功能:延時約 60ms (3*100*200=60000 u s) */ void delay60ms (void)unsigned char m, n;for(m=0;m<100;m+)for (n=0;n<200;n+)函數(shù)功能:主函數(shù)*/ void ma in (void)doP0=0xfe;de lay60ms ();P0=0xfd; delay60ms ();PO=Oxfb; delay60ms ();P0=0xf7;delay60ms

31、 ();P0=0xef;delay60ms ();P0=0xdf; delay60ms();de lay60ms ();P0=0xbf; de lay60ms ();P0=0x7f;de I ay60ms ();whi le(1);第一個LED亮第二個LED亮第三個LED亮第四個LED亮第五個LED亮第六個LED亮第七個LED亮第八個LED亮無限循環(huán),使8位LED循環(huán)流水點亮/實例24:用字符型數(shù)組控制P0 口 8位LED流水點亮#include<reg51. h> /包含單片機寄存器的頭文件 /* 函數(shù)功能:延時約 60ms (3*100*200=60000 u s) */ vo

32、id delay60ms (void)unsigned char m, n;for (rrF0;m<100; m+)for (n=0;n<200;n+) )/* 函數(shù)功能:主函數(shù)*/ void ma in (void)uns igned char i ;uns i gned char code Tab = 0xfe, Oxfd, Oxfb, 0xf7, Oxef, Oxdf, Oxbf, 0x7f);定義無符號字符型數(shù)組whi le(1)for(i=0;i<8;i+)PO=Tabi;依次引用數(shù)組元素,并將其送P0 口顯示 de I ay60ms () ;/調(diào)用延時函數(shù)/實例2

33、5:用P0 口顯示字符串常量#include<reg51. h> /包含單片機寄存器的頭文件 /* 函數(shù)功能:延時約 150ms (3*200*250=150 000 rs=1 50ms */ void de I ay150ms (void) (unsigned char m,n;for(m=0;m<200;m+)for (n=0;n<250;n+)/*函數(shù)功能:主函數(shù)*/ void main (void)unsigned char str口 = "Now,Temperature is :" 將字符串賦給字符型 全部元素賦值unsigned char

34、 i;whiIe (i=0; 將i初始化為0,從第一個元素開始顯示whi le(stri!=*0') 只要沒有顯示到結(jié)束標(biāo)志0'(P0=stri;/將第i個字符送到P0 口顯示de I ay150ms 0 ; 調(diào)用150ms延時函數(shù)i+;指向下一個待顯字符)實例26:用P0 口顯示指針運算結(jié)果#include<reg51. h> void main (void)(unsigned char *p1, *p2; 定義無符號字符型指針變量p1, p2unsigned char i, j; 定義無符號字符型數(shù)據(jù)i=25;給i賦初值25j=15;pl二&i;使指針變

35、量指向i,對指針初始化p2=&j;使指針變量指向j,對指針初始化P0=*p1+*p2;/*p1+*p2 相當(dāng)于 i+j,所以 P0=25+15=40二0x28/«' P0=0010 1000B,結(jié)果 P0.3、P0, 5 引腳 LED 熄滅,其余點亮 whi le(1);/無限循環(huán),防止程序“跑飛”)實例27:用指針數(shù)組控制P0 口 8住LED流水點亮#include<reg51.h> /*函數(shù)功能:延時約 150ms (3*200*250=150 000 us=150ms*/void de I ay150ms (void)(uns igned char

36、m,n;for(m=0;m<200;m+)for (n=0;n<250;n+)/*函數(shù)功能:主函數(shù)*/void ma in (void)(unsigned char code Tab = 0xfe, Oxfd, Oxfb, 0xf7, Oxef, Oxdf, Oxbf, 0x7f); uns igned char*p = &Tab0, &Tab1 , &Tab2, &Tab3, &Tab4, &Tab5,&Tab6, &Tab7;unsigned char i; 定義無符號字符型數(shù)據(jù) whiIe (for(i=0;i&

37、lt;8;i+)(P0=*pi;de I ay150ms ();實例28:用數(shù)組的指針控制P0 口 8位LED流水點亮#include<reg51.h> /*函數(shù)功能:延時約 150ms (3*200*250=150 000 ps=150ms */ void de I ay150ms (void)uns igned char m,n;for(m=0;m<200;m+)for (n=0;n<250;n+)函數(shù)功能:主函數(shù)-一 一 ,一一一一一,一一一,一一一,一一一一一一一一 一一一一一一一一L4L4一一 一一一 一 一 (一一一一心一一,一匚 /*/void main

38、(void)(unsigned char i;unsigned char Tab = (OxFF, OxFE, OxFD, OxFB, 0xF7, OxEF, OxDF, OxBF, 0x7F, OxBF, OxDF, OxEF, 0xF7, OxFB, OxFD, OxFE,OxFE, OxFC, OxFB, OxFO, OxEO, OxCO, 0x80, 0x00, 0xE7, OxDB, OxBD, 0x7E, 0x3C, 0x18, 0x00, 0x81, 0xC3, 0xE7, 0x7E, OxBD, OxDB, 0xE7, OxBD, OxDB; /流水燈控制碼unsigned c

39、har *p;定義無符號字符型指針p=Tab;/將數(shù)組首地址存入指針pwhi le(1)(for(i=0;i<32;i+) 共32個流水燈控制碼(P0=*(p+ i);/* (p+i)的值等于 aide I ay150ms () ; /調(diào)用 150ms 延時函數(shù)實例29:用P0、P1 口顯示整型函數(shù)返回值#include<reg51.h>/* 函數(shù)功能:計算兩個無符號整數(shù)的和*/ unsigned int sum(int a, int b)unsigned int s;s=a+b;return (s);)/* 函數(shù)功能:主函教*/void ma in (void)unsign

40、ed z;z=sum(2008, 2009);P1=z/256;/取得z的高8位P0=z%256 ;/取得z的低8位whiIe實例30:用有參函數(shù)控制P0 口 8位LED流水速度#include<reg51.h> /*函數(shù)功能:延時一段時間*/ void delay(unsigned char x) (unsigned char m,n;for(m=0;m<x;m+)for (n=0;n<200;n+)/* 的教功能:主函數(shù)*/void ma in (void)uns igned char i;unsigned char codeTab = 0xFE, OxFD, Ox

41、FB, 0xF7, OxEF, OxDF, OxBF, 0x7F;/流水燈控制碼whi le(1)(/快速流水點亮LEDfor(i=0;i<8;i+) 共8個流水燈控制碼(P0=Tabi;de I ay (100); /延時約 60ms, (3*100*200=60 000 us) )/慢速流水點亮LEDfor(i=0;i<8; i+) 共8個流水燈控制碼(PO=Tabi;de I ay (250); 延時約 150ms, (3*250*200=150 000 us)/實例31:用數(shù)組作函數(shù)參數(shù)控制流水花樣#include<reg51.h> /*函數(shù)功能:延時約150m

42、s*/ void delay (void)unsigned char m,n;for(m=0;m<200;m+)for(n=0;n<250;n+)/*函數(shù)功能:流水點亮P0 口 8位LED */ void Ied_flow (unsigned char a8) (unsigned char i;for (i=0;i<8;i+)P0=ai;de I ay 0;)/* 函數(shù)功能:主函數(shù)*/void ma in (void)( unsigned char codeTab = OxFE, OxFD, OxFB, 0xF7, OxEF, OxDF, OxBF, 0x7F;/流水燈控制碼

43、 led_f low(Tab);實例32:用指針作函數(shù)參數(shù)控制P0 口 8位LED流水點亮#include<reg51.h> /*函數(shù)功能:延時約150ms*/ void delay(void)unsigned char m,n;for(m=0;m<200;m+)for (n=0;n<250;n+)/*函數(shù)功能:流水點亮P0 口 8位LEDvoid I ed_f low (unsigned char *p) /形參為無符號字符型指針unsigned char i;whi le(1)Ii=0; 將i置為0,指向數(shù)組第一個元素while(*(p+i)!='0') 只要沒有指向數(shù)組的結(jié)束標(biāo)志(P0=*(p+i);/取的指針?biāo)缸兞?數(shù)組元素)的值,送P0D delay (); 調(diào)用延時函數(shù)i+; 指向下一個數(shù)組元素/* 函教功能:主函數(shù)void main(void)unsigned char code Tab = OxFE, OxFD, OxFBt 0xF7, OxEF, OxDF, OxBF, 0x7F,0x7F, OxBF, OxDF, OxEF, 0xF7, OxFB, OxFD, OxFE,OxFF, OxFE, OxFC

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論