请求:单片机控制步进电机C语言编程

80C51单片机控制步进电机运动。认为步进电机是全步的,单片机P1.0控制电机方向,P1.1控制电机脉冲。P2.6接口控制键盘,键盘控制步进电机直线运动。当按下键时,单片机控制步进电机先前运动24MM,然后向后24MM到起点。其中在运动过程中,会遇到中断信号,P1.5接口的LED灯亮,但是电机仍继续运动,直到回到起点。其中单片机INT0接口接中断,步进电机75BF003。丝杠螺距0.5MM。C语言程序。谢谢
P1.0.P1.1.P2.6都是单片机的接口。实际上就是单片机控制步进电机运动,向前运动24MM。再向后24MM,在此运动过程中,会有中断信号传给单片机,单片机再接收到中断信号后,P1.5接口的LED亮,其中中断信号不打断步进电机运动。

你描述的要求不是很明了,应该分步描述,每一步的要求分步写出来,大家容易看懂.

明白你的意思了!

只有两个口控制步进电机的话,需要外加步进电机驱动器.
p1.0控制方向,p1.0是1(0)电机向前,p1.0是0(1)步进电机向后

p1.1控制步数和速度,用一个PWM就可以了,直接用定时器来控制.pwm频率越高速度越快,但要用在定时器中断里面计算步进的步数来确定走了多远.

至于你说的中断信号,可以用循环扫描的方法,在程序中扫描输入中断信号,当检测到信号后改变P1.5的电平,即可点亮LED
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-06
一楼说的步进电机驱动器对外置需要一个时钟,一个正反转控制信号,用这样的芯片自然简单,其实用单片机自己产生步进电机驱动信号也可以,之需要加晶体管驱动电路(加大驱动功率的作用),为了精确运动距离,首先得根据螺距算出要总共要转过的角度(多少圈领多少个脉冲)
至于中断信号可以将其设置成下降沿触发(电平触发会导致多次相应),不进电机驱动信号产生就用主函数中的主循环实现(设定好循环次数等固定信息)。
第2个回答  2009-06-05
我想杀了你

单片机控制步进电机要求:有加速、减速、停止、正转、反转按钮,电机是四...
我用的是控制一个步进电机的,这个是我以前写的,你的要求在下面的程序做修改就行了;程序如下:include <reg52.h> define uchar unsigned char define uint unsigned int \/\/uchar table[]={0x18,0x30,0x60,0x48,0x48,0x60,0x30,0x18}; \/\/二相励磁 uchar table[]={0x08,0x10,0x20,0x...

单片机C语音控制步进电机正反转程序
首先,定义步进电机的四相绕组为A、B、C、D,通过脉冲控制其正反转。正转控制代码示例:c include define DELAY_1 0.001s void delay(int n){ int i;for (i = 0; i < n; i++);} void main(){ while (1){ \/\/ AB→BC→CD→DA→AB顺序脉冲输入 \/\/ 步进电机正转 P1 = 0x01; ...

求用51型的单片机控制步进电机,要求步进电机转90度后停5秒,再转90度...
另一种是带脉冲分配的,单片机发过来一串方波脉冲,脉冲个数决定转动的步数,另外输出一个控制正转和反转的信号 这两种驱动器的单片机程序当然是不一样的 用C语言编程很简单:(第一种驱动器)for(i=0;i<4;i++){ for(j=0;j<3;j++)\/\/循环3次每次4步,12步是90度 { P0=1;delay_ms(2);...

求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的
include<reg52.h> \/\/#include"delay.h" \/\/在本文件中加入一个延时函数,或添加带有延时函数的.c文件 unsigned char code table1[]={0x00,0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};\/\/0x00表示停止转动 \/\/ \/\/bit flag;\/\/正反转标志 void delayus(unsigned int t) \/\/延时函数...

求单片机c语言控制步进电机调速程序
给你一段简单的程序代码,控制步进电机的,不过你要好好看看程序的编写,以适应你的硬件(主要是连线),你可以在实现这个的基础上实现你所说的目标,个人觉得你参考这个程序然后自己实现你所说的功能比较好:include unsigned char code f_rotation[4]={0x08,0x10,0x20,0x40};\/\/正转表格 unsigned ...

步进电机驱动程序C语言
步进电机控制程序(c语言+51单片机)include<reg51.h> define uint unsigned int define uchar unsigned char define ms *77 \/\/ f = 12 M define LEDLen 4 define Dj_star() {IE=0x81; pri_dj=0; } define Dj_stop() {IE=0x00; pri_dj=1; P1=0xff; shache="0"; delay(800ms);...

关于51单片机控制步进电机编程(c语言),求助
include <reg52.h> define uchar unsigned char define uint unsigned int uchar key_l,key,i;uchar code temp1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};uchar code temp2[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};uchar code aa[16]=" :";uchar code smg[...

用单片机控制步进电机正反转,简单易懂的C语言程序,最好带注释,步进电机...
看题主的情况应该是不太了解编程,向你推荐表控,在不会编程的情况下,可以利用中文表格设置轻松实现步进电机的正反转。具体参见下图:第1行设置由输入端X1作为启动,Y1输出3万个脉冲,脉冲频率600赫兹(每秒600个脉冲的频率),由于只有Y1输出脉冲,没有设置方向输出端,所以电机正转。第3、4行由X2...

如何用单片机来控制步进电机,并用两盏灯分别来表示其正反转! 大侠可以...
程序名称: 按键控制电机正反转 p1.0键为反转 p1.1键为停止 p1.2键为正转 \/ \/*头文件*\/ include <reg52.h> include <intrins.h> define uint unsigned int define uchar unsigned char define _Nop() _nop_()\/*端口定义*\/ define motor P0 \/*步进电机接口*\/ sbit P12 = P1^2;...

怎样用单片机控制步进电机转速
这个程序主要讲一下motor_turn里面的数据处理部分,不晓得大家是否看懂了。由于电机的旋转一周需要的指令个数是8*8*64=4096,所以旋转一度需要的指令数为4096\/360,那么我要旋转N度,要发送的指令数为N*4096\/360,看看是不是和程序里写的一样呢。当然,如果你约分的话,N将会容纳更多角度而不溢出。

相似回答