Microsoft PowerPoint - 08-MP-8-ADC



Similar documents
<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

정보보안 개론과 실습:네트워크

목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기

100_ATmega128_보드제작.hwp

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<BDC7C7E83820BFB9BAF1BAB8B0EDBCAD2E687770>

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

ATmega128

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

2주차: 입출력 제어 복습

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

11 강 AVR board & download cable 2009 년도 1 학기 센서개론 Mechatronics Lab 센서개론

Microsoft PowerPoint - Ch13

lecture4(6.범용IO).hwp

[8051] 강의자료.PDF

실험 5

Microsoft PowerPoint - 08-MP-4-interrupt

JMOD : ATmega128 기본모듈 사용자설명서 제이씨넷

API 매뉴얼

K&R2 Reference Manual 번역본

PowerPoint Presentation

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

½½¶óÀ̵å Á¦¸ñ ¾øÀ½

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

WATAVR128_manual.hwp

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp


Formatvorlage für Arbeitsanweisungen

T100MD+

키트전자 KE-RC-B 코드비젼

1. 기본설정 목차 1-1. 설치해야할프로그램및파일 1-2. 프로그램올리기 1-3. MAKEFILE 2. 캐릭터 LCD(PORT) 3-1. 개요 3-2. 사용하는레지스터 3-3. Source Code 3-4. 실습사진 3. 타이머카운터및초음파센서활용 (PORT, TIM

Formatvorlage für Arbeitsanweisungen

Microsoft Word - PEB08_USER_GUIDE.doc

PRO1_14E [읽기 전용]

Ⅰ 개요 II 센서특징 III 복합센서 ROIC IV Voltage domain AFE V Time domain AFE 2

Microsoft PowerPoint - AVR100%(1).ppt

AVR128 자료.hwp

Microsoft Word doc

슬라이드 1

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

Microsoft PowerPoint - es-arduino-lecture-03

1. 제품사진및보드설명 그림. LK ATmega128 A2 트레이닝보드사진 제품소개 ATMEL사의 8비트프로세서인 AVR-ATmega128 MCU를이용하여학습및제품개발을핛수있는 AVR 트레이닝보드입니다. 초보자를세심하게배려하기위하여모든부품의부품이름및부품정보가트레이닝보드

Chapter #01 Subject

28 저전력복합스위칭기반의 0.16mm 2 12b 30MS/s 0.18um CMOS SAR ADC 신희욱외 Ⅰ. 서론 Ⅱ. 제안하는 SAR ADC 구조및회로설계 1. 제안하는 SAR ADC의전체구조

뉴티씨 (NEWTC) 2. FB-CY4E-DEV (FPGA 개발 키트) 구성도 Port Select SW 7 Segment Text LCD UART RS-232C JTAG PORTA (5V) Active Serial PORTB (5V) OSC. 50MHz Analog

(6)

실험 5

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로

DTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

CodevisionAVR C compiler 사용법 ( 요약 ) (1) 1.1 마이크로프로세서시스템회로도및동작 마이크로콘트롤러 ATmega128 내부회로도 AVR 의구조및종류 ATmega128 Pin 배치및내장 I/O 종류 A

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

API 매뉴얼

CANTUS Evaluation Board Ap. Note

ez-md+_manual01

C & System

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

Microsoft PowerPoint - RPino-GOGO_datasheet.pptx

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

슬라이드 1

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

슬라이드 1

Microsoft PowerPoint - Ch12

2009년2학기 임베디드시스템 응용

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

untitled

1

(MHT-SB112\273\347\276\347\274\255.hwp)

그룹웨어와 XXXXX 제목 예제

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

C 언어 프로그래밊 과제 풀이

歯메뉴얼v2.04.doc


b032_2010_0350.hwp

전자실습교육 프로그램

Microsoft Word - DTM-M300_Spec_V1_0.doc

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD

M16_32KIT_Manual.hwp

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - DMX512강좌.ppt

1. 제품소개 그림. 1.1 이란? DC 모터구동시하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 입니다. 또한당사 DEV 보드와 1P 점퍼클립케이블을이용하여연동이가능하며, 산업용 DC 모터의정회전, 역회전구동및속도제어시유용하게사용되는 입니다.

USB Manager 1

Microsoft PowerPoint - Chapter 8_USART Serial Communication

PowerPoint 프레젠테이션

HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

03_원격제어반_IDAC-2W

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

Microsoft PowerPoint - ccs33_bios_com1_semaphore.ppt [호환 모드]

Transcription:

8. A/D 변환기 순천향대학교 컴퓨터학부 이 상 정 학습 내용 ATmega28 ADC ADC 개요 ADC 레지스터 ADC 프로그램 온도센서 프로그램 순천향대학교 컴퓨터학부 이 상 정 2

ATmega28 ADC 순천향대학교 컴퓨터학부 이 상 정 3 A/D 변환기 개요 물리적인 현상(전압, 전류,온도,속도,조도,습도,압력,속,,습,압력 )들은 아날로그 값이므로 이를 컴퓨터에서 입력 받아 처리하려면 디지털값으로변환필요 물리현상은 센서(sensor)에 의해 검출되어 전압, 전류 등 전기신호로 변환 A/D 변환기(ADC, Analog to Digital Converter) 아날로그의 전기신호(전압)를 디지털 신호로 변환해 주는 장치 분해능(resolution) 아날로그 변화 값을 표시할 수 있는 단계의 수 0비트의 분해능은 024, 즉 입력값이 024 단계로 표시 분해능이 높을 수록 더 정확하게 변환 순천향대학교 컴퓨터학부 이 상 정 4

ATmega28 ADC 개요 ATmega28 ADC 특성 0비트 분해능 8개의 단극성 입력 0 ~ V REF 입력 전압 공급, 0~0x3FF (0~023) 기준전압 V REF 는 A/D 변환되는 전압의 범위 22 종류의 차동입력(differential input) -V REF ~ + V REF의 입력 전압 공급, 0x200~0xFF (-52~5) 0배또는200배증폭가능 8채널의 아날로그 입력은 포트 F로 입력 V REF 값 AVCC(핀 64), 내부 2.56V, AREF 단자(핀 62) 중 선택 순천향대학교 컴퓨터학부 이 상 정 5 ADC CONVERSION COMPLETE IRQ 8-BIT DATA BUS ADC MULTIPLEXER SELECT (ADMUX) ADC CTRL & STATUS REGISTER (ADCSRA) 5 0 ADC DATA REGISTER (ADCH:ADCL) REFS S REFS S0 ADLA AR MUX 5 MUX 3 MUX 2 0 N C R F S2 S S0 ADIF ADIE MUX MUX ADEN ADSC ADFR ADIF ADPS ADPS ADPS ADC[9:0] MUX DECODER PRESCALER AVCC INTERNAL 2.56V REFERENCE N CHANNEL SELECTION N GAIN SELECTION CONVERSION LOGIC AREF 0-BIT DAC - + AGND BANDGAP REFERENCE SINGLE ENDED/DIFFERENTIAL SELECTION ADC7 ADC6 ADC5 ADC4 ADC3 POS. INPUT MUX + GAIN AMPLIFIER ADC MULTIPLEXER OUTPUT ADC2 - ADC ADC0 NEG. INPUT MUX 순천향대학교 컴퓨터학부 이 상 정 6

64 63 62 6 60 59 58 57 56 55 54 53 52 5 50 49 AVCC AGND AREF PF0 (ADC0) PF (ADC) PF2 (ADC2) PF3 (ADC3) PF4 (ADC4/TC PF5 (ADC5/TM PF6 (ADC6/TD PF7 (ADC7/TD GND VCC PA0 (AD0) PA (AD) PA2 (AD2) K) S) O) I) PEN 48 PA3 (AD3) (RXD0/PDI)PE0 2 47 PA4 (AD4) (TXD0/PDO) PE 3 46 PA5 (AD5) (XCK0/AIN0) PE2 4 45 PA6 (AD6) (OC3A/AIN) PE3 5 44 PA7 (AD7) (OC3B/INT4) PE4 6 43 PG2 (ALE) (OC3C/INT5) PE5 7 42 PC7 (A5) (T3/INT6) PE6 (IC3/INT7) PE7 8 9 ATmega28 4 40 PC6 (A4) PC5 (A3) (SS) PB0 0 39 PC4 (A2) (SCK) PB 38 PC3(A) (MOSI) PB2 2 37 PC2 (A0) (MISO) PB3 3 36 PC (A9) (OC0) PB4 4 35 PC0 (A8) (OCA) PB5 5 34 PG (RD) (OCB) PB6 6 33 PG0 (WR) ) PB7 TOSC2/ PG3 TOSC /PG4 ESET 7 8 9 20 2 22 23 24 25 26 27 28 29 30 3 32 순천향대학교 컴퓨터학부 이 상 정 7 (OC2/OCC R VCC GND XTAL2 X XTAL X ) PD0 (SCL/INT0 ) PD (SDA/INT ) PD2 (RXD/INT2 ) PD3 (TXD/INT3 ) PD4 (IC ) PD5 (XCK ) PD6 (T ) PD7 (T2 ATmega28 ADC 레지스터 ADCMUX (ADC Multiplexer Selection Register) ADC 기준전압(reference voltage) 선택 ADC 변환 값 정렬 방법 지정 ADC 입력채널 지정 ADCSRA (ADC Control and Status Register A) ADC 인에이블/디스에이블 ADC 변환 시작 ADC 동작모드 선택 ADC 인터럽트 플래그 ADC 인터럽트 인에이블/디스에이블 ADC 클럭 분주비 ADCL, ADCH (ADC Data Register) ADC 변환값 저장 순천향대학교 컴퓨터학부 이 상 정 8

ADCMUX () ADC Multiplexer Selection Register RFS, RFS0 (Reference Selection) ADC 기준전압(reference voltage) 선택 RFS RFS0 기준전압 0 0 AREF 단자전압 이용 0 AREF 단자전압을 이용하며, AREF 단자와 GND 사이를 콘덴서로 접속 0 - 내부 2.56V를 이용하며, AREF 단자와 GND 사이를 콘덴서로 접속 ADLAR (ADC Left Adjust Result) A/D 변환된 결과를 ADCH:ADCL에 저장하는 형식을 지정 0이면 하위부터 0비트를 사용, 이면 상위부터 0비트를 사용 순천향대학교 컴퓨터학부 이 상 정 9 MUX4~0 단극성 입력 + 차동 입력 - 차동 입력 이득 00000 ADC0 0000 ADC ADCMUX (2) 0000 ADC2 000 ADC3 0000 ADC4 000 ADC5 단일 변환모드 000 ADC6 MUX4~0 00 ADC7 0000 ADC0 ADC0 0x (Analog Channel and Gain 000 ADC ADC0 0x Selection Bits) 000 ADC0 ADC0 200x 00 ADC ADC0 200x A/D 변환기에 연결되는 아날로 000 ADC2 ADC2 0x 그 입력채널과 차동 입력 채널에 00 ADC3 ADC2 0x 대한 이득을 선택 00 ADC2 ADC2 200x 0 ADC3 ADC2 200x 0000 ADC0 ADC x 000 차동 ADC ADC x 000 ADC2 ADC x 00 입력 ADC3 ADC x 000 모드 ADC4 ADC x 00 ADC5 ADC x 00 ADC6 ADC x 0 ADC7 ADC x 000 ADC0 ADC2 x 00 ADC ADC2 x 00 ADC2 ADC2 x 0 ADC3 ADC2 x 00 ADC4 ADC2 x 0 ADC5 ADC2 x 0.23V 순천향대학교 컴퓨터학부 0V(GND) 이 상 정 0

ADCSRA () ADC Control and Status Register A ADEN (ADC Enable) 이면 A/D 변환기의 동작 인에이블, 0이면 동작 디스에이블 ADSC (ADC Start Conversion) 단일 변환 모드에서 이 비트를 로 하면 A/D 변환이 시작, 변환완료 시 0으로 리셋 프리 러닝(Free Running)모드에서 이 비트를 로 하면 첫 번째 A/D 변환 이 시작되고, 그 다음부터는 자동적으로 변환이 반복 ADFR (ADC Free Running Select) 이 비트를 로 하면 A/D 변환기는 프리 러닝 모드로 동작하며, 이 모드에 서A/D 변환기는반복적으로A/D 변환을수행 순천향대학교 컴퓨터학부 이 상 정 ADCSRA (2) ADIF (ADC Interrupt Flag) A/D 변환이 완료되면 세트 인터럽트 인에이블(ADIE=)이면 인터럽트 요청 플래그 ADIE (ADC Interrupt Enable) A/D 변환기 인터럽트 인에이블 비트 ADPS2~0 (ADC Prescaler Select Bits) A/D 변환기에 입력되는 시스템 클럭에 대한 분주비를 선택 ADPS2 ADPS ADPS0 분주비 0 0 0 2 0 0 2 0 0 4 0 8 0 0 6 0 32 0 64 28 순천향대학교 컴퓨터학부 이 상 정 2

ADCL, ADCH () ADC Data Register A/D 변환된 결과를 저장하는 레지스터로서 ADMUX 레지스터의 ADLAR 비트 값에 따라 다음과 같이 저장 순천향대학교 컴퓨터학부 이 상 정 3 ADCL, ADCH (2) 단일 변환모드 0 ~ 0x3FF (0~023) V IN : 입력 전압 IN V REF : 기준 전압 차동입력 모드 0x200~0xFF (-52~5) V POS : 양의 입력전압 V NEG : 음의 입력전압 GAIN: 이득 V REF : 기준 전압 순천향대학교 컴퓨터학부 이 상 정 4

ADC 프로그램 순천향대학교 컴퓨터학부 이 상 정 5 ADC 설정 예 () 단일 변환모드의 ADC0(PORTF.0) 0) 아날로그 입력 채널과AREF 단자의 기준전압을 사용하며 하위 0비트에 변환 결과가 저장되고, 시스템 클럭 의 28분주 클럭에 폴링으로 동작되는 A/D 변환기 설정 예 ADCMUX = 0 단일 변환모드의 ADC0(PORTF.0) 아날로그 입력 채널 MUX4 MUX3 MUX2 MUX MUX0 = 00000 하위 0비트에 변환 결과가 저장 ADLAR = 0 AREF 단자의 기준전압 REFS REFS0 = 00 순천향대학교 컴퓨터학부 이 상 정 6

ADC 설정 예 (2) ADCSRA = 0x87 시스템 클럭의 28 분주 동작 ADPS2 ADPS ADPS0 = 폴링 방식 변환 (인터럽트 디스에이블) ADIE = 0 A/D 변환기 동작 인에이블 ADEN = 순천향대학교 컴퓨터학부 이 상 정 7 프로그램 예제 8- () ADC0(PORTF.0) 아날로그 입력 채널에 가변저항이 연결된 5V를 입력하 고, 가변저항이 변경해 가며 ADC 값과 전압 값을 LCD에 위와 같이 출력 하는 프로그램 시스템 클럭의 28분주 클럭에 폴링으로 동작되는 A/D 변환기 가변저항 (potentiometer) TOCOS GF063 시리즈 : 0~2M Ohm http://www.tocos-j.co.jp/e/catalog/trim/gf063/gf063.html t j / / t /t / l 핀 3과 핀 2를 연결: 가변저항의 최대 저항 값연결 2 2 3 3 VCC VCC *핀 3과 핀 을 연결, 핀 2는 접지 : 가변저항 동작 (시계 방향으로 돌릴수록 저항 증가) *핀2와 핀 을 연결해도 가변저항이 동작하며 (시계 반대 방향으로 돌릴수록 저항 증가) 순천향대학교 컴퓨터학부 이 상 정 8

프로그램 예제 8- (2) PORTF.0 (ADC0)에 가변저항 연결 GND 2 PORTF.0 3 <BOTTOM VIEW> 5V 가변저항을 브레드보드(bread board)에 연결 순천향대학교 컴퓨터학부 이 상 정 9 프로그램 예제 8- (3) ADC 설정 ADCMUX = 0 // 단일 변환모드의 ADC0 입력, AREF 기준전압 ADCSRA = 0x87 // 28분주, 폴링, ADC 인에이블 폴링 방법 A/D 변환 시작 ADCSRA = 0xC7 // 28분주, 폴링, ADC 인에이블, ADSC = A/D 변환 종료 되면 ADC 값 읽기 while ((ADCSRA & 0x0) == 0) ; // ADIF=(변환완료)일 때까지 기다림 ad_val = (int)adcl + ((int)adch << 8) ; // A/D 변환값 읽기 전압계산 V IN = (5*ADC) / 024 순천향대학교 컴퓨터학부 이 상 정 20

#include <mega28.h> #include <delay h> 프로그램 예제 8- (4) #include <delay.h> #include <stdlib.h> /// LCD 포트 #define LCD_RS PORTA.0 #define LCD_RW PORTA. #define LCD_E PORTA.2 #define LCD_DATA PORTC #include "lcd.c" void init(); void AD_disp(int val); void main() int ad_val; init(); //포트초기화 함수 호출 delay_ms(5); //LCD 초기화 후 시간지연 lcd_init(); //LCD 초기화 함수 호출 delay_ms(5); //LCD 초기화 후 시간지연 순천향대학교 컴퓨터학부 이 상 정 2 while () ADCSRA = 0xC7; // 28분주, 폴링, // ADC 인에이블, ADSC = while ((ADCSRA & 0x0) == 0); // ADIF=(변환완료)일 때까지 기다림 ad_val = (int)adcl+((int)adch << 8); // A/D 변환값 읽기 AD_disp(ad_val); // A/D 변환 값 표시 delay_ms(20); void init(void) // LCD 포트 출력 DDRA=0xff; DDRC=0xff; // ADC 초기화 DDRF = 0; // 포트 F 입력 ADMUX = 0; // 단일 변환모드의 ADC0 입력, // AREF 기준전압 ADCSRA = 0x87; // 28분주, 폴링, ADC 인에이블 프로그램 예제 8- (4) void AD_disp(int adcval) float voltage; char buf[0]; // output voltage voltage = (5*adcval)/024.; ftoa(voltage, 2, buf); // 소수점이하 2자리 문자열 lcd_command(0xc0); command(0xc0); // 2행 출력 lcd_strf("vol.="); lcd_str(buf); lcd_strf("v"); // output ADC converted value itoa(adcval, buf); lcd_command(0x80); // 행 출력 lcd_strf("adc="); lcd_str(buf); 순천향대학교 컴퓨터학부 이 상 정 22

실습과제 8- ADC3(PORTF.3) 3) 아날로그 입력 채널에 가변저항이 연결된 5V를입력하고, 가변저항이변경해가며ADC 값과전압값 을 LCD에 위와 같이 출력하면서, 전압의 범위가 홀수 볼트 범위(, 3, 5V)이면 모든 LED가 켜지는 프로그램 시스템 클럭의 28분주 클럭에 폴링으로 동작되는 A/D 변환기 순천향대학교 컴퓨터학부 이 상 정 23 프로그램 예제 8-2 () ADC0(PORTF.0) 0) 아날로그 입력 채널에 가변저항이 연결된 5V를입력하고, 가변저항이변경해가며ADC 값과전압값 을LCD에출력하는프로그램 시스템 클럭의 28분주 클럭에 인터럽트로 동작되는 A/D 변환기 ADC 설정 ADCMUX = 0 // 단일 변환모드의 ADC0 입력, AREF 기준전압 ADCSRA = 0x8f // 28분주, 인터럽트 인에이블, ADC 인에이블 인터럽트 루틴 interrupt t [ADC_INT] void adc_int(void) id) 순천향대학교 컴퓨터학부 이 상 정 24

#include <mega28.h> #include <delay h> 프로그램 예제 8-2 (2) #include <delay.h> #include <stdlib.h> /// LCD 포트 ADCSRA = 0xCF; // 28분주, 인터럽트 인에이블, #define LCD_RS PORTA.0 #define LCD_RW PORTA. // ADC 인에이블, ADSC = // 무한루프 #define LCD_E PORTA.2 while () ; #define LCD_DATA PORTC #include "lcd.c" void init(); void AD_disp(int val); void main() int ad_val; init(); //포트초기화 함수 호출 delay_ms(5); //LCD 초기화 후 시간지연 lcd_init(); //LCD 초기화 함수 호출 delay_ms(5); //LCD 초기화 후 시간지연 순천향대학교 컴퓨터학부 이 상 정 25 interrupt [ADC_INT] void adc_int(void) int ad_val; ad_val = (int)adcl + ((int)adch << 8); // A/D 변환값 읽기 AD_disp(ad_val); // A/D 변환 값 표시 delay_ms(20); ADCSRA = 0xCF; // 28분주, 인터럽트, // ADC 인에이블, ADSC = void init(void) // DDRA=0xff; DDRC=0xff; // ADC 초기화 DDRF = 0; // 포트 F 입력 ADMUX = 0; // 단일 변환모드의 ADC0 입력, // AREF 기준전압 ADCSRA = 0x8F; // 28분주, 인터럽트 인에이블, ADC 인에이블 SREG = 0x80; // 전역 인터럽트 인에이블 // LCD 포트 출력 프로그램 예제 8-2 (3) void AD_disp(int adcval) float voltage; char buf[0]; // output voltage voltage = (5*adcval)/024.; ftoa(voltage, 2, buf); // 소수점이하 2자리 문자열 lcd_command(0xc0); command(0xc0); // 2행 출력 lcd_strf("vol.="); lcd_str(buf); lcd_strf("v"); // output ADC converted value itoa(adcval, buf); lcd_command(0x80); command(0x80); // 행 출력 lcd_strf("adc="); lcd_str(buf); 순천향대학교 컴퓨터학부 이 상 정 26

실습과제 8-2 ADC2(PORTF.2) 2) 아날로그 입력 채널에 가변저항이 연결된 5V를입력하고, 가변저항이변경해가며ADC 값과전압값 을 LCD에 위와 같이 출력하면서, 전압이 3V 이상이면 모든 LED가 켜지는 프로그램 시스템 클럭의 28분주 클럭에 인터럽트으로 동작되는 A/D 변환기 순천향대학교 컴퓨터학부 이 상 정 27 온도센서 프로그램 순천향대학교 컴퓨터학부 이 상 정 28

실습보드 온도센서 온도센서 LM35와 OP AMP(신호 증폭)가 온도를 전압으로 변환 변환된 전압의 출력은 터미널(OUT, GND)와 연결되어있음 출력 터미널 OUT을 ADC의 아날로그 입력채널에 연결하여 A/D 변환 LM35 온도센서 -55 C ~ +50 C 선형 0mV/ C 4V-20V 동작 온도변환식 T = ((50+55)/023)*ADC-55 순천향대학교 컴퓨터학부 이 상 정 29 프로그램 예제 8-3 () ADC0(PORTF.0) 0) 아날로그 입력 채널에 온도센서의 출력 (OUT)을 입력하여 ADC, 전압, 온도 값을 LCD에 출력하는 프 로그램 시스템 클럭의 28분주 클럭에 폴링으로 동작되는 A/D 변환기 ADC 설정 ADCMUX = 0 // 단일 변환모드의 ADC0 입력, AREF 기준전압 ADCSRA = 0x87 // 28분주, 폴링, ADC 인에이블 폴링 방법 A/D 변환 시작 ADCSRA = 0xC7 // 28분주, 폴링, ADC 인에이블, ADSC = A/D 변환 종료 되면 ADC 값 읽기 while ((ADCSRA & 0x0) == 0) ; // ADIF=(변환완료)일때까지기다림 ad_val = (int)adcl + ((int)adch << 8) ; // A/D 변환값 읽기 순천향대학교 컴퓨터학부 이 상 정 30

#include <mega28.h> #include <delay h> 프로그램 예제 8-3 (2) #include <delay.h> #include <stdlib.h> /// LCD 포트 #define LCD_RS PORTA.0 #define LCD_RW PORTA. #define LCD_E PORTA.2 #define LCD_DATA PORTC #include "lcd.c" void init(); void AD_disp(int val); void main() int ad_val; init(); //포트초기화 함수 호출 delay_ms(5); //LCD 초기화 후 시간지연 lcd_init(); //LCD 초기화 함수 호출 delay_ms(5); //LCD 초기화 후 시간지연 순천향대학교 컴퓨터학부 이 상 정 3 while () ADCSRA = 0xC7; // 28분주, 폴링, // ADC 인에이블, ADSC = while ((ADCSRA & 0x0) == 0); // ADIF=(변환완료)일 때까지 기다림 ad_val = (int)adc+((int)adch << 8); // A/D 변환값 읽기 AD_disp(ad_val); // A/D 변환 값 표시 delay_ms(20); void init(void) // LCD 포트 출력 DDRA=0xff; DDRC=0xff; // ADC 초기화 DDRF = 0; // 포트 F 입력 ADMUX = 0; // 단일 변환모드의 ADC0 입력, // AREF 기준전압 ADCSRA = 0x87; // 28분주, 폴링, ADC 인에이블 프로그램 예제 8-3 (3) void AD_disp(int adcval) float voltage, temp; char buf[0]; // output ADC converted value itoa(adcval, buf); lcd_command(0x80); // 행 출력 lcd_strf("adc="); lcd_str(buf); 순천향대학교 컴퓨터학부 이 상 정 32 // output voltage voltage = (5*adcval)/024.; ftoa(voltage, 2, buf); // 소수점이하 2자리 문자열 lcd_strf( strf(",v= V="); lcd_str(buf); lcd_strf("v"); // output temperature temp = ((50+55)/023.)*adcval-55; // 온도 변환 ftoa(temp, 2, buf); lcd_command(0xc0); // 2행 출력 lcd_strf("temp.= "); lcd_str(buf); lcd_strf(" C");

실습과제 8-3 ADC3(PORTF.3) 3) 아날로그 입력 채널에 온도센서를 입력하 고, 온도가 25 C 이상이면 LED를 깜빢거리면서 LCD에 Fire!!를 출력하는 프로그램 시스템 클럭의 28분주 클럭에 폴링으로 동작되는 A/D 변환기 순천향대학교 컴퓨터학부 이 상 정 33