<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Similar documents
<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

lecture4(6.범용IO).hwp

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

[8051] 강의자료.PDF

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

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

슬라이드 1

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

ATmega128

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

MicrocontrollerAcademy_Lab_ST_040709

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

SRC PLUS 제어기 MANUAL

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

MPLAB C18 C

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

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

K&R2 Reference Manual 번역본

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

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft Word doc

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - es-arduino-lecture-03

T100MD+

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>


< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

C++-¿Ïº®Çؼ³10Àå

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Smart Power Scope Release Informations.pages

슬라이드 1

CANTUS Evaluation Board Ap. Note


LCD Display

jy-i3000.indd

2주차: 입출력 제어 복습

歯superimp.PDF

CPX-E-PB_BES_C_ _ k1

슬라이드 1

Chapter #01 Subject

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

UI TASK & KEY EVENT

Microsoft Word - AM-SLCD_시리얼 LCD_ 메뉴얼.doc

OCW_C언어 기초

PRO1_09E [읽기 전용]

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

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

Microsoft PowerPoint - Java7.pptx

쉽게 풀어쓴 C 프로그래밍

MR-3000A-MAN.hwp

슬라이드 1

Formatvorlage für Arbeitsanweisungen

Microsoft PowerPoint - chap03-변수와데이터형.pptx

IoT FND8 7-SEGMENT api

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

API 매뉴얼

Microsoft Word - Installation and User Manual_CMD V2.2_.doc

윤성우의 열혈 TCP/IP 소켓 프로그래밍

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

정규식 사용하기

untitled

Microsoft PowerPoint - [2009] 02.pptx

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

BY-FDP-4-70.hwp

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

금오공대 컴퓨터공학전공 강의자료

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

untitled

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

10X56_NWG_KOR.indd


PowerPoint Presentation

KEY 디바이스 드라이버

강의10

컴파일러

BMP 파일 처리

Microsoft PowerPoint APUE(Intro).ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기

DE1-SoC Board

JAVA PROGRAMMING 실습 02. 표준 입출력

C++ Programming

Transcription:

10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab.

5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19

핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절 4 제어신호 RS H/L HIGH: 데이터전송, LOW: 명령어전송 5 Control R/W H/L HIGH: 읽기, LOW: 쓰기 6 Signal EN H / H L Data Enable 명령입력시마다펄스전송 7 DB0 H/L 데이터버스 0 8 DB1 H/L 데이터버스1 9 DB2 H/L 데이터버스2 10 데이터신호 DB3 H/L 데이터버스3 Data Signal 11 DB4 H/L 데이터버스4 / 4 bit 제어시사용 12 DB5 H/L 데이터버스 5 / 4 bit 제어시사용 13 DB6 H/L 데이터버스6 / 4 bit 제어시사용 14 DB7 H/L 데이터버스7 / 4 bit 제어시사용 15 후면광원 A +5 후면광원애노드전원 16 Back Light K 0 후면광원캐소드전원 20

회로구성 21

sbi와 cbi 레지스터 REG0의 Bit 7,4,1을 Set 한후에다시 Bit 4,1을 Clear REG0 = 0x92; // BIT 7,4,1 Set REG0 &= 0xED; // BIT 4,1 Clear #define sbi(x,y) (x = (1<<y)) #define cbi(x,y) (x &= ~(1<<y)) REG0 = 0x01<<7; REG0 = 0x01<<4; REG0 = 0x01<<1; REG0 &= ~(0x01<<4); REG0 &= ~(0x01<<1); // BIT 7 Set // BIT 4 Set // BIT 1 Set // BIT 4 Clear // BIT 1 Clear sbi(reg0, 7); sbi(reg0, 4); sbi(reg0, 1); cbi(reg0, 4); cbi(reg0, 1); REG0 = (0x01<<7) (0x01<<4) (0x01<<1) REG0 &= ~((0x01<<4) & (0x01<<1)); // BIT 7,4,1 Set // BIT 4,1 Clear 22

함수 (function) (5장) Call by value Call by reference 함수구조 function name : 함수이름 argument : 함수로입력되는데이터형 return type : 함수가돌려주는데이터형 그림 5-6 23

float my_func3 ( int x, char y ) 그림 5-7 그림 5-9 그림 5-8 void my_func1 ( int x ) float my_func2 ( void ) 24

CLCD 헤더파일 헤더파일에포함된기능 CLCD 인터페이스를위한하드웨어설정 HD44780에서지원되는다양한기능을설정하기위한정의 CLCD 인터페이스를위한함수구현 CLCD 인터페이스를위한함수 void clcd_port_init(void); CPU 포트초기화함수 void clcd_init_8bit(void); CLCD 인터페이스초기화함수 void clcd_busy_check(void); CLCD의상태확인함수 void clcd_command(int8 cmd); 명령어출력함수 void clcd_data(int8 data); 데이터출력함수 void clcd_str(char *string); 문자열출력함수 void clcd_position(int8 col, INT8 row); CLCD 위치이동함수 void clcd_clear(void); CLCD 화면클리어함수 25

CLCD 헤더파일 (1) - 하드웨어설정 /* Header file for 8 bits Data Bus */ #define EN PC7 // Enable bit of Control Bus #define RW PC6 // Read/Write bit of Control Bus #define RS PC5 // Reset bit of Control Bus #define DATA_BUS PORTA // 8 bits of Data Bus #define CONTROL_BUS PORTC // 3 bits of Control Bus #define DATA_BUS_DIRECTION DDRA #define CONTROL_BUS_DIRECTION _ DDRC #define DATA_BUS_BUSY PINA // Busy Check at Data Bus #define BUSY_BIT 0x80 // Busy Check Bit --> Bit 7 #define sbi(reg, bit) reg = (1<<(bit)) // Set "bit"th bit of Register "reg" #define cbi(reg, bit) reg &= ~(1<<(bit)) 26

CLCD 헤더파일 (2) 함수선언및효과설정 // Function Protocol 선언 void clcd_port_init(void); void clcd_init_8bit(void); void clcd_busy_check(void); void clcd_command(int8 cmd); void clcd_data(int8 data); void clcd_str(char *string); void clcd_position(int8 col, INT8 row); void clcd_clear(void); #define CMD_CLEAR_DISPLAY #define CMD_RETURN_HOME #define CMD_ENTRY_MODE_SET_OPTION1 #define CMD_ENTRY_MODE_SET_OPTION2 #define CMD_ENTRY_MODE_SET_OPTION3 #define CMD_ENTRY_MODE_SET_OPTION4 0x01 // Clear All Display 0x02 // Cursor Position -> Return Home 0x04 // 커서좌측이동, 화면이동없음 0x05 // 커서좌측이동, 화면이동 0x06 // * 커서우측이동, 화면이동없음 0x07 // 커서우측이동, 화면이동 #define CMD_DISPLAY_OPTION1 0x08 // 화면 OFF, 커서 OFF, 커서점멸 OFF #define CMD_DISPLAY_OPTION2 DISPLAY 0x09 // 화면 OFF, 커서 OFF, 커서점멸 ON 27

헤더파일 (3) - 효과설정 #define CMD_DISPLAY_OPTION3 0x0A // 화면 OFF, 커서 ON, 커서점멸 OFF #define CMD_DISPLAY_OPTION4 0x0B // 화면 OFF, 커서 ON, 커서점멸ON #define CMD_DISPLAY_OPTION5 DISPLAY 0x0C // 화면 ON, 커서 OFF, 커서점멸 OFF #define CMD_DISPLAY_OPTION6 0x0D // 화면 ON, 커서 OFF, 커서점멸 ON #define CMD_DISPLAY_OPTION7 0x0E // 화면 ON, 커서 ON, 커서점멸 OFF #define CMD_DISPLAY_OPTION8 _ 0x0F // * 화면 ON, 커서 ON, 커서점멸 ON #define CMD_CURSOR_DISPLAY_SHIFT_OPTION1 0x10 // 커서선택, 커서좌측이동 #define CMD_CURSOR_DISPLAY_SHIFT_OPTION2 0x14 // 커서선택, 커서우측이동 #define CMD_CURSOR_DISPLAY_SHIFT_OPTION3 CURSOR DISPLAY SHIFT OPTION3 0x18 // 화면선택, 화면좌측이동 #define CMD_CURSOR_DISPLAY_SHIFT_OPTION4 0x1C // 화면선택, 화면우측이동 #define CMD_FUNCTION_SET_OPTION1 0x20 // 4비트, 화면1행, 5x8 Font #define CMD_FUNCTION_SET_OPTION2 0x24 // 4비트, 화면1행, 5x11 Font #define CMD_FUNCTION_SET_OPTION3 0x28 // 4비트, 화면2행, 5x8 Font #define CMD_FUNCTION_SET_OPTION4 0x2C // 4비트, 화면2행, 5x11 Font #define CMD_FUNCTION_SET_OPTION5 0x30 // 8비트, 화면1행, 5x8 Font #define CMD_FUNCTION_SET_OPTION6 0x34 // 8비트, 화면1행, 5x11 Font #define CMD_FUNCTION_SET_OPTION7 0x38 // * 8비트, 화면2행, 5x8 Font #define CMD_FUNCTION_SET_OPTION8 OPTION8 0x3C 3C// 8 비트, 화면 2 행, 5x11 Font 28

그림 11-12 Function set Function set CLCD 초기화함수 void clcd_init_8bit(void) clcd_ command(cmd _ FUNCTION_ SET_ OPTION7); _delay_ms(5); clcd_command(cmd_fucntion_set_option7); _delay_ms(1); clcd_command(cmd_fucntion_set_option7); clcd_command(cmd_fucntion_set_option7); Function set clcd_command(cmd_display_option8); Function set Display on Display clear Entry mode set clcd_command(cmd_clear_display); command(cmd CLEAR DISPLAY); clcd_command(cmd_entry_mode_set_option3); 29

BF bit 읽기함수, 명령어쓰기함수, 데이터쓰기함수 void clcd_busy_check(void) INT8 busy_flag=0; INT16 busy_time=0; DATA_BUS_DIRECTION=0x00; do cbi(control_bus, RS); //RS=0 sbi(control_bus, RW); //RW=1 sbi(control_bus, EN); //EN=1 _delay_us(10); busy_flag=data_bus_busy; BUSY cbi(control_bus, EN); //EN=0 busy_time++; while ((busy_flag &BUSYBIT) BUSY_BIT) && (busy_time<500)); DATA_BUS_DIRECTION=0xFF; DIRECTION=0xFF; 30 void clcd_command(int8 cmd) clcd_busy_check(); cbi(control_bus, RS); //RS=0 cbi(control_bus, RW); //RW=0 sbi(control_bus, EN); //EN=1 DATA_BUS=cmd; _delay_us(10); cbi(control_bus, EN); //EN=0 void clcd_data(int8 cmd) clcd_busy_check(); sbi(control_bus, RS); //RS=1 cbi(control_bus, RW); //RW=0 sbi(control_bus, EN); //EN=1 DATA_BUS=cmd; _delay_us(10); cbi(control_bus, O EN); //EN=0

문자열쓰기함수, 포트초기화함수, Cursor 위치함수 // *string: 출력할문자열 void clcd_str(char *string) while(*string!= '\0') clcd_data(*string); string++; void clcd_str_delay(char *string) while(*string i!= '\0') clcd_data(*string); _delay_ms(300); string++; void clcd_port_init(void) void clcd_position(int8 col, INT8 row) CONTROL_BUS_DIRECTION = 0xF0; clcd_command(0x80 command(0x80 (col * 0x40 + row)); DATA_BUS_DIRECTION= 0xFF; CONTROL_BUS= 0x00; DATA_BUS= 0x00; void clcd_clear(void) clcd_command(cmd_clear_display); 31

DD-RAM 의주소및 Cursor 위치함수 ( 그림 11-14) 14) // row 0:15, column 0:1 // position: DD-RAM의주소 void clcd_position(int8 ld col, INT8 row) clcd_command(0x80 (col * 0x40 + row)); 32

Display position & DD-RAM 주소 of 16x2 모듈 ( 그림 11-14) 14) 33

예제 예제 11.1 ASCII 문자출력 CLCD 를포트 A 와포트 C 로연결한다. 포트 A: 데이터버스, 포트 C: 제어버스 CG-ROM에저장된데이터를활용하여 CLCD 화면에 Love 문자를출력한다. 예제 11.2 문자열출력 CLCD를포트 A와포트 C로연결한다. 포트 A: 데이터버스, 포트 C: 제어버스 문자열출력함수를활용하여 CLCD 화면에 Shinhan University 문자열을출력한다. 34

CLCD 모듈 (8 비트 ) Port C (PC5 ~ PC7) Port A (PA0 ~ PA7) CPU Board 35

예제 11-1 ASCII 문자출력 #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include "clcd_d8.h" int main (void) clcd_port_init( ); clcd_init_8bit( ); while(1) clcd_position(0,7); clcd_data(0x4c); clcd_data(0x6f); clcd_data(0x76); clcd_data(0x65); _delay_ms(2000); clcd_position(1,3); clcd_data( L ); lddt( L ) clcd_data( o ); clcd_data( v ); clcd_data( data( e ); e); _delay_ms(2000); clcd_clear( ); _delay_ms(2000); 36

예제 11-2 문자열출력 #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include "clcd_d8.h" int main (void) char data1[ ] =!! Hello!!"; char data2[ ] = Shinhan University"; clcd_port_init( ); clcd_init_8bit( ); return 0; while(1) clcd_position(0,0); clcd_str(data1); _delay_ms(500); clcd_position(1,0); clcd_str(data2); _delay_ms(500); clcd_clear( ); _delay_ms(2000); 37