I recently bought a "goodie bag" or whatever it is called with a lot of different displays in the bag. I figured it could be useful someday or just to play around with. However it seems that the datasheet that was supplied didn't cover all the displays.

All I got was this: http://www.kemo-electronic.de/datasheets/s043.pdf

The component I have though seems to be a DGL-0401YG-4EH enter image description here

Now I don't know how to actually get anything on that thing... so my questions is.

Is there a generic way to handle LCD displays or do you need a specific datasheet for each one? If it is generic then where do I find a good place to start learning how to use it? If not then where can I find the specific datasheet?

  • 1
    \$\begingroup\$ Some lcd datasheets are impossible to find. With made to order lcds with proprietary datasheets, you never will, even if you contact the manufacturer. Best bet, find a very similar part number that the manufacturer stocks, and just assume the parts are close enough. \$\endgroup\$ – Passerby Jan 10 '14 at 22:59

From the picture you supplied it looks like a basic LCD (no drivers etc.) and one thing you can find is what the content of its capabilities are - try lightly pressing on the screen and get, in your minds eye, a picture of what the LCD can display. Hey, if you press too hard it'll bust but you can't make an omelette without breaking an egg or three.

Without knowing what it can display = no use to anyone so, try the pressure test and establish what it's capabilities are then, using a 1.5 volt battery on flying leads, go round each pin in turn and see if you can get any of the segments to flicker. More than likely there will be one (or possibly two) common pins that one battery terminal can connect to that "illuminates" several or all segments.

Establish this and you are nearly there - find a driver chip (plenty about) that interfaces with a "raw" LCD and that's just about job done.

You don't really need a spec sheet - you just need a pin-out and a visual map of what the device can display. If you are interested in stuff like how it performs at 70 degC then this is more difficult to establish but only you can tell us that.


I have got the dgl0401 working, and its a neat little device !

DGL-0401YG-4EH Bottom row has 10 pins, top row has 8 pins. My numbering conmvention has pin 1 on bottom left and pin 18 on top left.
(Pins 15 and 16 are not connected either internally or externally.)

The PIC16lF1939 has a watch crystal connected and initialized, is set to run at 8 MHz, and it uses the SLEEP command.Without using SLEEP the device uses about 2,000 microAmps, with SLEEP the device averages about 40 microAmps with the watch crystal and display always running.


PIC pin:   DGL pin:
37         1     Com0
38         2     Com1
4          17    Com2
19         18    Com3

22 s16     4
27 s17     5
28 s18     6
29 s19     7
30 s20     8
8  s21     9
9  s22     14
10 s23     13

3  s7      3  
7  s5      10 
17 s3      11 
33 s0      12   

Once initialized, writing to address LCDDATAn, Bitm "1" turns on, "0" turns off...

As it is an "A" type waveform, the LCDDATA registers can be written-to at any instant and writing does not need to time-in in any way. To write "hours" and "minutes" to the display, convert each of these binary integers to two bcd bytes.

Then look-up the segment pattern for each bcd number and place into thousands, hundreds, tens units registers. Then a long routine reads these registers and bit by bit loads the shadow registers. Then the shadow registers get copied into the LCDDATA registers.

All the number segments with "1" and "2" and some icons:

;Bit>     ;7           6        5          4   3        2     1   0  
LCDDATA2  ;driptap     sunshine 3c         3e  2c       2e    1c  1e        
LCDDATA5  ;"2"         Xhairs   3d         dp  2d       colon 1d  - 
LCDDATA8  ;portcullis  "1"      3b         3a  2b       2a    1b  1a        
LCDDATA11 ;tri_in_circle        ^leftUpper 3g  3f       2g    2f  1g  1f    (com3)

Remaining icon segments:

;Bit>     ;7                    5              3                  0
LCDDATA0  ;pipejoint            noflame        %                  
^rtupper  (com0)
LCDDATA3  ;dropgraph            exclamtri      degreeC            
+rtupper  (com1)
LCDDATA6  ;(nc)         (nc)    -rtLower       uAmps              
blower    (com2)
LCDDATA9  ;\/leftLower          \/rtLower  4   "Bar"              
flameon   (com3)

Setting up the LCD driver (see DS1574B pages 329..362 for PIC16(L)F1939 datasheet info).

banksel PIE2
bcf     PIE2, LCDIE 
banksel PIR2
bcf     PIR2, LCDIF 
banksel LCDCON        ;Bank15 (all the LCD registers are here)
;(Watch crystal source. LCDCON :=11000111 => LCDEN=on,
;Sleep on disabled,0,0,T1osc, 4 commons)
movlw   b'00000111' 
;0 LCDoff, 0 enabled in sleep, ? , unimpl , 01 Timer1 osc source, 11 mpx 1/4 
movwf   LCDCON
movlw   b'00000101';default b'00000101' Set to type A waveform, WFT:=0, 1:6 

; prescaler
movwf   LCDPS      ;pp332 affects frequency, can vary lower 4 bits somewhat  

;(experiment) want 37 Hz for no flicker
movlw   b'10101001';<7.0> bits 7,5,3,0 are used (for icons exclusively)
movwf   LCDSE0     ;Segment Enable register0
movlw   b'00000000';<15.8> none of these bits are used
movwf   LCDSE1
movlw   b'11111111';<23.16> all of these bits are used (for segments + some icons)
movwf   LCDSE2
movlw   b'00000000';Load initial display to "1 2   -1:2.3"
movwf   LCDDATA0   ;Data Registers, write to these at the appropriate time
movlw   b'00100110' ;;;;
movwf   LCDDATA2    ;   "1"   "2"    "-1:2.3" are initially loaded.
movlw   b'00000000' ;
movwf   LCDDATA3    ;          a          a         a
movlw   b'10111101' ;         --         --        --
movwf   LCDDATA5    ;      f/g  /b    f/g  /b   f/ g /b  
movlw   b'00000000' ;   -   --    :    --        --
movwf   LCDDATA6    ;    e/   /c    e/   /c . e/   /c
movlw   b'01111110' ;      --         --        --
movwf   LCDDATA8    ;      d          d         d
movlw   b'00000000' ;
movwf   LCDDATA9    ;      1          2         3
movlw   b'00101000' ;
movwf   LCDDATA11   ; (symbol to segment assignments ^)

movlw   b'10100000' ;default b'10100000'
;7:=1 Internal Ref enabled, 6:=0 LCD contrast powered by Vdd, 
;5:=1 Disconnect power ladder during "B" wave
;<3..1>:=0 Port B3, B2, B1 pins are unassigned and free to use elsewhere, 0:=0 

; (unimplemented)
movwf   LCDREF      
;pp333 Success!, so the external bias pins b1, b2, b3 can be released for other use.
movlw   b'00000101' ;default b'00000101'
;<2..0>:=101 Resistor ladder is at 5/7th of maximum resistance, determined by experiment
movwf   LCDCST      ;pp334 varies the contrast, 000=>max contrast 

movlw   b'10000100' 
;default b'10000100' A gets 4 clocks, B (unpowered) gets 12 clocks
movwf   LCDRL       
;pp339..342 Resistor Ladder time on.(experiment established A:B:=4:12 clocks)
movlw   b'10000111' 
;1 LCDon , 0 enabled in sleep, 00 ?? , 01 T1osc source , 11 lmux :=1/4 
movwf   LCDCON
;The LCD display is now set up using waveform "A" and the LCDDATAx registers 
;can be written at any instant.
  • \$\begingroup\$ "I can scan and upload notes if somebody wants to display them..." Please do, I've got a couple of these around (among others) and has little experience poking LCD-devices. I got mine as part of packages I purchased for their LED-displays, and since the LCDs were undocumented, they've just been left in the drawer. It would've been nice to put them to good use! :) \$\endgroup\$ – user91572 Nov 12 '15 at 19:09
  • \$\begingroup\$ I changed my post to give the info. Posting lost all the formatting, so the reader has to do this manually. But you've got all the necessary information here. Enjoy ! \$\endgroup\$ – Beaky Dec 4 '15 at 3:59
  • \$\begingroup\$ Correction, current drawn without using sleep command is about 1500 microAmps, with sleep it averages less than 20 microAmps, of which the LCD glass takes 10 microAmps and the watch crystal about 600nA. If displaying numbers, only 12 microcontroller pins are needed to drive the glass, another 4 pins to drive all the icons. The display views at 12 o,clock. This dgl0401 /pic16lf1939 make for a versatile, battery-driven instrument. \$\endgroup\$ – Beaky Dec 6 '15 at 9:37

This is a 4-commons, 12 segment lcd.

Use an old stepper motor to inject an ac voltage, then you can map the segments.

Top of the device has 8 pins, bottom has 10. The two pins on the left top and bottom are the commons

Two pins on the top are unconnected.

The rest are segments.

The pic16f1939 can drive it.

Have fun !


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.