首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
直流电机调速C51程序
来源:本站整理  作者:佚名  2011-02-05 21:46:11



直流电机调速C51程序

#include <reg52.h>


unsigned char code f_rotation[4]={0x02,0x04,0x08,0x10};//正转表格
unsigned char code b_rotation[4]={0x10,0x08,0x040,0x02};//反转表格

void delay(unsigned int i)//延时
{
while(--i);
}

main()
{

unsigned char i;

while(1)
{
for(i=0;i<4;i++)      //4相
     {
     p1=f_rotation[i]; //输出对应的相 可以自行换成反转表格
     delay(10000);        //改变这个参数可以调整电机转速
}
}
}

10. 直流电机调速


#include <reg52.h>
sbit key1 = p3^1;
sbit PWM = p1^5;
unsigned char cycle; //定义周期 该数字x基准定时时间 如果是10 则周期是10 x 0.1ms
unsigned char pwm_on ;//定义高电平时间
void delay(unsigned int cnt)
{
while(--cnt);
}

main()
{
unsigned char pwm_num;//定义档位
tmod |=0x01;//定时器设置 1ms in 12m Crystal
th0=(65536-1000)/256;
tl0=(65536-1000)%256;//定时1ms
ie= 0x82; //打开中断
tr0=1;

cycle = 10;// 时间可以调整 这个是10步调整 周期10ms 8位pwm就是256步
while(1)
{
if(!key1)
{
   delay(10000);
   if(!key1)
     {
      pwm_num++;
   if(pwm_num==4)pwm_num=0;
       switch(pwm_num){
       case 0:p1=0xfe;pwm_on=0;break;//高电平时长
       case 1:p1=0xfd;pwm_on=4;break;
       case 2:p1=0xfb;pwm_on=6;break;
       case 3:p1=0xf7;pwm_on=8;break;
       default:break;
     }
   }

}
}

}

void tim(void) interrupt 1 using 1
{
statIC unsigned char count; //
th0=(65536-1000)/256;
tl0=(65536-1000)%256;//定时1ms

if (count==pwm_on)
    {
     pwm = 1; //灯灭
    }
count++;
if(count == cycle)
    {
    count=0;
if(pwm_on!=0) //如果左右时间是0 保持原来状态
    pwm = 0;//灯亮

    }

}

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:25,050.78000 毫秒