標題: 51單片機+L298N驅動直流電機并進行調速程序 [打印本頁]

作者: HMingS    時間: 2018-12-25 21:35
標題: 51單片機+L298N驅動直流電機并進行調速程序
51單片機 L298N驅動直流電機并進行調速

電路原理圖如下:


單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned  int
  4. uchar pwm,num;
  5. sbit EN=P1^0;
  6. sbit IN1=P1^1;
  7. sbit IN2=P1^2;
  8. sbit key_zhengzhuan=P3^0;
  9. sbit key_fanzhuan=P3^1;
  10. sbit key_jiasu=P3^2;
  11. sbit key_jiansu=P3^3;
  12. sbit led_jiashu=P1^3;
  13. sbit led_jianshu=P1^4;
  14. void delay(uint z)
  15. {
  16.      uint x,y;
  17.          for(x=z;x>0;x--)
  18.              for(y=110;y>0;y--);
  19. }
  20. void init()
  21. {
  22.     TMOD=0x02;   
  23.         TH0=210;   
  24.         TL0=210;     
  25.         TR0=1;      
  26.         ET0=1;      
  27.         EA=1;        
  28. }
  29. void key_control()
  30. {
  31.      if(key_zhengzhuan==0)
  32.          {
  33.              delay(5);
  34.                  if(key_zhengzhuan==0)
  35.                  {                  
  36. //                      EN=0;
  37.                           IN1=1;
  38.                           IN2=0;
  39.                  }
  40.          }
  41.          if(key_fanzhuan==0)
  42.          {
  43.              delay(5);
  44.                  if(key_fanzhuan==0)
  45.                  {                  
  46. //                      EN=1;
  47.                           IN1=0;
  48.                           IN2=1;
  49.                  }
  50.          }
  51.          if(key_jiasu==0)
  52.          {
  53.              delay(5);
  54.           if(key_jiasu==0)
  55.           {
  56.                  if(pwm<250)
  57.                  {                  
  58.                      pwm++;
  59.                  }
  60.           }
  61.          }
  62.          if(key_jiansu==0)
  63.          {
  64.              delay(5);
  65.            if(key_jiansu==0)
  66.            {
  67.                  if(pwm>0)
  68.                  {                  
  69.                      pwm--;
  70.                  }
  71.            }
  72.          }
  73. }
  74. void main()
  75. {
  76.      init();
  77.          pwm=30;
  78.      while(1)
  79.          {
  80.              key_control();
  81.          }
  82. }
  83. void T0_time() interrupt 1
  84. {
  85.          num++;
  86.          if(num==250)
  87.          num=0;
  88.          if(num<pwm)
  89.                EN=1;
  90.          else  
  91.                EN=0;
  92. }
復制代碼


作者: 青海長云    時間: 2018-12-25 21:48
我也試試
作者: Lpure    時間: 2021-2-7 19:04
測試成功了,感謝博主分享
作者: 許懷海    時間: 2022-10-19 20:36
為什么我的IN1和IN2一起接,電機不動,只接IN1或IN2才能動




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1