找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机步进电机精确控制程序(防抖动)C语言编写

[复制链接]
跳转到指定楼层
楼主
C语言编的步进电机精确控制程序包括防抖动等


单片机源程序如下:
  1. #include <reg52.h>
  2. #include <absacc.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit P0_1=P0^1;
  6. sbit P0_0=P0^0;
  7. sbit P3_2=P3^2;
  8. sbit P3_3=P3^3;
  9. sbit P3_4=P3^4;
  10. sbit P3_5=P3^5;
  11. void delays(uint);
  12. void delay(uint, uint);
  13. void mc(uint);
  14. void mc1(uint);
  15. fangdoudong() ;
  16. int p;

  17. void main(void)
  18. {

  19.             
  20.            TCON = 0x05;        //外部中断0、1均设置为下降沿触发
  21.            TMOD = 0x66;         //定时/计数器0设置为计数器模式,计数脉冲由引脚T0(即P3.4)输入,模式2(8位自动再加载型计数器)
  22.            
  23.       
  24.                    EA=1;                                    //开中断
  25.                EX1 = 1;               //外部中断1使能
  26.                    EX0 = 1;                 //外部中断0使能
  27.            ET0 = 1;              //计数器中断0使能
  28.            ET1 = 1;              //计数器中断1使能
  29.            TH0 = 0xff;          //计数器装载初值(高位)
  30.            TL0 = 0xff;          //计数器装载初值(低位)
  31.            TH1 = 0xff;          //计数器装载初值(高位)
  32.            TL1 = 0xff;
  33.            TR0 = 1;              //计数器0开
  34.            TR1 = 1;              //计数器1开
  35.     P0_1 =1;                  
  36.     p=50;
  37.         while(1)
  38.         {
  39.            mc(500);
  40.         }
  41. }


  42. void mc(uint n)
  43. {
  44.     uint i;
  45. for(i=n;i>0;i--)
  46.   {
  47.     P0_0=0;
  48.     delays(13);
  49.     P0_0=1;
  50.     delay(25,p);
  51.       
  52.    }
  53. }

  54. void mc1(uint m)
  55. {
  56.     uint j;
  57. for(j=m;j>0;j--)
  58.   {
  59.     P0_0=0;
  60.     delays(13);
  61.     P0_0=1;
  62.     delay(25,50);
  63.       
  64.    }
  65. }

  66. void delay(uint a, uint b)
  67. { uint i,j;
  68.    for(i=a;i>0;i--)
  69.   {
  70.     for(j=b;j>0;j--);
  71.   }
  72. }

  73. fangdoudong()                 //防抖动
  74. {
  75.     delays(60);
  76.     if(P3_2&&P3_3&&P3_4&&P3_5==0)
  77.     {
  78.        return 1;
  79.      }
  80.     else
  81.      {
  82.        return 0;
  83.       }
  84. }

  85. void delays(uint m)      
  86. {
  87.         uint i;
  88.         for(i=m; i>0; i--);
  89. }


  90. void Intsvr0(void) interrupt 0 using 1                //外部中断0        
  91. {
  92.      if(fangdoudong())
  93.         p=p+10;
  94.        return;
  95. }
  96. void Intsvr1(void) interrupt 2 using 1                //外部中断1        
  97. {
  98.         if(fangdoudong())
  99.         p=p-10;
  100.         return;
  101. }

  102. ……………………

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

所有资料51hei提供下载:
C语言编的步进电机控制程序(防抖动).zip (24.8 KB, 下载次数: 33)



评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2017-5-29 03:21 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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