:: So, How are these "static" LCDs droved? Very similar to the way a multiplexed 7 segment LED display is driven. I've driven a small 2 digit 'glass' LCD using a 74H595 and with the much larger ULN5832 32 bit shift register IC. Below is the proto code written in basic not using the 5832, but the 595. Colin include "MCU-CONFIG/hwreg-p16f876.h" pragma cpu_fosc 4000000 pragma cpu_heartbeat 39 //32Hz is limit of LCD refresh @5v hwreg tx_port = &PORTB const COM = (1<<4) const latch_pin =(1<<1) const data_pin = (1<<2) const clock_pin = (1<<3) ubyte phase ubyte digit /********************************************************************* ************** ** Segment pattern depends on the shift register wiring to the LCD panel. ** ** 74HC595 is wired according to the following pattern. ** ** 595 Pin #'s 7 6 5 4 3 2 1 15 ** 595 Outputs Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 ** ** LCD segments E D C B A F G DP1 ** LCD Pin #'s 3 4 5 14 15 16 17 2 ** ********************************************************************** *************/ const ubyte segments = 0b_1111_1100,0b_0011_0000,0b_1101_1010,0b_0111_1010,0b_0011_0110, 0b_0110_1110,0b_1110_1110,0b_0011_1100,0b_1111_1110,0b_0111_1110, 0b_0111_0110 ubyte buffer proc setup() PORTB = 0 TRISB = 0xE1 phase = 0 endproc proc ubyte get_seg(ubyte digit_seg) ubyte seg seg = segments[digit_seg] return seg endproc proc out_5832(ubyte shift_data) ubyte bitcount ubyte phase_shift_data if (phase &1)!=0 then phase_shift_data = shift_data else phase_shift_data = ~shift_data endif tx_port &= ~latch_pin for bitcount = 0x80 while bitcount >0 step bitcount>>=1 do tx_port &= ~ clock_pin if (phase_shift_data & bitcount) !=0 then tx_port |=data_pin else tx_port &=~data_pin endif tx_port |= clock_pin done tx_port = tx_port | latch_pin if (phase &1) !=0 then tx_port = tx_port &~COM else tx_port = tx_port | COM endif phase+=1 endproc proc main() setup() digit = 0 buffer = get_seg(digit) while(1) do digit += 1 //test count 0->10 if digit > 10 then digit = 0 endif buffer = get_seg(digit) delay_1ms(250) delay_1ms(250) delay_1ms(250) delay_1ms(250) done endproc proc intserv() out_5832(buffer) endproc -- cdb, colin@btech-online.co.uk on 2/11/2005 Web presence: www.btech-online.co.uk Hosted by: www.1and1.co.uk/?k_id=7988359 We cannot become what we need to be by remaining what we are. (Max de Pree) -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist