找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3456|回复: 1
打印 上一主题 下一主题
收起左侧

呼吸灯-一个LED灯加单片机最小系统

[复制链接]
跳转到指定楼层
楼主
ID:56331 发表于 2016-8-2 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个LED灯加单片机最小系统,就能组成一个呼吸灯
我用的是P3.4口,可以自己任意调换,建议用STC15F104W,一个是便宜另外一个原因就是小巧,精细。
用89系列做的话占地太大。
这个可以更改成一个指示灯,可以将程序做成一个函数加入到其他程序中,用来指示运行情况,例如,正常的时候是均匀闪,非正常的时候可以用呼吸灯快闪来表达程序运行问题。


#include<reg52.h>
#define N 2 //亮暗的速率
#define T 2000 //PWM的周期                          15F104W运行速度比89系类快           1T
sbit led=P3^4;
void pwm(int x)
{
         while(x--);
}
void main()
{
         int t=0;
         char f=0;//亮暗标志,0为亮
         while(1)
         {
                  led=0;
                  pwm(t);//Toff,亮的时间

                 led=1;
                  
                pwm(T-t);//Ton,暗的时间
                  
                if(!f) t+=N+4;//亮速率较快,模拟呼吸
                  else t-=N+2;//暗速率较慢
                 if(t>T) {f=1;t=T;}//超过最大值时,返回最大值,标志为暗
                 if(t<0) {f=0;t=0;}//超过最小值时,返回最小值,标志为亮
         }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:56331 发表于 2016-8-2 14:22 | 只看该作者
#include<reg52.h>
#define N 2 //亮暗的速率
#define T 2000 //PWM的周期                          15F104W运行速度比89系类快           1T
sbit led=P3^4;
void pwm(int x)
{
        while(x--);
}
void main()
{
        int t=0;
        char f=0;//亮暗标志,0为亮
        while(1)
        {
                  led=0;
                  pwm(t);//Toff,亮的时间

                led=1;
                  
                pwm(T-t);//Ton,暗的时间
                  
                if(!f) t+=N+4;//亮速率较快,模拟呼吸
                  else t-=N+2;//暗速率较慢
                if(t>T) {f=1;t=T;}//超过最大值时,返回最大值,标志为暗
                if(t<0) {f=0;t=0;}//超过最小值时,返回最小值,标志为亮
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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