DTMF Decoder using Goertzel algorithm on PIC18F4520

Posted on Wednesday, October 26th, 2011 in code, documentation, PIC by the machinegeek

Debraj has been working on this project for DTMF decoding using the Goertzel algorithm on a PIC.

Goertzel algorithm is well known in the DSP domain. It is used to detect the presence of a frequency or a number of frequencies. This algorithm is popular as the calculation required for implementation is lesser as compared to other techniques such as DFT (FFT), when a smaller number of frequencies are to be detected.

My project uses PIC18F4520 and Goertzel algorithm to detect DTMF frequencies. The code is written entirely in “C”.

The complete explanation of the algorithm, circuit and code can be found on Debraj’s website.

Via the contact form.

This entry was posted on Wednesday, October 26th, 2011 at 3:06 pm and is filed under code, documentation, PIC. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

3 Responses to “DTMF Decoder using Goertzel algorithm on PIC18F4520”

  1. Squonk says:

    The Goertzel algorithm explanation is very interesting!

    However, an open-source code in C for ARM exists since 2005, check:

    This ARM-based telephone answering machine project won the 2005 NXP ARM Design Contest.

  2. Karel says:

    Good information the Goertzel algorithm. Learn something new everyday, but the processor is not using 5.5MIPS. While waiting for the next interrupt to get the next sample the PIC can be doing a lot of back ground tasks if needed.

  3. Jay says:


    I saw your website and your DTMF decoder. I’m hoping you can steer me in the right direction.

    I’m looking for a solution where I can eliminate my pager. I have a computer that can only dial out via modem, and using tone dialing send a phone number, pause, and then a 5 digit numeric code. The computer cannot be changed, meaning that I cannot install any software on it or change what it does other than to change the phone number it calls. Currently it calls my pager, but I would like it instead to leave a text message on my cell phone (Verizon Wireless) with the 5 digit numeric code. Do you have a service whereby I would have my computer call a number supplied by you and have that 5 digit code then converted into a text message sent to my smartphone or an email sent to my email address? Do you have a suggestion on who I should talk with?

    Thanks very much,

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Recent Comments