找回密码
 立即注册

QQ登录

只需一步,快速开始

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

舵机51单片机控制转向源代码 智能小车循迹(舵机版)

[复制链接]
跳转到指定楼层
楼主
ID:194920 发表于 2017-4-30 09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
舵机控制实例


  1. #include<reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. void scan();
  6. void init_time0();
  7. void Direction(uchar jd);
  8. void DELAY(uint xms);
  9. void pwm_ENA(uchar k);
  10. sbit l_1=P1^0;
  11. sbit l_2=P1^1;
  12. sbit l_3=P1^2;
  13. sbit cen=P1^3;
  14. sbit r_1=P1^6;
  15. sbit r_2=P1^5;
  16. sbit r_3=P1^4;
  17. sbit duoji=P2^7;
  18. sbit pwm1=P2^0;
  19. sbit pwm2=P2^1;
  20. uchar count,cycle,jd;
  21. uchar flag=0;
  22. void main()
  23. {
  24. DELAY(3000);
  25. P1=0x00;
  26. cycle=0;
  27. count=0;
  28. jd=12;
  29. init_time0();
  30. while(1)
  31. {
  32. scan();
  33. }
  34. }
  35. void scan()
  36. {
  37. if(cen==0)
  38. {
  39. //中
  40. flag=0;
  41. }
  42. else if(r_1==0)
  43. //右 1



  44. {
  45. }
  46. flag=1;
  47. else if(r_2==0)
  48. //右 2
  49. {
  50. flag=2;
  51. }
  52. else if(r_3==0)
  53. //右 3 P14
  54. {
  55. flag=3;
  56. }
  57. else if(l_1==0)
  58. //左 1
  59. {
  60. flag=4;
  61. }
  62. else if(l_2==0)
  63. //左 2
  64. P11
  65. {
  66. flag=5;
  67. }
  68. {
  69. else if(l_3==0)
  70. flag=6;
  71. //左 3 P12
  72. }
  73. switch(flag)
  74. {
  75. case
  76. 0:
  77. {Direction(12);pwm_ENA(5);break;}
  78. //
  79. P13
  80. P15
  81. case 1: {Direction(15);pwm_ENA(3);break;} // delay(1);;pwm_ENA1(1)
  82. P16
  83. case 2: {Direction(14);pwm_ENA(3);break;}
  84. //
  85. case 3: {Direction(13);pwm_ENA(4);break;}
  86. //run()run()
  87. P14
  88. P10
  89. case 4: {Direction(9);pwm_ENA(3);break;} // delay(1)
  90. pwm_ENA1(1);
  91. case 5: {Direction(10);pwm_ENA(3);break;}
  92. //
  93. P11



  94. case 6: {Direction(11);pwm_ENA(4);break;}
  95. //
  96. run()
  97. P12
  98. }
  99. }
  100. void init_time0()
  101. {
  102. TMOD=0x01;
  103. //定时器方式 1
  104. //定时 0.1ms
  105. TH0=(65536-100)/256;
  106. TL0=(65536-100)%256;
  107. IE=0x82;
  108. TR0=1;
  109. }
  110. void Dreaction(uchar jd)
  111. {
  112. if(cycle<jd)
  113. //判断 0.05ms 次数是否小于角度标识
  114. //确定小于, duoji 输出高电平
  115. duoji=1;
  116. else
  117. duoji=0;
  118. //大于则输出低电平
  119. }
  120. void DELAY(uint xms)
  121. {
  122. uint i,j;
  123. for(i=xms;i>0;i--)
  124. for(j=125;j>0;j--);
  125. }
  126. void pwm_ENA(uchar k)
  127. {
  128. if(count<=k)
  129. {
  130. pwm1=0;
  131. }
  132. else if(count>k&&count<13)
  133. {
  134. pwm1=1;
  135. }
  136. else if(count==13)
  137. count=0;
  138. }
  139. void Time0_ISP(void) interrupt 1
  140. {
  141. //定时器中断



  142. cycle+=1;
  143. //0.1ms 次数加 1
  144. //次数始终保持为 200 即保持周期为 20ms
  145. cycle=cycle%200;
  146. }

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

复制代码

完整代码下载:
智能小车循迹(舵机版).rar (2.42 MB, 下载次数: 37)

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

使用道具 举报

沙发
ID:186510 发表于 2017-11-10 23:16 | 只看该作者
运行程序有错误啊,由10多个,下载下的程序也不可以用,楼主,你可以发一下源码吗???.c文件可以吗??
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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