www.3112.net > 52单片机呼吸灯程序

52单片机呼吸灯程序

可以自己制作延时并加上循环已达到呼吸灯的效果, 或者可以用PWM脉冲,设置好参数后达到想要的效果,具体先了解一下单片机编程吧.

LED使用三极管驱动,NPN或者PNP的都可以.使用定时器,输出PWM波形,逐渐改变输出PWM的占空比的值.

先说呼吸灯,这个本质上是LED的亮度控制.一般是用PWM方式控制LED亮度,PWM的输出按照一定的规律变化,就可以做出呼吸灯的效果.再说30个LED的控制,如果要简单点做,30个LED可以串起来串一个电阻,接高点的电源电压,30

#include <reg51.h>#define unchar unsigned char#define unint unsigned int#define led P1 void delay(unchar l); void main() { unchar i,j,x,y; i=0; j=255; x=255; y=255; while(1) { while(x>0) {x--; led =0x00; delay(i); led =0xff;

#include<reg51.h> /*-----------定义单片机引脚-----*/ sbit LED0=P1^0; sbit LED1=P1^1; sbit LED2=P1^2; void Delay(unsigned int t); //函数声明 unsigned int z,y; void main (void)//主函数 { unsigned int CYCLE=500,PWM_LOW=0;//定义周期并赋值

呼吸=亮度变化,就是说控制供给LED的电压.用DAC芯片或者直接用单片机引脚做PWM.

呼吸灯的程序:/**************************************************************************** 功能:LED灯慢慢变暗,再慢慢变亮. 用定时器模拟的PWM调制.单片机:AT89S52 ******************************************************************************/ #

#include&lt;reg52.h&gt;#define uint8 unsigned char #define uint16 unsigned intuint8 orc,num;sbit PWM_out = P1^1;void pwm_init(){TMOD = 0x02;TH0 = 0x9c;TL0 = 0x9c;ET0 = 1;EA = 1;TR0 = 1;}void pwm_set(uint8 pwm){orc = pwm;}void delay(){

给你个思路吧,用调制的方法,灯在高速闪烁人眼是看不出来的,你每个循环给闪烁的熄灭时间加1,灯就会慢慢变暗,在设置熄灭时间加到一定程度就开始减一,就会渐渐变亮了,如此循环就可以了

int runlinght(){int i,j;j=1;for(i=0;i<8;i++){P[i]=(j<<i); //假设输出高点亮timedelay();};时间的问题,这里你只要在延时函数里解决就OK了,你在主函数里面计算调用点灯函数的次数,再用这个标志去改变延时函数的参数.

网站地图

All rights reserved Powered by www.3112.net

copyright ©right 2010-2021。
www.3112.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com