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

📄 gsm-

📁 GSM室温监控系统
💻
字号:
C51 COMPILER V7.06   MAIN                                                                  06/13/2010 15:40:35 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: E:\WorkSpace\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /***********************************************
   2                  程序:单片机控制GSM模块发送信息
   3                  编译器:Keil UV2         
   4                  日期:2010/06/11
   5          ************************************************/
   6          
   7          #include "common.h"
   8          uchar Alarm_Temp=32;                                            //报警温度设置为32度
   9          void Key_Handle(void);                                          //声明按键处理程序
  10          void Show_Temperature(void);                            //显示温度
  11          void Show_Menu(void);                                           //显示菜单              
  12          void Show_Time(void);                                           //显示时间                                      
  13          //系统初始化
  14          void Sys_Init()                                                         
  15          {
  16   1              PhoneNum[14]='\0';
  17   1              USART_Init();                                                   //串口初始化
  18   1              Red_Init();                                                             //红外初始化
  19   1              Read_18B20();                                                   //先读取两次温度,初次读取会不准确
  20   1              //write_1302_time(times);                               //第一次编程时设定一个时间,以后就不用了
  21   1              LcmInit();                                                              //液晶初始化
  22   1              LcmClearTXT();                                                  //清除显示
  23   1              LcmClearBMP();
  24   1              delay_ms(100);
  25   1              PutStr(0,0,"Initial OK !");     
  26   1              delay_ms(1000);
  27   1              LcmClearTXT();                                                  //清除显示
  28   1      }
  29          
  30          //主函数
  31          void main()
  32          {
  33   1              Sys_Init();                                                             //系统初始化
  34   1              while(1)
  35   1              {
  36   2                      Key_Handle();
  37   2                      Show_Time();
  38   2                      Show_Temperature();     
  39   2                      delay_ms(150);
  40   2              }
  41   1      }
  42          
  43          //显示时间函数  
  44          void Show_Time(void)
  45          {
  46   1              read_1302_time(times);
  47   1              PutStr(2,0,"日期:");
  48   1              PutStr(3,0,"时间:");
  49   1              PutTime();
  50   1      }
  51          //显示温度函数
  52          void Show_Temperature(void)
  53          {
  54   1              PutStr(0,0,"GSM 温度报警系统");
  55   1              PutStr(1,0,"环境温度:");
C51 COMPILER V7.06   MAIN                                                                  06/13/2010 15:40:35 PAGE 2   

  56   1              Read_18B20();
  57   1              PutTemp(1,5);
  58   1              PutStr(1,7,"℃");                       
  59   1              if(zhengshu>=Alarm_Temp)key=72;         //温度超过阀值,进入发短信模式,即报警
  60   1      }
  61          
  62          //显示主菜单
  63          void Show_Menu(void)
  64          {
  65   1              LcmClearTXT();                                          //清除显示
  66   1              PutStr(0,0,"1.设定手机号码");
  67   1              PutStr(1,0,"2.设定报警温度");
  68   1              PutStr(2,0,"3.编辑短信内容");
  69   1              PutStr(3,0,"4.修改日期时间");
  70   1      }
  71          //红外按键处理程序
  72          void Key_Handle(void)
  73          {
  74   1              unsigned long temp=0;
  75   1              signed char i=0;
  76   1          uchar cnt=0;
  77   1              if(key!=255)                                            //有键按下
  78   1              {
  79   2                      switch(key)                                             //在这里可以随便添加你的按键处理程序
  80   2                      {
  81   3                              case 72:                                        //发送短信
  82   3                              {
  83   4                                      LcmClearTXT();                  //清除显示
  84   4                                      PutStr(0,0,"短信发送模式");
  85   4                                      PutStr(1,0,"请稍候...");
  86   4                                      delay_ms(1000);
  87   4                                      Send_Message(PhoneNum,MsContent);
  88   4                                      while(key==72);                 //等待有键按下并退出
  89   4                                      Read_18B20();                   //再读一次
  90   4                                      break;
  91   4                              }
  92   3                              case 14:                                        //进入主菜单
  93   3                              {
  94   4                                      Show_Menu();
  95   4                                      key=255;
  96   4                      while(key==255);        //等待有键按下  
  97   4                                      
  98   4                                      switch(key)
  99   4                      {
 100   5                                          case 1 :            //设置手机号码
 101   5                              {
 102   6                                  key=255;
 103   6                                  LcmClearTXT();
 104   6                                  PutStr(0,0,"请输入手机号码");
 105   6                                  key=255;
 106   6                                  while(key==255); 
 107   6                                  WriteCommand(0x30);
 108   6                                  WriteCommand(AC_TABLE[8]);          //在第二行开始显示键入值            
 109   6                                      while(key!=14)                                  //不是确认键
 110   6                                      {
 111   7                                                                      if(key<10&&cnt<11)                      //11位手机号码
 112   7                                                                      {
 113   8                                                                              PhoneNum[(cnt++)+3]=key+48;
 114   8                                              WriteData(key+48);                                                              
 115   8                                                                      }
 116   7                                                                      PhoneNum[14]='\0';
 117   7                                          key=255;
C51 COMPILER V7.06   MAIN                                                                  06/13/2010 15:40:35 PAGE 3   

 118   7                                          while(key==255);                    //等待有键按下              
 119   7                                      } 
 120   6                                      key=255;
 121   6                                                              PutStr(2,0,PhoneNum);
 122   6                                                              PutStr(3,2,"修改成功!");
 123   6                                                              delay_ms(1000);
 124   6                                      break;
 125   6                              }
 126   5      
 127   5                          case 2 :            //设置报警温度
 128   5                              {
 129   6                                  key=255;
 130   6                                  LcmClearTXT();
 131   6                                  PutStr(0,0,"请输入报警温度");
 132   6                                  key=255;
 133   6                                  while(key==255); 
 134   6                                  WriteCommand(0x30);
 135   6                                  WriteCommand(AC_TABLE[8]);          //在第二行开始显示键入值            
 136   6                                      while(key!=14)                                  //不是确认键
 137   6                                      {
 138   7                                          temp=(temp*10)+key;
 139   7                                      WriteData(key+48);
 140   7                                          key=255;
 141   7                                          while(key==255);                    //等待有键按下              
 142   7                                      } 
 143   6                                      key=255;
 144   6                                      Alarm_Temp=(uchar)temp;                 //更新报警温度
 145   6                                                              PutStr(3,2,"修改成功!");
 146   6                                                              delay_ms(1000);
 147   6                                      break;
 148   6                              }
 149   5      
 150   5                          case 4 :            //设置时间
 151   5                              {
 152   6                                  key=255;
 153   6                                                              for(i=6;i>=0;i--)
 154   6                                                              {
 155   7                                                                      if(i!=5)                                        //星期不设置
 156   7                                                                      {
 157   8                                                                              LcmClearTXT();
 158   8                                                                              switch(i)
 159   8                                                                              {
 160   9                                                                                      case 6:PutStr(0,0,"请输入年:");break;
 161   9                                                                                      case 4:PutStr(0,0,"请输入月:");break;
 162   9                                                                                      case 3:PutStr(0,0,"请输入日:");break;
 163   9                                                                                      case 2:PutStr(0,0,"请输入时:");break;
 164   9                                                                                      case 1:PutStr(0,0,"请输入分:");break;
 165   9                                                                                      case 0:PutStr(0,0,"请输入秒:");break;
 166   9                                                                                      default:break;
 167   9                                                                              }
 168   8                                                                              times[i]=0;                                     //清0
 169   8                                              WriteCommand(0x30);
 170   8                                              WriteCommand(AC_TABLE[8]);      //在第二行开始显示键入值 
 171   8                                              while(cnt<2)                            //输入的是两位数
 172   8                                                      {
 173   9                                                                                      key=255;  
 174   9                                                                                  while(key==255);            //等待有键按下 
 175   9                                                          times[i]=(times[i]*10)+key;
 176   9                                                      WriteData(key+48);  
 177   9                                                                                      cnt++;
 178   9                                                      } 
 179   8                                                                                      key=255;  
C51 COMPILER V7.06   MAIN                                                                  06/13/2010 15:40:35 PAGE 4   

 180   8                                                                                  while(key==255);            //等待有键按下 
 181   8                                                                              cnt=0;
 182   8                                                                      }
 183   7                                                                      else times[5]=1;
 184   7      
 185   7                                                              }
 186   6                                      write_1302_time(times);                         //使时间生效                            
 187   6                                                              PutStr(3,2,"修改成功!");
 188   6                                                              delay_ms(1000);
 189   6                                      break;
 190   6                              }
 191   5                                              default:break;
 192   5                      }  
 193   4                                      break;
 194   4                              }
 195   3                              default:                                        //其他
 196   3                                      break;
 197   3                      }
 198   2                      LcmClearTXT();                  //清除显示
 199   2                      delay_ms(100);
 200   2                      key=255;                                                //取消键值              
 201   2              }
 202   1      }
 203          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    805    ----
   CONSTANT SIZE    =    238    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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