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

📄 main.c

📁 ADC数据采集实例
💻 C
字号:
//#pragma src
//		***************交流采样测试成功****************

/*======================================================
CopyRight by   Protronic .Ltd
Project:		AC Voltage Caputure testing system 
Fiel Name:		at89s52
Creator:		LaiYongZhong
Create Date:	2005/08/20
Last modify: 	2006/02/20



 交流采样原理:就是根据一个周期各采样瞬时值及每周期采样点数计算电压信号有效值的公式。

计算步骤:						   
	1: 先计算每次采样数据对应的实际电压值(要跟据A/D,基准参数确定),再求其平方
	2:	再将N次采样实际电压值的平方值求和,然后求其平均值
	3:	将平均值开方,得出的数值就是电压的有效值了。


注意:此采用的A/D器件应有允许‘正负输入’这一量程。如:MAX1271,ADS7808,等
=======================================================*/
//////////////////////////////////////////////////////////////////////////////
	 	 #include<REG51.h>
	 	 #include<intrins.h>
		 #include<absacc.h>
		 #include<math.h>
		 #include<stdio.H>
		 #include<string.h>
	
////////////////////////////////////////////////////////////////////////////////

//#define _PC_DEBUG_



#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long


#define nop _nop_()
#define  Timeout 		0xfff
#define  ADCPoint_SIZE   50
#define  Vref 			10		//+/-5v 
#define  LSB_12bit		4096
#define  TRUE			1
#define  FALSE			0
//-----输入口----------
	////////ADS7808(12BIT)///////////////
	sbit ADS7808_RC          =P1^3 ; 
	sbit ADS7808_CLK         =P1^4 ;
	sbit ADS7808_CS          =P1^5;
	sbit ADS7808_DATA        =P1^7 ;


	sbit TEST_key			=P3^6;

//============================================================== 

uint 	idata  *pADC_buffer	;	   		 //定义存放A/D转换结果的数组,
static  uchar  byADC_count;
bit			   bSTART_ADC;

//-----------------------------------------------------------------
#define XPORT1 XBYTE[0X000] 
#define XPORT2 XBYTE[0X001]
	
//##################################################
////////////////////////////////////////////////////
//        初始化系统

///////////////////////////////////////////////////
void INI_SYS(void){
	 uint i;

	 P0=P1=P2=P3=0XFF;
	 pADC_buffer=0x80;
//	pADC_buffer[0]=0x44;

   	TMOD=  0X01;		//T0 model1   16bit
	TL0	=	0XE0;
	TH0	=	0XFC;  			//400US    
	ET0 =   1;									  
	EA  =   1;

	for(i=0;i<ADCPoint_SIZE;i++)	pADC_buffer[i]=0;
		
	#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
		  	
	
}
////////////////////////////////////////


//================================================
void delay1ms(uchar m)
{
	uint i;
  do{
  m--  ;
   for(i=1000;i>0;i--);
	}while(m) ;
 
	
}



/*****************************************************************
函数原型:	void Read2_ADS7808(void)
参数:		无
返回值:	 Read	    
描述:		读ADS7808数据存于指定数组中(12bit数据)(1次读性12bit)

测试Y/N:	N   
****************************************************************/
uint Read_ADS7808(void)
	{
	uint Read=0x0000;
	uchar i;

	ADS7808_CS=0;		//开芯片使能
	ADS7808_RC=0;		//读使能(1:读数据操作:0:启动转

⌨️ 快捷键说明

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