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

📄 adc0809.lst

📁 一个集合DS18B20的多路温度测量系统,加上adc0809数据采集,加上1602液晶显示的综合数据处理系统,有较高学习价值.
💻 LST
字号:
C51 COMPILER V8.02   ADC0809                                                               01/17/2007 05:33:06 PAGE 1   


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

line level    source

   1          #include "system.h"
   2          #include <INTRINS.H>                              //为调用nop空指令需要
   3          
   4          /****************宏定义********************/
   5          #define         DS_NOP()                _nop_();_nop_();_nop_();_nop_()
   6          
   7          #define         REF_Voltage1     5.03     //ADC0809基准电压
   8          #define         REF_Voltage2     -5.02    //ADC0809基准电压
   9          
  10          #define         PLUS_CH0                1             //各个通道增益
  11          #define         PLUS_CH1                1
  12          #define         PLUS_CH2                1
  13          #define         PLUS_CH3                1
  14          #define         PLUS_CH4                1
  15          #define         PLUS_CH5                1
  16          #define     PLUS_CH6        1
  17          #define     PLUS_CH7        5
  18          
  19          
  20          
  21          /**************ADC0809引脚定义**********/
  22          sbit            ST              = P2^5;
  23          sbit            OE              = P2^4;
  24          sbit            EOC             = P2^3;
  25          sbit            ADC0809_C       = P2^2;
  26          sbit            ADC0809_B       = P2^1;
  27          sbit            ADC0809_A       = P2^0;
  28          
  29          
  30          
  31          
  32                  
  33          /*****************************************************
  34          ADC0809转换函数
  35          输入: 通道号(0-7)
  36          返回: 测量到的模拟电压所对应的数字量
  37          *****************************************************/
  38          unsigned char ADC0809test(unsigned char ch0)
  39          {
  40   1              unsigned char ADCdata;                  //AD转换后得到的数字量
  41   1      
  42   1              ST  = 0;
  43   1              EOC = 1;
  44   1              OE  = 0;
  45   1      
  46   1              switch(ch0)
  47   1              {
  48   2                      case 0:
  49   2                      {
  50   3                              ADC0809_A = 0;
  51   3                              ADC0809_B = 0;
  52   3                              ADC0809_C = 0;
  53   3                              break;  
  54   3                      }
  55   2                      case 1:
C51 COMPILER V8.02   ADC0809                                                               01/17/2007 05:33:06 PAGE 2   

  56   2                      {
  57   3                              ADC0809_A = 1;
  58   3                              ADC0809_B = 0;
  59   3                              ADC0809_C = 0;
  60   3                              break;  
  61   3                      }
  62   2                      case 2:
  63   2                      {
  64   3                              ADC0809_A = 0;
  65   3                              ADC0809_B = 1;
  66   3                              ADC0809_C = 0;
  67   3                              break;  
  68   3                      }
  69   2                      case 3:
  70   2                      {
  71   3                              ADC0809_A = 1;
  72   3                              ADC0809_B = 1;
  73   3                              ADC0809_C = 0;
  74   3                              break;  
  75   3                      }
  76   2                      case 4:
  77   2                      {
  78   3                              ADC0809_A = 0;
  79   3                              ADC0809_B = 0;
  80   3                              ADC0809_C = 1;
  81   3                              break;  
  82   3                      }
  83   2                      case 5:
  84   2                      {
  85   3                              ADC0809_A = 1;
  86   3                              ADC0809_B = 0;
  87   3                              ADC0809_C = 1;
  88   3                              break;  
  89   3                      }
  90   2                      case 6:
  91   2                      {
  92   3                              ADC0809_A = 0;
  93   3                              ADC0809_B = 1;
  94   3                              ADC0809_C = 1;
  95   3                              break;  
  96   3                      }
  97   2                      case 7:
  98   2                      {
  99   3                              ADC0809_A = 1;
 100   3                              ADC0809_B = 1;
 101   3                              ADC0809_C = 1;
 102   3                              break;  
 103   3                      }
 104   2                      default:break;
 105   2              }
 106   1              ST = 1;
 107   1              ST = 0;
 108   1              DS_NOP();
 109   1      
 110   1              while(EOC == 0)
 111   1              {
 112   2                ;
 113   2              }
 114   1              if(EOC == 1)
 115   1              {
 116   2                      OE = 1;
 117   2                      ADCdata  = P0;
C51 COMPILER V8.02   ADC0809                                                               01/17/2007 05:33:06 PAGE 3   

 118   2                      return (ADCdata); 
 119   2              }
 120   1      }
 121          
 122          /*******************************************************
 123           电压测量并装换成实际的电压值
 124          入口参数: AD_ChannelNumber 输入通道号:在0-7之间选择 
 125          出口参数: 转换后的电压值,实际的值
 126          ********************************************************/
 127          float VoltageSurvey(unsigned char AD_ChannelNumber)
 128          {
 129   1              float  SurveyVoltage;                                                                           //测量到的电压值
 130   1              float  plus_ch;                                                                                         //通道增益
 131   1              
 132   1              switch(AD_ChannelNumber)
 133   1              {
 134   2                      case 0: plus_ch = PLUS_CH0;break;
 135   2                      case 1: plus_ch = PLUS_CH1;break;
 136   2                      case 2: plus_ch = PLUS_CH2;break;
 137   2                      case 3: plus_ch = PLUS_CH3;break;
 138   2                      case 4: plus_ch = PLUS_CH4;break;
 139   2                      case 5: plus_ch = PLUS_CH5;break;
 140   2                      case 6: plus_ch = PLUS_CH6;break;
 141   2                      case 7: plus_ch = PLUS_CH7;break;
 142   2                  default:break;
 143   2              }
 144   1              SurveyVoltage = ADC0809test(AD_ChannelNumber);
 145   1              SurveyVoltage = (SurveyVoltage / 256) * REF_Voltage1 * plus_ch; 
 146   1              return(SurveyVoltage);
 147   1      }   
 148             
 149          
 150          
 151            
 152          /*******************************************************
 153          负5V电压测量并装换成实际的电压值
 154          入口参数: AD_ChannelNumber 输入通道号:在3 
 155          出口参数: 转换后的电压值,实际的值
 156          ********************************************************
 157          
 158          unsigned char fuvoltage(void)
 159          {
 160                  float fudianya;
 161                  float fudianya1;
 162                  fudianya = VoltageSurvey(5);
 163                  fudianya1 = (fudianya + 5) - 2*fudianya;
 164                  return(fudianya1);
 165          }*/
 166            


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