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

📄 main.lst

📁 DS1820智能温控系统,使用1602液晶显示,51单片机控制,KEIL开发
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   MAIN                                                                  01/12/2009 19:00:37 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "lcd1602.h"
   2          #include "DS1820.h"
   3          #include"24C02.h"
   4          //#include "isr.h"
   5          //#include "hardware.h"
   6          sbit ENTER=P1^0;
   7          sbit UP=P1^1;
   8          sbit DOWN=P1^2;
   9          sbit MENU=P1^3;
  10          sbit P3_0=P3^0;
  11          
  12           uchar flag=0,flag2=0;
  13          uchar display_code[] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
  14          uchar dispbuf[5]; //显示缓冲区   
  15          uchar  temper[2];//存放温度的数组
  16          HTemperature();
  17          LTemperature();
  18          //***********************************************************************
  19          //正常读取温度时的显示函数
  20          display()
  21          {      uchar temp;
  22   1             float backbit; 
  23   1             readtemp();//读18B20
  24   1             backbit = temper[0];//换成浮点数
  25   1             backbit = backbit * 625;//乘以0.0625*100
  26   1             temp = backbit;//取低2位整数部分
  27   1                 dispbuf[4] = temp%10 ;
  28   1             temp = temp/10;
  29   1             dispbuf[3] = temp%10 ;
  30   1             temp = temper[1];//取整数部分
  31   1             dispbuf[2] = temp%10;      //整数个位
  32   1             temp = temp/10;
  33   1             dispbuf[1]= temp%10;      //整数十位
  34   1                 temp = temp/10;
  35   1             dispbuf[0]= temp%10;              //整数百位
  36   1                 if(flag2==1)
  37   1                 lcd_strwdat( 0,"warnHTemperature  " );
  38   1                 else
  39   1                  if(flag2==2)
  40   1                      lcd_strwdat( 0,"warnLTemperature  " );
  41   1                 else
  42   1                 lcd_strwdat( 0,"Now Temperature  " );
  43   1                 lcd_pos(0x42);
  44   1                 if(dispbuf[0]!=0)                                       //如果上一百度则百数才显示
  45   1              lcd_write(1,display_code[dispbuf[0]]);
  46   1                      lcd_write(1,display_code[dispbuf[1]]);  //显示十位
  47   1                      
  48   1                      lcd_write(1,display_code[dispbuf[2]]);   //显示个位
  49   1                      lcd_write(1,0x2E);
  50   1                      lcd_write(1,display_code[dispbuf[3]]);   //显示小数个位
  51   1                      lcd_write(1,display_code[dispbuf[2]]);   //显示小数十位
  52   1      }
  53          //**********************************************************************
  54          
  55          //***********************************************************************
C51 COMPILER V8.08   MAIN                                                                  01/12/2009 19:00:37 PAGE 2   

  56          //设置最高与最低值温度时的显示函数
  57          display1(uchar temp)
  58          {
  59   1              lcd_pos(0x42);
  60   1                      if(temp/100!=0)
  61   1                      lcd_write(1,display_code[temp/100]); //显示百位
  62   1                  lcd_write(1,display_code[temp/10]);  //显示十位
  63   1                      lcd_write(1,display_code[temp%10]);      //显示个位
  64   1                      lcd_write(1,0x2E);
  65   1                      lcd_write(1,display_code[0]);            //在设置温度时小数不可设置此时为0
  66   1                      lcd_write(1,display_code[0]);
  67   1      }
  68          //*************************************************************************
  69          
  70          //*************************************************************************
  71          //蜂鸣器函数
  72          void beer()
  73           {        unsigned char j;
  74   1                int i=100;
  75   1            while(i--)
  76   1              {
  77   2                 P3_0=0;
  78   2                     for(j=0;j<70;j++);
  79   2                     P3_0=1;
  80   2                     for(j=0;j<70;j++);
  81   2              }
  82   1        }
  83          //************************************************************************
  84          
  85          //**************************************************************************
  86          //设置高温报警函数
  87          HTemperature()
  88          {  
  89   1         uchar htemp ;
  90   1         
  91   1         lcd_strwdat( 0," H temp setting " );          //第一行显示高温设置
  92   1         display1(I2CReadByte(1));                             //读取上次设置高温值并显示 
  93   1         if(ENTER==0)                                                          //有键1按下
  94   1                {  
  95   2                     while(ENTER==0);                                  //等待释放
  96   2                         lcd_init();
  97   2                         htemp=I2CReadByte(1);                         //     把上次设置高温值给某变量方便调整
  98   2                     beer();                                                   //有键按下则蜂鸣器响一下 
  99   2                 while(1)                                                      //在设置中循环直至设置完成
 100   2                       {
 101   3                     if(UP==0)        
 102   3                           {  
 103   4                                 while(UP==0);
 104   4                                 beer();
 105   4                             htemp++;                                  //up按下时高温值加一
 106   4                               }
 107   3                         if(DOWN==0&&(htemp!=0))               //高温值不能小于0
 108   3                            {
 109   4                            while(DOWN==0);
 110   4                                beer();
 111   4                            htemp--;                                   //down按下时高温值减一
 112   4                            }
 113   3                              if(flag==0)                                     //此段功能是在设置时闪动flag值用中断改变
 114   3                                       {
 115   4                                        lcd_strwdat( 0," H temp setting " );           //第一行显示高温设置
 116   4                            display1(htemp);
 117   4                                        }
C51 COMPILER V8.08   MAIN                                                                  01/12/2009 19:00:37 PAGE 3   

 118   3                          else
 119   3                                 lcd_strwdat( 0x40,"                 " );             
 120   3                      if(MENU==0)                                                       //MENU按下则退出设置
 121   3                                 {  
 122   4                                   while(MENU==0);
 123   4                                   I2CSendByte(1,htemp);                       //保存设置值
 124   4                                   beer();
 125   4                                   lcd_init();                                         //刷新lcd
 126   4                                   break;
 127   4                                 }
 128   3                                }
 129   2              }
 130   1      }
 131          //*********************************************************************************
 132          
 133          //**********************************************************************************
 134          //设置低温报警函数
 135          //原理与高温报警函数相同
 136          LTemperature()
 137          {        uchar ltemp=0;
 138   1           lcd_strwdat( 0," L temp setting" );
 139   1           display1(I2CReadByte(2));
 140   1           if(ENTER==0)
 141   1                 {   while(ENTER==0);
 142   2                         lcd_init();
 143   2                         ltemp=I2CReadByte(2);
 144   2                          beer();
 145   2                 while(1)
 146   2                  {
 147   3                    if(UP==0)
 148   3                           {  
 149   4                                 while(UP==0);
 150   4                                 beer();

⌨️ 快捷键说明

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