发 帖  
[问答]

怎么通过按键控制步进电机的转动还是停止?

16623 步进电机
已退回5积分
2016-7-17 11:27:16   1 评论 分享淘帖 邀请回答 举报
1 条评论
10个回答
2016-7-17 11:27:30 1 评论

举报

1 条评论
  • 2022-4-29 21:41

    这个是·我的: #include "reg52.h"  typedef unsigned int u16;         typedef unsigned char u8;  sbit IN1_A=P1^0; sbit IN2_B=P1^1; sbit IN3_C=P1^2; sbit IN4_D=P1^3; sbit LED1=P2^0; sbit BEEP=P2^5;  sbit KEY1=P3^1; sbit KEY2=P3^0; sbit KEY3=P3^2; sbit KEY4=P3^3;  #define KEY1_PRESS        1 #define KEY2_PRESS        2 #define KEY3_PRESS        3 #define KEY4_PRESS        4 #define KEY_UNPRESS        0  #define STEPMOTOR_MAXSPEED        1   #define STEPMOTOR_MINSPEED        5            void delay_10us(u16 ten_us) {         while(ten_us--);         }  void delay_ms(u16 ms) {         u16 i,j;         for(i=ms;i>0;i--)                 for(j=110;j>0;j--); }  void beep_alarm(u16 time,u16 fre); #endif  void beep_alarm(u16 time,u16 fre) {         while(time--)         {                 BEEP=!BEEP;                 delay_10us(fre);                 }                 }  void step_motor_28BYJ48_send_pulse(u8 step,u8 dir) {         u8 temp=step;                  if(dir==0)        //如果为逆时针旋转                 temp=7-step;//调换节拍信号         switch(temp)//8个节拍控制:A->AB->B->BC->C->CD->D->DA         {                 case 0: IN1_A=1;IN2_B=0;IN3_C=0;IN4_D=0;break;                 case 1: IN1_A=1;IN2_B=1;IN3_C=0;IN4_D=0;break;                 case 2: IN1_A=0;IN2_B=1;IN3_C=0;IN4_D=0;break;                 case 3: IN1_A=0;IN2_B=1;IN3_C=1;IN4_D=0;break;                 case 4: IN1_A=0;IN2_B=0;IN3_C=1;IN4_D=0;break;                 case 5: IN1_A=0;IN2_B=0;IN3_C=1;IN4_D=1;break;                 case 6: IN1_A=0;IN2_B=0;IN3_C=0;IN4_D=1;break;                 case 7: IN1_A=1;IN2_B=0;IN3_C=0;IN4_D=1;break;                 default: IN1_A=0;IN2_B=0;IN3_C=0;IN4_D=0;break;//停止相序                 }                         }   u8 key_scan(u8 mode) {         static u8 key=1;          if(mode)key=1;//连续扫描按键         if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))//任意按键按下         {                 delay_10us(1000);//消抖                 key=0;                 if(KEY1==0)                         return KEY1_PRESS;                 else if(KEY2==0)                         return KEY2_PRESS;                 else if(KEY3==0)                         return KEY3_PRESS;                 else if(KEY4==0)                         return KEY4_PRESS;                 }         else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)        //无按键按下         {                 key=1;                                 }         return KEY_UNPRESS;                 }  void main() {                 u8 key=0;         u8 dir=0;//默认逆时针方向         u8 speed=STEPMOTOR_MAXSPEED;//默认最大速度旋转         u8 step=0;         u8 start=0;          u8 KEY4_start;         u8 flag;          while(1)         {                                         key=key_scan(0);                 if(key==KEY1_PRESS)                 {                 beep_alarm(750,100);                 beep_alarm(2000,50);                 beep_alarm(1000,70);                     }                 else if(key==KEY2_PRESS)                 {                         if(speed>STEPMOTOR_MAXSPEED)                                 speed-=1;                                         }                 else if(key==KEY3_PRESS)                 {                         if(speed<STEPMOTOR_MINSPEED)                                 speed+=1;                                         }                 else if(key==KEY4_PRESS)                 {                 beep_alarm(750,100);                 beep_alarm(2000,50);                 beep_alarm(1000,70);                 while(!KEY4_start);                                                                          }                 step_motor_28BYJ48_send_pulse(step++,dir);                 if(step==8)step=0;                                 delay_ms(speed);                                                                          }                 }能关掉步进电机但是不知道怎么打开

2016-7-17 11:27:54 评论

举报

2016-7-17 11:28:05 评论

举报

2016-7-17 11:29:14 2 评论

举报

2 条评论
2016-7-17 15:08:42 评论

举报

2016-7-17 19:21:40 评论

举报

评分

参与人数 1积分 +2 收起 理由
你猜啊 + 2

查看全部评分

2016-7-18 09:03:01 评论

举报

2016-7-18 09:50:21 评论

举报

2017-8-1 15:02:36 评论

举报

2017-8-1 15:02:56 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

您需要登录后才可以回帖 登录/注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /7 下一条

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

威廉希尔官方网站 社区

HarmonyOS威廉希尔官方网站 社区

RISC-V MCU威廉希尔官方网站 社区

FPGA开发者威廉希尔官方网站 社区

-

OpenHarmony开源社区

OpenHarmony开源社区

-

嵌入式论坛

ARM威廉希尔官方网站 论坛

STM32/STM8威廉希尔官方网站 论坛

嵌入式威廉希尔官方网站 论坛

单片机/MCU论坛

RISC-V威廉希尔官方网站 论坛

瑞芯微Rockchip开发者社区

FPGA|CPLD|ASIC论坛

DSP论坛

-

电路图及DIY

电路设计论坛

DIY及创意

电子元器件论坛

专家问答

-

电源威廉希尔官方网站 论坛

电源威廉希尔官方网站 论坛

无线充电威廉希尔官方网站

-

综合威廉希尔官方网站 与应用

机器人论坛

USB论坛

电机控制

模拟威廉希尔官方网站

音视频威廉希尔官方网站

综合威廉希尔官方网站 交流

上位机软件(C/Python/Java等)

-

无线通信论坛

WIFI威廉希尔官方网站

蓝牙威廉希尔官方网站

天线|RF射频|微波|雷达威廉希尔官方网站

-

EDA设计论坛

PCB设计论坛

DigiPCBA论坛

Protel|AD|DXP论坛

PADS威廉希尔官方网站 论坛

Allegro论坛

multisim论坛

proteus论坛|仿真论坛

KiCad EDA 中文论坛

DFM|可制造性设计论坛

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量威廉希尔官方网站

传感威廉希尔官方网站

-

招聘/交友/外包/交易/杂谈

项目外包

供需及二手交易

工程师杂谈|交友

招聘|求职|工程师职场

-

官方社区

发烧友官方/活动

华秋商城

华秋电路