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

📄 wskz_sht11.lst

📁 温湿度传感器 sht11 仿真程序下载
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   WSKZ_SHT11                                                            04/20/2008 10:38:46 PAGE 1   


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

line level    source

   1           #include <reg52.h>  //头文件
   2           #include <intrins.h>
   3           #include <stdio.h> //
   4          #include <math.h>    //Keil library  
   5          
   6          //**************************************
   7          
   8          #define uchar unsigned char //定义一下方便使用
   9          #define uint  unsigned int //定义一下方便使用
  10          #define ulong unsigned long //定义一下方便使用
  11          
  12          
  13          #define TEMP_ML 0x03   //000   0001    1 温度命令
  14          #define HUMI_ML 0x05   //000   0010    1 温度命令
  15          unsigned char error  ;//全局错误变量
  16          unsigned char ack  ;//全局应答变量
  17          //float temp_zi  ;//全局应答变量
  18          //float humi_zi  ;//全局应答变量
  19          unsigned char temp_h  ;//全局应答变量
  20          unsigned char temp_LL  ;//全局应答变量
  21          
  22           unsigned  int  xianzhi_t=0;//温度显值
  23           unsigned  int  xianzhi_h=0;//湿度显值
  24          
  25          
  26          uchar setzhi_h,setzhi_l;
  27          bit   setbz_h,setbz_l,setkey;
  28          
  29          
  30           sbit DATA =P2^6;//数据
  31           sbit SCK=P2^7;//时钟
  32           sbit hot =P2^0;// 加热
  33           sbit motor =P2^1;// 电机
  34           sbit speek =P2^2;// 声音
  35           sbit set =P0^0;//  设置
  36           sbit setup =P0^1;//  设置+
  37           sbit setdown =P0^2;//  设置-
  38          
  39           sbit   gwei =P3^4;//个位
  40           sbit   swei =P3^3;//十位
  41           sbit   bwei =P3^2;//百位
  42           sbit   qwei =P3^1;//千位
  43           unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳
  44          
  45          
  46          
  47          //*******************************基本驱动程
  48          
  49          
  50          
  51          /////////////////
  52           //////////////////////
  53          
  54          
  55          char read() //读一个字节 返回应答信号
C51 COMPILER V8.02   WSKZ_SHT11                                                            04/20/2008 10:38:46 PAGE 2   

  56          //----------------------------------------------------------------------------------
  57          // reads a byte form the Sensibus and gives an acknowledge in case of "ack=1" 
  58          { 
  59   1        unsigned char i,val=0;
  60   1        temp_LL=0;
  61   1        temp_h=0;
  62   1        DATA=1;                           //释放数据总线
  63   1        for (i=0x80;i>0;i/=2)             //位移8位
  64   1        { SCK=1;                          //上升沿读入
  65   2          if (DATA) val=(val | i);        //确定值  
  66   2          SCK=0;                                       
  67   2        }
  68   1         DATA=0;                        //读应答信号,有应答为1,为应答为0 通过CPU下拉为应答
  69   1        SCK=1;                            //第9个脉冲
  70   1         _nop_(); _nop_(); _nop_();          //pulswith approx. 5 us 
  71   1        SCK=0;                                                    
  72   1        DATA=1;                           //释放数据总线
  73   1        temp_h=val;
  74   1        val=0;
  75   1      
  76   1       ////低8位/////////////////////////////
  77   1      
  78   1          DATA=1;                           //释放数据总线
  79   1        for (i=0x80;i>0;i/=2)             //位移8位
  80   1        { SCK=1;                          //上升沿读入
  81   2          if (DATA) val=(val | i);        //确定值  
  82   2          SCK=0;                                       
  83   2        }
  84   1         DATA=1;//0;                        //不需要应答 通过CPU下拉为应答
  85   1        SCK=1;                            //第9个脉冲
  86   1         _nop_(); _nop_(); _nop_();          //pulswith approx. 5 us 
  87   1        SCK=0;                                                    
  88   1        DATA=1;                           //释放数据总线
  89   1        temp_LL=val;
  90   1      
  91   1       }
*** WARNING C173 IN LINE 91 OF WSKZ_SHT11.C: missing return-expression
  92          ////////////
  93          
  94          
  95            char write(unsigned char value) //写一个字节 返回应答信号
  96          //---------------------------------------------------------
  97          { 
  98   1        unsigned char i ;
  99   1         ack=0;  
 100   1        for (i=0x80;i>0;i/=2)             //释放数据总线
 101   1        { if (i & value) DATA=1;          //写入值
 102   2          else DATA=0;                        
 103   2          SCK=1;                          //上升沿写入
 104   2           _nop_(); _nop_(); _nop_();        //延时   
 105   2          SCK=0;
 106   2        }
 107   1        DATA=1;                           //释放数据总线
 108   1        SCK=1;                            //第9个脉冲
 109   1        if  (DATA==1) ack=1;
 110   1                               //读应答信号
 111   1        SCK=0;        
 112   1        return ack;                     //error=1 表示没有应答
 113   1      }
 114          ////////
 115          
 116          void start_sht11(void)  //启动
C51 COMPILER V8.02   WSKZ_SHT11                                                            04/20/2008 10:38:46 PAGE 3   

 117          //--------------------------------------------------------
 118          {  
 119   1         DATA=1; SCK=0;                   //数据为1,SCK=0
 120   1          _nop_();
 121   1         SCK=1;                          //第一个脉冲
 122   1          _nop_();
 123   1         DATA=0;                         //数据跌落
 124   1          _nop_ ();
 125   1         SCK=0;                         //完成一个脉冲
 126   1          _nop_(); _nop_(); _nop_();
 127   1         SCK=1;                         //再一个脉冲
 128   1          _nop_();
 129   1         DATA=1;                        //数据变为1              
 130   1          _nop_();
 131   1         SCK=0;                         //完成该脉冲             
 132   1      }
 133          
 134          
 135          //////////////////////////////////
 136          void sht_rest(void)  //复位
 137             
 138          {  
 139   1        unsigned char i; 
 140   1        DATA=1; SCK=0;                    //数据为1 时钟为0
 141   1        for(i=0;i<9;i++)                  //9 个脉冲为 复位
 142   1        { SCK=1;
 143   2          SCK=0;
 144   2        }
 145   1        start_sht11();                   //启动
 146   1      }
 147          
 148          ////////////////////////////////
 149          
 150          
 151                                    //测量温度或者是温度,返回校验值
 152            text_a(unsigned char ml)
 153                  { 
 154   1                       unsigned int i;
 155   1      
 156   1                       start_sht11();                   //启动
 157   1                       write(ml);//写入测温度
 158   1                       if (ack==1) 
 159   1                          {
 160   2                                  sht_rest() ;//复位
 161   2                               write(ml);//写入测温度
 162   2                   }
 163   1             
 164   1                //判断是否处于忙
 165   1      
 166   1              //       DATA=1;//释放数据总线
 167   1            //for (i=0;i<65535;i++) if(DATA==0) break; 
 168   1      
 169   1               for (i=0;i<55535;i++){ if(DATA==0) break;else  {xianshi();} }
*** WARNING C206 IN LINE 169 OF WSKZ_SHT11.C: 'xianshi': missing function-prototype
 170   1      
 171   1      
 172   1                       read();//读温度
 173   1      
 174   1      
 175   1        }
 176          
 177          
C51 COMPILER V8.02   WSKZ_SHT11                                                            04/20/2008 10:38:46 PAGE 4   

 178          /////////温湿度处理//////
 179          
 180              text_jishuan_temp11()
 181                  {
 182   1                 error=0;
 183   1                 ack=0;
 184   1            sht_rest() ;//复位
 185   1      
 186   1                 text_a(TEMP_ML);
 187   1      
 188   1            text_jishuan_temp();
*** WARNING C206 IN LINE 188 OF WSKZ_SHT11.C: 'text_jishuan_temp': missing function-prototype
 189   1                 key();

⌨️ 快捷键说明

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