單片機(jī)智能藍(lán)牙小車課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  單</b></p><p><b>  片</b></p><p><b>  機(jī)</b></p><p><b>  課</b></p><p><b>  程</b></p><p

2、><b>  設(shè)</b></p><p><b>  計(jì)</b></p><p><b>  引言</b></p><p>  制作一個(gè)基于51單片機(jī)的控制的無(wú)線控制小車。</p><p><b>  系統(tǒng)設(shè)計(jì)</b></p><

3、p>  由51單片機(jī)控制直流電機(jī)的正反轉(zhuǎn)來(lái)控制小車的運(yùn)動(dòng)。</p><p>  無(wú)線部分用來(lái)接收上位機(jī)(電腦或者手機(jī))發(fā)出的信號(hào),通過(guò)信號(hào)控制單片機(jī)調(diào)用函數(shù)程序來(lái)控制小車的運(yùn)行狀態(tài)。</p><p>  無(wú)線部分:用藍(lán)牙從機(jī)的TTL接口接收信號(hào)反饋給單片機(jī),還可以通過(guò)電腦的無(wú)線局域網(wǎng)網(wǎng)卡來(lái)控制路由器的TTL串口來(lái)控制單片機(jī)的狀態(tài)。由于藍(lán)牙模塊容易得到且接口方便,電壓可以用+5V控制,

4、攜帶方便,便于在小車上安裝。</p><p>  電機(jī)驅(qū)動(dòng):電機(jī)驅(qū)動(dòng)需要大電流,較高的電壓,考慮到單片機(jī)的負(fù)載能力,用L298N驅(qū)動(dòng)模塊來(lái)驅(qū)動(dòng)電機(jī),單片機(jī)輸出邏輯信號(hào)控制L298N模塊輸出正反向電壓,由此控制電機(jī)的正反轉(zhuǎn)。</p><p>  小車的運(yùn)動(dòng)狀態(tài):小車為四輪驅(qū)動(dòng),一側(cè)的兩個(gè)電機(jī)分為一組。</p><p><b>  軟件設(shè)計(jì)</b>

5、</p><p><b>  單片機(jī)電路:</b></p><p>  由p1口輸出邏輯電平驅(qū)動(dòng)L298N電路</p><p>  L298N驅(qū)動(dòng)電機(jī)電路,供給+5V和+12V電壓</p><p><b>  系統(tǒng)的仿真與調(diào)試</b></p><p>  用簡(jiǎn)單程序仿真測(cè)試電

6、路連接情況</p><p><b>  匯編程序代碼:</b></p><p>  org 0000h</p><p><b>  ajmpmain</b></p><p><b>  org0080h</b></p><p><b> 

7、 main:</b></p><p>  mova,#0ffh</p><p>  mov p1,a;不轉(zhuǎn)</p><p>  call delay;延時(shí)</p><p>  loop:mova,#00ah;正轉(zhuǎn)</p><p><b>  movp1,a</b&g

8、t;</p><p>  calldelay</p><p>  mova,#0ffh;停止</p><p>  mov p1,a</p><p>  calldelay</p><p>  mova,#005h;反轉(zhuǎn)</p><p><b>  movp1,a<

9、;/b></p><p>  calldelay</p><p>  mova,#0ffh;停止</p><p>  mov p1,a</p><p>  calldelay</p><p>  jmp loop</p><p>  delay:mov r5,#50

10、;延時(shí)。</p><p>  d1: mov r6,#40</p><p>  d2:mov r7,#248</p><p><b>  djnz r7,$</b></p><p>  djnz r6,d2</p><p>  djnz r5,d1</p><p>&l

11、t;b>  ret</b></p><p><b>  end</b></p><p>  仿真結(jié)果:電機(jī)正反轉(zhuǎn)均正常</p><p><b>  小車程序:</b></p><p>  用單片機(jī)控制小車的四個(gè)狀態(tài),前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn)。由四個(gè)函數(shù)實(shí)現(xiàn),執(zhí)行條件為中斷。當(dāng)藍(lán)牙從機(jī)

12、接收到數(shù)據(jù)傳輸?shù)絾纹瑱C(jī)時(shí),單片機(jī)內(nèi)部選擇指令,調(diào)動(dòng)while函數(shù),判斷指令數(shù)據(jù),從而控制小車狀態(tài)。</p><p><b>  程序設(shè)計(jì)</b></p><p>  循環(huán)函數(shù),控制小車的狀態(tài)</p><p><b>  while(1)</b></p><p><b>  {</b&

13、gt;</p><p>  switch(Buffer[0])</p><p><b>  {</b></p><p>  case 0: Moto_Stop(); break;</p><p>  case 1: Moto_Forward(); break;</p><p>  case 2:

14、Moto_Backward(); break;</p><p>  case 3: Moto_TurnLeft(); break;</p><p>  case 4: Moto_TurnRight(); break;</p><p>  default:break; </p><p><b>  }</b></p&

15、gt;<p><b>  }</b></p><p><b>  總結(jié)(心得體會(huì))</b></p><p><b>  是否完成</b></p><p><b>  程序清單</b></p><p>  #include<reg52.h

16、> </p><p>  #include<math.h> </p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int </p><p>  uchar Buffer[4] = {0}; //從串口接收的數(shù)據(jù)</p>&

17、lt;p><b>  uint i,j;</b></p><p>  sbit Left_Positive=P1^0;</p><p>  sbit Left_Negative=P1^1;</p><p>  sbit Right_Positive=P1^2;</p><p>  sbit Right_Negati

18、ve=P1^3;</p><p>  sbit LeftLight=P2^1;</p><p>  sbit RightLight=P2^2;</p><p>  /********************************************************************</p><p>  * 名稱 : Del

19、ay_1ms()</p><p>  * 功能 : 延時(shí)子程序,延時(shí)時(shí)間為 1ms * x</p><p>  * 輸入 : x (延時(shí)一毫秒的個(gè)數(shù))</p><p><b>  * 輸出 : 無(wú)</b></p><p>  ************************************************

20、***********************/</p><p>  void Delay_1ms(uint i)//1ms延時(shí)</p><p><b>  {</b></p><p>  uchar x,j;</p><p>  for(j=0;j<i;j++)</p><p>  for

21、(x=0;x<=148;x++); </p><p><b>  }</b></p><p>  /********************************************************************</p><p>  * 名稱 : Com_Int()</p><p>  *

22、功能 : 串口中斷子函數(shù)</p><p><b>  * 輸入 : 無(wú)</b></p><p><b>  * 輸出 : 無(wú)</b></p><p>  ***********************************************************************/</p>&

23、lt;p>  void Com_Int(void) interrupt 4</p><p><b>  {</b></p><p><b>  EA = 0;</b></p><p>  if(RI == 1) //當(dāng)硬件接收到一個(gè)數(shù)據(jù)時(shí),RI會(huì)置位</p><p><b>  {&

24、lt;/b></p><p>  Buffer[0] = SBUF - 48; //這里減去48是因?yàn)閺碾娔X中發(fā)送過(guò)來(lái)的數(shù)據(jù)是ASCII碼。</p><p><b>  RI = 0; </b></p><p><b>  }</b></p><p><b>  EA = 1;<

25、;/b></p><p><b>  }</b></p><p>  /********************************************************************</p><p>  * 名稱 : Com_Init()</p><p>  * 功能 : 串口初始化,晶振

26、11.0592,波特率9600,使串口中斷</p><p><b>  * 輸入 : 無(wú)</b></p><p><b>  * 輸出 : 無(wú)</b></p><p>  ***********************************************************************/<

27、/p><p>  void Com_Init(void)</p><p><b>  {</b></p><p>  TMOD = 0x20;</p><p>  PCON = 0x00;</p><p>  SCON = 0x50; </p><p>  TH1 = 0xFd

28、; //設(shè)置波特率 9600</p><p>  TL1 = 0xFd;</p><p>  TR1 = 1; //啟動(dòng)定時(shí)器1</p><p>  ES = 1; //開串口中斷</p><p>  EA = 1; //開總中斷</p><p><b>  }</b></p>&l

29、t;p>  /********************************************************************</p><p>  * 名稱 :Moto_Forward()</p><p>  * 功能 : 電機(jī)1、2啟動(dòng),都是前進(jìn),整車表現(xiàn)為前進(jìn)。</p><p><b>  * 輸入 : 無(wú)</b&g

30、t;</p><p>  * 輸出 : 無(wú) 問(wèn)題</p><p>  ***********************************************************************/</p><p&

31、gt;  void Moto_Forward()</p><p><b>  {</b></p><p>  Right_Negative=0;</p><p>  Left_Positive=0;</p><p>  Left_Negative=1;</p><p>  Right_Positi

32、ve=1;</p><p>  Delay_1ms(100);</p><p><b>  }</b></p><p>  /********************************************************************</p><p>  * 名稱 :Moto_Backward

33、()</p><p>  * 功能 : 電機(jī)1、2啟動(dòng),都是后退,整車表現(xiàn)為后退。</p><p><b>  * 輸入 : 無(wú)</b></p><p><b>  * 輸出 : 無(wú)</b></p><p>  ********************************************

34、***************************/</p><p>  void Moto_Backward()</p><p><b>  {</b></p><p>  Left_Positive=0;</p><p>  Right_Positive=0;</p><p>  Righ

35、t_Negative=1;</p><p>  Left_Negative=1;</p><p>  Delay_1ms(100);</p><p><b>  }</b></p><p>  /***************************************************************

36、*****</p><p>  * 名稱 :Moto_TurnLeft()</p><p>  * 功能 : 電機(jī)1后退,電機(jī)2前進(jìn),整車表現(xiàn)為左轉(zhuǎn)。</p><p><b>  * 輸入 : 無(wú)</b></p><p><b>  * 輸出 : 無(wú)</b></p><p>

37、  ***********************************************************************/</p><p>  void Moto_TurnLeft()</p><p><b>  { </b></p><p>  Left_Negative=0;</p><p>

38、;  Right_Positive=0;</p><p>  Right_Negative=1;</p><p>  Left_Positive=1;</p><p>  Delay_1ms(100);</p><p><b>  }</b></p><p>  /****************

39、****************************************************</p><p>  * 名稱 :Moto_TurnRight()</p><p>  * 功能 : 電機(jī)1前進(jìn),電機(jī)2后退,整車表現(xiàn)為右轉(zhuǎn)。</p><p><b>  * 輸入 : 無(wú)</b></p><p>&l

40、t;b>  * 輸出 : 無(wú)</b></p><p>  ***********************************************************************/</p><p>  void Moto_TurnRight()</p><p><b>  { </b></p>

41、<p>  Right_Negative=0;</p><p>  Left_Negative=0;</p><p>  Left_Positive=1;</p><p>  Right_Positive=1;</p><p>  Delay_1ms(100);</p><p><b>  }&

42、lt;/b></p><p>  /********************************************************************</p><p>  * 名稱 :Moto_Stop()</p><p>  * 功能 : 電機(jī)1停止,電機(jī)2停止,整車表現(xiàn)為停止。</p><p><b>

43、;  * 輸入 : 無(wú)</b></p><p><b>  * 輸出 : 無(wú)</b></p><p>  ***********************************************************************/</p><p>  void Moto_Stop()</p><

44、;p><b>  { </b></p><p>  Right_Negative=0;</p><p>  Left_Negative=0;</p><p>  Left_Positive=0;</p><p>  Right_Positive=0;</p><p>  Delay_1ms(

45、100);</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  Delay_1ms(100);</p><p>  Com_Init();//串口初始化</

46、p><p>  while(1)//循環(huán)結(jié)構(gòu),選擇函數(shù)控制小車的狀態(tài)</p><p><b>  {</b></p><p>  switch(Buffer[0])</p><p><b>  {</b></p><p>  case 0: Moto_Stop(); break;

47、</p><p>  case 1: Moto_Forward(); break;</p><p>  case 2: Moto_Backward(); break;</p><p>  case 3: Moto_TurnLeft(); break;</p><p>  case 4: Moto_TurnRight(); break;<

48、/p><p>  default:break; </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  參考文獻(xiàn)</b></p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論