#define uchar unsigned char
#define uint unsigned int
sbit KEY1 = P3^2; //步进电机逆时针方向转
sbit KEY2 = P3^3; //步进电机顺时针方向转
sbit KEY3 = P3^4; //步进电机调速
uchar step = 0;
bit AB_flag = 0;
unsigned char code A_Rotation[8]={0x08,0x18,0x10,0x30,0x20,0x60,0x40,0x48}; //顺时针转表格
unsigned char code B_Rotation[8]={0x48,0x40,0x60,0x20,0x30,0x10,0x18,0x08}; //逆时针转表格
/
名称 : Delay_1ms()
功能 : 延时子程序,延时时间为 1ms x
输入 : x (延时一毫秒的个数)
输出 : 无
/
void Delay(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
void KEY(void)
{
if(KEY1 == 0) //按P32,实现步进电机的逆时针转动
{
#include<reg51h>
#define uchar unsigned char
#define uint unsigned int
uchar motor=P1^0;
sbit keystart=P2^0;
sbit keystop=P2^1;
void delay(uint x)
{
uchar j;
while(x--)
{
for(j=0;j<125;j++)
{;}
}
}
void main(void)
{
motor=0;
while(1)
{
if(keystart==1)
{
delay(10);
if(keystart==1)
motor=1;
else
motor=0;
while(keystart==1);
}
if(keystop==1)
{
delay(10);
if(keystop==1)
{
motor=0;
else
motor=1;
while(keystop==1);
}
}
}
}
转向要靠舵机输出pwm波形控制,最好是50hz
电机只是控制转速 控制占空比就可以了
void timer0() interrupt 1
{
d_count++;
if(d_count==d_num)
duoji=0;
if(d_count==480)
{
d_count=0;
duoji=1;
}
TH0=(65536-10)/256;
TL0=(65536-10)%256;
}
以上就是关于关于C8051单片机控制电机转动的编程全部的内容,包括:关于C8051单片机控制电机转动的编程、STC89C52单片机控制直流电动机的c程序、用l298n的模块去控制一个两线的直流电机,用单片机怎么用c语言编程才能控制电机的转速,谢谢各位!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)