找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1625|回复: 1
收起左侧

51单片机多路直流电机控制Proteus仿真与源程序

[复制链接]
ID:835138 发表于 2021-1-27 00:12 | 显示全部楼层 |阅读模式
控制多路电机的启停,用74hc595串转并来控制多路继电器从而控制电机的启停,按键使用74hc165来实现并转串,以此识别按键值,一共搞了12路电机,电机速度也可以调节,看着图很大,但功能很基础,实际上做起来并不麻烦。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
P1%2_M41LE8A3)NATXJDG.png GB7}7~L[RB%R}R5@I41K(O7.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<74HC595.h>
  4. #include<74HC165.h>
  5. #include<dianji.h>
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. /**********函数声明********************/
  9. void init();
  10. /***********************************/
  11. uchar time;
  12. uchar m;

  13. void main()//主函数
  14. {         
  15.          init();
  16.          while(1)
  17.     {
  18.                          m=CPWM();
  19.        dianji();
  20.     }
  21.              while(1)
  22.            {};
  23. }

  24. void init()//初始化函数
  25. {
  26.                 _74hc165_init();//调速按键检测初始化
  27.                 _74hc165dianji_init();//电机切换检测初始化
  28.                 SendTo595(0x00);//电机停止
  29.                 SendTo595(0x00);
  30.                 OutFrom595();
  31.                 SendTo5952(0xff);//显示档位的数码管初始化
  32.                 OutFrom595led1();
  33.                 TMOD=0x01;//定时/计数器工作方式1
  34.                 TH0=(65536-1000)/256;//设定时间为1ms
  35.                 TL0=(65536-1000)%256;
  36.                 EA=1;//打开总中断
  37.                 TR0=1;//启动T0
  38.                 ET0=1; //定时/计数器0允许
  39. }

  40. void t0int() interrupt 1//产生PWM波,1000Hz,时钟周期就是1ms,就是1000us
  41. {
  42.                 TR0=0;
  43.                 TH0=(65536-1000)/256;
  44.                 TL0=(65536-1000)%256;
  45.                 TR0=1;
  46.                         time++;
  47.                 if(time>=100) time=0;
  48.                 if(time<=m)
  49.                 {        
  50.                         SendTo595PWM(0x0f);
  51.                         SendTo595PWM(0xff);
  52.                         OutFrom595PWM();
  53.                 }
  54.                 else
  55.                 {
  56.                         SendTo595PWM(0x00);
  57.                         SendTo595PWM(0x00);
  58.                         OutFrom595PWM();
  59.                 };
  60. }
复制代码

所有资料51hei提供下载:
电机控制.zip (293.12 KB, 下载次数: 29)

评分

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

查看全部评分

回复

使用道具 举报

ID:877505 发表于 2021-1-27 10:52 | 显示全部楼层
看电路图感觉还是挺麻烦的,不过代码和原理都十分简单
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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