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

📄 temp-control.lst

📁 基于51的18b20温度采集控制系统. 可以设置两个报警值.
💻 LST
字号:
C51 COMPILER V6.12  TEMP_CONTROL                                                           09/07/2007 15:03:22 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE TEMP_CONTROL
OBJECT MODULE PLACED IN .\temp-control.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\temp-control.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.H>         
   2          #define uint  unsigned int  
   3          #define uchar unsigned char
   4          uchar discod[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0x83,0xc6,0xa1,0x86,0x8e};
   5          ////////////////={  0   1    2     3   4    5     6   7    8    9    a     b    c   d     e   f};
   6          uint disbuf[4]={0x01,0x02,0x03,0x04};
   7          uint fled,alrmcode=600,coolcode=500;
   8          uint temp;
   9          sbit led1=P0^0;
  10          sbit led2=P0^1;
  11          sbit led3=P0^2;
  12          sbit led4=P0^3;
  13          
  14          sbit k1=P2^0;
  15          sbit k2=P2^1;
  16          sbit k3=P2^2;
  17          sbit k4=P2^3;
  18          sbit ALRM   =P2^4;
  19          sbit ALRMLED=P2^5;
  20          sbit COOL   =P2^6;
  21          sbit COOLLED=P2^7;
  22          
  23          sbit DQ=P3^7;   //定义通信端口
  24          ////////////////////////////////////////////////////
  25          main()
  26          {
  27   1      for(;;)
  28   1       {
  29   2      uchar d;
  30   2      P0=0;
  31   2      temp=ReadTemperature();fled=12;
*** WARNING C206 IN LINE 31 OF .\TEMP-CONTROL.C: 'ReadTemperature': missing function-prototype
  32   2      if(temp>alrmcode){ALRM=1;ALRMLED=1;}else{ALRM=0;ALRMLED=0;}
  33   2      if(temp>coolcode){COOL=1;COOLLED=1;}else{COOL=0;COOLLED=0;}
  34   2      for(d=0;d<7;d++){display();}
*** WARNING C206 IN LINE 34 OF .\TEMP-CONTROL.C: 'display': missing function-prototype
  35   2      if(k4==0){key();}
*** WARNING C206 IN LINE 35 OF .\TEMP-CONTROL.C: 'key': missing function-prototype
  36   2       }
  37   1      } 
  38          /////////////////////////////////////////////////////
  39          key()
  40          {
  41   1      
  42   1        if(k4==0)
  43   1          { temp=alrmcode;fled=11;
  44   2      	while(k4==0){display();}
  45   2          while(k3==1)
  46   2               {
  47   3      		  
  48   3               if(k1==0){temp=alrmcode;fled=11;}
  49   3               if(k2==0){temp=coolcode;fled=15;}
  50   3                 display(); 
  51   3               if(k4==0)
  52   3      	       {
C51 COMPILER V6.12  TEMP_CONTROL                                                           09/07/2007 15:03:22 PAGE 2   

  53   4      back:	   while(k3==0);
  54   4                 if(k4==0)
  55   4      	         {
  56   5                    while(k3==1)
  57   5      	               {
  58   6      	              display();
  59   6      			            if(fled==11)
  60   6      			              {      
  61   7      			                while(k3==1)
  62   7      			                {
  63   8      					        if(k1==0){alrmcode++;temp=alrmcode;}
  64   8      						    if(k2==0){alrmcode--;temp=alrmcode;}
  65   8      							display();display();display();display();display();display();
  66   8      							display();display();display();display();display();display();
  67   8      				            }
  68   7      			              }
  69   6      			            if(fled==15)
  70   6      			              {
  71   7      			                while(k3==1)
  72   7      			                {
  73   8      						    if(k1==0){coolcode++;temp=coolcode;}
  74   8      					    	if(k2==0){coolcode--;temp=coolcode;}
  75   8      							display();display();display();display();display();display();
  76   8      							display();display();display();display();display();display();
  77   8      				            }
  78   7      					       }
  79   6      						   goto back;
  80   6      			}
  81   5               } 
  82   4      		}  			  
  83   3      }    }  }      
  84          /////////////////////////////////////////////////////
  85          display()
  86          {
  87   1      uchar c;
  88   1      disbuf[0]=temp/100;
  89   1      disbuf[1]=(temp%100)/10;
  90   1      disbuf[2]=((temp%100)%10);
  91   1      disbuf[3]=fled;
  92   1      P1=discod[disbuf[0]];P0=1;
  93   1      for(c=0;c<150;c++);
  94   1      P1=(discod[disbuf[1]]&0x7f);P0=2;
  95   1      for(c=0;c<150;c++);
  96   1      P1=discod[disbuf[2]];P0=4;
  97   1      for(c=0;c<150;c++);
  98   1      P1=discod[disbuf[3]];P0=8;
  99   1      for(c=0;c<150;c++);
 100   1      }
 101          //延时函数
 102          
 103          void delay(unsigned int i)
 104          {
 105   1       while(i--);
 106   1      }
 107          
 108          //初始化函数
 109          Init_DS18B20(void)
 110          {
 111   1       unsigned char x=0;
 112   1       DQ = 1;    //DQ复位
 113   1       delay(8);  //稍做延时
 114   1       DQ = 0;    //单片机将DQ拉低
C51 COMPILER V6.12  TEMP_CONTROL                                                           09/07/2007 15:03:22 PAGE 3   

 115   1       delay(80); //精确延时 大于 480us
 116   1       DQ = 1;    //拉高总线
 117   1       delay(14);
 118   1       x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
 119   1       delay(20);
 120   1      }
 121          
 122          //读一个字节
 123          ReadOneChar(void)
 124          {
 125   1      unsigned char i=0;
 126   1      unsigned char dat = 0;
 127   1      for (i=8;i>0;i--)
 128   1       {
 129   2        DQ = 0; // 给脉冲信号
 130   2        dat>>=1;
 131   2        DQ = 1; // 给脉冲信号
 132   2        if(DQ)
 133   2         dat|=0x80;
 134   2        delay(4);
 135   2       }
 136   1       return(dat);
 137   1      }
 138          
 139          //写一个字节
 140          WriteOneChar(unsigned char dat)
 141          {
 142   1       unsigned char i=0;
 143   1       for (i=8; i>0; i--)
 144   1       {
 145   2        DQ = 0;
 146   2        DQ = dat&0x01;
 147   2        delay(5);
 148   2        DQ = 1;
 149   2        dat>>=1;
 150   2       }
 151   1      //delay(4);
 152   1      }
 153          
 154          //读取温度
 155          ReadTemperature(void)
 156          {
 157   1      unsigned char a=0;
 158   1      unsigned char b=0;
 159   1      unsigned int t=0;
 160   1      float tt=0;
 161   1      Init_DS18B20();
 162   1      WriteOneChar(0xCC); // 跳过读序号列号的操作
 163   1      WriteOneChar(0x44); // 启动温度转换
 164   1      Init_DS18B20();
 165   1      WriteOneChar(0xCC); //跳过读序号列号的操作
 166   1      WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
 167   1      a=ReadOneChar();
 168   1      b=ReadOneChar();
 169   1      t=b;
 170   1      t<<=8;
 171   1      t=t|a;
 172   1      tt=t*0.625;
 173   1      //t= tt*10+0.5; //放大10倍输出并四舍五入---此行没用
 174   1      return(tt);
 175   1      }
 176          
C51 COMPILER V6.12  TEMP_CONTROL                                                           09/07/2007 15:03:22 PAGE 4   

 177          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    681    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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