7% Solution

This is an interesting read. I, too, just assumed the ±10% included the whole range and it would be of some random distribution.

“Design your circuit to use values that lie 7% away from the nominal standard values, either higher or lower, and you’ll find plenty of those in the bins when you do your hand selection.”

Reading BIOS EEPROM chips

I had these chips extracted from the old motherboards I threw away some time ago, and I thought I’d have some use for them some day.


These are Electrically Erasable and Programmable Read-Only Memory (EEPROM) chips which are used to hold the BIOS code. I was curious to find out what’s in these chips and if I could re-use them for storage in my projects, so I decided to interface with them. Continue reading

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.

Null modem cable

Just the other day I brought this old RS232 null modem cable from home, as I needed to hook up the oscilloscope to the PC for some waveform capture.

I plugged it in and it wasn’t working, so I spent some time troubleshooting. I used a multimeter to check the continuity on the RX and TX pins, and when that failed I assumed the wire must be broken inside. Somehow I already went ahead to cut a ring around the gray wire sheath when I opened up the connector shell.

After looking at the wiring, it turns out the cable was of some odd configuration. One end was connected to the RX and TX pins, but the other end was connected to some other pins (which were the RS232 control lines). I ended up re-soldering the RX and TX pins on one end of the cable, which made it a real null modem cable.

But this was not until after I cut off the head and unsheathed the wire, since it was already done halfway.

Next time, I will remember to check the wiring first before assuming the wire was broken.