找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机+pwm波控制直流电机 Proteus仿真程序

[复制链接]
zxdehao 发表于 2020-8-1 20:57 | 显示全部楼层 |阅读模式
自己写的一个单片机程序,简单的控制直流电机正反转
利用定时器,产生pwm波
仿真图和代码如下
51hei图片20200801204728.png

单片机源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //定义按键
  5. sbit qi=P1^0;                                                //默认正转,占空比50%
  6. sbit zheng=P1^1;                                
  7. sbit fan=P1^2;
  8. sbit up=P1^3;                        //高速,占空比90%
  9. sbit down=P1^4;                        //低速,占空比10%
  10. //定义驱动
  11. sbit IN1=P2^0;
  12. sbit IN2=P2^1;
  13. sbit EN1=P2^2;                                        //使能引脚
  14. //
  15. uchar count;        //进入中断次数
  16. uchar pwm;                //根据这个数值来控制占空比
  17. bit flag;                        //根据flag判断正反转

  18. //延时10ms左右
  19. void delay10ms()
  20. {
  21.         uint i=1000,j=2500;
  22.   for(;j>0;j--)
  23.   {
  24.             while(i)
  25.                                 i--;
  26.   }

  27. }
  28. //定时器初始
  29. void timer0_init()               
  30. {
  31.         TMOD=0x02;        //定时器0,方式2
  32.         TH0=0xa3;                //假设晶振为11.0592M,定时100us
  33.         TL0=0xa3;               
  34.         ET0=1;                        //开定时器0中断
  35.         EA=1;                                //开总中断
  36.         
  37. }
  38. //中断
  39. void timer0() interrupt 1
  40. {
  41.         count++;
  42.         if(count==pwm)
  43.                 EN1=1;
  44.         if(count==20)
  45.         {
  46.                 EN1=0;
  47.                 count=0;
  48.         }
  49. }
  50. //主函数
  51. void main()
  52. {
  53.         
  54.                 count=0;
  55.                 pwm=10;                        //初始占空比50%
  56.                 timer0_init();

  57.         while(1)
  58.    {
  59.                  if(qi==0)
  60.                         {
  61.                                 delay10ms();
  62.                                         if(qi==0)
  63.                                                  TR0=1;                        //开定时器
  64.                         }
  65.                         
  66.                         if(fan==0)                                //按下开始反转
  67.                         {
  68.                                 delay10ms();
  69.                                         if(fan==0)
  70.                                         {
  71.                                                 IN1=0;
  72.                                                 IN2=1;
  73.                                         }
  74.                         }
  75.                         
  76.                         if(zheng==0)                //按下开始正转
  77.                         {
  78.                                 delay10ms();
  79.                                         if(zheng==0)
  80.                                         {
  81.                                                 IN1=1;
  82.                                                 IN2=0;
  83.                                         }
  84.                                        
  85.                         }
  86.                         if(up==0)                                //按下电机高速转
  87.                         {
  88.                                 delay10ms();
  89.                                         if(up==0)
  90.                                                 pwm=2;
  91.                         }
  92.                         if(down==0)
  93.                         {
  94.                                 delay10ms();
  95.                                         if(down==0)
  96.                                                 pwm=18;        
  97.                         }
  98.    }



  99. }
复制代码

51hei.png

全部资料51hei下载地址:
直流电机.zip (243.46 KB, 下载次数: 37)
回复

使用道具 举报

faridzled 发表于 2020-8-2 22:20 | 显示全部楼层
Thanks for sharing
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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