标题:
如何用51单片机实现呼吸灯(2秒变亮,4秒变暗)
[打印本页]
作者:
武。。。。
时间:
2020-10-4 15:56
标题:
如何用51单片机实现呼吸灯(2秒变亮,4秒变暗)
是利用占空比吗?比如我把初始占空比设为50%,每次增加2%,到90%时,再每次减少1%,到50%.这样可行吗?还有pwm的周期一般设为多少合适。再者,利用proteus如何看到呼吸灯的效果。初学51,求各路大佬赐教!
作者:
大漠游民
时间:
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秒,你看看吧!
作者:
上进求学
时间:
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里面的调试器,设置断点执行
作者:
长风007
时间:
2020-10-5 20:43
有多种方法的呀!占空比是其中一种,频率在nHz比较好。看得清楚一些。二三楼的方法也是可取的。楼主你试一下。多调试就OK了。
作者:
武。。。。
时间:
2020-10-5 21:40
长风007 发表于 2020-10-5 20:43
有多种方法的呀!占空比是其中一种,频率在nHz比较好。看得清楚一些。二三楼的方法也是可取的。楼主你试一 ...
嗯,nHz大概是多少
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1