利用51单片机和光敏模块 、ESP8266WiFi模块结合,制作的智能窗帘,控制步进电机正反转三圈,但程序不知道有什么问题,可以正常编译,但下载到单片机上,手机显示无法连接,之前一直都是可以连接成功的。麻烦哪位大神可以帮忙看一下?
- #include "reg51.h"
- #define uint unsigned int
- #define uchar unsigned char
- //单片机的引脚定义
- sbit gm=P1^1;
- sbit wd1=P1^2;
- sbit wd2=P1^3;
- sbit zsd1=P0^0;
- sbit zsd2=P0^1;
- //步进电机的正反转代码
- unsigned char kongzhi=0;
- unsigned char code RUN1[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//正转
- unsigned char code RUN2[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//反转
- //初始化程序
- void chushihua()
- {
- IE=0x90;
- SCON=0x50;
- TMOD=0x20; //
- TH1=0xfd; //波特率设置为9600
- TL1=0xfd;
- TCON=0x40;
- TR1=1;
- ES = 1; //开串行口中断
- EA=1; //开总中断
- }
- //串行口连续发送char型数组,遇到终止号/0将停止
- void fasongshuju(uchar *str)
- {
- while(*str!='\0')
- {
- SBUF=*str;
- while(!TI);//等待发送完成信号(TI=1)出现
- TI=0;
- str++;
- }
- }
- //延时函数
- void yanshi(uint ttt)
- {
- while(ttt--);
- }
- //ESP8266上电初始化
- void wifichushihua()
- {
- fasongshuju("AT+CIPMUX=1\r\n");
- yanshi(50000);
- fasongshuju("AT+CIPSERVER=1,8080\r\n");
- }
- JC
- /***********延时函数***********/
- void delay(unsigned int t)
- {
- unsigned int k;
- while(t--)
- {
- for(k=0; k<60; k++)//用for的空循环延长程序的执行时间
- { }
- }
- }
- //步进电机驱动 正转
- void zz(uchar n)
- {
- unsigned char i,j;
- for(j=0;j<5*n;j++)
- for (i=0; i<8; i++)
- {
- P2 = RUN1[i]&0x1f; //取数据
- delay(2); //调节转速
- zsd1=0;
- zsd2=1;
- }
- }
- //步进电机驱动 反转
- void fz()
- {
- unsigned char i,j;
- for(j=0;j<5*n;j++)
- for (i=0; i<8; i++)
- {
- P2 = RUN2[i]&0x1f; //取数据
- delay(2); //调节转速
- zsd1=1;
- zsd2=0;
- }
- }
- //传感器自动控制的
- void zidong()
- {
- if(gm==0)//有光的时候电机正转
- {
- zz(N);
- }
- if(gm==1)//无光的时候电机反转
- {
- fz(N);
- }
- }
- void main()
- {
- yanshi(50000);
- yanshi(5000);
- chushihua();
- wifichushihua();
- uchar N=3
- while(1)
- {
- if(kongzhi==1)
- {
- zz(N);
- }
- if(kongzhi==2)
- {
- fz(N);
- }
- if(kongzhi==3)
- {
- P2=0xff;
- zsd1=1;
- zsd2=1;
-
- }
- if(kongzhi==4)
- {
- zidong();
- }
- if(wd1==0||wd2==0)
- {
- kongzhi=3;
- }
-
- }
- }
- /*
- 串口服务子函数
- */
- void time() interrupt 4
- {
- if(RI)
- {
- RI=0; //接收中断信号清零,表示将继续接收
- switch(SBUF)
- {
- case 'a':kongzhi=1; break;//接收到安卓端的'a'字符
- case 'b':kongzhi=2; break;//接收到安卓端的'b'字符
- case 'c':kongzhi=3;break;//接收到安卓端的'c'字符
- case 'd':kongzhi=4;break;//接收到安卓端的'd'字符
- }
- }
- }
复制代码
|