谁知道用一个51单片机控制两个步进电机,实现一个电机快转,同时另一个慢转的程序怎么写?

来自:排名    更新日期:早些时候
51单片机控制步进电机,怎么样使它更快转动??可以实现一个单片机控制四个步进电机吗?思路是是什么?~

51单片机没有硬件PWM口,需要用定时器模拟,模拟的话一个沿就进一次中断反转电平,效率不太高.很多扩展型51含有硬件PWM输出(STC12系列)你说的控制是什么,控制转速么,还是位移?控制转速还有希望.理论的话一个定时器就可以(效率很低,在中断里判断计数值来改变4个IO不同反转频率).如果是位移的话,有点麻烦,还要分别计算累加值.

编一个简单的吧,控制两相电机。#include#define uchar unsigned charuchar step[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};void delay(uchar sd){uchar i,j;for(i=0;i<sd;i++)for(j=0;j<120jj++);}main(){uchar i,j;while(1) { for(j=0;j<10;j++) for(i=0;i<8;i++) { P0=step[i]; delay(3); } for(j=0;j<10;j++) for(i=0;i<8;i++) { P0=step[i]; delay(6); } }}求;用51单片机编写最简单的程序,C语言,使步进电机转动,间歇式转动,快慢交替转动

PWM波,实现占空比不同,没有PWM的单片机可以用软件延时
PWM波:例如方波,是高电平很低电平时间相同,PWM波是高低电平时间不同,利用两个输出口控制两个电机。具体说起来挺多的,也不一定让你明白。
建议你去看PWM波的资料就行

用定时器产生PWM波,两个定时器均用,但最好是用有PWM的单片机

我用了两个定时器,但好像两个电机会发生干扰,两个电机不能同时转

是不是驱动能力的问题?有没有使用专用的驱动芯片?

一个定时器足够,关键要看你的电路是怎么样的


谁知道用一个51单片机控制两个步进电机,实现一个电机快转,同时另一个慢转的程序怎么写?视频

相关评论:
  • 1779520871251单片机汇编语言程序,一个按键控制两个发光二极管的同时闪烁,交替闪烁...
    水国图;P1.0 P1.1接2LED,P2.0接一按键。上电2LED不亮,按第1 次键2LED同时以1S周期闪烁,按第2 次 2LED轮流1S闪烁...同此循环。;11 04 17 ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 30H MAIN:MOV TMOD,#01H ;MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 MOV R0,#10 K...

  • 1779520871251单片机 用一个定时器实现两个功能
    水国图\/\/定时器中断 10mS中断一次 void timer0_isr(void) interrupt 1 { if(flag == 0){ \/\/这里是第一件事情 flag = 1;\/\/在主程序处理完第一件事,将此标记清除 } if (++ucCount == 100) \/\/累加100次达到1秒 { ucCount = 0; \/\/复位计数 ioLED = !ioLED;\/\/这是第二件事情,实现...

  • 1779520871251单片机怎么通过一个管脚控制另一个管脚?
    水国图是引脚,不是管脚。行列式键盘,就是这种控制方法。去掉按键,把引脚直接连在一起,即可。

  • 1779520871251单片机c程序用定时器控制两个数码管显示0到59,一直没弄懂段位和位选...
    水国图数码管 的 一位 数字 称一个位,两个数字为 两位,三个---,每个数字 有 八个段 为 a b c d e f g h,(h 为小数点)数码管 有 两位一体的、三位一体的,四位一体的等,如四位一体的数码管有12个脚,分为 a b c d e f g h 八个 段码脚,四个 ...

  • 1779520871251单片机怎么同时执行两个任务
    水国图51单片机是一种基于哈佛结构的单片机,其指令和数据存储在不同的存储器中,因此可以实现同时执行两个任务。具体来说,51单片机可以通过使用中断技术来实现同时执行两个任务。例如,我们可以将一个任务作为主程序,另一个任务作为中断服务程序,在主程序执行的过程中,当中断事件发生时,CPU会立即跳转到中断...

  • 17795208712L298芯片通过51单片机控制两个直流电机,要求两个电机都可以 独立(互不...
    水国图下面是我写的一个小程序,在protues中仿真过,相互独立。下面是定时器的程序:\/\/两个电机的速度用参数G_pwm_num0,G_pwm_num1来控制,out1~out4分别接两个电机(具体对应关系你看一下就明了)。include<reg51.h>#include<intrins.h> define uchar unsigned char define uint unsigned int sbit ...

  • 17795208712求51单片机通过L298控制两电机,要求一按键闭合后,电机先反转,然后左 ...
    水国图希望能够帮到你;include<reg52.h> \/\/包含单片机寄存器的头文件 define uchar unsigned char define uint unsigned int \/***电机驱动端口***\/ sbit m1z=P2^0 ;sbit m1f=P2^1 ;sbit m2z=P2^2 ;sbit m2f=P2^3 ;sbit k0=P1^0 ;sbit p2=P2^4;uchar count=0;uchar n=0;void delay...

  • 1779520871251单片机,用两个按键分别控制两个led,一个亮\/灭,另一个闪烁\/灭,为什么...
    水国图你的led1=~led1;这个语句没有循环,所以只会反转一次。要么加循环,要么再写一个闪烁函数。void led_filcker(usigned char x){ while(x){ led1=~led1;x--:} } 如果你是想,按一下,松开也会闪烁,再按一下熄灭。你得定义一个变量来表示按键的按下。include<reg52.h> define uchar ...

  • 1779520871251单片机一个定时器控制两个舵机。
    水国图输出没有问题,你看一下你输出PWM电压信号的有效电压,是否太小,而不能驱动舵机。

  • 17795208712关于51单片机使用两个定时器进行控制的问题
    水国图{ if(aa==20){ aa=0;D1=1;\/\/LED亮,持续亮两秒,TF1=0;TF0=1;} if(bb==40){ bb=0;D1=0;\/\/LED灭一秒 TF0=0;TF1=1;} } 并且在程序开始处开启定时器1(也就是先执行的定时器),但是要注意,你现在是两个定时器同时工作,应该在if中关闭当前的定时器,并打开另一个...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网