用c语言编写控制电机运动的程序

我想学习如何用c语言编写控制电机运动的程序,我有一定的c语言基础,但是不知道实际中如何实现对电机的控制,我需要什么软件?怎么才能有可视化的界面?我对电机不是很懂,需要看什么书

1、有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以。
2、例程:

#include <reg51.h>  //选用晶振11.0592MHz
unsigned char k=0;  //k表示正反转次数
sbit X0=P3^2;     //调节按钮
sbit X1=P1^1;     //上限位接近开关信号
sbit X2=P1^2;     //下限位接近开关信号
sbit Y1=P0^0;     //电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电机点动的影响)
sbit Y2=P0^1;     //电机下降
void delay50ms(unsigned int i)

  unsigned int j;
  for (i;i>0;i--)
    for(j=46078;j>0;j--);
}
main()
{
   IT0=1;       //下降沿触发
   EX0=1;       //开P3.2外部中断
   EA=1;        //总中断开  
   while(1)
   while(k)
   {
      Y1=0;        //正转
      while(X1==1);       //等待正转接近开关反应
      Y1=1;          //正转停
      delay50ms(1);     //停止时间50ms
      Y2=0;     //反转
      while(X2==1);     //等待反转接近开关反应
      Y2=1;    //反转停
      k--;     //圈数减一   
   }
}
void  counter0(void) interrupt 0
{
   k++;     //外部中断控制圈数加一
   //这个位置可以加你显示程序
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-19
用pwm信号改变电机的转速
第2个回答  2014-03-20

看看这个就会了!!

第3个回答  2014-03-19
要看你控制的是什么电机 步进电机最简单 直流电机要难一点 你要是是控制直流电机和交流电机的话 你先要看的书是电机与拖动 看完了以后再看自动控制原理 然后再看 电力拖动自动控制系统 然后在看计算机控制技术 这是我们自动化专业大二和大三的所有学位科 要想控制好电机 这些课程缺一不可 你要设计 反馈的话还学要传感器与检查的知识本回答被网友采纳

用c语言编写控制电机运动的程序
1、有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传...

求一段控制电动机的C语言程序
\/\/电机转动 void motor_run() interrupt3 { if(n<PWM_H) motor=1;else motor=0;n++;if(n>=4) n=0;} \/\/速度控制,4级速度可调:0、1、2、3; 对应占空比:0、1\/4、2\/4、3\/4 void motor_set(unsigned char v){ if (v>3) v=3;if (v == 0)TR1 = 0;else { TR1 =...

步进电机驱动程序C语言
sbit bujin_zx_stop = P3^3; \/* 接步进电机 ,正向到位传感器 ,为 0 停机 *\/ sbit bujin_fx_stop = P3^4; \/* 接步进电机 ,反向到位传感器 ,为 0 停机 *\/ sbit shache = P3^5; \/* 接刹车控制继电器 0 电位有效 *\/ sbit pri_dj = P3^6; \/* 接主...

用c语言程序实现步进电机的正反转加减速的编程
内容:1、本程序用于测试4相步进电机常规驱动 2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来 3、速度不可以调节的过快,不然就没有力矩转动了 4、按s4(设置成独立按键模式)可以控制正反转 ---*\/ include <reg52.h> bit Flag;\/\/定义正反转标志位 unsigned char code ...

c语言编写步进电机程序,正转,反转,有6档转速5转\/S、2.5转\/S、1.25转\/...
不同的驱动电路或者驱动器的编程是不一样的#include#defineunitunsignedint#defineucharunsignedcharsbitkey=P1^1;\/\/定义键盘接线口unsignedcharcodeF_Rotation[4]={0x01,0x02,0x04,0x08};\/\/正转表uchara;voidDelay(unsignedinti)\/\/延时{while(--i);}voidrun()\/\/转11圈子程序{unsignedchari,...

用C语言实现步进电机正反转控制程序和电路图,求帮助。
我有程序,电路图可以在程序中看出,include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int sbit key1=P3^7;sbit key2=P3^6;sbit key3=P3^5;uchar kz,i=200;uchar zhengzhuan[]={0xf3,0xf9,0xfc,0xf6};uchar fanzhuan[]={0xf3,0xf6,0xfc,0xf9}...

求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的
void qudong(unsigned char t,bit flag) \/\/ t范围0~4控制转速,flag表示正反转 { unsigned char zz,i;if(t) \/\/ 先判断t是否为0,如果是,就没必要进行下面的判断 { if(flag) \/\/flag=1;为正转 { switch(t) \/\/ 选出几级速度 { case 1: zz=4;break;case 2: zz=...

单片机控制电机正反转动的c语言程序
首先要看你的电机是直流电机还是步进电机。直流电机就简单了,只有两根线,电机两端电压正负极改变就可以实现正转反转。不过要加电机驱动芯片,或者H桥电路,电机驱动芯片可以选择L298N,加上适当的外围电路就可以直接用单片机控制电机了。比如让单片机P1.0 = 0,P1.1 = 1;(单片机I\/0口要与电机驱动...

关于51单片机控制步进电机编程(c语言),求助
w_cmd(0x0c);\/\/显示及光标模式设置 w_cmd(0x80);\/\/ for(i=0;i<16;i++)w_dat(time[i]);w_cmd(0x80+0X40);for(i=0;i<16;i++)w_dat(smg4[i]);} void Tb(uchar smg[],uchar n,uchar s,uchar l,uchar d){ unsigned char m;w_cmd(0x82);for(m=n;m<s;m++)w_...

求用AT89S52单片机控制的 两相四线步进电机 的程序,要C语言的
sbit keyup=P1^0;sbit keydn=P1^1;unsigned char Steprun[8]={0x01,0x05,0x04,0x06,0x02,0x0a,0x08,0x09};\/\/控制方式 A AB B B\/A \/A \/A\/B \/B \/BA unsigned char num;void t0_isr() interrupt 1 { TH0=(65536-speed)\/256;TL0=(65536-speed)%256;StepMotor=Steprun[num];...

相似回答