步进电机控制方法
protues仿真图
单片机源程序如下:
- /*****************步进电机控制口定义*******************/
- #define BYJ48 P2
- /****************步进电机控制数组定义******************/
- //uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //四相八拍正转编码
- //uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; ////四相八拍反转编码
- uchar code FFW[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
- uchar code REV[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
- /********************************************************
- 函数名称:void delay2(uint t)
- 函数作用:毫秒延时函数
- 参数说明:
- ********************************************************/
- void delay2(uint t)
- {
- uint k;
- while(t--)
- {
- for(k=0; k<90; k++)
- { }
- }
- }
- /********************************************************
- 函数名称:void motor_z()
- 函数作用:步进电机正转
- 参数说明:转5.625°角度
- ********************************************************/
- void motor_z()
- {
- uchar i;
- uint j;
- for (j=0; j<4; j++) //8*8=64个脉冲转5.625°
- {
- for (i=0; i<4; i++)
- {
- BYJ48 = ((P2&0xf0)|FFW[i]);//取数据
- // delay2(5); //调节转速
- }
- }
- }
- /********************************************************
- 函数名称:void motor_f()
- 函数作用:步进电机反转
- 参数说明:转5.625°角度
- ********************************************************/
- void motor_f()
- {
- uchar i;
- uint j;
- for (j=0; j<4; j++) //8*8=64个脉冲转5.625°
- {
- for (i=0; i<4; i++)
- {
- BYJ48 = ((P2&0xf0)|REV[i]);//取数据
- // delay2(5); //调节转速
- }
- }
- }
复制代码
Keil代码与Proteus8.8仿真下载:
自动门.zip
(126.66 KB, 下载次数: 127)
|