티스토리 뷰
이번 글에서는 앞에서 만들었던 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' 카테고리의 다른 글
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 |