loading

Programmable watch with four character display

Featured
Picture of Programmable watch with four character display
got_text.jpg
You'll be the talk of the town when you wear this obnoxious, oversized, completely impractical wristwatch. Display your favourite foul language, song lyrics, prime numbers, etc.

Inspired by the Microreader kit, I decided to make a giant watch using similar sixteen segment displays. Twelve hours later, I came out of my masochistic fugue and stopped trying to route a sixteen bit data bus on a single sided pcb small enough to wear on your wrist.

Returning to my digikey box of mystery, I came up with a four character display made up of 5x7 led matrices. 7 bit parallel data input, no need for umpteen current limiting resistors, upper and lower case characters, the rest writes itself.

This instructable is not meant to be a tutorial on creating PCBs or programming PICs. In all fairness, I wouldn't actually recommend that anyone try to make one of these. If you know enough to follow along, you can probably do a better job than I did. If you don't know what's going on, then this instructable isn't going to teach you all you need to know.

P.S. If you use this to scroll internet catchphrases in public, you are a bad person and should be ashamed.
 
Remove these adsRemove these ads by Signing Up

Step 1: Get your crap together

What you're going to need:

DLO3416 Intelligent display

Comes in red, green, lavender, fuchsia, and maple walnut flavours.

PIC 16F628A or 16F648A

You might be able to get away with another pin-compatible PIC, just make sure to read the datasheet carefully. Either way, you'll need at least one PIC in the SOIC package and probably a DIP for breadboarding the circuit. The 628A and 648A are identical except for the amount of program memory available (2k vs 4k). Use the 648A unless you have some 628As lying around.

MCP1253

This is a charge pump dc-dc converter. We're going to use this to make 5V for our display from a 3V coin cell battery. Get a few so that you can destroy at least one.

The passive components are all through hole type. I know the mishmash of surface mount and through hole is kind of aesthetically displeasing but what can you do.

-Capacitors: 10uF (2), 1uF (1)

-Resistors: 10K (1)

-Switch: N/O momentary pushbutton. The clicky kind you see everywhere cheap buttons are needed.

-Pin headers/sockets: Two pins and a jumper, and a single row of 6 sockets. You can substitute pins for the sockets if you enjoy accidentally tearing clothing and skin.

-CR2032 Coin cell and holder.

Supporting cast:

Soldering iron with the pointiest tip you can find. The MCP1253 comes in a surface mount package small enough to be accidentally inhaled.

Copper clad board, etchant, acetone etc for making the PCB.

PIC programmer with an ICSP header and cable.

Some other stuff without which you won't get very far but that I can't remember right now.

Step 2: PCB fun

Picture of PCB fun
watch_traces.png
watch_jumpers.png
failures.jpg
The display datasheet lies. It says the cursor select is an active high input. Now since we're patient and careful, we've breadboarded the circuit to discover this before wasting hours making PCBs with CU tied low.

With only one display, we don't need to worry about addressing. We also don't care about the cursor function. In fact, I have discovered a truly remarkable list of things we don't care about, which this instructable is too narrow to contain.

I routed the board freehand for the most part, so I'm not including a pretty Eagle schematic. Mapping PIC outputs to display pins is a lot easier using component footprints. If this is too confusing, get stuf.. I mean I'll make one up.

I'm not going to go over how to make your own PCB, Instructables is made up of about 50% toner transfer method instructions by my count. Download the Eagle file, print it out 1:1 and mirrored. Iron it onto some copper board for about half an hour, pull the paper off, discover that it didn't work and repeat about ten times.

If you want to do a nicer jumperless job, have a double sided board made or whatever, the Eagle libaries for the MCP1253 (thanks to someone over at Open Circuits) and the display are attached.

Step 3: Assembly

Picture of Assembly
populated1.jpg
Some general tips:

1. Start with the MCP1253. This way when you screw it up and smash the board, you aren't losing a lot.

Tin the traces first, then hold it in place and tack it down. The extra trace length around it should help out, heat the far end and line it up. If you have a steady hand and some fine solder you can do the leads individually. If you bridge any, drag some solder wick across them.

2. After soldering the MSOP, the SOIC PIC will be a walk in the park. Same deal again, tack down the corners then work your way around.

3. Surface mount parts go on the bottom everything else goes on top.

Step 4: Lots of typing for few words

Picture of Lots of typing for few words
The PIC's ports are connected as follows:

PORTA
RA0 D4
RA1 D3
RA2 D2
RA3 D0
RA4 D1
RA5 MCLR/Vpp
RA6 D6
RA7 D5

PORTB
RB0 BL\
RB1 WR\
RB2 A0
RB3 A1
RB4 CLR\
RB5 SW1 Switch input
RB6 PGC
RB7 PGD

But wait, you say, the data bits are in a garbled order! Well, there's one bit of tedium I'll save you. The attached include file has equates for the character set translated for this ordering.

My code has some issues and isn't very pretty, so I'm not including it in this instructable just yet. The general program flow to change one character is as follows:

set address bits
move character data to PORTA
clear WR\ bit
nop
set WR\ bit

The fun part is trying to access large tables of data in program memory, switching between display modes on button presses, selecting appropriate 80's rock lyrics and so forth.

On the bright side, it is pretty simple to get it up and running if you have any PIC programming experience. You can brute force it and type out a function call for each character or use a simple lookup table with one index and get a sequence of 256 characters, (64 four character "words").

Step 5: Miscellany


ICSP Programming

Removing the jumper disconnects the dc converter from the rest of the circuit during programming. Depending on your programmer, if you accidentally leave the jumper on you might fry the converter or programming might just fail.

Battery Life

The blanking input is your friend. At full brightness (100% on duty cycle) the circuit can draw upwards of 50mA. Not only will this drain your battery in a couple of minutes, it's way brighter than necessary. Experiment with a small PWM loop to dim the display to an acceptable level of current consumption. In my experience the display is still very visible when the whole circuit draws on the order of 2-5mA.

This watch is not meant to be worn regularly or to be used for timekeeping, obviously. The goal is to have something stupid on your wrist for a few hours when you go out. You could replace the coin cell with a larger battery like a li-ion pack from a cell phone if you really need more battery life.

Wait, how the hell do you stick this to your wrist

I haven't figured it out yet either. I'll probably end up buying a cheap velcro watch strap for now.


Jams905 years ago
i wanna see the video... please upload it again ;)
yeah
n0ukf6 years ago
There's something wrong with your video, the embedded player says "no longer available" and copy/pasting the url fails too.
robomaniac7 years ago
hello!

I first say this display in a micromouse Min4A
http://www.np.edu.sg/alpha/nbk/umouse/min4a.html

He use the SLR2016, it is much slimmer. It cost 20.78$ cdn
http://catalog.osram-os.com/media/_en/Graphics/00034123_0.pdf

the DLO3416 is 19.63$

The only drawback of this display is that you need a lot of I/O on your micro.
I think this is a great way to test your programming skill. You can code very crudelly or take the time to think and make something more effecient.

I would love and might give it a try! I got other projects to build and finish first ! :-)

Thanks!

Jerome
robomaniac7 years ago
Hello

Do you use the chip enables (CE1, CE2, CE3, CE4)?
I don't think you do. I was wondering what they do.

(D0-D6) is the desired data code and (A0, A1) digit address

How does A0 and A1 work?

Like this?
0 0 = first digit
0 1 = second digit
1 0 = third digit
1 1 = fouth digit

you select the digit and then write the ascii code on (D0-D6)
that seem simple!

you add the PWM on pin 14 ( BL) to dim or blink

thank you!

Jerome
deflater (author)  robomaniac7 years ago
The chip enables allow you to use more than one display on the same data bus. I have them tied high/low as needed to enable the chip at all times. If you wanted to use two displays, you would add another address line and tie it to an active high enable on one chip and an active low on the other. You've got the A0 and A1 bits right, it is pretty simple. The only other function is the cursor, which I haven't bothered with.