微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 直流电机正反转及调速控制

直流电机正反转及调速控制

时间:11-18 来源:互联网 点击:
#include

#define uint unsigned int
#define uchar unsigned char
sbit rl=P3^0;//正反转按键
sbit add=P3^1;//增速按键
sbit sub=P3^2;//减速按键
sbit stop=P3^3;//电机停止按键
sbit pwmh=P1^0;//PWMH输出
sbit pwml=P1^1;//1正/0反转
uchar num1,num2,flag1,flag2,flag3;
uint aa,bb,n;
void delay(uint z);
void monitor();
void intc();
void keyscan();
//======================
void main()
{
intc();
while(1)
{
keyscan();
if(flag3==0)
{if(flag1==0)
pwml=1;
else
pwml=0;}
if(flag3==1)
{pwmh=1;pwml=1;}
}
}

//===================
void delay(uint z)
{
uint x;
uchar y;
for(x=0;xfor(y=0;y<100;y++);
}

//=========================
void intc()
{n=50;//设定电机初始转速10MS方波;
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;
EA=1;
TR0=1;
}
//========================
void keyscan()
{
if(rl==0)
delay(10);
if(rl==0)
{
while(!rl);
flag1++;
if(flag1>1)
flag1=0;
}
if(add==0)
delay(10);
if(add==0)
{
while(!add);
n++;
if(n>100)
n=100;
}
if(sub==0)
delay(10);
if(sub==0)
{
while(!sub);
if(n<2)
n=1;
else
n--;
}
if(stop==0)
delay(10);
if(stop==0)
{
while(!stop);
flag3=1;
pwmh=1;
pwml=1;
}
}

//==========================
//==========第二种改变PWM波的方法======
void timer0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
num1++;
if(num1pwmh=1;
else
pwmh=0;
if(num1>100)
{num1=0;flag2=1;}
}
//=======================================

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top