티스토리 뷰

이번 글에서는 앞에서 만들었던 4비트 모드 LCD 연결에서 R/W 신호를 GND에 고정 시켜 AVR과 LCD의 신호를 6개만 연결하는 회로를 이용하는 방법에 대해서 설명하도록 한다.

회로를 다음과 같이 만든다.

LCD의 R/W 신호를 GND에 연결한 것과, 이로 인하여 AVR과 LCD는 모두 6개의 신호로 연결된 것을 볼 수 있다.  8비트 모드에서 사용하였던 11개의 신호선에 비하면 거의 절반이나 줄어든 효과를 가지고 온다고 볼수 있겠다.  물론 8비트 모드에서도 R/W 신호선을 사용하지 않게 할 수도 있다.

그럼 위의 회로 구성에 따라 수정하여야 하는 LCD 드라이버 코드가 어떤 것들이 있는지 하나씩 확인해 보도록 한다.

먼저 E신호가 앞에서는 PD2에 연결되었는데 이번에는 PD1에 연결되었으므로 이 부분에 대한 코드를 수정한다.

그 다음으로는, R/W 신호가 고정되어 있으므로 이 부분과 연관된 코드를 모두 제거한다.

port_rd() 함수는 원래 PIN 레지스터의 값을 읽어 오도록 되어 있었는데, 여기에서는 PORT 레지스터에서 읽어 오는것으로 수정하였다.

그리고 set_rd()와 set_wr() 함수를 삭제하였다.

역시, lcd_read() 함수를 삭제하였고, lcd_write()에 있던 lcd_wait_busy()와 set_wr() 부분도 삭제하였다.

send_cmd()와 send_data() 함수에서는 1msec정도의 delay를 주었는데, 이유는 이제 더이상 BUSY Flag비트값을 확인할 수 없으므로 적당한 시간을 주기 위해서이다. 이 값은 약간씩 조정해가면 안정적으로 동작되는 최소값을 주면 된다.

마지막으로 lcd_putc() 함수는 단순히 send_data() 함수 하나만을 부르는것으로 단순화 하였다.

코드를 모두 수정하였으면 실제 보드에 적용하여 정상적으로 글자들이 출력되는지 확인해 본다.

lcd1602_drv.c

lcd1602_drv.h





'프로젝트 > LCD1602' 카테고리의 다른 글

LCD1602 - ADC 출력  (2) 2016.07.16
LCD1602 드라이버 코드 - CGRAM  (1) 2016.07.15
LCD1602 드라이버 코드 - 4비트 모드  (4) 2016.07.14
LCD1602 드라이버 코드 - 8비트 모드  (4) 2016.07.10
LCD1602 - 회로 구성  (0) 2016.07.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함