资源简介
//两相5、6线步进电机,分为四拍和八拍,这里介绍输出八拍方式:A-AC-C-CB-B-BD-D-DA

代码片段和文件信息
//两相5、6线步进电机,分为四拍和八拍,这里介绍输出八拍方式:A-AC-C-CB-B-BD-D-DA
//四拍:A-C-B-D,因此在八拍的基础上减去中间的就可以了,不过步距角要大一倍
#include
#include
sbit la=P2^0; //定义两相电机的四组线,从板上设计来分配,选择P2口的低四位输出相应的输出也可以反应在LED灯上
//P2。0为A相,P2。1为B相,P2。2为C相,P2。3为D相
sbit lb=P2^1;
sbit lc=P2^2;
sbit ld=P2^3;
#define uchar unsigned char
code unsigned int lhj[]={1501001508011005001204003080050100
150120020080140020150130020090050150};
//定义电机动作的参数,每三个数为一组,第一个是方向(1、正转,0、反转)
//第二个是步进量,第三个是转速
unsigned char key();//键盘动作,这里的键盘扫描只用到四个按键有效(板上标的0,4,8,C)
unsigned char right(unsigned int Speedunsigned int road); //正转
unsigned char left(unsigned int Speedunsigned int road); //反转
void mDelay(unsigned int DelayTime); //延时函数
void main()
{
uchar i=0;
while(1){
if(key()==0xde){//8的按键按下
for(i=0;i<34;i+=3){//循环输出我们定义好的动作数据
if(lhj[i]) //调入数组,先判断正反转
right(lhj[i+1]lhj[i+2]); //两个参数代表步进量和转速
else
left(lhj[i+1]lhj[i+2]);
if(key()==0xee)//C的按键按下
break;
}
}
}
}
unsigned char right(unsigned int Speedunsigned int road)//两个参数代表步进量和转速
{
//步进节拍:A-AC-C-CB-B-BD-D-DA
while(1){
if(!Speed) //判断步进量走完没?以下都是,每走一步,判断一次
break;
ld=1;
la=0; //a
mDelay(road);//这里的延时就可控制转速
if(!Speed--)
break;
lc=0; //ac
mDelay(road);
if(!Speed--)
break;
la=1; //c
mDelay(road);
if(!Speed--)
break;
lb=0; //cb
mDelay(road);
if(!Speed--)
break;
lc=1; //b
mDelay(road);
if(!Speed--)
break;
ld=0; //bd
mDelay(road);
if(!Speed--)
break;
lb=1; //d
mDelay(road);
if(!Speed--)
break;
la=0; //da
mDelay(road);
Speed--;
}
P3=P3|0x0f;//将四个脚输出置高
}
unsigned char left(unsigned int Speedunsigned int road)//两个参数代表步进量和转速
{
//步进节拍A-AD-D-DB-B-BC-C-CA
while(1){
if(!Speed)//判断步进量走完没?以下都是,每走一步,判断一次
break;
lc=1;
la=0; //a
mDelay(road);
if(!Speed--)
break;
ld=0; //ad
mDelay(road);
if(!Speed--)
break;
la=1; //d
mDelay(road);
if(!Speed--)
break;
lb=0; //db
mDelay(road);
if(!Speed--)
break;
ld=1; //b
mDelay(road);
if(!Speed--)
break;
lc=0; //bc
mDelay(road);
if(!Speed--)
break;
lb=1; //c
mDelay(road);
if(!Speed--)
break;
la=0; //ca
mDelay(road);
Speed--;
}
P3=P3|0x0f;//将四个脚输出置高
}
void mDelay(unsigned int DelayTime) //延时函数
{
unsigned char j=0;
while(DelayTime--){
for(j=0;j<10;j++){}
}
}
unsigned char key()//键盘扫描是否有键按下,这里只扫描一列四个键,其它不用
{
uchar KeyV;
P0=0xfe;
KeyV=P0;
if(KeyV==0xfe)//只扫描一列
return(0);
mDelay(100);
KeyV=P0;
if(KeyV==0xfe)
return(0);
else
return(KeyV);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3147 2008-08-07 21:06 新建文件夹\两相5、6线步进电1.c
文件 3249 2008-09-06 21:01 新建文件夹\两相5、6线步进电2.c
目录 0 2010-06-27 21:51 新建文件夹
----------- --------- ---------- ----- ----
6396 3
- 上一篇:银行家算法的设计与实现 操作系统课程设计
- 下一篇:IC验证的一些理解
相关资源
- 欧姆龙CP1系列单轴定位PLC程序.cxp
- MFC程序-碰撞的小球
- dsp2812上128点FFTc程序以及其CMD文件
- HX711 称重传感器 C程序
- 一则可以随机产生四则运算的c程序!
- 单片机AT89s52控制GSM模块TC35i发短信,
- 通信原理各种调制与解调的C程序
- 带时间温度显示的室内灯光控制系统
- 单片机控制的步进电机正反转和加速
- 编译原理:LR分析程序
- OMRON NJ系列PLC程序.smc2
- 欧姆龙以太网通讯TCP/UDP及欧姆龙PLC程
- ADC0832ADC0809DAC0832三种芯片程序,c程序
- AVR_GCC程序设计基础
- 西门子S7200PLC程序
- RC522 M1卡 S50卡刷卡c程序 项目在用程序
- 中央空调室内智能温控器设计论文、
- 简单的C程序游戏-三国杀
- 51单片机125Khz ID卡读卡程序
- 出租车计价器仿真和C程序
- 自动停车场的PLC程序图
- 智能家居照明控制系统设计proteus仿真
- AD7745/1D7746 c程序
- ADC0808 数字电压表仿真+C程序
- C8051F340 SMBus的c程序代码
- C程序设计第五版源代码 谭浩强
- 西门子1200与Labview通过以太网通信内含
- CYPRESS USB上位机VC程序
- ATTINY24A 接收IIC程序控制直流电机
- 基于单片机的GPS定位系统设计内附完
评论
共有 条评论