找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机控制电机正反转启停

[复制链接]
跳转到指定楼层
楼主
ID:505660 发表于 2021-10-10 20:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
电机正反转启停要求如下:启动时间:6秒;正转时间:30秒; 停止时间:2秒;反转时间:30秒,如何写入下面这段程序:
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code FFW[]=
  5. {
  6.         0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
  7. };

  8. uchar code REV[]=
  9. {
  10.         0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
  11. };

  12. sbit K1 = P3^0;
  13. sbit K2 = P3^1;
  14. sbit K3 = P3^2;
  15. sbit K4 = P3^3;
  16. sbit K5 = P3^4;
  17. void DelayMS(uint ms)
  18. {
  19.         uchar i;
  20.         while(ms--)
  21.         {
  22.                  for(i=0;i<120;i++);
  23.         }
  24. }

  25. void SETP_MOTOR_FFW(uchar n)
  26. {
  27.         uchar i,j;
  28.         int M=25;
  29.         for(i=0;i<5*n;i++)
  30.         {
  31.                  for(j=0;j<8;j++)
  32.                 {
  33.                          if(K3 == 0)        break;
  34.                         P1 = FFW[j];
  35.                         if(K4 == 0)
  36.                         {
  37.                                 P0=0xf6;
  38.                                 DelayMS(20);
  39.                         }
  40.                         else        if(K5 == 0)
  41.                                 {
  42.                                         P0=0xee;
  43.                                         DelayMS(100);
  44.                                 }
  45.                                 else        DelayMS(50);
  46.                                 if(K4 == 1&&K5 == 1)               
  47.                                 {
  48.                                         P0 = 0xfe;      
  49.                                 }
  50.                 }
  51.         }
  52. }
  53. void SETP_MOTOR_REV(uchar n)
  54. {
  55.         uchar i,j;
  56.         int M=25;
  57.         for(i=0;i<5*n;i++)
  58.         {
  59.                  for(j=0;j<8;j++)
  60.                 {
  61.                          if(K3 == 0)        break;
  62.                         P1 = REV[j];
  63.                         if(K4 == 0)
  64.                         {
  65.                                 P0=0xf5;
  66.                                 DelayMS(20);
  67.                         }
  68.                         else        if(K5 == 0)
  69.                                 {
  70.                                         P0=0xed;
  71.                                         DelayMS(100);
  72.                                 }
  73.                                 else        DelayMS(50);
  74.                                 if(K4 == 1&&K5 == 1)               
  75.                                 {
  76.                                         P0 = 0xfd;      
  77.                                 }
  78.                 }
  79.         }
  80. }
  81. void main()
  82. {
  83.         uchar N = 50;
  84.         while(1)
  85.         {
  86.                  if(K1 == 0)
  87.                 {
  88.                         P0 = 0xfe;
  89.                         SETP_MOTOR_FFW(N);                       
  90.                         if(K3 == 0) break;
  91.                 }
  92.                 else if(K2 == 0)
  93.                 {
  94.                          P0 = 0xfd;
  95.                         SETP_MOTOR_REV(N);
  96.                         if(K3 == 0) break;
  97.                 }                                               
  98.                 else
  99.                 {
  100.                          P0 = 0xfb;
  101.                         P1 = 0x03;
  102.                 }
  103.         }

  104. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2021-10-11 00:41 | 只看该作者
启动时间:6秒;//6秒内0到全速?
正转时间:30秒; //转了30秒然后呢?
停止时间:2秒;//2秒内全速到0?
反转时间:30秒; //转了30秒然后呢?
K4和K5代表什么功能?
回复

使用道具 举报

板凳
ID:505660 发表于 2021-10-11 21:53 | 只看该作者
lkc8210 发表于 2021-10-11 00:41
启动时间:6秒;//6秒内0到全速?
正转时间:30秒; //转了30秒然后呢?
停止时间:2秒;//2秒内全速到0 ...

对对对,K4、K5是加速和减速,大佬知道咋弄呢
回复

使用道具 举报

地板
ID:505660 发表于 2021-10-11 21:57 | 只看该作者
lkc8210 发表于 2021-10-11 00:41
启动时间:6秒;//6秒内0到全速?
正转时间:30秒; //转了30秒然后呢?
停止时间:2秒;//2秒内全速到0 ...

反转完停止
回复

使用道具 举报

5#
ID:505660 发表于 2021-10-11 21:58 | 只看该作者
lkc8210 发表于 2021-10-11 00:41
启动时间:6秒;//6秒内0到全速?
正转时间:30秒; //转了30秒然后呢?
停止时间:2秒;//2秒内全速到0 ...

仿真图如下C:\Users\pei\Desktop
回复

使用道具 举报

6#
ID:161164 发表于 2021-10-11 23:41 | 只看该作者

贴图看不到
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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