久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2100|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

誰(shuí)有有關(guān)競(jìng)賽自動(dòng)往返電動(dòng)小汽車(chē)的質(zhì)料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:152839 發(fā)表于 2017-1-6 20:39 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
誰(shuí)有有關(guān)競(jìng)賽自動(dòng)往返電動(dòng)小汽車(chē)的質(zhì)料  分享一下 謝謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:155507 發(fā)表于 2017-1-7 15:13 | 只看該作者
  1. #include "STC15W201S.h"
  2. #include "intrins.h"

  3. typedef unsigned char BYTE;
  4. typedef unsigned int WORD;

  5. sbit D1 = P1^4;  //用于控制左邊發(fā)光二極管
  6. sbit D2 = P3^7;   //用于控制右邊發(fā)光二極管

  7. bit busy;

  8. bit l9110s_1 ;
  9. bit l9110s_2 ;

  10. bit R9110s_1 ;
  11. bit R9110s_2 ;

  12. unsigned char func;

  13. void Delay500ms()                //@11.0592MHz
  14. {
  15.   unsigned char i, j, k;

  16.   _nop_();
  17.   _nop_();
  18.   i = 2;
  19.   j = 2;
  20.   k = 2;
  21.   do
  22.   {
  23.     do
  24.     {
  25.       while (--k);
  26.     } while (--j);
  27.   } while (--i);
  28. }

  29. BYTE usart_recv;

  30. /*----------------------------
  31. UART 中斷處理函數(shù)
  32. -----------------------------*/
  33. void Uart() interrupt 4 using 1
  34. {
  35.   if (RI)
  36.   {
  37.     RI = 0;                 //??RI?
  38.     usart_recv = SBUF;
  39.   }
  40.   if (TI)
  41.   {
  42.     TI = 0;                 //??TI?
  43.     busy = 0;               //????
  44.   }
  45. }

  46. //串口初始化為9600波特率
  47. void Usart_init(void)
  48. {
  49.   SCON = 0x50;       
  50.   T2L = 0xE0;               
  51.   T2H = 0xFE;               
  52.   AUXR |= 0x01;               
  53.   AUXR |= 0x4;               
  54.   AUXR |= 0x10;               
  55.   ES = 1;
  56.   EA = 1;
  57. }


  58. //電機(jī)PWM方式驅(qū)動(dòng)

  59. void PWM_Init(void)                //100??@11.0592MHz
  60. {
  61.   AUXR |= 0x80;               
  62.   TMOD = 0x02;       
  63.   TL0 = 0x00;               
  64.   TH0 = 0x00;               
  65.   TF0 = 0;               
  66.   TR0 = 1;               
  67.   ET0 = 1;
  68.   EA  = 1;
  69. }

  70. unsigned char R_PWM,L_PWM;
  71. unsigned char count;
  72. void timer0_int (void) interrupt 1
  73. {
  74.   count++;
  75.   if(count > 100)
  76.   {
  77.     P32 = l9110s_1;
  78.     P33 = l9110s_2;
  79.     P54 = R9110s_1;
  80.     P55 = R9110s_2;
  81.     count = 0;
  82.   }
  83.   
  84.   if(count == L_PWM)
  85.   {
  86.     P54 = 0;
  87.     P55 = 0;
  88.   }
  89.   
  90.   if(count == R_PWM)
  91.   {
  92.     P32 = 0;
  93.     P33 = 0;
  94.   }
  95.   
  96. }


  97. void SendData(BYTE dat)
  98. {
  99.   while (busy);               //???????????
  100.   busy = 1;
  101.   SBUF = dat;                 //????UART?????
  102. }


  103. //電機(jī)控制,注意電機(jī)驅(qū)動(dòng)芯片9110兩個(gè)控制端只能有一個(gè)為高電平,
  104. //若同時(shí)為高電平則芯片內(nèi)部短路,危險(xiǎn),極易損壞芯片。
  105. void stop(void);
  106. void front(void);
  107. void back(void);
  108. void right(void);
  109. void left(void);

  110. //停止
  111. void stop(void)
  112. {
  113.   l9110s_1 = 0;
  114.   l9110s_2 = 0;
  115.   R9110s_1 = 0;
  116.   R9110s_2 = 0;
  117. }

  118. //前進(jìn)
  119. void front(void)
  120. {
  121.   l9110s_1 = 0;
  122.   l9110s_2 = 1;
  123.   R9110s_1 = 0;
  124.   R9110s_2 = 1;
  125. }

  126. //倒退
  127. void back(void)
  128. {
  129.   l9110s_1 = 1;
  130.   l9110s_2 = 0;
  131.   R9110s_1 = 1;
  132.   R9110s_2 = 0;
  133. }


  134. //右轉(zhuǎn)
  135. void right(void)
  136. {
  137.   l9110s_1 = 1;
  138.   l9110s_2 = 0;
  139.   R9110s_1 = 0;
  140.   R9110s_2 = 1;
  141. }

  142. //左轉(zhuǎn)
  143. void left(void)
  144. {
  145.   l9110s_1 = 0;
  146.   l9110s_2 = 1;
  147.   R9110s_1 = 1;
  148.   R9110s_2 = 0;
  149. }




  150. //循跡避障 藍(lán)牙控制功能選擇
  151. unsigned char func_sel(void)
  152. {
  153.   unsigned long c;
  154.   unsigned char i;
  155.   i = 0;
  156.   c = 0;
  157.   D1 = D2 = 1;
  158.   stop();
  159.   Delay500ms();Delay500ms();Delay500ms();Delay500ms();
  160.   while((P15 == 0)&& (c <0x3ffff))
  161.   {
  162.     c++;
  163.     if((c > 0xffff) && (c < 0x1ffff))
  164.     {
  165.       D1 = 0;
  166.       i = 1;
  167.     }
  168.    
  169.     if((c > 0x1ffff) && (c < 0x2ffff))
  170.     {
  171.       D1 = 1; D2 = 0;
  172.       i = 2;
  173.     }
  174.    
  175.     if((c > 0x2ffff) && (c < 0x3ffff))
  176.     {
  177.       D1 = 0; D2 = 0;
  178.       i = 3;
  179.     }
  180.   }
  181.   
  182.   if(c < 0xffff)
  183.   {
  184.     return func;
  185.   }
  186.   return i;
  187. }



  188. void main(void)
  189. {
  190.   BYTE last_recv;
  191.   
  192.   P32 = P33 = P54 = P55 = 0;
  193.   l9110s_1 = l9110s_2 = R9110s_1 = R9110s_2 = 0;
  194.   
  195.   R_PWM = 99;
  196.   L_PWM = 99;
  197.   P3M1 = 0;
  198.   P3M0 = 0x0C;
  199.   P5M1 = 0;
  200.   P5M0 = 0x30;
  201.   P1M1 = 0xf;
  202.   P1M0 = 0;
  203.   IP =0x10;
  204.   PWM_Init();
  205.   Usart_init();
  206.   D1 = D2 = 1;
  207.   P15 = 1;
  208.   func = 1;
  209.   
  210.   while(func == 1)   //功能1:循跡
  211.   {
  212.     while((P11 == 1)&& (P13 == 0))
  213.     {
  214.       right(); D2 = 0;D1 = 1;
  215.     }
  216.     while((P13 == 1)&&(P11 == 0))
  217.     {
  218.       left();D1 = 0;D2 =1;
  219.     }
  220.    
  221.     while((P13 == 0)&&(P11 == 0))
  222.     {
  223.       front();D1 = 0;D2 =0;
  224.     }
  225.     front();Delay500ms();
  226.     if(P15 == 0)
  227.     {
  228.       func = func_sel();
  229.     }
  230.   }

  231.   while(func == 2)  //功能2:避障
  232.   {
  233.     if(P15 == 0)
  234.     {
  235.       func = func_sel();
  236.     }
  237.    
  238.     while((P12 == 1)&& (P10 == 0))
  239.     {
  240.       left(); D2 = 0;D1 = 1;
  241.     }
  242.    
  243.     while((P12 == 0)&& (P10 == 1))
  244.     {
  245.       right(); D2 = 1;D1 = 0;
  246.     }
  247.    
  248.     while((P12 == 1)&& (P10 == 1))
  249.     {
  250.       front(); D2 = 0;D1 = 0;
  251.     }
  252.    
  253.     while((P12 == 0)&& (P10 == 0))
  254.     {
  255.       back(); D2 = 1;D1 = 1;
  256.     }
  257.   }

  258.   
  259.   while(func == 3)    //功能3:藍(lán)牙遙控
  260.   {
  261.     if(P15 == 0)
  262.     {
  263.       func = func_sel();
  264.     }
  265.    
  266.     if(last_recv != usart_recv)
  267.     {
  268.       last_recv = usart_recv;
  269.       switch(usart_recv)
  270.       {
  271.       case 0x14:
  272.       case 0x15:
  273.       case 0x16:
  274.       case 0x17:
  275.       case 0x18:
  276.       case 0x19:
  277.       case 0x1a:
  278.       case 0x1b:
  279.       case 0x1c:
  280.       case 0x1d:
  281.       case 0x1e:
  282.       case 0x1f:       
  283.         front();
  284.         R_PWM = 69+(usart_recv-0x10)*2;
  285.         L_PWM = 69+(usart_recv-0x10)*2;
  286.         D1 = D2 = 0;
  287.         break;
  288.         
  289.       case 0x24:
  290.       case 0x25:
  291.       case 0x26:
  292.       case 0x27:
  293.       case 0x28:
  294.       case 0x29:
  295.       case 0x2a:
  296.       case 0x2b:
  297.       case 0x2c:
  298.       case 0x2d:
  299.       case 0x2e:
  300.       case 0x2f:       
  301.         back();
  302.         R_PWM = 69+(usart_recv-0x20)*2;
  303.         L_PWM = 69+(usart_recv-0x20)*2;
  304.         D1 = D2 = 1;
  305.         break;
  306.         
  307.       case 0x34:
  308.       case 0x35:
  309.       case 0x36:
  310.       case 0x37:
  311.       case 0x38:
  312.       case 0x39:
  313.       case 0x3a:
  314.       case 0x3b:
  315.       case 0x3c:
  316.       case 0x3d:
  317.       case 0x3e:
  318.       case 0x3f:       
  319.         left();
  320.         R_PWM = 69+(usart_recv-0x30)*2;
  321.         L_PWM = 69+(usart_recv-0x30)*2;
  322.         D1 = 0; D2 = 1;
  323.         break;               
  324.         
  325.         
  326.       case 0x44:
  327.       case 0x45:
  328.       case 0x46:
  329.       case 0x47:
  330.       case 0x48:
  331.       case 0x49:
  332.       case 0x4a:
  333.       case 0x4b:
  334.       case 0x4c:
  335.       case 0x4d:
  336.       case 0x4e:
  337.       case 0x4f:       
  338.         right();
  339.         R_PWM = 69+(usart_recv-0x40)*2;
  340.         L_PWM = 69+(usart_recv-0x40)*2;
  341.         D1 = 1; D2 = 0;
  342.         break;                       
  343.         
  344.       case 0x54:
  345.       case 0x55:
  346.       case 0x56:
  347.       case 0x57:
  348.       case 0x58:
  349.       case 0x59:
  350.       case 0x5a:
  351.       case 0x5b:
  352.       case 0x5c:
  353.       case 0x5d:
  354.       case 0x5e:
  355.       case 0x5f:       
  356.         front();
  357.         R_PWM = 99;
  358.         L_PWM = 100-(usart_recv-0x50)*2;
  359.         D1 = 1; D2 = 0;
  360.         break;                                       
  361.         

  362.       case 0x64:
  363.       case 0x65:
  364.       case 0x66:
  365.       case 0x67:
  366.       case 0x68:
  367.       case 0x69:
  368.       case 0x6a:
  369.       case 0x6b:
  370.       case 0x6c:
  371.       case 0x6d:
  372.       case 0x6e:
  373.       case 0x6f:       
  374.         front();
  375.         R_PWM = 100-(usart_recv-0x60)*2;
  376.         L_PWM = 99;
  377.         D1 = 0; D2 = 1;
  378.         break;                                       
  379.         
  380.         
  381.       case 0x74:
  382.       case 0x75:
  383.       case 0x76:
  384.       case 0x77:
  385.       case 0x78:
  386.       case 0x79:
  387.       case 0x7a:
  388.       case 0x7b:
  389.       case 0x7c:
  390.       case 0x7d:
  391.       case 0x7e:
  392.       case 0x7f:       
  393.         back();
  394.         R_PWM = 99;
  395.         L_PWM = 100-(usart_recv-0x70)*2;
  396.         D1 = 1; D2 = 1;
  397.         break;               
  398.         
  399.       case 0x84:
  400.       case 0x85:
  401.       case 0x86:
  402.       case 0x87:
  403.       case 0x88:
  404.       case 0x89:
  405.       case 0x8a:
  406.       case 0x8b:
  407.       case 0x8c:
  408.       case 0x8d:
  409.       case 0x8e:
  410.       case 0x8f:       
  411.         back();
  412.         R_PWM = 100-(usart_recv-0x80)*2;
  413.         L_PWM = 99;
  414.         D1 = 1; D2 = 1;
  415.         break;                                       
  416.         
  417.       case 0:
  418.         stop();
  419.         D1 = 1; D2 = 1;
  420.         break;
  421.       }
  422.     }
  423.   }
  424. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区中文 | www久久国产| 国产高清久久久 | 精品久久久久久久 | 日韩精品一区二区三区在线播放 | 国产99久久精品一区二区300 | 国产精品视频久久久久久 | 成人在线欧美 | 成人高清在线视频 | 精品在线播放 | 亚洲综合国产 | 免费的日批视频 | 久久久久久成人 | 欧美一区久久 | 日中文字幕在线 | 国产成人99久久亚洲综合精品 | 亚洲情视频| 免费的网站www | 一区二区精品 | 久久一区二区三区四区 | 久久99精品国产自在现线小黄鸭 | 久久久久久久久久久久亚洲 | 亚洲一区二区黄 | 久久国产激情视频 | 国产精品激情 | 亚洲免费在线观看视频 | 亚洲久草| 欧美日韩亚洲一区 | 中文字幕国产在线 | 欧美黄视频 | 亚洲精品黄色 | 亚洲一区在线日韩在线深爱 | 亚洲欧美一区二区在线观看 | 91精品麻豆日日躁夜夜躁 | 亚洲欧美在线观看 | 日韩欧美精品在线播放 | 精品国产精品一区二区夜夜嗨 | 免费不卡视频 | 午夜a区 | 成人亚洲一区 | 日日噜|