1 / 17
文档名称:

水滴流水灯程序.doc

格式:doc   大小:332KB   页数:17页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

水滴流水灯程序.doc

上传人:63229029 2017/6/12 文件大小:332 KB

下载得到文件列表

水滴流水灯程序.doc

文档介绍

文档介绍:高级流水灯-- 水滴效果(渐变带拖尾效果)实现和讲解一说就是错(楼主) 2012-11-21 18:23:14 只看该作者 11347 | 204 倒序浏览简介学****嵌入式第一个例子通常都是控制一个 LED 亮灭,然后是花样繁多的流水灯, 但不管灯的花样如何变化,单个 LED 的亮度没有变化,只有亮、灭两个状态,本章我们实现如何控制 LED 的亮度。 1什么是 PWM 脉冲宽度调制( Pulse Width Modulation ,简称 PWM ),是利用微处理器的数字输出来对模拟电路进行控制的一种技术。在本章的应用中可以认为 PWM 就是一种方波。比如图 1: (原文件名:) 图1方波是周期为 10ms ,占空比为 60% 的PWM 。占空比:高电平在一个周期之内所占的时间比率。 2硬件设计在例说 51单片机的第三章,我们讲过如何控制开发板上 LED 的亮灭。首先译码器输出端 LEDS6 为低,T10 导通,给8个LED 供电,然后通过缓冲器 8个输出端 BD0~BD7 的控制 LED 的亮灭(低亮高灭)。(原文件名:) 图2LED 硬件连接如果 BD口输出高低不断变化,则 LED 会闪烁;如果这种高低电平变化非常快, 由于人的视觉暂留现象, LED 就会出现不同的亮度。 3软件设计 PWM 能否控制亮度下面我们就用实践验证 PWM 是否能够控制 LED 的亮度,测试代码如下: 程序清单 L1:验证 PWM 能否控制 LED 的亮度 1#include 2#include "" 3#include "" 456void main(void) 7{8u8i=0; 910//使能独立 LED 的供电,即 LEDS6 输出低电平 11LEDEN =0; 12ADDR0 =0; 13ADDR1 =1; 14ADDR2 =1; 15ADDR3 =1; 1617//第一个 LED 亮 18P0=0xFE; 1920while(1) 21{ 22for(i=0; i<250; i++) 23{ 24if(i<10) 25{ 26P 0&=0xFD; //第二个灯亮 27} 28else 29{ 30P 0|=0x02; //第二个灯灭 31} 32} 33} 34}L1(22-32) :这段代码实现 输出占空比为 96% 的方波,而 恒为低。 输出如图 3所示(受纸张限制,图中高低电平长度比例和实际有偏差)。(原文件名:) 图3 下载验证:从开发板上可以看到运行效果,D1比D2亮。(这里说明一点:当P0 输出低电平时, LED 亮,所以, PWM 的占空比越小越亮)。 产生 8个亮度级别 节的例子证实了我们的设想, PWM 可控制 LED 的亮度,下面我们设计几组占空比不同的 PWM ,看看对 LED 亮度的控制效果。代码如下: 程序清单 L2:不同占空比对 LED 亮度的控制 1#include 2#include "" 3#include "" 456//亮度级别表 7code u8LightLevel[8]={0,1,2,4,8,16,32,64}; 89void main(void) 10{11u8i=0; 12u8j=0; 13u8k=0; 14u8temp =0; 1516//使能独立 LED 的供电,即 LEDS6 输出低电平 17LEDEN =0; 18ADDR0 =0; 19ADDR1 =1; 20ADDR2 =1; 21ADDR3 =1; 2223//开始全灭 24P0=0xFF; 2526while(1) 27{ 28//P0 端口输出 8组占空比不同的PWM 29for(i=0; i<64; i++) 30{ 31for(j=0; j<8; j++) 32{ 33i f(LightLevel[j] <=i) 34{ 35temp |=(1<<j); 36} 37e lse 38{ 39temp &=~(1<<j); 40} 41} 4243P0=temp; 44} 45} 46}L2(29-45). 此段程序是让 P0口输出 8组占空比不同的 PWM ,如图 4: (原文件名:) 图4 下载验证:从开发板上可以看到运行效果,从 D1到D8的亮度逐渐增大。 水滴下落效果根据 PWM 可控制 LED 亮度的原理,我们用 8个LED 实现水滴下落的效果。第一步, 水滴逐渐变大,用 D1从暗变亮模拟;第二步,水滴下落,带有拖尾效果, LED 逐个亮,移动速度加快,且越靠前的 LED 亮度越大