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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

測距通過GSM模塊傳輸,基本實現,能幫我實現打電話控制程序開始運行嗎?

[復制鏈接]
跳轉到指定樓層
樓主
ID:409166 發表于 2019-12-5 07:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大神們好,我做了一個液位計,通過GSM模塊傳輸距離,可以實現把測得的距離通過GSM模塊發到相應手機上,現在的問題是:
1、需要打電話給GSM模塊,然后控制程序開始測距再發距離到手機,可這一步就無法實現了‘
2、個人感覺出問題的程序在下面這里:

                           if(strstr(Buffer_Uart0_Rec,"RING")!=NULL)         //停在這里等RING 出現         (發打電話控制)
                           {
                                     Uart1Sends("ATH\r\n");        //扣掉來電  ,
                                        DelaySec(1);
                                        clear_rec_data();
                                sendflag=1;
                           }
電話打通模塊后,扣掉來電無法實現。
3、記得3年前這個程序是我自己調試成功的,現在居然不行了,我是在沒法,急著用,請大什么幫著想想辦法,謝謝!


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

使用道具 舉報

沙發
ID:409166 發表于 2019-12-5 07:12 | 只看該作者
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include <string.H>
#define uchar unsigned char
#define uint unsigned int

//以下是板子上LED的配置,把Px_x改成自己對應的腳。
//以下是你的51單片機的晶振大小
//#define FOSC_110592M
//#define FOSC_12M
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;

sbit  ECHO=P2^4; //RX
sbit  TRIG=P2^5; //TX

  
//以下是開機后發送到手機的內容,發送的號碼在程序中修改。       
uint rec_data_len_uart=0;    //標記Buffer_Uart0接收數組
uchar idata Buffer_Uart0_Rec[25]={0};                 //Uart0中斷接收數組

uchar a[4];               
uint  time=0;
uint S=0;
bit  flag =0;

uint Count()
{
         uint num;
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
         num=time/53;     
         return num;
}

void zd0() interrupt 1  
{
  flag=1;
}


void  StartModule()   
  {
   TRIG=1;
   _nop_();  _nop_();    _nop_();    _nop_();    _nop_();
   _nop_();   _nop_();    _nop_();    _nop_();   _nop_();
   _nop_();   _nop_();    _nop_();   _nop_();   _nop_();
   _nop_();   _nop_();   _nop_();   _nop_();   _nop_();
   _nop_();
  TRIG=0;
  }


void UartInit(void)               
{
        //PCON &= 0x7F;       
        SCON = 0x50;       
        TMOD &= 0x00;       
        TMOD |= 0x21;       
        TL1 = 0xFD;       
        TH1 = 0xFD;       
        TH0=0;
        TL0=0;         
        ET0=1;
//        ET1 = 1;       
        TR1 = 1;
        EA=1;
        ES=1;
}

bit hand(unsigned  char *ptr)
{
        if(strstr(Buffer_Uart0_Rec,ptr)!=NULL)
                return 1;
        else
                return 0;
}
void clear_rec_data()
{
        uchar i,temp_len;
        temp_len=strlen(Buffer_Uart0_Rec);
        if(temp_len>25)
        {
                temp_len=25;
        }
        for(i=0;i<temp_len;i++)
        {
                Buffer_Uart0_Rec[i]='\0';       
        }
        rec_data_len_uart=0;
}


/*串行通訊中斷,收發完成將進入該中斷*/
void Serial_interrupt() interrupt 4
{
    uchar temp_rec_data_uart0;       
        temp_rec_data_uart0 = SBUF;//讀取接收數據               
        RI=0;//接收中斷信號清零,表示將繼續接收                       
        Buffer_Uart0_Rec[rec_data_len_uart]=temp_rec_data_uart0;        //接收數據
        rec_data_len_uart++;
        if(rec_data_len_uart>24)
        {
                rec_data_len_uart=0;         //從頭開始接收數據
        }       
  }


void Uart1Send(uchar c)
{
        SBUF=c;
        while(!TI);          //等待發送完成信號(TI=1)出現
        TI=0;       
}
//串行口連續發送char型數組,遇到終止號/0將停止
void Uart1Sends(uchar *str)
{
        while(*str!='\0')
        {
                SBUF=*str;
                while(!TI);        //等待發送完成信號(TI=1)出現
                TI=0;
                str++;
        }
}

void send(void)
{
        uchar j;
        S=Count();
        a[0]=(S/100)+'0';
        a[1]=(S%100/10)+'0';
        a[2]=(S%10)+'0';
        a[3]='\0';
        for(j=0;a[j]!='\0';j++)
        {
                SBUF=a[j];
                while(!TI);
                TI=0;
        }
       
}


//延時函數大概是1s鐘,不過延時大的話不準...
void DelaySec(int sec)
{
        uint i , j= 0;
        for(i=0; i<sec; i++)
        {
                for(j=0; j<65535; j++)
                {       
                }
        }
}





void main()
{
        uchar i = 0;
        bit sendflag=0;
        UartInit();
        DelaySec(10);
        P14=1;  
   
               Uart1Sends("AT\r\n");
                   DelaySec(2);//延時3秒
                   while(!hand("OK"));
                   clear_rec_data();

                   Uart1Sends("AT+CMGD=1,4\r\n"); //清除所有短信
                  DelaySec(2);//延時3秒
                  while(!hand("OK"));
                  clear_rec_data();
         
                   Uart1Sends("AT+CMGF=1\r\n");          //設置為文本模式
                   DelaySec(2);//延時3秒
                   while(!hand("OK"));
                   clear_rec_data();
         
                   Uart1Sends("AT+CNMI=2,1\r\n"); //設置來消息提示         "+CMTI"
                   DelaySec(2);//延時3秒
                   while(!hand("OK"));
                   clear_rec_data();
          
                   Uart1Sends("AT+CLIP=1\r\n");          //設置來電提示 RING
                   DelaySec(2);//延時3秒
                   while(!hand("OK"));
                   clear_rec_data();
           DelaySec(2);//延時3秒
       
        while (1)
    {          
                //if(strstr(Buffer_Uart0_Rec,"CMTI")!=NULL)         //停在這里等        CMTI 出現  (發短信控制)
                        //{  
                    //clear_rec_data();
                        //Uart1Sends("AT+CMGR=1\r\n");
                    //DelaySec(2);//延時3秒
                    //if(strstr(Buffer_Uart0_Rec,"open")!=NULL)
       
                           if(strstr(Buffer_Uart0_Rec,"RING")!=NULL)         //停在這里等RING 出現         (發打電話控制)
                           {
                                     Uart1Sends("ATH\r\n");        //摳掉來電
                                        DelaySec(1);
                                        clear_rec_data();
                                sendflag=1;
                           }
       
                if (sendflag==1)
                {
                        sendflag=0;
                    StartModule();
                    while(!ECHO);  
                    TR0=1;      
                    while(ECHO);   
                    TR0=0;   
           // S=Count();
                clear_rec_data();               
                        Uart1Sends("AT+CSCS=\"GSM\"\r\n");
                        DelaySec(1);
                        Uart1Sends("AT+CMGF=1\r\n");
                        DelaySec(1);
                        Uart1Sends("AT+CSCA?\r\n");
                        DelaySec(1);
                        Uart1Sends("AT+CSMP=17,167,0,241\r\n");
                        DelaySec(1);
                        Uart1Sends("AT+CMGS=\"13012345678\"\r\n");
                        DelaySec(1);
                        send();
                        Uart1Send(0x1a);
                        DelaySec(10);
                        clear_rec_data();
                    DelaySec(1);//延時3秒
                    Uart1Sends("AT+CMGD=1,4\r\n"); //清除所有短信
                            DelaySec(2);//延時3秒
                    clear_rec_data();
                }
    }
}
回復

使用道具 舉報

板凳
ID:409166 發表于 2019-12-5 14:58 | 只看該作者
有大神幫忙嗎?我出500個黑幣,真的,只要幫我調試成功就一定付。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.youjizz.com日韩 | 日韩午夜网站 | 亚洲va国产日韩欧美精品色婷婷 | 欧美日韩综合精品 | 久热中文字幕 | 国产精品美女在线观看 | 欧美精品一区二区三区蜜桃视频 | 一区二区三区四区免费在线观看 | 欧美午夜精品久久久久免费视 | 日本高清在线一区 | 国产精品视频免费看 | 国产成人精品一区二区三区四区 | 日韩欧美国产一区二区三区 | 欧美区日韩区 | 国产成人一区二 | 在线视频91 | 久久国内 | 中文字幕乱码一区二区三区 | 欧美性高潮 | 午夜免费视频 | 天天综合天天 | 一区二区三区视频在线观看 | 久久成人免费视频 | 亚洲精品一区二区三区蜜桃久 | 在线91 | 久久久久久国产精品 | 羞羞视频网站免费看 | 99在线资源 | 亚洲精品一区在线 | 97人人澡人人爽91综合色 | 国产精品毛片久久久久久 | 一区二区三区日韩精品 | 日韩av福利在线观看 | 九九亚洲| 成人欧美一区二区三区1314 | 欧美在线观看一区 | 成人精品在线观看 | 免费成人在线网站 | 国产欧美日韩二区 | 免费看黄色视屏 | 亚洲第一黄色网 |