上篇給大家分享了單個LED的點亮與閃爍,這次給大家分享一下怎樣用單片機控制LED實現流水燈效果。
所需元器件如下:
STC89C52RC芯片 *1
10K電阻 *1
330Ω電阻 *8
10uF 電解電容 *1
22pF 瓷片電容 *2
12MHz晶振 *1
按鍵 *1
LED燈 *8
電路圖如下:
代碼如下:
/*************** LED流水燈****************/
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include<intrins.h> //因爲要用到左右移函數,所以加入這個頭文件
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8; //對數據類型進行聲明定義
#define LED P0 //將P0口定義爲LED後面就可以使用LED代替P0口
void delay(u16 i) //延時函數,i=1時,大約延時10us
{
while(i--); //利用i自減循環以達到時間的流逝
}
void main() //主函數
{
u8 z; //定義一個變量z
LED=~0x01;
delay(50000); //大約延時0.5s
{
while(1)
for(z=0;z<8;z++) //循環8次,實現8個LED燈的逐漸點亮
{
LED=~(0x01<<z); //將1左移i位,然後將結果賦值到P0口
delay(10000); //大約延時0.5s
}
}
}
仿真電路圖如下:
後續會給大家分享呼吸燈,心形燈等代碼以及實物電路圖~