STC学习笔记1-简易呼吸灯的制作
STC学习笔记1-简易呼吸灯的制作介绍:只需要三个元件做一个简易的呼吸灯,可以随意调整呼吸的时间和呼/吸时间比。
比模拟电路搭的呼吸灯简洁并且成本低很多,但是可控性绝对比模拟电路制作的好。
材料:
STC15F104E单片机一片
100Ω电阻一个
LED一个,颜色随意
还有必备的一个STC单片机程序下载器,这个可以参考官网的MAX232串口下载器
或者购买的成品USB下载线。
需要引出四个引脚VCC,TX,RX,GND即可。
电路原理图:
其中P3.0和P3.1接下载线下载。虽然可以在工作状态下载,不过避免干扰,我们尽量少使用P3.0和P3.1引脚。
编写以下程序:
有两个版本,一个是单纯的渐亮渐灭;第二个是亮灭时间比不同的,更接近实际的呼吸曲线。
版本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);
}
}
}
}
版本2,渐亮渐灭时间不一致,但是视觉效果比较好(亮灭时间比9:4,灭到尽的时候等待500ms。):
/*
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);
}
}
}
}
上述程序Keil uVersion2工程文件:
(keil下载地址:http://www.doyoung.net/DOC/KeilC51uV2_PS.zip)
用Keil uVersion2编辑编译。
用STC-ISP下载程序下载程序。
STCISP下载地址:
http://www.stcmcu.com/datasheet/stc/STC-ISP-V6.00/stc-isp-15xx-v6.07.exe
注意,是先按STC-ISP软件上的按钮,然后关闭单片机电源,再打开,才能进行开始下载:
如果使用USB下载线下载,但是软件一直卡死在等待连接单片机的话,先检查TX,RX有没接反。还有单片机有没电源。
然后降低下载软件波特率:“最低波特率”=1200和“最高波特率”=1200,一般就能下载,如果不行的话,要考虑换一个下载线。
上图的MAX232串口下载线是最稳定的。在任何速率都能使用。
效果视频:
http://player.youku.com/player.php/sid/XMzU0MzI1NzQ0/v.swf {:soso_e102:}好详细,我也买点零件回来玩玩 看了视频才明白你说的呼吸灯是什么,呵呵 同样是8p的处理器,用attiny13实现起来更容易些 注释里有个小错误.另外 isp,用的pl2303,貌似只有4.88版本才能下载,波特率必须是4800.
外部中断,目前一直有问题,这个破片子!!! 很好玩,我也回来做一下实验,哈哈! 抽时间我也试试 应该设计一个实际应用。单纯这个一个灯亮来亮去也没意思。
比如可以用在充电器上面。充电饱和灯颜色稳定下来,或者直接急促闪烁也可以。充电过程即形成呼吸效果。 李牧林 发表于 2012-10-31 10:46 static/image/common/back.gif
应该设计一个实际应用。单纯这个一个灯亮来亮去也没意思。
比如可以用在充电器上面。充电饱和灯颜色稳定下 ...
这个当然不能单独做一个玩意,做个电源指示灯还好。充电器的话,调整一下代码用几种闪动速度切换就行 咱也试试看:P 很詳細的說明
試玩一下啦!! 做的挺好的 stc就没必要在这得瑟了吧 在STC-ISP软件里可以修改单片机运行频率,不能太高,我试过,挺方便的,下载时波特率的确不能高 这个比arduino还是要简单多了,学习一下。
页:
[1]
2