LCD.

Slides:



Advertisements
Similar presentations
Hankuk University of Foreign Studies Design and Verification Using FPGA Board Part I.
Advertisements

마이크로 시스템 1 선 덕 한선 덕 한 lecture7. LCD 구동. 마이크로 시스템 2 강의 목표 현재 디스플레이 장치로써 가장 널리 사용되어지는 LCD 을 프로세서 에서 어떻게 제어 하는지 알아본다.
1 시스템및센서네트워크연구실 마이크로콘트롤러응용설계 - 2 character LCD. 2 시스템및센서네트워크연구실 ATmega128.
키보드 보안 순천향대학교 정보보호학과 임강빈 교수.

SoC 로봇워 참가자 교육.
ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.
1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
Copyright SangSangDom, All Rights Reserved.
컴퓨터정보공학과 권춘우 ARDUINO (센서활용프로그래밍/ICT융합실무) - 3 Digit 7 Segment LED - RGB LED(3 Color) - LCD 디스플레이.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
USER’S MANUAL 모델명: CCR-201 코드시스템(주)
Design of Digital Clock (디지털 시계의 설계)
VHDL, FPGA를 이용한 소리인식 스위치 (Matched Filter 사용)
순차로직 개요.
1. VHDL과 합성 설계 1.1 HDL: Hardware Description Language 집적회로의 설계환경의 변화
가산기 설계.
10장 주변장치 (PIO) Slide 1 (of 28).
RnA DISPLAY 구동 Clcd 구동 Made by Bonobonobono.
Multiplexer 설계.
임베디드 하드웨어 Lecture #6.
VHDL의 기본 Lecture #5.
Verilog HDL 이론.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.
VHDL Package and Sub program
Stop Watch 구현 Lecture #12.
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
순차회로 모델링 Sun, Hye-Seung.
II. VHDL 설계부 4장. VHDL 개요 5장. VHDL 설계 구성 6장. VHDL 객체 및 타입 7장. VHDL 모델링
Text LCD control.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
FND (Flexible Numeric Display)
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
순차 회로 설계 및 검증 Sun, Hye-Seung.
Input/Output Control.
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
Ticket Dispenser Technical Manual
FSM 설계.
6장. LCD 사용하기.
Flip-Flop 설계.
타이머/카운트 정리 정보통신•컴퓨터 공학부 송명규
Microprocessor I/O Port & CLCD Noh Jin-Seok.
9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.
Programmable Logic Device
Chapter 4 The Von Neumann Model.
VHDL Mealy and Moore model
6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
VHDL 디지털시계 2.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
가산기 설계.
계산기.
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
주차권 발행기(바코드).
4. Flip-Flops : S-R, D, J-K, T 컴퓨터 구조 실습 안내서.
글로벌 교육 통신원 2015 해외대학 전공교육과정 우수사례 공모전 제목 소속(학과) 학번 성명.
논리회로 설계실험 ICE ICE 담당교수 : 김 인 수.
HDD Error시 교체 -> Windows 재 설치 Check to data base Error
임베디드 하드웨어 Lecture #6.
VHDL 응용 Lecture #10.
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

LCD

Contents LCD test 실습내용

LCD TEST LCD Module 16 문자 * 2 줄 폰트 5 * 8 LCD 컨트롤러 포함

LCD TEST Pin Description

LCD TEST Block Diagram

LCD TEST LCD Module의 내부 Register Instruction Register(IR) : D.D.RAM과 C.G.RAM에 대한 Address 정보와 Clear, 커서 이동에 대한 명령코드를 가지고 있음. 쓰기만 가능 Data Register(DR) : D.D.RAM, C.G.RAM에 데이터를 쓰거나 읽을 때 사용. 데이터를 읽을 경우 DR에 읽은 데이터 저장. IR에 주소를 쓰면 주소에 대한 LCD의 표시 데이터가 C.G.RAM, D.D.RAM으로 부터 DR로 전송 Busy Flag(BF) : LCD의 기록모드에서 외부와 동기를 위해 사용되는 Flag. 외부에서 LCD에 기록한 후 LCD가 내부동작에 머무르고 있을 경우 Busy를 ‘1’로 두어 외부의 명령어를 무시. Address Counter(AC) : AC는 D.D.RAM, C.G.RAM의 주소를 지정할 때 사용. IR에 주소 정보를 쓰면 AC로 전송. 데이터를 쓰면 AC는 자동적으로 +1 또는 -1을 수행

LCD TEST Display Data RAM(D.D.RAM) : 8bits 글자 코드의 디스플레이 데이터를 가지고 있음. D.D.RAM 내에 글자표시에 사용되지 않는 메모리 영역은 일반적인 데이터 RAM으로 사용될 수 있음 D.D.RAM의 주소를 16진수로 나타낸 그림 Line1과 Line2는 주소가 연속적이지 않으므로 Line2로 넘어가려면 주소 설정을 다시 해야 함

LCD TEST Character Generator ROM(C.G.ROM) : 글자발생기는 5 * 8 의 글자를 발생 Character Generator RAM(C.G.RAM) : 사용자가 프로그램으로 새로운 글자의 패턴을 만들 경우에 사용되는 RAM

LCD TEST

LCD TEST LCD Display 과정 전원 인가 VDD 4.5V 후 30ms 대기 LCD 초기화 Busy Flag 검사 IR에 명령어 저장 DR에 표시문자 저장

LCD TEST LCD 초기화

LCD TEST LCD 초기화

LCD TEST LCD instruction sets

LCD TEST LCD TEST의 구성 Reset 버튼과 FPGA clock, lcd를 사용하기 위한 enable핀, RS, R/W를 위한 LCD_A핀, 데이터 전송을 위한 LCD_D로 구성 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity LCD_test is port ( FPGA_RSTB : IN std_logic; FPGA_CLK : IN std_logic; LCD_A : OUT std_logic_vector (1 downto 0); LCD_EN : OUT std_logic; LCD_D : OUT std_logic_vector (7 downto 0)); end LCD_test; architecture Behavioral of LCD_test is signal load_100k : std_logic; signal clk_100k : std_logic; signal cnt_100k : std_logic_vector (7 downto 0); signal load_50 : std_logic; signal clk_50 : std_logic; signal cnt_50 : std_logic_vector (11 downto 0); signal lcd_cnt : std_logic_vector (8 downto 0); signal lcd_state : std_logic_vector (7 downto 0); signal lcd_db : std_logic_vector (7 downto 0);

LCD TEST Clock 분주(100kHz) begin process(FPGA_RSTB,FPGA_CLK,load_100k,cnt_100k) if FPGA_RSTB = '0' then cnt_100k <= (others => '0'); clk_100k <= '0'; elsif rising_edge (FPGA_CLK) then if load_100k = '1' then clk_100k <= not clk_100k; else cnt_100k <= cnt_100k + 1; end if; end process; load_100k <= '1' when (cnt_100k = X"13") else '0';

LCD TEST Clock 분주(50Hz) process(FPGA_RSTB,clk_100k,load_50,cnt_50) begin if FPGA_RSTB = '0' then cnt_50 <= (others => '0'); clk_50 <= '0'; elsif rising_edge (clk_100k) then if load_50 = '1' then clk_50 <= not clk_50; else cnt_50 <= cnt_50 + 1; end if; end process; load_50 <= '1' when (cnt_50 = X"3E7") else '0';

LCD TEST LCD state 할당 process(FPGA_RSTB,clk_50,lcd_cnt) begin if FPGA_RSTB = '0' then lcd_cnt <= (others => '0'); elsif rising_edge (clk_50) then if (lcd_cnt >= "001010110") then lcd_cnt <= lcd_cnt; else lcd_cnt <= lcd_cnt + 1; end if; end process; lcd_state <= lcd_cnt (8 downto 1);

LCD TEST 각 state에 따른 출력 process(lcd_state) begin case lcd_state is when X"00" => lcd_db <= "00111000"; -- Function set when X"01" => lcd_db <= "00001000"; -- Display OFF when X"02" => lcd_db <= "00000001"; -- Display clear when X"03" => lcd_db <= "00000110"; -- Entry mode set when X"04" => lcd_db <= "00001100"; -- Display ON when X"05" => lcd_db <= "00000011"; -- Return Home when X"06" => lcd_db <= X"4C"; -- L when X"07" => lcd_db <= X"49"; -- I when X"08" => lcd_db <= X"42"; -- B when X"09" => lcd_db <= X"45"; -- E when X"0A" => lcd_db <= X"52"; -- R when X"0B" => lcd_db <= X"54"; -- T when X"0C" => lcd_db <= X"52"; -- R when X"0D" => lcd_db <= X"4F"; -- O when X"0E" => lcd_db <= X"4E"; -- N when X"0F" => lcd_db <= X"20"; -- 공백 when X"10" => lcd_db <= X"43"; -- C when X"11" => lcd_db <= X"6F"; -- o when X"12" => lcd_db <= X"20"; -- 공백 when X"13" => lcd_db <= X"4C"; -- L when X"14" => lcd_db <= X"74"; -- t when X"15" => lcd_db <= X"64"; -- d when X"16" => lcd_db <= X"C0"; -- Change Line

LCD TEST 각 state에 따른 출력 when X"17" => lcd_db <= X"20"; -- 공백 when X"18" => lcd_db <= X"3C"; -- < when X"19" => lcd_db <= X"52"; -- R when X"1A" => lcd_db <= X"6F"; -- o when X"1B" => lcd_db <= X"56"; -- V when X"1C" => lcd_db <= X"5F"; -- - when X"1D" => lcd_db <= X"4C"; -- L when X"1E" => lcd_db <= X"61"; -- a when X"1F" => lcd_db <= X"62"; -- b when X"20" => lcd_db <= X"20"; -- 공백 when X"21" => lcd_db <= X"33"; -- 3 when X"22" => lcd_db <= X"30"; -- 0 when X"23" => lcd_db <= X"30"; -- 0 when X"24" => lcd_db <= X"30"; -- 0 when X"25" => lcd_db <= X"3E"; -- > when X"26" => lcd_db <= X"20"; -- 공백 when others => lcd_db <= (others => '0'); end case; end process;

LCD TEST 내부 시그널과 포트와의 연결 LCD_A(1) <= '0'; LCD_A(0) <= '0' when (lcd_state >= X"00" and lcd_state < X"06") or (lcd_state = X"16") else '1'; LCD_EN <= not lcd_cnt(0); LCD_D <= lcd_db; end Behavioral;

실습내용 LCD 모듈을 이용하여 학번, 이름 출력하기 조원의 학번에서 년도 부분을 제외한 6자리 위와 같이 라인 1에 출력 조원의 이름 이니셜을 라인 2에 출력 주어진 Pin table 이용 각 state에 따른 출력 부분을 채워서 따를 것 Function set : 2-line mode, display off Display OFF : display off, cursor off, blink off Entry mode set : Increment mode, Entire shift off Display ON : display on, cursor off, blink off Entity의 내용은 LCD Test와 동일 < 7 1 5 9 > 3 2 4 K Y H ! J S ?

실습내용 Pin table PORT PIN Clk P79 LCD(2) P61 Rst_n P205 LCD(3) P62 LCD_A(0)(RS) P50 LCD(4) P63 LCD_A(1)(R/W) P51 LCD(5) P64 LCD_EN P52 LCD(6) P65 LCD(0) P57 LCD(7) P67 LCD(1) P58