51單片機(jī)藍(lán)牙小車
這是是我大二做的一個課程設(shè)計,小菜鳥一個,歡迎大家指正和參考。
摘要 本次設(shè)計選擇基于藍(lán)牙遙控的多功能智能小車為對象。選用STC98C52RC單片機(jī)作為主控芯片,電機(jī)驅(qū)動采用L293N ,電源部分采用兩節(jié)3.7V鋰電池供電.采用C語言模塊化編程,提高開發(fā)效率.藍(lán)牙控制功能.用按鍵或遙控器來控制小車.
關(guān)鍵詞 51單片機(jī) L293N_電機(jī)驅(qū)動 藍(lán)牙遙控
目 錄
1 前言 1
11 系統(tǒng)研究背景 1
12 系統(tǒng)研究的意義和目的 1
2 系統(tǒng)概述 2
21 系統(tǒng)的結(jié)構(gòu) 2
22 系統(tǒng)的功能 2
23 開發(fā)環(huán)境 2
3 系統(tǒng)實現(xiàn) 3
31 傳感器技術(shù) 3
32 其它相關(guān)技術(shù) 3
33 硬件實現(xiàn) 3
34 軟件實現(xiàn) 3
35 系統(tǒng)測試 3
4 系統(tǒng)使用說明 4
5 總結(jié) 5
6 參考文獻(xiàn) 6
1. 前言
1.1. 系統(tǒng)研究背景
藍(lán)牙屬于短距離內(nèi)進(jìn)行無線控制和收發(fā)的通信技術(shù),伴隨著科技的飛躍性發(fā)展,也讓藍(lán)牙找到了發(fā)展的空間,它可以代替和取代落后的數(shù)字化硬件設(shè)備之間繁瑣的電纜連接。在藍(lán)牙創(chuàng)造的初期,沒有人預(yù)料到藍(lán)牙會有如此大的潛力和前景,而現(xiàn)在的發(fā)展也是完全超出了我們的預(yù)期,因為藍(lán)牙的安全性高,制造成本低廉和所消耗的功率也是同類產(chǎn)品中最低的,所以被很多人使用,越來越受到了廣大消費者的歡迎,基于藍(lán)牙技術(shù)的產(chǎn)品也在不斷的更新和投入市場。 藍(lán)牙技術(shù)是近年來出現(xiàn)的新技術(shù)是一種短距離無線通信和信息傳輸?shù)男滦屯ㄓ嵖萍迹箶?shù)據(jù)線的硬件設(shè)備接收更方便快捷。它可以廣泛應(yīng)用于世界各地,是一個藍(lán)牙設(shè)置一個通用的范圍,頻率調(diào)制技術(shù)的使用,以防止外部干擾和多一些。低成本,低功耗和小輻射,和加密設(shè)置,讓藍(lán)牙的安全性更高;應(yīng)用范圍廣,這些特點使得藍(lán)牙技術(shù)被廣泛的應(yīng)用在我們?nèi)粘I钪械乃{(lán)牙也支持一對一和一對多傳輸?shù)耐ㄐ胚B接,和多個藍(lán)牙成為微網(wǎng),也有網(wǎng)絡(luò)的特點。 在現(xiàn)在的智能時代,小車智能控制,方便了人們的使用。在51單片機(jī)的基礎(chǔ)下,通過藍(lán)牙來控制小車的駕駛。
1.2. 系統(tǒng)研究的意義和目的
因為無線技術(shù)的廣泛使用,我們在研究無線和有線通信技術(shù)的方法中了解到藍(lán)牙系統(tǒng)的小區(qū)域性有很大的技術(shù)突破,在國際上也得到了廣泛的采納,在市場上也有很大的需求。這也使藍(lán)牙技術(shù)的發(fā)展成為了趨勢之一,藍(lán)牙可以發(fā)送和接受語音和數(shù)據(jù),滿足了大多數(shù)人的需求,它也融合了其他相關(guān)產(chǎn)品的特點,也是這樣技術(shù)變得更多樣性。然而,藍(lán)牙的安全性不足,而且在小區(qū)域范圍內(nèi)的一點對多點的通信受到了很大的限制,這些都是其本身需要改進(jìn)和完善的 可以使人們更方便,更簡單的控制小車。實現(xiàn)了無線控制小車,擺脫了有線控制的不方便,更智能。
2. 系統(tǒng)概述2.1. 系統(tǒng)的結(jié)構(gòu)
系統(tǒng)框圖.jpg (63.08 KB, 下載次數(shù): 142)
下載附件
2018-10-9 18:46 上傳
2.2. 系統(tǒng)的功能
51單片機(jī)的基礎(chǔ)下,通過藍(lán)牙來控制驅(qū)動,此驅(qū)動能把5~12V的電壓,一部分給小車輪子轉(zhuǎn)動,一部分通過降壓,穩(wěn)壓,最終降為5V來供給此驅(qū)動,單片機(jī)和傳感器供電。
2.3. 開發(fā)環(huán)境 AT89C5RC單片機(jī)開發(fā)環(huán)境。 AT89C52是一種8位單片機(jī),它是在MCS-51單片機(jī)系列上加強(qiáng)了一些功能后升級得到的產(chǎn)物。它的作用基本上就是把外界的數(shù)據(jù)和命令在中斷和時鐘的幫助下,在自身內(nèi)部儲存器上把使用者的數(shù)據(jù)進(jìn)行處理。AT89C52 由8位的內(nèi)部處理器,內(nèi)部數(shù)據(jù)儲存器(RAM,有256個字節(jié))內(nèi)部儲存器有8K的大小,輸入和輸出雙向口有32個,16位的定時器和5個兩級中斷,全雙工串行通信口一個和時鐘電路組成。 AT89C52能夠自主地執(zhí)行給它的指令,也就是你把所需要的指令寫在單片機(jī)的內(nèi)部儲存器上,它會一步步執(zhí)行。AT89C52可以在功耗特別低的情況下工作,就是設(shè)置成空閑選擇和掉電模式兩種狀態(tài)來實現(xiàn)低功耗。
AT89C52.png (62.06 KB, 下載次數(shù): 128)
下載附件
2018-10-9 18:48 上傳
單片機(jī)與外界的通訊是依靠它自身的I/O 口進(jìn)行的,對單片機(jī)I/O 口的控制就是對單片機(jī)的控制。I/O 口的存在不僅可以實現(xiàn)數(shù)據(jù)的傳輸,還可以改變電平和信號的性質(zhì),最重要的一點就是I/O 口可以實現(xiàn)與外部不同電路的連接來使單片機(jī)工作。 AT89C52單片機(jī)上我們通常使用的是4個獨立的雙向通用I/O 口:P0口、P1口、P2和P3口。由于外部設(shè)備的工作速率比較慢或者很快的時候,我們可以采用同步傳送的方式,而單片機(jī)存在的異步傳送是為了更加簡練的和硬件連接進(jìn)行傳出。也可以通過中斷傳送和DMA傳送來完成。AT89C52單片機(jī)還可以實現(xiàn)外部接口單獨的編址和外部端口和存儲器的統(tǒng)一編制兩種方式。AT89C52單片機(jī)上一共有32個I/O 口,不同的I/O 口實線的作用和運(yùn)行的方式都有其自己的方式,我也要通過這次課程設(shè)計,更好地了解,更熟練的運(yùn)用。
3. 系統(tǒng)實現(xiàn)3.1. 相關(guān)技術(shù)技術(shù)藍(lán)牙技術(shù),驅(qū)動模塊, 3.2. 硬件實現(xiàn)HC-06藍(lán)牙模塊 其TX接單片機(jī)的RX,RX接單片機(jī)的TX,VCC接5V(或3.3V),GND接單片機(jī)的地。HC-06藍(lán)牙模塊是通過一款手機(jī)APP(藍(lán)牙串口助手)作為中間媒介,在藍(lán)牙串口助手發(fā)送相關(guān)的數(shù)據(jù)到串口,串口再把相關(guān)信息送到藍(lán)牙模塊,藍(lán)牙模塊再把相關(guān)信號送到單片機(jī)中。
HC-06藍(lán)牙模塊.png (177.78 KB, 下載次數(shù): 140)
下載附件
2018-10-9 18:50 上傳
HC-06藍(lán)牙模塊2.png (114.32 KB, 下載次數(shù): 118)
下載附件
2018-10-9 18:50 上傳
L298N電機(jī)驅(qū)動模塊, 該該電機(jī)可以驅(qū)動2路直流電機(jī),使能端ENA,ENB,為高電頻有效, 通過單片機(jī)的輸入信號給IN1和IN2來控制左輪,輸入信號給IN3和IN4來控制右輪。IN1和IN2,分別給0,1 :正轉(zhuǎn) IN1和IN2,分別給1,0 :反轉(zhuǎn) IN1和IN2,分別給1,1 :停止 IN1和IN2,分別給0,0 :停止 IN3和IN4,分別給0,1 :正轉(zhuǎn) IN3和IN4,分別給1,0 :反轉(zhuǎn) IN3和IN4,分別給1,1 :停止 IN3和IN4,分別給0,0 :停止
L298N的主要引腳功能如下: +5V:芯片電壓5V; VCC:電機(jī)電壓,最大可接50V; GND:共地接法; Output1—Output2:輸出端,接電機(jī)1; Output3—Output4:輸出端,接電機(jī)2; EN1、EN2:高電平有效,EN1、EN2分別為 IN1和IN2、IN3和IN4的使能端; Input1~ Input4:輸入端,輸入端電平和輸出端電平是對應(yīng)的;
L298N.png (304.36 KB, 下載次數(shù): 130)
下載附件
2018-10-9 18:50 上傳
3.3. 軟件實現(xiàn)
程序流程圖.jpg.png (69.05 KB, 下載次數(shù): 122)
下載附件
2018-10-9 18:51 上傳
程序流程圖
51單片機(jī),源程序:
sbit in1 = P1^0;//左電機(jī) sbit in2 = P1^1;//左電機(jī) sbit in3 = P1^2;//右電機(jī) sbit in4 = P1^3;//右電機(jī) char i; /*前進(jìn)*/ void forward() { in1=1; in2=0; in3=1; in4=0; } /*后退*/ void back() { in1=0; in2=1; in3=0; in4=1; } /*左轉(zhuǎn)*/ void left() { in1=1; in2=1; in3=1; in4=0; } /*右轉(zhuǎn)*/ void right() { in1=1; in2=0; in3=1; in4=1; } /*停止*/ void stop() { in1=1; in2=1; in3=1; in4=1; } void main (void) { TMOD=0x20; //設(shè)置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為單片機(jī)接收到的數(shù)據(jù),單片機(jī)接收到的數(shù)據(jù)都存放在SBUF里; RI=0; if (i==0x02){forward();} //如果藍(lán)牙助手發(fā)送0x02,小車前進(jìn) if (i==0x08){back();} //如果藍(lán)牙助手發(fā)送0x08,小車后退 if (i==0x01){left();} //如果藍(lán)牙助手發(fā)送0x01,小車左轉(zhuǎn) if (i==0x03){right();} //如果藍(lán)牙助手發(fā)送0x03,小車右轉(zhuǎn) if (i==0x05){stop();} //如果藍(lán)牙助手發(fā)送0x05,小車停止 } } 3.4. 系統(tǒng)測試小車能實現(xiàn)基本功能,成功地用藍(lán)牙控制小車。測試了一段時間,單片機(jī)工作穩(wěn)定,藍(lán)牙穩(wěn)定的控制,小車較好的按照控制方向行走。
4. 系統(tǒng)使用說明1. 為小車裝上兩節(jié)鋰電池,來供電。 2. 打開總開關(guān),在手機(jī)端,打開一個藍(lán)牙通訊助手(在手機(jī)應(yīng)用商店可以找到下載),連接上此小車的藍(lán)牙(HC-06),如圖:
實物1.jpg (151.4 KB, 下載次數(shù): 110)
下載附件
2018-10-9 18:55 上傳
3. 然后就可以在手機(jī)端按相應(yīng)的前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),停止等,如圖:
APP.jpg (63.54 KB, 下載次數(shù): 142)
下載附件
2018-10-9 18:48 上傳
解析:前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),停止,都對應(yīng)著程序中相應(yīng)的信息,如圖; 當(dāng)手機(jī)端發(fā)送 0x02 給藍(lán)牙模塊,就會執(zhí)行 forward()函數(shù); 小車會向前走 當(dāng)手機(jī)端發(fā)送 0x08 給藍(lán)牙模塊,就會執(zhí)行 back();函數(shù);,小車會向后走 當(dāng)手機(jī)端發(fā)送 0x01 給藍(lán)牙模塊,就會執(zhí)行 left();函數(shù);,小車會向左走 當(dāng)手機(jī)端發(fā)送 0x03 給藍(lán)牙模塊,就會執(zhí)行 right()函數(shù);,小車會向右走 當(dāng)手機(jī)端發(fā)送 0x05 給藍(lán)牙模塊,就會執(zhí)行stop()函數(shù);,小車會停止 具體的編輯如圖:
APP2.jpg (68.63 KB, 下載次數(shù): 113)
下載附件
2018-10-9 18:49 上傳
最后這是小車的整體模型;
整體圖.jpg (157.51 KB, 下載次數(shù): 102)
下載附件
2018-10-9 18:55 上傳
注:上面有個RC522讀卡器的,哪個是方便后面的課設(shè),在這里,大家可以忽略哈。
5. 總結(jié) 本設(shè)計采用的是STC89C52RC單片機(jī),這主要是因為該單片機(jī)的穩(wěn)定性比較好和執(zhí)行指令的速度很快。還可以采用其它系列的單片機(jī)。電機(jī)驅(qū)動采用L293N ,穩(wěn)定電壓,充足地向直流電機(jī)供電和穩(wěn)定控制;電源部分采用兩節(jié)3.7V鋰電池供電,電壓穩(wěn)定,電流充足,還可以循環(huán)充電,節(jié)能環(huán)保。采用C語言模塊化編程,提高開發(fā)效率.藍(lán)牙控制功能.用按鍵或遙控器來控制小車,簡單方便經(jīng)過自己不斷的搜索努力以及老師的耐心指導(dǎo)和熱情幫助,本設(shè)計已經(jīng)基本完成。 過這次課程設(shè)計,使我深刻地認(rèn)識到學(xué)好專業(yè)知識的重要性,也理解了理論聯(lián)系實際的含義,并且檢驗了大學(xué)兩年的學(xué)習(xí)成果。雖然在這次設(shè)計中對于知識的運(yùn)用和銜接還不夠熟練。但是我將在以后的工作和學(xué)習(xí)中繼續(xù)努力、不斷完善。這兩個月的設(shè)計是對過去所學(xué)知識的系統(tǒng)提高和擴(kuò)充的過程,為今后的發(fā)展打下了良好的基礎(chǔ)。 由于自身水平有限,設(shè)計中一定存在很多不足之處,敬請各位批評指正.
6. 參考文獻(xiàn)C語言程序設(shè)計 :清華大學(xué)出版社作者:譚浩強(qiáng) 51單片機(jī)C語言教程:電子工業(yè)出版社 ,作者:郭天祥
感謝觀看
|