完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
如休利用51单片机的来产生PWM波,用以控制led的亮度变化,在网上看过一些程序,有些地方不大明白,程序是这样的:
#include unsigned char cycle,pwm; ***it led=P1^0; void delay(unsigned int cnt) { while(--cnt); } main() { bit flag; TMOD=1; TH0=(65536-100)/256; TL0=(65536-100)%256; IE=0x82; TR0=1; cycle=10; while(!flag) { delay(200000); pwm++; if(pwm==10) flag=1; } while(flag) { delay(200000); pwm--; if(pwm==0) flag=0; } } void tim()interrupt 1 { unsigned char count; TH0=(65536-100)/256; TL0=(65536-100)%256; count++; if(count==pwm)////此处是什么意思呢? { led=1; } if(count==10) { count=0; if(pwm!=0)///此处又是什么意思呢? led=0; } } 感觉这个程序不是太好,因为烧到单片机观察到led虽然有亮度的变化,不过在由暗变的过程中有一个突然的跳跃,就是亮度一下子就上来了,请教高手指点迷津 |
|
相关推荐
16个回答
|
|
|
|
|
|
|
|
|
上面两所提问的意思就是保持高低电平的时间,显然这个PWM代码写的不够精炼,增加调节的复杂度。在PWM这个周期保持不变的情况下,调节高低电平的时间(时间的增加稍微趋缓一点效果更明显),这样就能达到你的要求,就跟呼吸灯一样了!
|
|
|
|
|
|
是保持高低电平的时间,不过为什么要 用这样的语句呢?count与PWM之间有什么关系吗?如果没有的话如何实现二极管的明暗的渐变过程呢? |
|
|
|
|
|
{:soso_e179:}
|
|
|
|
|
|
来 围观学习一下
|
|
|
|
|
|
{:soso_e179:}
|
|
|
|
|
|
我也不懂那个
|
|
|
|
|
|
{:soso_e100:}
|
|
|
|
|
|
很基础的呀
|
|
|
|
|
|
|
|
|
if(count==pwm)////此处是什么意思呢?这个循环中低电平时长从1累加到count(周期),下面一个也是。
突然的跳跃是因为时间调的不准,试试我改的吧。 #include unsigned char count,i; ***it led=P1^0; void delay(unsigned int i) { while(--i); } void main() { bit flag; TMOD=0x01; TH0=(65536-100)/256; TL0=(65536-100)%256; IE=0x82; TR0=1; count=100; while(!flag) { delay(200000); i++; if(i==100) flag=1; } while(flag) { delay(200000); i--; if(i==0) flag=0; } } void tim()interrupt 1 { unsigned char count; TH0=(65536-100)/256; TL0=(65536-100)%256; count++; if(count==i)////此处是什么意思呢? { led=1; } if(count==100) { count=0; if(i!=0)///此处又是什么意思呢? led=0; } } |
|
|
|
|
|
鄙人认为你可以把CYCLE的值给DELAY(),PWM无非就是高电平和低电平的时间比例逐渐在变化,那么比如P1.0=1,DALAY(CYCLE),然后把CYCLE放到循环里面,每一次减一,初值6000,感觉效果不错的
|
|
|
|
|
|
学习了学习了学习了
|
|
|
|
|
|
写的太乱,没看懂
|
|
|
|
|
|
学习了,尽管不是很懂
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
470 浏览 0 评论
532 浏览 0 评论
660 浏览 0 评论
822 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
758 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17027 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-13 03:54 , Processed in 1.001266 second(s), Total 103, Slave 86 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1584