找回密码
 立即注册

QQ登录

只需一步,快速开始

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

DIY 循迹小车(加入步进电机、超声波)

  [复制链接]
跳转到指定楼层
楼主
  1. 小车程序 采用C8051f020芯片
  2. #include
  3. #include

  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define SYSCLK 22118400
  7. sfr PH0=0xFA;
  8. sfr PH1=0xFB;
  9. sbit IN1=P3^0;
  10. sbit IN2=P3^1;
  11. sbit IN3=P3^2;
  12. sbit IN4=P3^3;
  13. sbit S1=P2^0;
  14. sbit S2=P2^1;
  15. sbit S3=P2^2;
  16. sbit S4=P2^3;
  17. sbit S5=P2^4;
  18. sbit S6=P2^5;

  19. uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  20. uint num,temp,left,right,t,r,ge,shi,bai,qian;


  21. void SYSCLK_init() //时钟初始化
  22. {
  23. int i;
  24. OSCXCN=0x67;
  25. for(i=0;i<256;i++);
  26. while(!(OSCXCN&0x80));
  27. OSCICN=0x88;
  28. }

  29. void IO_init() //IO口初始化
  30. {
  31. XBR0=0x10;
  32. XBR1=0x00;
  33. XBR2=0x40;
  34. P0MDOUT=0xff;
  35. P3MDOUT=0xff;
  36. }

  37. void PCA_int_init() //PCA0初始化
  38. {
  39. PCA0MD=0x08; //使用系统时钟 禁止中断
  40. PCA0CPM0=0xc2;
  41. PCA0CPM1=0xc2;
  42. PCA0CN=0x40;
  43. PCA0L=0x00;
  44. PCA0H=0x00;
  45. PCA0CPL0=0x00; //设置PCA0CP0脉冲宽度
  46. PCA0CPH0=240;
  47. PCA0CPL1=0x00; //设置PCA0CP1脉冲宽度
  48. PCA0CPH1=240;
  49. }

  50. void T_init() //定时器初始化
  51. {
  52. IE=0x82;
  53. TMOD=0x01;
  54. TH0=(65536-18432)/256;
  55. TL0=(65536-18432)%256;
  56. TR0=0;
  57. }

  58. void delay1ms(uint z) //延时函数
  59. {
  60. uint x,y,i;
  61. for(y=z;y>0;y--)
  62. {
  63. for(x=0;x<10;x++)
  64. for(i=0;i<221;i++);
  65. }
  66. }

  67. void control() //方向控制
  68. {
  69. num=P2;
  70. num=num&0x3f;
  71. switch(num)
  72. {
  73. case 0x0c: //001100 011110 111111
  74. case 0x1e:
  75. case 0x3f:
  76. {
  77. PH0=0xa0; //左路电机
  78. PH1=0xa0; //右路电机
  79. } break;
  80. case 0x0e: //001110 001111 011111
  81. case 0x0f:
  82. case 0x1f:
  83. {
  84. PH0=0xa0;
  85. PH1=0x00;
  86. } break;
  87. case 0x06: //000110 000111
  88. case 0x07:
  89. {
  90. PH0=0xa0;
  91. PH1=0x00;
  92. } break;
  93. case 0x01: //000011 000001
  94. case 0x03:
  95. {
  96. PH0=0xb8;
  97. PH1=0x00;
  98. } break;
  99. case 0x1c: //011100 111100 111110
  100. case 0x3c:
  101. case 0x3e:
  102. {
  103. PH0=0x90;
  104. PH1=0xa0;
  105. } break;
  106. case 0x18: //011000 111000
  107. case 0x38:
  108. {
  109. PH0=0x80;
  110. PH1=0xa0;
  111. } break;
  112. case 0x30: //110000 100000
  113. case 0x20:
  114. {
  115. PH0=0x60;
  116. PH1=0xb8;
  117. } break;
  118. case 0x00: //000000
  119. {
  120. if(PH0<H1)
  121. {
  122. PH0=0x00;
  123. PH1=0x70;
  124. }
  125. if(PH0>H1)
  126. {
  127. PH0=0x70;
  128. PH1=0x00;
  129. }
  130. } break;
  131. }

  132. }

  133. void display(uchar qian,uchar bai,uchar shi,uchar ge) //数码管显示函数
  134. {
  135. if(qian!=0)
  136. {
  137. P4=0xef;
  138. P7=table[qian];
  139. delay1ms(2);
  140. }
  141. if(qian!=0||bai!=0)
  142. {
  143. P4=0xdf;
  144. P7=table[bai];
  145. delay1ms(2);
  146. }
  147. if(qian!=0||bai!=0||shi!=0)
  148. {
  149. P4=0xbf;
  150. P7=table[shi];
  151. delay1ms(2);
  152. }
  153. P4=0x7f;
  154. P7=table[ge];
  155. delay1ms(2);
  156. }

  157. void main() //主函数
  158. {
  159. WDTCN=0xde; //关闭看门狗
  160. WDTCN=0xad;
  161. SYSCLK_init();
  162. IO_init();
  163. PCA_int_init();
  164. T_init();
  165. IN1=0;
  166. IN2=1;
  167. IN3=0;
  168. IN4=1;
  169. TR0=1; //打开定时器
  170. while(1)
  171. {
  172. control();
  173. display(qian,bai,shi,ge);
  174. if(temp==1)
  175. {
  176. temp=0;
  177. ge=shi=bai=qian=0;
  178. display(qian,bai,shi,ge);
  179. for(r=0;r<5;r++)
  180. {
  181. P6=0x00;
  182. delay1ms(1000);
  183. P6=0xff;
  184. delay1ms(1000);

  185. }
  186. IN2=1;
  187. IN4=1;
  188. TR0=1;
  189. }
  190. }
  191. }

  192. void timer0() interrupt 1
  193. {
  194. TH0=(65536-18432)/256;
  195. TL0=(65536-18432)%256;
  196. t++;
  197. if(t==100)
  198. {
  199. t=0;
  200. ge++;
  201. if(ge==10) //秒计数
  202. {
  203. ge=0;
  204. shi++;
  205. }
  206. if(shi==10)
  207. {
  208. shi=0;
  209. bai++;
  210. }
  211. if(bai==10)
  212. {
  213. bai=0;
  214. qian++;
  215. }
  216. if(qian==10)
  217. ge=shi=bai=qian=0;
  218. }
  219. if(shi==5)
  220. {
  221. IN2=0;
  222. IN4=0;
  223. TR0=0;
  224. temp=1;
  225. }
  226. }
复制代码
飞奔中


跑道


小车全景


安装后内部

等待下线


电源、驱动、传感器电路

车底传感器


电源驱动PCB

超声波蔽障

超声波蔽障

步进电机驱动小车


步进电机驱动板+电源



评分

参与人数 1黑币 +15 收起 理由
564654654 + 15 很给力!

查看全部评分

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

使用道具 举报

沙发
ID:52482 发表于 2013-7-31 20:26 | 只看该作者
高手在这里
回复

使用道具 举报

板凳
ID:53198 发表于 2013-8-20 10:58 | 只看该作者
高手很不错的制作,谢谢分享。
回复

使用道具 举报

地板
ID:61326 发表于 2014-5-4 13:35 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
ID:52919 发表于 2014-5-5 14:21 | 只看该作者
学习了~~~~~
回复

使用道具 举报

6#
ID:62522 发表于 2014-6-2 17:35 | 只看该作者
厉害,大神!
回复

使用道具 举报

7#
ID:64606 发表于 2014-7-31 21:05 | 只看该作者
听说可以得金币哇
回复

使用道具 举报

8#
ID:64606 发表于 2014-8-1 00:37 | 只看该作者
M币到手。。。
回复

使用道具 举报

9#
ID:67795 发表于 2014-10-23 21:50 | 只看该作者
大神,真是不错啊
回复

使用道具 举报

10#
ID:67894 发表于 2014-10-25 10:21 | 只看该作者
很不错的设计
回复

使用道具 举报

11#
ID:67573 发表于 2014-10-27 08:49 | 只看该作者
学习下
回复

使用道具 举报

12#
ID:68558 发表于 2014-11-9 11:01 | 只看该作者
不错学 习了
回复

使用道具 举报

13#
ID:68558 发表于 2014-11-9 11:05 | 只看该作者
不错学习了呀
回复

使用道具 举报

14#
ID:69092 发表于 2014-11-20 11:38 | 只看该作者
高手!!!!!!!!!
回复

使用道具 举报

15#
ID:71533 发表于 2015-1-6 09:11 来自手机 | 只看该作者
大神,有电路图不
回复

使用道具 举报

16#
ID:72053 发表于 2015-1-12 13:08 | 只看该作者
研究研究
回复

使用道具 举报

17#
ID:72527 发表于 2015-1-20 10:07 | 只看该作者
学习了
回复

使用道具 举报

18#
ID:72570 发表于 2015-1-21 21:38 | 只看该作者
不错啊,学习了
回复

使用道具 举报

19#
ID:72611 发表于 2015-1-23 15:20 | 只看该作者
厉害,高手呀
回复

使用道具 举报

20#
ID:72995 发表于 2015-1-31 12:13 | 只看该作者
好厉害啊
回复

使用道具 举报

21#
ID:75123 发表于 2015-4-1 11:08 | 只看该作者
好像买这些配件来学习学习,给下配件资料别,还有196的学习版什么时候有货
回复

使用道具 举报

22#
ID:74143 发表于 2015-4-3 14:39 | 只看该作者
学习了。
回复

使用道具 举报

23#
ID:62670 发表于 2015-4-8 00:01 | 只看该作者
楼主能分享下电路就更好了   
回复

使用道具 举报

24#
ID:62670 发表于 2015-4-8 00:02 | 只看该作者
代码标注在详细点就更完美了,
回复

使用道具 举报

25#
ID:74471 发表于 2015-4-8 08:03 | 只看该作者
楼主,程序和原理图分享一下谢谢1419214137@qq.com
回复

使用道具 举报

26#
ID:76306 发表于 2015-4-8 09:00 | 只看该作者
值得学习学习  .非常感谢
回复

使用道具 举报

27#
ID:75829 发表于 2015-4-8 22:04 | 只看该作者
吊的很!大神啊
回复

使用道具 举报

28#
ID:68477 发表于 2015-4-12 14:36 | 只看该作者
做的不错。
回复

使用道具 举报

29#
ID:76862 发表于 2015-4-13 20:38 | 只看该作者
我能问一下,超声模块可以循迹吗?要怎么循迹,还有彻底的传感器是什么?
回复

使用道具 举报

30#
ID:28571 发表于 2015-4-16 20:37 | 只看该作者

好东西,学习一下,谢谢!
回复

使用道具 举报

31#
ID:235962 发表于 2017-9-27 11:06 | 只看该作者
厉害啊楼主
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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