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

📄 pwm_motor.c

📁 多路舵机控制
💻 C
字号:
  /*以下是一段产生占空比为20%的脉冲信号的c51程序,我想电机转速*/
  /*对应于一定的占空比,如果你要改变占空比,可能需要建立一个对应*/
  /*于不同转速的参数表(如定时器初值等),查表*/
  /*得到不同参数,以改变占空比和转速。你用什么驱动电路?*/
   														
  /*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号*/   
  /*定时100ms,周期2.5s需25次中断,高电平0.5s需5次中断*/   
    
#include   <reg51.h>   
  typedef   unsigned   char   uchar;   
  sbit   P0_0=P0^0;
  sbit   P0_1=P0^1; 
  sbit   P0_2=P0^2;
  sbit   P0_3=P0^3; 
  sbit   P2_0=P2^0;
  sbit   P2_1=P2^1; 
  uchar   time=0;   
  uchar   period=25;   
  uchar   high=10;
  uchar   th1=0;
  uchar   tl1=0;
  uchar   th0=0;
  uchar   tl0=0;     
    
  void   timer0()   interrupt   1   using   1   
  {   
            TH0=0x3c;     /*定时器初值重装载*/   
            TL0=0xb0;
            //TH0=0xc3;/*定时器初值重装载*/
			//TL0=0x50;  
            time++;   
            if(time==high)   /*高电平持续时间结束,变低*/   
            {   P2_0=tl0;
			    P2_1=tl1;		
			  }   
            else   if(time==period)     /*周期时间到,变高*/   
                      {   time=0;   
                          P2_0=th0;
						  P2_1=th1;
						     
                      }   
    
  }   
    
  void   main()   
  {   
        TMOD=0x01;   /*定时器0方式1*/   
        TH0=0x3c;     /*定时器装载初值,设置脉冲信号的占空比为1/5*/   
        TL0=0xb0; 
		//TH0=0xc3;/*定时器装载初值,设置脉冲信号的占空比为4/5*/
		//TL0=0x50;    
        EA=1;     /*开CPU中断*/   
        ET0=1;   /*开定时器0中断*/   
        TR0=1;/*启动定时器0*/  
		
		if(P0_2==1)
		 {
		  th0=1;
		  tl0=0;
    	  th1=0;
		  tl1=0;
		      }

          if(P0_3==1)
		 {
		  th0=0;
		  tl0=0;
    	  th1=1;
		  tl1=0;
		      }
		while(1)     /*等待中断*/   
        {}   
    
  }   

⌨️ 快捷键说明

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