找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机调速程序 一直闪 速度很慢 全速完全不行 小车抖的厉害

[复制链接]
跳转到指定楼层
楼主
ID:425641 发表于 2018-12-6 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "STC15Fxxxx.h"
  2. #include    "LCD1602.h"
  3. #include "delay.h"
  4. #include    "Motor.h"
  5. #include    "GPIO.h"
  6. sbit ENA=P2^5;
  7. sbit ENB=P2^4;
  8. sbit    key=P2^7;
  9. sbit SetSpeedkey=P2^6;
  10. u16     T1InterruptCount=0,MotorPulsCount=0,MotorSpeed=0;
  11. u16   SetSpeed=0;
  12. u8      a=0,b=0,c=0;
  13. void    Int0Init(  )
  14. {
  15.     IT0=1;
  16.     EX0=1;
  17.     EA=1;
  18. }
  19. void    Timer1Init(  )
  20. {
  21. AUXR &= 0xBF;  
  22. TMOD &= 0x0F;  
  23. TL1 = 0x00;
  24. TH1 = 0x4C;  
  25. TF1 = 0;
  26. TR1 = 1;  
  27. TR0 = 1;  
  28.     ET1=1;
  29.     EA=1;
  30. }
  31. void Timer3Init(void)  //1??@11.0592MHz
  32. {
  33. T4T3M |= 0x02;  
  34. T3L = 0xCD; //每过1ms 中断一次  
  35. T3H = 0xD4;  
  36. T4T3M |= 0x08;  
  37. IE2 =IE2|0x20;
  38. }
  39. void  SpeedSet()
  40. {
  41. if(0==SetSpeedkey)
  42. {
  43.   DelayMS(10);
  44.   if(0==SetSpeedkey)
  45. {
  46. SetSpeed=SetSpeed+10;
  47.   if(SetSpeed>100)
  48.    SetSpeed=50;
  49.   while(!SetSpeedkey);//等待释放
  50. }
  51. }
  52. }
  53. void    main( )
  54. {
  55.     bit KeyFlag=0;
  56.     GPIOInit(  );
  57.     LCD_Init(  );
  58.     Int0Init(  );
  59.     Timer1Init(  );
  60. Timer3Init(   );
  61.    MotorStop(   );
  62.    
  63.    
  64.     while(1)
  65.     {      
  66.         if( 0==key )               
  67.         {
  68.             DelayMS( 10 );                                          
  69.             if( 0==key )         
  70.             {
  71.                 KeyFlag=!KeyFlag;   
  72.                 while( !key );      
  73.                 if( KeyFlag )        
  74.                     MotorGoHead(   );
  75.                 else               
  76.                     MotorStop(   );
  77.             }
  78.         }
  79.     SpeedSet();
  80.     if(MotorSpeed<SetSpeed)
  81.     {
  82.      a++;
  83.       c++;
  84.     }      

  85.       
  86.         LCD_Write_String( 6,0,"SetSpeed" );
  87.        LCD_Write_MultChar( 0,1, c );      
  88.     LCD_Write_MultChar( 0,0,a );      
  89.         LCD_Write_String( 6,1," MotorSpeed" );   
  90.     }
  91. }
  92. void    Int0_ISR( void ) interrupt 0
  93. {

  94.     MotorPulsCount++;
  95.     IE0=0;
  96. }
  97. void    Timer1_ISR( void ) interrupt 3
  98. {
  99.     T1InterruptCount++;
  100.     if(T1InterruptCount>=20)//1????
  101.     {
  102.         TR1=0;
  103.         MotorSpeed=MotorPulsCount*3;//MotorPulsCount*60/20/4
  104.         MotorPulsCount=0;
  105.         TR1=1;
  106.         T1InterruptCount=0;
  107.           }   
  108. }
  109. void    Timer3_ISR( void ) interrupt 19
  110. {

  111. b++;

  112. // if(b<a)
  113. //  
  114. //  MotorGoHead(  );//1MS*a运动时间  1MS*b 停止时间  在100MS时间内 PWM
  115. // else
  116. //  MotorStop(  );
  117. if(b<a)
  118.   ENA=1;
  119. else
  120.   ENA=0;



  121. if(b<c)
  122.   ENB=1;
  123. else
  124.   ENB=0;

  125. if(b>100)
  126. {
  127. b=0;
  128. }

  129. }



复制代码


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

使用道具 举报

沙发
ID:425641 发表于 2018-12-6 17:39 | 只看该作者
但是单片机一直闪 速度很慢  全速完全不行  小车抖的厉害 是怎么回事
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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