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

📄 lcd_18b20.lst

📁 DS18B20(已通过)测试
💻 LST
📖 第 1 页 / 共 2 页
字号:
 118   1        t[0]>>=2;                                                                     //左移两位,以便查表
 119   1        x=t[0];                                                                               
 120   1        y=dotcode[x];                                                                 //查表换算成实际的小数
 121   1        TempBuffer1[5]=y/10+0x30;                                             //分离出十分位
 122   1        TempBuffer1[6]=y%10+0x30;                                             //分离出百分位
 123   1      }                       
 124          
 125          /*********键盘命令处理函数************
 126          *功能:把键盘值转化成相应的功能标志位
 127          *备注:为了提高程序的健壮性,在功能标志位无效时,
 128          **up_one和down_one都无效,并且各功能标志之间
 129          **采用互锁处理,虽然这样麻烦,特别是功能标志较多时
 130          **更是麻烦,但各功能标志之间是同级别的;
 131          **也可采用多重if else方法,虽然简单,
 132          **但各功能标志之间有了明显的优先级差别
 133          **************************************/
 134          void key_command(unsigned char x)                               
 135          {
 136   1              switch(x)
 137   1              {
 138   2                      case 1: up_one=1;break;
 139   2                      case 2: down_one=1;break;
 140   2                      case 5: alarm_up_flag=!alarm_up_flag;break;
 141   2                      case 6: alarm_down_flag=!alarm_down_flag;break;
 142   2                      case 7: set_temper_flag=!set_temper_flag;break;
 143   2                      case 8: alarm_switch=!alarm_switch;break;
 144   2                      default: break;
 145   2              }
 146   1              if(!(alarm_up_flag||alarm_down_flag||set_temper_flag))
 147   1              {
 148   2                      up_one=0x00;            //在没有相应功能标志有效时
 149   2                      down_one=0x00;          //up_one和down_one都被锁定
 150   2              }
 151   1              if(alarm_up_flag&&(!alarm_down_flag)&&(!set_temper_flag))//设置上限报警
 152   1              {
 153   2                      if(up_one)//上限报警加1
 154   2                      {
 155   3                              TH++;up_one=0;
 156   3                              if(TH>=100)//超过100度,回零到20度
 157   3                              TH=20;
 158   3                      }
 159   2                      if(down_one)//上限报警减1
 160   2                      {
 161   3                              TH--;down_one=0;
 162   3                              if(TH<=20)//小于20度,回零到20度
 163   3                              TH=20;
 164   3                      }
 165   2              }
 166   1              if((!alarm_up_flag)&&(alarm_down_flag)&&(!set_temper_flag))//设置下限报警
 167   1              {
 168   2                      if(up_one)
 169   2                      {
 170   3                              TL++;up_one=0;
 171   3                              if(TL>=20)//高于20度,回零到0度
 172   3                              TL=0;
 173   3                      }
 174   2                      if(down_one)
 175   2                      {
 176   3                              TL--;down_one=0;
 177   3                              if(TL<=0)//低于0度,回零到0度
 178   3                              TL=0;
 179   3                      }
C51 COMPILER V7.08   LCD_18B20                                                             05/14/2007 10:50:25 PAGE 4   

 180   2              }
 181   1              
 182   1              if((!alarm_up_flag)&&(!alarm_down_flag)&&(set_temper_flag))//设置用户标定温度
 183   1              {
 184   2                      if(up_one)
 185   2                      {
 186   3                              user_temper++;up_one=0;
 187   3                              if(user_temper>=60)//高于60度,回零到0度
 188   3                              user_temper=0;
 189   3                      }
 190   2                      if(down_one)
 191   2                      {
 192   3                              user_temper--;down_one=0;
 193   3                              if(user_temper<=0)//低于0度,回零到0度
 194   3                              user_temper=0;
 195   3                      }                       
 196   2              }
 197   1              //if(alarm_switch)
 198   1                                      
 199   1      }
 200          
 201          
 202          main()
 203          {                                                                                               
 204   1       setds18b20(TH,TL,RS);                                  //设置上下限报警温度和分辨率
 205   1       delay(100);                                     
 206   1       while(1)
 207   1       {                                                                                      
 208   2          pt=ReadTemperature();                                //测温函数返回这个数组的头地址
 209   2                                                                                       //读取温度,温度值存放在一个两个字节的数组中,
 210   2              temper_LCD();                                            //实测温度转化为ACSII码,并送液晶显示缓冲区
 211   2              user_temper_LCD(user_temper);            //用户设定温度转化为ACSII码,并送液晶显示缓冲区
 212   2              alarm_LCD(TH,TL);                                        //上下限报警温度转化为ASCII码,并送液晶显示缓冲区
 213   2              LCD_Initial();                                                  //第一个参数列号,第二个为行号,为0表示第一行
 214   2                                                                                              //为1表示第二行,第三个参数为显示数据的首地址
 215   2              LCD_Print(0,0,TempBuffer0);     
 216   2              LCD_Print(0,1,TempBuffer1); 
 217   2                      
 218   2              scan_full();                     //看有无键按下
 219   2              if(key_ok)                                              //如有键按下则看到底哪个键按下
 220   2              {
 221   3              key_value=key_scan();                    //调用键盘扫描程序
 222   3              key_command(key_value);                  //键盘命令处理函数
 223   3              }                       
 224   2       }
 225   1      }
 226            
 227          
 228          
 229          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1056    ----
   CONSTANT SIZE    =      4    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     44       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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