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