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 an optrex 323 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
attention
a typo in serdisplib versions 1.97.5 - 1.97.7 renders the driver for this display unusable.
this bug has been fixed in version 1.97.8.
this bug has been fixed in version 1.97.8.
quick fix
in the source fileserdisp_specific_sed153x.c
simply replace in array-definitionserdisp_sed153x_wiresignals[]
:,{SDCT_PP, "DC", 0, 'D', 17 }through,{SDCT_PP, "DC", 0, 'D', 16 }thanks to daniel badberg for helping me find this bug
optrex 323:
description
optrex 323 is a low-cost graphic display. i bought two displays
at Neuhold Elektronik
for only less than 15 € / each.
specifications | |
---|---|
resolution | 117x62 |
colours | monochrome |
backlight | yes, built-in (LED, green) |
adjustable contrast | yes, programmable |
controller | SED 1531 |
comments | actually the display has 121x62 pixels, but only 117x62 pixels are practicably usable (the remaining pixels are double-sized). due to a very strange addressing even these remaining 117x62 pixels have to be handled in a painful way ... |
name in serdisplib |
OPTREX323 (example: serdisp_init(sdcd, "OPTREX323", ""); ) |
some images
optrex323 showing my logo | output generated by graphlcd (and a 2nd optrex laying in front) |
only few electronical parts are needed (7 resistors and 2 voltage regulators) |
different view (resistors are underneath the voltage regulator) |
top ^
connecting an optrex 323 to the parallel port:
intro
when connecting an optrex 323 to the parallel port you don't have to fool
around with different wirings because fortunately a
'reference wiring' exists
which is used by all projects i know (the document is written in german, i will try to
translate the most important parts).
you'll find further examples of projects using an optrex 323 below (links).
wiring
signals:
Signal name PC LCD Signal name -------------------------------------------------------------------------------------- Data 0 2 12 SI serial data input of LCD Data 1 3 11 SCLK serial Clock line of LCD Data 2 4 9 D/C (or sometimes labelled A0) command/data switch Data 3 5 8 CS first high active Chip select input Data 4 6 7 /CS second low active Chip select input Data 5 7 6 /RES low active Reset input Data 7 9 3 high active Backlight input Ground 18 4 Ground for printer port and +9V Ground 18 13 Ground for printer port and +5V -- 10 +5V (0.4 mA) Chip power supply -- 2 +9V (125 mA) Backlight power supply
circuit:
part list:
Part# Type Value Annotation --------------------------------------------------------------------- R1-R7 Resistor 1 kOhm IC1 Voltage Regulator 7805 IC2 Voltage Regulator 7809 'stronger' version
addressing
the pixel space of an optrex 323 can be split into three areas:
- double-sized pixels (dark-grey in the picture above, 4 columns (two on each side))
unusable for normal displaying of images or other generic output - "standard area" (normal grey, 115x54)
used by the built-in font-generator, if only this area is used, no translation is needed. - "usable area" (light-grey, 117x62)
standard area plus 8 rows and 2 columns surrounding the standard area
to be able to use all 117x62 pixels, each pixel operation has to be translated:
examples:
setPixel(0,0) needs to be translated to column = 117 and row = 54
setPixel(1,4) will be column = 0 and row = 0
pages vs. rows:
another item to take care of: 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 pages are transferred (using an optimising algorithm) to the display. the display buffer is also responsible for the translation of 'real' x/y-addresses to corresponding display addresses.
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, "OPTREX323", "WIRING=3;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 | 1 |
WIRING | WIRE | pre-defined or customisable wiring | 0 |
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 |
---|---|---|---|
Optrex | 0 | PAR | Original Optrex 323 wiring, w/ backlight |
Alps | 1 | PAR | ALPS LC-Display Modul-Kit wiring, the same as optrex wiring, but without backlight |
display signals
identifier | description | mandatory |
---|---|---|
SI | serial data input | * |
SCL | serial clock | * |
DC | data or command | * |
CS | chip select input 1 | * |
ICS | chip select input 2, active low | * |
RESET | reset signal, active low; optional if wired to a hardware reset circuit | * |
BACKLIGHT | backlight, optional |
annotations
- Optrex 323 and Alps LSU7S1011 share the same wiring (one exception: ALPS-wiring is without backlight)
top ^
links:
optrex 323 | |||
---|---|---|---|
Kurzinfo | short info on optrex 323. contains wiring, addressing and a very short description on how to control the display | (german) | KurzInfo.pdf |
controller SED 1531 (new name: S1D15301) | |||
---|---|---|---|
technical manual for SED1531 | page for SED1531 / S1D15301 on epson electronics | (english) | http://www.epson-electronics.de -> S1D15301 |
technical manual, different place | page for SED1531 / S1D15301 on epson eea | (english) | http://www.eea.epson.com -> S1D15301 |
top ^
history:
2008-04-06 | added attention-note (typo in versions 1.97.5-1.97.7) |
2005-10-03 | removed mistakable digits from circuit at JP1 (they were inserted by EAGLE) - thanks to Michael Heubeck for this hint |
2005-05-08 | adapted page for new css added section 'passing options' |
2004-03-28 | added display name and code-example for serdisp_init() |
2004-01-13 | first release |
top ^