怎样用8051单片机实现LED灯光亮度的10级调节,每按一次,LED亮度增大一级。(PWM调光)请附上程序,谢谢

 我来答
百度网友9789b5dd8
2012-08-05 · TA获得超过521个赞
知道小有建树答主
回答量:863
采纳率:0%
帮助的人:228万
展开全部
咱空比调节. 首先确定你的控制周期.比如1s,按照10级别可调,分为1-10 .1级的意思是
亮100ms 暗900ms,(1s也就是1000ms),也就是占空比为10%,
2级,20%,亮200ms,暗800ms,
......
同理9级, 亮900ms,暗100ms;
10级,亮1000ms,暗0ms;
写出程序很简单,
点亮程序
while(1)
{
LED = ON;
_delay_ms( ON_ms);
LED = OFF;
_delay_ms(OFF_MS);
}
设置程序;
#define ADD 0
#define DEC 1
void tune_led( u08 add_or_dec )
{
if( add_or_dec == ADD )
{
ON_MS + = 100;//每加一次递进100ms,最高1000ms
if( ON_MS >=1000)

ON_MS =1000;
OFF_MS = 1000- ON_MS;
}
else
{
if( ON_MS >=100 )

{
ON_MS = ON_MS -100;

}

OFF_MS =1000-ON_MS;
}

,需要调节时,可以把此函数在按键处理或其他事件处理中调用.
1000ms的周期只是一种举例,根据实际需要可以调节 根据显示的现实性,可以改到50-20ms左右,
防止产生闪烁,
如果改用单片机的硬件pwm 那就更加简单了
xiansong80
2012-07-27 · 超过12用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:31.6万
展开全部
我也在想这个问题,我想的是4个按键控制的,2个按键控制速度,2个按键在当前速度控制震动。
我的都解决了,呵呵,感谢大家的支持,虽然是我独立解决的问题!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式