久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6924|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機手機藍(lán)牙小車設(shè)計+代碼+分析

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:686090 發(fā)表于 2020-1-14 15:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1.1 基本設(shè)計要求

(1)在綜合單片機實驗箱的硬件結(jié)構(gòu)上編寫軟件完成設(shè)計。

(2)程序的首地址應(yīng)使目標(biāo)機可以直接運行,即從0000H開端。在主程序的開端部分必須設(shè)置一個合適的棧底。程序放置的地址須持續(xù)且靠前,不要在中間留下大批的空間地址,以使目標(biāo)機可以應(yīng)用較少的硬件資源。

(3)利用無線發(fā)射和無線接收模塊控制單片機,讓單片機翻譯傳輸指令,從而實現(xiàn)相應(yīng)的功能。具體的過程如下:無線發(fā)射模塊發(fā)出指令,無線接收模塊接收信號后,傳輸給單片機,單片機接收到信號后翻譯并傳輸給電機驅(qū)動模塊驅(qū)動電機旋轉(zhuǎn),從而實現(xiàn)小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速。

(4)使用TB6612驅(qū)動直流電機。

(5)軟件設(shè)計采用定時中斷,串口中斷結(jié)構(gòu),不得應(yīng)用軟件延時法。

(6)使用藍(lán)牙手機APP遠(yuǎn)程控制。

1.2 選做項目

1、藍(lán)牙小車測速手機返回速度數(shù)據(jù)。

2、在以上設(shè)計的基礎(chǔ)上,增加超聲波測距模塊。

2 設(shè)計闡明
2.1設(shè)計內(nèi)容

用STC80c52芯片單片機實驗箱及串口電路設(shè)計實現(xiàn)顯示時間并能夠調(diào)校時間的時鐘,還能夠?qū)崿F(xiàn)啟動/暫停,復(fù)位功能。

用STC80c52芯片、藍(lán)牙模塊及串口電路、定時器、TB6612驅(qū)動芯片、藍(lán)牙手機APP,TT電機、5v直流電源轉(zhuǎn)接板、設(shè)計實現(xiàn)更改PWM值、并能夠調(diào)校時間的時鐘,還能夠?qū)崿F(xiàn)小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速功能。

2.2設(shè)計要求

(1) 在ZY15MCU12BD型綜合單片機實驗箱的硬件結(jié)構(gòu)上編寫軟件完成設(shè)計。

(2) 程序的首地址應(yīng)使目標(biāo)機可以直接運行,即從0000H開端。在主程序的開端部分必須設(shè)置一個合適的棧底。程序放置的地址須持續(xù)且靠前,不要在中間留下大批的空間地址,以使目標(biāo)機可以應(yīng)用較少的硬件資源。

(3)利用無線發(fā)射和無線接收模塊控制單片機,讓單片機翻譯傳輸指令,從而實現(xiàn)相應(yīng)的功能。具體的過程如下:無線發(fā)射模塊發(fā)出指令,無線接收模塊接收信號后,傳輸給單片機。使用串口中斷,接收到數(shù)據(jù)之后,進(jìn)入串口中斷。

(4單片機接受到指令之后,使用小車的TB6612驅(qū)動芯片,驅(qū)動電機前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速。

(5) 軟件設(shè)計必須應(yīng)用8051片內(nèi)定時器,采用定時中斷結(jié)構(gòu),不得應(yīng)用軟件延時法。

(6) 上機調(diào)試程序。

(7) 寫出設(shè)計報告。

2.3設(shè)備及工作環(huán)境

  (1) 硬件:盤算機一臺、51核心板、5v直流電源轉(zhuǎn)接板、充電頭。

  (2) 軟件:Windows操縱系統(tǒng)、Keil C51軟件。

3 系統(tǒng)方案整體設(shè)計3.1 設(shè)計思路

用STC80c52芯片、藍(lán)牙模塊及串口電路、定時器、TB6612驅(qū)動芯片,TT電機、5v直流電源轉(zhuǎn)接板、藍(lán)牙手機APP、設(shè)計實現(xiàn)更改PWM值、并能夠調(diào)校時間的時鐘,還能夠?qū)崿F(xiàn)小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速功能。

3.2 系統(tǒng)整體框圖

代碼設(shè)計思路:當(dāng)藍(lán)牙手機APP連接上藍(lán)牙,通過手機APP向單片機發(fā)送相應(yīng)指令,當(dāng)單片機接收到指令。進(jìn)入相應(yīng)的串口中斷,執(zhí)行相應(yīng)的程序。設(shè)計實現(xiàn)更改PWM值,還能夠?qū)崿F(xiàn)小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速功能。

如下圖所示。

圖1 系統(tǒng)整體框圖

4 硬件設(shè)計
4.1 系統(tǒng)硬件設(shè)計
4.1.1 最小單片機系統(tǒng)

(一)1、原理圖繪制

由于自己畫板子,沒有加引腳標(biāo)識,有相同的引腳名稱,導(dǎo)致有AD原理圖一直報錯,有重復(fù)的引腳命名。由于自己不熟悉ad元件封裝,導(dǎo)致找不到合適的元件,需要自己畫原理圖元件庫,和pcb封裝庫。

使用編譯覆蓋功能,對原理圖中不需要在PCB圖中顯示的模塊,即使用現(xiàn)有PCB的模塊進(jìn)行遮蓋。

2、在對原理圖工程進(jìn)行編譯后,進(jìn)行生成PCB文件,并更改其布局。

3、對封裝不符合的元件,繪制PCB封裝。

查找晶振封裝,畫元件pcb庫。

4、修改元件布局,盡量減少線路交錯,如果有交錯,需要增加過孔。

5、禁止布線區(qū)的繪制操作

將板層標(biāo)簽切換到keep-out layer,執(zhí)行菜單place》走線》繪制一閉合區(qū)域,

6、進(jìn)行自動布線操作,并利用手動布線,進(jìn)行修改布局,利用規(guī)則檢查,修改pcb圖中有錯誤的地方。

7、檢查—運行DRC規(guī)則檢查 糾錯

元件絲印跑到頂層,修改其到頂層,選中元件,在頁面右下方,選中pcb》右鍵》pcb inspector》更改元件所在層

8、補淚滴的操作

執(zhí)行工具》淚滴;通過設(shè)置選項設(shè)置淚滴種類圓弧形、直線型 、為焊盤或者過孔補淚滴》選擇淚滴類型

9、覆銅操作

菜單欄》工具》放置覆銅菜單命令


元件清單

4.1.2TB6612


TB6612FNG 是東芝半導(dǎo)體公司生產(chǎn)的一款直流電機驅(qū)動器件,它具有大電流MOSFET-H 橋結(jié)構(gòu),雙通道電路輸出,可同時驅(qū)動 2 個電機。同PWA,AIN2,AIN1控制電機。其中PWMA接到單片機的PWM引腳,一般10KHZ即可,并通過改變占空比調(diào)節(jié)電機的速度。

4.1.3HC-06模塊藍(lán)牙

本次設(shè)計選擇的藍(lán)牙模塊是HC-06模塊,HC-06 是一款高性能的從機藍(lán)牙串口模塊,模塊兼容 5V 或 3.3V 單片機系統(tǒng),使用非常靈活、方便。

4.2 系統(tǒng)工作原理論述

當(dāng)藍(lán)牙手機APP連接上藍(lán)牙,通過手機APP向單片機發(fā)送相應(yīng)指令,當(dāng)單片機接收到指令。進(jìn)入相應(yīng)的串口中斷,執(zhí)行相應(yīng)的程序。設(shè)計實現(xiàn)更改PWM值、并能夠調(diào)校時間的時鐘,還能夠?qū)崿F(xiàn)小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速功能。軟件設(shè)計采用定時中斷,串口中斷結(jié)構(gòu),未用軟件延時法。

5 軟件設(shè)計5.1 分析論證

軟件設(shè)計采用定時中斷,串口中斷結(jié)構(gòu),未用軟件延時法。大大提高芯片運行速率。使用tb6612驅(qū)動芯片控制電機,前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速功能。使用藍(lán)牙可遠(yuǎn)程控制電機。

5.1.1 hc06藍(lán)牙模塊

模塊使用串口通訊,通過藍(lán)牙模塊連接手機APP,使用手機APP向單片機發(fā)送16進(jìn)制數(shù)據(jù)。

5.1.2 TB6612驅(qū)動模塊

通過控制該芯片的PWA,AIN2,AIN1、STBY引腳,PWB,BIN2,BIN1,控制兩路電機的正反轉(zhuǎn),前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速。

5.1.3 pwm占空比更改模塊

該模塊重要功效是修改占空比,更改電機轉(zhuǎn)速。

3.1.4直流電壓轉(zhuǎn)接模塊

該模塊的功能是引出電源排針,給電機及各個模塊供電。

5.1.5 整體功能

當(dāng)藍(lán)牙手機APP連接上藍(lán)牙,通過手機APP向單片機發(fā)送相應(yīng)指令,當(dāng)單片機接收到指令。進(jìn)入相應(yīng)的串口中斷,執(zhí)行相應(yīng)的程序。設(shè)計實現(xiàn)更改PWM值、并能夠調(diào)校時間的時鐘,還能夠?qū)崿F(xiàn)小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速功能。軟件設(shè)計采用定時中斷,串口中斷結(jié)構(gòu),未用軟件延時法。

5.2 程序流程圖

軟件設(shè)計采用定時中斷,串口中斷結(jié)構(gòu),未用軟件延時法。藍(lán)牙手機APP連接上藍(lán)牙,通過手機APP向單片機發(fā)送相應(yīng)指令,當(dāng)單片機接收到指令,進(jìn)入相應(yīng)的串口中斷,執(zhí)行相應(yīng)的程序。接收到“0x01”車的前進(jìn),接收到“0x02”車的左轉(zhuǎn),接收到“0x03”車的右轉(zhuǎn),接收到“0x04”車的后退,接收到“0x05”車的加速,接收到“0x06”車的停止。

5.3程序清單

1、主程序


6 調(diào)試過程及分析
  • 仿真測試

編寫好的源程序在 Keil 編譯后未呈現(xiàn)正常的現(xiàn)象,這些錯誤導(dǎo)致浪費了很多時間。例如:像藍(lán)牙模塊使用9600波特率,為了模擬藍(lán)牙模塊通過串口給單片機接收數(shù)據(jù),使用XCOM模擬軟件,利用usb轉(zhuǎn)ttl模塊給單片機發(fā)送數(shù)據(jù)。在硬件焊接問題上,LED引腳焊反,部分引腳虛焊,導(dǎo)致接觸不良,stc89c52芯片損壞,導(dǎo)致無法正常下載入程序。在前期的程序編寫和幾天的上機調(diào)試,使我又獲得了很多新的知識,由于前期編寫程序時查了很多材料學(xué)到了很多知識,這幾天的調(diào)試更時獲得很新的知識,由于程序中又很多的錯誤,為了修正錯誤必須看書或向別人請教,在這個過程中無意識的獲得了很多知識。同時也使我對單片機更感興趣了,這點我感到很重要,相信這會對以后的學(xué)習(xí)有所幫助。

  • 實物制作與測試

51最小系統(tǒng)板PCB焊接圖

藍(lán)牙小車實物圖

7 設(shè)計總結(jié)

本次設(shè)計是用stc89c52單片機及串口電路設(shè)計一個基于手機APP的藍(lán)牙小車,經(jīng)過一個星期的調(diào)試,成果滿足基本設(shè)計請求,驗證無誤。設(shè)計重要用到了多種硬件,程序也比較長,比較麻煩,同時也碰到了不少艱苦,尤其是關(guān)于藍(lán)牙模塊與單片機通訊,使電機正常工作的設(shè)計實現(xiàn)。由于電機及驅(qū)動需要供電充足對電流也有一定要求,導(dǎo)致電機一直未正常轉(zhuǎn)動。通過本次設(shè)計,我懂得了小車的設(shè)計流程,尤其是硬、軟件的設(shè)計方法,以及電源及硬件焊接的重要性,以及電機驅(qū)動芯片及串口中斷和定時器中斷的一般原理,也進(jìn)一步了解了8051定時器的應(yīng)用和中斷CPU程序的編程方法,開辟了思路,提高了分工協(xié)作才能和分析題目,解決題目的能力。

  1. void main()                                            
  2. {     Initialize_time0();
  3.      bluetooth_init();
  4. PWMA=1;
  5.       PWMB=1;
  6.                             STBY=1;
  7.                  BackwhilePWMA=1;
  8.       BackwhilePWMB=1;

  9.                             BackwhileSTBY =1;
  10.                             led3=1; led2=0;                           
  11.        while(1)  ;}
  12. 藍(lán)牙串口、定時器初始化
  13. void bluetooth_init()//初始化子程序
  14.               {TMOD=0x22;//設(shè)置定時器T1為工作方式2              9600
  15.     PCON = 0x00;                //SMOD=1
  16.               TH1=0xfd;
  17.               TL1=0xfd;//T1定時器裝初值
  18.               TR1=1;//啟動定時器T1
  19.               REN=1;//允許串口接收
  20.               SM0=0;
  21.               SM1=1;//設(shè)置串口工作方式1
  22.               EA=1;//開總中斷
  23.               ES=1;//開串口中斷}
  24. void Initialize_time0(void)
  25. {   EA=1;
  26.     ET0=1;                         //EA=1;ET0=1;開啟總中斷、定時器0
  27.     TMOD=0x22;                               //M1=1,M1=0;方式2
  28.     TH0 = 0XA3;                                   //定時時間為100us   
  29.     TL0 = 0XA3;                                                                                          
  30.     TR0=1; } //啟動定時器0,開始計數(shù)
  31.   void send(unsigned char a)        //單字節(jié)數(shù)據(jù)發(fā)送
  32. {  //注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測試需要接上拉電阻
  33.         TI=0;      
  34.         SBUF=a;
  35.         while(TI==0);
  36.         TI=0;}
  37. 小車的前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止、加速
  38. void forward()      
  39.        { AIN1=1;
  40.                             AIN2=0;      
  41.                             BIN1=1;
  42.                             BIN2=0;              
  43.         PWMA=1;
  44.         PWMB=1;
  45.                             BackwhileAIN1=1;
  46.                             BackwhileAIN2=0;      
  47.                             BackwhileBIN1=1;
  48.                             BackwhileBIN2=0;              
  49.         BackwhilePWMA=1;
  50.         BackwhilePWMB=1;
  51.         send(tem); }                                                               
  52. Void case2(){
  53.        AIN1=0;
  54.                             AIN2=0;      
  55.                             BIN1=1;
  56.                             BIN2=0;              
  57.        PWMA=1;
  58.        PWMB=1;
  59.                             BackwhileAIN1=0;
  60.                             BackwhileAIN2=0;      
  61.                             BackwhileBIN1=1;
  62.                             BackwhileBIN2=0;              
  63.         BackwhilePWMA=1;
  64.         BackwhilePWMB=1;
  65.         send(tem);}                                                                                                               
  66. Void case3(){
  67.            AIN1=1;
  68.                                           AIN2=0;      
  69.                                           BIN1=0;
  70.                                           BIN2=0;              
  71.            PWMA=1;
  72.            PWMB=1;
  73.                                           BackwhileAIN1=1;
  74.                                           BackwhileAIN2=0;      
  75.                                           BackwhileBIN1=0;
  76.                                           BackwhileBIN2=0;              
  77.            BackwhilePWMA=1;
  78.            BackwhilePWMB=1;
  79.            send(tem);}
  80. Void backward(){
  81.                                AIN1=0;
  82.                                           AIN2=1;      
  83.                                           BIN1=0;
  84.                                           BIN2=1;              
  85.            PWMA=1;
  86.            PWMB=1;
  87.                                           BackwhileAIN1=0;
  88.                                           BackwhileAIN2=1;      
  89.                                           BackwhileBIN1=0;
  90.                                           BackwhileBIN2=1;              
  91.            BackwhilePWMA=1;
  92.            BackwhilePWMB=1;
  93.                      send(tem);}        
  94. void case5speed()
  95.    {Degree++;
  96.               if(Degree==180){Degree=0;}
  97.               send(tem);}
  98. void case6stop()   
  99.                             {PWMA=0;
  100.         PWMB=0;
  101.                             AIN1=0;
  102.                             AIN2=0;      
  103.                             BIN1=0;
  104.                             BIN2=0;            
  105.                             BackwhilePWMA=0;
  106.        BackwhilePWMB=0;
  107.                             BackwhileAIN1=0;
  108.                             BackwhileAIN2=0;      
  109.                             BackwhileBIN1=0;
  110.                             BackwhileBIN2=0;
  111.          send(tem);}
  112. 4、串口中斷,定時器中斷
  113. void chuan() interrupt 4//串口中斷服務(wù)程序
  114. {RI=0;//軟件清除串口響應(yīng)
  115. tem=SBUF;//讀取單片機串口接受的藍(lán)牙模塊發(fā)送的數(shù)據(jù)  
  116. led3=!led3;
  117. if(tem==0x09){   led2=!led2;  send(tem);  }     
  118. if(tem==0x01){   forward();  }
  119. if(tem==0x02){   case2();  }
  120. if(tem==0x03){   case3();  }
  121. if(tem==0x04){  backward(); }
  122. if(tem==0x05){  case5speed(); }
  123. if(tem==0x06){  case6stop(); } }
  124. void timer0 (void) interrupt 1            //定時中斷0子程序
  125. {                                                                                                                                                                                    
  126.         Count++;      
  127.         if(Count>=0 && Count<=Degree)
  128.         {       PWMA=0;
  129.                 PWMB=0;
  130.                                                           BackwhilePWMA=0;
  131.                 BackwhilePWMB=0;        }  
  132.         else
  133.         {       PWMA=1;
  134.                 PWMB=1;
  135.                                                           BackwhilePWMA=1;
  136.                 BackwhilePWMB=1;        }
  137.                if(Count==200)            
  138.        Count=0;               }
復(fù)制代碼

完整的Word格式文檔51黑下載地址:

文檔.doc (9.95 MB, 下載次數(shù): 51)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:36831 發(fā)表于 2020-1-14 23:06 | 只看該作者
謝謝分享 學(xué)習(xí)你的思路
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线日韩欧美 | 国产伊人精品 | 免费在线观看一区二区 | 在线欧美亚洲 | 成人免费视频网站在线看 | 91在线观看免费视频 | 黄色一级特级片 | 91精品一区二区三区久久久久久 | 亚洲精品在线观看网站 | 羞羞视频网站免费看 | 亚洲精品一区二区在线观看 | 人人干人人干人人干 | 欧美一级大黄 | 午夜视频一区二区 | 久久99精品久久久久久国产越南 | 久久久久久国产精品久久 | 欧美成人精品 | 一区二区在线 | 亚洲精品一区中文字幕乱码 | 国产亚洲精品精品国产亚洲综合 | 97精品超碰一区二区三区 | 6080yy精品一区二区三区 | 91se在线 | 国产精品一区二区在线 | 永久看片 | 日韩不卡视频在线 | 色婷婷精品 | 日韩一级在线 | 国产一级片久久久 | 暖暖日本在线视频 | 欧美乱操| 国产 日韩 欧美 在线 | 成人国产免费视频 | 国产成人精品一区二区三区网站观看 | 国产精品成人一区二区三区夜夜夜 | 国产高清精品一区二区三区 | 91免费看片 | 亚洲一区二区三区四区五区中文 | 国产美女高潮 | 亚州国产 | 亚洲激情综合 |