ADS1286的驱动
- # ifndef _ADS1286_H
- # define _ADS1286_H
- # include "main.h"
- # define ADCLK_H GPIO_SetBits(GPIOB,GPIO_Pin_0)
- # define ADCLK_L GPIO_ResetBits(GPIOB,GPIO_Pin_0)
- # define ADCS_H GPIO_SetBits(GPIOB,GPIO_Pin_1)
- # define ADCS_L GPIO_ResetBits(GPIOB,GPIO_Pin_1)
- # define ADOUT GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2)
- //# define N 20 //确定平均采样点数
- void ads1286_Init(void) ;
- float ads1286_ctr(void) ;
- float ad_aver(int Num) ;
- void ad_delay(int N) ;
- void ad_show(float value) ;
- # endif
-
-
- # include "main.h"
- void ads1286_Init(void)
- {
- ADCS_L ;
- ADCS_H ;
- ADCLK_L ;
- ADCLK_H ;
- }
- float ads1286_ctr(void)
- {
- int i = 0 ;
- u16 AD_Value = 0 ;
-
- ads1286_Init() ;
-
- ADCS_L ;
-
- ad_delay(100) ;
- ADCLK_L ;
- for(i=0 ; i<1 ;i++)
- {
- ADCLK_H ;
- ad_delay(10) ;
- ADCLK_L ;
- }
-
- for(i=0 ; i<11 ;i++)
- {
- ADCLK_H ;
- ad_delay(10) ;
- ADCLK_L ;
- }
-
- for(i=0 ; i<12 ;i++)
- {
- ADCLK_H ;
- ad_delay(10) ;
- ADCLK_L ;
- AD_Value |= (ADOUT<<i) ;
- }
-
- ADCLK_H ;
- ADCS_H ;
- return (AD_Value) ;
-
- }
- float ad_aver(int Num)
- {
- char i;
- float ad_data=0;
-
- ads1286_ctr();
- for(i=0;i<Num;i++) //采样Num次,求平均值
- {
- ad_data += ads1286_ctr();
- }
- ad_data = ad_data/Num ;
- if(ad_data>=0xfff)
- {
- ad_data = 0;
- }
- ad_data = ad_data*5.0/4095.0 ;
- return( ad_data) ;
- }
- void ad_delay(int N)
- {
- int i = 0 ;
- for (i=0 ;i<N ;i++)
- {
- ;
- }
- }
- void ad_show(float value)
- {
- char chFloat[8]={0} ;
- sprintf(chFloat ,"%7.5f" ,value) ;
- DispStr(0, 0, (u8 *)chFloat ) ;
-
- }
|