본문 바로가기
코스웨어/16년 스마트컨트롤러

20160323-업무보고-이보원-ADC – Analog to Digital Converter

by 알 수 없는 사용자 2016. 3. 24.
728x90
반응형

ADC – Analog to Digital Converter


아날로그 - 디지털 변환기 (ADC, A / D 또는 D에 대한)는 양의 진폭을 나타내는 디지털 숫자로 연속 물리량 (통상 전압)로 변환하는 장치이다.

The conversion involves quantization of the input, so it necessarily introduces a small amount of error. 변환은 관련된 양자화 입력의이 있으므로 반드시 오류 소량 도입한다. Furthermore, instead of continuously performing the conversion, an ADC does the conversion periodically, sampling the input. 또한, 대신에 연속적으로 변환을 수행하는, ADC를 주기적 변환을 수행 샘플링 입력한다. The result is a sequence of digital values that have been converted from a continuous-time and continuous-amplitude analog signal to a discrete-time and discrete-amplitude digital signal . 결과는 연속 시간 및 연속 진폭 변환 된 디지털 값들의 시퀀스 인 아날로그 신호 (A)에 이산 시간 및 이산 진폭 디지털 신호 .


>Data Sheet 해석

>회로도 해석




>pixel 이란!!







-예제-




>부분 회로 분석!!



>ADMUX – ADC Multiplexer Selection Register

>ADCSRB – ADC Control and Status Register B


>ADCSRA – ADC Control and Status Register A



>ADCL and ADCH – The ADC Data Register


>DIDR0 – Digital Input Disable Register 0


>DIDR2 – Digital Input Disable Register 2




>ADC.C


#include "adc.h"


void adc_Init(void)
{
 ADMUX =(0<<REFS1)|(0<< REFS0)|(0<< ADLAR)|(0<< MUX4)|(0<<MUX3)|(0<< MUX2)|(0<< MUX1)|(0<< MUX0);
 ADCSRA =(1<<ADEN)|(1<< ADSC)|(0<< ADATE)|(0<< ADIF)|(0<< ADIE)|(1<< ADPS2)|(1<< ADPS1)|(0<< ADPS0);//64bit 사용
 ADCSRB =(0<<ACME)|(0<<MUX5)|(0<< ADTS2)|(0<< ADTS1)|(0<< ADTS0);
 
}

unsigned int adc_Rum0(void)
{
 adc_Init();
 ADCSRA=ADCSRA|(1<< ADSC);

 while(   0!=(ADCSRA &(1<< ADSC))  );
 return ADC;
}


>ADC.H


#ifndef __ADC_H__
#define __ADC_H__

#include "main.h"

void adc_Init(void);
unsigned int adc_Rum0(void);

#endif //__ACD_H__


>MAIN.C

#include "main.h"
#include "lcd.h"
#include "TC0.h"
#include "Usart.h"
#include "adc.h"


int main(void)
{
 unsigned char ucData;
 char caVal[]="....";
 unsigned int uiVal;
 

 
 LCD_Init();
 usart0_Init();
 adc_Init();
 
 
 
 while(1)
 {
  uiVal = adc_Rum0();
  caVal[0]='0'+(uiVal/1000);
    caVal[1]='0'+((uiVal%1000)/100);
    caVal[2]='0'+((uiVal%100)/10);
    caVal[3]='0'+(uiVal%10);

  LCD_STR(caVal);
  usart0_STR(caVal);
  LCD_Inst(LCD_HOME);
 }
 
 
  
 return 0;
}

>MAIN.C





>회로 결선!!!








728x90