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

📄 hongwai1.lst

📁 通过红外对管实现无线通信
💻 LST
字号:
C51 COMPILER V8.02   HONGWAI1                                                              08/13/2008 21:16:44 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE HONGWAI1
OBJECT MODULE PLACED IN hongwai1.OBJ
COMPILER INVOKED BY: D:\安装程序\UV3\C51\BIN\C51.EXE hongwai1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          红外发送程序
   3          
   4          
   5          
   6          
   7          */
   8          #include<reg52.h>
   9          #include<intrins.h>
  10          #include<absacc.h>
  11          #define uchar unsigned char
  12          uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  13          //uchar code bb[4]={0xf7,0xfb,0xfd,0xfe};
  14          uchar data str[5];
  15          uchar data dat[5];
  16          sbit P3_2=P3^2;
  17          sbit P2_0=P2^0;
  18          sbit DQ=P2^2;                        //单口线说明
  19          bit T_sign=0;                        //温度正负符号        
  20          #define T_cont  0.0625               //温度转换常数
  21          #define uchar  unsigned char
  22          #define uint  unsigned int  
  23          float  temp1=0;
  24          unsigned char sdata,t_bai=0,t_shi=0,t_ge=0,t_feng=0,t_miao=0;
  25          
  26          /**********************************************************************************************
  27          函数名称:初始化函数
  28          函数功能:串口初始化函数
  29          说明:
  30          **********************************************************************************************/
  31          void init(void)
  32          {
  33   1              TMOD=0x20;                      //定时器1工作在方式2
  34   1              PCON=0x00;              //波特率不增倍
  35   1              SCON=0x50;                      //串行工作方式3                    
  36   1              TH1=0xFD;                   //SMOD=0时的初值
  37   1              TL1=0xFD;
  38   1              TR1=1;
  39   1      }
  40          
  41          /**********************************************************************************************
  42          函数名称:存储函数
  43          函数功能:将温度数据存储在str[]
  44          说明:
  45          **********************************************************************************************/
  46          void save()
  47          {
  48   1       
  49   1      //      str[0]=0xff;
  50   1              str[0]=t_shi;
  51   1              str[1]=t_ge;
  52   1              str[2]=t_feng;
  53   1              str[3]=t_miao; 
  54   1               
  55   1      } 
C51 COMPILER V8.02   HONGWAI1                                                              08/13/2008 21:16:44 PAGE 2   

  56          /**********************************************************************************************
  57          函数名称:发送函数
  58          函数功能:将数组中的温度数据通过串口发送
  59          说明:
  60          **********************************************************************************************/
  61          void send_str()
  62          // 传送字串
  63          {
  64   1              uchar i;
  65   1              for(i=0;i<4;i++)
  66   1              {
  67   2                      SBUF = str[i];
  68   2                      while(!TI);                             // 等特数据传送
  69   2                      TI = 0;                                 // 清除数据传送
  70   2              }       
  71   1      }
  72          
  73          /**********************************************************************************************
  74          函数名称:读取温度函数
  75          函数功能:读取DS18B20的转换温度值
  76          说明:
  77          **********************************************************************************************/
  78          
  79          void ReadTemperature()               //获取温度源程序
  80          {
  81   1       void delay(unsigned int delay_time);
  82   1       void DS18B20_init();
  83   1       void DS18B20_send(unsigned char out_data);
  84   1       uchar DS18B20_read(void);
  85   1       unsigned int y=0;
  86   1       uchar a=0;
  87   1       uchar b=0;
  88   1      // unsigned char k;
  89   1       DS18B20_init();                   //初始化DS18B20
  90   1       DS18B20_send (0xcc);
  91   1       DS18B20_send (0x44);              //启动温度转换
  92   1       delay(125);
  93   1       DS18B20_init();       
  94   1       DS18B20_send (0xcc);
  95   1       DS18B20_send (0xbe);             //读取温度寄存器
  96   1       a=DS18B20_read();                     //读取低位
  97   1       b=DS18B20_read();                        //读取高位
  98   1       //k=b&0X08;
  99   1       //if(k==0x08)  T_sign=1;          //温度是负数
 100   1       //else T_sign=0;
 101   1      
 102   1              if(b>0x7f)
 103   1              {                                                   
 104   2                      a=~a;b=~b+1;              //补码转换,取反加一
 105   2                      T_sign=1;                //温度为负时flag=0
 106   2                       
 107   2              }
 108   1              sdata=a/16+b*16;
 109   1              t_bai=sdata/100;
 110   1              t_shi=sdata/10;
 111   1              t_ge=sdata%10;
 112   1              t_feng=(a&0x0f)*10/16;
 113   1              t_miao=(a&0x0f)*100/16%10;
 114   1       
 115   1      } 
 116          
 117          
C51 COMPILER V8.02   HONGWAI1                                                              08/13/2008 21:16:44 PAGE 3   

 118          /**********************************************************************************************
 119          函数名称:延时函数
 120          函数功能:转换延时和显示延时
 121          说明:LCM1602_Delay()是液晶显示延时,delay()是温度转换延时
 122          **********************************************************************************************/
 123          void delay(unsigned int delay_time) // 延时程序
 124          {
 125   1       while(delay_time--);
 126   1      }
 127          
 128          void Delay1(uchar count)
 129          {
 130   1              uchar i;
 131   1              while(--count!=0)
 132   1                 {for(i=0;i<250;i++);}        
 133   1      }
 134          
 135          /**********************************************************************************************
 136          函数名称:初始化函数
 137          函数功能:对DS18B20进行初始化
 138          说明:
 139          **********************************************************************************************/
 140          void DS18B20_init()  //初始化DS18B20
 141          {
 142   1      unsigned char i=0;
 143   1      DQ=1;
 144   1      delay(8);
 145   1      DQ=0;
 146   1      delay(85);       //精确延时484 us
 147   1      DQ=1;
 148   1      delay(14);        //精确延时34us
 149   1      i=DQ;
 150   1      delay(20);
 151   1                                       
 152   1      }
 153          
 154          /**********************************************************************************************
 155          函数名称:写函数
 156          函数功能:向DS18B20写命令
 157          说明:
 158          **********************************************************************************************/
 159          void DS18B20_send(unsigned char out_data) //主机发送一字节到DS18B20
 160          {
 161   1       unsigned char i=0;
 162   1       
 163   1       for(i=8;i>0;i--)
 164   1         {
 165   2          DQ=0;
 166   2              DQ=out_data&0x01;                     //数据从低位送出
 167   2              delay(5);                            //精确延时61us
 168   2              DQ=1;
 169   2              out_data>>=1;
 170   2         }
 171   1        delay(4);
 172   1      }
 173          
 174          /**********************************************************************************************
 175          函数名称:读函数
 176          函数功能:从DS18B20读取数据
 177          说明:
 178          **********************************************************************************************/
 179          uchar DS18B20_read(void)//主机从DS18B20中读取一字节
C51 COMPILER V8.02   HONGWAI1                                                              08/13/2008 21:16:44 PAGE 4   

 180          {
 181   1       unsigned char i,in_data;
 182   1       in_data=0;
 183   1       for(i=8;i>0;i--)
 184   1          {
 185   2               DQ=1;
 186   2               delay(1);
 187   2               DQ=0;            //给脉冲信号
 188   2               in_data>>=1;
 189   2               DQ=1;           //给脉冲信号
 190   2               if(DQ) 
 191   2                 in_data|=0x80;
 192   2               delay(4);
 193   2              }
 194   1       return(in_data);
 195   1      }
 196          
 197          /**********************************************************************************************
 198          函数名称:显示函数
 199          函数功能:显示函数
 200          说明:
 201          **********************************************************************************************/
 202          void display()
 203          {
 204   1                  P1=0xfe;
 205   1                      P0=tab[t_shi];
 206   1                      Delay1(4);
 207   1                      P1=0xfd;
 208   1                      P0=tab[t_ge]|0x80;
 209   1                      Delay1(4);
 210   1                      P1=0xfb;
 211   1                      P0=tab[t_feng];
 212   1                      Delay1(4);
 213   1                      P1=0xf7;
 214   1                      P0=tab[t_miao];
 215   1                      Delay1(4);
 216   1                      P1=P2|0x0f;
 217   1                      P0=0x00;
 218   1      }
 219          
 220          
 221          /**********************************************************************************************
 222          函数名称:主函数
 223          函数功能:主函数
 224          说明:
 225          **********************************************************************************************/
 226          void main()
 227          {
 228   1          int i,j;
 229   1      //      P1=0x00;
 230   1      //      P0=0x00;
 231   1              EA=1;
 232   1              ES=1;
 233   1              init();
 234   1              while(1)
 235   1              {
 236   2                      ReadTemperature();
 237   2                      display();
 238   2                      save();
 239   2                      if(P3_2==0)
 240   2                      {
 241   3                              for(i=0;i<2;i++)
C51 COMPILER V8.02   HONGWAI1                                                              08/13/2008 21:16:44 PAGE 5   

 242   3                              for(j=200;j>0;j--);
 243   3                              if(P3_2==0)
 244   3                              {       
 245   4                                      send_str();
 246   4                                      while(P3_2==0);
 247   4                              }
 248   3      
 249   3                      }
 250   2              }
 251   1      }
 252                
 253               


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    424    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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