标题:
[求助]求步进电机加减速控制程序,单片机的C51语言程序,要是用定时器实现的加减速控制。
[打印本页]
作者:
xuxiaoqmm
时间:
2012-7-5 08:38
标题:
[求助]求步进电机加减速控制程序,单片机的C51语言程序,要是用定时器实现的加减速控制。
就是为了步进电机有一个比较高的速度启动时让步进电机有一个加速过程,从而得到比较高的速度,现在就要求用定时器中断来完成,大神会的指导一下小弟,非常的感谢!
作者:
青苹果
时间:
2012-7-5 09:15
步进电机的速度快不到哪里去哦
作者:
xuxiaoqmm
时间:
2012-7-5 11:01
我现在不加减速的话速度只能到300多,我现在需要它到600多,版主知道怎么弄么?最好能有程序,感谢了。
作者:
青苹果
时间:
2012-7-5 12:41
延时减短就可以
作者:
xuxiaoqmm
时间:
2012-7-5 14:48
延时是可以,但是我现在需要用定时期来延时,因为我需要同时控制两个电机运行。我是通过给定时器赋值,然后改变这个值弄的,但不明白为什么就是实现不了,这是我的程序,麻烦帮我看一下,有没有什么错误。
// 加大转速 加减速过程
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit A1=P1^0; //定义脉冲输出
sbit B1=P1^1; //定义方向输出
unsigned int i=0;
unsigned int j=1000;
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-j)/256;//TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
TL0=(65536-j)%256; //TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
Init_Timer0();
while(1);
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr() interrupt 1
{
TH0=(65536-j)/256;
TL0=(65536-j)%256;
if(i<=80) // 匀速
{
B1=0; // 正方向
A1=~A1; //用示波器可看到方波输出
i++;
j=j-10;
}
if(i>80&&i<=6000) // 匀速
{
B1=0; // 正方向
A1=~A1; //用示波器可看到方波输出
i++;
}
if(i>6000&&i<=6080) // 减速
{
B1=0; // 正方向
A1=~A1; //用示波器可看到方波输出
i++;
}
if(i>6080) // 停
{
TR0=0;
}
}
作者:
bittianlei
时间:
2012-7-7 23:47
“interrupt 1”中,数字有没有错误
作者:
传文ING
时间:
2012-7-8 14:09
能否将MAIN()的主程序也放上来看看呢?
作者:
hufter
时间:
2019-4-19 21:55
我现在也遇到了和楼主一样的问题,楼主解决了没
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1