基于51單片機制作的藍牙小車
這是本人(小菜雞一枚)于大一寒假所做的小玩意,以展現我這幾月所學,這也是我發的第一篇博客,準確來說這可能是我搞51單片機的巔峰所做了,因為部長說以后要學stm32開發板了,51單片機以后大概是不會接觸了,不得不說寫博客對我而言真的有點困難,祝愿我也祝愿大家能夠堅持自己的夢想,
一.所需材料
1,51單片機開發板x1
2,杜邦線(公對公,母對母,公對母)
3,L298N步進電機x1
4,電池一枚,以作為電源
5,HC-05藍牙模塊(本人買的是主從一體式)
6,藍牙小車底盤一個
二,組裝階段
1,L298N模塊各介面說明,

1)首先12V電源輸入是直接接電源正極的(本人買的是12V電池,畢竟跑的快),
2)電源地接電源負極以及單片機的GND(當作負極看吧,好理解),
3)5V輸入直接就接51單片機的VCC(就是51單片機的電源輸入口),
4)電池電流是先流入L298N再去51單片機開發板的,別問我為什么知道,因為我已經啥訓一塊板子了,至于其他介面圖上已經說的很明白了,
5)A,B通道使能輸出口(ENA及ENB),本人沒有用,也不用管那個玩意,因為我菜不會用,而且也沒什么大用
6)馬達A,B輸出口,用于控制馬達的電流輸出,接馬達就好,
7)A,B通道使能輸出口中間的的4個口,是接單片機IO口的,用于邏輯寫入,
2,HC-05藍牙模塊
1)藍牙模塊上的VCC接51單片機上的VCC,GND接51單片機上的GND
2)藍牙模塊上的TXD與RXD是接入單片機的IO口上,下面會有所說明,
3,51單片機說明

這是單片機開發板的部分原理圖(IO口)
1)L298N上的A,B通道使能輸出口中間的的4個口(IN1,INT2,INT3,INT4),本人分別接于單片機上P00,P01,P02,P03這四個IO口上,
2)藍牙模塊上的RXD介面接在單片機上的TXD介面上,在該原理圖上是P31介面;TXD介面接在RXD介面上,即P30介面,
三,成品展示
因本人手藝粗糙,效果就是這個樣子(我弟弟玩的還是很開心,導致有些介面接的比較松)

四,代碼實作階段
#include <reg51.h>
sbit int1=P0^0;
sbit int2=P0^1;
sbit int3=P0^2;
sbit int4=P0^3;
char i;
void stop()//停止
{
int1=0;
int2=0;
int3=0;
int4=0;
}
void back()//后退
{
int1=1;
int2=0;
int3=1;
int4=0;
}
void forward()//前進
{
int1=0;
int2=1;
int3=0;
int4=1;
}
void right() //右轉
{
int1=0;
int2=1;
int3=1;
int4=0;
}
void left()//左轉
{
int1=1;
int2=0;
int3=0;
int4=1;
}
void main()
{
TMOD=0x20; //設定T1為作業方式2
TH1=0xfd; //裝入初值,位元率為9600bps
TL1=0xfd;
TR1=1; //開啟T1
REN=1; //接收允許
SM0=0; //方式1
SM1=1;
EA=1; //開全域中斷
ES=1; //開串口中斷
while(1)
{
i=SBUF;//SBUF為單片機接收到的資料,單片機接收到的資料都存放在SBUF里;
RI=0;
switch(i)
{
case '1':
forward();
break;
case '2':
back();
break;
case '3':
left();
break;
case '4':
right();
break;
case '5':
stop();
break;
}
}
}
五,測驗
通上電之后呢,就可以用手機藍牙進行測驗啦,
1,首先呢先在手機上下載一個藍牙助手,大概像這個樣子的,

最主要的是那四個前后左右的按鍵,其他的是我自己加的,反正在源代碼上自行添加就好,
決議:前進,后退,左轉,右轉,停止,都對應著程式中相應的資訊,如圖;
當手機端發送 1 給藍牙模塊,就會執行 forward()函式; 小車會向前走
當手機端發送 2 給藍牙模塊,就會執行 back();函式;,小車會向后走
當手機端發送 3 給藍牙模塊,就會執行 left();函式;,小車會向左走
當手機端發送 4 給藍牙模塊,就會執行 right()函式;,小車會向右走
當手機端發送 5 給藍牙模塊,就會執行stop()函式;,小車會停止
具體的編輯如圖:

話說縮進咋弄?還有字體大小什么的呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260131.html
標籤:其他
