optrex 323

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.

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.

quick fix

in the source file serdisp_specific_sed153x.c simply replace in array-definition serdisp_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] [optrex323]
optrex323 showing my logo output generated by graphlcd
(and a 2nd optrex laying in front)
[optrex323] [optrex323]
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:

[optrex323: circuit]

part list:


    Part#   Type                Value        Annotation
    ---------------------------------------------------------------------
    R1-R7   Resistor            1 kOhm       
    IC1     Voltage Regulator   7805         
    IC2     Voltage Regulator   7809         'stronger' version

    

addressing

[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 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

identifiershortremarkdefault
ROTATEROTrotate display (1 == 180 degrees)0
INVERTINVinvert display0
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 contrast5
BACKLIGHTBGswitch background light on or off1
WIRINGWIREpre-defined or customisable wiring0

ranges, aliases

identifierrangealiases
ROTATE0, 1, 90, 180, 270YES=180, NO=0, TRUE=180, FALSE=0
INVERT0, 1YES=1, NO=0, TRUE=1, FALSE=0
DELAY>= 0NONE=0
CONTRAST[0, 10] 
BACKLIGHT0, 1YES=1, NO=0, TRUE=1, FALSE=0, ON=1, OFF=0

pre-defined wiring definitions

identifiernumeric idprotocoldescription
Optrex0PAROriginal Optrex 323 wiring, w/ backlight
Alps1PARALPS LC-Display Modul-Kit wiring, the same as optrex wiring, but without backlight

display signals

identifierdescriptionmandatory
SIserial data input*
SCLserial clock*
DCdata or command*
CSchip select input 1*
ICSchip select input 2, active low*
RESETreset signal, active low; optional if wired to a hardware reset circuit*
BACKLIGHTbacklight, optional 

annotations

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 ^

design by wolfgang astleitner, (C) 1998 - 2005