找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2588|回復: 1
收起左側(cè)

步進電機正轉(zhuǎn) 51單片機程序

[復制鏈接]
ID:112317 發(fā)表于 2016-4-6 18:28 | 顯示全部樓層 |閱讀模式

正轉(zhuǎn),轉(zhuǎn)四相步進電機,每相間隔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){ //電機驅(qū)動子程序,
  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) //正轉(zhuǎn),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{ //反轉(zhuǎn),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);//正轉(zhuǎn),轉(zhuǎn)四相,每相間隔70ms
  47. delay(10000);
  48. moto(1,4,70);//反轉(zhuǎn),轉(zhuǎn)四相,每相間隔70ms
  49. delay(10000);
  50. }
  51. }
復制代碼



回復

使用道具 舉報

ID:183396 發(fā)表于 2017-3-26 14:27 | 顯示全部樓層
C(22):錯誤c237:“_delay”:功能已經(jīng)有了一個身體。       這是什么問題    求助
   
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表