3.15

来源:互联网 发布:把json数组放入map中 编辑:程序博客网 时间:2024/05/08 14:36
#include<reg52.h>
#include"./delay/delay.h"
#include"./lcd1602/lcd1602.h"
#include"./keyboard/keyboard.h"


#define Ubuf_Max 150   //´®¿Ú»º´æ³¤¶È


sbit Yellow_LED = P2^2; //LED1»ÆɫָʾµÆ
sbit Green_LED  = P2^1; //LED2ÂÌɫָʾµÆ
sbit Red_LED    = P2^0; //LED3ºìɫָʾµÆ




xdata unsigned char Uart_Buf[Ubuf_Max];  //´®¿ÚÊý¾Ý»º³åÇø
unsigned char cnt = 0; //´®¿Ú½ÓÊÕ×Ö·û´®µÄÆðʼ´æ´¢Î»ÖÃ
unsigned char Message[16];   //¶ÌÐÅÄÚÈÝ
unsigned char Phone_Num[11];  //µç»°ºÅÂë




void Uart_init();
void Wait_CREG();
void Module_init();






/***************************************************************/
void Send_Hex(unsigned char c)   //·¢ËÍÊ®Áù½øÖÆ×Ö·û
{
     ES = 0;
  SBUF = c;
  while(TI != 1);   //µÈ´ý·¢ËÍÍê±Ï
  TI = 0;
ES = 1;
}


void Send_ASCII(unsigned char *b)   //·¢ËÍ×Ö·û£¨ASCII£©
{
  ES = 0;
  for(b;*b != '\0';b++)
  {
   SBUF = *b;
   while(TI != 1);
   TI = 0;
     }
ES = 1;
}




/********************************************************/
void Send_Enter()      //·¢ËÍ»»Ðлسµº¯Êý
{
     Send_Hex(0x0D);
  Send_Hex(0x0A);
}


void Clear_Ubuf()   //Çå³ý´®¿Ú»º´æÊý¾Ý
{
     unsigned int k;


  for(k = 0;k < Ubuf_Max;k++)
  {
      Uart_Buf[k] = 0x30;
  }
  cnt = 0;
}




void Send_Message()   //·¢ËͶÌÐÅ
{
  unsigned char i;
  Send_ASCII("AT+CMGS=\"+86");
  for(i = 0;i < 11;i++)
  {
   Send_Hex(Phone_Num[i]);
     }
Send_ASCII("\"");
  Send_Enter();//·¢ËÍ»»Ðлسµ
  delay_ms(1000);
  Send_ASCII(Message);//·¢Ëͻظ´ÄÚÈÝ
//ÔÚÕâÀïÉèÖ÷¢ËÍÄÚÈÝ
  Send_Hex(0x1A);//·¢ËÍÊ®Áù½øÖÆÊý1A
  Send_Enter();//·¢ËÍ»»Ðлسµ
  delay_ms(5000);
  Clear_Ubuf();
}


/********************************************************/
void main()
{
  unsigned char num,j;
  unsigned char i = 0,k = 0;
  unsigned char Mes_dat,Pho_dat;
  bit MOP_flag = 0;

     InitLcd1602(); 
     Uart_init();
  Wait_CREG();
  Module_init();

  Yellow_LED = 0;
  Green_LED = 0;
  Red_LED = 0;
 
  while(1)
{
   LcdShowStr(0,0,"Mes:");
   LcdShowStr(0,1,"Tel:");
   num = KeyPro();
   if(num != 0xff)
{
       if((num >= 0)&&(num <= 9))
{
  if(MOP_flag == 0)
{
      Message[i] = num + '0';
      Mes_dat = num + '0';
                       LcdShowDat(i+4,0,Mes_dat);
                       i++;
                   }
                   else 
{
  Phone_Num[k] = num + '0';
  Pho_dat = num + '0';
  LcdShowDat(k+4,1,Pho_dat);
                       k++;
                   }  
              }
else if(num == '+')
{
  if(MOP_flag == 0)
{
       MOP_flag = 1;
}
else
{
   MOP_flag = 0;
                   }
              }
else if(num == '=')
{
  Send_Message();
  MOP_flag = 0;
  delay_s(2);
                   LcdFullClear();
  LcdShowStr(0,0,"Send Succeed");  
  delay_s(2);
  LcdFullClear();
  LcdShowStr(0,0,"Mes:");
            LcdShowStr(0,1,"Tel:");
  i = 0;
  k = 0;
  for(j = 0;j < 16;j++)
  {
   Message[j] = '\0';
                   }
for(j = 0;j < 16;j++)
  {
   Phone_Num[j] = '\0';
                   }
              }
else if(num == '.')
{
  LcdFullClear();
  LcdShowStr(0,0,"Mes:");
            LcdShowStr(0,1,"Tel:");
  i = 0;
  k = 0;
  MOP_flag = 0;
  for(j = 0;j < 16;j++)
  {
   Message[j] = '\0';
                   }
for(j = 0;j < 16;j++)
  {
   Phone_Num[j] = '\0';
                   }
              }
else 
  break;
}
     }



/********************************************************/


void Uart_init() //´®¿Ú³õʼ»¯
{   
     SCON = 0x50;  //ÉèÖô®¿Ú¹¤×÷·½Ê½
  TMOD |= 0x20;
  TH1 = 0xFD;   //²¨ÌØÂÊ£º9600
  ET1 = 0;
  EA = 1;
  TR1 = 1;
  ES = 1;
}


void Wait_CREG() //µÈ´ýÄ£¿é×¢²á³É¹¦
{
     unsigned char i;
  unsigned int k;

  i = 0;
  Clear_Ubuf();
  while(i == 0)
{
   Clear_Ubuf();
   Send_ASCII("AT+CREG?");
   Send_Enter();
   delay_ms(1000);
   for(k = 0;k < Ubuf_Max;k++)
   {
  if(Uart_Buf[k] == ':')
{
   if((Uart_Buf[k+4] == '1')||(Uart_Buf[k+4] == '5'))
{
  i = 1;
  break;
                    }
               }
          }
     }
}


void Module_init()   // Ä£¿é³õʼ»¯
{
     Send_ASCII("ATE0");   //È¡Ïû»ØÏÔ
  Send_Enter();
     delay_ms(500);
  Send_ASCII("AT+CNMI=2,2");   //¶ÌÐŵ½À´Ê±Ö±½Óͨ¹ý´®¿ÚÊä³ö£¬²»×ö´æ´¢
  Send_Enter();
     delay_ms(500);
  Send_ASCII("AT+CMGF=1");    //TEXTģʽ
  Send_Enter();
     delay_ms(500);





/***************************************************************/
void  InterruptUART() interrupt 4
{
  ES = 0;       //¹Ø´®¿ÚÖжϣ¬·ÀÖ¹ÖжÏǶÌ×
  if(RI)
{
   RI = 0;
   Uart_Buf[cnt] = SBUF;

   cnt++;
   if(cnt > Ubuf_Max)
{
  cnt = 0;
          }
     }
if(TI)
{
   TI = 0;
     }
ES = 1;
}
0 0