disclaimer / info:
DISCLAIMER:
THIS IS EXPERIMENTAL SOFTWARE AND HARDWARE. USE AT YOUR OWN RISK. THE MAINTAINER(S) OF THESE PAGES AND THE DEVELOPER(S) OF SOFTWARE AND HARDWARE PRESENTED ON THESE PAGES CAN NOT BE HELD LIABLE UNDER ANY CIRCUMSTANCES FOR DAMAGE TO HARDWARE OR SOFTWARE, LOST DATA, OR OTHER DIRECT OR INDIRECT DAMAGE RESULTING FROM THE USE OF THIS SOFTWARE OR HARDWARE. IF YOU DO NOT AGREE TO THESE CONDITIONS, YOU ARE NOT PERMITTED TO USE OR FURTHER DISTRIBUTE THIS SOFTWARE OR TO USE ANY TEMPLATES FOR BUILDING HARDWARE PRESENTED HERE.
- this page deals with connecting the display module of an nec 21a pager (also known as skyper in germany) to a parallel port and drive it using
serdisplib
- i'm not responsible for the content of external web pages
- external web pages will generally open in separate browser windows or tabs
- english is not my native language. please keep that in mind (corrections of english grammar and formulations are very welcome!)
- email: mrwastl at users.sourceforge.net
nec 21a display module:
description
nec 21a display modules are controlled using an on-board controller sed1561.
specifications | |
---|---|
resolution | 132x32 |
colours | monochrome |
controller | sed1561 |
backlight | yes (EL-foil) |
adjustable contrast | yes, programmable |
dimensions | module: 80 x 50 mm, display area: 57 x 19.5 mm (measured, pixel area, w/o symbols) |
name in serdisplib | NEC21A (example:
serdisp_init(sdcd, "NEC21A", ""); ) |
image
picture of skyper (edition of nec 21a pager by german 'Telekom') source picture (author: Denis Apel) taken from Wikipedia / Skyper (Pager) |
pinout, assembling
pinout for nec 21a display module
1 VDD +3.5V (Chip power supply) 2 (nc) not connected 3 (nc) not connected 4 VSS connect to GND 5 /RES low active Reset input 6 /CS low active Chip Select 7 A0 Command (LOW) or display data (HIGH) 8 ? unknown 9 ? unknown 10 BUT4 Button 4 11 BUT3 Button 3 12 BUT2 Button 2 13 BUT1 Button 1 14 D0 Data0 - Data7 15 D1 16 D2 17 D3 18 D4 19 D5 20 D6 21 D7 22 /RD Read enable input (active-low) 23 /WR Write enable input (active-low) 24 ? unknown 25 ? unknown annotations
|
some images
nec 21a display module showing a test image | output generated by multidisplay |
output generated by graphlcd | another output generated by graphlcd |
top ^
connecting an nec 21a display module to the parallel port:
intro
the wiring is based on an SED133x-wiring called 'PowerLCD'.
as i didn't know of any other projects like this one (connecting an NEC 21a display module to the parallel port) i had to chose a wiring-'standard' for myself.
as i didn't know of any other projects like this one (connecting an NEC 21a display module to the parallel port) i had to chose a wiring-'standard' for myself.
wiring
signals:
top view ____ | \ VDD | = | | = | Sensor (nc) | = | | = | ? (nc) | = | | = | /WR VSS | = | | = | /RD /RES | = | | = | D7 /CS | = | | = | D6 -------------- A0 | = | | | | = | D5 | | ? | = | | LCD- | | = | D4 | Controller | ? | = | | | | = | D3 | SED 1561 | BUT4 | = | | | | = | D2 | | BUT3 | = | | | | = | D1 | | BUT2 | = | | | | = | D0 | | BUT1 | = | | | |____/ | | -------------- Remarks: display module is hard-wired to 8080-mode and parallel interface mode LCD Description --------------------------------- D0 - D7 Data0 - Data 7 /WR Write enable input (active-low) /RD Read enable input (active-low) /RES Reset (active-low) /CS Chip select input (active-low) A0 Command (LOW) or display data (HIGH) VDD 3.5V (Chip power supply) VSS 0V
circuit:
power supply for generating V+ needed by the following circuit
wiring for nec21a display module
part list:
Part# Type Value Annotation --------------------------------------------------------------------------------------- R1 Resistor eg. 270 Ohm R2 Resistor eg. 470 Ohm C1, C2 Capacitor some uF not mandatory, for smoothing input voltage IC1 Var. Voltage Reg. LM317 (or similar) Vout should result in 3.5 V R3-R14 Resistor 1 kOhm R15 Resistor 10 kOhm C3 Capacitor 10 uF
remarks:
R1 and R2 affect Vout of IC1 and are calculated using the following formula:
Vout = 1.25 * (1 + (R2 / R1))
usually (according to the data sheet of LM317) R1 should be 240 Ohm. i chose 270 Ohm.
together with R2 = 470 Ohm i get Vout = 3.425 V.
addressing
annotations
sed1561 supports a max. resolution of 132x65, but nec21a display modules only use 132 x 32.
the last line (#64) is used for displaying symbols (support and explanations will be added in a future version).
pages vs. rows
the display is organised in colums and pages: 8 pixel-rows are combined to a so called page.
as only whole bytes can be transferred to the display, a single pixel cannot be changed without knowing its 7 'neighbour' pixels.
so a display buffer was introduced in the library. pixel changes are all done in this buffer and in a separate step only changed 'page bytes' are transferred (using an optimising algorithm) to the display.
top ^
passing options through serdisp_init():
intro
using the third parameter of
common information about passing options and customisable wiring can be found in a separate document.
serdisp_init()
, driver specific options and custom wiring can be set.common information about passing options and customisable wiring can be found in a separate document.
examples: serdisp_init(sdcd, "NEC21A", "ROTATE=90;INVERT=YES");
options
identifier | short | remark | default |
---|---|---|---|
ROTATE | ROT | rotate display (1 == 180 degrees) | 0 |
INVERT | INV | invert display | 0 |
DELAY | delay after each write/read operation.0 .. no delay 1 .. one call of gettimeofday() >1 .. delay at least x nanoseconds | 0 | |
CONTRAST | set display contrast | 5 | |
BACKLIGHT | BG | switch background light on or off | 0 |
WIRING | WIRE | pre-defined or customisable wiring | 1 |
ranges, aliases
identifier | range | aliases |
---|---|---|
ROTATE | 0, 1, 90, 180, 270 | YES=180, NO=0, TRUE=180, FALSE=0 |
INVERT | 0, 1 | YES=1, NO=0, TRUE=1, FALSE=0 |
DELAY | >= 0 | NONE=0 |
CONTRAST | [0, 10] | |
BACKLIGHT | 0, 1 | YES=1, NO=0, TRUE=1, FALSE=0, ON=1, OFF=0 |
pre-defined wiring definitions
identifier | numeric id | protocol | description |
---|---|---|---|
ParDTSerdisp | 1 | PAR | SerDisp wiring, parallel data transfer |
display signals
identifier | description | mandatory |
---|---|---|
D0 - D7 | 8 bit wide data bus | * |
A0 | data or command | * |
CS | chip select input, active low | * |
WR | write signal, active low | * |
RD | read signal, active low | * |
RESET | reset signal, active low; optional if wired to a hardware reset circuit | |
BACKLIGHT | backlight, optional |
annotations
- serdisplib driver sed156x supports two different types of displays:
- nokia 7110 uses serial data transfer in opposite to nec 21a display module which uses parallel data transfer. nokia 7110 uses
WIRING=0
which is NOT applicable for nec 21a display modules! - no backlight support at the momemt
top ^
history:
2005-05-08 | adapted page for new css added section 'passing options' |
2005-02-26 | first inoffical release |
top ^