直流电机驱动C程序 芯片用的是STC 8052

 我来答 举报
shengmancheste
2011-08-01 · TA获得超过175个赞
知道答主
回答量:28
采纳率:0%
帮助的人:44.5万
展开全部
给你个简单的PWM控制的可调转速电机驱动(L298N模块),也不能算是个PWM了,只是延时实现而已。。。电路图我这里贴不上去,网速太次,要的话把你邮箱告我下就好了,我发给你
#include<reg51.h>

/*定义按键和L298N引脚*/
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--);}
/*正转函数1*/
void Z1()
{IN1=1;IN2=0;W=1;}
/*正转函数2*/
void Z2()
{IN3=1;IN4=0;W=1;}
/*反转函数1*/
void F1()
{IN1=0;IN2=1;W=2;}
/*反转函数2*/
void F2()
{IN3=0;IN4=1;W=2;}
/*加速函数1*/
void JIA1()
{t1+=10;}
/*加速函数2*/
void JIA2()
{t2+=10;}
/*减速函数1*/
void JIAN1()
{t1-=10;}
/*减速函数2*/
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();}
}
yylrhyyl
2011-07-18 · TA获得超过1878个赞
知道大有可为答主
回答量:2013
采纳率:80%
帮助的人:628万
展开全部
问题太笼统。问题太笼统,没法回答。首先说明你要干什么。电机是否调速,是否有正反转,用按键控制还是电位器控制,电机的驱动器是几个三极管还是什么芯片。先回答了这几个问题才可能给你建议。
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式