标题: 单片机直流电机正反转及PWM调速控制仿真与代码 [打印本页]

作者: SaviorKing    时间: 2018-1-1 16:45
标题: 单片机直流电机正反转及PWM调速控制仿真与代码
有源程序加仿真
完成调试后参考第五温室控制案例,改用L298N驱动实现同样的功能
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define INT8U unsigned char
  4. #define INT16U unsigned int
  5. #define S1_ON()   (P3 & (1<<5)) == 0x00     //正转
  6. #define S2_ON()   (P3 & (1<<6)) == 0x00          //停转
  7. #define S3_ON()   (P3 & (1<<7)) == 0x00                   //反转
  8. #define Forward            0                                                                 //正转指示灯
  9. #define Stop               1                                                                 //停转指示灯
  10. #define Backward           2                                                                 //反转指示灯
  11. sbit M_DIR = P1^0;                                                                   //方向控制
  12. sbit M_PWM = P1^1;                                                                        //PWM调速控制
  13. sbit Key_INC = P3^0;                                                                  //加速键
  14. sbit Key_DEC = P3^1;                                                                   //减速键


  15. //------------------------------------------------------------------------
  16. //延时函数============================================================
  17. //-------------------------------------------------------------------------

  18. void delay_us(INT16U x)
  19. {
  20.    for(; x>0; x--)
  21.    _nop_();
  22. }



  23. //------------------------------------------------------------------------
  24. //主函数============================================================
  25. //-------------------------------------------------------------------------

  26. void main()
  27. {
  28.    int speed = 200;                                                                 //默认初始速度
  29.    while(1)
  30.    {
  31.       if (S2_ON())                                //切换到S2位置时表示停转
  32.           {
  33.             P0 = ~(1<<Stop);                          //停转指示灯亮
  34.                 M_DIR = 0; M_PWM = 0;                             //控制停转
  35.                 continue;                        //跳过下面的代码,提前下一秒循环
  36.    }
  37.    //方向控制
  38.    if (S1_ON())                          //S1合上为正向
  39.    {   
  40.        M_DIR = 0; P0=~(1<<Forward);
  41.          }
  42.          else
  43.          if  (S3_ON())
  44.          {
  45.                    M_DIR = 1; P0 = ~(1<<Backward);
  46.          }

  47.          //案件调速控制                        //S3合上为反向
  48. ……………………

  49. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
直流电机正反转及PWM调速控制.rar (30.95 KB, 下载次数: 182)




作者: Xanthus    时间: 2018-1-13 16:59
谢谢楼主!
作者: GUOXUAN    时间: 2019-1-23 18:23
焊了这个电路,想试一下.
作者: yishengzijin    时间: 2019-1-25 16:41
年前就在做这个PWM电机调速,不过当时没有发现好资料,今天试试这个,希望能搞下去,谢谢楼主

作者: xky203    时间: 2019-2-22 10:05
不错不错,正在学习。
作者: HH0214    时间: 2019-2-22 11:09
谢谢楼主!
作者: sunsetttt    时间: 2019-6-10 15:06
谢谢楼主,好人一生平安
作者: sunsetttt    时间: 2019-6-10 15:06
谢谢楼主,,,好人一生平安!!!!!!!!!!!!!
作者: sunsetttt    时间: 2019-6-10 15:08
谢谢楼主,好人一生平安!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: yd189826    时间: 2020-1-2 14:54
xky203 发表于 2019-2-22 10:05
不错不错,正在学习。

能给一下代码吗 谢谢
作者: yd189826    时间: 2020-1-2 15:54
Xanthus 发表于 2018-1-13 16:59
谢谢楼主!

收到能回复一下吗 兄弟 很着急 我也想要这个代码




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1