⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsm.c

📁 这是一个完整的工程文件:简易手机模型
💻 C
📖 第 1 页 / 共 3 页
字号:
      {
       case 0xa:
        Display(phonebookadd,0x81,0,14);
        key7279 = 0xff;
        while((key7279 >9)&&(key7279 !=0xf));
        if(key7279 <0xa);
        break;
       case 0xb:
        Display(phonebookmodefy,0x81,0,14);
        break;
       case 0xf:
        break;
       default:
        break;    
      }
  key7279 = 0xff;    
 } 
/*************************************************
- 函数名称 : void messagemenu(void)
- 函数说明 : 短信菜单
- 输入参数 : 无
- 输出参数 : 无
**********************************************/
void messagemenu(void)
 {
  uchar message[] = "信息(E):";
  uchar messagesend[] = "发送信息(A):";
  uchar messagenew[] = "阅读新信息(B):";
  uchar destphone[] = "对方电话号码:";
  uchar i=0,msg[48],msg1[] = "短信内容:";
  uchar msgsend[] = "正在发送...";
  uchar msgwait[] = "请稍侯!";
  uchar msgsuccess[] = "消息发送成功!";
  uchar msghint[] = "   F结束,A继续";
  Display(message,0x80,0,10);
  Display(messagesend,0x91,0,12);
  Display(messagenew,0x89,0,14);
  Display(retu,0x99,0,8);
  key7279 = 0xff;
  while((key7279!=0xa)&&(key7279!=0xb)&&(key7279!=0xf));
  lcdclean(1,4); 
  switch (key7279)
    {//11111111111111111111111
     case 0xa:                        //发送短信
       while(key7279==0xa)
         {//222222222222222222222222
          Display(msg1,0x81,0,9);
          key7279=0xff;
          while(key7279==0xff);
          while(key7279!=0xf)         //编写短信内容
            {//33333333333333333
             if(key7279<0xa) msg[i] = key7279+48;
             else msg[i] = key7279+55;
             if(i<16)       Display(msg,0x90,0,i+1);
             else if(i<32)  Display(msg,0x88,16,i+1);
             else if(i<48)  Display(msg,0x98,32,i+1);
             key7279 = 0xff;
             while(key7279==0xff);
             i++;
            }//333333333333333
          msg[i] = '\0';  
          i=0; 
          lcdclean(1,4); 
          Display(destphone,0x81,0,13);
          key7279=0xff;
          while(key7279!=0xf)        //输入接收方电话号码
            {//3333333333333333
             if(key7279<0xa)
               {//444444444444444444
                phone[i] = key7279+48;
                if(i<16)       Display(phone,0x90,0,i+1);
                else if(i<32)  Display(phone,0x88,16,i+1);
                else if(i<48)  Display(phone,0x98,32,i+1);
                i++;
               }//44444444444444
             else if(key7279==0xc) 
               {//444444444444444
                i-=2;
                if(i<16)       
                  {//55555555555555
                   lcdclean(2,2); 
                   Display(phone,0x90,0,i+1);
                  }//5555555555555555
                else if(i<32)
                  {//555555555555555
                   lcdclean(3,3); 
                   Display(phone,0x88,16,i+1);
                  }  //555555555555555
                else if(i<48)
                  {//55555555555
                   lcdclean(4,4); 
                   Display(phone,0x98,32,i+1);
                  } //5555555555555
                i++;  
               }//44444444444444
             key7279 = 0xff;
             while(key7279==0xff); 
            }//33333333333333
          phone[i] = '\0';
          i=0;
          while(rdata[2]!='>') //发送接收方电话号码,检查是否允许发送内容
            {//333333333333333
             while(RECV(rdata)==0) CMGS(phone); //发送对方电话号码
            }//333333333333333
          lcdclean(3,4);
          Display(msgsend,0x88,0,12); 
          Display(msgwait,0x9a,0,7);
          while(RECV(rdata)==0) //发送短信内容,并收到应答
           {//33333333333333333
            while(msg[i]!= '\0') 
              {//4444444444
               SEND(msg[i]);
               i++;
              }//4444444444444
            i=0;
            SEND(26);        //发送结束符
           }//3333333333333333
          lcdclean(3,4);
          Display(msgsuccess,0x89,0,13); 
          Display(msghint,0x98,0,14);
          key7279=0xff;
          while((key7279==0xff)&&(key7279!=0xf)&&(key7279!=0xa));
          lcdclean(1,4);
        }//22222222222222222222
       break;
     case 0xb:
       CMGR(msgindex,1);
       while(RECV1(rdata)==0) CMGR(msgindex,1); //检查是否有新收到的短信
       break;  
     case 0xf:
       break;  
    }
 }
/*************************************************
- 函数名称 : void callmenu(void)
- 函数说明 : 呼叫菜单
- 输入参数 : 无
- 输出参数 : 无
**********************************************/
void callmenu(void)
 {
  uchar  call[] ="呼叫:开始呼叫(F)         中止呼叫(E)",connectflag[]="OK",connectflag1[]="COLP";
  uchar i=0,connect[]="正在通话中...";
  Display(call,0x80,0,6);
  Display(call,0x88,6,38);
  while(key7279!=0xf)
    {
     phone[i] = key7279+48;
     if(i<16)       Display(phone,0x90,0,i+1);
     else if(i<32)  Display(phone,0x88,16,i+1);
     else if(i<48)  Display(phone,0x98,32,i+1);
     key7279 = 0xff;
     while(key7279==0xff);
     if(key7279==0xe) goto  ret;
     i++;
    }
  phone[i] = ';';
  phone[i+1] = '\0';
  i=0; 
  //while(RECV(rdata)==0) COLP(1);
  callsend(phone);
  key7279 = 0xff;
  dellay(200);
  while(RECV(rdata)==0) // CLCC();  //查询通话记录
    {
     if(key7279==0xe) goto  ret;
     callsend(phone);
     dellay(200);
    }
  //i= str_search(rdata,0,connectflag);
  //if((str_search(rdata,0,connectflag)!=0xff)||(str_search(rdata,0,connectflag1)!=0xff))
    {
     lcdclean(3,3);
     Display(connect,0x89,0,14);
    }
  key7279 = 0xff;
  while(key7279!=0xe)
    {
     if((key7279>0)&&(key7279<0xa))
       {
        
        phone[0] = key7279+48;
        phone[1] = ';';
        phone[1] = '\0';
        callsend(phone);
        key7279 = 0xff;
        /*
        SendNum(key7279+0x30);*/
       }
    }
  CHUP();
ret: i=0;
 }         
/*************************************************
- 函数名称 : void mainmenu(void)
- 函数说明 : 主菜单
- 输入参数 : 无
- 输出参数 : 无
**********************************************/
void mainmenu(void)
 {
  uchar mobileset[] = "电话设置(D):";
  uchar record[] = "电话记录(C):";
  uchar ringset[] = "铃音设置(B):";
  uchar clockset[] = "时钟(A):";
  switch (key7279)
    {
     case 0xf:            //电话本
       {
        switch (status)
          {
           case 0:
           default:
             phonebookmenu();
           case 1:  //收到短信
             while(RECV(rdata)==0) CMGR(msgindex,1);
             while((rdata[3]!='G')||(rdata[4]!='R'))
               {
                while(RECV(rdata)==0) CMGR(msgindex,1);
               } 
             break;  
           case 2:
           break;    
          }
        status = 0;
        break;
       }
     case 0xe:             //短信
       {
        messagemenu();
        break;
       } 
     case 0xd:             //手机设置
       {
        Display(mobileset,0x80,0,10);
        break;
       }
     case 0xc:             //通话记录
       {
        Display(record,0x80,0,10);
        break;
       }  
     case 0xb:             //铃音设置
       {
        Display(ringset,0x80,0,12);
        break;
       }
     case 0xa:             //时钟设置
       {
        Display(clockset,0x80,0,10);
        
        break;
       } 
     default:              //拨号呼叫
       {
        callmenu();
        break;
       }    
    }
 }  
/*************************************************
- 函数名称 : void dial(void)
- 函数说明 : 拨出的电话号码
- 输入参数 : 无
- 输出参数 : 无
**********************************************/
void keydial(void)
 {
  key7279 &=15;
  lcdclean(1,4);
  mainmenu();
  key7279 = 0xff; 
  lcdclean(1,4); 
 } 

void DispDateTime(void)
 {
  unsigned char i,data[20];
  CLEAR_BUFF(data);
  for(i=0;i<7;i++)
    {
     switch (i)
        {
         case 0:
         case 1:
           {
            data[2*i]=mdate[i]/10 +48;
            data[2*i+1]=mdate[i]%10 +48;
            break;
           }
         case 2: 
           {
            data[2*i] = '-';
            data[2*i+1]=mdate[i]/10 +48;
            data[2*i+2]=mdate[i]%10 +48;
            break;
           }
         case 3: 
           {
            data[2*i+1] = '-';
            data[2*i+2]=mdate[i]/10 +48;
            data[2*i+3]=mdate[i]%10 +48;
            break;
           }
         case 4:  
           {
            data[2*i+2]=mdate[i]/10 +48;
            data[2*i+3]=mdate[i]%10 +48;
            break;
           } 
         case 5:
           {
            data[2*i+2] = ':';
            data[2*i+3]=mdate[i]/10 +48;
            data[2*i+4]=mdate[i]%10 +48;
            break;
           }
         case 6:  
           {
            data[2*i+3] = ':';
            data[2*i+4]=mdate[i]/10 +48;
            data[2*i+5]=mdate[i]%10 +48;
            break;
           }
       }
    }
  Display(ddate,0x90,0,6); 
  Display(data,0x93,0,10);
  Display(dtime,0x88,0,6); 
  Display(data,0x8b,10,18);
 }
/*************************************************************
	                  主函数 
*************************************************************/
/******************************************************
- 函数名称 : Main(void)
- 函数说明 : 系统的主程序入口
- 输入参数 : 无
- 输出参数 : 无
**********************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -