avr-lvds-lcd binary-clock

A dead laptop's LCD, An ATtiny85, two 74LS86 XOR chips, and my first binary-clock

Similar projects worth following
The HaD blog has had a few Binary-Clocks, recently...

I used to think the concept somewhat ridiculous... "How hard would it be to just connect those bits to a friggin' display? Why not just throw in a TIL311?"

But I'm starting to think otherwise...

Part of what makes 'em cool is the fact that there are so many different ways to display the same information.

One person actually threw LEDs into blocks of ice. Another made a friggin' centerpiece out of 7-segment displays that only display "1" or "0".

I'm starting to dig this concept... it's a little bit ridiculous to use something like a 7-segment display, something capable of displaying 128 entirely different images, to display only one of *two*, but it looks great, and I'm reaching the point in my life where it's no longer necessary to make *full-use* of something just because it's capable of so much more than I can think of.

Call me an opp

See the description above, regarding the Binary Ice Clock and 7-seg Binary Clock, which largely inspired this venture!

For several years, I developed "avr-lvds-lcd" aka "LCDdirectLVDS", which enables an LVDS-interfaced LCD [such as from a laptop] to be driven by an AVR and a few support-components already available in many hobbiests' toolboxes. During those years, this had become my development-platform... doing the same proof-of-concept in a window on a desktop-computer would've been significantly more difficult for me. This had the nice side-effect of a one-off software experiment like this binary clock being a bit like a finished stand-alone device ready for a bookshelf.

It's been years since that "development environment" has been at my ready. Though, this experiment led to other ideas I may revisit in the future, such as this 7-segment clock idea, which hides the time in plain view, only to be seen when viewed through a removable mask.


Hardware-wise, this project literally requires nothing more than:

  • ATtiny85 (8-pin, 8-bit AVR microcontroller with 512bytes of RAM, and PWM with "dead-time" necessary for FPD-Link compatible signals)
  • Two SN74LS86 quad-XOR's (used as buffers and inverters to drive LVDS)
  • An old laptop-LCD
  • LCD-backlight driver
  • 3.6V power-supply
  • Wire
  • (perf/bread-board)

(NOTE: This is in the proof-of-concept phase. I haven't installed a real-time clock, so it just starts at 0hour 0min 0sec when it's powered-up... So, I guess, it's really a binary-timer?)

This old laptop-display is mounted inside, literally, an old picture-frame. The red-border was spray-painted onto the glass to cover up the LCD's metal frame and help center it.



Amongst various ideas, one is to actually cover all but the necessary parts of this display... E.G.

  • Punch three-rows of 8 holes into a piece of paper between the glass and the display, it might look as though it's 24 separate LEDs.
  • Stencil/laser-cut letters/numbers/shapes, etc...
  • Maybe even print images/masks onto a transparency?

(With this simple circuit, the screen-resolution is highly-limited... 16x16--stretched-across the original 1024x768--is definitely doable, which is *plenty* for this binary-clock. There are definitely methods to stretch the resolution, quite a bit. The avr-lvds-lcd code tries to provide a step-by-step procedure for getting a display running. Still, the process of fine-tuning these *way* out-of-spec timings, and determining various characteristics, for a particular display is not for the faint-hearted.)

  • 1 × ATtiny85 Or other AVR with a dead-timer/power-stage-controller
  • 2 × SN74LS86 Logic ICs / Gates and Inverters
  • 1 × Laptop LCD This one's 1024x768, most others tested work with this system.
  • 1 × LCD backlight driver Depends on the LCD... this is a CCFL inverter
  • 1 × 3.6V Power Supply

View all 4 project logs

View all instructions

Enjoy this project?



j0z0r pwn4tr0n wrote 04/07/2015 at 00:50 point

I like this, it would be a good use of one of the many laptop screens I have laying around. I feel like I'm in the same boat as you: I feel guilty doing something like this with a screen capable of so much more resolution, but in all reality I'm never gonna put it to work doing anything like that, so I might as well get some use out of it and learn a little bit at the same time. Plus I have at least five candidate screens, so not that big a deal anyway. I also like the idea of the paper overlays for the screen, you could customize this in all sorts of ways, kinda like an abstract art installation.

As to your question about kits, I could see that going well, but it would have to be a one-size-fits-all kind of solution, where someone could basically plug and play with any screen they might have on hand. That would be the hard part, because LVDS inverter boards aren't all standard, plus some screens would be capable of different resolutions and that might throw off the timing. But with alternate pinouts for different screen configurations, or maybe different code to be loaded on the ATTiny, it could be overcome, it would just take some doing. It is a good idea though, just find that sweet spot between price point and compatibility.

Sorry for my rambling thoughts, if I decide to follow through with this, I'll make a project page and let you know how it turns out.

  Are you sure? yes | no

Eric Hertz wrote 04/07/2015 at 02:12 point

Hey, right on :)

I definitely dig the response and thoughts, not "rambling" by any means.

You're spot-on, different resolutions/timings is a bit difficult to work-around without changing constants in code and recompiling. (And potentially a lot of experimenting, as most of these slow-timings are *way* outside the specs, even the same-model display with the same specs from the same manufacturer and different version numbers can have different characteristics at these low bit/refresh-rates).That's, unfortunately, the bit that kinda requires supplying the display with the kit (except maybe for an "advanced" kit...?) *Maybe* something could be done with a serial-port and on-the-fly timing adjustment... That's something I hadn't really pondered.

By which I hope I'm not deterring you from trying it out! Just know it may take a bit of effort to get those timings *just right*. (Also, note that different displays' refresh-characteristics differ... this display visibly blacks-out then redraws each row, so you see a black line move down the screen. I have run into others that have no visible refresh *at all* even when refreshing the display only once a second!). Actually, if one of your displays is 1024x768, I'd give that a try first, since nearly all the displays I've worked with are that resolution, and I've managed to whittle it down to timing-specs that work for *nearly* all of them.

A while back I almost invested in ~20 identical LED-backlit displays with a backlighting-issue that could easily be covered-up by a (paper) mask of some sort, like you're talking about, almost perfect for something like this (as long as the working LEDs didn't burn-out later down the line!).

Your art-installation idea gave me an idea I hadn't thought of... There's no reason the "mask" has to be stationary... it could *move*... a disk, for instance, with different patterns, whatnot... I also thought, a while back, that this system might work well for something like a stage-light filter, where the entire screen is a solid color that can vary... completely defeats the purpose of all that resolution (almost to the "guilty" part), but not very often you'll find a 10+ inch multi-color pixel ;)

Do let me know if you take this on! I'll be happy to answer questions, and if you decide to use my code, I should probably upload a later version ;)

(speaking of rambling)

  Are you sure? yes | no

Eric Hertz wrote 04/07/2015 at 03:21 point

Oh, I see you're a RaspPi-guy... i think that system could handle spec'd timings quite a bit better than a lowly ATtiny... If you go that route, do not be deterred a'tall by my previous message!

  Are you sure? yes | no

PointyOintment wrote 01/20/2015 at 08:04 point

Your "(See here)" link at the top of the Details section isn't working for some reason. It darkens when I point to it but I don't get the pointing-hand cursor and clicking it does nothing.

  Are you sure? yes | no

Eric Hertz wrote 01/20/2015 at 11:19 point

Hey, thanks! Yeah, I've been getting some oddities around here... I just keep assuming it has something to do with my side.

The link should be fixed, now.

Also, saw your note regarding the pictures... They don't show up here, either. But clicking them goes-through. I'll try again soon.

  Are you sure? yes | no

Eric Hertz wrote 01/20/2015 at 11:19 point

And thanks for looking into my projects :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates