找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助,如何在原来基础上调节步进电机的速度!?

[复制链接]
跳转到指定楼层
楼主
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint tt0;
uchar temp,i=0,shu,flag,keynum;
uchar code table1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //zhen
uchar code table2[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //fang
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void init()
{
keynum=0;
EA=1;
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
ET0=1;
TR0=1;
}
void keyscan()
{
  P3=0xfe;
  temp=P3;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
   delay(1);
   temp=P3;
   temp=temp&0xf0;
    while(temp!=0xf0)
{
    temp=P3;
    switch(temp)
    {
     case 0xee:shu=1;
  break;
  case 0xde:shu=2;
  break;
  case 0xbe:shu=3;
  break;
  case 0x7e:shu=4;
  break;      
    }
   while(temp!=0xf0)
   {
    temp=P3;
    temp=temp&0xf0;
   }

}
  }
}
void main()
{
init();
while(1)
{
   keyscan();
if(shu==1&flag==1)
{
flag=0;
P0=table1[i];
i++;
if(i==8)
     i=0;
}
if(shu==2&flag==1)
{
flag=0;
P0=table2[i];
i++;
if(i==8)
     i=0;
}
if(shu==3&flag==1)
{
flag=0;
P0=0;
}
     
}
}
void timer0() interrupt 1
{
TH0=(65535-5000)/256;
TL0=(65535-5000)%256;
tt0++;
if(tt0==20)
{
flag=1;
tt0=0;
}
  
}


这个是最基本的控制步进电机正反的程序,但是如何调节速度呢?求各位分享一下!

步进电机原理图.jpg (124.51 KB, 下载次数: 184)

步进电机原理图.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:70751 发表于 2015-1-3 21:20 | 只看该作者
admin
求助ing!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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