原创 渐明渐暗的闪烁彩灯

2008-4-3 16:14 4506 7 7 分类: MCU/ 嵌入式

渐明渐暗的闪烁彩灯


/****************************************************************************
程序名:    渐明渐暗的闪烁彩灯
编写人:    杜洋 
初写时间:  2005年8月25日
程序功能:   使LED彩灯由亮渐灭再由灭渐亮的闪烁
实现方法:  通过改变彩灯亮灭的时间长度来改变彩灯亮度
CPU说明:   AT89S52型单片机 12MHZ晶体振荡器
修改日志:  
  NO.1-2005年8月26日-修改了闪烁周期长度
/****************************************************************************/
#include <AT89X52.h>
sbit LED = P0 ^ 0;     //你的P1.0引脚上接了一个发光二极管


code unsigned char stop[3] _at_ 0x3B;   //Mon51用
/****************************************************************************
延时程序:
/****************************************************************************/
void delay (unsigned int d){    // 延时功能函数--由d决定延时长度
    unsigned char i;
 while( d-- != 0){
  for(i = 0; i < 8; i++);
 }         
}
/****************************************************************************
主程序:渐变式LED闪烁
/****************************************************************************/
void main (void){      // 彩灯主函数 实现彩灯的显示
    unsigned char a, b;    // a控制延时长度 b控制循环周期
    while (1){
        LED = 1;
     a = 0x00;
     for (b=255; b>0; b--){  // 定义半周期循环时间(次数)
      a++;
         delay (a);    // 延时长度随a而改变
         LED = 0;
         a = ~a;     // a值取反 决定灯灭时的占空比
         delay (a);
   LED = 1;
         a = ~a;     // a值取反 使a回到原值继续循环
  }
        LED = 0;     // 彩灯全亮 使灯达到最亮
     a = 0x00;
     for (b=255; b>0; b--){
      a++;
         delay (a);
         LED = 0xff;
         a = ~a;
         delay (a);
          LED = 0;
         a = ~a;
     }
        LED = 1;
    }
}
/*****************************************************************************
 DoYoung.net 电子技术
/*****************************************************************************/

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条