白炽灯可控硅调光程序(亲测)

weixin_44550148 2019-01-16 10:06:35



#include "STC15WXXX.h"

sbit lamp_pwm=P3^6;//可控硅位
sbit key0=P3^4;//降低亮度按键位
sbit key1=P3^5;//增加亮度按键位

unsigned int inc;
void delay1ms(unsigned int t)
{
unsigned int i;
while(t--)for(i=0;i<580;i++);
}

void INT0s()interrupt 0//INT0外部中断,过零检测触发
{
TR0=0;
if(!key0)//降低亮度
{
inc+=100;
if(inc>=9900)inc=9900;
}
if(!key1)//增加亮度
{
inc-=100;
if(inc<=1000)inc=1000;
}
TH0=(65536-inc)/256;
TL0=(65536-inc)%256;
TR0=1;
}

void timer0()interrupt 1
{
unsigned char i;
TR0=0;
//给触发脉冲
lamp_pwm=0;
for(i=0;i<20;i++); //延时20us
lamp_pwm=1;//灯灭
}

void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
P0=P1=P2=P3=P4=0xff;

inc=9900;
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TH0=(65536-inc)/256;
TL0=(65536-inc)%256;
ET0=1;
IT0=1;//INT0下降沿触发
EX0=1;//外部中断允许
EA=1;//开总中断
while(1)
{

}
}
...全文
671 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huazizhang 2019-01-18
  • 打赏
  • 举报
回复
学习了
  • 打赏
  • 举报
回复
灯控那里需要一个电源芯片,PWM与之对接。
hold-ln 2019-01-17
  • 打赏
  • 举报
回复
有什么问题吗?

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧