完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 白色的蜻蜓 于 2017-4-6 16:52 编辑
我想用一个51单片机对两个步进电机进行控制,一台是主轴电机,另一台是排线电机。其中once指的是一个中断信号,一旦once==0,那么排线电机就转过相应的角度。 我目前的情况是,来了中断信号后,排线电机能转过相应的角度,但是在排线电机转的同时,主轴电机就停转了。 控制主轴电机和排线电机的分别是两个循环,能不能不用模拟多线程,就用编程技巧实现两台电机同时转呢。 以下是程序片段 void Go(int x) { while(1) { PH1 = 0; //主轴电机的脉冲循环 delay(x); PH1 = 1; delay(x); if(keystop==0) { break; } if(once==0) { if(depth==0) {run(100);} //排线电机转90° if(depth==1) {run(200);} //排线电机转180° if(depth==2) {run(300);} //排线电机转270° if(depth==3) {run(400);} //排线电机转360° } } }
|
|
相关推荐
5个回答
|
|
不错哦,顶一下啊,
|
|
|
|
#include "reg52.h"
#define speed 2 /*******************定义脉冲及方向管脚****************************/ ***it PH1 = P1^0;//主轴输出脉冲 ***it zhuzhoucw = P1^1; ***it PH2 =P1^2;//排线输出脉冲 ***it paixiancw = P1^3; ***it once =P1^4; /*******************定义主轴电机控制键管脚****************************/ ***it keystart = P3^0; ***it keystop = P3^1; ***it key_addspeed =P3^2; ***it key_decspeed =P3^3; /*******************定义排线电机控制键管脚****************************/ ***it keyleft =P3^4; ***it keyright =P3^5; ***it key_adddepth =P3^6; ***it key_decdepth =P3^7; /*******************定义全局变量及函数****************************/ int num=0; //num为主轴电机挡位计数中的变量 int depth=1; //depth为排线电机宽度函数中的变量 void delay(int time); void Delay10ms(unsigned int c); void run(int y); /******************************************************************/ /*******************主轴电机调用函数说明***************************/ /******************************************************************/ /*******************主轴电机转速调节函数说明***************************/ void Go(int x) { while(1) { PH1 = 0; delay(x); PH1 = 1; delay(x); if(keystop==0) { break; } if(once==0) { if(depth==0) {run(100);} //排线电机转90° if(depth==1) {run(200);} //排线电机转180° if(depth==2) {run(300);} //排线电机转270° if(depth==3) {run(400);} //排线电机转360° } } } /*******************主轴电机脉冲延时函数说明***************************/ void delay(int time) { int i,j; for(j=0; j <= time; j++) for(i =0 ; i <= 5; i++); } /*******************主轴电机转速挡位计数函数****************************/ void zhuzhounum() { while(1) { if(key_addspeed==0) { Delay10ms(1); if(key_addspeed==0) { num++; if(num>=3) { num=3; } while(key_addspeed==0); } } if(key_decspeed==0) { Delay10ms(1); if(key_decspeed==0) { num--; if(num<=0) { num=0; } while(key_decspeed==0); } } if(keystart==0) { Delay10ms(1); if(keystart==0) {break;} } } } /*******************消抖延时函数****************************/ void Delay10ms(unsigned int c) //误差 0us { unsigned char a, b; //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } /******************************************************************/ /*******************排线电机调用函数说明***************************/ /******************************************************************/ /***************************************排线电机宽度调节说明**************************************/ void run(int y) { for(y=y;y>0;y--) { PH2 = 0; delay(5); PH2 = 1; delay(5); } } /*******************排线电机宽度计数函数****************************/ void paixiandepth() { while(1) { if(key_adddepth==0) { Delay10ms(1); if(key_adddepth==0) { depth++; if(depth>=3) { depth=3; } while(key_adddepth==0); } } if(key_decdepth==0) { Delay10ms(1); if(key_decdepth==0) { depth--; if(depth<=0) { depth=0; } while(key_decdepth==0); } } if(keystart==0) { Delay10ms(1); if(keystart==0) {break;} } } } /*******************排线电机方向数函数****************************/ void paixianfangxiang() { while(1) { if(keyleft==0) { break; } if(keyright==0) {paixiancw=0; break; } } } /*******************主函数****************************/ void main() { zhuzhounum(); paixianfangxiang(); paixiandepth(); while(1) { if(num==0) { {Go(5);} //主轴电机以速度1运行 break; } if(num==1) { {Go(10);} //主轴电机以速度2运行 break; } if(num==2) { {Go(15);} //主轴电机以速度3运行 break; } if(num==3) { {Go(20);} //主轴电机以速度4运行 break; } } } |
|
|
|
|
|
|
|
没搞过电机,只能帮你顶
|
|
|
|
学习一下 如果来些注释会更好
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
7 浏览 0 评论
26 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
13 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
644 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1000 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11771 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 18:04 , Processed in 0.706292 second(s), Total 84, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号