当前位置:   article > 正文

51单片机智能小车蓝牙_c51连接jdy31

c51连接jdy31

材料:

(1)51单片机开发板

(2)l298n电机驱动模块1个

(3)四个电机

(4)JDY-31蓝牙模块

一、组装

(1)L298N电机驱动模块与开发板接线如下图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54K554Gv5Luj5biI,size_17,color_FFFFFF,t_70,g_se,x_16

 

(2)蓝牙接线:

VCC接51单片机开发板的5v,GND接51单片机开发板的GND,TXD接51单片机开发板的P30引脚,RXD接51单片机开发板的P31引脚,烧录程序的时候要先把P30,P31两个引脚先拔掉,不然会被占用导致烧录不了程序。

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54K554Gv5Luj5biI,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

二、烧录问题 

烧录程序的时候要先把蓝牙P30,P31两个引脚先拔掉,不然会被占用导致烧录不了程序。

代码:

  1. #include "reg52.h"
  2. typedef unsigned char u8;
  3. typedef unsigned int u16;
  4. typedef unsigned long u32;
  5. //定义电机控制管脚
  6. sbit MOTOA=P1^0;
  7. sbit MOTOB=P1^1; //右电机
  8. sbit MOTOC=P1^2;
  9. sbit MOTOD=P1^3; //左电机
  10. void delay10us(void)
  11. {
  12. unsigned char a,b;
  13. for(b=1;b>0;b--)
  14. for(a=2;a>0;a--);
  15. }
  16. void delay_10us(u16 us)
  17. {
  18. while(us--);
  19. }
  20. void delay_ms(u16 ms)
  21. {
  22. u16 i,j;
  23. for(i=ms;i>0;i--)
  24. for(j=110;j>0;j--);
  25. }
  26. void Car_ForwardRun(void)//前进
  27. {
  28. MOTOA=1;
  29. MOTOB=0;
  30. MOTOC=1;
  31. MOTOD=0;
  32. }
  33. void Car_BackwardRun(void)//后退
  34. {
  35. MOTOA=0;
  36. MOTOB=1;
  37. MOTOC=0;
  38. MOTOD=1;
  39. }
  40. void Car_StopRun(void)//停止
  41. {
  42. MOTOA=0;
  43. MOTOB=0;
  44. MOTOC=0;
  45. MOTOD=0;
  46. }
  47. void Car_LeftRun(void)//左转
  48. {
  49. MOTOA=1;
  50. MOTOB=0;
  51. MOTOC=0;
  52. MOTOD=1;
  53. }
  54. void Car_RightRun(void)//右转
  55. {
  56. MOTOA=0;
  57. MOTOB=1;
  58. MOTOC=1;
  59. MOTOD=0;
  60. }
  61. #define RELOAD_COUNT 0xFA //宏定义波特率发生器的载入值 9600
  62. void UART_Init(void)
  63. {
  64. SCON=0X50; //设置为工作方式1
  65. TMOD=0X20; //设置计数器工作方式2
  66. PCON=0X80; //波特率加倍
  67. TH1=RELOAD_COUNT; //计数器初始值设置
  68. TL1=TH1;
  69. ES=1; //打开接收中断
  70. EA=1; //打开总中断
  71. TR1=1; //打开计数器
  72. }
  73. void UART_SendByte(u8 dat)
  74. {
  75. ES=0; //关闭串口中断
  76. TI=0; //清发送完毕中断请求标志位
  77. SBUF=dat; //发送
  78. while(TI==0); //等待发送完毕
  79. TI=0; //清发送完毕中断请求标志位
  80. ES=1; //允许串口中断
  81. }
  82. //定义蓝牙APP中控制按键的键值
  83. #define BLUETOOTH_FORWARD 0x10
  84. #define BLUETOOTH_BACKWARD 0x11
  85. #define BLUETOOTH_LEFT 0x20
  86. #define BLUETOOTH_RIGHT 0x21
  87. #define BLUETOOTH_STOP 0x30
  88. void BlueTooth_Init(void)
  89. {
  90. UART_Init();
  91. }
  92. void BlueTooth_SendData(u8 dat)
  93. {
  94. UART_SendByte(dat);
  95. }
  96. #define USART_MAX_RECV_LEN 1
  97. u8 USART_RX_BUF[USART_MAX_RECV_LEN];
  98. void Uart() interrupt 4
  99. {
  100. if(RI)
  101. {
  102. USART_RX_BUF[0]=SBUF;
  103. RI = 0;//清除接收中断标志位
  104. }
  105. }
  106. //主函数
  107. void main()
  108. {
  109. BlueTooth_Init();
  110. while(1)
  111. {
  112. switch(USART_RX_BUF[0])
  113. {
  114. case 1: Car_ForwardRun();break;
  115. case 2: Car_BackwardRun();break;
  116. case 3: Car_LeftRun();break;
  117. case 4: Car_RightRun();break;
  118. case 5: Car_StopRun();break;
  119. }
  120. }
  121. }

4、手机端调试软件

APP:SPP蓝牙串口

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54K554Gv5Luj5biI,size_20,color_FFFFFF,t_70,g_se,x_16

 说明:

首先要点十六进制,如果前,后,左,右方向不对的话就把1,2,3,4调换一下,或者改程序,还可以改硬件电机的接线

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/767831
推荐阅读
相关标签
  

闽ICP备14008679号