Introduction to MT8870
The MT8870 is a dual-tone multi-frequency (DTMF) receiver integrated circuit (IC) that is widely used in telecommunications and other applications requiring the decoding of DTMF tones. DTMF is a signaling system used in telephone systems to transmit the keys pressed on a touch-tone keypad. Each key generates a unique combination of two tones, one from a low-frequency group and one from a high-frequency group. The MT8870 is designed to detect and decode these tone pairs, providing a convenient interface for microcontrollers and other digital systems.
Key Features of MT8870
- Decodes all 16 DTMF tone pairs
- Low power consumption
- Adjustable guard time
- Binary or 4-bit output interface
- Built-in dial tone rejection circuit
- Operation up to 50,000 DTMF digits per second
- Wide operating voltage range (2.7V to 5.5V)
MT8870 Pin Configuration and Functions
The MT8870 is available in a 18-pin DIP (Dual Inline Package) or SO (Small Outline) package. The pin configuration and functions are as follows:
Pin Number | Pin Name | Function |
---|---|---|
1 | IN+ | Non-inverting input of the differential input amplifier |
2 | IN- | Inverting input of the differential input amplifier |
3 | GS | Gain select input |
4 | VRef | Voltage reference output |
5 | ESt | Early steering output (open drain) |
6 | St/GT | Steering input/guard time output |
7 | TOE | Three-state output enable input (active low) |
8 | VSS | Negative power supply (ground) |
9 | Q4 | 4-bit binary output (MSB) |
10 | Q3 | 4-bit binary output |
11 | Q2 | 4-bit binary output |
12 | Q1 | 4-bit binary output (LSB) |
13 | StD | Delayed steering output (open drain) |
14 | OE | Output enable input (active low) |
15 | OSC1 | Oscillator input/output |
16 | OSC2 | Oscillator input |
17 | VDD | Positive power supply |
18 | INH | Inhibit input (active high) |
Input Amplifier and Gain Select (IN+, IN-, GS)
The MT8870 features a differential input amplifier that accepts the DTMF signal. The non-inverting input (IN+) and inverting input (IN-) are used to connect the input signal. The gain of the input amplifier can be adjusted using the gain select (GS) input. When GS is connected to VRef, the gain is 0 dB; when connected to VSS, the gain is -6 dB.
Voltage Reference (VRef)
The MT8870 provides an internal voltage reference (VRef) that is used for the input amplifier gain selection and other internal biasing. This pin should be decoupled to VSS using a 0.1 μF capacitor.
Early Steering and Delayed Steering Outputs (ESt, StD)
The early steering (ESt) and delayed steering (StD) outputs are open-drain outputs that indicate the presence of a valid DTMF tone pair. ESt goes low as soon as a valid tone pair is detected, while StD goes low after a programmable delay time (guard time) to ensure the validity of the decoded digit. These outputs can be used to trigger external circuitry or to generate interrupts for a microcontroller.
Steering Input/Guard Time Output (St/GT)
The steering input/guard time output (St/GT) is a bidirectional pin that serves two purposes:
- As an input, it is used to set the guard time delay for the delayed steering output (StD). The guard time is programmed by connecting a resistor between St/GT and VSS. The guard time can be calculated using the following formula:
Guard Time (ms) = R_GT (kΩ) × C_GT (nF) × 0.2778
where R_GT is the resistor value and C_GT is the capacitor value connected between OSC1 and OSC2.
- As an output, it provides a high-to-low transition when a valid DTMF tone pair is detected, and a low-to-high transition when the tone pair is no longer present.
Three-State Output Enable (TOE)
The three-state output enable (TOE) input is used to control the output interface of the MT8870. When TOE is low, the 4-bit binary outputs (Q1-Q4) are enabled; when TOE is high, the outputs are in a high-impedance state. This feature allows the MT8870 to share data lines with other devices in a system.
Binary Outputs (Q1-Q4)
The MT8870 provides a 4-bit binary output that represents the decoded DTMF digit. The binary code follows the standard DTMF encoding scheme:
DTMF Digit | Low Frequency (Hz) | High Frequency (Hz) | Q4 | Q3 | Q2 | Q1 |
---|---|---|---|---|---|---|
1 | 697 | 1209 | 0 | 0 | 0 | 1 |
2 | 697 | 1336 | 0 | 0 | 1 | 0 |
3 | 697 | 1477 | 0 | 0 | 1 | 1 |
4 | 770 | 1209 | 0 | 1 | 0 | 0 |
5 | 770 | 1336 | 0 | 1 | 0 | 1 |
6 | 770 | 1477 | 0 | 1 | 1 | 0 |
7 | 852 | 1209 | 0 | 1 | 1 | 1 |
8 | 852 | 1336 | 1 | 0 | 0 | 0 |
9 | 852 | 1477 | 1 | 0 | 0 | 1 |
0 | 941 | 1336 | 1 | 0 | 1 | 0 |
* | 941 | 1209 | 1 | 0 | 1 | 1 |
# | 941 | 1477 | 1 | 1 | 0 | 0 |
A | 697 | 1633 | 1 | 1 | 0 | 1 |
B | 770 | 1633 | 1 | 1 | 1 | 0 |
C | 852 | 1633 | 1 | 1 | 1 | 1 |
D | 941 | 1633 | 0 | 0 | 0 | 0 |
Output Enable (OE)
The output enable (OE) input is used to control the 4-bit binary outputs (Q1-Q4) and the delayed steering output (StD). When OE is low, these outputs are enabled; when OE is high, they are disabled (high-impedance state for Q1-Q4, high state for StD).
Oscillator (OSC1, OSC2)
The MT8870 requires an external 3.579545 MHz color burst crystal connected between the OSC1 and OSC2 pins to generate its internal clock. A parallel resonant crystal should be used, and the load capacitance should be selected according to the crystal manufacturer’s specifications (typically 18 pF).
Power Supply (VDD, VSS)
The MT8870 operates on a single power supply ranging from 2.7V to 5.5V. The positive supply (VDD) is connected to pin 17, while the negative supply (VSS or ground) is connected to pin 8. Proper decoupling capacitors should be used close to the device to ensure stable operation.
Inhibit Input (INH)
The inhibit input (INH) is used to disable the MT8870’s operation. When INH is high, the device is inhibited, and the outputs are in a high-impedance state. This feature can be used to conserve power or to synchronize the MT8870 with other parts of the system.
MT8870 Application Circuit
A typical application circuit for the MT8870 is shown below:
MT8870
+--------------+
IN+ |1 18| INH
IN- |2 17| VDD
GS |3 16| OSC2
VRef |4 15| OSC1
ESt |5 14| OE
St/GT |6 13| StD
TOE |7 12| Q1
VSS |8 11| Q2
Q4 |9 10| Q3
+--------------+
| | | | |
| | | | |
_|_ | | | |
| || | | |
+----|<|-+ || | | |
| |_| || | | |
| || | | |
| ___ || | | |
| | | || | | |
+-----|>> |-+| | | |
|___| || | | |
|| | | |
R_GT ___ || | | |
4.7kΩ | | || | | |
|>> |--+| | | |
|___| | | | |
| | | |
___ | | | |
18pF | | | | | |
| |----+ | | |
|___| | | |
| | |
___ | | |
18pF | | | | |
| |--------+ | |
|___| | |
| |
___ | |
| | | |
Q1 -----|<|-+-+ |
|___| |
|
___ |
| | |
Q2 -----|<|-+----+
|___|
___
| |
Q3 -----|<|-+
|___|
___
| |
Q4 -----|<|-+
|___|
_____
VDD ----| |---- +3.3V
| |
| 0 |
INH ----| 1 |
| 0 |
| 1 |
| |
| |
OE ----| |
|_____|
___
| |
StD ---|<|-+
|___|
In this circuit:
-
The DTMF signal is connected to the IN+ and IN- pins through a capacitor and a resistor, which form a high-pass filter to remove any DC component from the input signal.
-
The gain select (GS) pin is connected to VRef for 0 dB gain.
-
A 3.579545 MHz crystal and two 18 pF load capacitors are connected between the OSC1 and OSC2 pins.
-
A 4.7 kΩ resistor is connected between St/GT and VSS to set the guard time delay.
-
The binary outputs (Q1-Q4) and the delayed steering output (StD) are connected to LEDs (with current-limiting resistors) for visual indication of the decoded digits.
-
The inhibit (INH) and output enable (OE) pins are connected to switches or microcontroller pins to control the device’s operation.
-
A 0.1 μF decoupling capacitor (not shown) should be connected between VDD and VSS close to the device.

Interfacing MT8870 with a Microcontroller
The MT8870 can be easily interfaced with a microcontroller to process the decoded DTMF digits. The microcontroller can read the binary outputs (Q1-Q4) and the delayed steering output (StD) to determine the received digit and its validity.
Parallel Interface
In a parallel interface, the binary outputs (Q1-Q4) are directly connected to the microcontroller’s input pins. The microcontroller reads the outputs whenever the delayed steering output (StD) goes low, indicating a valid digit. The following code snippet demonstrates how to read the MT8870 outputs using an Arduino:
const int StD = 2;
const int Q1 = 3;
const int Q2 = 4;
const int Q3 = 5;
const int Q4 = 6;
void setup() {
pinMode(StD, INPUT);
pinMode(Q1, INPUT);
pinMode(Q2, INPUT);
pinMode(Q3, INPUT);
pinMode(Q4, INPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(StD) == LOW) {
int digit = digitalRead(Q1) | (digitalRead(Q2) << 1) | (digitalRead(Q3) << 2) | (digitalRead(Q4) << 3);
Serial.print("Received digit: ");
Serial.println(digit, HEX);
delay(100); // Debounce delay
}
}
Serial Interface
For a more compact interface, the MT8870 can be connected to the microcontroller using a serial protocol, such as I2C or SPI. In this case, an additional shift register (e.g., 74HC595) is used to convert the parallel outputs of the MT8870 to a serial stream. The microcontroller then reads the serial data and reconstructs the decoded digit.
Here’s an example of interfacing the MT8870 with an Arduino using the 74HC595 shift register and SPI:
#include <SPI.h>
const int StD = 2;
const int latchPin = 10;
const int clockPin = 11;
const int dataPin = 12;
void setup() {
pinMode(StD, INPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
SPI.begin();
Serial.begin(9600);
}
void loop() {
if (digitalRead(StD) == LOW) {
digitalWrite(latchPin, LOW);
int digit = SPI.transfer(0);
digitalWrite(latchPin, HIGH);
Serial.print("Received digit: ");
Serial.println(digit, HEX);
delay(100); // Debounce delay
}
}
In this example, the 74HC595’s serial input (SER) is connected to the Arduino’s MOSI pin (dataPin), the shift register clock (SRCLK) is connected to the Arduino’s SCK pin (clockPin), and the storage register clock (RCLK) is connected to the Arduino’s SS pin (latchPin). The parallel outputs of the 74HC595 are connected to the binary outputs (Q1-Q4) of the MT8870.
When the delayed steering output (StD) goes low, the Arduino triggers the 74HC595 to read the MT8870’s parallel outputs and shift them out serially. The Arduino then reads the serial data using the SPI.transfer() function and reconstructs the decoded digit.
MT8870 Applications
The MT8870 DTMF receiver finds applications in various systems that require remote control or data entry using a touch-tone keypad. Some common applications include:
- Telephone systems
- Call routing and switching
- Interactive voice response (IVR) systems