找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2615|回复: 1
收起左侧

51单片机结合ESP8266WiFi模块控制步进电机正反转三圈,但程序不知道有什么问题?

[复制链接]
ID:676885 发表于 2020-4-28 16:49 | 显示全部楼层 |阅读模式
10黑币
利用51单片机和光敏模块 、ESP8266WiFi模块结合,制作的智能窗帘,控制步进电机正反转三圈,但程序不知道有什么问题,可以正常编译,但下载到单片机上,手机显示无法连接,之前一直都是可以连接成功的。麻烦哪位大神可以帮忙看一下?

  1. #include "reg51.h"
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. //单片机的引脚定义
  5. sbit gm=P1^1;
  6. sbit wd1=P1^2;
  7. sbit wd2=P1^3;
  8. sbit zsd1=P0^0;
  9. sbit zsd2=P0^1;


  10. //步进电机的正反转代码
  11. unsigned char kongzhi=0;
  12. unsigned char code RUN1[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//正转
  13. unsigned char code RUN2[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//反转

  14. //初始化程序
  15. void chushihua()
  16. {
  17. IE=0x90;
  18. SCON=0x50;
  19. TMOD=0x20;   //
  20. TH1=0xfd;   //波特率设置为9600
  21. TL1=0xfd;
  22. TCON=0x40;
  23. TR1=1;
  24. ES = 1;          //开串行口中断
  25. EA=1;          //开总中断
  26. }



  27. //串行口连续发送char型数组,遇到终止号/0将停止
  28. void fasongshuju(uchar *str)
  29. {
  30.         while(*str!='\0')
  31.         {
  32.                 SBUF=*str;
  33.                 while(!TI);//等待发送完成信号(TI=1)出现
  34.                 TI=0;
  35.                 str++;
  36.         }
  37. }




  38. //延时函数
  39. void yanshi(uint ttt)
  40. {

  41.     while(ttt--);
  42. }


  43. //ESP8266上电初始化
  44. void wifichushihua()
  45. {
  46. fasongshuju("AT+CIPMUX=1\r\n");
  47.         yanshi(50000);
  48.         fasongshuju("AT+CIPSERVER=1,8080\r\n");
  49. }

  50.                                                                                   JC


  51. /***********延时函数***********/
  52. void delay(unsigned int t)
  53. {                           
  54.    unsigned int k;
  55.    while(t--)
  56.    {
  57.      for(k=0; k<60; k++)//用for的空循环延长程序的执行时间
  58.      { }
  59.    }
  60. }


  61. //步进电机驱动         正转
  62. void  zz(uchar n)
  63. {
  64.    unsigned char i,j;
  65.             for(j=0;j<5*n;j++)
  66.       for (i=0; i<8; i++)      
  67.         {
  68.           P2 = RUN1[i]&0x1f;     //取数据
  69.           delay(2);             //调节转速
  70.                 zsd1=0;
  71.                 zsd2=1;

  72.         }
  73.   }
  74.   //步进电机驱动  反转
  75. void  fz()
  76. {
  77.    unsigned char i,j;
  78.              for(j=0;j<5*n;j++)
  79.       for (i=0; i<8; i++)      
  80.         {
  81.           P2 = RUN2[i]&0x1f;     //取数据
  82.           delay(2);             //调节转速
  83.                   zsd1=1;
  84.                  zsd2=0;

  85.         }
  86.   }
  87.                           //传感器自动控制的
  88.                    void zidong()
  89.          {

  90.                                     if(gm==0)//有光的时候电机正转
  91. {
  92. zz(N);

  93. }

  94. if(gm==1)//无光的时候电机反转
  95. {
  96. fz(N);

  97. }                                                                                                                                                                                                                                              
  98.         }                          




  99. void main()
  100. {
  101.                 yanshi(50000);
  102.         yanshi(5000);
  103. chushihua();
  104. wifichushihua();
  105.         uchar N=3
  106.     while(1)
  107.         {

  108.          if(kongzhi==1)
  109.          {
  110.           zz(N);
  111.          }

  112.           if(kongzhi==2)
  113.          {
  114.       fz(N);
  115.          }
  116.                    if(kongzhi==3)
  117.          {
  118.           P2=0xff;
  119.                            zsd1=1;
  120.                  zsd2=1;
  121.        
  122.          }                                                                                                                                                                                                                                
  123.                             if(kongzhi==4)
  124.          {
  125.       zidong();


  126.          }

  127.          if(wd1==0||wd2==0)
  128.          {
  129.       kongzhi=3;
  130.          }
  131.        
  132.         }
  133. }




  134. /*
  135.   串口服务子函数
  136. */
  137. void time() interrupt 4
  138. {
  139.                   if(RI)
  140. {
  141. RI=0;  //接收中断信号清零,表示将继续接收

  142. switch(SBUF)
  143. {
  144. case 'a':kongzhi=1;        break;//接收到安卓端的'a'字符



  145. case 'b':kongzhi=2;        break;//接收到安卓端的'b'字符

  146. case 'c':kongzhi=3;break;//接收到安卓端的'c'字符

  147. case 'd':kongzhi=4;break;//接收到安卓端的'd'字符
  148. }                                                                                                          
  149. }
  150. }

复制代码


回复

使用道具 举报

ID:553861 发表于 2021-3-15 20:05 来自手机 | 显示全部楼层
楼主,请问你这个问题解决了吗 我也遇到这个问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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