单片机接收DMX信号输出PWM控制一路白炽灯亮度变化,接的是光耦双向可控硅调压电路,现需一份C程序。

单片机接收DMX信号输出PWM控制一路白炽灯亮度变化,接的是光耦双向可控硅调压电路,现需一份C程序。,第1张

你好,目前用PWM控制光度的技术革新了,如果你还用光耦双向可控硅调压电路就很过时了,白炽灯可用LED的光源,电路用PWM调光的可恒流的电源如果对成本上升一些不介意,我可给你样品可联系我多谢

#include <reg52h >

#define uchar unsigned char

#define uint unsigned int

sbit s2=P3^7;

sbit s3=P3^6;

sbit fm=P2^3;

uchar pwm,num;

void delay(uint ms)

{

uchar i;

while(ms--)

{

for(i=0;i<120;i++);

}

}

void keyscan()

{

if(s2==0)

{

delay(80);

if(s2==0)

{

if(pwm<32)

{

pwm++;

delay(150);

}

else //如果大于32 蜂鸣器想

{

bee( );

}

}

}

if(s3==0)

{

delay(80);

if(s3==0)

{

if(pwm>1)

{

pwm--;

delay(50);

}

else //如果小于1 蜂鸣器想

{

bee( );

}

}

}

}

void init_t0( )

{

TMOD=0x01;

TH0=(65536-500)/256; //500ms

TL0=(65536-500)%256;

EA=1;

ET0=1;

TR0=1;

}

void t0( ) interrupt 1

{

TR0=0; //关计时器

TH0=(65536-500)/256;

TL0=(65536-500)%256;

num++;

if(num>32)

{

num=0;

}

if(num<=pwm )

{

P1=0xff;

}

else

{

P1=0x00;

}

TR0=1;

}

void main( )

{

init_t0( );

num=0;

pwm=0;

while(1)

{

keyscan();

}

}

#include<reg52h>  

//端口定义

sbit RED    =    P2^0;//红光控制端,0点亮 

sbit GREEN  =    P2^1;//绿光控制端,0点亮 

sbit BLUE   =    P2^2;//蓝光控制端,0点亮

//函数声明

void Delay(unsigned int t);  

void RGB(unsigned char R ,unsigned char G ,unsigned char B); 

//主函数

void main (void)

{   

    RED = 1 ; GREEN = 1 ; BLUE = 1 ;

    //开始时先关闭LED,当然由于单片机上电就输出 1 ,所以可不写               

    while (1)         //主循环

    {

        //7色光依次逐渐变亮

        //改变调用顺序可以改变颜色先后次序

        RGB(1,1,0);

        RGB(1,0,1);

        RGB(1,0,0);

        RGB(0,1,1);

        RGB(0,1,0);

        RGB(0,0,1);

        RGB(0,0,0);

    }

}

 

void Delay(unsigned int t)

{

 while(--t);

}

//7色光依次逐渐变亮

RGB(unsigned char R ,unsigned char G ,unsigned char B)

{

    unsigned int pwm , set = 500 ;        

    for(pwm=1;pwm<set;pwm++)

    { 

             RED    = 1;        //熄灭LED 

             GREEN  = 1;

             BLUE   = 1; 

             Delay(set-pwm);//延时长度,500次循环中从599减至1

             RED    = R;        

             GREEN  = G;

             BLUE   = B;        

             Delay(pwm);//延时长度,500次循环中从1加至599

    }

}

//改变set可以改变变化快慢

//同理你可以写出7色逐渐变暗的程序

这里的程序只是提供一个思路,你如果直接复制粘贴的话会出现格式错误

把每两行中间的空行删掉一般就可消除格式错误

如果再有什么小问题根据编译信息提示稍作修改就行

串电阻的话一般这样算:

R = [ U - U(LED) ] / I

U是LED和电阻总的电压,U(LED)是LED工作电压,I 是LED工作电流,一般10--20mA

电流大小取的适中就行了,再计算要串联的电阻值

以上就是关于单片机接收DMX信号输出PWM控制一路白炽灯亮度变化,接的是光耦双向可控硅调压电路,现需一份C程序。全部的内容,包括:单片机接收DMX信号输出PWM控制一路白炽灯亮度变化,接的是光耦双向可控硅调压电路,现需一份C程序。、想向大神求一个用pwm控制电机转速的程序,程序最好简单点,O(∩_∩)O谢谢、求助,51单片机用PWM的RGB呼吸灯程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9561823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存