问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

51单片机, 编一个控制步进电机转动的程序。

发布网友 发布时间:2022-04-24 23:03

我来回答

2个回答

热心网友 时间:2023-08-07 09:38

#include <reg51.h> //51芯片管脚定义头文件
#include <intrins.h>//内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint unsigned int

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

/********************************************************/
/*
/* 延时t毫秒
/* 11.0592MHz时钟,延时约1ms
/*
/********************************************************/
void delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<125; k++)
{ }
}
}
/********************************************************/
/*
/*步进电机正转
/*
/********************************************************/
void motor_ffw(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //转1×n圈
{
for (i=0; i<8; i++) //一个周期转30度
{
P1 = FFW[i]; //取数据
delay(15); //调节转速
}
}
}
/********************************************************/
/*
/*步进电机反转
/*
/********************************************************/
void motor_rev(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //转1×n圈
{
for (i=0; i<8; i++) //一个周期转30度
{
P1 = REV[i]; //取数据
delay(15); //调节转速
}
}
}
/********************************************************
*
* 主程序
*
*********************************************************/

main()
{
while(1)
{
motor_ffw(5); //电机正转
delay(5000); //换向延时
//motor_rev(5); //电机反转
//delay(1000); //换向延时
}
}

/********************************************************/

热心网友 时间:2023-08-07 09:39

使用单片机直接发脉冲的话,低速可以,但是速度快了或者需要低速加速到高速运行,两个或者多个电机协同运行的时候,单片机就没有办法了。这种情况可以考虑使用单片机加专用运动控制芯片,比如hmc8033,8045多轴运动控制芯片,高速插补T型S型加减速由芯片完成,单片机就发送指令就可以了,使用非常简单
如何用c51编写51单片机控制步进电机转动程序

A=( 50h ),SP=( 50h ),(51H)=( 30h ),(52H)=(50h ),PC=( 5030h )pc总是指向下一条指令的首地址的。但是在返回的时候得看堆栈中的数了。上面程序执行完之后:(A)=50H;sp=50H(因为在程序中,sp减了两次,后来又加了两次,在程序最后ret有在返回的时候减了两次...

求51单片机控制步进电机程序

void MOTOR(void){ //步进电机正反转一步子程序 code unsigned char MOTOR_DB[]={0x00,0xb0,0x90,0xd0,0x50,0x70,0x60,0xe0,0xa0,0x00};//定义电机输出编码 unsigned char i;MOIC=0; //开电机电流 i=0; //电机输出编码初值设00 CBB=10; //设减小电机电流时间设为10 i...

51单片机控制步进电机

我们采用P1口来采集ADC0832的8位数据,用P0.0口控制步进电机动作,利用T0的时间中断来采集P1口的ADC0832数据并做出比较后设置步进电机启动标志位start=1;并设置他的运行频率,当然,楼主没说怎么比较,我这就只是写了个简单的例子,一通百通,希望对你有帮助 下面是程序:include &lt;reg51.h&gt; //选用...

求keil-c51单片机控制步进电机运行的点动程序,一定要是点动功能的程序...

while(!key);//等待键抬起 num++;//计数值加1 num&amp;=0x07;//计数值调整,使之不大于7 P0=step[num];//送步进数据 for(i=0;i&lt;120;i++);//延时约1毫秒 } }

一个51单片机同时控制2个步进电机的C语言程序

include "string.h"include "math.h"xdata unsigned char PA _at_ 0x7f00;xdata unsigned char PB _at_ 0x7f01;xdata unsigned char PC _at_ 0x7f02;xdata unsigned char caas _at_ 0x7f03; //控制字 sbit P32=P3^2;sbit P33=P3^3;sbit P35=P3^5;define uchar unsigned char define ...

51单片机,如何给一个指令控制步进电机转动90度,再给另外一个指令,反转...

1、首先看看步进驱动器的细分设定,找出转动一圈需要的脉冲个数,再计算出转动90°需要的脉冲个数N;2、根据接线,使单片机的IO端口输出高电平或低电平,控制转动方向;3、根据需求的转动速度,设定定时器的定时常数,启动定时;4、在定时器的中断程序中,取反IO端口,如CPL P1.1,并计数。使单片机...

关于51单片机控制步进电机编程(c语言),求助

e=1;delay(50);e=0;delay(50);} void w_dat(uchar dd){ rs=1;rw=0;e=0;delay(50);P0=dd;e=1;delay(50);e=0;} void init(uchar smg4[],uchar time[]){ w_cmd(0x38);delay(2000);w_cmd(0x38);delay(500);w_cmd(0x38);//注意顺序 ,设置工作方式,显示模式设置 delay(...

51单片机驱动步进电机,能正反转,键盘调速,数码管显示转速

void delay(unsigned int t);sbit F1 = P1^0;sbit F2 = P1^1;sbit F3 = P1^2;sbit F4 = P1^3;unsigned char code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反转 unsigned char code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正转 unsi...

求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的

if(flag) //flag=1;为正转 { switch(t) // 选出几级速度 { case 1: zz=4;break;case 2: zz=3;break;case 3: zz=2;break;case 4: zz=1;break;} for(i=1;i&lt;=8;i++) //实现转动 { P1=table1[i];delayus(zz*100); //100可以改,晶振不同有所不同,直到...

求51单片机步进电动机控制设计程序

51单片步进电机控制原理与控制设计程序 51单片步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。51单片步进电机区别于其他控制电机...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
手机通过qq下载的word文档查看方式设置了始终用qq打开怎么再用wps打 ... ...第二张照片里手搭在那女孩肩膀上 好让我装逼装逼一次5.1 求专业P图选手,专注装逼行业三年以上的大神帮我P张图,黑白水墨效果,P图... 2023高考后去哪里旅游合适 高三毕业旅游最佳去处推荐 金华市社会保险自助的缴纳方式有哪些? 2022高考完国内去哪里旅游好 高考结束后游玩旅行最佳去处 1983年2月18号(农历正月初六)生日密码 石猴出世一章中石猴寻得一宝d间石桥旁一块石碣上书什么什么? 高考完之后去哪里玩,高考后暑假旅游推荐避暑 一个账户可以绑定几张银行卡? 这个无土栽培管道中的韭菜多久割一次呢? 夏季种植韭菜,几天割一次比较好? 韭菜一个月割几次为好? 韭菜每隔多久割一次比较好? 韭菜多长时间割一回 EXCEL中这个函数怎样处理 excel公式 =I4-I6-I8-I9-I10-I11-I13-I14-I15 出现#value 是怎么回事?急急急 !!! 一个Excel表格只输入编号,如何导出另一个表格的数据? 我说的编号是Exceli表格本身打开最左 巧克力煮大米吃了会中毒么? excle怎么样能打出希腊数字 I II III ? EXCEL中=ROUND(H_PT(I64,I65),2)是什么意思,特别是H_PT 煮熔巧克力有什么方法? Excel对象程序库(I)丢失或损坏 谁能教我?买那种一大块的巧克力煮融化后,是不是要加的什么材料呢?_百 ... 求解:Excel中如何输入I-1、II-1、I-2、II-2、I-3、II-3、I-4、II-4.......之类的数 excel 中如何使用希腊数字排序i ⅠII Ⅲ Ⅳ这样排序呢?? 白巧克力怎么煮的做法 做巧克力 煮到多少度 就可以了 巧克力能用热水煮吗 巧克力是怎么煮制的 一年中最后一茬韭菜什么时候割 51单片机 编一个控制步进电机转动的程序 韭菜苗栽下多久才能割? 关于51单片机控制步进电机编程(c语言),求助 韭菜多少天割一茬? 单片机控制步进电机的原理? 用单片机对步进电机进行控制 韭菜多久割一次有回答吗 如何用单片机控制步进电机步数 韭菜移栽后几天收割 求单片机控制步进电机的C语言程序,急啊 单片机控制步进电机 单片机控制步进电机的程序编写 单片机控制步进电机? 单片机控制步进电机汇编程序 请求:单片机控制步进电机C语言编程 单片机怎么控制步进电机 求单片机c语言控制步进电机调速程序 如何用单片机实现对四个步进电机的速度控制呢 单片机步进电机控制器
  • 焦点

最新推荐

猜你喜欢

热门推荐