laserhawk64
Senior Member
"Shirt Billboard" is the fancy new name for "Electronic Nametag", or so I hear. Like this.
They're all cumbersome to program, since they rely on a couple buttons to enter the message by incrementing/decrementing through a series of characters, and a (far too short, usually about 5s) delay in input to determine when one is done (rather than a third button plus a long timeout, say 30s, for redundancy). What a pain.
I came up with a similar idea, for myself. A PICAXE 20M2 outputting to a spare LCD I got for a project I'll likely never build. There's a ROM to store some pre-programmed output, easier (in this one case) than bothering with any sort of text input -- particularly since I'd also like to incorporate graphics.
Chips involved are the previously-mentioned 20M2 and a 24LC256 ROM. Each screen is 128px * 128px, monochrome, so it works out to 2kB to fill the screen. I'd like to do a sort of looping slideshow thing here, so the screens would cycle in a predetermined sequence. That can be changed easily via the PICAXE. LCD is a PowerTip (brand) PG-128128A. (Note: this model # can also appear as PG128128-A and PG-128128-A. Same LCD.)
The circuit itself is very simple, despite appearances (image attached, at the bottom of the post). Yes, it looks like a rat's nest -- P2P wiring on perfboard will always do that! The 20M2 is wired directly to the ROM chip and the LCD; the only other components are resistors, pin headers, a diode (circuit runs off 4xAA batts) and of course the programming jack. (The ROM must be removed to be programmed, but that's no big deal -- although a lead on a sub-us$10 USB ROM programmer would be nice!)
LCD pinout is in the diagram, but I'll reproduce it here.
01 GND
02 GND
03 +5V
04 Contrast Adj.
05 WR - Write
06 RD - Read
07 CE - Chip Enable
08 C/D - Command/Data
09 RST - Reset
10 [N/C]
11-18 D0-D7 (Data In)
19 FS - Font Select
20 [N/C]
The PICAXE 20M2 is connected like this --
B.0-B.3 -> D0-D3 [LCD pins 11-14]
B.4 -> C/D [LCD pin 08]
B.5 -> SDA [ROM pin 05]
B.6 -> FS [LCD pin 19]
B.7 -> SCL [ROM pin 06]
C.0-C.3 -> D4-D7 [LCD pins 15-19]
C.4 -> WR [LCD pin 05]
C.5 -> CE [LCD pin 07]
C.6 -> [N/C]
C.7 -> RST [LCD pin 10]
LCD RD line [pin 06] is connected to VCC. LCD Contrast is VCC through a 10k trimpot (the 10k bit can change, easily -- although the LCD datasheet doesn't list a max/min contrast value, so I've no idea what it should be). The 20M2's SERIN and SEROUT lines (pins 2 and 19 on the chip, respectively) are connected to the usual programming circuit. There are a pair of 4.7k pullups on the I2C lines (one resistor per line, of course) per datasheet recommendations -- I've seen indications on SparkFun that these are not needed, but that's with an Arduino, not a PICAXE (!), so I've left them in for now.
The 24LC256 ROM's pins are as follows -- note that the address lines are for the CHIP'S address, nothing to do with the memory locations inside
01 - A0 -> GND
02 - A1 -> GND
03 - A2 -> GND
04 - GND
05 - SDA -> 20M2 B.5
06 - SCL -> 20M2 B.7
07 - WP -> VCC (Write Protect line. IIRC, tying to VCC inhibits write ops.)
08 - +V
Things that worry me with this circuit, right off the bat --
(1) I should probably put a voltage-sense in there, or SOMETHING fairly idiot-proof (a switch doesn't pass that test) so that if someone uses rechargeable batteries, the then-unnecessary voltage-drop diode is bypassed. (Would a Zener work here? What wattage do you folks think I need?)
(2) Not sure I need the pullups on the I2C line (see above).
(3) That ROM chip has a 64B buffer -- rather small for what I want to do, as it's 1/32 of a screen, and I want to display one whole screen at a time (at least to the unaided eye -- I could care less about cameras and camera-phones).
(4) I would LOVE to know what that contrast spec is -- PowerTip doesn't publish it... hmmm... might have to email them...
Any thoughts, suggestions, or other comments?
Er, to get that predictable first one out of the way -- I'm trying to think of something simple and creative to do, to 'break the ice' with my 08M starter kit. I'll start a separate thread for that, in a little bit. But THIS will not be my first project!
They're all cumbersome to program, since they rely on a couple buttons to enter the message by incrementing/decrementing through a series of characters, and a (far too short, usually about 5s) delay in input to determine when one is done (rather than a third button plus a long timeout, say 30s, for redundancy). What a pain.
I came up with a similar idea, for myself. A PICAXE 20M2 outputting to a spare LCD I got for a project I'll likely never build. There's a ROM to store some pre-programmed output, easier (in this one case) than bothering with any sort of text input -- particularly since I'd also like to incorporate graphics.
Chips involved are the previously-mentioned 20M2 and a 24LC256 ROM. Each screen is 128px * 128px, monochrome, so it works out to 2kB to fill the screen. I'd like to do a sort of looping slideshow thing here, so the screens would cycle in a predetermined sequence. That can be changed easily via the PICAXE. LCD is a PowerTip (brand) PG-128128A. (Note: this model # can also appear as PG128128-A and PG-128128-A. Same LCD.)
The circuit itself is very simple, despite appearances (image attached, at the bottom of the post). Yes, it looks like a rat's nest -- P2P wiring on perfboard will always do that! The 20M2 is wired directly to the ROM chip and the LCD; the only other components are resistors, pin headers, a diode (circuit runs off 4xAA batts) and of course the programming jack. (The ROM must be removed to be programmed, but that's no big deal -- although a lead on a sub-us$10 USB ROM programmer would be nice!)
LCD pinout is in the diagram, but I'll reproduce it here.
01 GND
02 GND
03 +5V
04 Contrast Adj.
05 WR - Write
06 RD - Read
07 CE - Chip Enable
08 C/D - Command/Data
09 RST - Reset
10 [N/C]
11-18 D0-D7 (Data In)
19 FS - Font Select
20 [N/C]
The PICAXE 20M2 is connected like this --
B.0-B.3 -> D0-D3 [LCD pins 11-14]
B.4 -> C/D [LCD pin 08]
B.5 -> SDA [ROM pin 05]
B.6 -> FS [LCD pin 19]
B.7 -> SCL [ROM pin 06]
C.0-C.3 -> D4-D7 [LCD pins 15-19]
C.4 -> WR [LCD pin 05]
C.5 -> CE [LCD pin 07]
C.6 -> [N/C]
C.7 -> RST [LCD pin 10]
LCD RD line [pin 06] is connected to VCC. LCD Contrast is VCC through a 10k trimpot (the 10k bit can change, easily -- although the LCD datasheet doesn't list a max/min contrast value, so I've no idea what it should be). The 20M2's SERIN and SEROUT lines (pins 2 and 19 on the chip, respectively) are connected to the usual programming circuit. There are a pair of 4.7k pullups on the I2C lines (one resistor per line, of course) per datasheet recommendations -- I've seen indications on SparkFun that these are not needed, but that's with an Arduino, not a PICAXE (!), so I've left them in for now.
The 24LC256 ROM's pins are as follows -- note that the address lines are for the CHIP'S address, nothing to do with the memory locations inside
01 - A0 -> GND
02 - A1 -> GND
03 - A2 -> GND
04 - GND
05 - SDA -> 20M2 B.5
06 - SCL -> 20M2 B.7
07 - WP -> VCC (Write Protect line. IIRC, tying to VCC inhibits write ops.)
08 - +V
Things that worry me with this circuit, right off the bat --
(1) I should probably put a voltage-sense in there, or SOMETHING fairly idiot-proof (a switch doesn't pass that test) so that if someone uses rechargeable batteries, the then-unnecessary voltage-drop diode is bypassed. (Would a Zener work here? What wattage do you folks think I need?)
(2) Not sure I need the pullups on the I2C line (see above).
(3) That ROM chip has a 64B buffer -- rather small for what I want to do, as it's 1/32 of a screen, and I want to display one whole screen at a time (at least to the unaided eye -- I could care less about cameras and camera-phones).
(4) I would LOVE to know what that contrast spec is -- PowerTip doesn't publish it... hmmm... might have to email them...
Any thoughts, suggestions, or other comments?
Er, to get that predictable first one out of the way -- I'm trying to think of something simple and creative to do, to 'break the ice' with my 08M starter kit. I'll start a separate thread for that, in a little bit. But THIS will not be my first project!