HELP! alphanumeric display using DTMF

bertus

Joined Apr 5, 2008
22,276
Hello,

As it shows now that it is a school project, I moved it to the homework help section.

What have you done upto now?
Can you show us some schematics / block diagram or something?

Bertus
 

Thread Starter

edski

Joined Sep 22, 2010
65
sir, im gonna out for a while. i will just post additional info tomorrow. great time, keep on posting. tnx
 

Georacer

Joined Nov 25, 2009
5,182
The thread hasn't yet expressed the real nature of the DTMF modulation format. Take a look at your phone numpad. It is comprised by 12 keys layed out in 3 columns and 4 rows. Each column is assigned a high pitch sine tone. Each row is assigned a lower-pitch sine tone. When you press a key, the corresponding high and low sines will play simultaneously, generating a unique tone for that button.

The job of the decoding circuit is to separate those two sines, recognise the two frequencies and look them up on the numpad grid to find the key pressed.

You can find some info on the DTMF on Wikipedia too.

I had done this once on Matlab, but it required fourier analysis. Perhaps you could program the PIC to perform an FFT (Fast Fourier Transformation) in order to decode the sines. Or you could build very finely tuned zone-filters to capture each sine separately, but I doubt you could produce filters of such accuracy, as the standart DTMF sines are only some decades of Hertz away.\

The way I would decode the characters is to use the ASCII code. Every character is assigned a 3 digit decimal nuber. You could send digits in groups of 3 and decode them to find the corresponding character.
 

t06afre

Joined May 11, 2009
5,934
Your DTMF chip will do almost all of work for you. What you should do is poll the status of one of two pins on your DTMF chip what change then the status on the DTMF output has changed. Then you can use a lookup table and push the information to your LCD.
 

t06afre

Joined May 11, 2009
5,934
@Georacer, can i still use the idea of retched?
I do not think you will get any more help before you show us a schematic on how you are going to set things up. Which port (s) are you going to use for LCD, which port are you going to use for DTMF chip and so on. After this step you may start on your programming. And as far as I can see the programming is quite easy. Just do it!
 

Georacer

Joined Nov 25, 2009
5,182
@Georacer, can i still use the idea of retched?
Retched suggested that you used the cellphone style to encode the characters and a mechanism to detect sequential button presses.

I suggested that you used the ASCII code and no more and no less than 3 digits to encode the characters.

What do you think? Can our ideas be combined?
 

Thread Starter

edski

Joined Sep 22, 2010
65
@georacer,...this what's on my mind....the idea of retched

"If you wanted to do something neat, you could convert the characters to binary like you suggested, then convert that into tones.

For instance START transmission would be the tone for the number '1'

then binary 0 would be tone '2'
binary 1 would be tone '3'

Done Transmission would be tone '4'

That would be rather straight forward..ish..



That allows you to send:

1(start TX) 2333232323222232333233323232323232322233332000 4(end TX)
The 2s and 3s would equate to:
01110101 01000010 11101110 10101010 10101000 11110111

That would be grabbed by the receiving in 8 bit chunks and converted to the letter you want and displayed onscreen. "
 

Georacer

Joined Nov 25, 2009
5,182
What I say is that you shouldn't spam the thread with 1 phrase questions.

Other than that, you could do what retched suggested, but in my opinion that will require a software to send the data. You won't be able to send so many digits by hand. You also throw away the 12 keys that you have available and use only 2. This way, in order to hit 3 buttons to transmit an ASCII character, you will need 8 hits.
 

Thread Starter

edski

Joined Sep 22, 2010
65
ahhm, actually i cant figure out your idea, can you explain it further? please. if you dont mind. perhaps it could help. thanks
 

Georacer

Joined Nov 25, 2009
5,182
What I say is that you shouldn't spam the thread with 1 phrase questions.
oh im so sorry.
ahhm, actually i cant figure out your idea, can you explain it further? please. if you dont mind. perhaps it could help. thanks
-_-

Look at a simple ASCII table. Each character is assigned a 1byte number. The bigger number you can make with 1 byte is 255. Thus you need 3 digits at most to represent an ASCII character. We will assume that you nedd exactly 3 digits, filling in with zeros.

The algorithm I have in my mind has the following steps.
1) Write your message
2)Isolate every character
3)Replace each character with a 3-digit number
4)Transmit all the digits in a serial order with the keypad
5)Receive the digits and decode them with the same manner, 3-digits at a time.


I do not know about IR or any other kind of transmition, so I cannot help you there.
 

retched

Joined Dec 5, 2009
5,207
How are you going to input the characters? Are you using a phone?

If you are using a phone, you are going to want to come up with a method like Georacer is suggesting.

If it is going to be computer to computer, or device to device, you can use either method.

Are you building the device to type a word into that will be converted into DTMF?

Then the receiver side will "hear" the DTMF and decode your signal then display them.

SO, You will need software to break apart the sentence:

: Hello How are you

Will break into

H e l l o _ H o w _ a r e _ y o u

Then a lookup table will have the 3 digit number for each letter:

A = 001
a = 002
B = 003
b = 004
C = 005
c = 006

and so on

So the code ends up being something like this:

H
012
e
055

See what we are saying?

Now that you have a 3 digit code assigned to each letter, you can transmit the 3 numbers as DTMF codes

The receiver will have the same exact lookup table but do the opposite.

It will take every 3 numbers and display the LETTER assigned to it

So when the receiver receives a 001, it displays a capital 'A' When it get a 003 it displays a capital 'B'
 
Top