|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
/*****************
步进电机驱动程序0.1
硬件不熟直接贴到代码里方便修改
stc15w204s
_______
P1.2--1 | | 16--P1.1
P1.3--2 | | 15--P1.0
P1.4--3 | | 14--P3.7
P1.5--4 | | 13--P3.6
P5.4--5 | | 12--P3.3
VCC --6 | | 11--P3.2
P5.5--7 | | 10--P3.1
GND --8 |_______| 9 --P3.0
***/
#include<STC15F2.h>
#include<intrins.h>//汇编指令调用头文件
//步进电机驱动程序
#define uint unsigned int
#define uchar unsigned char
sbit a=P1^1;//接步进电机A相
sbit b=P1^0;//接步进电机B相
sbit c=P3^7;//接步进电机C相
sbit d=P3^6;//接步进电机D相
sbit led=P5^5;//接个灯让程序循环一圈闪一下判断系统是否正常工作可不接
/**
1秒是1000ms
1秒1次,叫1hz
1秒100次,是100hz
每次动作,用50ms,那么1秒就能动20次
这个就是20hz
延时50是 20Hz,延时20是50Hz
**/
void Delay1ms() //@12.000MHz
{
uchar i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
void delay_n_ms(uint n) //自己定义的延时n毫秒函数
{
while(n)
{
Delay1ms();
n=n-1;//每循环一次n减小1
}
}
main()
{
uint y,j;
y=2; //经过试验Y的值调整范围2~100
//在这个范围可以正常转动超过这个范围就没法控制了
//数值越小转速越快500HZ为步进电机极限频率频率调整范围10HZ~500HZ
j=512;
//j的值为512是因为A B C D循环一次所转动的角度为0.7031
//乘以512刚好可以转动一周 0.7013*512=360
while(j--)
{
a=1;//电机A相通电
b=0;
c=0;
d=0;
delay_n_ms(y);//
a=0;
b=1;//电机B相通电
c=0;
d=0;
delay_n_ms(y);//
a=0;
b=0;
c=1;//电机C相通电
d=0;
delay_n_ms(y);//
a=0;
b=0;
c=0;
d=1;//电机D相通电
delay_n_ms(y);//
//程序循环到这里就刚好控制电机转动0.7013度循环512次刚好一周
led=~led;
}
}
|
| |