小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

51單片機(jī)50個(gè)例程代碼

 靜幻堂 2019-03-01
51單片機(jī)50個(gè)例程代碼
51單片機(jī)50個(gè)例程代碼

程序里有中斷,串口等驅(qū)動(dòng),直接復(fù)制即可使用

1-IO輸出-點(diǎn)亮1個(gè)LED燈方法1

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:點(diǎn)亮P1口的一個(gè)LED燈

該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,

通過程序了解如何控制端口的高低電平

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

sbit LED=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,

//LED是自己任意定義且容易記憶的符號(hào)

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

//此方法使用bit位對(duì)單個(gè)端口賦值

LED=1; //將P1.0口賦值 1,對(duì)外輸出高電平

LED=0; //將P1.0口賦值 0,對(duì)外輸出低電平

while (1) //主循環(huán)

{

//主循環(huán)中添加其他需要一直工作的程序

}

}

2-IO輸出-點(diǎn)亮1個(gè)LED燈方法2

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:點(diǎn)亮P1口的一個(gè)LED燈

該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,

通過程序了解如何控制端口的高低電平

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

//此方法使用1個(gè)字節(jié)對(duì)單個(gè)端口賦值

P1 = 0xFF; //P1口全部為高電平,對(duì)應(yīng)的LED燈全滅掉,

//ff換算成二進(jìn)制是 1111 1111

P1 = 0xfe; //P1口的最低位點(diǎn)亮,可以更改數(shù)值是其他的燈點(diǎn)亮

//0xfe是16進(jìn)制,0x開頭表示16進(jìn)制數(shù),

//fe換算成二進(jìn)制是 1111 1110

while (1) //主循環(huán)

{

//主循環(huán)中添加其他需要一直工作的程序

}

}

3-IO輸出-點(diǎn)亮多個(gè)LED燈方法1

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:點(diǎn)亮P1口的多個(gè)LED燈

該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,

通過程序了解如何控制端口的高低電平

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,

sbit LED1=P1^1;//LED是自己任意定義且容易記憶的符號(hào)

sbit LED2=P1^2;

sbit LED3=P1^3;

sbit LED4=P1^4;

sbit LED5=P1^5;

sbit LED6=P1^6;

sbit LED7=P1^7;

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

//此方法使用bit位對(duì)單個(gè)端口賦值

LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平

LED1=1;

LED2=0;

LED3=1;

LED4=0;

LED5=1;

LED6=0;

LED7=1;

while (1) //主循環(huán)

{

//主循環(huán)中添加其他需要一直工作的程序

}

}

4-IO輸出-點(diǎn)亮多個(gè)LED燈方法2

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:點(diǎn)亮P1口的多個(gè)LED燈

該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,

通過程序了解如何控制端口的高低電平

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

//此方法使用bit位對(duì)單個(gè)端口賦值

P1=0x55; //換成二進(jìn)制是0101 0101

while (1) //主循環(huán)

{

//主循環(huán)中添加其他需要一直工作的程序

}

}

5-閃爍1個(gè)LED

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:點(diǎn)亮P1口的1個(gè)LED燈閃爍

該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,

通過程序了解如何控制端口的高低電平

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,

//LED是自己任意定義且容易記憶的符號(hào)

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

//此方法使用bit位對(duì)單個(gè)端口賦值

while (1) //主循環(huán)

{

LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平

Delay(10000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度;

//用于改變閃爍頻率

LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平

Delay(10000);

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

6-不同頻率閃爍1個(gè)LED燈

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:點(diǎn)亮P1口的1個(gè)LED燈閃爍

該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,

通過程序了解如何控制端口的高低電平

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,

//LED是自己任意定義且容易記憶的符號(hào)

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

//此方法使用bit位對(duì)單個(gè)端口賦值

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

while (1) //主循環(huán)

{

for(i=0;i<10;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行10次

{

LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平

Delay(5000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度;

//用于改變閃爍頻率

LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平

Delay(5000);

}

for(i=0;i<10;i++)

{

LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平

Delay(60000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度;

//用于改變閃爍頻率

LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平

Delay(60000);

}

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

7-不同頻率閃爍多個(gè)LED燈

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:點(diǎn)亮P1口的多個(gè)LED燈閃爍

該程序是單片機(jī)學(xué)習(xí)中最簡(jiǎn)單最基礎(chǔ)的,

通過程序了解如何控制端口的高低電平

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,LED是自己任意定義且容易記憶的符號(hào)

sbit LED1=P1^1;

sbit LED2=P1^2;

sbit LED3=P1^3;

sbit LED4=P1^4;

sbit LED5=P1^5;

sbit LED6=P1^6;

sbit LED7=P1^7;

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

//此方法使用bit位對(duì)單個(gè)端口賦值

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

while (1) //主循環(huán)

{

for(i=0;i<10;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中

//的程序循環(huán)執(zhí)行10次

{

LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平

LED2=1;

LED4=0;

Delay(5000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度;

//用于改變閃爍頻率

LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平

LED2=0;

LED4=1;

Delay(5000);

}

for(i=0;i<10;i++)

{

LED0=0; //將P1.0口賦值 0,對(duì)外輸出低電平

LED2=1;

LED4=0;

Delay(60000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以更改延時(shí)長(zhǎng)度;

//用于改變閃爍頻率

LED0=1; //將P1.0口賦值 1,對(duì)外輸出高電平

LED2=0;

LED4=1;

Delay(60000);

}

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

8-8位LED左移

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:左移,直至LED全部點(diǎn)亮,左移符號(hào) <<

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

Delay(50000);

P1=0xfe; //賦初始值

for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次

{

Delay(50000);

P1<<=1;

}

while (1) //主循環(huán)

{

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

9-8位LED右移

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:右移,直至LED全部點(diǎn)亮,右移符號(hào) >>

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

Delay(50000);

P1=0x7f; //賦初始值

for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次

{

Delay(50000);

P1>>=1;

}

while (1) //主循環(huán)

{

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

10-LED循環(huán)左移

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:循環(huán)左移,始終一個(gè)led點(diǎn)亮,并循環(huán)執(zhí)行流水動(dòng)作,左移符號(hào) << 邏輯或符號(hào) |

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

Delay(50000);

P1=0xfe; //賦初始值

while (1) //主循環(huán)

{

for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次

{

Delay(50000);

P1<<=1;

P1=P1|0x01; //左移后,最右端自動(dòng)賦值0,所以需要該語(yǔ)句賦值1

}

P1=0xfe; //重新賦初始值

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

11-LED循環(huán)右移

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:循環(huán)右移,始終一個(gè)led點(diǎn)亮,并循環(huán)執(zhí)行流水動(dòng)作,右移符號(hào) >> 邏輯或符號(hào) |

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

Delay(50000);

P1=0x7f; //賦初始值

while (1) , //主循環(huán)

{

for(i=0;i<8;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行8次

{

Delay(50000);

P1>>=1;

P1=P1|0x80; //右移后,最左端自動(dòng)賦值0,所以需要該語(yǔ)句賦值1

}

P1=0x7f; //重新賦初始值

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

12-查表顯示LED燈

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:通過查表獲得1個(gè)字節(jié)的值然后賦值給P1端口,ROM允許情況可以設(shè)置更多表格

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

/*------------------------------------------------

查表表格

------------------------------------------------*/

unsigned char code table[]={0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0xff,0xff,0x00,0x00,

0x55,0x55,0xaa,0xaa

};

//rom允許情況可以無(wú)限添加

/*------------------------------------------------

函數(shù)聲明

------------------------------------------------*/

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

while (1) //主循環(huán)

{

for(i=0;i<16;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)

//執(zhí)行16次,表明表格中有16個(gè)元素

{

P1=table[i];

Delay(30000);

}

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

13-雙燈左移右移閃爍

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:2個(gè)led燈先左移,然后右移,然后同時(shí)閃爍

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i

//取值范圍 0~255

unsigned char temp;//定義臨時(shí)變量用于轉(zhuǎn)換

while (1) //主循環(huán)

{

temp=0xfc;

P1=temp;

for(i=0;i<7;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)

//中的程序循環(huán)執(zhí)行7次

{

Delay(50000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可

//以更改延時(shí)長(zhǎng)度;用于改變閃爍頻率

temp<<=1;

temp=temp|0x01; //也可以直接把temp換成P1

P1=temp; //之所以加入temp做中間變量,轉(zhuǎn)換

//完成后直接賦值到端口,防止直接

//操作端口造成的短暫閃爍

}

temp=0x3f;

P1=temp;

for(i=0;i<7;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)

//中的程序循環(huán)執(zhí)行7次

{

Delay(50000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以

//更改延時(shí)長(zhǎng)度;用于改變閃爍頻率

temp>>=1;

temp|=0x80; //等效于 temp=temp|0x80

P1=temp;

}

for(i=0;i<3;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)

//中的程序循環(huán)執(zhí)行3次

{

P1=0xff;

Delay(50000);

P1=0x00;

Delay(50000);

} //主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

14-花樣燈

/*-----------------------------------------------

名稱:IO口高低電平控制

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:花樣燈一般有兩種方法實(shí)現(xiàn):

1、程序循環(huán)執(zhí)行

2、查表法

這里我們兩種都使用一下

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

/*------------------------------------------------

花樣表格

------------------------------------------------*/

unsigned char code seg[]={0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0xff,0xff,0x00,0x00,

0x55,0x55,0xaa,0xaa

};//rom允許情況可以無(wú)限添加

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

main()

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型

//局部變量 i 取值范圍 0~255

while(1)

{

P1=0xFE; //第1個(gè)LED亮

for(i=0;i<8;i++)

{

Delay(20000);

P1 <<=1;

}

P1=0x7F; //第8個(gè)LED亮

for(i=0;i<8;i++)

{

Delay(20000);

P1 >>=1;

}

P1=0xFE; //第1個(gè)LED亮

for(i=0;i<8;i++)

{

Delay(20000);

P1 <<=1;

P1 |=0x01;

}

P1=0x7F; //第8個(gè)LED亮

for(i=0;i<8;i++)

{

Delay(20000);

P1 >>=1;

P1 |=0x80;

}

//下面通過查表方法獲得花樣參數(shù)

for(i=0;i<16;i++)//查表可以簡(jiǎn)單的顯示各種花樣 實(shí)用性更強(qiáng)

{

Delay(20000);

P1=seg[i];

}

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

15-PWM調(diào)光

/*-----------------------------------------------

名稱:PWM調(diào)光

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:通過PWM(脈寬調(diào)制)調(diào)節(jié)LED的亮度

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,LED是自己任意定義且容易記憶的符號(hào)

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned int CYCLE=600,PWM_LOW=0;//定義周期并賦值

while (1) //主循環(huán)

{

LED0=1;

Delay(60000); //特意加延時(shí),可以看到熄滅的過程

for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++){ //PWM_LOW表示低

//電平時(shí)間,這個(gè)循環(huán)中低電平時(shí)長(zhǎng)從1累加到CYCLE(周期)的值,即600次

LED0=0; //點(diǎn)亮LED

Delay(PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從1加至599

LED0=1; //熄滅LED

Delay(CYCLE-PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從599減至1

}

LED0=0;

for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){ //與逐漸變亮相反的過程

LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);

}

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

16-共陽(yáng)數(shù)碼管靜態(tài)顯示

/*-----------------------------------------------

名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管靜態(tài)顯示

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:通過賦值給P1,讓數(shù)碼管顯示特定的字符或者數(shù)字

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

void main (void)

{

P1=0xc0; //二進(jìn)制 為 1100 0000 參考數(shù)碼管排列,

//可以得出0對(duì)應(yīng)的段點(diǎn)亮,1對(duì)應(yīng)的段熄滅,結(jié)果顯示數(shù)字"0"

while(1)

{

}

}

17-1個(gè)共陽(yáng)數(shù)碼管顯示變化數(shù)字

/*-----------------------------------------------

名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管動(dòng)態(tài)顯示變化數(shù)字

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:通過循環(huán)賦值給P1,讓數(shù)碼管顯示特定的字符或者數(shù)字

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x77,0x7c,0x39,0x5e,0x79,0x71,};

// 顯示數(shù)值表0-9

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

while (1) //主循環(huán)

{

for(i=0;i<16;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行10次

{

P1=dofly_table[i]; //循環(huán)調(diào)用表中的數(shù)值

Delay(60000); //延時(shí),方便觀看數(shù)字變化

}

//主循環(huán)中添加其他需要一直工作的程序

}

}/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

18-單個(gè)數(shù)碼管模擬水流

/*-----------------------------------------------

名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管模擬水流

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:通過循環(huán)賦值給P1,讓數(shù)碼管顯示特定流動(dòng)樣式

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

void Delay(unsigned int t); //函數(shù)聲明

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i 取值范圍 0~255

while (1) //主循環(huán)

{

P1=0xfe;

for(i=0;i<6;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)中的程序循環(huán)執(zhí)行6次

{

Delay(10000);

P1<<=1;

P1|=0x01;

}

//主循環(huán)中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值

unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(--t);

}

19-按鍵控制單個(gè)數(shù)碼管顯示

/*-----------------------------------------------

名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管動(dòng)態(tài)顯示變化數(shù)字

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:通過循環(huán)檢測(cè)P1口按鍵輸入值,然后用數(shù)碼管輸出,

沒有按鍵按下時(shí)原值不變

------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),

//頭文件包含特殊功能寄存器的定義

unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,};

// 顯示數(shù)值表0-9

/*------------------------------------------------

主函數(shù)

------------------------------------------------*/

void main (void)

{

while (1) //主循環(huán)

{

switch(P3) //P3口作為獨(dú)立按鍵輸入端,檢測(cè)端口電平并做如下判斷

{

case 0xfe:P1=dofly_table[1];break;//0xfe = 1111 1110,

//說明連接在P3.0端口的按鍵被按下,顯示對(duì)應(yīng)的數(shù)字然后跳出循環(huán)

case 0xfd:P1=dofly_table[2];break;//調(diào)用表中的第三個(gè)

//元素 0xa4 下標(biāo) 0 才表示數(shù)組中的第一個(gè)元素

case 0xfb:P1=dofly_table[3];break;

case 0xf7:P1=dofly_table[4];break;

case 0xef:P1=dofly_table[5];break;

case 0xdf:P1=dofly_table[6];break;

case 0xbf:P1=dofly_table[7];break;

case 0x7f:P1=dofly_table[8];break;

default:break; //如果都沒按下,直接跳出

}

//主循環(huán)中添加其他需要一直工作的程序

}

}

20-單個(gè)數(shù)碼管指示邏輯電平

/*-----------------------------------------------

名稱:?jiǎn)蝹€(gè)共陽(yáng)數(shù)碼管指示邏輯電平

論壇:www.doflye.net

編寫:shifang

日期:2009.5

修改:無(wú)

內(nèi)容:通過循環(huán)檢測(cè)P3.2口電平輸入值,然后用數(shù)碼管輸出"H" or "L",

表示該端口現(xiàn)在連接的是高電平還是低電平

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多