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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2967|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機發(fā)送數(shù)據(jù)給手機

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:640802 發(fā)表于 2019-12-28 15:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
現(xiàn)做了一個用手機控制51單片機的窗簾自動控制系統(tǒng),其中在手機手機上分為自動模式和控制模式。
自動模式下單片機可以根據(jù)光敏傳感器模塊來打開或關(guān)閉窗簾和LED燈,其中還要顯示當(dāng)前窗簾和LED燈的狀態(tài)。
發(fā)送到手機上采用的是ES8266。當(dāng)時預(yù)想是根據(jù)光敏傳感器模塊來判斷燈和窗簾的狀態(tài),但是一旦加上發(fā)送后自動模式就會失去控制。
代碼如下:
/*
  通信波特率: 9600Mbps
  引腳定義:         led1=2.0               
*/
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

/*以下是51單片機的晶振大小        */
#define FOSC_110592M

/*引腳定義 */
sbit led=P1^1;//燈
sbit guang=P1^0;//光敏傳感器


sbit xianwei1=P1^2;        //限位位動開關(guān)
sbit xianwei2=P1^3;

sbit led1=P0^0;// 第一個電機轉(zhuǎn)動提示燈
sbit led2=P0^1;//

unsigned char Key_Value=0;
unsigned char code RUN1[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//正轉(zhuǎn)
unsigned char code RUN2[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//反轉(zhuǎn)


//變量定義
uchar cankao;
uchar shezhi;//燈亮滅程度設(shè)置
uchar count;


char *strx=0;//
unsigned char x=1,y=0,Rxbuff[50],Rxnum;
unsigned char   Tx_Buf[1];
unsigned char LE,aa;


//串行口連續(xù)發(fā)送char型數(shù)組,遇到終止號/0將停止
void Uart1Sends(uchar *str)
{
        while(*str!='\0')
        {
                SBUF=*str;
                while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)
                TI=0;
                str++;
        }
}
/******延時函數(shù)****************/
void delaybj(unsigned int t)
{                           
   unsigned int k;
   while(t--)
   {
     for(k=0; k<60; k++)//用for的空循環(huán)延長程序的執(zhí)行時間
     { }
   }
}

void delayms(unsigned int x)
{
        unsigned int i;
        while(x--)
                for(i=125;i>0;i--);
}

void Clear_Buffer(void)//清空緩存
{
                int i;
       
                for(i=0;i<50;i++)
                Rxbuff[i]=0;//
                Rxnum=0;

}

void UART_send_byte(char dat)//發(fā)送一個字節(jié)
{
        SBUF = dat;
        while (TI == 0);
        TI = 0;
}

void Send_Str(unsigned char *buf) // 發(fā)送字符串
{
        while (*buf != '\0')
        {
                UART_send_byte(*buf++);
        }
}

void Send_DATA(uchar *buffer) //發(fā)送數(shù)據(jù)
{
         //Uart1Sends("AT+CIPSEND=0,1\r\n");
             Send_Str("AT+CIPSEND=0,1\r\n");
                delayms(300);
            Send_Str(buffer);//發(fā)送數(shù)據(jù)
        //        Uart1Sends(buffer);
            delayms(100);
                  
                Clear_Buffer();         
}

//步進(jìn)電機驅(qū)動         正轉(zhuǎn)
void  motor_ffw()
{
   unsigned char i;

      for (i=0; i<8; i++)       //一個周期轉(zhuǎn)3.75*8=30度
        {
          P2 = RUN1[i]&0x1f;     //取數(shù)據(jù)
          delaybj(2);             //調(diào)節(jié)轉(zhuǎn)速

        }
  }
  //步進(jìn)電機驅(qū)動  反轉(zhuǎn)
void  motor_ffz()
{
   unsigned char i;

      for (i=0; i<8; i++)       //一個周期轉(zhuǎn)3.75*8=30度
        {
          P2 = RUN2[i]&0x1f;     //取數(shù)據(jù)
          delaybj(2);             //調(diào)節(jié)轉(zhuǎn)速

        }
  }



void guangkong() //光敏控制
         {

if(guang==1)//有光的時候電機轉(zhuǎn)動
{
   motor_ffz();
          led1=1;
                  led2=0;
                  shezhi=10;
               
}

if(guang==0)//無光的時候電機關(guān)閉          
{
      motor_ffw();
          led1=0;
                  led2=1;
                  shezhi=0;

          LE=0;                                 //發(fā)送數(shù)據(jù)到手機
          Tx_Buf[0]=LE+0x30;
      Send_DATA(Tx_Buf);
}
        }



//串口初始化函數(shù)
void init()       
{
TMOD=0x21;
SM0=0;
SM1=1;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
IE=0X82;
cankao=10; //設(shè)置的參考電平時間
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
PCON=0x00;
IP=0x10;
TR1=1;
ES = 1;
EA=1;

}

void fs()
{
if(led1==0)
{
//        
//                          LE=led1;
//          Tx_Buf[0]=LE+0x30;
//     Send_DATA(Tx_Buf);


}

}



void delay(uint ttt)
{
while(ttt--);
}               


//ESP8266上電初始化
void esp8266_init()
{
        Uart1Sends("AT+CIPMUX=1\r\n");
        delay(50000);
Uart1Sends("AT+CIPSERVER=1,8080\r\n");
}


//主函數(shù)
void main()
{

delay(50000);
delay(500);
init();
esp8266_init();
          
while(1)
{
         
                  if(Key_Value==1)//正轉(zhuǎn)
         {
          motor_ffw();
         }

          if(Key_Value==2)//反轉(zhuǎn)
         {
          motor_ffz();
         }

                   if(Key_Value==3)//停止電機
         {
          P2=0xf0;
         // P0=0xff;
         }       
         
         if(xianwei1==0||xianwei2==0)
         {
         Key_Value=3;
         }       
               



    if(shezhi<0)//調(diào)光亮度極限值的控制
     {
      shezhi=1;
      }
     if(shezhi>10)
      {
      shezhi=10;
      }


          if(Key_Value==4)//光控
         {
                        
                         guangkong();

                       
                      }
       
                        }
                 }
void timer() interrupt 1        //PWM占空比調(diào)節(jié)服務(wù)函數(shù)
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
if (count==shezhi)
        {
              led=1;
        }
        count++;
        if(count ==cankao)
        {
               count=0;
               if(shezhi!=0)
                led=0;
        }
}         

//串口服務(wù)的函數(shù)
void time() interrupt 4
{                                                                                                                                                                                             
//手機控制的數(shù)據(jù)

if(RI)
{
RI=0;

switch(SBUF)
{
case 'a':shezhi++;break;//燈亮度加
case 'b':shezhi--;break; //        燈亮度減
case 'c':shezhi=10;break;//         打開燈
case 'd':shezhi=0;break; //         關(guān)閉燈

case 'e':Key_Value=1;led1=0;led2=1;break;  //正轉(zhuǎn)
case 'f':Key_Value=2;led1=1;led2=0;break; //反轉(zhuǎn)
case 'i':Key_Value=3;led1=1;led2=1;break;        //停止轉(zhuǎn)動

case 'g':led=1;Key_Value=3;led1=1;led2=1;break; //手動模式

case 'h':led=1;Key_Value=4;break;        //自動模式

                  
}


}
}
         
  問一下,發(fā)送數(shù)據(jù)應(yīng)該怎么放?,求大佬講一下               


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

使用道具 舉報

沙發(fā)
ID:617449 發(fā)表于 2019-12-28 20:50 | 只看該作者
你好!
1、中斷不能有沖突
2、初始化的AT指令要對
3、程序控制部分的命令要對
4、自動和手動,設(shè)置一個標(biāo)志位
回復(fù)

使用道具 舉報

板凳
ID:640802 發(fā)表于 2019-12-29 15:04 | 只看該作者
來51學(xué)習(xí)1 發(fā)表于 2019-12-28 20:50
你好!
1、中斷不能有沖突
2、初始化的AT指令要對

代碼上是這些問題嗎?
回復(fù)

使用道具 舉報

地板
ID:358382 發(fā)表于 2020-4-24 16:40 | 只看該作者
cankao和count的初始值是多少都沒設(shè)置出來
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产1区在线 | 一级中国毛片 | 日韩另类 | 国产精品美女久久久久久久网站 | 888久久久| 一二区视频 | 免费在线观看一区二区三区 | 一区日韩 | www,黄色,com| 国产精品久久久久久久久久免费 | 欧美日韩18 | 日本亚洲精品成人欧美一区 | 亚洲国产免费 | 中文字幕av在线播放 | 欧美日韩免费在线 | 亚洲精品久久久一区二区三区 | 国产成在线观看免费视频 | 成人免费片| 亚洲啊v在线 | 亚洲一区精品在线 | 国产精品久久久久久久久婷婷 | 亚洲啊v在线 | 美女久久久久 | 在线成人一区 | www.4567| 久久亚洲国产精品日日av夜夜 | 久草免费视 | 亚洲h在线观看 | 一级黄色毛片a | 国产精品成人在线 | 天天久久| 亚洲欧美一区二区三区国产精品 | 中国av在线免费观看 | 精品久久久久久久 | 最新国产福利在线 | 亚洲一区二区不卡在线观看 | 国产日韩欧美在线观看 | 久久九七| 精品久久电影 | 中文字幕不卡 | 国产精品视频999 |