单片机实训5 H桥式驱动电路——电机控制
proteus如图所示,左边一栏为所需元件
2.keil单片机程序
#include<reg51.h>
sbit motor0=P1^0; //motor0 和motorl接H桥两端
sbit motor1=P1^1 ;
sbit key1 =P3^0; //key1 控制电动机正转
sbit key2 =P3^2; //key2 控制电动机反转
sbit key3 =P3^4; //key3 控制电动机停转
unsigned char flag=0;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
void key_scan( ) //****检测keyl是否按******** 1key1=1;
{
key1=1;
if(key1==0)
{
delay(5);
if( key1==0)
{
flag=1;
while( !key1);
}
}
//****检测key2是否按***1key2=1;
key2=1;
if(key2==0)
{
delay(5);
if( key2==0)
{
flag=2;
while( !key2);
}
}
//**********检测key3是否按******** /key3=1;
key3=1;
if(key3==0)
{
delay(5);
if( key3==0)
{
flag=3;
while( !key3);
}
}
}
void h_motor( )
{
if(flag==1) //当 key1键按下时,电动机正转
{
motor0=1;
motor1=0;
}
else if(flag==2) //当 key2键按下时,电动机反转
{
motor0=0;
motor1=1;
}
else //当key3键按下或者没有键按下时,电动机停转
{
motor0=0;motor1=0;
}
}
void main( )
{
while(1)
{
key_scan();
h_motor();
}
}