51单片机蓝牙小车
這是某小白大一下學期自學做的小玩意,畢竟不是自己的專業課,學起來有點吃力,不過感覺挺有意思的。寫下這篇文章記錄一下
一.所需材料
1,51單片機開發板
2,杜邦線一堆
3,L298N驅動板
4,三節18650電池
5,HC-05/06藍牙模塊(從機版本即可)
6,小車底盤一個
二.電路部分
?
?藍牙模塊采用串口通信,建議用TTL轉USB線先把藍牙模塊與電腦連接起來,對藍牙模塊進行配置,以測試是否可以通信
三.代碼部分
電機驅動代碼
#include <REGX52.H>#include "UART.h"sbit Motor=P1^0;sbit Motor1=P1^1;sbit Motor2=P1^2;sbit Motor3=P1^3;unsigned char flag=0;void main(){ Motor=1;Motor1=1;Motor2=1;Motor3=1;UART_Init();//串口初始化while(1){if(flag==1){Motor=1;Motor1=0;Motor2=1;Motor3=0;}if(flag==2){Motor=1;Motor1=1;Motor2=1;Motor3=0;}if(flag==3){Motor=1;Motor1=1;Motor2=1;Motor3=1;}if(flag==4){Motor=1;Motor1=0;Motor2=1;Motor3=1;}if(flag==5){Motor=0;Motor1=1;Motor2=0;Motor3=1;}}}void UART_Routine() interrupt 4{unsigned char num;if(RI==1)//如果接收標志位為1,接收到了數據{num=SBUF;switch(num){case 1://前進flag=1;break;case 2://左轉flag=2;break;case 3://停車flag=3;break;case 4://右轉flag=4;break;case 5://倒車flag=5;break;default:flag=0;break;}UART_SendByte(SBUF);//將受到的數據發回串口,便于調試RI=0;//接收標志位清0}}?串口代碼
#include <REGX52.H>/** * @brief 串口初始化,4800bps@12.000MHz * @param 無 * @retval 無 */void UART_Init(){SCON=0x50;PCON |= 0x80;TMOD &= 0x0F;//設置定時器模式TMOD |= 0x20;//設置定時器模式TL1 = 0xFA;//設定定時初值TH1 = 0xFA;//設定定時器重裝值ET1 = 0;//禁止定時器1中斷TR1 = 1;//啟動定時器1EA=1;ES=1;}/** * @brief 串口發送一個字節數據 * @param Byte 要發送的一個字節數據 * @retval 無 */void UART_SendByte(unsigned char Byte){SBUF=Byte;while(TI==0);TI=0;}四.藍牙控制程序
采用APP inventor編寫
MIT App Inventor
成品連線比較混亂,有一種野性的美
?
?
打包文件在https://pan.baidu.com/s/1oqYBb7KX2kBjdQewbvimww?pwd=yy7t
提取碼yy7t
包括keil文件以及安卓藍牙控制軟件
?
總結
- 上一篇: 王校长热狗小游戏
- 下一篇: minicom 使用方法