你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32控制直流电机加减速正反转(程序+仿真)

[复制链接]
STMCU小助手 发布时间:2022-5-31 19:00
本设计:
基于STM32控制直流电机加减速正反转设计(程序+仿真+论文)
仿真:proteus8.9
程序编译器:keil 5
编程语言:C语言
编号C0011

功能说明:
本设计由STM32F103、L298N电机驱动电路、按键电路组成。
1.通过按键可以控制电机,正转、反转、加速、减速、停止。
2.档位分4档,并且可以通过按键顺序正转、反转、加速、减速、停止。
3.档位可以自定义。
附赠相关论文,根据实物写的,与仿真功能基本一致。

仿真图(提供源文件):
640 (2).png

640 (1).png

源程序(提供源文件):
640.png

以下为部分程序:

  1. int main(void)
  2. {
  3.     delay_init();            //延时函数初始化
  4. //    uart_init(9600);        //串口初始化为115200
  5.     //  uart2_init(9600)    ;
  6.     TIM3_Int_Init(10, 7199); //定时器
  7.     LED_Init();             //初始化与LED连接的硬件接口
  8.     KEY_Init();
  9.     Lcd_GPIO_init();
  10.     Lcd_Init();
  11.     IN1 = 1;        //方向控制
  12.     IN2 = 0;
  13.     pwmRigh = 0;    //pwm调整,电机转速调整
  14.     Lcd_Puts(0, 0, (unsigned char *)dis0);
  15.     sprintf(dis2,"SPEED:%d",pwmRigh);
  16.     Lcd_Puts(0, 1, (unsigned char *)dis2);
  17.      Lcd_Puts(8, 0, (unsigned char *)dis3);
  18.     while(1)
  19.     {
  20.         if((key1 == 0) || (key2 == 0) || (key3 == 0) || (key4 == 0) || (key5 == 0))      //检测到按键按下
  21.         {
  22. //            delay_ms(1);   //小抖动仿真不需要加
  23.             if(rekey == 0)
  24.             {
  25.                 if(key1 == 0)  //检测是否按下
  26.                 {
  27.                     rekey = 1;
  28.                     IN1 = 1;        //方向控制
  29.                     IN2 = 0;                  
  30.                     Lcd_Puts(0, 0, (unsigned char *)dis0);
  31.                      Lcd_Puts(8, 0, (unsigned char *)dis3);
  32.                 }
  33.                 else if(key2 == 0) //设置值键
  34.                 {
  35.                     rekey = 1;
  36.                     IN1 = 0;        //方向控制
  37.                     IN2 = 1;
  38.                     Lcd_Puts(0, 0, (unsigned char *)dis1);
  39.                      Lcd_Puts(8, 0, (unsigned char *)dis3);
  40.                 }
  41.                 else if(key3 == 0) //设置值键
  42.                 {
  43.                     rekey = 1;
  44.                     if(pwmRigh < 8)pwmRigh = pwmRigh + 2; //pwm 调速
  45.                     sprintf(dis2,"SPEED:%d",pwmRigh/2);
  46.                     Lcd_Puts(0, 1, (unsigned char *)dis2);
  47.                 }
  48.                 else if(key4 == 0) //设置值键
  49.                 {
  50.                     rekey = 1;
  51.                     if(pwmRigh >= 2)pwmRigh = pwmRigh - 1; //pwm 调速
  52.                     sprintf(dis2,"SPEED:%d",pwmRigh/2);
  53.                     Lcd_Puts(0, 1, (unsigned char *)dis2);
  54.                 }
  55.                 else if(key5 == 0) //设置值键
  56.                 {
  57.                     rekey = 1;
  58.                     IN1 = 0;        //方向控制
  59.                     IN2 = 0;
  60.                     Lcd_Puts(8, 0, (unsigned char *)dis4);
  61.                 }
  62.             }
  63.         }
  64.         else
  65.         {
  66.             rekey = 0;  //防止重复检测到按键
  67.         }
  68.         delay_ms(10);
  69.     }
  70. }
复制代码


收藏 评论0 发布时间:2022-5-31 19:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版