Search
Product Info
7-Segment Serial Display
sku: COM-09230
Description: The 7-Segment Serial Display turns the thirteen pins necessary to control a 4-digit 7-segment display into just one or three. The display will give you full control of all digits, decimal points, the colon and the apostrophe. At the heart of the display is an ATMega168 which controls all the serial communications and the 4-digit 7-segment display through an easy to use API.
The Serial 7-Segment Display can be controlled in one of two ways: (1) serial TTL communication or (2) SPI serial communication. Regardless of which method you use to communicate with the display, the display is controlled with 4-byte packets and special 2-byte commands.
Features:
- 4 digit Yellow alpha-numeric display with serial (1 pin) or SPI interface (3 pins)
- Display numbers (0-9) and letters (A-F)
- Control multiple decimal points, apostrophe, and colon
- Selectable baud rate (4800 to 57600 bps)
- Selectable brightness (255 different levels)
Documents:
- User's Manual
- Schematic
- Source Code (ATmega168)
Pricing
Comments
45 comments
Feeds
Currency
Display prices in
Feedback
If you would like to tell us more, you can fill out our form if you need some psycho-suggestive questions. Go to the form.




























One suggestion for a future improvement:
Support additional ASCII characters; particularly '-' so that negative numbers can be displayed.
For more flexibility, add special commands for "raw" segment data. This could be implemented as four new commands, one for each digit. Their data byte would contain the 7 bits of data to directly control the 7 segments. (you could use the 8th bit as an alternative way to control the DPs).
Thanks for the steady stream of great little boards!
- Dean
Link to the sample code and wiring. Thanks again for your help.
Soldering directly to the pins on the ATmega168 will also work, but requires a bit more finesse.
NxN LED matrices work the same way: http://www.sparkfun.com/commerce/product_info.php?products_id=682
Good stuff all around! :)
Not that the time is a big deal, but you have to send 50% more bytes to control this over what it takes to simply use shift registers.
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1339
But I have plans for use shift registers and control output to LEDs by software. Then I have two things: an extension port for my Arduino (multiple outputs through the shift registers) and an LED controler by software using the extended outputs
It needs a regulator, ISP and xtal.
For my needs I'd want ascess the I2C pins which are currently being used to drive the display while other i/o line are unused.
Fitting this stuff would cost more money but just putting on extra footprints (pads) for hackers would be cheap.
It seems a little silly to drive this off another micro when the on-board mega168 is capable of doing the job.
My page is http://nerdipedia.com/tiki-index.php?page=LED+display+hack
I was a fair bit of work and I think I'll be hacking a clockit instead next time.
My comments are much the same as before. Don't waste the TWI pads driving the display. TWI is just far too useful to ignore. The ADC pins are also valuable so the currently spare PB pins are best ones to use to drive DP and COL. If possible bring unused i/o (ADC) to pads - anywhere you can - they don't have to be on and edge.
If the software was based on the arduino boot loader people could hack the code without a programmer or ISP interface. This doesn't interest me personally though.
Eddie/eddiem.com
- 6 digits
- stackable
- screw holes
- i2c (multiple displays on one bus)
- 'raw' data
- programming pads
Question: How can I reset the 'cursor' position? If a glitch arrives the display show garbage but I don't see a way to 'reset' the display...
...or even change the baud rate! When you have the RX connected again, try different baud rates, lowest (2400) first. When it responds, you can set the baud rate correct again.
* The default baud rate for the units that I received was 2400 and not 9600 as the documentation suggested. Took me some time to figure this out
* I did not get the SPI mode to work. Sample code would be helpful. I'm using the same SPI code to talk to other SPI devices without any problem. Not sure what the problem is.
* Allow the minus sign - I wanted to use this as the display for a thermometer. It is -11C here now. But I can't display that.
* Implemented a 'reset display' command. When the display gets confused there is no way to reset it.
* Add a simple way to get to the programming pins of the chip. I will create new firmware that fixes the shortcomings mentioned earlier. I'll probably solder on wires but this is far from ideal.
It supports the minus sign and has a '!' command to reset the display to a known state.
How do I get your firmware onto my board? Could you give brief description for those not so tech-savvy?
Steve
for some reason using NewSoftSerial, instead of getting "1234", I get "2341" etc
i'd love to upload St3fan's new firmware if I could figure out how!
Q) What are the dimensions for the pads? I'd like to use this as a plugin module onto a larger board, but without the eagle files, I can't tell where to locate the pads.
1) You should incorporate some way to mount this thing. No room for mounting holes, but perhaps add two holes+pads for the SMT nuts you sell (PRT-08989). No need to include the actual nuts, though - the buyer can add them later if they want to.
2) The schematic shows the xtal pins unconnected - it would be handy if you included the pads for adding a crystal oscillator. This would make it easy to reprogram these guys as reasonably high-accuracy timers. Not really possible with the on-chip RC clock.
3) I agree with the other poster that asked for pads for all the unused pins
4) Add optional pads for an analog pin (ADC6 or 7) to be extended out to the edge through a voltage divider. This would allow these displays to be wired as voltmeters You can already do this if you repurpose the I²C pins, but it would be nice to have both at the same time.
5) You should redo the firmware so this is Arduino-compatible out of the box (it is so close already).
None of these ideas would increase the unit cost, but each would enable new potential uses for the display. Thats if for now; thanks for listening!
Cheers,
- Dean
My second thought: if that ATMega168 is programmable, I could have saved a fair bit of effort and made a more compact device too! Okay, this looks like a pretty neat device after all. Maybe if the xtal and a few other pins were brought out--and the LEDs were _red_--I'd build my next one on one of these instead.
Checking the source, I see the LEDs are lit in 5 microsecond pulses in about a 1/30 duty cycle at max brightness. On time could be longer if servicing a comm interrupt. Seems a little dangerous.
I'd feel a little better if the display logic was pushed to an interrupt; in my projects, I've used Timer0 for this purpose, with two ISRs: overflow cycles digits and turns the display on; compare-match A turns the display off again; OCRA controls the effective brightness. Seems you'd be less likely to accidentally leave an LED on too long this way and melt your display or MCU. It also, of course, frees up your main loop to do other things.
Here's mine:
(1) 16Mhz clk (SPI could now run at 4 Mbit data transfer rate, rather than the current 2 Mbit)
(2) Binary transfer only for hexadecimal display( Only 2 bytes needed to update display, rather than the current 4 bytes)
Cheers
So let me ask a different question. Does this seem odd to anyone else? I realize a design goal was a tiny PCB and low cost, but a seven segment display with digits of different brightness looks really bad.