The 2 Line LCD Display and its HD44780 Controller
The 2 Line LCD Display and its HD44780 Controller
Uli Raich
UCC semester 2017/2018
COPYRIGHT © 2024 by the contributing authors
Slide 1 of 15
Why a simple 2 line display?
Often embedded systems do not have a screen, keyboard and mouse associated with them.
Small devices in the field may nevertheless need to display some values to the user
Small and cheap LCD displays can take over this task
Our display can be used for many purposes (see the open day):
- Name display
- Weather station
- Voltmeter
and there are many more applications
COPYRIGHT © 2024 by the contributing authors
Slide 2 of 15
COPYRIGHT © 2024 by the contributing authors
Slide 3 of 15
COPYRIGHT © 2024 by the contributing authors
Slide 4 of 15
The PCF8574 I2C interface
The PCF8574
I2C I/O expander allows to limit the number of connection wires to just four.
It is a kind of a shift register: serial in, parallel out
COPYRIGHT © 2024 by the contributing authors
Slide 5 of 15
The display needs a large number of interface signals to be able to work:
|
|
COPYRIGHT © 2024 by the contributing authors
Slide 6 of 15
Writing the to HD4780 controller via the PCF8574
COPYRIGHT © 2024 by the contributing authors
Slide 7 of 15
Writing to PCF8574 via pigpio
Even though it looks complicated at first sight,
writing a data byte to the hd44780 controller via the
pcf8574 I/O extender is actually pretty simple:
After this instruction the 8 data bits of bVal lie at the input of the hd44780 controller.
COPYRIGHT © 2024 by the contributing authors
Slide 8 of 15
We will therefore need a great deal of bit fiddling to
create this data byte and to modify it to
- Set the back light on or off
- To send a pulse on the E (strobe) line
Hope you remember the
- bitwise or operator: |
- bitwise and operator: &
- bit inversion: ~
COPYRIGHT © 2024 by the contributing authors
Slide 9 of 15
As already explained several times, a library must supply:
- The binary code: libhd44780.so
- The include file hd44780.h
COPYRIGHT © 2024 by the contributing authors
Slide 10 of 15
COPYRIGHT © 2024 by the contributing authors
Slide 11 of 15
In addition to the prototypes, have a look at the
doxygen documentation
and you should be able to program the display.
Of course you have to include
-I/opt/ucc/include in your CFLAGS
-L/opt/ucc/lib in your LDFLAGS
and -lhd4780 in your LDLIBS
However, we want to understand what is happening behind the scene!
COPYRIGHT © 2024 by the contributing authors
Slide 12 of 15
Before starting to write the library we must first test if
- We can initialize the device ?
- We can write something to it and read it back ?
- Or can we find any other function showing us that the device responds?
COPYRIGHT © 2024 by the contributing authors
Slide 13 of 15
To give us some confidence, let’s try to switch the back light on and off:
This one is easy as it does not access the hd44780.
It does test the PCF8574 though!
Switching bit 7 in the data word does the trick.
Later we will read a byte from the display and and/or bit seven
into the byte read before writing it back.
COPYRIGHT © 2024 by the contributing authors
Slide 14 of 15
Timing diagrams 4 bit mode
COPYRIGHT © 2024 by the contributing authors
Slide 15 of 15
--
Uli Raich - 2017-11-06
Comments
This topic: Embedded_Systems
> WebHome >
LectureSlides > Lecture11:The2LineLCDDisplay
Topic revision: r3 - 2017-11-12 - uli
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback