大连创客空间

 找回密码
 立即注册吧!

QQ登录

只需一步,快速开始

一键登录:

搜索
查看: 6059|回复: 30
收起左侧

【大赛原创经验贴】步电机的正反转和调速

  [复制链接]
发表于 2012-7-20 16:31:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多交流,硬件的世界向你敞开大门!

您需要 登录 才可以下载或查看,没有帐号?立即注册吧!

x
刚开始用的是延时      (太占CPU)就换成了定时    还是辛苦了几天才弄出来   
程序如下:#include <msp430g2452.h>
int i;
unsigned char k=0;
void   Timer();      //调速程序
void   Timerc();     //赋TACCR0初值
void Zheng(void);    //正转程序
void Fang(void);     //反转程序
char Key0_Pressed(void);    //反转执行按钮(需要一直按下不然松手就恢复到正转)
char Key3_Pressed(void);    //减速按钮
char Key4_Pressed(void);    //加速按钮
void main( void )           //主程序
{
  WDTCTL = WDTPW + WDTHOLD;
  P2DIR |=0xe0;
  P2OUT |=BIT0+BIT1+BIT2+BIT3+BIT4;
  P2REN |=BIT0+BIT1+BIT2+BIT3+BIT4;
  BCSCTL3 |= LFXT1S_2;
  TACCTL0 = CCIE;
  Timerc();  
  TACTL = TASSEL_1 +ID_3 + MC_3;
  P1DIR |=BIT0+BIT1+BIT2+BIT6;
  P1OUT |=BIT0+BIT1+BIT2+BIT6;
  _EINT();
  LPM3;
  while(1);

}
void Timerc ()         //赋YACCR0初值

{   
   if(!Key3_Pressed())   //如果没有按钮按下就赋初值

    TACCR0=10;
}

void Timer()          //调速按钮

{
  P2DIR |=0xe0;
  P2OUT |=0x1f;
  P2REN |=BIT3;
    if(Key3_Pressed())
    {
      for(i=0;i<500;i++);

     TACCR0=TACCR0+3;
     if(TACCR0>17)
     {
       TACCR0=10;
     }
    }
     if(Key4_Pressed())
    {
      for(i=0;i<500;i++);

     TACCR0=TACCR0-3;
     if(TACCR0<4)
     {
       TACCR0=10;
     }
    }
}
#pragma vector = TIMER0_A0_VECTOR

__interrupt void Timer_A (void)         //定时中断程序


{   
   Zheng();                        //启动就正转
   Timer();
    if(Key0_Pressed())            //如果反转按钮按下就反转
    {

   Fang();
   Timer();
    LPM3_EXIT;
    }
}
char Key3_Pressed(void)    //判断减速按钮是否按下
    {

     unsigned int h=0;
       P2REN |=BIT3;
      if((P2IN&BIT3)==0x00)
       h=1;
      else h=0;

      return h;
    }
char Key4_Pressed(void)        //判断加速按钮是否按下
    {

     unsigned int h=0;
       P2REN |=BIT4;
      if((P2IN&BIT4)==0x00)
       h=1;
      else h=0;

      return h;
    }
char Key0_Pressed(void)         //反转按钮
{
    unsigned int a=0;

       P2REN |=BIT0;
      if((P2IN&BIT0)==0x00)
       a=1;

      else a=0;

      return a;
}
void Zheng(void)               //正转程序
{   if(!Key0_Pressed())
   {
     unsigned char ZZ[4]={0x01,0x02,0x04,0x40};
     P1OUT=ZZ[k];
     k++;
     if (k==4)
     {
      k=0;

     }
   }
}
void Fang(void)                   //反转程序
{
     unsigned char FZ[4]={0x40,0x04,0x02,0x01};
     P1OUT=FZ[k];
     k++;
     if (k==4)
     {
      k=0;

     }
}

回复

使用道具 举报

发表于 2012-7-20 17:10:14 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-7-20 20:11:59 | 显示全部楼层
TACCRO步进3是什么意思?调节?时钟频率下3好像中断时间差距不大啊……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-20 21:38:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-7-20 23:19:07 | 显示全部楼层
呵呵,来支持一个!论坛需要你这种经常分享,讨论的活跃分子!看好你。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-21 00:12:07 | 显示全部楼层
Friday 发表于 2012-7-20 23:19
呵呵,来支持一个!论坛需要你这种经常分享,讨论的活跃分子!看好你。 ...

我也在者论坛上学到了不少东西
回复 支持 反对

使用道具 举报

发表于 2012-7-21 09:41:24 | 显示全部楼层
好贴
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-21 17:17:39 | 显示全部楼层
给位 我现在想在这个程序上再加一个1602显示 步电机的状态   各位能给我点建议吗  ?      今天做了一天的尝试 都失败了   我认为问题的关键是 1602程序的时间 影响到了步电机程序的时间                求大神指点
回复 支持 反对

使用道具 举报

发表于 2012-7-21 17:21:50 | 显示全部楼层
LZ辛苦了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-21 17:28:30 | 显示全部楼层

能帮帮忙吗?
回复 支持 反对

使用道具 举报

发表于 2012-7-21 17:33:59 | 显示全部楼层
讀哝ぴ芯跳 发表于 2012-7-21 17:28
能帮帮忙吗?

是你上面的那个问题么?刚入手lanchpad,正在论坛上吸取经验呢,我也不清楚呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-21 17:40:53 | 显示全部楼层
黑小子攀 发表于 2012-7-21 17:33
是你上面的那个问题么?刚入手lanchpad,正在论坛上吸取经验呢,我也不清楚呀 ...

哦   你认得到什么高手不哇   有的话请 他花几分钟帮我看哈挖      十分感谢
回复 支持 反对

使用道具 举报

发表于 2012-7-24 00:39:24 | 显示全部楼层
学习啦
回复 支持 反对

使用道具 举报

发表于 2012-7-28 22:09:15 | 显示全部楼层
按照这个程序运行后,发现步进电机并没有很快转起来,而是原地颤抖,就是不转,步进电机的4个接口是依次接launchpad 的 P1.0, P1.1,  P1.2, P1.6 接口吗?  问题求解。。。。先谢谢了。。。

点评

加QQ我发给你 这个有点瑕疵 我QQ961036911  详情 回复 发表于 2012-7-29 19:43
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-29 19:43:13 | 显示全部楼层
tsxl0415 发表于 2012-7-28 22:09
按照这个程序运行后,发现步进电机并没有很快转起来,而是原地颤抖,就是不转,步进电机的4个接口是依次接l ...

加QQ我发给你   这个有点瑕疵  我QQ961036911
回复 支持 反对

使用道具 举报

发表于 2012-7-30 10:10:27 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

发表于 2012-8-4 11:46:27 | 显示全部楼层
讀哝ぴ芯跳 发表于 2012-7-29 19:43
加QQ我发给你   这个有点瑕疵  我QQ961036911

究竟应该怎么接呢
回复 支持 反对

使用道具 举报

发表于 2012-8-4 15:45:26 | 显示全部楼层
LZ有没有试过走直线、转90度呢?
回复 支持 反对

使用道具 举报

发表于 2012-8-4 18:11:35 | 显示全部楼层
谢谢。。。
回复 支持 反对

使用道具 举报

发表于 2012-8-9 08:40:48 | 显示全部楼层

回复 支持 反对

使用道具 举报

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

本版积分规则

单片机开发者1群:235808606;会员QQ 6群:254085994; 1群:12835691(满); 2群:121061287(满); 3群:237320668(满);4群:249652919(满);5群:253578883(满);大赛1群:187926790(满),2群:231577758(满),3群:249652919(满)。 TI杯4群:58129202(满)。
载入中

QQ|手机版|小黑屋|Archiver|大连创客空间 ( 辽ICP备15004617号-2  

GMT+8, 2017-3-1 00:51 , Processed in 0.252279 second(s), 33 queries .

地址:辽宁省大连市高新园区火炬路7号17层 QQ:2401085253

Copyright © 2010-2015 创客空间(大连)科技有限公司 All Rights Reserved.

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