完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include #define D1 P1_0 #define SW1 P1_2 void Init_Port() { P1SEL &= ~0X03; P1DIR |= 0X03; P1 &= ~0X03; } void delay(int time) { while(time--); } void main() { Init_Port(); int i,j=1000; int flag = 1; while(1) { if(flag) { D1 = 1; delay(i++); D1 = 0; delay(j--); if(j == 0) flag = 0; } else { D1 = 1; delay(i--); D1 = 0; delay(j++); if(i == 0) flag = 1; } } } 这样就能实现灯逐渐变量再逐渐变暗的效果并循环 这是用延迟函数实现简单的PWM,也就是占空比,调节在一个周期中亮灭所占不同的比例也就是占空比来实现呼吸灯 不同占空比可以使LED产生不同的亮度。 占空比就是指在一个周期内, 信号处于高电平的时间占据整个信号周期的百分比, 例如上图中所示脉冲的占空比就是25%。 PWM波可以由GPIO口产生,通过GPIO口输出高电平,延时,输出低电平,延时来产生PWM波。 还可以使用定时器,利用比较寄存器形成PWM。 本实验就是利用PWM信号这一特性控制LED产生不同亮度,从而实现呼吸灯的效果。 PWM信号应用场景 我们经常见到的就是交流调光电路,高电平占多一点,也就是占空比大一点亮度就亮一点,占空比小一点亮度就没有那么亮,前提是PWM的频率要大于我们人眼识别频率,要不然会出现闪烁现象。 除了在调光电路应用,还有在直流斩波电路、蜂鸣器驱动、电机驱动、逆变电路、加湿机雾化量等都会有应用。 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:09 , Processed in 1.750485 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号