標(biāo)題: DIY 循跡小車(加入步進(jìn)電機(jī)、超聲波) [打印本頁]

作者: admin    時(shí)間: 2013-6-2 01:26
標(biāo)題: DIY 循跡小車(加入步進(jìn)電機(jī)、超聲波)
  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() //時(shí)鐘初始化
  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; //使用系統(tǒng)時(shí)鐘 禁止中斷
  40. PCA0CPM0=0xc2;
  41. PCA0CPM1=0xc2;
  42. PCA0CN=0x40;
  43. PCA0L=0x00;
  44. PCA0H=0x00;
  45. PCA0CPL0=0x00; //設(shè)置PCA0CP0脈沖寬度
  46. PCA0CPH0=240;
  47. PCA0CPL1=0x00; //設(shè)置PCA0CP1脈沖寬度
  48. PCA0CPH1=240;
  49. }

  50. void T_init() //定時(shí)器初始化
  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) //延時(shí)函數(shù)
  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; //左路電機(jī)
  78. PH1=0xa0; //右路電機(jī)
  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) //數(shù)碼管顯示函數(shù)
  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() //主函數(shù)
  158. {
  159. WDTCN=0xde; //關(guān)閉看門狗
  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; //打開定時(shí)器
  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) //秒計(jì)數(shù)
  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. }
復(fù)制代碼
飛奔中


跑道


小車全景


安裝后內(nèi)部

等待下線


電源、驅(qū)動(dòng)、傳感器電路

車底傳感器


電源驅(qū)動(dòng)PCB

超聲波蔽障

超聲波蔽障

步進(jìn)電機(jī)驅(qū)動(dòng)小車


步進(jìn)電機(jī)驅(qū)動(dòng)板+電源




作者: 鮮の水晶葡萄    時(shí)間: 2013-7-31 20:26
高手在這里
作者: 申家坤    時(shí)間: 2013-8-20 10:58
高手很不錯(cuò)的制作,謝謝分享。
作者: xi_chang    時(shí)間: 2014-5-4 13:35
謝謝分享
作者: LEAVING    時(shí)間: 2014-5-5 14:21
學(xué)習(xí)了~~~~~
作者: 許你晴天柱    時(shí)間: 2014-6-2 17:35
厲害,大神!
作者: 終無畏    時(shí)間: 2014-7-31 21:05
聽說可以得金幣哇
作者: 終無畏    時(shí)間: 2014-8-1 00:37
M幣到手。。。
作者: HADES_YZ    時(shí)間: 2014-10-23 21:50
大神,真是不錯(cuò)啊
作者: xyz2014sxl    時(shí)間: 2014-10-25 10:21
很不錯(cuò)的設(shè)計(jì)
作者: blj178    時(shí)間: 2014-10-27 08:49
學(xué)習(xí)下
作者: zyqwyh    時(shí)間: 2014-11-9 11:01
不錯(cuò)學(xué) 習(xí)了
作者: zyqwyh    時(shí)間: 2014-11-9 11:05
不錯(cuò)學(xué)習(xí)了呀
作者: szzheng    時(shí)間: 2014-11-20 11:38
高手。。。。。。。!
作者: 日日日    時(shí)間: 2015-1-6 09:11
大神,有電路圖不
作者: whrui5033    時(shí)間: 2015-1-12 13:08
研究研究
作者: heros    時(shí)間: 2015-1-20 10:07
學(xué)習(xí)了
作者: 一把刀    時(shí)間: 2015-1-21 21:38
不錯(cuò)啊,學(xué)習(xí)了
作者: delay    時(shí)間: 2015-1-23 15:20
厲害,高手呀
作者: 蒲公英lhl    時(shí)間: 2015-1-31 12:13
好厲害啊
作者: nry928    時(shí)間: 2015-4-1 11:08
好像買這些配件來學(xué)習(xí)學(xué)習(xí),給下配件資料別,還有196的學(xué)習(xí)版什么時(shí)候有貨
作者: lb688    時(shí)間: 2015-4-3 14:39
學(xué)習(xí)了。
作者: dzdalong    時(shí)間: 2015-4-8 00:01
樓主能分享下電路就更好了   
作者: dzdalong    時(shí)間: 2015-4-8 00:02
代碼標(biāo)注在詳細(xì)點(diǎn)就更完美了,
作者: 老大好    時(shí)間: 2015-4-8 08:03
樓主,程序和原理圖分享一下謝謝1419214137@qq.com
作者: H全新    時(shí)間: 2015-4-8 09:00
值得學(xué)習(xí)學(xué)習(xí)  .非常感謝
作者: 單片菜菜機(jī)    時(shí)間: 2015-4-8 22:04
吊的很!大神啊
作者: 6ningning    時(shí)間: 2015-4-12 14:36
做的不錯(cuò)。
作者: san    時(shí)間: 2015-4-13 20:38
我能問一下,超聲模塊可以循跡嗎?要怎么循跡,還有徹底的傳感器是什么?
作者: yyxtj    時(shí)間: 2015-4-16 20:37

好東西,學(xué)習(xí)一下,謝謝!
作者: e介草民    時(shí)間: 2017-9-27 11:06
厲害啊樓主




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1