일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ubuntu
- Interrupt
- #시리얼통신
- #textLCD
- sqlite
- #PuTTY
- github
- #MCU
- #문자열
- 인터럽트
- petalinux
- ubutu
- #ComportMaster
- zynq
- git
- avr
- #CLCD
- xilinx
- Embedded linux
- #채터링
- SQLite Studio
- #UART
- Linux
- #Atmega128
- ATMEGA128
- Database
- Today
- Total
재잼재잼의 티스토리
8. CLCD 사용하기(2) 본문
앞에서는 CLCD에 관해서 사용하는 방법에 대해서 알아보았는데, 실제로 사용하는 것도 필요할 것 같다.
이번에는 그냥 화면에 출력하는 것이지만, 어떻게 동작을 하는지 생각하면서 자세하게 알아보려한다.
먼저 LCD드라이버의 블록다이어그램을 살펴보자.
LCD 드라이버중 HD44780의 블록다이어그램이다. 다른 드라이버도 많지만,, 대부분 거의 비슷하게 동작하기 때문에 이해하기 편한것을 가져왔다....
먼저, DDRAM과 CGROM, CGRAM을 보자.
DDRAM(Display Data RAM)은 이름에서도 알 수 있듯이 화면에 출력할 데이터를 저장하는 RAM이다. 지금 사용하고 있는 16 * 2의 LCD는 16글자씩 총 2줄로 표현할 수 있는데, 각각의 칸마다 주소가 정해져 있다. 이것이 DDRAM의 주소다.
앞에서 LCD초기화 하는 과정에 Entry Set 명령을 살펴보면 I/D 비트에 따라 출력후 커서 위치를 증가/감소할 것인지를 결정하는데 이것이 DDRAM 값을 증가할 것인지 감소 시킬 것인지 결정한다고 볼 수 있다.
또한 명령어에서 set DDRAM addr이 있는데, 이 명령을 사용하면 DDRAM주소를 지정해주어서 커서 위치를 변경할 수 있다.
CGROM(Character Generator ROM)에는 LCD에서 출력할 수 있는 문자에 대한 문자패턴이 저장되어 있다.
(출처 : https://www.crystalfontz.com/blog/glossary/cgrom/)
이런 형태로 저장되어, DDRAM에 저장된 내용을 문자 패턴에 맞게 출력해준다.
CGRAM(Character Generator RAM)에는 사용자가 출력하고싶은 문자를 직접 작성할 수 있다.
즉, LCD는 데이터핀으로 입력된 8비트 데이터를 RS값에 따라 명령레지스터로 저장할지, 데이터레지스터로 저장할지 결정하고, 명령어의 경우에는 명령디코더에서 명령어를 해석하여 처리하고, 데이터의 경우에는 DDRAM에 저장되어 CGROM에 있는 정의된 문자로 LCD에 출력하게 된다.
물론 이렇게 명령어를 처리하거나, 데이터를 출력하기 위해서는 Enable핀에서 하강엣지가 발생해야한다.
--------------------------------------
실제로 출력해보도록 하자. 나는 4bit 모드를 사용하기 때문에 데이터에서 상위 4bit를 먼저 처리하고, 하위비트를 전송하여 처리한다.
자주 사용하는 값의 경우 미리 define문으로 정의 해두었다.
우선 초기화를 하자. Function Set 명령을 보내고, Display On/Off 명령을 보내고, Entry Set을 보낸다. LCD_clear명령을 통해서 커서 위치를 0x00으로 지정한다.
실제로 데이터를 쓰는 코드와 명령을 작성하는 코드다. 둘다 Data 포트를 통해서 전송하는 것은 동일하지만, RS핀의 상태가 다르다는 것을 주의한다.
set DDRAM addr 명령을 사용해서 커서의 위치를 지정해주는 코드로, 1행의 첫 주소는 0x00, 2행의 첫 주소는 0x40인 점을 사용해서 주소값을 계산한다.
간단한 예제와 비슷한 코드를 작성했다.
LCD 초기화 함수에서 커서비트와 Blink 비트를 1로 셋팅해서 커서가 생기고 깜빡깜빡 하는 것을 확인할 수 있다.
LCD와 버튼2개를 연결하여 버튼을 누름에 따라 커서를 움직이도록 만들어 보았다.
-------------------------------
나중에 타이머 카운터를 잘 이해하고 나면,, 디지털 시계를 만들어보는 것을 목표로 할 수 있겠다...
앞으로도 열심히 공부하도록 하자.
'MCU' 카테고리의 다른 글
10. 외부 인터럽트 (0) | 2019.04.01 |
---|---|
9. ADC 및 Cds 사용하기 (1) | 2019.01.28 |
7. CLCD 사용하기 (0) | 2019.01.22 |
6. UART 문자열 송/수신 (0) | 2019.01.16 |
5.UART 문자 송/수신 (0) | 2019.01.15 |