pwm之小车调速.c

来自「单片机在利用H桥对电机控制时」· C语言 代码 · 共 89 行

C
89
字号
#include < reg51.h >
#include < intrins.h >

sbit  K1 =P2^0 ;                    //按K1,PWM值增加键
sbit  K2 =P2^1 ;                    //按K2,PWM值减少键
sbit  K3 =P2^2 ;                    //按K2,正反转

unsigned char PWM=0x80,f=0x05;   //赋初值
bit k=0;

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

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

 /***************************************************
                         主程序
 ****************************************************/
 void main(void)
{  
    P1=0x00; 

    TMOD=0x11 ;			 //计时器1,0的计时方式就均为为 1
    TH0=0x00 ;           //周期
    TL0=0x00 ;           //频率调节

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

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

   while(1)
  {
    if(K3==0) k=~k;		 //实现正反转
    while(K3==0);
    if(k==0) f=0x05;
    if(k==1) f=0x0a;
		
    while(K1==0&&PWM!=0xff)     //加减速度
   {
    PWM++ ;delayms(10);
   }
   while(K2==0&&PWM!=0x00)      
   {
    PWM-- ;delayms(10);
   }
		
  }
}

/**************************************************
                定时器T0频率调节
***************************************************/
void timer0() interrupt 1 
{  
    TR1=0 ;
    TH0=0x00 ;
    TL0=0x00 ;
    TH1=PWM ;
    TL1=PWM;
    TR1=1 ;
    P1=0x00 ;      
}

/***************************************************
               定时器T1,脉宽调节
***************************************************/
void timer1() interrupt 3 
{ 
    TR1=0 ;
    P1=f ;       
}

											   


⌨️ 快捷键说明

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