找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机蓝牙智能小车源码

[复制链接]
跳转到指定楼层
楼主
ID:254215 发表于 2017-11-27 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码附上来了
前灯 PB12
右灯pb13
zuo pb14
蜂鸣器 PB15

  1. /*
  2. 硬件链接:
  3. 左电机控制端口:PA3、PA4
  4. 右电机控制端口:PA1、PA2            
  5. */

  6. #include "stm32f10x.h"//声明头文件
  7. #include "stm32f10x_exti.h"
  8. #include "stm32f10x_gpio.h"
  9. #include "stm32f10x_rcc.h"
  10. #include "stm32f10x_usart.h"


  11. #define uchar unsigned char//宏定义
  12. #define uint unsigned int//宏定义
  13. #define AA 35//左轮速度调节值
  14. #define BB 35//右轮速度调节值

  15. uchar a=0;//定义一个变量a,用来读取串口的数据

  16. /*有参数延时函数*/
  17. void delay(__IO uint32_t nCount)
  18. {
  19.   for (; nCount != 0; nCount--);
  20. }


  21. unsigned int temp=0;
  22. unsigned char rebuf[5];
  23. unsigned int start=0;

  24. void GPIO_DengConfiguration()
  25. {
  26.     GPIO_InitTypeDef  GPIO_InitStructure;

  27.     /* 初始化LED的GPIO管脚,配置为推挽输出 */         //设置端口
  28.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;         //车灯GPIO_Pin12,13,14端口 15蜂鸣器端口
  29. //设置对端口的模式
  30.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //设置为 推挽(Push-Pull)输出
  31. //
  32.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //最大输出速度为50MHz

  33.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  34. }




  35. //前进子程序
  36. void go1()         
  37.   {
  38.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  39. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  40. delay(AA);

  41. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  42. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  43. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  44. delay(BB);

  45. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  46. delay(500000);
  47. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  48. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  49.   }

  50.   
  51. //前进子程序
  52. void go2()
  53.   {
  54.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  55. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  56. delay(AA);

  57. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  58. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  59. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  60. delay(BB);

  61. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  62. delay(400000);
  63. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  64. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  65.   }

  66. //前进子程序
  67. void go3()
  68.   {
  69.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  70. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  71. delay(AA);

  72. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  73. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  74. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  75. delay(BB);

  76. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  77. delay(300000);
  78. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  79. GPIO_SetBits(GPIOB,GPIO_Pin_14);         //关闭转向灯

  80.   }

  81. //前进子程序
  82. void go4()
  83.   {
  84.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  85. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  86. delay(AA);

  87. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  88. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  89. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  90. delay(BB);

  91. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  92. delay(200000);
  93. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  94. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  95.   }

  96. //前进子程序
  97. void go5()
  98.   {
  99.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  100. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  101. delay(AA);

  102. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  103. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  104. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  105. delay(BB);

  106. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  107. delay(100000);
  108. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  109. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  110.   }


  111. //前进子程序
  112. void go6()
  113.   {
  114.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  115. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  116. delay(AA);

  117. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  118. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  119. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  120. delay(BB);

  121. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  122. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  123. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  124.   }

  125. //小车后退的子程序
  126. void hui1()
  127.    {
  128. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  129. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  130. delay(AA);

  131. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  132.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  133. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  134. delay(BB);

  135.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  136.    delay(500000);

  137.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  138. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  139.    }

  140. //小车后退的子程序
  141. void hui2()
  142.    {
  143. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  144. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  145. delay(AA);

  146. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  147.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  148. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  149. delay(BB);

  150.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  151.    delay(400000);

  152.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  153. GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

  154.    }
  155.    
  156. //小车后退的子程序
  157. void hui3()
  158.    {
  159. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  160. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  161. delay(AA);

  162. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  163.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  164. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  165. delay(BB);

  166.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  167.    delay(300000);

  168.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  169. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  170.    }  
  171.          
  172.   //小车后退的子程序
  173. void hui4()
  174.    {
  175. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  176. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  177. delay(AA);

  178.     GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  179.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  180. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  181. delay(BB);

  182.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  183.    delay(200000);

  184.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  185. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  186.    }
  187.    
  188.    //小车后退的子程序
  189. void hui5()
  190.    {
  191. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  192. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  193. delay(AA);

  194. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  195.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  196. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  197. delay(BB);

  198.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  199.    delay(100000);

  200.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  201. GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

  202.    }
  203.    
  204.    //小车后退的子程序
  205. void hui6()
  206.    {
  207. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  208. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  209. delay(AA);

  210. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  211.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  212. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  213. delay(BB);

  214.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  215.   

  216.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  217. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  218.    }  


  219. //小车左转弯子程序   
  220. void turnleft()
  221.      {
  222. GPIO_ResetBits(GPIOB,GPIO_Pin_13);//转向灯打开

  223. GPIO_SetBits(GPIOA,GPIO_Pin_3);
  224. GPIO_ResetBits(GPIOA,GPIO_Pin_4);        //左边轮子正转
  225.   
  226.   GPIO_SetBits(GPIOA,GPIO_Pin_1);
  227.   GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子停止
  228. delay(AA);

  229. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //左边轮子停止
  230. delay(250000);

  231. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  232. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯  

  233. }


  234. //小车右转弯子程序
  235. void turnright()
  236. {
  237. GPIO_ResetBits(GPIOB,GPIO_Pin_14);//转向灯打开
  238.   
  239. GPIO_SetBits(GPIOA,GPIO_Pin_3);
  240. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子停止
  241.   
  242.   GPIO_SetBits(GPIOA,GPIO_Pin_1);
  243.   GPIO_ResetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  244. delay(BB);

  245. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子停止
  246. delay(250000);

  247. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  248. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯  

  249. }


  250. //停止子程序
  251. void down()
  252.   {
  253. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  254. GPIO_SetBits(GPIOA,GPIO_Pin_2);
  255. GPIO_SetBits(GPIOA,GPIO_Pin_3);
  256. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左右轮全部停止


  257. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  258. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯
  259.   }

  260. int main()//主程序
  261. {
  262. while(1)//死循环
  263. {
  264.    if(a==0x14||a==0x15||a==0x54||a==0x55||a==0x64||a==0x65)//如果是就前进
  265. go1();
  266. if(a==0x16||a==0x17||a==0x56||a==0x57||a==0x66||a==0x67)//如果是就前进
  267. go2();
  268. if(a==0x18||a==0x19||a==0x58||a==0x59||a==0x68||a==0x69)//如果是就前进
  269. go3();
  270. if(a==0x1a||a==0x1b||a==0x5a||a==0x5b||a==0x6a||a==0x6b)//如果是就前进
  271. go4();
  272. if(a==0x1c||a==0x1d||a==0x5c||a==0x5d||a==0x6c||a==0x6d)//如果是就前进
  273. go5();
  274. if(a==0x1e||a==0x1f||a==0x5e||a==0x5f||a==0x6e||a==0x6f)//如果是就前进
  275. go6();

  276.    if(a==0x24||a==0x25||a==0x74||a==0x75||a==0x84||a==0x85)//如果是就后退
  277. hui1();
  278. if(a==0x26||a==0x27||a==0x76||a==0x77||a==0x86||a==0x87)//如果是就后退
  279. hui2();
  280. if(a==0x28||a==0x29||a==0x78||a==0x79||a==0x88||a==0x89)//如果是就后退
  281. hui3();
  282. if(a==0x2a||a==0x2b||a==0x7a||a==0x7b||a==0x8a||a==0x8b)//如果是就后退
  283. hui4();
  284. if(a==0x2c||a==0x2d||a==0x7c||a==0x7d||a==0x8c||a==0x8d)//如果是就后退
  285. hui5();
  286. if(a==0x2e||a==0x2f||a==0x7e||a==0x7d||a==0x8e||a==0x8f)//如果是就后退
  287. hui6();

  288. if(a==0x3f)//如果是0x3f就左转
  289. turnleft();
  290. if(a==0x4f)//如果是0x4f就右转
  291. turnright();
  292. if(a==0x00)//如果是0x00就停止
  293. down();
  294. if(a==0xa0)//如果是0xa0车灯打开
  295. GPIO_ResetBits(GPIOB,GPIO_Pin_12);        //打开转向灯
  296. if(a==0xb0)//如果是0xb0车灯关闭
  297. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯
  298. if(a==0xc0)//如果是0xc0蜂鸣器鸣响
  299. GPIO_ResetBits(GPIOB,GPIO_Pin_15);        //打开蜂鸣器
  300. if(a==0xd0)//如果是0xd0蜂鸣器关
  301.    GPIO_SetBits(GPIOB,GPIO_Pin_15);         //关闭蜂鸣器

  302. else
  303. down();
  304. }
  305. }



  306. void (unsigned char DataToSend)  //串口中断服务程序
  307. {   
  308. //   USART_SendData(USART1, (unsigned char) DataToSend);
  309. //   a= ;//读取单片机串口接受的蓝牙模块发送的数据
  310.    a = DataToSend;
  311. }




  312. /*

  313. 硬件链接:
  314. 左电机控制端口:PA3、PA4
  315. 右电机控制端口:PA1、PA2            
  316. */

  317. #include "stm32f10x.h"//声明头文件
  318. #include "stm32f10x_exti.h"
  319. #include "stm32f10x_gpio.h"
  320. #include "stm32f10x_rcc.h"
  321. #include "stm32f10x_usart.h"


  322. #define uchar unsigned char//宏定义
  323. #define uint unsigned int//宏定义
  324. #define AA 35//左轮速度调节值
  325. #define BB 35//右轮速度调节值

  326. uchar a=0;//定义一个变量a,用来读取串口的数据

  327. /*有参数延时函数*/
  328. void delay(__IO uint32_t nCount)
  329. {
  330.   for (; nCount != 0; nCount--);
  331. }


  332. unsigned int temp=0;
  333. unsigned char rebuf[5];
  334. unsigned int start=0;

  335. void GPIO_DengConfiguration()
  336. {
  337.     GPIO_InitTypeDef  GPIO_InitStructure;

  338.     /* 初始化LED的GPIO管脚,配置为推挽输出 */         //设置端口
  339.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;         //车灯GPIO_Pin12,13,14端口 15蜂鸣器端口
  340. //设置对端口的模式
  341.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //设置为 推挽(Push-Pull)输出
  342. //
  343.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //最大输出速度为50MHz

  344.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  345. }




  346. //前进子程序
  347. void go1()         
  348.   {
  349.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  350. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  351. delay(AA);

  352. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  353. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  354. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  355. delay(BB);

  356. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  357. delay(500000);
  358. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  359. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  360.   }

  361.   
  362. //前进子程序
  363. void go2()
  364.   {
  365.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  366. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  367. delay(AA);

  368. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  369. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  370. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  371. delay(BB);

  372. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  373. delay(400000);
  374. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  375. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  376.   }

  377. //前进子程序
  378. void go3()
  379.   {
  380.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  381. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  382. delay(AA);

  383. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  384. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  385. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  386. delay(BB);

  387. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  388. delay(300000);
  389. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  390. GPIO_SetBits(GPIOB,GPIO_Pin_14);         //关闭转向灯

  391.   }

  392. //前进子程序
  393. void go4()
  394.   {
  395.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  396. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  397. delay(AA);

  398. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  399. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  400. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  401. delay(BB);

  402. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  403. delay(200000);
  404. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  405. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  406.   }

  407. //前进子程序
  408. void go5()
  409.   {
  410.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  411. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  412. delay(AA);

  413. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  414. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  415. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  416. delay(BB);

  417. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  418. delay(100000);
  419. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  420. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  421.   }


  422. //前进子程序
  423. void go6()
  424.   {
  425.     GPIO_SetBits(GPIOA,GPIO_Pin_3);
  426. GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
  427. delay(AA);

  428. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

  429. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  430. GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  431. delay(BB);

  432. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

  433. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  434. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  435.   }

  436. //小车后退的子程序
  437. void hui1()
  438.    {
  439. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  440. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  441. delay(AA);

  442. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  443.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  444. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  445. delay(BB);

  446.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  447.    delay(500000);

  448.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  449. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  450.    }

  451. //小车后退的子程序
  452. void hui2()
  453.    {
  454. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  455. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  456. delay(AA);

  457. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  458.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  459. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  460. delay(BB);

  461.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  462.    delay(400000);

  463.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  464. GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

  465.    }
  466.    
  467. //小车后退的子程序
  468. void hui3()
  469.    {
  470. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  471. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  472. delay(AA);

  473. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  474.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  475. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  476. delay(BB);

  477.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  478.    delay(300000);

  479.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  480. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  481.    }  
  482.          
  483.   //小车后退的子程序
  484. void hui4()
  485.    {
  486. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  487. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  488. delay(AA);

  489.     GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  490.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  491. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  492. delay(BB);

  493.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  494.    delay(200000);

  495.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  496. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  497.    }
  498.    
  499.    //小车后退的子程序
  500. void hui5()
  501.    {
  502. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  503. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  504. delay(AA);

  505. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  506.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  507. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  508. delay(BB);

  509.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  510.    delay(100000);

  511.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  512. GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

  513.    }
  514.    
  515.    //小车后退的子程序
  516. void hui6()
  517.    {
  518. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子倒转
  519. GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  520. delay(AA);

  521. GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

  522.    GPIO_SetBits(GPIOA,GPIO_Pin_2);         //右边轮子倒转
  523. GPIO_ResetBits(GPIOA,GPIO_Pin_1);         
  524. delay(BB);

  525.    GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  526.   

  527.            GPIO_SetBits(GPIOB,GPIO_Pin_13);
  528. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯

  529.    }  


  530. //小车左转弯子程序   
  531. void turnleft()
  532.      {
  533. GPIO_ResetBits(GPIOB,GPIO_Pin_13);//转向灯打开

  534. GPIO_SetBits(GPIOA,GPIO_Pin_3);
  535. GPIO_ResetBits(GPIOA,GPIO_Pin_4);        //左边轮子正转
  536.   
  537.   GPIO_SetBits(GPIOA,GPIO_Pin_1);
  538.   GPIO_SetBits(GPIOA,GPIO_Pin_2);        //右边轮子停止
  539. delay(AA);

  540. GPIO_SetBits(GPIOA,GPIO_Pin_4);  //左边轮子停止
  541. delay(250000);

  542. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  543. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯  

  544. }


  545. //小车右转弯子程序
  546. void turnright()
  547. {
  548. GPIO_ResetBits(GPIOB,GPIO_Pin_14);//转向灯打开
  549.   
  550. GPIO_SetBits(GPIOA,GPIO_Pin_3);
  551. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左边轮子停止
  552.   
  553.   GPIO_SetBits(GPIOA,GPIO_Pin_1);
  554.   GPIO_ResetBits(GPIOA,GPIO_Pin_2);        //右边轮子正转
  555. delay(BB);

  556. GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子停止
  557. delay(250000);

  558. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  559. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯  

  560. }


  561. //停止子程序
  562. void down()
  563.   {
  564. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  565. GPIO_SetBits(GPIOA,GPIO_Pin_2);
  566. GPIO_SetBits(GPIOA,GPIO_Pin_3);
  567. GPIO_SetBits(GPIOA,GPIO_Pin_4);        //左右轮全部停止


  568. GPIO_SetBits(GPIOB,GPIO_Pin_13);
  569. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯
  570.   }

  571. int main()//主程序
  572. {
  573. while(1)//死循环
  574. {
  575.    if(a==0x14||a==0x15||a==0x54||a==0x55||a==0x64||a==0x65)//如果是就前进
  576. go1();
  577. if(a==0x16||a==0x17||a==0x56||a==0x57||a==0x66||a==0x67)//如果是就前进
  578. go2();
  579. if(a==0x18||a==0x19||a==0x58||a==0x59||a==0x68||a==0x69)//如果是就前进
  580. go3();
  581. if(a==0x1a||a==0x1b||a==0x5a||a==0x5b||a==0x6a||a==0x6b)//如果是就前进
  582. go4();
  583. if(a==0x1c||a==0x1d||a==0x5c||a==0x5d||a==0x6c||a==0x6d)//如果是就前进
  584. go5();
  585. if(a==0x1e||a==0x1f||a==0x5e||a==0x5f||a==0x6e||a==0x6f)//如果是就前进
  586. go6();

  587.    if(a==0x24||a==0x25||a==0x74||a==0x75||a==0x84||a==0x85)//如果是就后退
  588. hui1();
  589. if(a==0x26||a==0x27||a==0x76||a==0x77||a==0x86||a==0x87)//如果是就后退
  590. hui2();
  591. if(a==0x28||a==0x29||a==0x78||a==0x79||a==0x88||a==0x89)//如果是就后退
  592. hui3();
  593. if(a==0x2a||a==0x2b||a==0x7a||a==0x7b||a==0x8a||a==0x8b)//如果是就后退
  594. hui4();
  595. if(a==0x2c||a==0x2d||a==0x7c||a==0x7d||a==0x8c||a==0x8d)//如果是就后退
  596. hui5();
  597. if(a==0x2e||a==0x2f||a==0x7e||a==0x7d||a==0x8e||a==0x8f)//如果是就后退
  598. hui6();

  599. if(a==0x3f)//如果是0x3f就左转
  600. turnleft();
  601. if(a==0x4f)//如果是0x4f就右转
  602. turnright();
  603. if(a==0x00)//如果是0x00就停止
  604. down();
  605. if(a==0xa0)//如果是0xa0车灯打开
  606. GPIO_ResetBits(GPIOB,GPIO_Pin_12);        //打开转向灯
  607. if(a==0xb0)//如果是0xb0车灯关闭
  608. GPIO_SetBits(GPIOB,GPIO_Pin_14);        //关闭转向灯
  609. if(a==0xc0)//如果是0xc0蜂鸣器鸣响
  610. GPIO_ResetBits(GPIOB,GPIO_Pin_15);        //打开蜂鸣器
  611. if(a==0xd0)//如果是0xd0蜂鸣器关
  612.    GPIO_SetBits(GPIOB,GPIO_Pin_15);         //关闭蜂鸣器

  613. else
  614. down();
  615. }
  616. }



  617. void (unsigned char DataToSend)  //串口中断服务程序
  618. {   
  619. //   USART_SendData(USART1, (unsigned char) DataToSend);
  620. //   a= ;//读取单片机串口接受的蓝牙模块发送的数据
  621.    a = DataToSend;
  622. }


复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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