회원가입 ID/PW 찾기

하드웨어 설계에 관련한 공개 강좌를 게재하는 공간입니다.
운영진에 의해 강좌글은 편집되며, 공익을 위한 게시글은 '하드웨어 강좌'란으로 이동될 수 있습니다.

콘텐츠 수 129
판매자 아크마 판매 납포인트 무료 평점 1.0점 / 총 1명 참여

/*****************************************************
Project :
Version :
Date    : 2006-02-25
Author  : JanusK                         
Company : arcs                           
Comments:


Chip type           : ATmega128
Program type        : Application
Clock frequency     : 16.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 1024
*****************************************************/
 /* polling 방식으로 adc 값을 읽어 lcd에 순차적으로 출력하는 프로그램
  가변저항의 전압값이나 센서등을 부착하면 되고
  하이패스 필터가 달리면 작동이 안된다.
 */
#include <mega128.h>


// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>  
#include <delay.h>
#include <stdio.h>


#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
 ADMUX=adc_input|ADC_VREF_TYPE;
 // Start the AD conversion
 ADCSRA|=0x40;
 // Wait for the AD conversion to complete
 while ((ADCSRA & 0x10)==0);
 ADCSRA|=0x10;
 return ADCW;
}

void start_adc()
{
 // ADC initialization
 // ADC Clock frequency: 125.000 kHz
 // ADC Voltage Reference: AVREF pin
 // ADC High Speed Mode: Off
 ADMUX=ADC_VREF_TYPE;
 ADCSRA=0x87;
 SFIOR=0xEF; 
 
 delay_ms(100); // adc가 초기화될때까지 잠시 기다림
}

void main(void)

             
  char lcd_buf[16];
  int adc_data;
  int adc_cnt;
  
  DDRG = 0x18;  
  DDRF = 0x00;

    adc_cnt =0;   
   
    // LCD module initialization
 lcd_init(8);
    lcd_gotoxy(0,0);
    lcd_putsf("adc test");
      
    start_adc();  
   
 while (1)
    {  
        adc_data = read_adc(adc_cnt);
       sprintf(lcd_buf, "%d : %4d", adc_cnt, adc_data);
        lcd_gotoxy(0,1);
      lcd_puts(lcd_buf);
      
        adc_cnt++;
        if(adc_cnt==8)adc_cnt=0;  
       
      delay_ms(1000); //1초 지연
      };
}

 


회원님들의 고마운 공유정신 발휘로 마이컴박스에 게시 및 수정 업데이트됩니다.
원작자 및 마이컴박스(개정부분)의 동의 없이 무단 복재 및 전재, 재배포 금지합니다.

모르는 것이 무엇인지 스스로 정리하고 질문하는 습관을 가집시다.
무성의/광범위하거나 직접 해보지 않고 올리는 질문은 서로를 피곤하게 합니다.
질문쪽지는 사절이오니 게시판에 글을 남겨주세요. 그래야 다같이 공유할 수 있으니까요.

첨부

profile
개미염 2008.08.28 13:38
감사합니당~!!!
profile
prunus5757 2008.12.22 10:52
감사염
profile
마이크로마우스 2009.08.26 12:46
감사염
profile
pru 2010.04.09 10:51
감사합니다
profile
라인트레이소오 2012.06.09 14:46
너무너무 감사합니다
profile
컴쟁이 2012.09.14 00:04
감사합니당...
profile
청산유수 2016.09.01 09:57
ADC 관련 공부하고 있었는데, 참고 할 수 있어서 감사합니다.
profile
rhjrjrjqweqweqw 2016.11.14 09:58
좋은자료 감사합니다
profile
won410 2017.01.05 20:42
감사합니다.
profile
릴라 2017.04.20 17:10

profile
호야아부지 2023.02.12 19:16
감사합니다
search

연재강좌(하드웨어 엔지니어 되기) : (12)
전자 하드웨어 기초 : (14)
8051 어셈블리 강좌(by 허인교수님) : (7)
■ 제3장. 명령어 2019-04-17 14:58
AVR 기반의 라인트레이서(by 아크마) : (9)
용어도 모르겠어요 : (15)
■ 8051이란? 2019-04-17 00:17
■ 아트워크 기초 2019-04-17 14:40
■ MCU 기초 2019-12-19 10:58
■ 펌웨어 기초 2019-04-17 14:44
■ 납땜하기 2019-07-26 09:49
하드웨어 일반 : (15)
■ ASCII Table 2019-04-17 14:19
PCB설계와 제조의 이해 : (7)
■ CAD-Utility 2021-09-02 13:41
EMC 적합성을 고려한 PCB설계 : (43)
PCB의 기초 : (14)
바이패싱과 디커플링 : (9)
ESD 보호 : (3)
■ ESD 보호 - 개요 2017-06-22 10:24
클럭회로 : (17)
PCB 자주 묻는 질문 : (1)
Altium 사용하기 : (6)
ETC
  • 언제까지고 계속되는 불행은 없다. 가만히 견디고 참든지 용기를 내쫓아 버리든지 이 둘 중의 한 가지 방법을 택해야 한다.
    - 로망 롤랑
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.