基本信息
源码名称:AD7682.zip
源码大小:1.43KB
文件格式:.zip
开发语言:Java
更新时间:2019-08-04
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
/******************************************************************************* ** 文件名称:ad7682.c ** 功 能: ** 修改日志: ********************************************************************************/ #include "ad7682.h" #include "includes.h" /******************************************************************************* ** 函数名称:void Delay_1us(uint count) ** 功 能: count为1时延时1us ** 修改日志: *******************************************************************************/ static void Delay_1us(uint count) { for(uchar i=0 ; i<count ;i ) { for(uchar j=0; j<1;j ) { _NOP(); } } } /****************************************************************************** ** 函数名称:INT16U AD7682_spi(INT8U ch) ** 功 能: reg寄存器内容,data转换数据 ** 修改日志: *******************************************************************************/ INT16U AD7682_spi(INT8U ch) { INT16U reg=0; INT16U data=0; CS_LOW; SCLK_LOW; reg = (1<<13)|(7<<10)|(ch<<7)|(1<<6)|(1<<0); reg <<=2; //寄存器只用到了14位,所以要先移出高两位 Delay_1us(10); for(INT8U i=0; i<16; i ) { if(reg&0x8000) DIN_HIGH; else DIN_LOW; Delay_1us(10); reg<<=1; SCLK_HIGH; Delay_1us(20); data<<=1; if(DOUT_READ) data|=1; SCLK_LOW; Delay_1us(20); } CS_HIGH; Delay_1us(20); return (data); } /****************************************************************************** ** 函数名称:void AD7682_init(void) ** 功 能: ** 修改日志: *******************************************************************************/ void AD7682_init(void) { DOUT_DIR_INPUT; CS_DIR_OUTPUT; DIN_DIR_OUTPUT; SCLK_DIR_OUTPUT; CS_HIGH; DIN_HIGH; SCLK_HIGH; Delay_1us(30); AD7682_spi(0); AD7682_spi(0); } /****************************************************************************** ** 函数名称:float Get_ADC_Value(ch) ** 功 能:采样 ch 选择通道 前三次采集无效 ** 修改日志: *******************************************************************************/ float Get_ADC_Value(INT8U ch) { float AD_Value1 = 0,AD_Value2 = 0; AD7682_spi(ch); AD7682_spi(ch); for(INT8U i = 0; i<10; i ){ AD_Value1 = AD7682_spi(ch); AD_Value2 = AD_Value1; } return (AD_Value2*0.25/65536);// AD_Value/65536*2.5/5 }