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

📄 index.lst

📁 1602+ds1302时钟显示+ds18b20温度报警
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   INDEX                                                                 10/02/2008 21:03:27 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE INDEX
OBJECT MODULE PLACED IN index.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE index.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /////////////////////////////////////////////////////////////////////////////////////////////////////
   2          /////                                                                                           /////
   3          /////                                 电子温度计c语言程序                                       /////
   4          /////                                                                                           /////
   5          /////                                                                                           /////
   6          /////////////////////////////////////////////////////////////////////////////////////////////////////
   7          
   8          
   9          #include "reg52.h"      
  10          #include "string.h"
  11          #include "ds1302.h"
  12          #include "ds18b20.h"
  13          #include "lcd1602.h"
  14          
  15          sbit RED=P1^3;    //高温报警灯
  16          sbit BLUE=P1^4;  //低温报警灯
  17          sbit SPEAKER=P3^7;//蜂鸣器
  18          sbit SET=P3^0;    //以下按钮设置
  19          sbit SET2=P3^1;
  20          sbit SET3=P2^0;
  21          sbit NEXT=P2^1;
  22          sbit REDUCE=P2^2;
  23          sbit ADD=P2^3;
  24          
  25          int tH=-1,tL=-1;//报警状态,1为关闭
  26          int m,keyon,keytype,out=0,out2=0;//设置报警温度时使用的中间变量
  27          float temperatureH=35,temperatureL=18;  //报警温度
  28          
  29          void delay(unsigned int time)
  30          {
  31   1        unsigned int n;
  32   1        n=0;
  33   1        while(n<time) n++;
  34   1        return;
  35   1      }
  36          
  37          void ds_codechange()
  38          {
  39   1        dis1[0]=code_switch(((int)month)/10);
  40   1        dis1[1]=code_switch(((int)month)%10);
  41   1      
  42   1        dis1[3]=code_switch(((int)date)/10);
  43   1        dis1[4]=code_switch(((int)date)%10);
  44   1      
  45   1        dis1[6]=code_switch(((int)hour)/10);
  46   1        dis1[7]=code_switch(((int)hour)%10);
  47   1      
  48   1        dis1[9]=code_switch(((int)minute)/10);
  49   1        dis1[10]=code_switch(((int)minute)%10);
  50   1      
  51   1        dis1[12]=code_switch(((int)second)/10);
  52   1        dis1[13]=code_switch(((int)second)%10);
  53   1      
  54   1        dis1[15]=code_switch((int)week);
  55   1      }
C51 COMPILER V7.50   INDEX                                                                 10/02/2008 21:03:27 PAGE 2   

  56          void t_codechange()//主界面温度显示float转换成字符
  57          {
  58   1        if(temperature>=0)
  59   1              {
  60   2            dis2[10]=code_switch((int)(temperature/100));
  61   2                dis2[11]=code_switch(((int)(temperature)%100)/10);
  62   2                dis2[12]=code_switch(((int)temperature)%10);
  63   2                dis2[13]='.';
  64   2                dis2[14]=code_switch(((int)(temperature*10))%10);
  65   2          }
  66   1        else
  67   1              {
  68   2            dis2[10]='-';
  69   2                dis2[11]=code_switch(((int)(-temperature)%100)/10);
  70   2                dis2[12]=code_switch(((int)(-temperature))%10);
  71   2                dis2[13]='.';
  72   2                dis2[14]=code_switch(((int)((-temperature)*10))%10);
  73   2          }
  74   1      }
  75          
  76          ///////////////////////////温度报警设置显示/////////////////////////
  77          
  78          void Display2()
  79          {
  80   1        unsigned char i;
  81   1        if(tH==1)//高温开关值设置
  82   1              {
  83   2            dis1[9]='O';
  84   2                dis1[10]='F';
  85   2                dis1[11]='F';
  86   2              }
  87   1        else 
  88   1              {
  89   2            dis1[9]='O';
  90   2                dis1[10]='N';
  91   2                dis1[11]=' ';
  92   2              }
  93   1        if(temperatureH>=0)//高温温度值设置
  94   1              {
  95   2            dis1[13]=code_switch(((int)(temperatureH)%100)/10);
  96   2                dis1[14]=code_switch(((int)temperatureH)%10);
  97   2              }
  98   1        else
  99   1              {
 100   2            dis1[13]='-';
 101   2                dis1[14]=code_switch(((int)(-temperatureH))%10);
 102   2          }
 103   1          if(tL==1)//低温开关值设置
 104   1              {
 105   2            dis2[9]='O';
 106   2                dis2[10]='F';
 107   2                dis2[11]='F';
 108   2              }
 109   1        else 
 110   1              {
 111   2            dis2[9]='O';
 112   2                dis2[10]='N';
 113   2                dis2[11]=' ';
 114   2              }
 115   1          if(temperatureL>=0)//低温温度值设置
 116   1              {
 117   2            dis2[13]=code_switch(((int)(temperatureL)%100)/10);
C51 COMPILER V7.50   INDEX                                                                 10/02/2008 21:03:27 PAGE 3   

 118   2                dis2[14]=code_switch(((int)temperatureL)%10);
 119   2              }
 120   1        else
 121   1              {
 122   2            dis2[13]='-';
 123   2                dis2[14]=code_switch(((int)(-temperatureL))%10);
 124   2          }
 125   1        lcd_pos(0);
 126   1        i=0;
 127   1        while(dis1[i]!='\0')
 128   1        {
 129   2          lcd_wdat(dis1[i]);
 130   2          i++;
 131   2        }
 132   1        lcd_pos(0x40);
 133   1        i=0;
 134   1        while(dis2[i]!='\0')
 135   1        {
 136   2          lcd_wdat(dis2[i]);
 137   2          i++;
 138   2        }
 139   1        switch (m)
 140   1        {
 141   2        case 0: lcd_pos(0x0a);break;
 142   2        case 1: lcd_pos(0x0E);break;
 143   2        case 2: lcd_pos(0x4a);break;
 144   2        case 3: lcd_pos(0x4E);break;
 145   2        }
 146   1      }
 147          /////////////////////////////报警设置显示结束///////////////////////////////////
 148          
 149          
 150          ////////////////////////////////报警设置/////////////////////////////////////////
 151          void seting()
 152          {
 153   1         if(SET==1&&NEXT==1&&REDUCE==1&&ADD==1);        //无键盘按下
 154   1         else                                          /////有键盘按下时
 155   1          {
 156   2                keyon=1;
 157   2                if(SET==0)keytype=0;
 158   2                if(NEXT==0)keytype=1;
 159   2                if(REDUCE==0)keytype=2;
 160   2                if(ADD==0)keytype=3;
 161   2              }
 162   1         if(keyon==1&&SET==1&&NEXT==1&&REDUCE==1&&ADD==1)              //键盘松开后判断键盘状态
 163   1          {
 164   2                if(keytype==1)////////////////菜单下翻
 165   2                  { 
 166   3                        if(m>=3)m=0;
 167   3                    else m++;
 168   3                       }
 169   2                if(keytype==2)        ////////////////加操作
 170   2                  {
 171   3                        if(m==0)tH=-tH;
 172   3                        if(m==1)
 173   3                          {
 174   4                                if(temperatureH>(temperatureL+1)) temperatureH--;
 175   4                                else temperatureH=99;
 176   4                              }
 177   3                        if(m==2)tL=-tL;
 178   3                        if(m==3)
 179   3                          {
C51 COMPILER V7.50   INDEX                                                                 10/02/2008 21:03:27 PAGE 4   

 180   4                                if(temperatureL>-9) temperatureL--;
 181   4                                else temperatureL=(temperatureH-1);
 182   4                              }
 183   3                      }
 184   2                if(keytype==3)                 ////////////////减操作
 185   2                  {
 186   3                        if(m==0)tH=-tH;
 187   3                        if(m==1)
 188   3                          {
 189   4                                if(temperatureH<99) temperatureH++;
 190   4                                else temperatureH=(temperatureL+1);
 191   4                              }
 192   3                        if(m==2)tL=-tL;
 193   3                        if(m==3)
 194   3                          {
 195   4                                if(temperatureL<(temperatureH-1)) temperatureL++;
 196   4                                else temperatureL=-9;
 197   4                              }
 198   3                      }
 199   2                if(keytype==0)                          ///////////跳出温度设置
 200   2                  {
 201   3                    keyon=0;
 202   3                    keytype=4;
 203   3                        out=1;                
 204   3                      }
 205   2                keyon=0;
 206   2                keytype=4;
 207   2              }
 208   1      }
 209          /////////////////////////////报警设置结束/////////////////////////////////////////
 210          void  Too_hot ()
 211          {   unsigned char i;
 212   1          unsigned char  m;
 213   1          lcd_init(); 
 214   1              delay(100);               //初始化LCD 
 215   1          lcd_pos(0);                //设置显示位置为第一行的第1个字符
 216   1           m = 0;
 217   1          while(cdis3[m] != '\0')
 218   1           {                         //显示字符
 219   2             lcd_wdat(cdis3[m]);
 220   2             m++;
 221   2           }
 222   1      
 223   1          lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 224   1           m = 0;
 225   1          while(cdis4[m] != '\0')
 226   1           {
 227   2             lcd_wdat(cdis4[m]);      //显示字符
 228   2             m++;
 229   2           }
 230   1               for(m=0;m<5;m++)
 231   1              {
 232   2              RED=0;  
 233   2              SPEAKER=0;
 234   2              delay(10000);
 235   2              SPEAKER=1;
 236   2              RED=1;
 237   2              delay(10000);
 238   2              SPEAKER=0;  
 239   2          }
 240   1                      if(SET==0)      /////////////////////////进入报警温度设定
 241   1                {
C51 COMPILER V7.50   INDEX                                                                 10/02/2008 21:03:27 PAGE 5   

 242   2                  out=0;
 243   2                  delay(300);
 244   2                      while(SET==0);
 245   2                      strcpy(dis1,"ALARM-H: ON  35 \0");
 246   2                      strcpy(dis2,"ALARM-L: ON  18 \0");
 247   2                      lcd_init2();
 248   2                      lcd_pos(0);
 249   2              i=0;
 250   2              while(dis1[i]!='\0')
 251   2              {
 252   3                lcd_wdat(dis1[i]);
 253   3                i++;
 254   3              }
 255   2              lcd_pos(0x40);
 256   2              i=0;
 257   2              while(dis2[i]!='\0')
 258   2              {
 259   3                lcd_wdat(dis2[i]);
 260   3                    i++;
 261   3              }
 262   2                      lcd_pos(0x0a);//光标显示在高温开关位置
 263   2                      if(SET==0)
 264   2                      {
 265   3                      lcd_pos(0);
 266   3              i=0;
 267   3              while(dis1[i]!='\0')
 268   3              {
 269   4                lcd_wdat(dis1[i]);
 270   4                i++;
 271   4              }

⌨️ 快捷键说明

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