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

(1)通过单片机控制步进电机单步或连续运行。(2)使用按键控制步进电机运行和正反转。(3)通过按键设置步进电机运行速度、运行时间、转动角度等,并将有关参数显示在LCD显示... (1) 通过单片机控制步进电机单步或连续运行。
(2) 使用按键控制步进电机运行和正反转。
(3) 通过按键设置步进电机运行速度、运行时间、转动角度等,并将有关参数显示在LCD显示器上。
(4) 将运行参数显示在上位机,并可通过上位机对步进电机的运行参数进行设置。
(5) 采集并显示当前温度,并可根据温度高低自动调节步进电机的转速
展开
 我来答
科学大求证3l
推荐于2016-10-29
知道答主
回答量:54
采纳率:0%
帮助的人:15.1万
展开全部

#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[]=" shun zhuan    mian    kuai    gen kuai ting zhi  fan  zhuan ";

 sbit  e=P2^6;   

 sbit rs=P2^4;

 sbit rw=P2^5;

void delay(int tt)

{  

  while(tt--);

}

void w_cmd(uchar dd)

{

  rs=0;

  rw=0;

  e=0;

  delay(50);

  P0=dd;

  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(500);

  w_cmd(0x08);//注意顺序,关闭显示

  w_cmd(0x01);//清屏  

  w_cmd(0x07);//光标·画面滚动模式设置

  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_dat(smg[m]);

  w_cmd(0x80+0X42);

  for(m=l;m<d;m++)

  w_dat(smg[m]); 

 }  

void main()

{

   init(aa,aa);

   while(1)

   {  

   

   P1=0xf0;

   key_l=P1;

   if(key_l!=0xf0)

   {

       delay(100);

 if(key_l!=0xf0)

 {

   P1=key_l|0x0f;

   key=P1;

 }

   }

   switch(key)

   {

    case 0xee: Tb(smg,0,10,11,21); 

       for(i=0;i<8;i++)

   {

     P2=temp1[i];

     delay(500);

   }  

    break;

case 0xde:Tb(smg,0,10,19,29);

        for(i=0;i<8;i++)

   {

     P2=temp1[i];

     delay(300);

   }    

   break;

case 0xbe:Tb(smg,0,10,30,40); 

       for(i=0;i<8;i++)

   {

     P2=temp1[i];

     delay(100);

   }    

   break;  

case 0x7e:P2=0xff;Tb(smg,0,10,39,49);   break;

case 0xed:Tb(smg,50,60,11,21);

      for(i=0;i<8;i++)

   {

     P2=temp2[i];

     delay(200);

   }    

   break; 

case 0xdd:Tb(smg,50,60,19,29);

    for(i=0;i<8;i++)

   {

     P2=temp2[i];

     delay(120);

   }    

   break; 

 case 0xbd: P2=0xff;Tb(smg,50,60,40,50);  break;

}

  }

}

萧然沁芳
2012-06-05 · TA获得超过118个赞
知道答主
回答量:77
采纳率:0%
帮助的人:103万
展开全部
这不只是C语言能解决的问题啊,要设计原理图,写程序。你是要实物还是仿真啊,仿真还好一些,要是实物那就更麻烦了。再说只悬赏30分,做单片机的就这么不值钱吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善如南0hHb23
2012-06-06 · TA获得超过174个赞
知道小有建树答主
回答量:777
采纳率:0%
帮助的人:489万
展开全部
可以交流
典型关于步进电机问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式