找回密码
 立即注册

QQ登录

只需一步,快速开始

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

步进电机正转 51单片机程序

[复制链接]
跳转到指定楼层
楼主
ID:112317 发表于 2016-4-6 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

正转,转四相步进电机,每相间隔70ms。C51程序 51单片机通用
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint time

  5. void timer1(void) interrupt 1 using 1{ //定时器0中断,定时1ms//
  6. TH0=(65536-1000)/256;
  7. TL0=(65536-1000)%256;
  8. time++;
  9. }

  10. void delay(uint n){ //一般延时
  11. while(--n);
  12. }

  13. void delay(uint dtime){ //延时
  14. TR0=1;
  15. while(time<=dtime);
  16. time=0;
  17. TR0=0;
  18. }

  19. void moto(bit cf,uchar n,uint dtime){ //电机驱动子程序,
  20. uchar idata zhpai[4]={0x78,0xb8,0xd8,0xe8};
  21. uchar idata fpai[4]={0xe8,0xd8,0xb8,0x78};
  22. uchar i,l=0;
  23. if(cf==0) //正转,A-B-C-A
  24. for(i=0;i<n;i++){
  25. P1=zhpai[l];//P1.7~1.4为输出口,分别为A、B、C、D
  26. l++;
  27. delay(dtime);
  28. if(l==4)l=0;
  29. }
  30. else{ //反转,C-B-A-C
  31. for(i=0;i<n;i++){
  32. P1=fpai[l];
  33. l++;
  34. delay(dtime);
  35. if(l==4)l=0;
  36. }
  37. }
  38. }

  39. void main(){
  40. TMOD=0x01;
  41. TH0=(65536-1000)/256;
  42. TL0=(65536-1000)%256;
  43. EA=1;
  44. ET0=1;
  45. while(1){
  46. moto(0,4,70);//正转,转四相,每相间隔70ms
  47. delay(10000);
  48. moto(1,4,70);//反转,转四相,每相间隔70ms
  49. delay(10000);
  50. }
  51. }
复制代码



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

使用道具 举报

沙发
ID:183396 发表于 2017-3-26 14:27 | 只看该作者
C(22):错误c237:“_delay”:功能已经有了一个身体。       这是什么问题    求助
   
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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