找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2031|回复: 5
收起左侧

c51单片机呼吸流水灯,结果只有流水没有呼吸 求帮助

[复制链接]
ID:581062 发表于 2019-7-9 16:54 | 显示全部楼层 |阅读模式
1黑币
为啥用PWM。调光的呼吸灯的程序变成流水灯程序的一个函数调用的形式。结果只有流水没有呼吸。
求救大佬:'(
#include"reg52.h"
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;


sbit led1=P2;
int PWM_Low,Clock=500;
#define led P2
void delay(u16 a)
{while(a--);
}


           void main1(int t)
           {        
                           
                             for(PWM_Low=Clock;PWM_Low>0;PWM_Low--)
                                  {t=1;
                                delay(PWM_Low);
                                {int b;
for (b=0;b<PWM_Low;b++);}
                                t=0;
                                delay(Clock-PWM_Low);
                                        {int b;
for (b=0;b<Clock-PWM_Low;b++);}
        
                                }        }
                                 
void main()
{u8 i,t,t1,t2;
t1=0xfe;
t2=0x7f;
for(i=0;i<4;i++)
{t=t1&t2;
led=t;
main1(t);
delay(50000);

t1=_crol_(t1,1);
t2=_cror_(t2,1);}  }


回复

使用道具 举报

ID:96682 发表于 2019-7-9 19:58 | 显示全部楼层
两者没协调好
回复

使用道具 举报

ID:332444 发表于 2019-7-9 20:00 | 显示全部楼层
既然流水灯是对的了,把流水灯注释掉,调试你的呼吸灯功能。
回复

使用道具 举报

ID:404990 发表于 2019-7-10 11:16 | 显示全部楼层
没有呼吸是不是你的消隐有问题
回复

使用道具 举报

ID:205483 发表于 2019-7-11 00:31 | 显示全部楼层
看你这个问题太多了
....
void main1(int t)
{        
                           for(PWM_Low=Clock;PWM_Low>0;PWM_Low--)   
                //你这个for循环会  delay(PWM_Low-1) + delay(PWM_Low-2)+.......+delay(0); 这么多次 ,下面这个for也是一样的
                                  {t=1;                                // 这个t=1没有意义,
                                                                          //让LED亮PWM_Low的时间该改成,led=t;
                                delay(PWM_Low);                //可以改成delay(100)
                                {int b;
                          for (b=0;b<PWM_Low;b++);}
                                t=0;                                    //同上面问题一样,改成,led=0xff; 都不亮
                                delay(Clock-PWM_Low);        //同上
                                        {int b;
for (b=0;b<Clock-PWM_Low;b++);}
        
                                }        }
//还有就是你  main1  这个函数的写法达不到PWM的效果,你再去查一查PWM怎样的。而且你PWM_Low的值也没有变,亮度也不会变,要么明,要么暗


                                 
void main()
{u8 i,t,t1,t2;
t1=0xfe;
t2=0x7f;
for(i=0;i<4;i++)
{t=t1&t2;
led=t;                    //要改成呼吸灯,这个要删除
main1(t);                //这个函数整体都要改。
delay(50000);

t1=_crol_(t1,1);
t2=_cror_(t2,1);}  }

回复

使用道具 举报

ID:582077 发表于 2019-7-11 09:42 | 显示全部楼层
int ledPin=9;
void setup(){
  }
  void loop(){
    for(int fadeValue=0; fadeValue<=255;fadeValue+=5){
      analogWrite(ledPin,fadeValue);
      delay(30);
      }
      for(int fadeValue=255;fadeValue>=0;fadeValue-=5){
        analogWrite(ledPin,fadeValue);
        delay(30);
       }
    }
给你个参考,这是基于Arduino的呼吸灯。自己改改。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表