




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政策效果評估的方法與技術(shù)研究及答案
- 機電工程新知試題及答案
- 機電工程專業(yè)發(fā)展試題及答案
- 數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)解析與試題及答案
- 機電工程技術(shù)新趨勢2025年試題及答案
- 管理變更對項目影響的評估試題及答案
- 自查自糾2025年管理師試題及答案
- 網(wǎng)絡(luò)投資回報分析模型試題及答案
- 項目團隊建設(shè)中的信任管理試題及答案
- 軟件設(shè)計師考試經(jīng)驗分享與試題及答案
- 2025年湖南長沙穗城軌道交通限公司社會招聘261人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 應(yīng)急藥品知識培訓(xùn)課件
- 差分進(jìn)化算法研究
- 2025年湖北省武漢城市職業(yè)學(xué)院面向社會招聘人事代理人員27人歷年高頻重點提升(共500題)附帶答案詳解
- 國家開放大學(xué)《經(jīng)濟學(xué)(本)》形考任務(wù)1-6答案
- 職業(yè)教育與成人教育科2024年工作總結(jié)
- T-CNAS 12─2020 成人經(jīng)口氣管插管機械通氣患者口腔護理
- T∕CACM 1021.92-2018 中藥材商品規(guī)格等級 獨活
- 車位租賃協(xié)議
- DB11T 1382-2022 空氣源熱泵系統(tǒng)應(yīng)用技術(shù)規(guī)程
- 氣壓傳動課件 項目六任務(wù)二 吸吊機氣動系統(tǒng)回路
評論
0/150
提交評論