标题: 无刷电机用51单片机中断调的 源程序 [打印本页]

作者: lijinyang    时间: 2017-7-30 14:42
标题: 无刷电机用51单片机中断调的 源程序
无刷电机单片机控制程序希望能够帮助到大家

单片机源程序如下:
  1. #include <lcd.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit PulsePwm=P1^0;
  6. sbit S2=P3^4;   
  7. sbit S3=P3^5;
  8. sbit S4=P3^6;
  9. sbit S5=P3^7;
  10. uint num1,num2=30;
  11. uchar z=0,flag=0,sign=0;

  12. void InitTimer0(void)
  13. {
  14.     TMOD = 0x02;
  15.     TH0 =246;
  16.     TL0 =246;
  17.     EA = 1;
  18.     ET0 = 1;
  19.     TR0 = 1;
  20. }

  21. void keyscan()
  22. {
  23.     if(S2==0)
  24.         {
  25.             delayms(10);
  26.                 if(S2==0)
  27.                 {  
  28.                         z=0;
  29.       num1++;
  30.                 while(!S2);
  31.                 }
  32.          }
  33.           if(S3==0)
  34.           {
  35.                    delayms(10);
  36.                    if(S3==0)
  37.                    {
  38.                                  z=0;
  39.                         num1=num1+10;
  40.                           while(!S3);
  41.                    }
  42.           }
  43.           if(S4==0)
  44.            {
  45.                   delayms(10);
  46.                   if(S4==0)
  47.                   {
  48.         num1--;
  49.                                 z=0;
  50.                          while(!S4);
  51.                   }
  52.            }
  53.                 if(S5==0)
  54.                 {
  55.                     delayms(10);
  56.                         if(S5==0)
  57.                         {
  58.          z=1;
  59.                                 sign=0;
  60.                                 flag=0;
  61.                                    while(!S5);
  62.                         }
  63.                 }
  64. }

  65. void main()
  66. {
  67.         init12864();
  68.   InitTimer0();        
  69.         while(1)
  70.         {         
  71.          keyscan();
  72.          write_com (0x80);
  73.    suanFa(num1);
  74.          write_com (0x90);
  75.    suanFa(num2);
  76.         }
  77.         
  78. }

  79. void Timer0Interrupt(void) interrupt 1
  80. {         
  81.           if(z==1)
  82.           flag++;
  83.                
  84.                 if(sign==0&&flag<=num1)
  85.                 {
  86.             PulsePwm=1;               
  87.                         
  88.             if(flag==num1)
  89. ……………………

  90. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
无刷.zip (37.2 KB, 下载次数: 48)



作者: MHNMHN    时间: 2017-8-3 15:49
大哥加点儿注释吧。
作者: xiong123154    时间: 2017-9-7 17:18
打假  你的延时在哪里
作者: xiong123154    时间: 2017-9-7 17:19
没有延时函数  还有延时  哪里搞来的
作者: 莫德尔    时间: 2018-8-21 11:08
你这是什么啊   你的电机驱动接口捏     你的中断里面为什么没有没有为PWM波服务的变量  为什么没有PWM调速函数      你的电机只能正转 而且是全速吧   回家多看看书 参考别人的程序看看   这次就算了吧  




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1