|
本帖最后由 pxhxkij 于 2025-7-24 09:14 编辑
诶,懂的不难,我这菜鸟就很难了,89C52上测试可以连续正反转,但是停下后反转单独测试无法运行。不知道我用的共阳输入问题还是别的,没找到原因。
网络上找的代码。
- //程序说明:
- //当单片机P2.0口得到一个低电平信号时,步进电机正转;
- //当单片机P2.1口得到一个低电平信号时,步进电机反转;
- //当单片机P2.2口得到一个低电平信号时,步进电机加速运转;
- //当单片机P2.3口得到一个低电平信号时,步进电机减速运转;
- //*********************************************************************/
- #include<reg52.h>
- //#include<__STC8G_H__.h>
- //#define__STC8G_H__
- #define uchar unsigned char
- #define uint unsigned int
- uchar Y=10; //初始化速度
- uint qs=0;
- /********************************************************
- 控制位定义
- ********************************************************/
- sbit shi_neng=P1^0; // 使能控制位
- sbit fang_xiang=P1^1;// 旋转方向控制位
- sbit mai_chong=P1^2; // 脉冲控制位
- sbit zheng_zhuan=P2^0; // 正转
- sbit fan_zhuan=P2^1; // 反转
- sbit jia_su=P2^2; // 加速
- sbit jian_su=P2^3; // 减速
- /********************************************************
- 延时函数
- ********************************************************/
- void delay(uchar i)//延时函数
- {
- uchar j,k;
- for(j=0;j<i;j++)
- for(k=0;k<180;k++);
- }
- /********************************************************
- 加速函数
- ********************************************************/
- void jia()
- {
- Y=Y-1;
- if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不变
- }
- /********************************************************
- 减速函数
- ********************************************************/
- void jian()
- {
- Y=Y+1;
- if(Y>=100){Y=100;}
- }
- /********************************************************
- 主函数
- ********************************************************/
- main()
- {
- shi_neng=0; // 使能控制位
- fang_xiang=1;// 旋转方向控制位
- mai_chong=1; // 脉冲控制位
- while(1)
- {
- if(zheng_zhuan==0){shi_neng=1;fang_xiang=1;qs=0;while(!zheng_zhuan);delay(10);}
- if(fan_zhuan==0){shi_neng=1;fang_xiang=0;}
- if(jia_su==0){delay(10);while(!jia_su);jia();}
- if(jian_su==0){delay(10);while(!jian_su);jian();}
- if(qs<=3200)
- {
- qs++;
- mai_chong=~mai_chong; //输出时钟脉冲
- }
- delay(1); //延时(括号内数值越小,电机转动速度越快)
-
- }
- }
- /********************************************************
- 结束
- ********************************************************/
复制代码 73行没有延时,加上后反转可以运行了。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|