달력

4

« 2026/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2023. 11. 16. 16:50

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
:
Posted by gonlab