ADC_LCD Test Atmega3282023. 11. 16. 16:50
//ADC_LCD Test
#include <mega328p.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h> //sprintf
#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
delay_us(10);
ADCSRA|=(1<<ADSC);
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
}
void main(void)
{
unsigned int adc_value;
unsigned char sbuf[16];
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
DIDR0=(0<<ADC5D) | (0<<ADC4D) | (0<<ADC3D) | (0<<ADC2D) | (0<<ADC1D) | (0<<ADC0D); //
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (0<<ADSC) | (1<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
ADCSRB=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
lcd_init(16);
while (1)
{
adc_value=read_adc(0); //
lcd_gotoxy(0,0);
lcd_putsf("ADC_LCD TEST");
lcd_gotoxy(0,1);
sprintf(sbuf,"value=%4d",adc_value);
lcd_puts(sbuf); //LCD에 표시
delay_ms(10);
}
}//
'Atmega328' 카테고리의 다른 글
| 3. 포트 출력 실습 2 (1) | 2023.12.05 |
|---|---|
| 2. 포트 출력 실습1 (2) | 2023.12.05 |
| Arduino UNO ICSP & JADUINO-LOADER1 Pinmap (0) | 2023.11.14 |
| ATmega328P PinMap (0) | 2023.11.14 |
| LED Arry (Bar LED) WCNLBA-SR12 N2306 Pin map (0) | 2023.11.14 |
