注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

quietheart

真正的幸福是来自内心的平定、安静、自在

 
 
 

日志

 
 

PWM控制LED灯渐亮渐灭(C51)  

2008-04-15 11:21:38|  分类: 技术资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
PWM控制LED灯渐亮渐灭(C51)
2007年01月12日 星期五 11:06

/*******************************************************************/
/* ME300B单片机开发系统演示程序 - PWM控制LED灯渐亮渐灭*/
/* LED显示                                                       */
/* 作者: gguoqing          */
/* 时间: 2005/11/30      */

/*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved                            */
/*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!                                          

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

// PWM 控制 LED 灯渐亮渐灭程序
// 适用 ME300B 开发系统
// 晶振为11.0592M
// 利用定时器控制产生占空比可变的 PWM 波
// 按K1,PWM值增加,则占空比减小,LED 灯渐暗。
// 按K2,PWM值减小,则占空比增加,LED 灯渐亮。
// 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

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

#include < reg51.h >
#include < intrins.h >

sbit  K1 =P1^4 ;                    //增加键
sbit  K2 =P1^5 ;                    //减少键
sbit  BEEP =P3^7 ;                //蜂鸣器
unsigned char PWM=0x7f ;   //赋初值

void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);

/*********************************************************/
void main()
{  

     P1=0xff; 
    TMOD=0x21 ;
    TH0=0xfc ;             //1ms延时常数
    TL0=0x66 ;            //频率调节

   while(1)
   {
     do{
            if(PWM!=0xff)
           {PWM++ ;delayms(10);}
           else Beep() ; 
         }
     while(K1==0);

     do{
           if(PWM!=0x02)
          {PWM-- ;delayms(10);}
           else Beep() ; 
          }
     while(K2==0);
   }
}

/*********************************************************/
// 定时器0中断服务程序.
/*********************************************************/
void timer0() interrupt 1 
{  
    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
    TR1=1 ;
    P0=0x00 ;      //启动输出
}

/*********************************************************/
// 定时器1中断服务程序
/*********************************************************/
void timer1() interrupt 3 

    TR1=0 ;
    P0=0xff ;     //结束输出
}

/*********************************************************/
//蜂鸣器子程序
/*********************************************************/

void Beep()     
  {
      unsigned char i  ;
      for (i=0  ;i<100  ;i++)
        {
          delay(100)  ;
          BEEP=!BEEP  ;                //Beep取反
        } 
     BEEP=1  ;                            //关闭蜂鸣器
     delayms(100);
  } 

/*********************************************************/
// 延时子程序
/*********************************************************/  
void delay(unsigned char t)
 { 
    while(t--)   ;
 }

/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms) 

{
    unsigned char i ;
    while(ms--)
     {
        for(i = 0 ; i < 120 ; i++) ;
     }
}

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


网友评论:
12007年10月17日 星期三 12:39


©2008 Baidu



引文来源  PWM控制LED灯渐亮渐灭(C51)_欢迎光临......
  评论这张
 
阅读(835)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018