57
TITLE: Education LK-ATmega128-A2 Manual LK Development Team Status Revision V0.1 Date 2011 /08/09 Doc LK임베디드 S/N 2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 1 ATmega128 트레이닝 보드ⅱ Manual WWW.LKEMBEDDED.CO.KR

ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 1

ATmega128 트레이닝 보드ⅱ

Manual

WWW.LKEMBEDDED.CO.KR

Page 2: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 2

목 차

1. 제품 사진 및 각 부분 설명 3

2. 예제소스/회로도 8

3. 동영상 52

4. Epilog 57

Page 3: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 3

1. 제품사진 및 보드 설명

[그림. AVR 확장형 개발보드ⅱ 사진]

Page 4: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 4

제품소개

ATMEL사의 8비트 프로세서인 ATmega128 MCU를 이용하여 학습/ 실습 및 개발을 핛 수 있는 AVR 트레

이닝 보드입니다. 확장성을 고려하여 PORTC를 10P 박스 커넥터로 연결 하여 LK 확장보드와 손쉽게 연

결이 가능합니다. AVR ISP와 JTAG을 이용하여 프로그램 다운로드 및 디버깅 가능하도록 설계 되었습

니다.

제품특징

1) ATmega128 MCU의 모듈화로 손쉽게 MCU 교체 가능

2) 10P 박스 커넥터를 이용핚 확장 포트(PORTC)

3) 브레드보드을 이용하여 확장 가능

4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232

통싞, ADC(온도센서, 조도센서, 가변저항), TEXT LCD, 그래픽 LCD, 포터센서의 기능을 학습 및

실습 가능

5) 사용 전원 12V(12V와 5V 전원을 쉽게 사용 핛 수 있도록 커넥터화)

6) ISP, JTAG 사용 가능(JTAG 사용시 PORT4~7까지 사용 불가합니다)

기타 정보 및 관렦 제품

http://www.lkemnedded.co.kr, http://cafe.naver.com/lkembedded/에 접속하면 LK 확장보드,

다양핚 예제소스와 응용 제품을 확인 하실 수 있습니다.

Page 5: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 5

외형 치수 및 핀맵

[그림. AVR 확장형 개발보드 ⅱ 외형 치수]

[그림. AVR 모듈]

AVR 모듈 핀맵

AVR ISP

AVR JTAG

Page 6: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 6

AVR 모듈 핀맵

[표. AVR 모듈 핀맵(왼쪽)] [표. AVR 모듈 핀맵(오른쪽)]

※참고: PORTF 입출력 관렦 사항

-본사에서 최소 퓨즈비트 설정시 JTAG-ICE 사용가능 하도록 설정되어 PORTF4~7포트을 사용하실 수 없

습니다.

PORTF4~7포트를 사용하시려면 AVR ISP를 이용하여 퓨즈비트 재설정 또는 본사로 ATmega128 MCU 모듈

을 보내 주시면 됩니다.

NO 핀 이름(기능) NO 핀 이름(기능)

1 AVCC 2 GND

3 AREF 4 PF0(ADC0)

5 PF1(ADC1) 6 PF2(ADC2)

7 PF3(ADC3) 8 PF4(ADC4/TCK)

9 PF5(ADC5/TMS) 10 PF6(ADC6/TDO)

11 PF7(ADC7/TDI) 12 GND

13 VCC 14 PA0(AD0)

15 PA1(AD1) 16 PA2(AD2)

17 PA3(AD3) 18 PA4(AD4)

19 PA5(AD5) 20 PA6(AD6)

21 PA7(AD7) 22 PG2(ALE)

23 PC7(A15) 24 PC6(A14)

25 PC5(A13) 26 PC4(A12)

27 PC3(A11) 28 PC2(A10)

29 PC1(A9) 30 PC0(A8)

31 PG1(RD) 32 PG0(WR)

NO 핀 이름(기능) NO 핀 이름(기능)

1 PEN 2 PE0(RXD0/PDI)

3 PE1(TXD0/PD0) 4 PE2(XCK0/AIN0)

5 PE3(OC3A/AIN1) 6 PE4(OC3B/INT4)

7 PE5(OC3C/INT5) 8 PE6(T3/INT6)

9 PE7(ICP3/INT7) 10 PB0(SS)

11 PB1(SCK) 12 PB2(MOSI)

13 PB3(MISO) 14 PB4(OC0)

15 PB5(OC1A) 16 PB6(OC1B)

17 PB7(OC2/OC1C) 18 PG3(TOSC2)

19 PG4(TOSC1) 20 RESET

21 VCC 22 GND

23 XTAL2 24 XTAL1

25 PD0(SCL/INT0) 26 PD1(SDA/INT1)

27 PD2(RXD1/INT2) 28 PD3(TXD1/INT3)

29 PD4(ICP1) 30 PD5(XCK1)

31 PD6(T1) 32 PD7(T2)

Page 7: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 7

AVR ISP 핀맵

[표. AVR ISP]

※참고: AVR ISP 연결 방법

-LK-USB AVR-ISP를 이용하여 프로그램 다운로드 가능합니다.

기타사항은 LK-USB AVR-ISP 메뉴얼을 참고하여 주시기 바랍니다.

AVR JTAG 핀맵

[표.AVR JTAG]

※참고: AVR JTAG ICE 연결 방법

-LK-AVR JTAG-ICE를 이용하여 프로그램 다운로드 및 디버깅 가능합니다.

기타사항은 LK-AVR JTAG-ICE 매뉴얼을 참고하여 주시기 바랍니다.

USB UART 핀맵 (UART0/1)

[표. USB UART]

PORT1 PORT2 PORT3 PORT4 PORT5 PORT6

VCC GND RESET SCK(PB1) MISO MOSI

PORT1 PORT2 PORT3 PORT4 PORT5

PF4(TCK) GND PF6(TDO) VCC PF5(TMS)

PORT6 PORT7 PORT8 PORT9 PORT10

RESET VCC X PF7(TDI) GND

PORT1 PORT2 PORT3 PORT4

GND TX RX 5V

Page 8: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 8

2. 예제소스

1) I/O 입출력 예제소스

※참고 회로도(I/O 입출력)

-CodeVision AVR C컴파일러

LK ATmega128 트레이닝 보드 예제소스: I/O 입출력 제어

//예제소스 시작

#include <mega128.h>

#include <delay.h>

// Declare your global variables here

void main(void)

{

D11LEDD12LEDD13LEDD14LEDD15LEDD16LED

ARRAY3

COM

R1

R2

R3

R4

R5

R6

PE3

PE2

PE4

PE6

PE5

LED

PE7

VCC

PG1

SW6

12

R10

VCC

PG2

SW7

12

VCC

R11

PG3

R12

SW8

12

VCCSwitch

PG0

SW11

12

R13

VCC

LS2

BUZZER

1

2

R15

PD5

Buzzer

VCC

Page 9: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 9

DDRE=0XFF;

PORTE=0X00;

DDRD=0X20;

PORTD=0X20;

while (1)

{

static unsigned int cnt=50;

cnt=cnt-0.5;

if(cnt==0)

{

cnt=100;

}

PORTE=0XFF;

PORTD=0X00;

delay_ms(cnt);

PORTE=0X00;

PORTD=0X20;

delay_ms(cnt);

}

}

//예제소스 끝

Page 10: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 10

2) TIMER 인터럽트 예제소스

※참고 회로도(다이나믹 디스플레이)

-CodeVision AVR C컴파일러

LK ATmega128 트레이닝 보드 예제소스: TIMER 인터럽트를 이용한 FND 제어

//예제소스 시작

#include <mega128.h>

#include <delay.h>

#define Fnd1 6

#define Fnd2 7

#define Fnd1_on 0<<Fnd1

#define Fnd2_on 0<<Fnd2

#define Fnd1_off 1<<Fnd1

FND2 FND2

edc bb aa

cath

od

e

fg

dot

cath

od

eR41R42R43R44R45R46R47R48

PB1PB0

PB3PB2

PB6PB5PB4

PD7

PB7

Fnd

PD6

Page 11: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 11

#define Fnd2_off 1<<Fnd2

char Number[11]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X27,0X7F,0X6F}; //FND 0~9 배열선얶

// Timer 0 overflow interrupt service routine

unsigned int cnt=0;

interrupt [TIM0_OVF] void timer0_ovf_isr(void) //1ms Tick Time

{

static int i=0;

i++;

if(i==100)

{

cnt++;

i=0;

if(cnt==99)

{

cnt=0;

}

}

TCNT0+=0X06;

}

void main(void)

{

DDRB=0XFF; // FND 초기화

DDRD.6=1; // FND EN0

DDRD.7=1; // FND EN1

TCCR0=0x04;//64Prescalel, Overflow Interrupt

TCNT0=0x06;// Timer Count initialization

TIMSK=0x01;// Timer(s)/Counter(s) Interrupt(s) initialization

SREG=0X80; //Global Interrupt Enable

Page 12: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 12

while (1)

{

int i,j=0;

i=(cnt%100)/10; //10의 자리

j=cnt%10; //1의 자리

PORTD=(Fnd1_on|Fnd2_off);

PORTB=Number[i];

delay_ms(1);

PORTD=(Fnd1_off|Fnd2_on);

PORTB=Number[j];

delay_ms(1);

};

}

//예제소스 끝

3) 조도센서, 온도센서를 이용한 ADC 예제소스

※참고 회로도(온도센서, 조도센서)

써미스터

PF1

VCC

R2

t

RT2

THERMISTOR 2

12

VCC

PF0

R16

CDS2

CDS

VR2

100k

13

2 PF2

VCC

가변저항

Page 13: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 13

-CodeVision AVR C컴파일러

LK ATmega128 확장형 개발보드 예제소스: 조도센서, 온도센서를 이용한 ADC 제어

//예제소스 시작

#include <mega128.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x40

unsigned int ad_buff[2][50];

char Number[]={'0','1','2','3','4','5','6','7','8','9'};

flash unsigned int ad_table[] = { //10bit, 155ea

982,979,977,974,971,968,965,962,959,956, //-40'C~-31'C

952,948,944,940,936,932,927,923,918,913, //-30'C~-21'C

907,902,896,891,885,878,872,866,859,852, //-20'C~-11'C

845,837,830,822,814,806,798,790,781,772, //-10'C~ -1'C

763,754,745,736,726,717,707,697,687,677, // 0'C~ 9'C

667,657,647,636,626,616,605,595,584,574, // 10'C~ 19'C

563,553,542,532,521,511,501,490,480,470, // 20'C~ 29'C

460,450,441,431,421,412,403,393,384,375, // 30'C~ 39'C

366,358,349,341,333,324,316,309,301,294, // 40'C~ 49'C

286,279,272,265,258,252,245,239,233,227, // 50'C~ 59'C

221,215,209,204,199,193,188,183,179,174, // 60'C~ 69'C

Page 14: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 14

169,165,161,156,152,148,144,140,137,133, // 70'C~ 79'C

130,126,123,120,117,114,111,108,105,102, // 80'C~ 89'C

100, 97, 94, 92, 90, 87, 85, 83, 81, 79, // 90'C~ 99'C

77, 75, 73, 71, 69, 68, 66, 64, 63, 61, //100'C~109'C

60, 58, 57, 55, 54, 53, 51, 50, 49, 48, //110'C~119'C

47, 45, 44, 43, 42, 41 }; //120'C ~125'C

void IntDisplay(int i)// LCD 정수값으 표시

{

int j,k,l,m=0;

j =(i % 1000)/100;

k =(i % 100)/10;

l = i % 10 ;

//if((j == 0) && (k == 0)){ lcd_putchar(0x20); } //공백 표시는 생략 핚다.

lcd_putchar(Number[j]); //100의 자리

lcd_putchar(Number[k]); //10의 자리

lcd_putchar(Number[l]); //1의 자리

}

unsigned int read_adc(unsigned char adc_input)// Read the AD conversion result

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);// Delay needed for the stabilization of the

ADC input voltage

delay_us(10);// Start the AD conversion

ADCSRA|=0x40;// Wait for the AD conversion to complete

while ((ADCSRA & 0x10)==0);

Page 15: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 15

ADCSRA|=0x10;

return ADCW;

}

unsigned int ad_adding(char c) // 평균값으로 처리하는 함수

{

char i,j,k=0;

for(i=19; i>0; i--){

ad_buff[c][i] = ad_buff[c][i-1]; // 새로운 값 읽기전에 현재 메모리를 옮기는 작업

}

ad_buff[c][0]=read_adc(c);

ad_buff[c][20] = 0;

for(j=0; j<20; j++){

ad_buff[c][20] += ad_buff[c][j];

}

ad_buff[c][20] = ad_buff[c][20] / 20;

k = ad_buff[c][20];

return k;

}

unsigned int TemperatureCheck(int data) //온도 체크 함수

{

char i, tmp=0;

int temp=0;

if(data > 763) { //-40도 이상일때

tmp=0;

for(i=0; i<40; ++i) {

if(data >= ad_table[tmp]) goto end_run; //adc 데이터를 비교 0도 이상이면

goto문 실행

Page 16: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 16

++tmp; //adc 데이터를 비교 0도 이하이면 배열증가

} goto end_run;

}

if(data > 366) { //0도 이상일때

tmp=40;

for(i=0; i<40; ++i) {

if(data >= ad_table[tmp]) goto end_run; //adc 데이터를 비교 40도 이상이면

goto문 실행

++tmp; //adc 데이터를 비교 40도 이하이면 배열증가

} goto end_run;

}

if(data > 130) { //40도 이상일때

tmp=80;

for(i=0; i<40; ++i) {

if(data >= ad_table[tmp]) goto end_run; //adc 데이터를 비교 80도 이상이면

goto문 실행

++tmp; //adc 데이터를 비교 80도 이하이면 배열증가

} goto end_run;

}

else {

tmp=120; //80도 이상일때

for(i=0; i<45; ++i) {

Page 17: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 17

if(data >= ad_table[tmp]) goto end_run; //adc 데이터를 비교 120도 이상이면

goto문 실행

++tmp; //adc 데이터를 비교 120도 이하이면 배열증가

}

}

end_run:

if(tmp < 25) { temp=25-tmp; } //-

else { temp=tmp-25;} //''

return temp;

}

void main(void)

{

DDRF=0x00;

// ADC initialization

// ADC Clock frequency: 1000.000 kHz

// ADC Voltage Reference: AVCC pin

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

// LCD module initialization

lcd_init(16);

while (1)

{

Page 18: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 18

int i,j,temp=0;

i=read_adc(0); //read The CDS ADC Value

j=read_adc(1); //Thermistor

lcd_gotoxy(0,0);

lcd_putsf("CDS10K:");

IntDisplay(ad_adding(0)); //조도센서 평균값

lcd_gotoxy(0,1);

lcd_putsf("Thermistor:");

temp=TemperatureCheck(read_adc(1)); //read The Thermi ADC Value

IntDisplay(temp); //온도센서 출력값

lcd_putchar(0xdf);

lcd_putchar('C');

}

}

//예제소스 끝

4) RS232 통신 예제소스

-CodeVision AVR C컴파일러

LK ATmega128 트레이닝 보드 예제소스: RS232 통신 제어

//예제소스 시작

#include <mega128.h>

// Standard Input/Output functions

#include <stdio.h>

Page 19: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 19

void main(void)

{

// USART0 initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART0 Receiver: Off

// USART0 Transmitter: On

// USART0 Mode: Asynchronous

// USART0 Baud Rate: 9600

UCSR0A=0x00;

UCSR0B=0x08;

UCSR0C=0x06;

UBRR0H=0x00;

UBRR0L=0x67;

while (1)

{

printf("LK-ATmega128-C RS232 Com Test\r\n");

}

}

//예제소스 끝

5) RS485 통신 예제소스

-CodeVision AVR C컴파일러

LK ATmega128 트레이닝 보드 예제소스: RS485 통신 제어

//예제소스 시작

#include <stdio.h>

Page 20: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 20

#include <mega128.h>

#include <delay.h>

#define _ALTERNATE_PUTCHAR_

#define _ALTERNATE_GETCHAR_

#define USART0 0

#define USART1 1

#define UDRE 5

#define RXC 7

#define DATA_OVERRUN (1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

unsigned char poutput;

void putchar1(char c)

{

while ((UCSR1A & DATA_REGISTER_EMPTY)==0);

UDR1=c;

}

#pragma used-

void putchar(char c)

{

switch(poutput)

{

case USART0:

while((UCSR0A & DATA_REGISTER_EMPTY)==0);

UDR0=c;

break;

case USART1:

while((UCSR1A & DATA_REGISTER_EMPTY)==0);

Page 21: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 21

UDR1=c;

};

}

unsigned char getchar(void)

{

switch(poutput)

{

case USART0:

while((UCSR0A & RX_COMPLETE)==0);

return UDR0;

break;

case USART1:

while((UCSR1A & RX_COMPLETE)==0);

return UDR1;

};

}

void main(void)

{

DDRF=0X80; //TX or RX Enable Pin

// USART1 initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART1 Receiver: On

// USART1 Transmitter: On

// USART1 Mode: Asynchronous

// USART1 Baud Rate: 9600

UCSR1A=0x00;

UCSR1B=0x08;

UCSR1C=0x06;

Page 22: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 22

UBRR1H=0x00;

UBRR1L=0x67;

poutput=USART1;

while (1)

{

PORTF=0X80; //RS485 송싞 Enable

delay_ms(5);

printf("ATmega128-A2 RS485 Communication TEST\r\n"); //송싞

delay_ms(5);

PORTF=0X00;

};

}

//예제소스 끝

7) 시계 IC를 이용한 I2C 통신 예제소스

※참고 회로도

시계 IC

SQW/OUT7

SDA5

X11

X22

SCL6

VCC8

GND4

VBAT3Y1

32.768Khz

VCC

PD1PD0

Page 23: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 23

-CodeVision AVR C컴파일러

LK ATmega128 트레이닝 보드 예제소스: 시계IC를 이용한 I2C 통신 제어 및 문자 LCD 제어

//예제소스 시작

#include <mega128.h>

#define MAINCLK 16000000 //메인 크리스탈 클럭

#define TWI_CLK 100000 //100khz

#define TWBR_SET (MAINCLK-(16*TWI_CLK))/(4*2*TWI_CLK) //자동으로 TWBR을 구하기 위핚공식

char data[4]={0};

// Standard Input/Output functions

#include <stdio.h>

#include <delay.h>

#define TWIE 0

#define TWEN 2

#define TWWC 3

#define TWSTO 4

#define TWSTA 5

#define TWEA 6

#define TWINT 7

void EEPROM_write(char WordAdress,char data)

{

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

/*

Send START condition

*/

while (!(TWCR & (1<<TWINT)));

/* Wait for TWINT flag set. This indicates that the

Page 24: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 24

START condition has been transmitted

*/

TWDR = 0xd0;

/*Load 0xa0 into TWDR Register.Clear TWINT bit in

TWCR to start transmission of address

*/

TWCR = (1<<TWINT) |(1<<TWEN);

while (!(TWCR & (1<<TWINT)));

/* Wait for TWINT flag set. This indicates that the

0xa0 has been transmitted, and

ACK/NACK has been received.

*/

TWDR = WordAdress;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load low into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWDR = data;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load low into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

Page 25: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 25

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);

/*

Transmit STOP condition

*/

}

char EEPROM_read(char high)

{

char data=0;

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

/*

Send START condition

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWDR = 0xd0;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load 0xa0 into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

Page 26: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 26

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWDR = high;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load high into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

/*

Send RESTART condition

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWDR = 0xd1;

Page 27: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 27

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load 0xa0|1 into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWCR = (1<<TWINT) |(1<<TWEN);

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

data=TWDR;

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);

/*

Load TWDR into data. Clear TWINT

bit in TWCR to start transmission of data

*/

return data;

}

void main(void)

{

DDRD=0X00 ;

Page 28: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 28

// USART0 initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART0 Receiver: Off

// USART0 Transmitter: On

// USART0 Mode: Asynchronous

// USART0 Baud Rate: 9600

UCSR0A=0x00;

UCSR0B=0x08;

UCSR0C=0x06;

UBRR0H=0x00;

UBRR0L=0x67;

// TWI initialization

// TWI disabled

//TWBR = TWBR_SET;// 105 100kHz

TWBR = TWBR_SET;// 15 100kHz

TWSR=0;

TWCR=0X04;

EEPROM_write(00,0); //second

EEPROM_write(01,0x03); //minutes

EEPROM_write(02,6); //hour

EEPROM_write(07,0x03); //control

while (1)

{

static unsigned char data,data1,data2=0;

static unsigned char h,m,s=0;

data=EEPROM_read(0);

data1=(data&0x0f); // 1의 자리 초

Page 29: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 29

data2=(data&0x70); // 10의 자리 초

data2=(data2>>4)*10;

s=(data2+data1); //초

data=EEPROM_read(1);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0x70); // 10의 자리 초

data2=(data2>>4)*10;

m=(data2+data1); //분

data=EEPROM_read(2);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0x30); // 10의 자리 초

data2=(data2>>4)*10;

h=(data2+data1); //시간

printf("hour: %d minute: %d second: %d\r\n",h,m,s);

}

}

//예제소스 끝

Page 30: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 30

7) 문자 LCD 제어 예제소스

※참고 회로도

-CodeVision AVR C컴파일러

LK ATmega128 트레이닝 보드 예제소스: 문자 LCD 제어

//예제소스 시작

#include <mega128.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

#define MAINCLK 16000000 //메인 크리스탈 클럭

#define TWI_CLK 100000 //100khz

#define TWBR_SET (MAINCLK-(16*TWI_CLK))/(4*2*TWI_CLK) //자동으로 TWBR을 구하기 위핚공식

PA

1P

A0D2

SS14

1 2 PA

6

LCD 16P CON1

GN

D1

VC

C2

VD

3R

S4

RW

5E

N6

D0

71

82

93

10

411

512

613

714KA

PA

7

PA

2

PA

5

VCC

PA

4

VCC

VD

문자LCD

Page 31: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 31

char data[4]={0};

// Standard Input/Output functions

#include <stdio.h>

#include <delay.h>

#define TWIE 0

#define TWEN 2

#define TWWC 3

#define TWSTO 4

#define TWSTA 5

#define TWEA 6

#define TWINT 7

char Number[]={'0','1','2','3','4','5','6','7','8','9'};

void int_display(int i)

{

int j, k, l=0;

j =(i % 100)/10;

k = i % 10 ;

//if((j == 0) && (k == 0)){ lcd_putchar(0x20); } //공백 표시는 생략 핚다.

lcd_putchar(Number[j]); //10의 자리

lcd_putchar(Number[k]); // 1의 자리

}

void EEPROM_write(unsigned char WordAdress,unsigned char data)

{

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

/*

Send START condition

*/

Page 32: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 32

while (!(TWCR & (1<<TWINT)));

/* Wait for TWINT flag set. This indicates that the

START condition has been transmitted

*/

TWDR = 0xd0;

/*Load 0xa0 into TWDR Register.Clear TWINT bit in

TWCR to start transmission of address

*/

TWCR = (1<<TWINT) |(1<<TWEN);

while (!(TWCR & (1<<TWINT)));

/* Wait for TWINT flag set. This indicates that the

0xa0 has been transmitted, and

ACK/NACK has been received.

*/

TWDR = WordAdress;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load low into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWDR = data;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Page 33: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 33

Load low into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);

/*

Transmit STOP condition

*/

}

char EEPROM_read(char high)

{

char data=0;

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

/*

Send START condition

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWDR = 0xd0;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Page 34: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 34

Load 0xa0 into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWDR = high;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load high into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

/*

Send RESTART condition

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

Page 35: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 35

*/

TWDR = 0xd1;

TWCR = (1<<TWINT) |(1<<TWEN);

/*

Load 0xa0|1 into TWDR Register. Clear TWINT

bit in TWCR to start transmission of data

*/

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

TWCR = (1<<TWINT) |(1<<TWEN);

while (!(TWCR & (1<<TWINT)));

/*

Wait for TWINT flag set. This indicates that the

low has been transmitted, and ACK/NACK

has been received.

*/

data=TWDR;

TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);

/*

Load TWDR into data. Clear TWINT

bit in TWCR to start transmission of data

*/

return data;

}

void Day(int i)

{

Page 36: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 36

switch(i){

case 1: lcd_putsf("Mon-");break;

case 2: lcd_putsf("Tues-");break;

case 3: lcd_putsf("Wednes-");break;

case 4: lcd_putsf("Thurs-");break;

case 5: lcd_putsf("Fri-");break;

case 6: lcd_putsf("Satur-");break;

case 7: lcd_putsf("Sun-");break;

}

}

void Month(int i)

{

switch(i){

case 1: lcd_putsf("-January");break;

case 2: lcd_putsf("-February");break;

case 3: lcd_putsf("-March");break;

case 4: lcd_putsf("-April");break;

case 5: lcd_putsf("-May");break;

case 6: lcd_putsf("-June");break;

case 7: lcd_putsf("-July");break;

case 8: lcd_putsf("-August");break;

case 9: lcd_putsf("-September");break;

case 10: lcd_putsf("-October");break;

case 11: lcd_putsf("-November");break;

case 12: lcd_putsf("-December");break;

}

}

void AmPmSel(char i)

{

if(i>0&&i<12)

Page 37: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 37

{

lcd_putsf("AM-");

}

if(i>12&&i<24)

{

lcd_putsf("PM-");

}

}

void DS1307ReadLcdDisplay()

{

static unsigned char data,data1,data2=0;

static unsigned char h,m,s,day,date,month,year=0;

data=EEPROM_read(0);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0x70); // 10의 자리 초

data2=(data2>>4)*10;

s=(data2+data1); //초

data=EEPROM_read(1);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0x70); // 10의 자리 초

data2=(data2>>4)*10;

m=(data2+data1); //분

Page 38: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 38

data=EEPROM_read(2);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0x30); // 10의 자리 초

data2=(data2>>4)*10;

h=(data2+data1); //시간

data=EEPROM_read(3);

data1=(data&0x0f); // 1의 자리 초

//data2=(data&0x30); // 10의 자리 초

/// data2=(data2>>4)*10;

day=data1; //Day

data=EEPROM_read(4);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0x30); // 10의 자리 초

data2=(data2>>4)*10;

date=(data2+data1); //date

data=EEPROM_read(5);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0x10); // 10의 자리 초

data2=(data2>>4)*10;

month=(data2+data1); //month

Page 39: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 39

data=EEPROM_read(6);

data1=(data&0x0f); // 1의 자리 초

data2=(data&0xf0); // 10의 자리 초

data2=(data2>>4)*10;

year=(data2+data1); //month

//---------------------- TEXT LCD DIPLAY

lcd_gotoxy(1,0);

Day(day);

int_display(date);

Month(month);

lcd_gotoxy(2,1);

AmPmSel(h);

int_display(h-12);

lcd_putsf(":");

int_display(m);

lcd_putsf(":");

int_display(s);

//-----------------------

}

void main(void)

{

PORTA=0XFF;

DDRD=0X03 ;

// TWI initialization

// TWI disabled

//TWBR = TWBR_SET;// 105 100kHz

TWBR = TWBR_SET;// 15 100kHz

Page 40: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 40

TWSR=0;

TWCR=0X04;

EEPROM_write(00,0); //second

EEPROM_write(01,0X54); //minutes

EEPROM_write(02,0x16); //hour

EEPROM_write(03,2); //tuesday

EEPROM_write(04,0x09); ///9day

EEPROM_write(05,0x08); //8Month

EEPROM_write(05,0x08); //11year

EEPROM_write(07,0x11); //control

lcd_init(16);

while (1)

{

DS1307ReadLcdDisplay();

}

}

//예제소스 끝

Page 41: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 41

8) 그래픽 LCD 제어 예제소스

※참고 회로도

-CodeVision AVR C컴파일러

LK ATmega128 트레이닝 보드 예제소스: 그래픽 LCD 제어

//예제소스 시작

#include <mega128.h>

#include <delay.h>

unsigned char screen[8][128];

bit flg;

char bf;

struct {

char bf, x, y, ty;

} lcd;

bit lcd_pg, lcd_blk;

flash char han[30][24]={

0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //L 0

LCD 20P CON1

GN

D1

VC

C2

VD

3D

/I4

RW

5E

N6

D0

7D

18

D2

9D

310

D4

11

D5

12

D6

13

D7

14

CS

115

CS

216

RS

T17

VE

E18

A19

K20

PF

5P

F6

RS

T

PA

6P

A7

PA

3P

A4

PA

5

PA

0P

A1

PA

2

PF

4

PF

3

D1

SS14

1 2

VCC

그래픽LCD

VCC

VD

VE

E

Page 42: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 42

0x00,0x0f,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,

0x00,0xfc,0x40,0xa0,0x10,0x08,0x04,0x00,0x00,0x00,0x00,0x00, //K 1

0x00,0x0f,0x00,0x00,0x01,0x02,0x04,0x08,0x00,0x00,0x00,0x00,

0x00,0x38,0x44,0x44,0x44,0x44,0x38,0x00,0x00,0xfc,0x00,0x00, //임 2

0x00,0x00,0x1e,0x12,0x12,0x12,0x12,0x12,0x12,0x1e,0x00,0x00,

0x00,0xfc,0x40,0x40,0xfc,0x40,0x40,0xfc,0x00,0xfc,0x00,0x00, //베 3

0x00,0x0f,0x08,0x08,0x0f,0x00,0x00,0x1f,0x00,0x1f,0x00,0x00,

0x00,0xfc,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0xfc,0x00,0x00, //디 4

0x00,0x0f,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x1f,0x00,0x00,

0x00,0x00,0xfc,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x00,0x00, //드 5

0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,

0x00,0x04,0x04,0xfc,0x04,0x44,0x40,0xfc,0x00,0xfc,0x00,0x00, //제 6

0x00,0x0c,0x03,0x00,0x03,0x0c,0x00,0x1f,0x00,0x1f,0x00,0x00,

0x00,0x80,0xa4,0xa4,0xbc,0xa4,0xa4,0xbc,0xa4,0xa4,0x80,0x00, //품 7

0x00,0x00,0x1e,0x12,0x12,0x12,0x13,0x12,0x12,0x1e,0x00,0x00,

0x00,0x04,0x04,0x04,0xfc,0x00,0xfc,0x80,0x80,0xfc,0x00,0x00, //개 8

0x00,0x08,0x04,0x03,0x00,0x00,0x1f,0x00,0x00,0x1f,0x00,0x00,

Page 43: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 43

0x00,0x7c,0x48,0x48,0x48,0x48,0x7c,0x00,0x00,0x7c,0x10,0x10, //발 9

0x00,0x00,0x1d,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x00,0x00,

0x00,0xf8,0x04,0x04,0x04,0x04,0xf8,0x00,0x00,0xfc,0x00,0x00, //이 10

0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00,0x00,0x1f,0x00,0x00,

0x00,0x84,0x84,0x84,0x44,0x24,0x5c,0x48,0x48,0xfc,0x00,0x00, //경 11

0x00,0x00,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,

0x00,0x7c,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0xfc,0x10,0x10, //남 12

0x00,0x00,0x1e,0x12,0x12,0x12,0x12,0x12,0x12,0x1e,0x00,0x00,

0x00,0x00,0xc0,0x30,0x0c,0x30,0xc0,0x00,0x00,0x00,0x00,0x00, //A 13

0x00,0x0e,0x01,0x01,0x01,0x01,0x01,0x0e,0x00,0x00,0x00,0x00,

0x00,0x1c,0xe0,0x00,0x00,0x00,0xe0,0x1c,0x00,0x00,0x00,0x00, //V 14

0x00,0x00,0x00,0x03,0x0c,0x03,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xfc,0x44,0x44,0x44,0x44,0xb8,0x00,0x00,0x00,0x00,0x00, //R 15

0x00,0x0f,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,

0x00,0xfc,0x84,0x84,0x84,0x84,0x78,0x00,0x00,0x00,0x00,0x00, //P 16

0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //I 17

0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xf0,0x08,0x04,0x04,0x04,0x04,0x08,0x00,0x00,0x00,0x00, //C 18

Page 44: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 44

0x00,0x03,0x04,0x08,0x08,0x08,0x08,0x04,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //, 19

0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0xfc,0x84,0x84,0x84,0x84,0x78,0x00,0x00,0x00,0x00,0x00, //P 20

0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0xc0,0x30,0x0c,0x30,0xc0,0x00,0x00,0x00,0x00,0x00, //A 21

0x00,0x0e,0x01,0x01,0x01,0x01,0x01,0x0e,0x00,0x00,0x00,0x00,

0x00,0xfc,0x04,0x04,0x04,0x08,0xf0,0x00,0x00,0x00,0x00,0x00, //D 22

0x00,0x0f,0x08,0x08,0x08,0x04,0x03,0x00,0x00,0x00,0x00,0x00,

0x00,0x38,0x44,0x44,0x84,0x84,0x18,0x00,0x00,0x00,0x00,0x00, //S 23

0x00,0x06,0x08,0x08,0x08,0x08,0x07,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x04,0xc4,0x04,0x04,0xc4,0x04,0x04,0xfc,0x00,0x00, //교 24

0x00,0x08,0x08,0x0f,0x08,0x08,0x0f,0x08,0x0a,0x09,0x08,0x00,

0x00,0x80,0x98,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x98,0x80,0x00, //육 25

0x00,0x00,0x02,0x03,0x02,0x02,0x02,0x02,0x03,0x1e,0x00,0x00,

0x00,0x04,0x84,0x64,0x1c,0x24,0x44,0x94,0x10,0xfc,0x00,0x00, //전 26

0x00,0x01,0x1c,0x10,0x10,0x10,0x10,0x10,0x10,0x13,0x00,0x00,

0x00,0x00,0x3c,0x24,0x24,0x24,0x24,0x24,0x24,0x3c,0x00,0x00, //문 27

0x00,0x01,0x1d,0x11,0x11,0x11,0x17,0x11,0x11,0x11,0x01,0x00,

Page 45: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 45

0x00,0x84,0x84,0x84,0x44,0x24,0x1c,0x00,0x00,0xfc,0x20,0x20, //강 28

0x00,0x00,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x0c,0x00,0x00,

0x00,0x00,0x00,0x80,0x7c,0x80,0x00,0x00,0x00,0xfc,0x80,0x80, //사 29

0x00,0x08,0x06,0x01,0x00,0x01,0x06,0x08,0x00,0x1f,0x00,0x00,

} ;

//----------------------------------------------------

char gbuf[128][8];

void dsp_str(char n)

{

delay_us(30);

PORTF|=0X08;// lcd_di=1;

PORTA=n; //data

PORTF|=0X10;//lcd_en=1;

#asm("nop");

PORTF&=~0X10;//lcd_en=0; //on->off

}

//----------------------------------------------------

void dsp_cmd(char n)

{

delay_us(30);

PORTF&=~0X08;//lcd_di=0;

PORTA=n; //data

PORTF|=0X10;//lcd_en=1;

#asm("nop");

PORTF&=~0X10;//lcd_en=0; //on->off

Page 46: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 46

}

//----------------------------------------------------

void lcd_init()

{

PORTF|=0X20;//lcd_s1=1;

PORTF|=0X40;//lcd_s2=1; //page0,1

dsp_cmd(0x3f);

dsp_cmd(0xc0);

}

//----------------------------------------------------

void set_page0() { lcd.x=0x40; lcd_pg=0; }

void set_page1() { lcd.x=0x40; lcd_pg=1; }

void dsp_addr()

{

if(lcd_pg){ //page1?

PORTF&=~0x20;

PORTF|=0X40;

}

else{ //page0

PORTF|=0x20;

PORTF&=~0X40;

}

dsp_cmd(lcd.y);

dsp_cmd(lcd.x);

}

void dsp_nul(char n)

{

char i; dsp_addr();

for(i=0; i<n; ++i)///64개의 열을 클리어 시킨다.

Page 47: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 47

dsp_str(0);

}

void dsp_nul2(char n)

{

char i;

dsp_addr(); //현재 좌표 출력

lcd.bf=0; //공백으로 채움

if(lcd_blk)

lcd.bf=~lcd.bf;

for(i=0; i<n; ++i) //n값만큼 증가하면 출력

dsp_str(lcd.bf);

++lcd.y;// x축좌표의 값 증가 2번째 열도 공백으로 출력

dsp_addr();

lcd.bf=0;

if(lcd_blk)

{ lcd.bf=~lcd.bf; lcd.bf&=~0x80; }

for(i=0; i<n; ++i)

dsp_str(lcd.bf);

lcd.x+=n; //y축은 n값 만큼 증가!

lcd.y=lcd.ty;

}

void lcd_clear()

{

char i;

lcd.x=0x40; lcd.y=0xb8;

for(i=0; i<8; ++i) {

lcd_pg=0;

Page 48: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 48

dsp_nul(64);

lcd_pg=1;

dsp_nul(64);

++lcd.y;

}

}

void dsp_han(flash char *p, char n)

{

char i, bf1, bf2;

static int cnt=0;

static int cnt2=0;

static int cnt3=0;

bf1=n*12;//첫번째 문자열의 크기를 확인

dsp_addr();///현재 좌표 확인

for(i=0; i<bf1; ++i) { //문자열의 크기만큼 문자 출력

lcd.bf=p[i];

if(lcd_blk) lcd.bf=~lcd.bf; //반전 출력 여부

dsp_str(lcd.bf); //데이타 출력

}

bf2=bf1*2; //2번째 열의 크기 계산

++lcd.y; //lcd y adrees 0xb9 2번째 열 계산

dsp_addr(); ///현재 좌표 확인

for(i=bf1; i<bf2; ++i) {

lcd.bf=p[i];

Page 49: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 49

if(lcd_blk)

{ lcd.bf=~lcd.bf; lcd.bf&=~0x80; }

dsp_str(lcd.bf);

}

lcd.x+=bf1; //lcd y address의 값을 0x4c로 바꿥 줌, 다음 문자의 시작좌표를 기억 함

lcd.y=lcd.ty; //lcd x좌표 0xb8을 저장

}

void main()

{

int i=0;

DDRA=0xff;

DDRF=0xFF; //out

bf=0x0f;

lcd_init();

lcd_clear();

while(1) {

set_page0();

lcd.ty=lcd.y=0xb8;///첫번째 라인

lcd_blk=1;

dsp_nul2(28);

dsp_han(han[0],1);

dsp_han(han[1],1);

dsp_han(han[2],1);

set_page1();

Page 50: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 50

lcd.ty=lcd.y=0xb8;

lcd_blk=1;

dsp_han(han[3],1);

dsp_han(han[4],1);

dsp_han(han[5],1); dsp_nul2(27);

set_page0();

lcd.ty=lcd.y=0xba; //2번째 라인

lcd_blk=0;

dsp_nul2(10);

dsp_han(han[6],1);

dsp_han(han[7],1);

dsp_han(han[8],1);

dsp_han(han[9],1);

set_page1();

lcd.ty=lcd.y=0xba;

lcd_blk=0;

dsp_nul2(0 );

dsp_han(han[19],1);

dsp_han(han[24],1);

dsp_han(han[25],1);

dsp_han(han[26],1);

dsp_han(han[27],1);

set_page0();

lcd.ty=lcd.y=0xbc; //3번째 라인

lcd_blk=0;

dsp_nul2(12);

Page 51: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 51

dsp_han(han[13],1);

dsp_han(han[14],1);

dsp_han(han[15],1);

dsp_han(han[16],1);

dsp_han(han[17],1);

set_page1();

lcd.ty=lcd.y=0xbc;

lcd_blk=0;

dsp_nul2(0);

dsp_han(han[18],1);

dsp_han(han[20],1);

dsp_han(han[21],1);

dsp_han(han[22],1);

dsp_han(han[23],1);

set_page0();

lcd.ty=lcd.y=0xbe; //4번째 라인

lcd_blk=1;

dsp_nul2(40);

dsp_han(han[10],1);

dsp_han(han[11],1);

set_page1();

lcd.ty=lcd.y=0xbe;

lcd_blk=1;

dsp_nul2(0);

dsp_han(han[12],1);

dsp_han(han[28],1);

Page 52: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 52

dsp_han(han[29],1);

dsp_nul2(24);

}

}

//예제소스 끝

3. 동영상

1) I/O 입출력 동영상

[I/O 입출력 예제소스 및 동영상]

Page 53: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 53

3) TIMER 인터럽트 동영상

[타이머/카운터 인터럽트(FND) 예제소스 및 동영상]

4) 조도센서, 온도센서를 이용한 ADC 동영상

[ADC(온도센서, 조도센서) 예제소스 및 동영상]

Page 54: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 54

5) RS232 통신 동영상

[RS232 통신(UART) 예제소스 및 동영상]

6) RS485 통신 동영상

[RS485 통신 예제소스 및 동영상]

Page 55: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 55

7) 시계 IC를 이용한 I2C 통신 동영상

[시계 IC(I2C) 예제소스 및 동영상]

8) 문자 LCD 동영상

[문자 LCD 예제소스 및 동영상]

Page 56: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 56

9) 그래픽 LCD 동영상

[그래픽 LCD 예제소스 및 동영상]

Page 57: ATmega128 트레이닝 보드ⅱ...4) AVR 트레이닝 보드를 통해서 LED, SWITCH, 7-SEGMENT, 시계IC를 이용핚 I2C, BUZZER, RS232 통싞, ADC(온도센서, 조도센서,

TITLE: Education

LK-ATmega128-A2

Manual

LK Development Team

Status

Revision V0.1

Date 2011 /08/09

Doc LK임베디드

S/N

2011 LK EMBEDDED LK-ATmega128-A2 Manual version 1.0 페이지 57

4. Epilog

기술지원

-LK임베디드홈페이지문의: WWW.LKEMBEDDED.CO.KR상담문의코너이용

-LK임베디드 카페문의: http://cafe.naver.com/lkembedded 제품Q&A게시판 이용

-엔지니어 이메일 기술문의: [email protected]

-엔지니어 기술상담 전화문의: Tel. 02-968-8616~7

감사의글

LK임베디드 제품을 구입해 주셔서 감사합니다. 당사는AVR, PIC, ARM7을사용하시는

고객님의 편의를 증진시키기 위해서, 마이컴 교육 및 싞제품 연구개발을 위해서 항상

노력하고 있습니다. 앞으로도 끊임없는 도전정싞을 바탕으로 싞제품개발, 완벽핚

품질보증 체계확립, 대 고객 서비스를 통해 고객의 마음을 편하게 하는데 정진핛

것입니다.

본 제품을 활용하여 마이컴 학습 및 제품개발에 큰 도움 되시기를 바랍니다.