找回密码
 立即注册

QQ登录

只需一步,快速开始

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

简单的51单片机电机驱动程序与Proteus仿真图(启停与快慢控制)

[复制链接]
跳转到指定楼层
楼主
控制方向和变速,有仿真工程文件和源代码
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载).


单片机源程序如下:
  1. #include "reg51.h"
  2. #define u8 unsigned char
  3. sbit pwm1=P2^0;
  4. sbit pwm2=P2^3;
  5. sbit key=P2^7;
  6. u8 sudu=0,fang=0;//0停1慢2快
  7. void delay(long i)
  8. {
  9.         while(i--)
  10.         {
  11.                 if(key==0)//有按下
  12.                 {
  13.                         while(key==0);//等待放手
  14.                         sudu++;
  15.                         if(sudu==3)sudu=0;
  16.                 }
  17.         }
  18. }
  19. void dong()
  20. {
  21.         if(fang==0)
  22.                 {
  23.                 if(sudu==0)//停机状态
  24.                 {
  25.                         pwm1=1;//两边高电平
  26.                         pwm2=1;
  27.                         delay(100);//等待按下更改
  28.                 }
  29.                 if(sudu==1)//调速状态
  30.                 {
  31.                         pwm1=1;//转动的时间
  32.                         pwm2=0;
  33.                         delay(50);
  34.                         pwm1=1;//停止的时
  35.                         pwm2=1;
  36.                         delay(250);        }
  37.                 if(sudu==2)               
  38.                 {pwm1=1;
  39.                 pwm2=0;
  40.                         delay(300);}
  41.                 }
  42.                 if(fang==1)
  43.                 {
  44.                 if(sudu==0)//停机状态
  45.                 {
  46.                         pwm1=1;//两边高电平
  47.                         pwm2=1;
  48.                         delay(100);//等待按下更改
  49.                 }
  50.                 if(sudu==1)//调速状态
  51.                 {
  52.                         pwm1=0;//转动的时间
  53.                         pwm2=1;
  54.                         delay(50);
  55.                         pwm1=1;//停止的时
  56.                         delay(250);        }
  57.                 if(sudu==2)               
  58.                 {pwm1=0;
  59.                         pwm2=1;
  60.                         delay(300);}
  61. }}

  62. void main()
  63. {
  64.         EA=1;IT0=1;EX0=1;
  65.         while(1)
  66.         {
  67.                 dong();
  68.         }
  69. }

  70. void bian() interrupt 0
  71. {
  72.          fang=!fang;
  73. }
复制代码

所有资料51hei提供下载:
直流电机-pwm驱动.7z (41.93 KB, 下载次数: 34)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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