找回密码
 立即注册

QQ登录

只需一步,快速开始

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

AT24C02+5线4相步进电机,没有使用24C02的页写和页读,掉电后重启步进电机会回到初位

[复制链接]
跳转到指定楼层
楼主
ID:560467 发表于 2019-11-8 12:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*
实现功能是开机电机归位,按下按键K1可控制电机顺时针转动0-140°(理论值),按键K3控制电机逆时针旋转0-140°,但是不能超过初始位置。
*/
#include<iic.h>
sbit K1 = P3^2;  //按键K1
sbit K2 = P3^1;  //按键K2
sbit K3 = P3^0;  //按键K3
sbit led1 = P2^2;  //最大位置指示灯
sbit led2 = P2^3;  //初始位置指示灯
bit h1=0,h2=0;
void delay(unsigned int h)  //延时函数
{
while(h)
{
  h--;
}
}
char zhuan[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};  //顺时针
char fan[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};  //逆时针
int num ,i=0,k;
void igt(void)     //步进电机归位程序
{
num = At24c02Read(2);     //读取AT24c02里面2的地址(储存的是上次记录的步进电机最终停止位的地址)
delay(1000);
while(num)        //如果num不等于0,既步进电机没有归位则运行程序进行玩归位
{
  for(i=0;i<8;i++)
  {
   P1=fan[i];
   delay(100);
  }
  num --;
  At24c02Write(2,num);
}
}
void shunzhuan()  //按键K1控制电机顺转
{
if(h1 == 1)
{
  if(K1 == 0)       //判断 K1按键是否按下   由于没有使用中断所以是通过单片机扫描检测
  {
   delay(10);      //消抖
   if(K1 == 0)      //再次判断K1是否按下
   {
    for(i=0;i<8;i++)    //运行8拍
    {
     P1=zhuan[i];
     delay(100);
    }
    num ++;
    At24c02Write(2,num);  //将运行次数记录进AT24c02
   }
  }
}
if(num > 200)
{
  h1 = 0;
  led1 = 0;
}
else
{
  h1 = 1;
  led1 = 1;
}
}
void fanzhuan()     //按键K3控制电机反转
{
if(h2 == 0)
{
  if(K3 == 0)       //判断 K3按键是否按下   由于没有使用中断所以是通过单片机扫描检测
  {
   delay(10);      //消抖
   if(K3 == 0)      //再次判断K1是否按下
   {
    for(i=0;i<8;i++)    //运行8拍
    {
     P1=fan[i];
     delay(100);
    }
    num --;
    At24c02Write(2,num);  //将运行次数记录进AT24c02
   }
  }
}
if(num <= 0)
{
  h2 = 1;
  led2 = 0;
}
else
{
  led2 = 1;
  h2 = 0;
}
}
void init_motor()  //手动控制电机归位,按一下就ok
{
if(K2 == 0)
{
  delay(10);
  if(K2 == 0)
  {
   igt();
   while(!K2);
  }
}
}
void main()   //主函数
{
igt();
delay(10000);
num = At24c02Read(2);
delay(10000);
led1 = 1;
led2 = 1;
while(1)
  {
  shunzhuan();
  fanzhuan();
  init_motor();
}
}


//这里只是main.c而已,完整函数在附件中。我使用的是普中开发板(入门板,大概50rmb左右的)

新建文件夹.zip

2.2 KB, 下载次数: 13

完整程序

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

使用道具 举报

沙发
ID:123289 发表于 2019-11-9 09:21 | 只看该作者
在原始位置上做个标记,程序检测这个标记,再加上你的运行记录,就可以达成你的目的了。
回复

使用道具 举报

板凳
ID:560467 发表于 2020-3-5 22:56 | 只看该作者
yzwzfyz 发表于 2019-11-9 09:21
在原始位置上做个标记,程序检测这个标记,再加上你的运行记录,就可以达成你的目的了。

发错位置了,这个我是有标记的,所以掉电后可以回到初始状态。

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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