?? main.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 + -