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

📄 main.lst

📁 单片机开发板配套52个程序(c语言源代码)
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  09/30/2011 15:04:05 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\main.lst) OBJECT(.\obj\main.ob
                    -j)

stmt level    source

   1          /*-----------------------------------------------
   2            名称:IIC协议 PCF8591 AD/DA转换 测试热敏电阻
   3            修改:无
   4            内容:使用1路ad测试热敏电阻阻值,并查表得到温度值,温度精度和多种参数有关。
   5          ------------------------------------------------*/  
   6          #include <reg52.h>                
   7          #include "i2c.h"
   8          #include "delay.h"
   9          #include "display.h"
  10          
  11          
  12          code unsigned int  vt_table[]=  // 电压温度对照表
  13                  {
  14                          4132,4098,4063,4026,3988,3949,3908,3866,3823,3779,
  15                          3733,3686,3639,3590,3540,3489,3437,3385,3331,3277,
  16                          3222,3166,3110,3054,2997,2940,2882,2824,2767,2709,
  17                          2651,2593,2536,2478,2421,2365,2309,2253,2198,2143,
  18                          2089,2036,1984,1932,1881,1831,1782,1734,1686,1640,
  19                          1594,1550,1506,1464,1422,1381,1341,1303,1265,1228,
  20                          1192
  21                  
  22                  };
  23          
  24          #define AddWr 0x90   //写数据地址 PCF8591
  25          #define AddRd 0x91   //读数据地址 PCF8591
  26          
  27          extern bit ack;
  28          unsigned char ReadADC(unsigned char Chl);
  29          /*------------------------------------------------
  30                        主程序
  31          ------------------------------------------------*/
  32          main()
  33          {
  34   1       unsigned int num=0;
  35   1       unsigned char i,temp;
  36   1       Init_Timer0();
  37   1      
  38   1      while (1)         //主循环
  39   1        {
  40   2        
  41   2       num=255-ReadADC(2);
  42   2      //变成mv 最大值255 。255x19=4845mv,如果增加精度可以使用浮点计算
  43   2       num=num*19;    
  44   2       for(i=0;i<61;i++)
  45   2         {
  46   3      //判断采集电压值大于或者等于表格电压时,停下来并记录当前i值
  47   3          if(num >= vt_table[i])
  48   3             {
  49   4              temp=i;
  50   4      //如果是前10个数据表明是负温度,需要把温度符号显示出来,并且前10位温度递增
  51   4              if(i<10) 
  52   4                {
  53   5                temp=10-temp;    //如果i=0,表示-10
  54   5                TempData[0]=0x40;//'-'号
C51 COMPILER V7.06   MAIN                                                                  09/30/2011 15:04:05 PAGE 2   

  55   5                }
  56   4              else
  57   4                {
  58   5                temp-=10; //如果大于等于10表明正温度,把前10个表格负温度去掉
  59   5                TempData[0]=0x00;//符号位显示空
  60   5                }
  61   4                      break;             //检测到即跳出循环,否则继续循环
  62   4              }
  63   3                
  64   3            }
  65   2       TempData[3]=dofly_DuanMa[temp/10];//显示2位数温度值
  66   2       TempData[4]=dofly_DuanMa[temp%10];
  67   2       DelayMs(200);                    //延时防止采集频率过快
  68   2        }
  69   1      }
  70          /*------------------------------------------------
  71                       读AD转值程序
  72          输入参数 Chl 表示需要转换的通道,范围从0-3
  73          返回值范围0-255
  74          ------------------------------------------------*/
  75          unsigned char ReadADC(unsigned char Chl)
  76           {
  77   1         unsigned char Val;
  78   1         Start_I2c();               //启动总线
  79   1         SendByte(AddWr);             //发送器件地址
  80   1           if(ack==0)return(0);
  81   1         SendByte(0x40|Chl);            //发送器件子地址
  82   1           if(ack==0)return(0);
  83   1         Start_I2c();
  84   1         SendByte(AddWr+1);
  85   1            if(ack==0)return(0);
  86   1         Val=RcvByte();
  87   1         NoAck_I2c();                 //发送非应位
  88   1         Stop_I2c();                  //结束总线
  89   1        return(Val);
  90   1       }
  91          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    187    ----
   CONSTANT SIZE    =    122    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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