欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6924|回復: 1
打印 上一主題 下一主題
收起左側

單片機手機藍牙小車設計+代碼+分析

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

(1)在綜合單片機實驗箱的硬件結構上編寫軟件完成設計。

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

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

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

(5)軟件設計采用定時中斷,串口中斷結構,不得應用軟件延時法。

(6)使用藍牙手機APP遠程控制。

1.2 選做項目

1、藍牙小車測速手機返回速度數據。

2、在以上設計的基礎上,增加超聲波測距模塊。

2 設計闡明
2.1設計內容

用STC80c52芯片單片機實驗箱及串口電路設計實現顯示時間并能夠調校時間的時鐘,還能夠實現啟動/暫停,復位功能。

用STC80c52芯片、藍牙模塊及串口電路、定時器、TB6612驅動芯片、藍牙手機APP,TT電機、5v直流電源轉接板、設計實現更改PWM值、并能夠調校時間的時鐘,還能夠實現小車的前進、左轉、右轉、后退、停止、加速功能。

2.2設計要求

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

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

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

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

(5) 軟件設計必須應用8051片內定時器,采用定時中斷結構,不得應用軟件延時法。

(6) 上機調試程序。

(7) 寫出設計報告。

2.3設備及工作環境

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

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

3 系統方案整體設計3.1 設計思路

用STC80c52芯片、藍牙模塊及串口電路、定時器、TB6612驅動芯片,TT電機、5v直流電源轉接板、藍牙手機APP、設計實現更改PWM值、并能夠調校時間的時鐘,還能夠實現小車的前進、左轉、右轉、后退、停止、加速功能。

3.2 系統整體框圖

代碼設計思路:當藍牙手機APP連接上藍牙,通過手機APP向單片機發送相應指令,當單片機接收到指令。進入相應的串口中斷,執行相應的程序。設計實現更改PWM值,還能夠實現小車的前進、左轉、右轉、后退、停止、加速功能。

如下圖所示。

圖1 系統整體框圖

4 硬件設計
4.1 系統硬件設計
4.1.1 最小單片機系統

(一)1、原理圖繪制

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

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

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

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

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

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

5、禁止布線區的繪制操作

將板層標簽切換到keep-out layer,執行菜單place》走線》繪制一閉合區域,

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

7、檢查—運行DRC規則檢查 糾錯

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

8、補淚滴的操作

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

9、覆銅操作

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


元件清單

4.1.2TB6612


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

4.1.3HC-06模塊藍牙

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

4.2 系統工作原理論述

當藍牙手機APP連接上藍牙,通過手機APP向單片機發送相應指令,當單片機接收到指令。進入相應的串口中斷,執行相應的程序。設計實現更改PWM值、并能夠調校時間的時鐘,還能夠實現小車的前進、左轉、右轉、后退、停止、加速功能。軟件設計采用定時中斷,串口中斷結構,未用軟件延時法。

5 軟件設計5.1 分析論證

軟件設計采用定時中斷,串口中斷結構,未用軟件延時法。大大提高芯片運行速率。使用tb6612驅動芯片控制電機,前進、左轉、右轉、后退、停止、加速功能。使用藍牙可遠程控制電機。

5.1.1 hc06藍牙模塊

模塊使用串口通訊,通過藍牙模塊連接手機APP,使用手機APP向單片機發送16進制數據。

5.1.2 TB6612驅動模塊

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

5.1.3 pwm占空比更改模塊

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

3.1.4直流電壓轉接模塊

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

5.1.5 整體功能

當藍牙手機APP連接上藍牙,通過手機APP向單片機發送相應指令,當單片機接收到指令。進入相應的串口中斷,執行相應的程序。設計實現更改PWM值、并能夠調校時間的時鐘,還能夠實現小車的前進、左轉、右轉、后退、停止、加速功能。軟件設計采用定時中斷,串口中斷結構,未用軟件延時法。

5.2 程序流程圖

軟件設計采用定時中斷,串口中斷結構,未用軟件延時法。藍牙手機APP連接上藍牙,通過手機APP向單片機發送相應指令,當單片機接收到指令,進入相應的串口中斷,執行相應的程序。接收到“0x01”車的前進,接收到“0x02”車的左轉,接收到“0x03”車的右轉,接收到“0x04”車的后退,接收到“0x05”車的加速,接收到“0x06”車的停止。

5.3程序清單

1、主程序


6 調試過程及分析
  • 仿真測試

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

  • 實物制作與測試

51最小系統板PCB焊接圖

藍牙小車實物圖

7 設計總結

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

  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. 藍牙串口、定時器初始化
  13. void bluetooth_init()//初始化子程序
  14.               {TMOD=0x22;//設置定時器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;//設置串口工作方式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,開始計數
  31.   void send(unsigned char a)        //單字節數據發送
  32. {  //注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測試需要接上拉電阻
  33.         TI=0;      
  34.         SBUF=a;
  35.         while(TI==0);
  36.         TI=0;}
  37. 小車的前進、左轉、右轉、后退、停止、加速
  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//串口中斷服務程序
  114. {RI=0;//軟件清除串口響應
  115. tem=SBUF;//讀取單片機串口接受的藍牙模塊發送的數據  
  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;               }
復制代碼

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

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



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

使用道具 舉報

沙發
ID:36831 發表于 2020-1-14 23:06 | 只看該作者
謝謝分享 學習你的思路
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表