找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8574|回复: 14
打印 上一主题 下一主题
收起左侧

51单片机WiFi遥控小车程序与APP

  [复制链接]
跳转到指定楼层
楼主
ID:378979 发表于 2018-7-25 15:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机WiFi遥控小车程序


单片机源程序如下:
  1. /********************************************************************/
  2. #include <REGX51.H>
  3. #define uint unsigned int
  4. #define uchar unsigned char   
  5. /*****************相关变量**************/
  6. uchar Receive,i,qj,yz,zz,ht;                              
  7. uint n;  
  8. uchar Recive_table[40];                  //用于接收wifi模块反馈到MCU上的数据  

  9. /*******************************************************************
  10. 名称:延时函数  作用:毫秒级延时,微妙级延时函数,为数据收发完成作等待.......  
  11. ********************************************************************/
  12. void ms_delay(uint t)
  13. {  
  14.         uint i,j;  
  15.         for(i=t;i>0;i--)   
  16.         for(j=110;j>0;j--);
  17. }   

  18. void us_delay(uchar t)
  19. {  
  20.         while(t--);
  21. }         

  22. void Uart_Init()                                //使用定时器1作为波特率发生器(STC89C52、STC89C51、AT89C51等均可)
  23. {  
  24.     TMOD = 0x20;
  25.     SCON = 0x50;                                 //设置串行方式
  26.     TH1 = 0xFD;                                         //波特率9600
  27.     TL1 = TH1;
  28.     PCON = 0x00;
  29.     EA = 1;                                                //总中断打开
  30.     ES = 1;                                                //开串口中断  
  31.     TR1 = 1;                                        //启动定时器1
  32. }

  33. /********************************************************************
  34. 名称:串口发送函数  功能:MCU向无线WIFI模块ESP8266发送数据  
  35. ********************************************************************/
  36. void Send_Uart(uchar value)
  37. {  
  38.         ES=0;                                                  //关闭串口中断  
  39.         TI=0;                                           //清发送完毕中断请求标志位   
  40.         SBUF=value;                                 //发送  
  41.         while(TI==0);                                 //等待发送完毕   
  42.         TI=0;                                           //清发送完毕中断请求标志位   
  43.         ES=1;                                                  //允许串口中断  
  44. }  

  45. /********************************************************************
  46. 名称:WIFI模块设置函数  作用: 启动模块,以便可以实现无线接入和控制  
  47. ********************************************************************/

  48. void ESP8266_Set(uchar *puf)         // 数组指针*puf指向字符串数组               
  49. {   
  50.         while(*puf!='\0')                    //遇到空格跳出循环  
  51.         {   
  52.                 Send_Uart(*puf);                  //向WIFI模块发送控制指令。   
  53.                 us_delay(5);   
  54.                 puf++;   
  55.         }  
  56.         us_delay(5);  
  57.         Send_Uart('\r');                         //回车  
  58.         us_delay(5);  
  59.         Send_Uart('\n');                           //换行  
  60. }

  61. /********************************************************************
  62. 名称:主函数  作用:程序的执行入口  
  63. ********************************************************************/

  64. void main()
  65. {         
  66.         Uart_Init();                                                                                        //波特率发生器
  67.         ms_delay(2000);
  68.         ESP8266_Set("AT+CWMODE=2");                                                         //设置路由器模式1 station,模式2 AP,模式3 station+AP混合模式   
  69.         ms_delay(2000);
  70. //        ESP8266_Set("AT+RST");                                                                         //重新启动wifi模块            
  71. //  ms_delay(2000);
  72.         ESP8266_Set("AT+CWSAP=\"wifi\",\"123456789\",11,4");          //AT+CWSAP="wifi","123456789",11,4  设置模块SSID:WIFI, PWD:密码 及安全类型加密模式(WPA2-PSK)
  73.         ms_delay(2000);
  74.         ESP8266_Set("AT+CIPMUX=1");                                                                //开启多连接模式,允许多个各客户端接入
  75.         ms_delay(2000);
  76.         ESP8266_Set("AT+CIPSERVER=1,5000");                                          //启动TCP/IP 实现基于网络//控制         ESP8266_Set("AT+CIPSERVER=1,5000");  
  77.         ms_delay(2000);
  78.         ESP8266_Set("AT+CIPSTO=0");                                                         //永远不超时
  79.         ES=1;                                                                                           //允许串口中断                
  80.         qj=1;
  81.         zz=1;
  82.         yz=1;
  83.         ht=1;
  84.         while(1)   
  85.         {   
  86.                 if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的数据为+IPD时进入判断控制0\1来使小灯亮与灭   
  87.                 {           
  88.                         if((Recive_table[9]=='G')&&(Recive_table[10]=='P'))            
  89.                         {      
  90.                                 if(Recive_table[15]=='0')      
  91.                                 {      
  92.                                         qj=0;                                                 //前进
  93.                                         zz=1;
  94.                                         yz=1;
  95.                                         ht=1;                                                                                           
  96.                                 }                                
  97.                                 else
  98.                                 if (Recive_table[15]=='1')      
  99.                                 {              
  100.                                         qj=1;                                                 
  101.                                         zz=1;
  102.                                         yz=1;
  103.                                         ht=0;                             // 后退
  104.                                 }
  105.                                 else
  106.                                 if (Recive_table[15]=='2')      
  107.                                 {              
  108. //                                        qj=1;                                                 //
  109.                                         zz=1;                                               
  110.                                         yz=0;                                                  //右转
  111. //                                        ht=1;                               
  112.                                 }
  113.                                 else
  114.                                 if (Recive_table[15]=='3')      
  115.                                 {              
  116. //                                        qj=1;                                                 //
  117.                                         zz=0;                                                 //左转
  118.                                         yz=1;                                                 
  119. //                                        ht=1;                               
  120.                                 }
  121.                                 else
  122.                                 if (Recive_table[15]=='4')      
  123.                                 {              
  124.                                         qj=1;                                                 //
  125.                                         zz=1;
  126.                                         yz=1;
  127.                                         ht=1;                               
  128.                                 }                                                                                            
  129.                         }  
  130.                 }
  131.                 if(qj==0)
  132.                 {
  133.                     if((zz==0)|(yz==0))
  134.                         {
  135.                           ;
  136.                         }
  137.                         else
  138.                         {
  139.                             P2=0x11;
  140.                         ms_delay(10);
  141.                             P2=0x22;
  142.                         ms_delay(10);
  143.                             P2=0x44;
  144.                         ms_delay(10);
  145.                             P2=0x88;
  146.                         ms_delay(10);
  147.                         }       
  148.                 }
  149.                 if(ht==0)
  150.                 {
  151.                     if((zz==0)|(yz==0))
  152.                         {
  153.                           ;
  154.                         }
  155.                         else
  156.                         {
  157.                             P2=0x88;
  158.                         ms_delay(10);
  159.                             P2=0x44;
  160.                         ms_delay(10);
  161.                             P2=0x22;
  162.                         ms_delay(10);
  163.                             P2=0x11;
  164.                         ms_delay(10);               
  165.                         }
  166.                 }
  167.                 if(zz==0)
  168.                 {
  169.                         if(ht==1)
  170.                         {
  171.                             P2=0x01;
  172.                         ms_delay(10);
  173.                             P2=0x02;
  174.                         ms_delay(10);
  175.                             P2=0x04;
  176.                         ms_delay(10);
  177.                             P2=0x08;
  178.                         ms_delay(10);
  179.                         }
  180.                         else
  181.                         {
  182.                                 P2=0x08;
  183.                         ms_delay(10);
  184.                             P2=0x04;
  185.                         ms_delay(10);
  186.                             P2=0x02;
  187.                         ms_delay(10);
  188.                             P2=0x01;
  189.                         ms_delay(10);
  190.                         }               
  191.                 }
  192.                 if(yz==0)
  193.                 {
  194.                         if(ht==1)
  195.                         {
  196.                             P2=0x10;
  197.                         ms_delay(10);
  198.                             P2=0x20;
  199.                         ms_delay(10);
  200.                             P2=0x40;
  201.                         ms_delay(10);
  202.                             P2=0x80;
  203.                         ms_delay(10);
  204.                         }
  205.                         else
  206.                         {
  207.                             P2=0x80;
  208.                                 ms_delay(10);
  209.                             P2=0x40;
  210.                         ms_delay(10);
  211.                             P2=0x20;
  212.                         ms_delay(10);
  213.                             P2=0x10;
  214.                         ms_delay(10);
  215.                         }       
  216.                 }                                                          
  217.         }   
  218. }   

  219. /*********************************************************************  
  220. 名称:串行通讯中断  作用:发送或接收结束后进入该函数,对相应的标志位软件清0,实现模块对数据正常的收发。  
  221. ********************************************************************/

  222. void Uart_Interrupt() interrupt 4         
  223. {   
  224.         static uchar i=0;  
  225.         if(RI==1)  
  226.         {   
  227.                 RI=0;   
  228.                 Receive=SBUF;                                                        //MCU接收wifi模块反馈回来的数据      
  229.                 Recive_table[i]=Receive;   
  230.                 if((Recive_table[i]=='\n'))
  231.                 {                     
  232.                         i=0;
  233.                 }   
  234.                 else i++;                                                                                  //遇到换行 重新装值  
  235.         }   
  236.         else TI=0;   
  237. }  
复制代码

所有资料51hei提供下载:
51单片机WiFi遥控小车及APP.rar (180.02 KB, 下载次数: 190)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:243748 发表于 2018-7-25 23:12 来自手机 | 只看该作者
这个遥控距离多远?
回复

使用道具 举报

板凳
ID:303383 发表于 2018-7-26 07:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

地板
ID:379565 发表于 2018-7-26 19:29 | 只看该作者
用那款芯片做的
回复

使用道具 举报

5#
ID:438107 发表于 2018-12-3 10:03 来自手机 | 只看该作者
wifi模块用esp8266可以吗
回复

使用道具 举报

6#
ID:444643 发表于 2018-12-13 21:22 | 只看该作者
为什么我把所有的东西都弄好后 烧入程序小车不动了。。。
回复

使用道具 举报

7#
ID:81138 发表于 2018-12-13 22:23 | 只看该作者
贴出来的代码全吗
回复

使用道具 举报

8#
ID:65956 发表于 2019-1-25 17:09 | 只看该作者
下载看看有没有帮助
回复

使用道具 举报

9#
ID:378645 发表于 2019-4-3 22:53 | 只看该作者
Vulcan_X 发表于 2018-12-3 10:03
wifi模块用esp8266可以吗

esp8266模块作为WIFI模块是可以的
回复

使用道具 举报

10#
ID:585455 发表于 2019-7-23 16:33 | 只看该作者
感謝分享好文
回复

使用道具 举报

11#
ID:34643 发表于 2020-3-27 07:42 | 只看该作者
这个遥控车的APP源码应该是出自“电子乐屋”。感觉还是比适用。
回复

使用道具 举报

12#
ID:723850 发表于 2020-4-7 10:23 | 只看该作者
感谢分享
回复

使用道具 举报

13#
ID:724172 发表于 2020-4-7 16:41 | 只看该作者
下载落来试下,初学者:什么都应该去试试
回复

使用道具 举报

14#
ID:65956 发表于 2020-4-8 11:28 | 只看该作者
要是加个原理图先给看看就更好了
回复

使用道具 举报

15#
ID:338224 发表于 2020-4-8 12:28 | 只看该作者
app自己做的吗?厉害!佩服!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表