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

20160324_업무일지_정우민_ADC(써미스터)

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

ADC(써미스터)

#include "main.h"
#include "lcd.h"
#include "tc0.h"
#include "usart.h"
#include "adc.h"

int main(void)
{
 
 char caVal[] = "....";
 unsigned int uiVal;
 
 lcd_Init ();         //  함수 초기화
 usart1_Init ();
 adc_Init();
 
 while(1)
 {
  uiVal = adc_Run0();      // ADC 값

  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);       // lcd 출력
  usart1_Str(caVal);
  lcd_Inst(LCD_HOME);     
 }

 
 return 0;
}

========================================================================================================================================

#include "adc.h"


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


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

 while( 0 != (ADCSRA & (1 << ADSC)) );
 
 return ADCH;       // 10 bit 중 뒤에 2bit 버림.

}
========================================================================================================================================

#ifndef __ADC_H__
#define __ADC_H__

#include "main.h"

void adc_Init (void);
unsigned int adc_Run0 (void);


#endif //__ADC_H__


========================================================================================================================================

PWM(Pulse Width Modulator)
- 펄스폭 (전기적 신호의 폭)을 변조.




















728x90