Interfacing an LCD

Here I describe how to interface a Character LCD based on HD47780 or compatible controllers.

Ext IF # LCD #
D0 1 D0 7
D1 2 D1 8
D2 3 D2 9
D3 4 D3 10
D4 5 D4 11
D5 6 D5 12
D6 7 D6 13
D7 8 D7 14
A0 9 RS 4
A1 10 E 6
A2 11 RW 5
A3 12
+5V 13 VDD 2
/CS 14
/RD 15
/WR 16
/INT 17
GND 18 VSS 1
Vo (contrast) 3

Vo … connect a 10k poti between VDD and GND and the wiper to Vo.

This is only a test connection and it’s not very usable by now. You can get some random stuff on your display when other data is transfered on the bus.

For a better bus interface I have to look on the function of the /CS line in more detail so that the LCD doesn’t get disturbed by misc. data.
To get some data onto the display I modified diag.c the kernel module that is used by OpenWRT to set the Router’s LEDs and to fetch some keys. diag.c can be found in: /location_where_you_unziped_openwrt/target/linux/packages/diag/src/. I added a own /proc entry called extif. And so I was able to display data that way:

echo “iHello OpenWRT :-)” > /proc/diag/extif

The “i” is only there to tell the module to initialize the display first.

My Module

Next step will be that i write a module on my own that handels everything :) –> Read here more about the module…

Tags: , ,

One Response to “Interfacing an LCD”

  1. Martin GERMANY Says:

    Hi
    very nice … now search a working LCD :-) … my other problem … I’m using original ASUS software …
    Is there an unused bit at the port? Maybe it is possible to use a backlight lcd and switch light on / off by time daemon or manual with this bit?

    I’ll test this version after new year …

    Thanks and have a good new year
    Martin

Leave a Reply