Chinaunix首页 | 论坛 | 博客
  • 博客访问: 625888
  • 博文数量: 262
  • 博客积分: 8433
  • 博客等级: 中将
  • 技术积分: 2141
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-31 09:37
文章分类

全部博文(262)

文章存档

2012年(1)

2011年(168)

2010年(92)

2009年(1)

分类: C/C++

2011-01-02 23:37:21

51单片机来做的pwm来无级调光程序通过光耦可控硅来控制可控硅的导通角,从而实现白炽灯亮度的变化.

#i nclude "reg51.h"
#i nclude "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<value)
 {
  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;
  }
 }
}


阅读(5755) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~