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

📄 main.lst

📁 ADC数据采集实例
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  04/04/2006 16:00:50 PAGE 1   


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

line level    source

   1          //#pragma src
   2          //              ***************交流采样测试成功****************
   3          
   4          /*======================================================
   5          CopyRight by   Protronic .Ltd
   6          Project:                AC Voltage Caputure testing system 
   7          Fiel Name:              at89s52
   8          Creator:                LaiYongZhong
   9          Create Date:    2005/08/20
  10          Last modify:    2006/02/20
  11          
  12          
  13          
  14           交流采样原理:就是根据一个周期各采样瞬时值及每周期采样点数计算电压信号有效值的公式。
  15          
  16          计算步骤:                                                 
  17                  1: 先计算每次采样数据对应的实际电压值(要跟据A/D,基准参数确定),再求其平方
  18                  2:     再将N次采样实际电压值的平方值求和,然后求其平均值
  19                  3:     将平均值开方,得出的数值就是电压的有效值了。
  20          
  21          
  22          注意:此采用的A/D器件应有允许‘正负输入’这一量程。如:MAX1271,ADS7808,等
  23          =======================================================*/
  24          //////////////////////////////////////////////////////////////////////////////
  25                           #include<REG51.h>
  26                           #include<intrins.h>
  27                           #include<absacc.h>
  28                           #include<math.h>
  29                           #include<stdio.H>
  30                           #include<string.h>
  31                  
  32          ////////////////////////////////////////////////////////////////////////////////
  33          
  34          //#define _PC_DEBUG_
  35          
  36          
  37          
  38          #define uchar unsigned char
  39          #define uint unsigned int
  40          #define ulong unsigned long
  41          
  42          
  43          #define nop _nop_()
  44          #define  Timeout                0xfff
  45          #define  ADCPoint_SIZE   50
  46          #define  Vref                   10              //+/-5v 
  47          #define  LSB_12bit              4096
  48          #define  TRUE                   1
  49          #define  FALSE                  0
  50          //-----输入口----------
  51                  ////////ADS7808(12BIT)///////////////
  52                  sbit ADS7808_RC          =P1^3 ; 
  53                  sbit ADS7808_CLK         =P1^4 ;
  54                  sbit ADS7808_CS          =P1^5;
  55                  sbit ADS7808_DATA        =P1^7 ;
C51 COMPILER V7.50   MAIN                                                                  04/04/2006 16:00:50 PAGE 2   

  56          
  57          
  58                  sbit TEST_key                   =P3^6;
  59          
  60          //============================================================== 
  61          
  62          uint    idata  *pADC_buffer     ;                        //定义存放A/D转换结果的数组,
  63          static  uchar  byADC_count;
  64          bit                        bSTART_ADC;
  65          
  66          //-----------------------------------------------------------------
  67          #define XPORT1 XBYTE[0X000] 
  68          #define XPORT2 XBYTE[0X001]
  69                  
  70          //##################################################
  71          ////////////////////////////////////////////////////
  72          //        初始化系统
  73          
  74          ///////////////////////////////////////////////////
  75          void INI_SYS(void){
  76   1               uint i;
  77   1      
  78   1               P0=P1=P2=P3=0XFF;
  79   1               pADC_buffer=0x80;
  80   1      //      pADC_buffer[0]=0x44;
  81   1      
  82   1              TMOD=  0X01;            //T0 model1   16bit
  83   1              TL0     =       0XE0;
  84   1              TH0     =       0XFC;                   //400US    
  85   1              ET0 =   1;                                                                        
  86   1              EA  =   1;
  87   1      
  88   1              for(i=0;i<ADCPoint_SIZE;i++)    pADC_buffer[i]=0;
  89   1                      
  90   1              #ifdef _PC_DEBUG_
                              SCON  = 0x50;                   /* SCON: mode 1, 8-bit UART, enable rcvr      */
                      TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
                      TL1=TH1   = 0XFD;                /* TH1:  reload value for 1200 baud @ 16MHz   */
                      TR1   = 1;                  /* TR1:  timer 1 run                          */
                      TI    = 1;                  /* TI:   set TI to send first char of UART    */
                      #endif
  97   1                              
  98   1              
  99   1      }
 100          ////////////////////////////////////////
 101          
 102          
 103          //================================================
 104          void delay1ms(uchar m)
 105          {
 106   1              uint i;
 107   1        do{
 108   2        m--  ;
 109   2         for(i=1000;i>0;i--);
 110   2              }while(m) ;
 111   1       
 112   1              
 113   1      }
 114          
 115          
 116          
 117          /*****************************************************************
C51 COMPILER V7.50   MAIN                                                                  04/04/2006 16:00:50 PAGE 3   

 118          函数原型:       void Read2_ADS7808(void)
 119          参数:          无
 120          返回值:  Read       
 121          描述:          读ADS7808数据存于指定数组中(12bit数据)(1次读性12bit)
 122          
 123          测试Y/N:        N   
 124          ****************************************************************/
 125          uint Read_ADS7808(void)
 126                  {
 127   1              uint Read=0x0000;
 128   1              uchar i;
 129   1      
 130   1              ADS7808_CS=0;           //开芯片使能
 131   1              ADS7808_RC=0;           //读使能(1:读数据操作:0:启动转

⌨️ 快捷键说明

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