C语言控制步进电机程序
1个回答
展开全部
#include <reg52.h>
sbit P0_0=P0^0;
sbit P0_1=P0^1;
unsigned char codes[2][8]={{0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03}, //9,18,36,45,54,63,72,81度 顺时针
{0x0b,0x09,0x0d,0x0c,0x0e,0x06,0x07,0x03}}; //9,18,36,45,54,63,72,81度 逆时针
unsigned char counts,flag,t;
// 度数,正/反转,速度控制
delay(unsigned char x) //延时
{
unsigned char i;
for( i=0;i<x;i++);
}
main()
{
TMOD=0x01; //定时器初始化
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(P0_0==0) //判断正转按键是否按下
{
delay(5);
if(P0_0==0) flag=0; //判断是否真正按下
}
if(P0_1==0) //判断反转按键是否按下
{
delay(5);
if(P0_1==0) flag=1; //判断是否真正按下
}
}
}
void motor() interrupt 1
{
t++; //控制速度
if(t==8)
{
t=0;
P1=codes[flag][counts]; //转动
counts++;
if (counts==8) counts=0; //角度重置
}
TF0=0; //重新计时
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
}
sbit P0_0=P0^0;
sbit P0_1=P0^1;
unsigned char codes[2][8]={{0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03}, //9,18,36,45,54,63,72,81度 顺时针
{0x0b,0x09,0x0d,0x0c,0x0e,0x06,0x07,0x03}}; //9,18,36,45,54,63,72,81度 逆时针
unsigned char counts,flag,t;
// 度数,正/反转,速度控制
delay(unsigned char x) //延时
{
unsigned char i;
for( i=0;i<x;i++);
}
main()
{
TMOD=0x01; //定时器初始化
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(P0_0==0) //判断正转按键是否按下
{
delay(5);
if(P0_0==0) flag=0; //判断是否真正按下
}
if(P0_1==0) //判断反转按键是否按下
{
delay(5);
if(P0_1==0) flag=1; //判断是否真正按下
}
}
}
void motor() interrupt 1
{
t++; //控制速度
if(t==8)
{
t=0;
P1=codes[flag][counts]; //转动
counts++;
if (counts==8) counts=0; //角度重置
}
TF0=0; //重新计时
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
恩普达工业
2024-04-28 广告
2024-04-28 广告
伺服驱动器的接线分为电源接线和信号接线两部分:电源接线:1. 将伺服驱动器的供电电源接到电源插座上。2. 确认电源插座的电压是否与伺服驱动器的电压匹配。3. 将电源线接入驱动器的电源输入端子。信号接线:1. 将伺服驱动器的控制信号线接到编码...
点击进入详情页
本回答由恩普达工业提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询