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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2168|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91五月婷蜜桃综合 | 亚洲精品国产一区 | 91视视频在线观看入口直接观看 | 欧美99| 天天爱av | 国产一区二区三区www | 久久综合九色综合欧美狠狠 | 免费一级淫片aaa片毛片a级 | 成人在线播放网站 | 日韩和的一区二区 | 国产片侵犯亲女视频播放 | 日韩欧美国产电影 | 天天天操 | a视频在线观看 | 凹凸日日摸日日碰夜夜 | 免费高清成人 | 久久久久久久久久久久91 | 久久精品国产一区二区 | 亚洲一二三在线观看 | 久久精品免费看 | 特黄视频 | 91在线精品秘密一区二区 | 中文字幕一区二区三区不卡在线 | www.se91| 一区在线播放 | 91中文字幕在线 | 久久在线| 中文字幕亚洲无线 | 中文字幕第一页在线 | 久久久精品视频一区二区三区 | 亚洲国产自产 | 亚洲人成人网 | 欧美一级免费看 | 日韩在线免费视频 | 日韩精品久久一区 | 午夜影院网站 | 国产成人综合久久 | 黄色a视频| 自拍偷拍欧美 | 中文字幕1区 | 欧美日韩高清免费 |