7-segment display driver

I have a 4-digit display module and I was thinking of a way to interface it with the microcontroller with the least number of pins.

The display came from a kit that I had bought last time, and the kit used CD4511 (BCD to 7-segment decoder) along with an MC14553B (3-digit BCD counter) that has a built-in multiplexer that drives 3 (of the 4) digits. If I go with a similar setup, I’d require 8 pins to interface with a micrcontroller, 4 for BCD to the CD4511 and 1 for each digit for 4 digits. This also doesn’t allow control of the decimal point that the display module provides.

A similar driver is the CD4543BE. The CD4543 enables driving of both common-cathode and common-anode displays (as well as LCDs) because it has a PHASE input. It is similar to the CD4511 except that the lamp test function is replaced by the blanking function (and maybe other minor electrical characteristics).

The decimal point reminded me of this module I took in school, which required programming a custom-built board that had the display with decimal points. The board was designed by a prof and it made use of the MC14489 (Multi-character LED Display/Lamp Driver). This handy little chip connects to all 8 segments (7-segment and one decimal point) and is able to multiplex up to 5 digits. It talks to the microcontroller through a synchronous serial port, so I only require 2 pins in this setup  – CLK & DATA.

However, the CD4543 costs $1.21 from Farnell ($0.78 for the SOIC), but the MC14489 costs $9.15 ($8.44 for the SOIC package) – the price difference is huge. There are also differences in terms of the 7-segment decoding. The CD4543 accepts BCD input which allows you to display digits from 0-9 but the datasheet states that inputs 0xA-0xF will result in a blank display. The MC14489 can display 0-9, A-F, and other characters such as c, H, h, J, colon, dash, and more. You can refer to the datasheet to see all the characters.

Another option to consider is to use an 8-bit shift register (like the 74HC595) to connect to the 8 segments, and drive the common cathode/anode pin using a transistor. This will require 6 pins, 3 for the shift register and 4 for the digits. The 74HC595 starts at $1.17 ($0.245 for the SOIC) from Farnell, but the downside is the microcontroller needs to have the 7-segment map for each digit. The up-side is, you can implement custom characters just like the MC14489, and use the decimal point.

Ultimately it depends on what the final product is, and whether I want it to be a reusable module that I re-use by re-wiring a few connections.


BenQ DW1640 drive tray

I own a BenQ DW1640 DVD drive and like many other people, the drive tray will no longer eject and retract properly.

Following advice from a blog, I took apart my drive and indeed the tray mechanism is driven by a rubber belt. Although it seems to run properly by manually spinning it, it still doesn’t work after I’ve oiled some gears.

I have no rubber band of such a small size lying around, so I either have to go out and buy another rubber belt to fix the drive for the next few months (maybe years), or I can go out to get a new drive that doesn’t use rubber belts.

Update 8-Aug-2010: I’ve successfully replaced the drive belt and the drive is working as it should (quite surprisingly).