找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机直流电机正反转及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)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:248394 发表于 2018-1-13 16:59 | 只看该作者
谢谢楼主!
回复

使用道具 举报

板凳
ID:249545 发表于 2019-1-23 18:23 | 只看该作者
焊了这个电路,想试一下.
回复

使用道具 举报

地板
ID:472884 发表于 2019-1-25 16:41 | 只看该作者
年前就在做这个PWM电机调速,不过当时没有发现好资料,今天试试这个,希望能搞下去,谢谢楼主
回复

使用道具 举报

5#
ID:432073 发表于 2019-2-22 10:05 | 只看该作者
不错不错,正在学习。
回复

使用道具 举报

6#
ID:479226 发表于 2019-2-22 11:09 | 只看该作者
谢谢楼主!
回复

使用道具 举报

7#
ID:553506 发表于 2019-6-10 15:06 | 只看该作者
谢谢楼主,好人一生平安
回复

使用道具 举报

8#
ID:553506 发表于 2019-6-10 15:06 | 只看该作者
谢谢楼主,,,好人一生平安!!!!!!!!!!!!!
回复

使用道具 举报

9#
ID:553506 发表于 2019-6-10 15:08 | 只看该作者
谢谢楼主,好人一生平安!!!!!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

10#
ID:679681 发表于 2020-1-2 14:54 | 只看该作者
xky203 发表于 2019-2-22 10:05
不错不错,正在学习。

能给一下代码吗 谢谢
回复

使用道具 举报

11#
ID:679681 发表于 2020-1-2 15:54 | 只看该作者

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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