微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > L298N控制直流电机

L298N控制直流电机

时间:10-02 整理:3721RD 点击:

  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit ENA=P1^2;
  5. sbit IN1=P1^3;
  6. sbit IN2=P1^4;
  7. sbit ENB=P1^5;
  8. sbit IN3=P1^6;
  9. sbit IN4=P1^7;

  10. uint MA=0;  
  11. uint speedA=50;
  12. int flag=0;

  13. void timeinit()
  14. {
  15.         TMOD=0x01;
  16.         TH0=(65536-10000)/256;
  17.         TL0=(65536-10000)%256;
  18.         EA=1;
  19.         ET0=1;
  20.         TR0=1;
  21. }

  22. void Ques1()
  23. {
  24.         switch(flag/10)
  25.         {
  26.                 case 0:        TR0=0;
  27.                                                 if(MA<speedA)
  28.                                                 {
  29.                                                                 ENA=1;ENB=1;
  30.                                                                 IN1=1;IN2=0;
  31.                                                                 IN3=0;IN4=1;
  32.                                                 }
  33.                                                 else
  34.                                                 {
  35.                                                         if(speedA<=MA<100)
  36.                                                         {
  37.                                                                         ENA=0;
  38.                                                                         ENB=0;
  39.                                                         }
  40.                                                         else       
  41.                                                         {
  42.                                                                         MA=0;       
  43.                                                                         flag++;                                                                                                                                               
  44.                                                         }                                                       
  45.                                                 }
  46.                                                 TR0=1;
  47.                                                 break;
  48.                 case 1: TR0=0;
  49.                                                 if(MA<speedA)
  50.                                                 {
  51.                                                                 ENA=1;ENB=1;
  52.                                                                 IN1=0;IN2=1;
  53.                                                                 IN3=1;IN4=0;
  54.                                                 }
  55.                                                 else
  56.                                                 {
  57.                                                         if(speedA<=MA<100)
  58.                                                         {
  59.                                                                         ENA=0;
  60.                                                                         ENB=0;       
  61.                                                         }
  62.                                                         else
  63.                                                         {
  64.                                                                         MA=0;       
  65.                                                                         flag++;                                                               
  66.                                                         }       
  67.                                                 }
  68.                                           TR0=1;
  69.                                                 break;
  70.                 default : flag=0;
  71.                                                         break;
  72.         }
  73. }

  74. void time0() interrupt 1
  75. {
  76.         TH0=(65536-10000)/256;
  77.         TL0=(65536-10000)%256;
  78.         MA++;       
  79. }

  80. void main()
  81. {       
  82.         timeinit();
  83.         while(1)
  84.         {
  85.                 Ques1();
  86.         }
  87. }

复制代码


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top