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

📄 hongwai.lst

📁 通过红外对管实现无线通信
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   HONGWAI                                                               07/31/2008 01:16:42 PAGE 1   


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

line level    source

   1          /***********************************************************************
   2          函数名称:红外通信                                                                                                          *
   3          函数功能:实现红外无限温度传输                                                                             *
   4          说明:                                                                                                                             *
   5          P0_0=D0   P0_1=D1    P0_2=D2    P0_3=D3                                *
   6          P0_4=D4   P0_5=D5    P0_6=D6    P0_7=D7                                *   
   7          P2_0=RS   P2_1=RW    P2_2=E                                                            *
   8          P3_3为温度数据接收端                                                                                               *
   9              按下P3_2发送读取的温度数据,接收端显示数据,将"1"回送给发送端       
  10          当温度超过33摄氏度时,接收方P1_0灯亮,将“0”回送给发送端                           *
  11          李灿松
  12          2008.7.20
  13          ***********************************************************************/
  14          #include<reg52.h>
  15          #include<intrins.h>
  16          #include<absacc.h>
  17          #define uchar unsigned char
  18          //uchar code tab[10]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0,}       ;
  19          uchar data str[5];
  20          uchar data dat[5];
  21          sbit P3_2=P3^2;
  22          sbit P1_0=P1^0;
  23          
  24          #define T_cont  0.0625               //温度转换常数
  25          #define uchar  unsigned char
  26          #define uint  unsigned int             
  27          #define L1602_DB0_DB7 P0             //定义1602的数据总线
  28          bit T_sign=0;                        //温度正负符号        
  29          float  temp1=0;
  30          sbit DQ=P3^3;                        //单口线说明
  31          sbit L1602_RS=P2^0;                  //定义1602得RS控制线
  32          sbit L1602_RW=P2^1;                  //定义1602得RW控制线
  33          sbit L1602_E=P2^2;                   //定义1602的E控制线
  34          sbit L1602_Busy=P0^7;                //定义1602的测忙线
  35          uchar code Welcome[]={"wlecome"};
  36          uchar code Welcome1[]={"tempture"};
  37          uchar code Welcome2[]={"cansong:"};
  38          uchar code Temp[]={"temp"};
  39          unsigned char sdata,t_bai,t_shi,t_ge,t_feng,t_miao;
  40          typedef bit BOOL ; 
  41          
  42          /**********************************************************************************************
  43          函数名称:初始化函数
  44          函数功能:串口初始化函数
  45          说明:
  46          **********************************************************************************************/
  47          void init(void)
  48          {
  49   1              TMOD=0x20;                      //定时器1工作在方式2
  50   1              PCON=0x00;              //波特率不增倍
  51   1              SCON=0x50;                      //串行工作方式3                    
  52   1              TH1=0xFD;                   //SMOD=0时的初值
  53   1              TL1=0xFD;
  54   1              TR1=1;
  55   1      }
C51 COMPILER V8.02   HONGWAI                                                               07/31/2008 01:16:42 PAGE 2   

  56          
  57          /**********************************************************************************************
  58          函数名称:存储函数
  59          函数功能:将温度数据存储在str[]
  60          说明:
  61          **********************************************************************************************/
  62          void save()
  63          {
  64   1              str[0]=t_bai;
  65   1              str[1]=t_shi;
  66   1              str[2]=t_ge;
  67   1              str[3]=t_feng;
  68   1              str[4]=t_miao; 
  69   1               
  70   1      } 
  71          
  72          /**********************************************************************************************
  73          函数名称:发送函数
  74          函数功能:将数组中的温度数据通过串口发送
  75          说明:
  76          **********************************************************************************************/
  77          void send_str()
  78          // 传送字串
  79          {
  80   1              uchar i;
  81   1              for(i=0;i<5;i++)
  82   1              {
  83   2                      SBUF = str[i];
  84   2                      while(!TI);                             // 等特数据传送
  85   2                      TI = 0;                                 // 清除数据传送
  86   2              }       
  87   1      }
  88          
  89          /**********************************************************************************************
  90          函数名称:主函数
  91          函数功能:主函数
  92          说明:
  93          **********************************************************************************************/
  94          
  95          void main()
  96          {       
  97   1          void print(uchar a,uchar *str);
  98   1          void print1(uchar a,uchar t); 
  99   1          void LCM1602_Init();
 100   1              void LCM1602_Delay(uchar count);
 101   1              void ReadTemperature();
 102   1              void DS18B20_init();
 103   1              DS18B20_init();
 104   1              LCM1602_Init();
 105   1              print(0x80,Welcome);
 106   1              print(0xc0,Welcome1);
 107   1              LCM1602_Delay(500);
 108   1              P2=0xff;
 109   1              P0=0xff;
 110   1              EA=1;
 111   1              ES=1;             //串行口中断开
 112   1              init();
 113   1          while(1)
 114   1                {
 115   2                         ReadTemperature();
 116   2                         print(0x80, Welcome2);
 117   2                         if(T_sign==1)
C51 COMPILER V8.02   HONGWAI                                                               07/31/2008 01:16:42 PAGE 3   

 118   2                             print1(0xc0,0x2d);
 119   2                         else 
 120   2                             print1(0xc0,0x2b);    
 121   2                         //if(t_bai!=0)
 122   2                             print1(0xc1,t_bai+0x30);
 123   2                        // else
 124   2                            // print1(0xc1,t_shi+0x30);   //消隐,不显示
 125   2                        // t_shi=3;
 126   2                         print1(0xc2,t_shi+0x30);
 127   2                         print1(0xc3,t_ge+0x30);
 128   2                         print1(0xc4,0x2e);               //显示点
 129   2                         print1(0xc5,t_feng+0x30);
 130   2                         print1(0xc6,t_miao+0x30);
 131   2                         print1(0xc7,0x43);              //显示'C
 132   2                         save();
 133   2                         if(P3_2==0)  
 134   2                              {
 135   3              //              SBUF='L';                  //发送
 136   3              //              while(TI==0);           //等待串口发送完毕      
 137   3              //                      TI=0;
 138   3                          send_str();
 139   3                                      while(P3_2==0);         //等待按键放
 140   3                              }
 141   2      
 142   2                }
 143   1       
 144   1      }
 145          /**********************************************************************************************
 146          函数名称:串口中断
 147          函数功能:串口中断函数
 148          说明:接受和返回主机的数据
 149          **********************************************************************************************/
 150          serial () interrupt 4 using 1
 151          {
 152   1          uchar i;
 153   1      /*    void print1(uchar a,uchar t); 
 154   1          void LCM1602_Init();
 155   1              void LCM1602_Delay(uchar count);
 156   1      
 157   1              LCM1602_Init();
 158   1              LCM1602_Delay(5000);
 159   1      */ 
 160   1              if(RI==1)
 161   1              {
 162   2                      RI=0;
 163   2                      for(i=0;i<5;i++)
 164   2                        {
 165   3                              dat[i]=SBUF;                    //接受
 166   3                        }
 167   2                      t_bai=dat[0];t_shi=dat[1];t_ge=dat[2];t_feng=dat[3];t_miao=dat[4];
 168   2                      if(t_shi==0x03&&t_ge>0x04)
 169   2                        {
 170   3                               SBUF='0';                 //发送
 171   3                               P1_0=0;
 172   3                                      
 173   3                        }
 174   2                      else
 175   2                              SBUF='1';
 176   2               
 177   2      /*               print1(0xc1,t_bai+0x30);
 178   2                       print1(0xc2,t_shi+0x30);
 179   2                       print1(0xc3,t_ge+0x30);
C51 COMPILER V8.02   HONGWAI                                                               07/31/2008 01:16:42 PAGE 4   

 180   2                       print1(0xc4,0x2e);               //显示点
 181   2                       print1(0xc5,t_feng+0x30);
 182   2                       print1(0xc6,t_miao+0x30);
 183   2                       print1(0xc7,0x43);              //显示'C
 184   2      */               while(TI==0);
 185   2                       TI=0;
 186   2              }
 187   1      }
 188          
 189          
 190          
 191          /**********************************************************************************************
 192          函数名称:读取温度函数
 193          函数功能:读取DS18B20的转换温度值
 194          说明:
 195          **********************************************************************************************/
 196          
 197          void ReadTemperature()               //获取温度源程序
 198          {
 199   1       void delay(unsigned int delay_time);
 200   1       void DS18B20_init();
 201   1       void DS18B20_send(unsigned char out_data);
 202   1       uchar DS18B20_read(void);
 203   1       unsigned int y=0;
 204   1       uchar a=0;
 205   1       uchar b=0;
 206   1      // unsigned char k;
 207   1       DS18B20_init();                   //初始化DS18B20
 208   1       DS18B20_send (0xcc);
 209   1       DS18B20_send (0x44);              //启动温度转换
 210   1       delay(125);

⌨️ 快捷键说明

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