找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3050|回复: 1
打印 上一主题 下一主题
收起左侧

ATMEGA168+L298控制电机正反转的代码与Proteus仿真

[复制链接]
跳转到指定楼层
楼主
这是之前课程设计做的遥控小车,简单的控制电机转速使小车前进和后退,左转右转也是参考了网上别人的,有需要的可以看看,哪里有不足也请指出

ATMEGA168单片机+L298仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源码:

int Foreward_key=2;//正转按钮
int Reverse_key=3;//反转按钮
int Stop_key=4;//停止按钮
int Trunleft_key=0;//左转按钮
int Trunright_key=1;//右转按钮
int Foreward_led=5;//正转指示灯
int Reverse_led=6;//反转指示灯
int Stop_led=7;//停止指示灯
int pinI1=8;//定义电机1正转接口
int pinI2=9;//定义电机1反转接口
int pinI3=13;//定义电机2正转接口
int pinI4=12;//定义电机2反转接口
int speedpin=14;//定义EA(PWM调速)接口
int speedpin1=14;//定义EB(PWM调速)接口
void setup()
{
  pinMode(Foreward_key,INPUT);
  pinMode(Reverse_key,INPUT);
  pinMode(Trunleft_key,INPUT);
  pinMode(Trunright_key,INPUT);
  pinMode(Stop_key,INPUT);
  pinMode(Foreward_led,OUTPUT);
  pinMode(Reverse_led,OUTPUT);
  pinMode(Stop_led,OUTPUT);
  pinMode(pinI1,OUTPUT);//定义该接口为输出接口
  pinMode(pinI2,OUTPUT);
  pinMode(pinI3,OUTPUT);//定义该接口为输出接口
  pinMode(pinI4,OUTPUT);
  pinMode(speedpin,OUTPUT);
  pinMode(speedpin1,OUTPUT);
  digitalWrite(Foreward_led,HIGH);
  digitalWrite(Reverse_led,HIGH);
  digitalWrite(Stop_led,HIGH);
}
void loop()
{
  if(digitalRead(Foreward_key)==HIGH)//正转
  {
    while(digitalRead(Foreward_key)==HIGH);
    digitalWrite(Foreward_led,LOW);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI1,LOW);//使直流电机顺时针转
    digitalWrite(pinI2,HIGH);
    analogWrite(speedpin,100);
    digitalWrite(pinI3,LOW);//使直流电机顺时针转
    digitalWrite(pinI4,HIGH);
    analogWrite(speedpin1,100);
  }
  if(digitalRead(Reverse_key)==HIGH)//反转
  {
    while(digitalRead(Reverse_key)==HIGH);
    digitalWrite(Foreward_led,HIGH);
    digitalWrite(Reverse_led,LOW);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI1,HIGH);//使直流电机逆时针转
    digitalWrite(pinI2,LOW);
    analogWrite(speedpin,100);
    digitalWrite(pinI3,HIGH);//使直流电机逆时针转
    digitalWrite(pinI4,LOW);
    analogWrite(speedpin1,100);

  }
  if(digitalRead(Stop_key)==HIGH)//停止
  {
    while(digitalRead(Stop_key)==HIGH);
    digitalWrite(Foreward_led,HIGH);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,LOW);
    digitalWrite(pinI1,LOW);//使直流电机逆时针转
    digitalWrite(pinI2,LOW);
    analogWrite(speedpin,100);
    digitalWrite(pinI3,LOW);//使直流电机逆时针转
    digitalWrite(pinI4,LOW);
    analogWrite(speedpin1,100);
  }
  if(digitalRead(Trunleft_key)==HIGH)//左转
  {
    while(digitalRead(Trunleft_key)==HIGH);
    digitalWrite(Foreward_led,LOW);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI1,LOW);//使直流电机顺时针转
    digitalWrite(pinI2,HIGH);
    analogWrite(speedpin,100);
    delay(120);
    digitalWrite(pinI3,LOW);//使直流电机顺时针转
    digitalWrite(pinI4,HIGH);
    analogWrite(speedpin1,100);

  }
    if(digitalRead(Trunright_key)==HIGH)//右转
  {
    while(digitalRead(Trunright_key)==HIGH);
    digitalWrite(Foreward_led,LOW);
    digitalWrite(Reverse_led,HIGH);
    digitalWrite(Stop_led,HIGH);
    digitalWrite(pinI3,LOW);//使直流电机顺时针转
    digitalWrite(pinI4,HIGH);
    analogWrite(speedpin1,100);
    delay(120);
    digitalWrite(pinI1,LOW);//使直流电机顺时针转
    digitalWrite(pinI2,HIGH);
    analogWrite(speedpin,100);
  }

}



全部资料51hei下载地址:
小车模拟.rar (80.2 KB, 下载次数: 24)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:342822 发表于 2018-11-25 22:32 | 只看该作者
嘿嘿~~仿真图上的按键不带这么玩的!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表