标题:
用STC89C52单片机制作呼吸灯 附代码思路与实验原理
[打印本页]
作者:
金华千迹落竹
时间:
2020-11-2 21:37
标题:
用STC89C52单片机制作呼吸灯 附代码思路与实验原理
一、实验原理
我们在做呼吸灯的时候,我们首先得了解呼吸灯的原理,我们得知道我们电压做的功,我们首先看张图
51hei图片20201102205137.jpg
(3.27 MB, 下载次数: 72)
下载附件
2020-11-2 21:07 上传
这张图是自己手工画的,有点不够规范,就像第一个信号一样,间隔大概一样,有点高数知识的师兄都知道连续的,那么他的积分就是他所做的功,也可以这样理解,我们做得功就等于(W=UIt),所以我们还是积分比较好理解,当我们LED的引脚是高电平时,我们观察的亮度是最亮的,这是因为做的功是全部,这时候我们可以比较这两条线,上面的线比较平均,大概就是50%左右的样子,我们行容这种东西叫做占空比用q表示,q=高电平时间/周期时间(高电平时间指的是一个周期里面的)相对于下面这条,一开始我们我们看到高电平时间比较短,占空比比较小,(在这里说明一下,我用的单片机是3.3v——0v就是说单片机低电平“0”是点亮)所以这个实验现象是慢慢的变暗,因为做的功多,占空比比较大,如果占空比达到了100%,单片机的LED则会熄灭/。
二、代码思路
我们在了解PWM的工作原理,我们可以简单的做一个呼吸灯,我们首先得定义一个周期,然后调节占空比就能达到我们想要的结果,我们可以用延时函数(delay)和for循环来达目的。
三、实验源码
四、我们但可以用延时函数,还可以用定时器来设置占空比,时间控制的更合理,难度高的PWM还是用定时器比较好。。写的不太好,如果有错误,请批评,大家多交流。
单片机源程序如下:
/***************************************************************************************************
笔者自己用的是普中的单片机,因为LED引脚在P2上面,个人需要根据自己说的单片机自己设定,经自己测试,当周期是400时候
亮度刚好,单片机的晶振用的12MHz
***************************************************************************************************/
#include "reg52.h"
sbit LED=P2^2;
/****************************************
函数名称:void delay(unsigned int n)
函数功能:延时函数
输入参数:n
输出参数:无
****************************************/
void delay(unsigned int n)
{
while(n--);
}
void main()
{
unsigned int CYCLE=400,LOW=0;
while(1)
{
delay(5000);//延时一下
for(LOW=1;LOW<CYCLE;LOW++)//从灭到亮
{ LED=0;
delay(LOW);
LED=1;
delay(CYCLE-LOW);
}
//从亮到灭
for(LOW=CYCLE-1;LOW>0;LOW--)
{ LED=0;
delay(LOW);
LED=1;
delay(CYCLE-LOW);
}
}
}
复制代码
附上源码hex:
LED.zip
(22.52 KB, 下载次数: 30)
2020-11-2 21:37 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1