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

📄 main.lst

📁 LM75A温度传感器的读写程序
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  10/24/2006 10:05:24 PAGE 1   


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

stmt level    source

   1          /*
   2                  main.c
   3                  LM75A数字温度计
   4          */
   5          
   6          
   7          #include "Disp.h"
   8          #include "I2C.h"
   9          #include <reg51.h>
  10          #include <string.h>
  11          #include <stdio.h>
  12          
  13          
  14          /*
  15          函数:Delay()
  16          功能:延时1ms~65.536s
  17          参数:
  18                  t>0时,延时(t*0.001)s
  19                  t=0时,延时65.536s
  20          */
  21          void Delay(unsigned int t)
  22          {
  23   1              do
  24   1              {
  25   2                      TH0 = 0xFC;
  26   2                      TL0 = 0x66;
  27   2                      TR0 = 1;
  28   2                      while ( !TF0 );
  29   2                      TR0 = 0;
  30   2                      TF0 = 0;
  31   2              } while ( --t != 0 );
  32   1      }
  33          
  34          
  35          /*
  36          函数:SysInit()
  37          功能:系统初始化
  38          */
  39          void SysInit()
  40          {
  41   1              TMOD &= 0xF0;
  42   1              TMOD |= 0x01;   //设置T0为16位定时器
  43   1              DispInit();             //数码管扫描显示初始化
  44   1              I2C_Init();             //初始化I2C总线
  45   1      }
  46          
  47          
  48          /*
  49          函数:LM75A_GetTemp
  50          功能:读出LM75A的温度值
  51          返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)
  52          */
  53          int LM75A_GetTemp()
  54          {
  55   1              unsigned char buf[2];
C51 COMPILER V7.06   MAIN                                                                  10/24/2006 10:05:24 PAGE 2   

  56   1              int t;
  57   1              I2C_Gets(0x90,0x00,2,buf);
  58   1              t = buf[0];
  59   1              t <<= 8;
  60   1              t += buf[1];
  61   1              t >>= 5;        //去掉无关位
  62   1              return t;
  63   1      }
  64          
  65          
  66          /*
  67          函数:DispTemp()
  68          功能:在数码管上显示出温度值
  69          参数:
  70                  t:补码,除以8以后才是真正温度值
  71          */
  72          void DispTemp(int t)
  73          {
  74   1              bit f = 1;
  75   1              unsigned char i;
  76   1              unsigned char c;
  77   1              float x;
  78   1              unsigned char s[10];
  79   1              x = (float)t / 8.0;
  80   1              sprintf(s,"%g",x);
  81   1              for ( i=0; i<4; i++ )
  82   1              {
  83   2                      c = s[i];
  84   2                      if ( c == '\0' ) break;
  85   2                      if ( c == '.' )
  86   2                      {
  87   3                              DispDotOn(i-1);
  88   3                              f = 0;
  89   3                      }
  90   2                      else
  91   2                      {
  92   3                              if ( !f )
  93   3                              {
  94   4                                      switch(c)
  95   4                                      {
  96   5                                      case '3':
  97   5                                              c = '0';
  98   5                                              break;
  99   5                                      case '8':
 100   5                                              c = '5';
 101   5                                              break;
 102   5                                      default:
 103   5                                              break;
 104   5                                      }
 105   4                              }
 106   3                              DispChar(c);
 107   3                      }
 108   2              }
 109   1              if ( f )
 110   1              {
 111   2                      DispDotOn(i-1);
 112   2                      DispChar('0');
 113   2              }
 114   1      }
 115          
 116          
 117          void main()
C51 COMPILER V7.06   MAIN                                                                  10/24/2006 10:05:24 PAGE 3   

 118          {
 119   1              int t;
 120   1              SysInit();
 121   1              for (;;)
 122   1              {
 123   2                      t = LM75A_GetTemp();
 124   2                      DispClear();
 125   2                      DispTemp(t);
 126   2                      Delay(1000);
 127   2              }
 128   1      }
 129          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    235    ----
   CONSTANT SIZE    =      3    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      16
   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 + -