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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍牙遙控小車程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:166747 發表于 2017-2-26 15:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本文描述基于單片機的手機藍牙遙控小車設計,該系統是以89C51單片機為核心控制器,包含了電機驅動模塊、主控制器模塊、藍牙通信模塊、鍵盤模塊、電源模塊等。該系統通過2.4GHz藍牙通信模塊實現小車在手機遙控的控制下轉向、前進、倒退、自動定位、小車精確轉彎、等功能。文中首先描述了課題的研究背景、目的、意義、內容及對開發工具做了簡單介紹;其次描述了系統功能,并根據系統功能進行了總體設計;再次詳細描述各模塊的設計,主要包括主控制器模塊、電機驅動模塊、藍牙控制模塊等,藍牙模塊有小車上的藍牙和手機藍牙,根據手機藍牙的功能在手機上開發遙控設置進行短距離的無線遙控,手機Android系統是一種基于Linux的自由源代碼開發系統,手機界面的設計是在Eclipse集成開發環境下完成的;最后描述系統的仿真與調試。
  1. void uart_init()
  2. {
  3. TMOD = 0X20;
  4. TH1 = 0XFD;//晶振11.0592,波特率9600
  5. TL1 = 0XFD;
  6. SCON = 0XD0;
  7. PCON = 0X00;
  8. IE = 0X90;
  9. TR1 = 1;
  10. TI=1;}
  11. 中斷接收函數只要是負責接受藍牙發送過來的數據,函數原型如下:
  12. void serial () interrupt 4 using 3
  13. { if (RI)// 接收中斷標志位
  14. { RI = 0 ;
  15. uart_char=SBUF;//讀取}
  16. }
  17. (3)由于無線接收器和單片機通信的方式是串口,為了小車能夠接受主控制器發來的無線信號,所以單片機最好使用串口中斷的方式,在main 函數里面主要就是處理中斷接收到的數據,并控制電機的轉動,處理函數如下:
  18. #include<reg52.h>//聲明頭文件
  19. #define uchar unsigned char//宏定義
  20. #define uint unsigned int//宏定義
  21. #define aa 35//左輪速度調節值
  22. #define bb 35//右輪速度調節值
  23. sbit deng=P2^0;//前車燈
  24. sbit y=P2^1;//右轉向燈
  25. sbit z=P2^2;//左轉向燈sbit you1=P0^3;//右輪正轉信號端
  26. sbit you2=P0^2;//右輪倒轉信號端
  27. sbit zuo1=P0^1;//左輪正轉信號端
  28. sbit zuo2=P0^0;//左輪倒轉信號端

  29. uchar a=0;//定義一個變量a,用來讀取串口的數據

  30. void delay(uint z)//一個帶參數的延時程序
  31. {
  32.         int i,j;//定義兩個變量
  33.         for(i=10;i>0;i--)
  34.         for(j=z;j>0;j--);//將參數z賦值給j
  35. }

  36. void init()//初始化子程序
  37. {
  38.         TMOD=0x20;//設置定時器T1為工作方式2
  39.         TH1=0xfd;
  40.         TL1=0xfd;//T1定時器裝初值
  41.         TR1=1;//啟動定時器T1
  42.         REN=1;//允許串口接收
  43.         SM0=0;
  44.         SM1=1;//設置串口工作方式1
  45.         EA=1;//開總中斷
  46.         ES=1;//開串口中斷
  47. }

  48. void go1()//前進子程序
  49. {
  50.         zuo1=1;
  51.         zuo2=0;//左邊輪子正轉
  52. delay(aa);
  53.         zuo2=1;//關閉左邊輪子

  54.         you1=1;
  55.         you2=0;        //右邊輪子正轉
  56.         delay(bb);
  57.         you2=1;//關閉右邊輪子

  58.         delay(100);
  59.         z=1;
  60.         y=1;//關閉轉向燈
  61. }

  62. void go2()//前進子程序
  63. {
  64.         zuo1=1;
  65.         zuo2=0;//左邊輪子正轉delay(aa);
  66.         zuo2=1;//關閉左邊輪子

  67.         you1=1;
  68.         you2=0;        //右邊輪子正轉
  69.         delay(bb);
  70.         you2=1;//關閉右邊輪子

  71.         delay(80);
  72.         z=1;
  73.         y=1;//關閉轉向燈
  74. }

  75. void go3()//前進子程序
  76. {
  77.         zuo1=1;
  78.         zuo2=0;//左邊輪子正轉
  79.         delay(aa);
  80.         zuo2=1;//關閉左邊輪子

  81.         you1=1;
  82.         you2=0;        //右邊輪子正轉
  83.         delay(bb);
  84.         you2=1;//關閉右邊輪子

  85.         delay(60);
  86.         z=1;
  87.         y=1;//關閉轉向燈
  88. }

  89. void go4()//前進子程序
  90. {
  91.         zuo1=1;
  92.         zuo2=0;//左邊輪子正轉
  93.         delay(aa);
  94.         zuo2=1;//關閉左邊輪子

  95.         you1=1;
  96.         you2=0;        //右邊輪子正轉
  97.         delay(bb);
  98.         you2=1;//關閉右邊輪子

  99.         delay(40);
  100.         z=1;
  101.         y=1;//關閉轉向燈
  102. }

  103. void go5()//前進子程序
  104. {
  105.         zuo1=1;
  106.         zuo2=0;//左邊輪子正轉
  107.         delay(aa);
  108.         zuo2=1;//關閉左邊輪子

  109.         you1=1;
  110.         you2=0;        //右邊輪子正轉
  111.         delay(bb);
  112.         you2=1;//關閉右邊輪子

  113.         delay(20);
  114.         z=1;
  115.         y=1;//關閉轉向燈
  116. }

  117. void go6()//前進子程序
  118. {
  119.         zuo1=1;
  120.         zuo2=0;//左邊輪子正轉
  121.         delay(aa);
  122.         zuo2=1;//關閉左邊輪子

  123.         you1=1;
  124.         you2=0;        //右邊輪子正轉
  125.         delay(bb);
  126.         you2=1;//關閉右邊輪子

  127.         z=1;
  128.         y=1;//關閉轉向燈
  129. }

  130. void hui1()//小車后退的子程序
  131. {
  132.         zuo1=0;
  133.         zuo2=1;//左邊輪子倒轉
  134.         delay(aa);
  135.         zuo1=1;//關閉左邊輪子

  136.         you1=0;
  137.         you2=1;        //右邊輪子倒轉
  138.         delay(bb);
  139.         you1=1;//關閉右邊輪子

  140.         delay(100);
  141.         z=1;
  142.         y=1;//關閉轉向燈
  143. }

  144. void hui2()//小車后退的子程序
  145. {
  146.         zuo1=0;
  147.         zuo2=1;//左邊輪子倒轉
  148.         delay(aa);
  149.         zuo1=1;//關閉左邊輪子
  150.         you1=0;
  151.         you2=1;        //右邊輪子倒轉
  152.         delay(bb);
  153.         you1=1;//關閉右邊輪子
  154.         delay(80);
  155.         z=1;
  156.         y=1;//關閉轉向燈
  157. }

  158. void hui3()//小車后退的子程序
  159. {
  160.         zuo1=0;
  161.         zuo2=1;//左邊輪子倒轉
  162.         delay(aa);
  163.         zuo1=1;//關閉左邊輪子

  164.         you1=0;
  165.         you2=1;        //右邊輪子倒轉
  166.         delay(bb);
  167.         you1=1;//關閉右邊輪子

  168.         delay(60);
  169.         z=1;
  170.         y=1;//關閉轉向燈
  171. }

  172. void hui4()//小車后退的子程序
  173. {
  174.         zuo1=0;
  175.         zuo2=1;//左邊輪子倒轉
  176.         delay(aa);
  177.         zuo1=1;//關閉左邊輪子
  178.         you1=0;
  179.         you2=1;        //右邊輪子倒轉
  180.         delay(bb);
  181.         you1=1;//關閉右邊輪子

  182.         delay(40);
  183.         z=1;
  184.         y=1;//關閉轉向燈
  185. }
  186. void hui5()//小車后退的子程序
  187. {
  188.         zuo1=0;
  189.         zuo2=1;//左邊輪子倒轉
  190.         delay(aa);
  191.         zuo1=1;//關閉左邊輪子
  192.         you1=0;
  193.         you2=1;        //右邊輪子倒轉
  194.         delay(bb);
  195.         you1=1;//關閉右邊輪子

  196.         delay(20);        z=1;
  197.         y=1;//關閉轉向燈
  198. }
  199. void hui6()//小車后退的子程序
  200. {
  201.         zuo1=0;zuo2=1;//左邊輪子倒轉delay(aa);
  202.         zuo1=1;//關閉左邊輪子
  203. you1=0;you2=1;        //右邊輪子倒轉delay(bb);
  204.         you1=1;//關閉右邊輪子

  205.         z=1;
  206.         y=1;//關閉轉向燈
  207. }

  208. void turnleft()//小車左轉彎子程序
  209. {
  210.         
  211.         z=~z;//左轉向燈打開 uo1=1;zuo2=1;//左邊輪子停止轉動you1=1;
  212. you2=0;        //右邊輪子正轉 elay(bb); you2=1;//右邊輪子停止 elay(50);
  213.         z=1;y=1;//關閉轉向燈
  214. }

  215. void turnright()//小車右轉彎子程序
  216. {
  217.         y=~y;//右轉向燈打開 uo1=1;2=0;//左邊輪子正轉
  218.         delay(aa);
  219.         zuo2=1;//左邊輪子停止you1=1;you2=1;        //右邊輪子停止
  220.         delay(50);        z=1;y=1;//關閉轉向燈
  221. }
  222. void down()//停止子程序
  223. {
  224.         zuo1=1;zuo2=1;you1=1;you2=1;        //左右輪全部停止
  225.         z=1;y=1;//關閉轉向燈}
  226. void main()//主程序
  227. {
  228.         init();//調用初始化子程序


  229. while(1)//死循環
  230.         {
  231. if(a==0x14||a==0x15||a==0x54||a==0x55||a==0x64||a==0x65)//如果是就前進
  232.         go1();
  233.         if(a==0x16||a==0x17||a==0x56||a==0x57||a==0x66||a==0x67)//如果是就前進
  234.         go2();
  235.         if(a==0x18||a==0x19||a==0x58||a==0x59||a==0x68||a==0x69)//如果是就前進
  236.         go3();
  237.         if(a==0x1a||a==0x1b||a==0x5a||a==0x5b||a==0x6a||a==0x6b)//如果是就前進
  238.         go4();
  239.         if(a==0x1c||a==0x1d||a==0x5c||a==0x5d||a==0x6c||a==0x6d)//如果是就前進
  240.         go5();
  241.         if(a==0x1e||a==0x1f||a==0x5e||a==0x5f||a==0x6e||a==0x6f)//如果是就前進
  242.         go6();
  243.         if(a==0x24||a==0x25||a==0x74||a==0x75||a==0x84||a==0x85)//如果是就后退
  244.         hui1();
  245.         if(a==0x26||a==0x27||a==0x76||a==0x77||a==0x86||a==0x87)//如果是就后退
  246.         hui2();
  247.         if(a==0x28||a==0x29||a==0x78||a==0x79||a==0x88||a==0x89)//如果是就后退
  248.         hui3();
  249.         if(a==0x2a||a==0x2b||a==0x7a||a==0x7b||a==0x8a||a==0x8b)//如果是就后退
  250.         hui4();
  251.         if(a==0x2c||a==0x2d||a==0x7c||a==0x7d||a==0x8c||a==0x8d)//如果是就后退
  252.         hui5();
  253.         if(a==0x2e||a==0x2f||a==0x7e||a==0x7d||a==0x8e||a==0x8f)//如果是就后退
  254.         hui6();
  255. if(a==0x3f)//如果是0x3f就左轉
  256.                         turnleft();
  257.                         if(a==0x4f)//如果是0x4f就右轉
  258.                         turnright();
  259.                         if(a==0x00)//如果是0x00就停止
  260.                         down();
  261.                         if(a==0xa0)//如果是0xa0車燈打開
  262.                         deng=0;
  263.                         if(a==0xb0)//如果是0xb0車燈關閉
  264.                         deng=1;
  265.                         else
  266.                         down();
  267.                 }        
  268. }        
  269. void chuan() interrupt 4//串口中斷服務程序
  270. {
  271.         RI=0;//軟件清除串口響應
  272.         a=SBUF;//讀取單片機串口接受的藍牙模塊發送的數據
  273. }
復制代碼


評分

參與人數 2黑幣 +13 收起 理由
莫德爾 + 8 贊一個!
1205693382 + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發
ID:166893 發表于 2017-3-16 20:44 | 只看該作者
兄弟我做了個小車  但是還沒有程序  我是用兩個L298N的驅動模塊并聯控制四個輪子  左邊驅動模塊控制左邊兩個輪子 右邊驅動模塊控制右邊兩個輪子  用的HC-06藍牙模塊  STC89C52單片機    驅動IN口接得P2口  我這個小車能不能用你這個程序呢
回復

使用道具 舉報

板凳
ID:190284 發表于 2017-5-10 13:50 | 只看該作者
請問有沒有具體的電路圖和藍牙串口的代碼
回復

使用道具 舉報

地板
ID:317135 發表于 2018-6-1 08:31 | 只看該作者
終于可以看得懂這個程序了,樓主牛逼,點贊,加關注
回復

使用道具 舉報

5#
ID:328609 發表于 2018-7-4 22:10 | 只看該作者
小白表示沒看懂
回復

使用道具 舉報

6#
ID:372705 發表于 2018-7-31 17:50 | 只看該作者
贊一個
回復

使用道具 舉報

7#
ID:395600 發表于 2018-9-9 12:54 | 只看該作者
真的非常棒,很有幫助
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 韩国av一区二区 | 91精品国产91久久久久青草 | av片毛片| 久久网国产 | 欧美一区二区免费 | 午夜精品一区二区三区三上悠亚 | 黄色网址免费在线观看 | 99热这里都是精品 | 九九国产 | 亚洲人成人一区二区在线观看 | 99久久精品国产一区二区三区 | 国产色婷婷精品综合在线手机播放 | 国产精品视频二区三区 | 自拍亚洲 | 日本一区二区视频 | 国产亚洲精品区 | 日本三级网站在线 | 亚洲一区二区免费 | 香蕉久久久 | 亚洲精品在线免费播放 | 欧美在线视频网 | 九九亚洲 | 日韩欧美三级 | 亚洲欧洲一区二区 | 日韩免费一区 | a免费在线| 欧美精品一区二区三区在线播放 | 一区二区三区精品视频 | 色婷婷综合久久久中字幕精品久久 | 国产精品黄色 | 成人午夜在线观看 | 久久国产欧美日韩精品 | 99精品国自产在线观看 | 国产农村妇女精品一区 | 中文字幕色站 | 毛片大全 | 在线一级片 | 日韩一区二区在线视频 | www.成人久久 | 狠狠综合久久av一区二区小说 | 久久91av|