1111주차주차 …contents.kocw.net/kocw/document/2015/shinhan/leesangrok/... · 2016-09-09 ·...

17
11 11주차 주차 문자 문자 LCD LCD에 다양한 다양한 효과를 효과를 적용한 적용한 응용 응용 실습 실습 Next-Generation Networks Lab.

Upload: others

Post on 25-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

1111주차주차문자문자 LCDLCD에에 다양한다양한 효과를효과를 적용한적용한 응용응용 실습실습

Next-Generation Networks Lab.

Page 2: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제

예제 11.3 Function Set Options 설정예제 11.2와 동일하게 프로그램한다.

초기화 함수 뒤에 Function Set Options을 변경한다.

Option의 기능을 확인한다.

Options Value Function_Set_Options

Option1 0x20 4비트, 화면1행, 5x8 Font

Option2 0x24 4비트, 화면1행, 5x11 Font

Option3 0x28 4비트, 화면2행, 5x8 Font

Option4 0x2C 4비트, 화면2행, 5x11 Font

Option5 0x30 8비트, 화면1행, 5x8 Font

O i 6 0 3 8비 화면1행 11Option6 0x34 8비트, 화면1행, 5x11 Font

Option7 0x38 8비트, 화면2행, 5x8 Font

Option8 0x3C 8비트 화면2행 5x11 Font

39

Option8 0x3C 8비트, 화면2행, 5x11 Font

Page 3: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--3 Function Set Option3 Function Set Option

#define F_CPU 1000000UL

#include <avr/io.h>

clcd_command(FUNCTION_SET_OPTION7);//clcd_command(FUNCTION_SET_OPTION1);//clcd command(FUNCTION SET OPTION5);include avr/io.h

#include <util/delay.h>#include "clcd_D8.h"

//clcd_command(FUNCTION_SET_OPTION5);

while(1){

int main (void){

char data1[ ] = “!! Hello !!";

{clcd_position(0,0);clcd_str(data1);_delay_ms(500);

char data2[ ] = “Shinhan University";

clcd_port_init( );

clcd_position(1,0);clcd_str(data2);_delay_ms(500);

clcd_init_8bit( ); clcd_clear( );_delay_ms(2000);

}t 0return 0;

}

40

Page 4: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제

예제 11.4 Entry Mode Set Options 설정 CLCD를 포트 A와 포트 C로 연결한다.

Entry Mode Set Options을 변경한 후 문자열을 출력한다.

Option의 기능을 확인한다.

Options Value Entry_Mode_Set_Options

Option1 0x04 커서 좌측 이동, 화면이동 없음p 커서 좌측 이동, 화면이동 없음

Option2 0x05 커서 좌측 이동, 화면 이동

Option3 0x06 커서 우측 이동 화면이동 없음Option3 0x06 커서 우측 이동, 화면이동 없음

Option4 0x07 커서 우측 이동, 화면이동

41

Page 5: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--4 4 Entry Mode Set Option Entry Mode Set Option ((표표 1111--4) 4)

#define F_CPU 1000000UL

#include <avr/io.h>

clcd_command(CMD_ENTRY_MODE_SET_OPTION1);clcd_position(0,7);clcd str(data1); delay ms(500);include avr/io.h

#include <util/delay.h>#include "clcd_D8.h"

clcd_str(data1); _delay_ms(500);clcd_position(1,7);clcd_str(data2); _delay_ms(500);clcd_clear( );

int main (void){

char data1[ ] = “12345";

_ ( );_delay_ms(2000);

clcd_command(CMD_ENTRY_MODE_SET_OPTION3);char data2[ ] = “67890";

clcd_port_init( );

clcd_position(0,7);clcd_str(data1); _delay_ms(500);clcd_position(1,7);

clcd_init_8bit( ); clcd_str(data2); _delay_ms(500);clcd_clear( );_delay_ms(2000);

return 0;}

42

Page 6: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제

예제 11.5 Display Options 설정 CLCD를 포트 A와 포트 C로 연결한다.

문자열을 출력한 후 Display Options을 변경하여 적용한다.

Option의 기능을 확인한다.

Options Value Display_Options

Option1 0x08 화면 OFF, 커서 OFF, 커서 점멸 OFF

Option2 0x09 화면 OFF, 커서 OFF, 커서 점멸 ON

Option3 0x0A 화면 OFF, 커서 ON, 커서 점멸 OFF

Option4 0x0B 화면 OFF, 커서 ON, 커서 점멸 ON

Option5 0x0C 화면 ON, 커서 OFF, 커서 점멸 OFF

O i 6 0 0 화면 O 커서 O 커서 점멸 OOption6 0x0D 화면 ON, 커서 OFF, 커서 점멸 ON

Option7 0x0E 화면 ON, 커서 ON, 커서 점멸 OFF

Option8 0x0F 화면 ON 커서 ON 커서 점멸 ON

43

Option8 0x0F 화면 ON, 커서 ON, 커서 점멸 ON

Page 7: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--5 5 Display Options Display Options ((표표 1111--5)5)

#define F_CPU 1000000UL

#include <avr/io.h>#include <util/delay h>

clcd_position(0,0); clcd_str(data1);clcd_position(1,0); clcd_str(data2);for(i=0; i<3; i++)#include <util/delay.h>

#include "clcd_D8.h"

int main (void){

{clcd_command(CMD_DISPLAY_OPTION1);_delay_ms(300);

{char data1[ ] = “!! Hello !!";char data2[ ] = “Sangrok Lee";char data3[ ] “Shinhan Univ ";

clcd_command(CMD_DISPLAY_OPTION8);_delay_ms(300);

}char data3[ ] = “Shinhan Univ.";char data4[ ] = “**************"; INT8 i;

clcd_position(0,0); clcd_str(data3);clcd_position(1,0); clcd_str(data4);for(i=0; i<3; i++)

clcd_port_init( );clcd_init_8bit( );

while(1)

{clcd_command(CMD_DISPLAY_OPTION7);_delay_ms(300);while(1)

{// 우측 프로그램 추가

}

clcd_command(CMD_DISPLAY_OPTION8);_delay_ms(300);

}}}

44

Page 8: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제

예제 11.6 문자열에 효과 적용 CLCD를 포트 A와 포트 C로 연결한다.

문자열을 출력한 후 Cursor/Display Shift Options을 변경하여 적용한다.

Option의 기능을 확인한다.

Options Value Cusor_Display_Shift_Options

Option1 0x10 커서 선택, 커서 좌측 이동

Option2 0x14 커서 선택, 커서 우측 이동

Option3 0x18 화면 선택, 화면 좌측 이동Option3 0x18 화면 선택, 화면 좌측 이동

Option4 0x1C 화면 선택, 화면 우측 이동

45

Page 9: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--6 6 문자열에문자열에 효과효과 적용적용 ((표표 1111--6) 6)

#define F_CPU 1000000UL

#include <avr/io.h>#include <util/delay h>

while(1){

for(i=0; i<26; i++)#include <util/delay.h>#include "clcd_D8.h"

int main (void)

{clcd_command(CMD_CURSOR_DISPLAY_SHIFT_OPTION3);

// clcd_command(CMD_CURSOR_DISPLAY_SHIFT_OPTION1);{

char data1[ ] = "abcdefghijklmnopqrst

ABCD

_delay_ms(300);}_delay_ms(2000);

uvwxyzABCDEFGHIJKLMN OPQRSTUVWXYZ";

INT8 i 0

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

clcd_command(CMD_CURSOR_DISPLAY_SHIFT_OPTION4);INT8 i=0;

clcd_port_init( );clcd_init_8bit( );

_delay_ms(300);}_delay_ms(2000);

}_ _ ( );

clcd_position(0,0);clcd_str(data1);delay ms(2000);

}return 0;

}_delay_ms(2000);

46

Page 10: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제

예제 11.7 실수값 출력 CLCD를 포트 A와 포트 C로 연결한다.

CLCD에 실수값을 출력하기 위해 sprintf 함수의 기능을 이해한다.

sprintf 함수에서 실수값 출력을 지원하기 위해 컴파일러에서 “Linker”의설정 옵션을 이해한다설정 옵션을 이해한다.

47

Page 11: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--7 7 실수값실수값 출력출력

#define F_CPU 1000000UL

#include <avr/io.h>

clcd_position(0,5);clcd_str("!! Hello !!");delay ms(2000);include avr/io.h

#include <stdio.h>#include <util/delay.h>#include "clcd_D8.h"

_delay_ms(2000);

while(1){_

#define SIZE 64 // Buffer size for string

{sprintf (buffer, "gen: %3d kHz", freq1);clcd_position(0,0);clcd_str(buffer);

int main (void){

INT8 freq1 = 45;sprintf(buffer, "cnt: %3.3f kHz", freq2);clcd_position(1,0);

float freq2 = 38.854;char buffer[SIZE];

l d t i it( )

clcd_str(buffer);}return 0;

}clcd_port_init( );clcd_init_8bit( );

}

48

Page 12: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

Properties Toolchain

Properties Toolchain AVR/GNU Linker AVR/GNU Linker

General Use vprintf library

AVR/GNU Linker Miscellaneous “ -lprintf flt “ 추가

49

Use vprintf library lprintf_ flt 추가

Page 13: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제

예제 11.8 CG-RAM을 활용하여 한글 출력 CLCD를 포트 A와 포트 C로 연결한다.

원하는 모양의 폰트를 생성하기 위한 과정을 이해한다.

CG-RAM에 원하는 데이터를 저장하기 위한 과정을 이해하고, 이를 함수로 구현한다로 구현한다.

CG-RAM에 저장된 데이터를 활용하여 CLCD 화면에 한글 이름을 출력한다.

50

Page 14: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

CGCG--RAM RAM 활용활용

51

Page 15: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--8 8 CGCG--RAMRAM을을 활용하여활용하여 한글한글 출력출력

typedef unsigned char INT8;typedef unsigned int INT16;

int main (void){

INT8 addr;#define F_CPU 1000000UL

#include <avr/io.h>

clcd_port_init( );clcd_init_8bit( );clcd position(0 0);

#include <util/delay.h>#include "clcd_D8.h"

clcd_position(0,0);clcd_str("!! Hello !!");_delay_ms(2000);

CGRAM Set(0 name1a);INT8 name1a[ ] = {0x00, 0x02, 0x02, 0x07, 0x07, 0x0D, 0x0D, 0x08};

INT8 name1b[ ] = {0x04, 0x04, 0x04,

CGRAM_Set(0, name1a);CGRAM_Set(1, name1b);CGRAM_Set(2, name2a);CGRAM Set(3 name2b);INT8 name1b[ ] {0x04, 0x04, 0x04,

0x04, 0x06, 0x16, 0x14, 0x14};

INT8 name2a[ ] = {0x00, 0x07, 0x07, 0 00 0 07 0 06 0 07 0 07}

CGRAM_Set(3, name2b);

for(addr=0; addr<4; addr++){

l d i i dd0x00, 0x07, 0x06, 0x07, 0x07};

INT8 name2b[ ] = {0x00, 0x1C, 0x1C, 0x0C, 0x1C, 0x00, 0x1C, 0x1C};

clcd_position(0, addr);clcd_data(addr);

}t 0

, , , , };return 0;

}52

Page 16: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--8 8 CGCG--RAMRAM을을 활용하여활용하여 한글한글 출력출력

void CGRAM_Set(INT8 addr, INT8 *CG_char)

{

INT8 i;

clcd_command(0x40+addr*8);

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

{

clcd_data(CG_char[i]);

}

}

53

Page 17: 1111주차주차 …contents.kocw.net/KOCW/document/2015/shinhan/leesangrok/... · 2016-09-09 · 1111주차주차 문자문자LCDLCD에에다양한다양한효과를효과를적용한적용한응용응용실습실습

예제예제 1111--8 8 CGCG--RAMRAM을을 활용하여활용하여 한글한글 출력출력INT8 U0[ ] { 신 } CGRAM S t(0 U0) CGRAM S t(1 U1)INT8 name_U0[ ] = { 신 };INT8 name_U1[ ] = { 신 };INT8 name_D0[ ] = { 신 };INT8 name D1[ ] = { 신 };

CGRAM_Set(0, name_U0); CGRAM_Set(1, name_U1);CGRAM_Set(2, name_U2); CGRAM_Set(3, name_U3);CGRAM_Set(4, name_D0); CGRAM_Set(5, name_D1);CGRAM Set(6 name D2); CGRAM Set(7 name D3);INT8 name_D1[ ] = { 신 };

INT8 name_U2[ ] = { 한 };INT8 name_U3[ ] = { 한 };INT8 name D2[ ] = { 한 };

CGRAM_Set(6, name_D2); CGRAM_Set(7, name_D3);

clcd_position(0, 0);for(addr=0; addr<4; addr++) { clcd data(addr); }INT8 name_D2[ ] = { 한 };

INT8 name_D3[ ] = { 한 };INT8 name_U4[ ] = { 대 };INT8 name U5[ ] = { 대 };

for(addr=0; addr<4; addr++) { clcd_data(addr); }clcd_position(1, 0);for(addr=4; addr<8; addr++) { clcd_data(addr); }

CGRAM S t(0 U4) CGRAM S t(1 U5)INT8 name_U5[ ] { 대 };INT8 name_D4[ ] = { 대 };INT8 name_D5[ ] = { 대 };INT8 name U6[ ] = { 학 };

CGRAM_Set(0, name_U4); CGRAM_Set(1, name_U5);CGRAM_Set(2, name_U6); CGRAM_Set(3, name_U7); CGRAM_Set(4, name_D4); CGRAM_Set(5, name_D5);CGRAM Set(6 name D6); CGRAM Set(7 name D7)_ [ ] { 학 };

INT8 name_U7[ ] = { 학 };INT8 name_D6[ ] = { 학 };INT8 name_D7[ ] = { 학 };

CGRAM_Set(6, name_D6); CGRAM_Set(7, name_D7)

clcd_position(0, 4);for(addr=0; addr<4; addr++) { clcd data(addr); }for(addr=0; addr<4; addr++) { clcd_data(addr); }clcd_position(1, 4);for(addr=4; addr<8; addr++) { clcd_data(addr); };

54