我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 483|回复: 3

步进电机调速(仅供参考)

[复制链接]

该用户从未签到

11

主题

48

回帖

1

积分

二级逆天

积分
1

终身成就奖特殊贡献奖

QQ
发表于 2016-7-16 10:07:34 | 显示全部楼层 |阅读模式
#include "reg52.h"

//电机IO
#define GPIO_MOTOR P1
//sbit F1 = P1^0;
//sbit F2 = P1^1;
//sbit F3 = P1^2;
//sbit F4 = P1^3;
//按键IO
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit K4=P3^3;

unsigned char code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反转顺序
unsigned char code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正转顺序

unsigned char Direction,Speed;
void Delay(unsigned int t);
void  Motor();

/*******************************************************************************
*******************************************************************************/

void main(void)
{
    unsigned char i;
    Speed=3000;
  while(1)
    {
        if(K1==0)        //检测按键K1是否按下
        {
            Delay(1);    //消除抖动
            if(K1==0)
            {
                Direction=1;
            }
            while((i<200)&&(K1==0))     //检测按键是否松开
            {
                Delay(1);
                i++;
            }
            i=0;
        }
        if(K2==0)        //检测按键K1是否按下
        {
            Delay(1);    //消除抖动
            if(K2==0)
            {
                Direction=2;
            }
            while((i<200)&&(K2==0))     //检测按键是否松开
            {
                Delay(1);
                i++;
            }
            i=0;
        }            
        if(K3==0)        //检测按键K1是否按下
        {
            Delay(1);    //消除抖动
            if(K3==0)
            {
                Speed=13;
            }
            while((i<200)&&(K3==0))     //检测按键是否松开
            {
                Delay(1);
                i++;
            }
            i=0;
        }
        if(K4==0)        //检测按键K1是否按下
        {
            Delay(1);    //消除抖动
            if(K4==0)
            {
                Speed=40;
            }
            while((i<200)&&(K4==0))     //检测按键是否松开
            {
                Delay(1);
                i++;
            }
            i=0;
        }        
        Motor();
    }
}
/*******************************************************************************
*******************************************************************************/

void  Motor()
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        if(Direction==1)
            GPIO_MOTOR = FFW&0x1f;  //取数据
        if(Direction==2)
            GPIO_MOTOR = FFZ&0x1f;
        Delay(Speed);    //调节转速   
    }                     
}
/*******************************************************************************
*******************************************************************************/
void Delay(unsigned int t)
{                           
    unsigned int k;
    while(t--)
    {
        for(k=0; k<80; k++)
        { }
    }
}
回复

使用道具 举报

该用户从未签到

459

主题

1539

回帖

4574

积分

二级逆天

PCB画板兼职QQ469573335

积分
4574

社区居民忠实会员社区劳模最爱沙发社区明星原创达人终身成就奖优秀斑竹奖宣传大使奖

QQ
发表于 2016-7-16 10:15:08 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

2

主题

474

回帖

113

积分

二级逆天

积分
113

社区居民终身成就奖

QQ
发表于 2016-7-16 10:42:36 | 显示全部楼层
回复

使用道具 举报

我不是王 该用户已被删除
发表于 2016-8-15 11:02:05 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表