极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 61460|回复: 19

STC学习笔记1-简易呼吸灯的制作

[复制链接]
发表于 2012-2-19 21:50:08 | 显示全部楼层 |阅读模式
STC学习笔记1-简易呼吸灯的制作

介绍:只需要三个元件做一个简易的呼吸灯,可以随意调整呼吸的时间和呼/吸时间比。
比模拟电路搭的呼吸灯简洁并且成本低很多,但是可控性绝对比模拟电路制作的好。

材料:
STC15F104E单片机一片
100Ω电阻一个
LED一个,颜色随意


还有必备的一个STC单片机程序下载器,这个可以参考官网的MAX232串口下载器


或者购买的成品USB下载线。
需要引出四个引脚VCC,TX,RX,GND即可。

电路原理图:


其中P3.0和P3.1接下载线下载。虽然可以在工作状态下载,不过避免干扰,我们尽量少使用P3.0和P3.1引脚。

编写以下程序:
有两个版本,一个是单纯的渐亮渐灭;第二个是亮灭时间比不同的,更接近实际的呼吸曲线。

版本1,渐亮渐灭时间一样,但是肉眼看上去效果不好:

[pre lang="cpp" line="1"]#include <REG51.h>
sbit Pin = P3 ^ 3;
int bright = 0;
void Delay10us(unsigned int a)
{
    unsigned int i;
    while( a-- != 0)
    {
        for(i = 0; i < 6; i++) {};
    }
}
main()
{
    int i;
        bit mark=0;
    while(1)
    {
        if(bright == 255||bright==0) mark=!mark;
                (mark==1)?(bright++):(bright--);
        for(i = 0; i < 255; i++)
        {
            if(i < bright)
            {
                Pin = 0;
                Delay10us(2);
            }
            else
            {
                Pin = 1;
                Delay10us(2);
            }
        }
    }
}[/code]

版本2,渐亮渐灭时间不一致,但是视觉效果比较好(亮灭时间比9:4,灭到尽的时候等待500ms。):

[pre lang="cpp" line="1"]/*
STC15F104E 呼吸灯
时钟频率5.004MHz
灯在P3.3引脚
By:Ansifa 2012-1-25
*/
#include <REG51.h>
sbit Pin = P3 ^ 3;
void Delay(unsigned int a)
{
    while( a-- != 0)
    {
    }
}
void Delay2(unsigned long a)
{
    while( a-- != 0)
    {
    }
}
main()
{
    int i, delaytime;
    bit mark = 0;
    int bright = 0;
    while(1)
    {
        if(bright == 0) Delay2(50000);
        if(bright == 255 || bright == 0) mark = !mark;
        if(mark == 1)
        {
            bright++;
            delaytime = 9;
        }
        else
        {
            bright--;
            delaytime = 4;
        }


        for(i = 0; i < 255; i++)
        {
            if(i < bright)
            {
                Pin = 0;
                Delay(delaytime);
            }
            else
            {
                Pin = 1;
                Delay(delaytime);
            }
        }
    }
}[/code]

上述程序Keil uVersion2工程文件:
(keil下载地址:http://www.doyoung.net/DOC/KeilC51uV2_PS.zip)


用Keil uVersion2编辑编译。


用STC-ISP下载程序下载程序。
STCISP下载地址:
http://www.stcmcu.com/datasheet/ ... -isp-15xx-v6.07.exe

注意,是先按STC-ISP软件上的按钮,然后关闭单片机电源,再打开,才能进行开始下载:
如果使用USB下载线下载,但是软件一直卡死在等待连接单片机的话,先检查TX,RX有没接反。还有单片机有没电源。
然后降低下载软件波特率:“最低波特率”=1200和“最高波特率”=1200,一般就能下载,如果不行的话,要考虑换一个下载线。
上图的MAX232串口下载线是最稳定的。在任何速率都能使用。



效果视频:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-2-20 12:03:53 | 显示全部楼层
{:soso_e102:}好详细,我也买点零件回来玩玩
回复 支持 反对

使用道具 举报

发表于 2012-5-13 12:35:14 | 显示全部楼层
看了视频才明白你说的呼吸灯是什么,呵呵
回复 支持 反对

使用道具 举报

发表于 2012-5-13 15:30:30 | 显示全部楼层
同样是8p的处理器,用attiny13实现起来更容易些
回复 支持 反对

使用道具 举报

发表于 2012-6-25 14:34:12 | 显示全部楼层
注释里有个小错误.  另外 isp,用的pl2303,貌似只有4.88版本才能下载,波特率必须是4800.
外部中断,目前一直有问题,这个破片子!!!
回复 支持 反对

使用道具 举报

发表于 2012-8-2 20:44:40 | 显示全部楼层
很好玩,我也回来做一下实验,哈哈!
回复 支持 反对

使用道具 举报

发表于 2012-10-22 21:26:42 | 显示全部楼层
抽时间我也试试
回复 支持 反对

使用道具 举报

发表于 2012-10-31 10:46:55 | 显示全部楼层
应该设计一个实际应用。单纯这个一个灯亮来亮去也没意思。
比如可以用在充电器上面。充电饱和灯颜色稳定下来,或者直接急促闪烁也可以。充电过程即形成呼吸效果。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-31 15:44:04 | 显示全部楼层
李牧林 发表于 2012-10-31 10:46
应该设计一个实际应用。单纯这个一个灯亮来亮去也没意思。
比如可以用在充电器上面。充电饱和灯颜色稳定下 ...

这个当然不能单独做一个玩意,做个电源指示灯还好。充电器的话,调整一下代码用几种闪动速度切换就行
回复 支持 反对

使用道具 举报

发表于 2012-11-24 17:33:05 | 显示全部楼层
咱也试试看
回复 支持 反对

使用道具 举报

发表于 2013-2-15 09:23:31 | 显示全部楼层
很詳細的說明
試玩一下啦!!
回复 支持 反对

使用道具 举报

发表于 2014-1-1 14:04:01 | 显示全部楼层
做的挺好的
回复 支持 反对

使用道具 举报

发表于 2014-1-7 20:30:02 | 显示全部楼层
stc就没必要在这得瑟了吧
回复 支持 反对

使用道具 举报

发表于 2014-2-25 13:09:43 | 显示全部楼层
在STC-ISP软件里可以修改单片机运行频率,不能太高,我试过,挺方便的,下载时波特率的确不能高
回复 支持 反对

使用道具 举报

发表于 2014-3-29 23:00:21 | 显示全部楼层
这个比arduino还是要简单多了,学习一下。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 01:52 , Processed in 0.051830 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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