找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1415|回复: 0
打印 上一主题 下一主题
收起左侧

我这个可以控制步进电机的开始、暂停、正转、反转、加速、减速吗? 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:685171 发表于 2020-3-1 13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include"reg52.h"
  2. #include"intrins.h"
  3.                                                                         
  4. typedef unsigned int u16;
  5. typedef unsigned char u8;

  6. #define GPIO_MOTOR P1;//定义步进电机的IO口

  7. u8 code FFW[8]={0xf4,0xf5,0xf1,0xf9,0xf8,0xfa,0xf2,0xf6};  // 电机正转
  8. u8 code FFZ[8]={0xf2,0xfa,0xf8,0xf9,0xf1,0xf5,0xf4,0xf6}; //电机反转
  9. u8 Speed=0;
  10. u8 direction=0;
  11. u8 receiveData='0';

  12. void UsartConfiguration(); //函数的声明
  13. void Motor();

  14. void delay(u16 i)
  15. {
  16.   while(i--);
  17. }

  18. void main()
  19. {
  20.         UsartConfiguration();
  21.         Speed=180;
  22.         while(1)
  23.         {
  24.                 if(receiveData=='1')  //串口接收到'1',电机正转
  25.                 {
  26.                         direction=1;
  27.                         receiveData='0';
  28.                 }
  29.                 if(receiveData=='2')   //串口接收到'2',电机反转
  30.                 {
  31.                     direction=2;
  32.                         receiveData='0';
  33.                 }
  34.                 if(receiveData=='3')   // 串口接收到'3',电机暂停
  35.                 {
  36.                    P1=0;
  37.                receiveData='0';
  38.                 }
  39.                 if(receiveData=='4') //串口接收到'4',电机开始
  40.                 {
  41.                      P1=1;
  42.                      receiveData='0';
  43.                 }
  44.                 if(receiveData=='5') //串口接收到'5',电机加速
  45.                 {
  46.                Speed=20;
  47.                    receiveData='0';
  48.                    Speed=+180;   
  49.                 }
  50.                 if(receiveData=='6') //串口接收到'6',电机减速
  51.                 {
  52.                    Speed=-20;
  53.                    receiveData='0';
  54.                    Speed=+180;
  55.                            
  56.                 }
  57.         }
  58.         Motor();
  59.         direction=0;
  60. }

  61. void UsartConfiguration()
  62. {
  63.         SCON=0X50;           //波特率是4800
  64.     TMOD=0X20;
  65.     PCON=0X80;
  66.     TH1=0XF3;
  67.     TL1=0XF3;
  68.     ES=1;
  69.     EA=1;
  70.     TR1=1;
  71. }

  72. void Usart() interrupt 4
  73. {
  74.         receiveData=SBUF;//出去接收到的数据
  75.         RI = 0;
  76.         SBUF=receiveData;
  77.     while(!TI);
  78.     TI=0;//清除接收中断标志位
  79. }
  80. void Motor()
  81. {
  82.    u8 i;
  83.    for(i=0;i<8;i++)
  84.    {
  85.       if(direction==1)
  86.           {
  87.               P1=FFW[i];
  88.           }
  89.           if(direction==2)
  90.           {
  91.               P1=FFZ[i];
  92.           }
  93.           delay(Speed);
  94.         }
  95. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表