找回密码
 立即注册

QQ登录

只需一步,快速开始

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

无刷电机用51单片机中断调的 源程序

[复制链接]
跳转到指定楼层
楼主
ID:223381 发表于 2017-7-30 14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
无刷电机单片机控制程序希望能够帮助到大家

单片机源程序如下:
  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)


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

使用道具 举报

沙发
ID:184267 发表于 2017-8-3 15:49 | 只看该作者
大哥加点儿注释吧。
回复

使用道具 举报

板凳
ID:221336 发表于 2017-9-7 17:18 | 只看该作者
打假  你的延时在哪里
回复

使用道具 举报

地板
ID:221336 发表于 2017-9-7 17:19 | 只看该作者
没有延时函数  还有延时  哪里搞来的
回复

使用道具 举报

5#
ID:342294 发表于 2018-8-21 11:08 | 只看该作者
你这是什么啊   你的电机驱动接口捏     你的中断里面为什么没有没有为PWM波服务的变量  为什么没有PWM调速函数      你的电机只能正转 而且是全速吧   回家多看看书 参考别人的程序看看   这次就算了吧  
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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