51单片机如何做渐明渐暗流水灯

2020-01-30 13:52发布

RT,就是那种亮度渐变效果的流水灯,有什么算法或者设计思路吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
ERDTxiduoduo
1楼-- · 2020-02-01 19:20
正在学这个呢
LINER
2楼-- · 2020-02-01 19:32
你懂的
jeoo8888
3楼-- · 2020-02-01 21:33
 精彩回答 2  元偷偷看……
yao1
4楼-- · 2020-02-02 00:34
/*
学习内容:灵活控制io口输出。
程序效果:下载此程序后会看到8个led渐渐亮起来然后渐渐暗,此效果利用人眼视觉惰性,制造不同的亮度。
任何光 {MOD}都可以用红、绿、蓝三种光混合出来,所以控制红绿蓝三种led的亮度就制作出无数种颜 {MOD}。
很多led装饰产品都是由这个简单的程序变化出来的。
*/

#include<reg51.h>

sbit led_k=P1^4;//单片机引脚定义,控制8个LED的开关三极管。请看电路原理图
sbit a1=P1^0;//单片机引脚定义,此引脚控制共阴数码的一个共阴极。请看电路原理图
sbit a2=P1^1;//单片机引脚定义,此引脚控制共阴数码的一个共阴极。请看电路原理图
sbit a3=P1^2;//单片机引脚定义,此引脚控制共阴数码的一个共阴极。请看电路原理图
sbit a4=P1^3;//单片机引脚定义,此引脚控制共阴数码的一个共阴极。请看电路原理图
void delay10us(unsigned int i);/*延时函数*/

main()
{
    unsigned int i=0;
    led_k=1;/*打开6个led的总开关*/
    a1=a2=a3=a4=0;/*关闭数码管,否则数码管会拉低P0口电平,导致流水灯不亮*/
   //P0=0X01;
    delay10us(10);
    while(1)
    {
        for(i=0;i<500;i++)//渐亮
        {
           P0=255;//         LED亮
           delay10us(i);// led亮时间
           P0=0;             //led灭
           delay10us(500-i); //led灭时间
        }
       for(i=0;i<500;i++)//渐灭。原理与上面的渐亮相同
       {
           P0=0;                  
           delay10us(i);       
           P0=255;          
           delay10us(500-i);         
       }
  
    }

}

void delay10us(unsigned int i)
{
  unsigned int j;
  for(;i>0;i--);
   // for(j=1;j>0;j--);
}

guo407214944
5楼-- · 2020-02-02 06:03
很不错的资源,学习了
cooper_
6楼-- · 2020-02-02 09:28
还可以这样啊,厉害,我以为只能DAC呢,Mark!

一周热门 更多>