赞
踩
材料:
(1)51单片机开发板
(2)l298n电机驱动模块1个
(3)四个电机
(4)JDY-31蓝牙模块
一、组装
(1)L298N电机驱动模块与开发板接线如下图:
(2)蓝牙接线:
VCC接51单片机开发板的5v,GND接51单片机开发板的GND,TXD接51单片机开发板的P30引脚,RXD接51单片机开发板的P31引脚,烧录程序的时候要先把P30,P31两个引脚先拔掉,不然会被占用导致烧录不了程序。
二、烧录问题
烧录程序的时候要先把蓝牙P30,P31两个引脚先拔掉,不然会被占用导致烧录不了程序。
代码:
- #include "reg52.h"
-
- typedef unsigned char u8;
- typedef unsigned int u16;
- typedef unsigned long u32;
-
-
- //定义电机控制管脚
- sbit MOTOA=P1^0;
- sbit MOTOB=P1^1; //右电机
- sbit MOTOC=P1^2;
- sbit MOTOD=P1^3; //左电机
-
- void delay10us(void)
- {
- unsigned char a,b;
- for(b=1;b>0;b--)
- for(a=2;a>0;a--);
- }
-
- void delay_10us(u16 us)
- {
- while(us--);
- }
-
- void delay_ms(u16 ms)
- {
- u16 i,j;
- for(i=ms;i>0;i--)
- for(j=110;j>0;j--);
- }
-
- void Car_ForwardRun(void)//前进
- {
- MOTOA=1;
- MOTOB=0;
- MOTOC=1;
- MOTOD=0;
- }
- void Car_BackwardRun(void)//后退
- {
- MOTOA=0;
- MOTOB=1;
- MOTOC=0;
- MOTOD=1;
- }
- void Car_StopRun(void)//停止
- {
- MOTOA=0;
- MOTOB=0;
- MOTOC=0;
- MOTOD=0;
- }
- void Car_LeftRun(void)//左转
- {
- MOTOA=1;
- MOTOB=0;
- MOTOC=0;
- MOTOD=1;
- }
- void Car_RightRun(void)//右转
- {
- MOTOA=0;
- MOTOB=1;
- MOTOC=1;
- MOTOD=0;
- }
-
- #define RELOAD_COUNT 0xFA //宏定义波特率发生器的载入值 9600
-
- void UART_Init(void)
- {
- SCON=0X50; //设置为工作方式1
- TMOD=0X20; //设置计数器工作方式2
- PCON=0X80; //波特率加倍
- TH1=RELOAD_COUNT; //计数器初始值设置
- TL1=TH1;
- ES=1; //打开接收中断
- EA=1; //打开总中断
- TR1=1; //打开计数器
- }
-
- void UART_SendByte(u8 dat)
- {
- ES=0; //关闭串口中断
- TI=0; //清发送完毕中断请求标志位
- SBUF=dat; //发送
- while(TI==0); //等待发送完毕
- TI=0; //清发送完毕中断请求标志位
- ES=1; //允许串口中断
- }
-
- //定义蓝牙APP中控制按键的键值
- #define BLUETOOTH_FORWARD 0x10
- #define BLUETOOTH_BACKWARD 0x11
- #define BLUETOOTH_LEFT 0x20
- #define BLUETOOTH_RIGHT 0x21
- #define BLUETOOTH_STOP 0x30
-
- void BlueTooth_Init(void)
- {
- UART_Init();
- }
-
- void BlueTooth_SendData(u8 dat)
- {
- UART_SendByte(dat);
- }
-
- #define USART_MAX_RECV_LEN 1
- u8 USART_RX_BUF[USART_MAX_RECV_LEN];
-
- void Uart() interrupt 4
- {
- if(RI)
- {
- USART_RX_BUF[0]=SBUF;
- RI = 0;//清除接收中断标志位
- }
- }
-
- //主函数
- void main()
- {
- BlueTooth_Init();
- while(1)
- {
- switch(USART_RX_BUF[0])
- {
- case 1: Car_ForwardRun();break;
- case 2: Car_BackwardRun();break;
- case 3: Car_LeftRun();break;
- case 4: Car_RightRun();break;
- case 5: Car_StopRun();break;
- }
- }
- }
-
4、手机端调试软件
APP:SPP蓝牙串口
说明:
首先要点十六进制,如果前,后,左,右方向不对的话就把1,2,3,4调换一下,或者改程序,还可以改硬件电机的接线
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。