單片機個實例代碼_第1頁
單片機個實例代碼_第2頁
單片機個實例代碼_第3頁
單片機個實例代碼_第4頁
單片機個實例代碼_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、51單片機50個例程代碼 程序里有中斷,串口等驅(qū)動,直接復(fù)制即可使用1-IO輸出-點亮1個LED燈方法1/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:點亮P1口的一個LED燈 該程序是單片機學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平-*/#include<reg52.h> /包含頭文件,一般情況不需要改動, /頭文件包含特殊功能寄存器的定義sbit LED=P10;/ 用sbit 關(guān)鍵字 定義 LED到P1.0端口, /LED是自己任意定義且容易記憶的符號/*- 主函數(shù)-*/void main (void) /此方法使用b

2、it位對單個端口賦值LED=1; /將P1.0口賦值 1,對外輸出高電平LED=0; /將P1.0口賦值 0,對外輸出低電平while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 2-IO輸出-點亮1個LED燈方法2/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:點亮P1口的一個LED燈 該程序是單片機學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平-*/#include<reg52.h> /包含頭文件,一般情況不需要改動, /頭文件包含特殊功能寄存器的定義/*- 主函數(shù)-*/void main (void) /此方法

3、使用1個字節(jié)對單個端口賦值P1 = 0xFF; /P1口全部為高電平,對應(yīng)的LED燈全滅掉, /ff換算成二進(jìn)制是 1111 1111P1 = 0xfe; /P1口的最低位點亮,可以更改數(shù)值是其他的燈點亮 /0xfe是16進(jìn)制,0x開頭表示16進(jìn)制數(shù), /fe換算成二進(jìn)制是 1111 1110 while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 3-IO輸出-點亮多個LED燈方法1/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:點亮P1口的多個LED燈 該程序是單片機學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平-*/#in

4、clude<reg52.h> /包含頭文件,一般情況不需要改動, /頭文件包含特殊功能寄存器的定義sbit LED0=P10;/ 用sbit 關(guān)鍵字 定義 LED到P1.0端口,sbit LED1=P11;/LED是自己任意定義且容易記憶的符號sbit LED2=P12;sbit LED3=P13;sbit LED4=P14;sbit LED5=P15;sbit LED6=P16;sbit LED7=P17;/*- 主函數(shù)-*/void main (void) /此方法使用bit位對單個端口賦值LED0=0; /將P1.0口賦值 0,對外輸出低電平LED1=1;LED2=0;LED

5、3=1;LED4=0;LED5=1;LED6=0;LED7=1;while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 4-IO輸出-點亮多個LED燈方法2/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:點亮P1口的多個LED燈 該程序是單片機學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平-*/#include<reg52.h> /包含頭文件,一般情況不需要改動, /頭文件包含特殊功能寄存器的定義/*- 主函數(shù)-*/void main (void) /此方法使用bit位對單個端口賦值P1=0x55; /換成二進(jìn)制是0

6、101 0101 while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 5-閃爍1個LED/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:點亮P1口的1個LED燈閃爍 該程序是單片機學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,/頭文件包含特殊功能寄存器的定義sbit LED0=P10;/ 用sbit 關(guān)鍵字 定義 LED到P1.0端口,/LED是自己任意定義且容易記憶的符號void Delay(unsigned int t); /函數(shù)聲明

7、/*- 主函數(shù)-*/void main (void) /此方法使用bit位對單個端口賦值while (1) /主循環(huán) LED0=0; /將P1.0口賦值 0,對外輸出低電平 Delay(10000); /調(diào)用延時程序;更改延時數(shù)字可以更改延時長度; /用于改變閃爍頻率 LED0=1; /將P1.0口賦值 1,對外輸出高電平 Delay(10000); /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int t) w

8、hile(-t);6-不同頻率閃爍1個LED燈/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:點亮P1口的1個LED燈閃爍 該程序是單片機學(xué)習(xí)中最簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平-*/#include<reg52.h> /包含頭文件,一般情況不需要改動, /頭文件包含特殊功能寄存器的定義sbit LED0=P10;/ 用sbit 關(guān)鍵字 定義 LED到P1.0端口, /LED是自己任意定義且容易記憶的符號void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void)

9、/此方法使用bit位對單個端口賦值unsigned char i; /定義一個無符號字符型局部變量 i 取值范圍 0255while (1) /主循環(huán) for(i=0;i<10;i+) /加入 for循環(huán),表明for循環(huán)大括號中的程序循環(huán)執(zhí)行10次 LED0=0; /將P1.0口賦值 0,對外輸出低電平 Delay(5000); /調(diào)用延時程序;更改延時數(shù)字可以更改延時長度; /用于改變閃爍頻率 LED0=1; /將P1.0口賦值 1,對外輸出高電平 Delay(5000); for(i=0;i<10;i+) LED0=0; /將P1.0口賦值 0,對外輸出低電平 Delay(60

10、000); /調(diào)用延時程序;更改延時數(shù)字可以更改延時長度; /用于改變閃爍頻率 LED0=1; /將P1.0口賦值 1,對外輸出高電平 Delay(60000); /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int t) while(-t);7-不同頻率閃爍多個LED燈/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:點亮P1口的多個LED燈閃爍 該程序是單片機學(xué)習(xí)中最

11、簡單最基礎(chǔ)的,通過程序了解如何控制端口的高低電平-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義sbit LED0=P10;/ 用sbit 關(guān)鍵字 定義 LED到P1.0端口,LED是自己任意定義且容易記憶的符號sbit LED1=P11;sbit LED2=P12;sbit LED3=P13;sbit LED4=P14;sbit LED5=P15;sbit LED6=P16;sbit LED7=P17;void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) /

12、此方法使用bit位對單個端口賦值unsigned char i; /定義一個無符號字符型局部變量 i 取值范圍 0255while (1) /主循環(huán) for(i=0;i<10;i+) /加入 for循環(huán),表明for循環(huán)大括號中 /的程序循環(huán)執(zhí)行10次 LED0=0; /將P1.0口賦值 0,對外輸出低電平 LED2=1; LED4=0; Delay(5000); /調(diào)用延時程序;更改延時數(shù)字可以更改延時長度;/用于改變閃爍頻率 LED0=1; /將P1.0口賦值 1,對外輸出高電平 LED2=0; LED4=1; Delay(5000); for(i=0;i<10;i+) LED0

13、=0; /將P1.0口賦值 0,對外輸出低電平 LED2=1; LED4=0; Delay(60000); /調(diào)用延時程序;更改延時數(shù)字可以更改延時長度; /用于改變閃爍頻率 LED0=1; /將P1.0口賦值 1,對外輸出高電平 LED2=0; LED4=1; Delay(60000); /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int t) while(-t);8-8位LED左移/*- 名稱:IO口高低電

14、平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:左移,直至LED全部點亮,左移符號 <<-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned char i; /定義一個無符號字符型局部變量 i 取值范圍 0255Delay(50000);P1=0xfe; /賦初始值for(i=0;i<8;i+) /加入 for循環(huán),表明for循環(huán)大括號中的程序循環(huán)執(zhí)行8次 D

15、elay(50000); P1<<=1; while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int t) while(-t);9-8位LED右移/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:右移,直至LED全部點亮,右移符號 >>-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭

16、文件包含特殊功能寄存器的定義void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned char i; /定義一個無符號字符型局部變量 i 取值范圍 0255Delay(50000);P1=0x7f; /賦初始值for(i=0;i<8;i+) /加入 for循環(huán),表明for循環(huán)大括號中的程序循環(huán)執(zhí)行8次 Delay(50000); P1>>=1; while (1) /主循環(huán) /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigne

17、d int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int t) while(-t);10-LED循環(huán)左移/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:循環(huán)左移,始終一個led點亮,并循環(huán)執(zhí)行流水動作,左移符號 << 邏輯或符號 |-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned

18、char i; /定義一個無符號字符型局部變量 i 取值范圍 0255Delay(50000);P1=0xfe; /賦初始值while (1) /主循環(huán) for(i=0;i<8;i+) /加入 for循環(huán),表明for循環(huán)大括號中的程序循環(huán)執(zhí)行8次 Delay(50000); P1<<=1; P1=P1|0x01; /左移后,最右端自動賦值0,所以需要該語句賦值1 P1=0xfe; /重新賦初始值 /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 06553

19、5-*/void Delay(unsigned int t) while(-t);11-LED循環(huán)右移/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:循環(huán)右移,始終一個led點亮,并循環(huán)執(zhí)行流水動作,右移符號 >> 邏輯或符號 |-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned char i; /定義一個無符號字符型局部變量 i 取值范

20、圍 0255Delay(50000);P1=0x7f; /賦初始值while (1) , /主循環(huán) for(i=0;i<8;i+) /加入 for循環(huán),表明for循環(huán)大括號中的程序循環(huán)執(zhí)行8次 Delay(50000); P1>>=1; P1=P1|0x80; /右移后,最左端自動賦值0,所以需要該語句賦值1 P1=0x7f; /重新賦初始值 /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int

21、 t) while(-t);12-查表顯示LED燈/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:通過查表獲得1個字節(jié)的值然后賦值給P1端口,ROM允許情況可以設(shè)置更多表格-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義/*- 查表表格-*/unsigned char code table=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0x00,0x55,0x55,0xaa,0xaa;/rom允許情況可以無限添加/*

22、- 函數(shù)聲明-*/void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned char i; /定義一個無符號字符型局部變量 i 取值范圍 0255while (1) /主循環(huán) for(i=0;i<16;i+) /加入 for循環(huán),表明for循環(huán)大括號中的程序循環(huán) /執(zhí)行16次,表明表格中有16個元素 P1=tablei; Delay(30000); /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值

23、的范圍是 065535-*/void Delay(unsigned int t) while(-t);13-雙燈左移右移閃爍/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:2個led燈先左移,然后右移,然后同時閃爍-*/#include<reg52.h> /包含頭文件,一般情況不需要改動, /頭文件包含特殊功能寄存器的定義void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned char i; /定義一個無符號字符型局部變量 i /取值范圍 0255unsig

24、ned char temp;/定義臨時變量用于轉(zhuǎn)換while (1) /主循環(huán) temp=0xfc; P1=temp; for(i=0;i<7;i+) /加入 for循環(huán),表明for循環(huán)大括號 /中的程序循環(huán)執(zhí)行7次 Delay(50000); /調(diào)用延時程序;更改延時數(shù)字可 /以更改延時長度;用于改變閃爍頻率 temp<<=1; temp=temp|0x01; /也可以直接把temp換成P1 P1=temp; /之所以加入temp做中間變量,轉(zhuǎn)換 /完成后直接賦值到端口,防止直接 /操作端口造成的短暫閃爍 temp=0x3f; P1=temp; for(i=0;i<7

25、;i+) /加入 for循環(huán),表明for循環(huán)大括號 /中的程序循環(huán)執(zhí)行7次 Delay(50000); /調(diào)用延時程序;更改延時數(shù)字可以 /更改延時長度;用于改變閃爍頻率 temp>>=1; temp|=0x80; /等效于 temp=temp|0x80 P1=temp; for(i=0;i<3;i+) /加入 for循環(huán),表明for循環(huán)大括號 /中的程序循環(huán)執(zhí)行3次 P1=0xff; Delay(50000); P1=0x00; Delay(50000); /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsi

26、gned int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int t) while(-t);14-花樣燈/*- 名稱:IO口高低電平控制 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:花樣燈一般有兩種方法實現(xiàn): 1、程序循環(huán)執(zhí)行 2、查表法 這里我們兩種都使用一下-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義/*- 花樣表格-*/unsigned char code seg=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe,

27、0xff,0xff,0x00,0x00, 0x55,0x55,0xaa,0xaa ;/rom允許情況可以無限添加void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/main() unsigned char i; /定義一個無符號字符型 /局部變量 i 取值范圍 0255 while(1) P1=0xFE; /第1個LED亮 for(i=0;i<8;i+) Delay(20000); P1 <<=1; P1=0x7F; /第8個LED亮 for(i=0;i<8;i+) Delay(20000); P1 >>=1; P1=0xF

28、E; /第1個LED亮 for(i=0;i<8;i+) Delay(20000); P1 <<=1; P1 |=0x01; P1=0x7F; /第8個LED亮 for(i=0;i<8;i+) Delay(20000); P1 >>=1; P1 |=0x80; /下面通過查表方法獲得花樣參數(shù) for(i=0;i<16;i+)/查表可以簡單的顯示各種花樣 實用性更強 Delay(20000); P1=segi; /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535

29、-*/void Delay(unsigned int t) while(-t);15-PWM調(diào)光/*- 名稱:PWM調(diào)光 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:通過PWM(脈寬調(diào)制)調(diào)節(jié)LED的亮度-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義sbit LED0=P10;/ 用sbit 關(guān)鍵字 定義 LED到P1.0端口,LED是自己任意定義且容易記憶的符號void Delay(unsigned int t); /函數(shù)聲明/*- 主函數(shù)-*/void main (void) unsigned int C

30、YCLE=600,PWM_LOW=0;/定義周期并賦值while (1) /主循環(huán) LED0=1; Delay(60000); /特意加延時,可以看到熄滅的過程 for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW+) /PWM_LOW表示低 /電平時間,這個循環(huán)中低電平時長從1累加到CYCLE(周期)的值,即600次 LED0=0; /點亮LED Delay(PWM_LOW);/延時長度,600次循環(huán)中從1加至599 LED0=1; /熄滅LED Delay(CYCLE-PWM_LOW);/延時長度,600次循環(huán)中從599減至1 LED0=0; for(PWM_LOW

31、=CYCLE-1;PWM_LOW>0;PWM_LOW-) /與逐漸變亮相反的過程 LED0=0; Delay(PWM_LOW); LED0=1; Delay(CYCLE-PWM_LOW); /主循環(huán)中添加其他需要一直工作的程序 /*- 延時函數(shù),含有輸入?yún)?shù) unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是 065535-*/void Delay(unsigned int t) while(-t);16-共陽數(shù)碼管靜態(tài)顯示/*- 名稱:單個共陽數(shù)碼管靜態(tài)顯示 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:通過賦值給P1,讓數(shù)碼管顯示特定的字符或者數(shù)字-*/#include<reg52.h> /包含頭文件,一般情況不需要改動,/頭文件包含特殊功能寄存器的定義void main (void) P1=0xc0; /二進(jìn)制 為 1100 0000 參考數(shù)碼管排列,/可以得出0對應(yīng)的段點亮,1對應(yīng)的段熄滅,結(jié)果顯示數(shù)字"0" while(1) 17-1個共陽數(shù)碼管顯示變化數(shù)字/*- 名稱:單個共陽數(shù)碼管動態(tài)顯示變化數(shù)字 編寫:shifang 日期:2009.5 修改:無 內(nèi)容:通過循環(huán)賦值給P1,讓數(shù)碼管顯示特定的字符或者數(shù)字-*/#inclu

溫馨提示

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

評論

0/150

提交評論