Skip to content

Expo39/DTMF_Decoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

This project implements a real-time DTMF decoder capable of identifying keypad presses from audio signals. DTMF is commonly used in telephone systems where each key press generates two simultaneous tones at specific frequencies.

Features

  • Real-time Signal Processing: Continuous audio signal sampling and buffering
  • Goertzel Algorithm: Efficient frequency detection without full FFT computation
  • DTMF Tone Detection: Supports standard keypad (0-9, *, #) and extended keys (A-D)
  • Embedded Systems Ready: LCD display integration and optimised for LPC4088 microcontroller
  • EEPROM Storage: Persistent storage for configuration parameters and detected sequences
  • Comprehensive Testing: Multiple test implementations and audio samples
  • Error Handling: Validates single tone pair detection and handles invalid inputs

Core Components

Signal Processing (Sampler.c)

  • Audio signal buffering and preprocessing
  • Quiet region detection for tone separation
  • Buffer management for continuous processing

Frequency Analysis (Decode.c)

  • Goertzel algorithm implementation for frequency detection
  • DTMF keymap matching
  • Error validation and handling

Display Interface (lcd.h)

  • LCD display integration for embedded systems
  • Real-time result display

Algorithm

  1. Signal Acquisition: Continuous sampling of audio input
  2. Buffering: Store samples until quiet region detected
  3. Frequency Analysis: Apply Goertzel algorithm to detect specific DTMF frequencies
  4. Tone Validation: Verify exactly two frequencies (one low, one high) are present
  5. Key Mapping: Match frequency pair to corresponding keypad character
  6. Output: Display result on LCD

EEPROM Configuration

The system utilises EEPROM for persistent storage of:

  • Display Mode Configuration: User-selected display mode that persists across power cycles
  • User Interface Settings: Toggle between single character and scrolling display modes

EEPROM Memory Map

  • Address 0x00: Display mode setting (0 = single character mode, 1 = scrolling mode)

Display Modes

  • Mode 0: Single character display - shows only the most recently detected DTMF character
  • Mode 1: Scrolling display - shows a history of detected characters with shifting effect

Hardware Platform

This DTMF decoder was specifically developed and tested on the LPC4088 microcontroller using the Keil uVision5 IDE.

About

A DTMF decoder implementation for embedded systems using the C programming language and the Goertzel algorithm. Analyses audio signals to detect touch-tone keypad inputs with real-time processing and LCD display integration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors