标题:
我的单片机按键控制电机转动时间转向的源码(有注释)
[打印本页]
作者:
且听风yin
时间:
2018-4-30 13:22
标题:
我的单片机按键控制电机转动时间转向的源码(有注释)
这是我们做机械创新比赛时编写的按键电机控制程序
简单易懂,按不同的按键电机会正转或反转,且时间不同
可以直接带入自己的程序进行调试
单片机源程序如下:
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit k5=P3^4;
sbit ENA=P2^0;
sbit IN1=P2^1;
sbit IN2=P2^2;
sbit IN3=P2^3;
sbit IN4=P2^4;
sbit ENB=P2^5;
void delayed(unsigned int x); //延时xms
void revolve1();//车位转动60
void revolve11();//反转60
void revolve2();
void revolve22();
void revolve3();
void clockwise();//顺时针
void delayed (unsigned int x)//延时xms
{
unsigned int i,j;
for(i=x; i>0; i--)
{
for(j=113;j>0;j--);
}
}
void revolve1()//正转60度
{
ENB=1;
IN3=0;
IN4=1;
}
void revolve11()//反转60度
{
ENB=1;
IN3=1;
IN4=0;
}
void revolve2()//正转120度
{
ENB=1;
IN3=0;
IN4=1;
}
void revolve22()//反转120度
{
ENB=1;
IN3=1;
IN4=0;
}
void revolve3()//正转180度
{
ENB=1;
IN3=0;
IN4=1;
}
void main()
{
int i;
if(k1==0) //检测按键K1是否按下
{
delayed(10); //消除抖动 一般大约10ms
if(k1==0) //再次判断按键是否按下
{
revolve1();
for(i=6;i>0;i--) //延时5s
{
delayed(1000);
}
IN3=0;
IN4=0;
while(1);//
}
}
if(k2==0) //检测按键K2是否按下
{
delayed(10); //消除抖动 一般大约10ms
if(k2==0) //再次判断按键是否按下
{
revolve2();
for(i=12;i>0;i--) //延时10s
{
delayed(1000);
}
IN3=0;
IN4=0;
while(1);
}
}
if(k3==0) //检测按键K3是否按下
{
delayed(10); //消除抖动 一般大约10ms
if(k3==0) //再次判断按键是否按下
{
revolve11();
for(i=6;i>0;i--) //延时5s
{
delayed(1000);
}
IN3=0;
IN4=0;
while(1);
}
}
if(k4==0) //检测按键K4是否按下
{
delayed(10); //消除抖动 一般大约10ms
if(k4==0) //再次判断按键是否按下
{
revolve22();
for(i=12;i>0;i--) //延时10s
{
delayed(1000);
}
IN3=0;
IN4=0;
while(1);
}
}
if(k5==0) //检测按键K5是否按下
{
delayed(10); //消除抖动 一般大约10ms
if(k5==0) //再次判断按键是否按下
{
revolve3();
for(i=18;i>0;i--) //延时15s
{
delayed(1000);
}
IN3=0;
IN4=0;
while(1);
}
}
}
复制代码
所有资料51hei提供下载:
KEY.zip
(761 Bytes, 下载次数: 20)
2018-4-30 13:21 上传
点击文件名下载附件
源程序
下载积分: 黑币 -5
作者:
zqy181818
时间:
2018-4-30 18:10
可以分享有电路图吗。我想学一下。
作者:
jccccccccc
时间:
2019-1-21 12:59
有没有原理图啊,想学一下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1