pwm调光程序,基于51单片机pwm调速调光程序

模拟技术

2308人已加入

描述

  PW调光是一种利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,应用于ID照明中可以控制灯具的调光。随着节能以及光照的个性化需求越来越多,LED调光已经逐渐形成一个趋势,灯光智能化控制也一直是个热点oP‘WM 调光技术是一个被应用的比较多的一种调光技术,也是一直以来被广为看好的一种调光方式。

  PHM也就是脉宽调制的意思,这项技术不仅应用于照明领域,在测里、通信到功率控制与变换也有应用。这篇文章主要就是来说说基于51单片机pwm调速调光程序。

  基于51单片机pwm调速调光程序

  #include“reg52.h”

  typedef unsigned char uchar;

  typedef unsigned int uint;

  sbit ENA=P0^0;

  sbit IN1=P0^1;

  sbit IN2=P0^2;

  sbit IN3=P0^3;

  sbit IN4=P0^4;

  sbit ENB=P0^5;

  uint k,j;

  #define OFF ENA=0;ENB=0;

  #define ON ENA=1;ENB=1;

  #define LEDL(key) P2&=(0xfe《《key); //指定对应的二极管发亮

  #define LEDH(key) P2|=(0x01《《key); //指定LED熄灭

  #define QX(x,y) IN1=x,IN2=y;

  #define QY(x,y) IN3=x,IN4=y;

  void main()

  {

  void init(); //初始化定时器

  void LEDOM(); //流水灯函数声明

  void daley(uint,uint); //延时函数声明

  void (*p)(uint,uint); //定义一个(uint,uint)的函数指针

  void OL_bt(uint x,uint y); //PWM调制函数声明

  p=OL_bt;

  QX(1,0);

  QY(1,0);

  init();

  while(1)

  {

  LEDOM();

  (*p)(1000,100);

  }

  }

  void init() //定时器中断初始化

  {

  TMOD=0x01; //设置定时器0为工作方式1

  EA=1; //开总中断

  ET0=1;

  TR0=1; //定时器0中断允许

  }

  OStime() interrupt 1

  {

  static char n;

  if(n==0)

  {

  OFF;

  TH0=(65536-j)/256;

  TL0=(65536-j)%256;

  n=1;

  return;

  }

  if(n==1)

  {

  ON;

  TH0 = (65536-k)/256;

  TL0 = (65536-k)%256;

  n=0;

  return;

  }

  }

  void OL_bt(uint x,uint y) //改变x,y的值来改变PWM来调速 x增大y减小速度减小 x减小y增大速度增大

  {

  k=y;

  j=x;

  }

  void daley(uint x,uint y)

  {

  uint a,b;

  for(a=x;a》0;a--)

  for(b=y;b》0;b--);

  }

  void LEDOM()

  {

  LEDL(0);

  daley(100,100);

  LEDL(1);

  daley(100,100);

  LEDL(2);

  daley(100,100);

  LEDL(3);

  daley(100,100);

  LEDL(4);

  daley(100,100);

  LEDL(5);

  daley(100,100);

  LEDL(6);

  daley(100,100);

  LEDL(7);

  daley(100,100);

  LEDH(0);

  daley(100,100);

  LEDH(1);

  daley(100,100);

  LEDH(2);

  daley(100,100);

  LEDH(3);

  daley(100,100);

  LEDH(4);

  daley(100,100);

  LEDH(5);

  daley(100,100);

  LEDH(6);

  daley(100,100);

  LEDH(7);

  daley(100,100);

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分