电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

51单片机led水滴效果PWM波(渐变带拖尾效果)

51单片机led水滴效果PWM波(渐变带拖尾效果)_第1页
1/16
51单片机led水滴效果PWM波(渐变带拖尾效果)_第2页
2/16
51单片机led水滴效果PWM波(渐变带拖尾效果)_第3页
3/16
51 单片机led 水滴效果(渐变带拖尾效果)实现和讲解 简介 学习嵌入式第一个例子通常都是控制一个LED亮灭,然后是花样繁多的流水灯,但不管灯的花样如何变化,单个LED的亮度没有变化,只有亮、灭两个状态,本章我们实现如何控制LED的亮度。 1 什么是PWM 脉冲宽度调制(Pulse Width Modulation,简称 PWM),是利用微处理器的数字输出来对模拟电路进行控制的一种技术。 在本章的应用中可以认为 PWM就是一种方波。比如图 1: 是周期为 10ms,占空比为 60%的PWM。 占空比:高电平在一个周期之内所占的时间比率。 2 硬件设计 在例说 51单片机的第三章,我们讲过如何控制开发板上 LED的亮灭。首先译码器输出端 LEDS6为低,T10导通,给 8个LED供电,然后通过缓冲器 8个输出端BD0~BD7的控制LED的亮灭(低亮高灭)。 如果 BD口输出高低不断变化,则 LED会闪烁;如果这种高低电平变化非常快,由于人的视觉暂留现象,LED就会出现不同的亮度。 3 软件设计 3.1 PWM能否控制亮度 下面我们就用实践验证 PWM是否能够控制LED的亮度,测试代码如下: 程序清单 L1: 验证 PWM能否控制LED的亮度 1 #include 2 #include "my_type.h" 3 #include "hw_config.h" 4 5 6 void main(void) 7 { 8 u8 i = 0; 9 10 //使能独立 LED的供电,即 LEDS6输出低电平 11 LEDEN = 0; 12 ADDR0 = 0; 13 ADDR1 = 1; 14 ADDR2 = 1; 15 ADDR3 = 1; 16 17 //第一个LED亮 18 P0 = 0xFE; 19 20 while(1) 21 { 22 for(i=0; i<250; i++) 23 { 24 if(i<10) 25 { 26 P0 &= 0xFD; //第二个灯亮 27 } 28 else 29 { 30 P0 |= 0x02; //第二个灯灭 31 } 32 } 33 } 34 } L1(22-32):这段代码实现P0.1输出占空比为96%的方波,而P0.0恒为低。 P0.1输出如图 3所示(受纸张限制,图中高低电平长度比例和实际有偏差)。 下载验证:从开发板上可以看到运行效果,D1比D2亮。(这里说明一点:当 P0输出低电平时,LED亮,所以,PWM的占空比越小越亮)。 3.2 产生 8个亮度级别 3.1节的例子证实了我们的设想,PWM可控制 LED的亮度,下面我们设计几组占空比不同的PWM,看看对 LED亮度的控制效果。代码如下: 程序清单 L2:不同占空比对 LED亮度的控制 1 #include 2 #include "hw_config.h" 3 #include "my_type.h" 4 5 6 //亮度...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

51单片机led水滴效果PWM波(渐变带拖尾效果)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部