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

📄 adc.c

📁 这是一种温度变送器的源代码
💻 C
字号:

#include<c8051f350.h>
#include"adc.h"
#include"variable.h"

/********************************************
函数名: Adc_init
功能: ADC初始化
形式参数:无
返回值:无
********************************************/
void Adc_init(void)
{
	ADC0CN	=0x10;//双极性输入,PGA增益=1
	REF0CN = 0x03; // 基准电压控制寄存器                                                                                                            
    ADC0CF  =0x04;//使用外部电压源
    ADC0MD  =0x80;//ADC0使能
	ADC0BUF	=0x00;
	ADC0CLK	=0x00;
    ADC0DECH=0x04;//抽取比
    ADC0DECL=0x00;
	ADC0STA = 0x00; // 清ADC0状态寄存器
	EIE1 &= ~0x08; // 禁止ADC0中断(查询采样时使用)
	ADC0MD |= 0x01;//  全内部校准(偏移、斜率)
	while (!AD0CALC);// 等待转换完成
	ADC0MD &= ~0x07;//  ADC0 为理想模式 
	AD0INT = 0; //clear pending sample indication
    ADC0MD |= 0x83; // 启动连续转换	
	deg=0;//采样次数
}
/********************************************
函数名: Dac_init
功能: DAC初始化
形式参数:无
返回值:无
********************************************/
void Dac_init(void)
{
	IDA1CN    = 0xF3;
}
/********************************************
函数名: Adc0_hdl
功能: 数据采样处理
形式参数:channel-通道代码
返回值:经过平均滤波后的采样值(补码表示)
********************************************/
int Adc0_hdl(unsigned char channel)
{
	unsigned char i;
	int temp,ret_value;//,min_value,max_value
	long temp_value=0;
	ADC0MD=0x83;
	ADC0MUX=channel;//通道选择
	//AD0BUSY=1;
	while(!AD0INT);
	AD0INT=0;	
	temp=ADC0H;//ret_value=ADC0;
	temp<<=8;
	temp+=ADC0M;
	Adc0_buffer[deg]=temp;
	//max_value=temp;
	//min_value=temp;
	for(i=0;i<8;i++)
	{
		//if(Adc0_buffer[i]>max_value)
		//	max_value=Adc0_buffer[i];
		//if(Adc0_buffer[i]<min_value)
		//	min_value=Adc0_buffer[i];
		temp_value+=Adc0_buffer[i];
	}
	//temp_value=temp_value-max_value-min_value+2;
	temp_value=temp_value+4;
	temp_value/=8;
	ret_value=(int)temp_value;
	deg++;
	if(deg==8)
		deg=0;
	return ret_value;	
}

int Adc0_hdl_f(unsigned char channel)
{
	unsigned char i;
	int s;
	for(i=0;i<8;i++)
		s=Adc0_hdl(channel);
	return s;
}
/********************************************
函数名: Dac0_hdl
功能: DAC输出处理
形式参数:无
返回值:无
********************************************/
void Dac_hdl(unsigned char Daout)
{
	IDA1=Daout;
}

⌨️ 快捷键说明

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