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

📄 adc.c.130217001204

📁 ATmega16-ad1602
💻 130217001204
字号:
#define ADC_C
#include "includes.h"
#define MaxAdcBufSize 9
#define AdcBufStep 3 //为了算巴士均值

static volatile unsigned int ADCBuffer[MaxAdcBufSize];
/******************************************************************************/
/******************************************************************************/
static volatile unsigned int addata;

unsigned char  adc_mux = 0x00;//选择通道:ADC0


void ad_result(void)
{    
	 float j;
	 unsigned int count;
	 unsigned int Vref=50000; 
     unsigned char *value1 = "0.000 V";	 
     //addata=ADCL;
	 //addata=addata+ADCH*256;
	    addata=ADCBuffer[0];
	 	 
     	j = (float)(((float)((Vref/1000)))*addata)/1000.00;
	    count = j*100;		
				
        value1[0] = count /1000+0x30;
	    count = count %1000;
        value1[2] = count /100+0x30;
        count = count %100;
        value1[3] = count  /10 + 0x30;			 
        value1[4] = count  %10 + 0x30;			 
       
        //LCD_Cursor(0,1);
		
        LCD_DisplayString(2,1,value1);  
               
    // return addata;
}   

void init_adc(void)
{	
	DDRA&=~BIT(PA0);
	PORTA&=~BIT(PA0);
    ADCSRA = 0x00; 
    ADMUX =(1<<REFS0)|(adc_mux&0x1f);  	 //AVCC,AREF引脚加滤波电容,单端输入ADC0
    ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
}

/******************************************************************************/

/******************************************************************************/
 //ADC完成中断
//#pragma vector = interrupt_handler adc_isr:iv_ADC  
// define the interrupt handler

#pragma interrupt_handler adc_isr:15  
void adc_isr(void)
{  
    

//////////////////////////////////////////////////////////////////////

//ADC初始化

//读取ADC


 unsigned char i;
 unsigned int temp,sum=0;
 temp=ADCL;
 temp=temp+ADCH*256;
  for(i=1;i<MaxAdcBufSize-1;i++)
 {
   ADCBuffer[i]=ADCBuffer[i+1];
   sum+=ADCBuffer[i];
 }
   ADCBuffer[MaxAdcBufSize-1]=temp;
   sum+=ADCBuffer[MaxAdcBufSize-1];
   ADCBuffer[0]=(sum>>AdcBufStep);
   

//////////////////////////////////////////////////  
	ad_result();            
	ADMUX|=(adc_mux&0x1f)|(1<<REFS0);
    ADCSRA|=(1<<ADSC);//启动AD转换
}  

⌨️ 快捷键说明

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