51单片机 来做的PWM来无级调光程序通过光耦可控硅来控制可控硅的导通角,从而实现白炽灯亮度的变化。
#include "reg51.h"
#include "user.h"
#define uchar unsigned char
unsigned int value=100;
unsigned int del=0;
uchar value_temp=4;
uchar temp=0;
uchar code Tab[11]={0x88,0xbe,0xc4,0x94,0xb2,0x91,0x81,0xbc,0x80,0x90,0xf7};
sbit PWM_PORT=P3^1;
sbit key=P3^7;
bit lamp_enable=0;
void display(uchar dat)
{
P1=Tab[dat];
}
void timer_init()
{
TMOD=0x02;
TH0=0xff;
TL0=0xff;
PX1=1;
IT1=1;
ET0=1;
EX1=1;
EA=1;
display(10);
}
void INT_T0() interrupt 1
{
temp++;
if(temp
PWM_PORT=1;
}
else
{
PWM_PORT=0;
}
}
void INT_X1() interrupt 2
{
lamp_enable=1;
del=0;
}
void main()
{
timer_init();
while(1)
{
key=1;
if(key==0)
{
value=value+25;
value_temp++;
if(value==250)
{
value=0;
value_temp=0;
}
display(value_temp);
delay(20);
}
if(lamp_enable==0)
{
PWM_PORT=0;
display(10);
TR0=0;
}
else
{
TR0=1;
display(value_temp);
}
if(++del==40000)
{
lamp_enable=0;
del=0;
}
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』