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

📄 adc.h

📁 C8051F020单片机AD转换程序
💻 H
字号:
/***********************************************************************************
*  Copyright (c) 2004,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* 文件名称: ADC0.H
* 文件标识: none
* 适用器件: C8051F020
* 
* 摘 要: 本文件是AD子程序头文件;使用外部22.1184MHz晶振
* 
* 当前版本:1.1
* 作 者:刘大伟
* 完成日期:2007年2月9日
*
* 历史版本:1.0
* 作 者:卢 阳
* 完成日期:2004年11月14日
*
* 历史版本:0.9 
* 原作者 : 李林利
* 完成日期:2004年1月1日
************************************************************************************/
#ifndef __ADC_h__
#define __ADC_h__

/************************************************************************************
* 常量及全局变量定义
*************************************************************************************/
static unsigned int xdata ADC0_result[9];			// AIN0-7和温度传感器数值寄存数组
static unsigned int xdata ADC1_result[8];			// 8Bit ADC1 数值寄存数组

sfr16 TMR3RL   = 0x92;                 		// Timer3 reload value
#define Timer3_Reload_init	TMR3RL			// 定时器3重装载数值寄存器
sfr16 TMR3     = 0x94;                 		// Timer3 counter
#define TMR3_Count_Start  	TMR3=0xffff		// 设置定时器3计满溢出,立即装载.
#define SYSCLK       		22118400        // SYSCLK frequency in Hz
#define BAUDRATE     		115200          // Baud rate of UART in bps
#define SAMPLERATE0  		50000           // ADC0 Sample frequency in Hz
#define VREF0        		2500            // VREF voltage in millivolts
#define ADC0_IntFlag_Clear	AD0INT=0		// 清零AD中断标志位
#define ADC0_Start			AD0EN=1			// ADC0中断使能
#define ADC0_Stop			AD0EN=0			// ADC0中断使能关闭
#define DISABLE_INTERRUPTS  EA=0			// 中断禁止
#define ENABLE_INTERRUPTS   EA=1			// 中断允许
#define ADC0_Channel 		AMX0SL			// ADC0通道寄存器
#define ADC0_Channel_0 		AMX0SL=0x00		// ADC0使用"0"通道
#define Timer3_Stop		TMR3CN = 0x02  		// 清除定时器3中断标志位,定时器3禁止。
#define Timer3_Start	TMR3CN|= 0x04  		// 定时器3开启
#define DISABLE_Tmr3	EIE2&=0xFE			// 定时器3中断允许
#define ENABLE_ADC3		EIE2|=0x02			// 打开ADC0中断
#define ADC0_Ctr_Set	ADC0CN = 0x45		// ADC0控制设置,定时器3溢出启动AD转换,数据左对齐
#define REF_Ctr_Set		REF0CN = 0x07		// 打开温度传感器, on-chip VREF
#define ADC0_Gain		ADC0CF&=0xf8		// ADC0增益设置
#define SAR0_Clk		2500000				// ADC0 SAR转换时钟数值
#define	SAR0_Clk_Set	ADC0CF=(SYSCLK/SAR0_Clk)<<3		// ADC0 SAR转换时钟数值设置
											// 请参考C8051F020.PDF

/******************************函数外部引用声明**************************************/
/***********************************************************************************
* 函数名称:ADC0_Init;
*
* 函数功能描述:设置ADC0使用定时器Timer3溢出作为转换源,转换完成后产生中断,使用左对齐输出模式
*              
* 输入参数:unsigned int类型指针,是ADC0使用时存放返回数据数组的指针;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/
void ADC0_Init (void);

/***********************************************************************************
* 函数名称:Timer3_Init;
*
* 函数功能描述:lcd_init;
*              
* 输入参数:none;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/
void Timer3_Init (int counts);

/***********************************************************************************
* 函数名称:ADC0_enable
*
* 函数功能描述:ADC0开关,1:打开;0:关闭
*              
* 输入参数:1:打开;0:关闭
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/
void ADC0_enable(unsigned char flag);

/***********************************************************************************
* 函数名称:ADC_Value;
*
* 函数功能描述:ADC0,ADC1转换完成后数据寄存器数据转换成unsigned int型
*              
* 输入参数:unsigned char类型,"0"为选择转换ADC0数据格式,非"0"为选择转换ADC1数据格式;
*
* 返回数据:unsigned int类型,当前AD转换完成后的unsigned int类型数据量;
*
* 注意:    none;
************************************************************************************/
unsigned int ADC_Value (unsigned char Flag);

/***********************************************************************************
* 函数名称:ADC_Value_Return;
*
* 函数功能描述:主程序通过此函数取得ADC0目标通道数据
*              
* 输入参数:unsigned char类型,ADC0通道号;
*
* 返回数据:unsigned int类型,ADC0通道对应的数据;
*
* 注意:    ADC0共有9个通道(包括温度通道),注意范围,超出范围返回0XFFFF;
************************************************************************************/
unsigned int ADC_Valud_Return (unsigned char channel);

/************************************************************************************/
#endif

/*************************************************************************************
* 文件结束
**************************************************************************************/

⌨️ 快捷键说明

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