[AtTiny13] ADC테스트 - ADC값을 LCD에 출력
AtTiny13는 8핀의 소형 마이컴 이므로 디버깅에 어려움이 많다. 특히 ADC값에 따라 특정 기능을 수행하려 할때 ADC값을 보면서 디버깅해야 하는 경우가 많은데 이런 상황에서 [LCD Module] 을 이용하면 쉽게 ADC값을 확인하고 디버깅 가능하다.
PB1, PB3, PB4포트를 LCD Module에 연결하고 PB2(ADC1)으로 가변 저항을 연결
AtTiny13 ADC 구조
AtTiny13 ADC 채널 선택
소스코드
adc.c
main.c
AtTiny13 ADC-LCD 테스트 동영상
가변저항을 돌려 전압값을 조절하면 LCD에 0~1024까지 출력되는것을 확인 할 수 있다.
AtTiny13는 8핀의 소형 마이컴 이므로 디버깅에 어려움이 많다. 특히 ADC값에 따라 특정 기능을 수행하려 할때 ADC값을 보면서 디버깅해야 하는 경우가 많은데 이런 상황에서 [LCD Module] 을 이용하면 쉽게 ADC값을 확인하고 디버깅 가능하다.
PB1, PB3, PB4포트를 LCD Module에 연결하고 PB2(ADC1)으로 가변 저항을 연결
AtTiny13 ADC 구조
AtTiny13 ADC 채널 선택
소스코드
adc.c
//Read ADC Value
unsigned int AdcRead(unsigned char Channel)
{
unsigned int value = 0;
ADMUX = Channel&7;
ADCSRA = ADCSRA|ADC_START_CONVERSION;
while(!(ADCSRA & ADC_COMPLETE));
value = ADCL;
value = ((ADCH)<<8) | value;
return value;
}
unsigned int AdcRead(unsigned char Channel)
{
unsigned int value = 0;
ADMUX = Channel&7;
ADCSRA = ADCSRA|ADC_START_CONVERSION;
while(!(ADCSRA & ADC_COMPLETE));
value = ADCL;
value = ((ADCH)<<8) | value;
return value;
}
main.c
//-----------------------------------------------------------------------------
int main(void)
{
//시스템 초기화
SystemInit();
InitShfitRegister();
LcdInit();
// 0123456789abcdef
LcdDspStr(0, 0, "AtTiny13 ADC ");
AdcInit();
while(1)
{
TbiShiftData(BIT8);
SendIntStr(0, 1, AdcRead(1));
Delay(50);
}
}
//-----------------------------------------------------------------------------
int main(void)
{
//시스템 초기화
SystemInit();
InitShfitRegister();
LcdInit();
// 0123456789abcdef
LcdDspStr(0, 0, "AtTiny13 ADC ");
AdcInit();
while(1)
{
TbiShiftData(BIT8);
SendIntStr(0, 1, AdcRead(1));
Delay(50);
}
}
//-----------------------------------------------------------------------------
AtTiny13 ADC-LCD 테스트 동영상
가변저항을 돌려 전압값을 조절하면 LCD에 0~1024까지 출력되는것을 확인 할 수 있다.
반응형