欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 用51單片機做一個簡易呼吸燈 [打印本頁]

作者: 953841535    時間: 2017-12-5 16:41
標題: 用51單片機做一個簡易呼吸燈
利用占空比的方式來控制燈的變暗和變亮
占空比就是高電平和低電平的比例;
實現呼吸燈效果是利用人眼的分辨率只能看到25幀每秒,甚至還不夠,
所以用單片機做呼吸燈是利用頻率來控制呼吸燈的呼吸時間,用占空比來控制燈的亮度
代碼如下
#include <reg52.h>
sbit LED1=P2^0;         //定義燈的位置
int PWM_Low,Clock=500;
void delay(unsigned int x) //延遲函數
{
   int i;
   for(i=0;i<x;i++);
}          
void main(void)
{
    while(1)
          {
            for(PWM_Low=Clock;PWM_Low>0;PWM_Low--) //逐漸變暗
             {
                   LED1=1;
                   delay(PWM_Low);
                   LED1=0;
                   delay(Clock-PWM_Low);
                 }
            for(PWM_Low=0;PWM_Low<Clock;PWM_Low++)        //逐漸變亮
                  {
                                LED1=1;
                                delay(PWM_Low);
                                LED1=0;
                                delay(Clock-PWM_Low);
                  }          
           }
}
如有錯誤,還望指正,新手來的


作者: 石墨清風    時間: 2019-8-3 10:33
學習了

作者: cokesu    時間: 2019-8-6 14:01
最好不要用for循環來寫,這樣的呼吸燈就真的只有呼吸燈了,可以用定時器來做
作者: 想學智能小車    時間: 2019-8-6 17:17
學習了
作者: zhuojiaju    時間: 2019-8-7 15:32
感謝分享
作者: zh68a11    時間: 2019-11-5 17:28
學習了,謝謝。
作者: 丑陋的土撥鼠    時間: 2019-11-6 17:15
cokesu 發表于 2019-8-6 14:01
最好不要用for循環來寫,這樣的呼吸燈就真的只有呼吸燈了,可以用定時器來做

用定時器該怎么做呢?
作者: xuwenwu890    時間: 2019-12-8 10:58
學習了,謝謝分享。
作者: xuwenwu890    時間: 2019-12-8 10:58
學習了。
作者: nimiaolegemi    時間: 2019-12-8 18:47
太強了呀
作者: 愿你安然    時間: 2019-12-29 19:46
cokesu 發表于 2019-8-6 14:01
最好不要用for循環來寫,這樣的呼吸燈就真的只有呼吸燈了,可以用定時器來做

學習了
作者: 我愛單片機0    時間: 2020-1-11 12:45
學到了
作者: dzbj    時間: 2020-1-12 19:53
同"板凳"

用for做循環之間就干不了別的事了 作為單片機來說不合算的 小片子還好 要是個大片子就干這么點事太浪費資源 就按你說的25幀/秒 就是每幀占用40ms左右 這40ms能干多少事啊 如果只實現呼吸燈 還不如用555搭一個

還有這么寫的呼吸燈是沒有曲率變化的 嚴格說只能叫漸亮漸暗燈 人呼吸 漸亮和漸暗的變化過程不是線性的
作者: BG2UKY    時間: 2020-1-13 15:25
#include <reg52.h>
sbit LED1=P1^0;         //定義燈的位置
int PWM_Low,Clock=420;
void delay(unsigned int x) //延遲函數
{
   int i;
   for(i=0;i<x;i++);
}           
void main(void)
{
    while(1)
          {
            for(PWM_Low=Clock;PWM_Low>0;PWM_Low--) //逐漸變暗
             {
                   LED1=0;
                   delay(PWM_Low);
                   LED1=1;
                   delay(Clock-PWM_Low);
                 }
            for(PWM_Low=0;PWM_Low<Clock;PWM_Low++)        //逐漸變亮
                  {
                                LED1=0;
                                delay(PWM_Low);
                                LED1=1;
                                delay(Clock-PWM_Low);
                  }           
           }
}
作者: 13466628313    時間: 2020-3-16 13:41
學習了。有創意。我找時間用定時器實現試試
作者: 1679079206    時間: 2020-3-16 17:36
不錯哦,原理圖可以發出來了?
作者: 余夢無秋    時間: 2020-6-2 17:38
謝謝樓主分享




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1