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 :)

Leave a Reply to Martin Cancel reply

Your email address will not be published. Required fields are marked *

5 × three =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>