文档详情

直流电机控制C程序.doc

发布:2017-04-19约2.01千字共3页下载文档
文本预览下载声明
#includereg52.h #includedelay.h #define uchar unsigned char #define uint unsigned int //*********************// sbit ENA = P2^2; //驱动芯片使能,若为0则电机停止; sbit IN1 = P2^1; //控制电机正转和反转 sbit IN2 = P2^0; //控制电机正转和反转 sbit key1 = P1^0; //此键按下,电机正转;IN1=1;IN2=0 ;ENA=1 sbit key2 = P1^1; //此键按下,电机反转;IN1=0,IN2=1 ;ENA=1 sbit key3 = P1^2; //此键按下,电机刹停; IN1=1,IN2=1 ;ENA=1 //*********************// int motor_change_mank=0; // 按键设置 //**********************// uint keylogo() { if(key1==0) { delayms(2) ; //while(key1==0); motor_change_mank=1;//正转标志位 } if(key2==0) { delayms(2) ; //while(key2==0); motor_change_mank=2;//反转标志位 } if(key3==0) { delayms(2) ; //while(key3==0); motor_change_mank=0;//刹停标志位 } return(motor_change_mank); } //**********************// //控制驱动芯片函数 //**********************// void execute_motor() { switch(motor_change_mank) { case 0: //刹停标志位 { IN1 = 1; IN2 = 1; ENA = 1; }break; case 1: //正转标志位 { IN1 = 1; IN2 = 0; ENA = 1; }break; case 2: //反转标志位 { IN1 = 0; IN2 = 1; ENA = 1; }break; default:break; } } //**********************// void main() { while(1) { keylogo(); execute_motor(); } } /**********************************************************************/ /**********************************************************************/ #define uint unsigned int void delayms(uint n) { int i; for(;n0;n--) for(i=0;i1;i++); } /**********************************************************************/ /**********************************************************************/ #ifndef delay_h #define delay_h #define uint unsigned int extern void delayms(uint n); #endif /***********************************************************************/ /********************************************************************
显示全部
相似文档