一、簡介
本文介紹如何不同頻率閃爍1個LED。
二、實驗平臺
單片機型號:STC12C5A60S2
編譯軟件:KEIL
硬件平臺:達(dá)芬奇51開發(fā)版
三、版權(quán)聲明
博主:老蔡
聲明:喝水不忘挖井人,轉(zhuǎn)載請注明出處。
原文地址:
聯(lián)系方式:644746740@qq.com
老蔡51單片機群:463850023
四、講解
先讓LED快速閃爍,閃爍10次之后再讓LED慢速閃爍,先看一下程序:
/*-------------------------------------------------------------------
主函數(shù)
---------------------------------------------------------------------*/
void main (void)
{
//此方法使用bit位對單個端口賦值
unsigned char i; //定義一個無符號字符型局部變量 i 取值范圍 0~255
P2M0 = 0XFF; //設(shè)置P2端口推挽輸出
P2M1 = 0X00;
P2 = 0x00; //初始化P2端口數(shù)據(jù)
LED_Switch = 0; //打開流水燈開關(guān)
while (1) //主循環(huán)
{
for(i=0;i<10;i++) //加入 for循環(huán),表明for循環(huán)大括號中的程序循環(huán)執(zhí)行10次
{
LED0=0; //將P2.2口賦值 0,對外輸出低電平
Delay(50000); //調(diào)用延時程序;更改延時數(shù)字可以更改延時長度;
//用于改變閃爍頻率
LED0=1; //將P2.2口賦值 1,對外輸出高電平
Delay(50000);
}
for(i=0;i<10;i++)
{
LED0=0; //將PP2.2口賦值 0,對外輸出低電平
Delay(60000); //調(diào)用延時程序;更改延時數(shù)字可以更改延時長度;
Delay(60000); //用于改變閃爍頻率
Delay(60000);
LED0=1; //將PP2.2口賦值 1,對外輸出高電平
Delay(60000);
Delay(60000);
Delay(60000);
}
//主循環(huán)中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
我們來分析一下代碼
P2M0 = 0XFF; //設(shè)置P2端口推挽輸出
P2M1 = 0X00;
以上兩條語句是加強io口驅(qū)動能力,從下表可以看出,推挽輸出,可達(dá)20mA,接LED時需要加上限流電阻

image.png
第一個 for循環(huán)
led快速閃爍,原因是對于LED0高電平與低電平之間Delay延時時間小,所以led閃爍的頻率比較快
第二個for循環(huán)
led慢速閃爍,原因是對于LED0高電平與低電平之間Delay延時時間長,所以led閃爍的頻率比較慢