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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3574|回復: 4
打印 上一主題 下一主題
收起左側

如何用51單片機實現呼吸燈(2秒變亮,4秒變暗)

[復制鏈接]
跳轉到指定樓層
樓主
ID:613250 發表于 2020-10-4 15:56 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
是利用占空比嗎?比如我把初始占空比設為50%,每次增加2%,到90%時,再每次減少1%,到50%.這樣可行嗎?還有pwm的周期一般設為多少合適。再者,利用proteus如何看到呼吸燈的效果。初學51,求各路大佬賜教!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:138956 發表于 2020-10-4 18:50 | 只看該作者

//包含該文件可以使用_nop_()函數
#include <intrins.h>

unsigned int Num=0;         //聲明遞增 遞減變量
unsigned int Clock=3000;  //聲明變量 這個變量就是肉眼看到的變快變慢的參數

/***********************************************
函數名稱:Delay_us
功    能:
入口參數:us:延時
返 回 值:無        
備    注:內部時鐘:24MHz           
************************************************/
void Delay_us(unsigned int i) //這個延時就是PWM的頻率了 太大眼睛能看到閃來閃去
{
        for(;i>0;i--)               
                _nop_();        
}
/***********************************************
函數名稱:husi_led
功    能:呼吸燈
入口參數:us:延時數量
返 回 值:無        
備    注:
************************************************/
void husi_led(void)
{
while(1)
   {
      for(Num=Clock;Num>0;Num--) //led逐漸變暗
          {                        
       P05=1;                       //測試LED燈                        
       Delay_us(Num);         //3000慢慢減 慢慢變暗
       P05=0;                       //測試LED燈                                         
       Delay_us(Clock-Num);     
          }                                       
       P05=0;                  //測試LED燈
//**************************************//                                       
      for(Num=0;Num<Clock;Num++)  //led逐漸變亮
         {
       P05=1;                     //測試LED燈
       Delay_us(Num);       //0慢慢加 慢慢變亮
       P05=0;                     //測試LED燈            
       Delay_us(Clock-Num);                                                   
         }                                       
       P05=1;                    //測試LED燈
         }
}
大致是變亮3秒,變暗3秒,你看看吧!
回復

使用道具 舉報

板凳
ID:825447 發表于 2020-10-4 21:28 | 只看該作者
你在延時函數上稍加改動即可
聲明延時函數void delay(uint)
然后主函數
void main()
{}
在主函數里加上延時函數delay(m)//此處m值你可以直接改,m值改變延時用的時間也隨之改變了
最后再寫下具體的延時函數
void delay(uint m)
{
  uint x , y ;
  for(x = m ; x > 0 ; x-- )
     for(y = 110 ; y > 0 ; y--);
}
想要具體調時間可以用keil里面的調試器,設置斷點執行
回復

使用道具 舉報

地板
ID:337139 發表于 2020-10-5 20:43 | 只看該作者
有多種方法的呀!占空比是其中一種,頻率在nHz比較好。看得清楚一些。二三樓的方法也是可取的。樓主你試一下。多調試就OK了。
回復

使用道具 舉報

5#
ID:613250 發表于 2020-10-5 21:40 | 只看該作者
長風007 發表于 2020-10-5 20:43
有多種方法的呀!占空比是其中一種,頻率在nHz比較好。看得清楚一些。二三樓的方法也是可取的。樓主你試一 ...

嗯,nHz大概是多少
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表