Microcontroller-based encoders are a follow-on from LSI/MOS encoders. Instead of dedicated circuitry, the keyboard control process is implemented in firmware and stored in ROM. In most cases, the firmware is contained within the microcontroller, but in some instances it was held on a separate EPROM. The latter choice is better suited to low-volume production orders and prototypes that did not warrant the expense and delay of custom mask work.
The use of a microcontroller (historically always described as a “microprocessor” in this context) as a keyboard encoder took hold in the late 1970s. Such keyboards were termed “intelligent keyboards”, although they did not actually feature any of what would now be termed “intelligence”. The earliest known examples to date are Micro Switch’s intelligent keyboards in their SD Series, and IMSAI’s IKB-1 from 1977. Other manufacturers swiftly followed.
It seems that at least three implementations of microprocessor-based encoder exist:
- Microprocessor or ROM-less microcontroller, with customer-specific keyboard firmware in an external ROM or EPROM
- Mask-programmed/PROM-based microcontroller with customer-specific keyboard firmware
- Factory-ready generic keyboard encoder with a predefined matrix layout: the customer is then expected to lay out their matrix to match that given in the encoder’s datasheet
The most common approach in the 1980s and 1990s was the mask-programmed microcontroller, especially those based on Intel’s MCS-48 family. On Intel’s own MCS-48 and MCS-51 chips, it’s common to find two codes resembling dates. One is the date code, and the other indicates the sequence number of the mask ROM code, as shown in the diagram below:
The 1977 copyright date here also indicates MCS-48; with second-sourced microcontrollers, the “© Intel 1977” is often the only clue as to the underlying architecture. A 1980 Intel copyright date implies MCS-51, although there are also plenty of encoders with a 1980 Intel copyright date that are nonetheless MCS-48.
Within the keyboard enthusiast community, these chips are referred to as “keyboard controllers”, but a keyboard controller is the chip on the computer’s motherboard that communicates with the keyboard.
The pinouts of factory-ready keyboard encoders show dedicated row and column pins, e.g. C0–C7 and R0–R19 for the 8×20 matrix of the Holtek HT82K628A. With MOS/LSI encoders this was a true representation of the internal implementation, but for MCU-based encoders this is seldom if ever a reflection of the operation of the chip itself. Take for example the COP420 chip used in the Lear Siegler ADM 11 keyboard. This keyboard has around 80 keys that will be exposed to the host, and thus the minimum matrix size will be 9×9 (9×8 if the number keys on the numeric keypad obey control and shift). This matrix size requires 17–18 lines from a mere DIP28 chip, that must also accommodate the communication to the computer. With no other multiplexer or timer in sight, it would seem that all the matrix lines connect directly to the microcontroller. So what lines does the controller actually present? According to the pinout, we have the following data lines:
- L0–L7: eight bidirectional tri-state I/O lines
- G0–G3: four bidirectional I/O lines
- D0–D3: four general-purpose outputs
- IN0–IN3: four general-purpose inputs
- SI: serial input or counter input
- SO: serial output or general-purpose output
- SK: logic-controlled clock or general-purpose output
- CKO: system oscillator output, general-purpose input or RAM power supply
The developer of the matrix scan firmware will be required to combine multiple buses to gather enough up enough lines for the matrix. A similar situation can be seen in Holtek’s HT82K68 “Multimedia Keyboard Encoder 8-Bit MCU” chips: there are four 8-bit ports (A, B, C and D) and one 5-bit port (E). Holtek have arranged for three lines of port E (PE2–PE4) to serve as LED connections in keyboards, which may be a special adaptation over how these bits function in other implementations of their architecture. The keyboard matrix—which in a modern keyboard will require over 20 data lines—will have to be drawn from the 32 lines that form ports A–D.
The following manufacturers produced commercial MCU-based keyboard encoders or chips specifically marketed as being suitable for keyboard encoders:
- Daewoo offered microcontrollers suitable for keyboard encoders.
- Holtek produce factory-ready encoders, and microcontrollers suitable for use as keyboard encoders.
- CCL/ITRI (branded “CIC”) may have only produced customer-specific encoders, although no literature has been recovered yet.
- Novatek appear to have produced factory-ready encoders; it may also have been possible to have requested custom-programmed encoders.
- Zilog offered microcontrollers suitable for keyboard encoders, branded “Keyboard Controllers”, abbreviated to the trademark KBC™.
MCU-based keyboard encoders have been found using chips from the following manufacturers:
- Fujitsu (MB8840H Series)
- National Semiconductor (Intel MCS-48 and NS COPS families)
- Signetics (Intel MCS-48 family)
- UMC (unknown implementation)
A significant number of keyboard encoders are based on Intel MCS-48 and MCS-51 microcontrollers, from both Intel and licencee manufacturers. This includes chips from Signetics, NEC, Daewoo Appian and Toshiba.