直流电机驱动C程序 芯片用的是STC 8052
答案:2 悬赏:50 手机版
解决时间 2021-03-19 21:31
- 提问者网友:捧腹剧
- 2021-03-19 03:32
直流电机驱动C程序 芯片用的是STC 8052
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-03-19 03:45
给你个简单的PWM控制的可调转速电机驱动(L298N模块),也不能算是个PWM了,只是延时实现而已。。。电路图我这里贴不上去,网速太次,要的话把你邮箱告我下就好了,我发给你
#include<reg51.h>
sbit BZ1=P0^0; sbit IN1=P2^0;
sbit BZ2=P0^1; sbit IN2=P2^1;
sbit BF1=P0^2; sbit IN3=P2^2;
sbit BF2=P0^3; sbit IN4=P2^3;
sbit BJIA1=P0^4;
sbit BJIA2=P0^5;
sbit BJIAN1=P0^6;
sbit BJIAN2=P0^7;
void delay(t);
void Z1();
void Z2();
void F1();
void F2();
void JIA1();
void JIA2();
void JIAN1();
void JIAN2();
void change();
char W=0;//W用来在调速状态下选择电机;
int t1=80,t2=80;
void delay(int t)
{while(t--);}
void Z1()
{IN1=1;IN2=0;W=1;}
void Z2()
{IN3=1;IN4=0;W=1;}
void F1()
{IN1=0;IN2=1;W=2;}
void F2()
{IN3=0;IN4=1;W=2;}
void JIA1()
{t1+=10;}
void JIA2()
{t2+=10;}
void JIAN1()
{t1-=10;}
void JIAN2()
{t2-=10;}
void TING()
{IN1=IN2=IN3=IN4=0;}
void ZHI()
{IN1=IN2=IN3=IN4=1;}
void change()
{
if(BZ1==0){Z1();delay(t1);TING();delay(255-t1);}
if(BZ2==0){Z2();delay(t2);TING();delay(255-t2);}
if(BF1==0){F1();delay(t1);TING();delay(255-t1);}
if(BF2==0){F2();delay(t2);TING();delay(255-t2);}
if(BJIA1==0&&t1<235){delay(5);JIA1();}
if(BJIA2==0&&t2<235){delay(5);JIA2();}
if(BJIAN1==0&&t1>80){delay(5);JIAN1();}
if(BJIAN2==0&&t2>80){delay(5);JIAN2();}
if(BZ1==0&&(BZ2!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BZ2==0&&(BZ1!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BF1==0&&(BZ1!=0&&BZ2!=0&&BF2!=0)){delay(255);}
if(BF2==0&&(BZ1!=0&&BZ2!=0&&BF1!=0)){delay(255);}
}
void main()
{
P0=0xff;
while(1)
{change();}
}
#include<reg51.h>
sbit BZ1=P0^0; sbit IN1=P2^0;
sbit BZ2=P0^1; sbit IN2=P2^1;
sbit BF1=P0^2; sbit IN3=P2^2;
sbit BF2=P0^3; sbit IN4=P2^3;
sbit BJIA1=P0^4;
sbit BJIA2=P0^5;
sbit BJIAN1=P0^6;
sbit BJIAN2=P0^7;
void delay(t);
void Z1();
void Z2();
void F1();
void F2();
void JIA1();
void JIA2();
void JIAN1();
void JIAN2();
void change();
char W=0;//W用来在调速状态下选择电机;
int t1=80,t2=80;
void delay(int t)
{while(t--);}
void Z1()
{IN1=1;IN2=0;W=1;}
void Z2()
{IN3=1;IN4=0;W=1;}
void F1()
{IN1=0;IN2=1;W=2;}
void F2()
{IN3=0;IN4=1;W=2;}
void JIA1()
{t1+=10;}
void JIA2()
{t2+=10;}
void JIAN1()
{t1-=10;}
void JIAN2()
{t2-=10;}
void TING()
{IN1=IN2=IN3=IN4=0;}
void ZHI()
{IN1=IN2=IN3=IN4=1;}
void change()
{
if(BZ1==0){Z1();delay(t1);TING();delay(255-t1);}
if(BZ2==0){Z2();delay(t2);TING();delay(255-t2);}
if(BF1==0){F1();delay(t1);TING();delay(255-t1);}
if(BF2==0){F2();delay(t2);TING();delay(255-t2);}
if(BJIA1==0&&t1<235){delay(5);JIA1();}
if(BJIA2==0&&t2<235){delay(5);JIA2();}
if(BJIAN1==0&&t1>80){delay(5);JIAN1();}
if(BJIAN2==0&&t2>80){delay(5);JIAN2();}
if(BZ1==0&&(BZ2!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BZ2==0&&(BZ1!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BF1==0&&(BZ1!=0&&BZ2!=0&&BF2!=0)){delay(255);}
if(BF2==0&&(BZ1!=0&&BZ2!=0&&BF1!=0)){delay(255);}
}
void main()
{
P0=0xff;
while(1)
{change();}
}
全部回答
- 1楼网友:归鹤鸣
- 2021-03-19 05:16
一般用单片机控制直流电机运转的控制方法有两种,一种为电平控制(可能不准确),另一种为pwm控制。如果你选用第一种,你需要为你的直流电机设计一个驱动控制模块,建议使用简单的h桥控制,其控制方法是单片机引脚输出的高电平为正转,低电平为反转,与控制led灯类似。如果是第二种,你也需要为其设计一个驱动控制模块,但是控制方法是用到pwm占空比控制,相关的资料在网上很容易找到。我知道的就是这些。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯