×
单片机 > 单片机程序设计 > 详情

51单片机控制LED七彩渐变灯

发布时间:2020-05-28 发布时间:
|
自己设计的51单片机控制LED七彩渐变灯

MCU:89C51,89S51,89C2051等

晶振:12MHz

电路驱动(LED连接):

P1.0连接蓝色LED

P1.1连接红色LED

P1.2连接绿色LED (必须使用纯绿色高亮LED,不可使用普通草绿管)

全为低电平驱动(低电平点亮),可以加三极管驱动,红、蓝、绿LED也可以交换位置

控制方式:PWM

频率:约300-700Hz(我没有计算或测量过,只是试验显示效果足够好)

调节级数:共600级,相当平滑

编译后的HEX文件:

687241197859316.rar

HEX代码:

:0D009300E4FEEEC39F50060000000E80F555

:0100A000223D

:06005F00A9078D828C83CD

:10006500E4FDE96008C292FF120093D292E5824551

:10007500836009C291AF82120093D291EB4A600965

:0D008500C290AF03120093D2900DBD0AD5BA

:01009200224B

:100003007508C8E4F509F50AE5086008E50A70040F

:1000130015080509E5096008E50870041509050ACE

:10002300E50A6008E5097004150A0508E5082509CD

:10003300FFE433FE7C00EF250AFFEC3EFEEF64C8CD

:100043004E60087508C8E4F509F50AE509FD7C006A

:0C005300E50AFB7A00AF0812005F80ACE9

:030000000200A15A

:0C00A100787FE4F6D8FD75810A020003A8

:00000001FF

C语言源程序:

/*******************************

程序名称:七彩LED渐变程序

编写者:ZH YU

MCU:51/2051

晶振:12MHz

*********************************/

#include

#include

sbit gl=P1^2;   //绿色

sbit rl=P1^1;   //红

sbit bl=P1^0;   //兰

timer(unsigned char t)

{unsigned char b;

   for(b=0;b

   {_nop_();

    _nop_();

_nop_();}

}

ledout(unsigned char g,r,b)

{unsigned char a;

  for(a=0;a<10;a++)

{if(g!=0)

    {gl=0;timer(g);gl=1;}

  if(r!=0)

    {rl=0;timer(r);rl=1;}

  if(b!=0)

    {bl=0;timer(b);bl=1;}

  }

}

main()

{ unsigned char g,r,b;

  g=200;r=0;b=0;

  while(1)

  {if(g!=0&&b==0)

    {g--;r++;}

   if(r!=0&&g==0)

    {r--;b++;}

   if(b!=0&&r==0)

    {b--;g++;}

   if(g+r+b!=200)

    {g=200;r=0;b=0;}

   ledout(g,r,b);

  }

}

入无法下载HEX,大家可以用KEIL自己编译,或者使用记事本保存HEX代码(重命名为.HEX文件)都可以

再把.hex文件写入单片机,接好电路即可工作



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法