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

📄 pmw.txt

📁 利用单片机产生pmw
💻 TXT
字号:
; PWM 控制 LED 灯渐亮渐灭程序                                                   *
; 利用定时器控制产生占空比可变的 PWM 波                                         *
; 按K1,PWM值增加,则占空比减小,LED 灯渐暗。                                    *
; 按K2,PWM值减小,则占空比增加,LED 灯渐亮。                                    *
;当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警                              *
;资源:p0口,8路指示灯。p1.4,p1.5亮度控制按键(端口按键)p3.7小喇叭报警          *

#include<reg51.h>
#include<intrins.h>
sbit  K1 =P1^4 ;            //PWM值增加键
sbit  K2 =P1^5 ;            //PWM值减少键
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 ;            //频率调节
    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中断服务程序  (频率)
/*********************************************************/
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++) ;
    }
}
/*********************************************************/

⌨️ 快捷键说明

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