⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 程序.c

📁 PWM 控制 LED 灯渐亮渐灭程序 适用 ME300B 开发系统 晶振为11.0592M 利用定时器控制产生占空比可变的 PWM 波 按K1
💻 C
字号:
/*******************************************************************/
/*                                                                                                                                  
/* ME300B单片机开发系统演示程序 - PWM控制LED灯渐亮渐灭                                            
/*                                                                                                                                  
/* LED显示                                                                                                                     
/*                                                                                                                                  
/* 邮箱:   gguoqing@willar.com                                                                                      
/* 网站: http://www.willar.com                                                                                 
/* 作者: 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 < reg52.h >

sbit  K1 =P3^6 ;                    //增加键
sbit  K2 =P3^7 ;                    //减少键
sbit  BEEP =P2^3 ;                //蜂鸣器

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 ;            //频率调节

    TH1=PWM ;            //脉宽调节
    TL1=0 ;

    EA=1;
    ET0=1;
    ET1=1;
   
    TR0=1 ;

    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中断服务程序.定时器T0用来定时扫描键盘
/*********************************************************/
void timer0() interrupt 1
{ 
    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
    TR1=1 ;
    P1=0x00 ;      //启动输出,点亮全部发光二极管
}

/*********************************************************/
// 定时器1中断服务程序,定时器T1用来产生产生占空比可变的 PWM 波
/*********************************************************/
void timer1() interrupt 3
{
    TR1=0 ;
    P1=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++) ;
     }
}

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -