Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Morse code reader AND sender using PIC micro needed

Status
Not open for further replies.

neazoi

Advanced Member level 6
Joined
Jan 5, 2008
Messages
4,123
Helped
13
Reputation
26
Reaction score
15
Trophy points
1,318
Location
Greece
Activity points
36,955
Hello, I Need a Morse Code Reader schematic based on microcontroller and LCD module but at the same time with the ability to send morse code using some kind of keyboard or switches.
During the 80's there were some HAL machines that would be able to encode morse code but I have not seen a suitable project.
 

If you can write code then it won't be hard to grab keyboard presses and produce the correct length of tones and silences, in sequence, for each character.

Or else I imagine there's more than one such program available in the radio hobbyist community.

Doing the reverse is the hard part.

I made a morse to English decoder using my VIC-20. This was after I got a short wave radio with a beat frequency oscillator. The BFO is necessary in order to hear CW (continuous wave) broadcasts.

Do you intend to translate mouse clicks into characters? That's one way to do coaching.

Or do you want to tune to short wave broadcasts and see characters appear onscreen? It's best if you send the audio signal through a narrow passband filter. You want to focus on one sender at a time. Because often competing signals are audible a few hz up the band.

Your decoder program will loop around for the most part, simply listening for a pulse. A pulse is a change in voltage at your input pin.

Keep track of time. A short pulse is a dot. A long pulse is a dash. String them together. When you hear silence for a long enough time then assume you have a letter.

Exit the loop. The dots and dashes represent a binary sequence. Convert it to a numerical value.

Go to that position in a lookup array and find what ascii character is in that position. (Create the lookup array of ascii characters and corresponding morse signals in an initialization routine.)

Your program will go through this process many times a second.

You'll need to use a time scalar in order to accommodate slow keyers and fast keyers. An internet search should turn up a table showing the lengths of dots, dashes, and silences, for various speeds of transmission.

I see the W1AW station still broadcasts morse sessions on weekdays. Slow code. Fast code.

As a youth I would sometimes hear morse code broadcasts on short wave.

I wondered what they were saying. But they were too speedy for me to follow.

And I wished I had a device to translate it. I pictured something dramatic, like spies sending secret messages back to headquarters.

Several decades later I managed to make my VIC-20 into a morse translater. What a treat to see text appearing onscreen. I felt like it was a miracle.

So what were the morse keyers talking about? Same thing the voice broadcasters talked about. What kind of rig they had, and what the weather was like. :^)
 
  • Like
Reactions: neazoi

    neazoi

    Points: 2
    Helpful Answer Positive Rating
Thank you very much for your answer!
I have seen this Morse code translator new version « Liudr's Blog Please see the video. It is just perfect, very professional. but it is based on an embedded system which I do not like. I do not want to buy the arduino board, I would like to build something.

I have not seen a decoder operating without a microcontroller anywhere, have you?

But for the encoder it may be another story. For the shake of discrete components, I consider the idea to make a fully transistorized decoder.
maybe looking on a 26 position homemade memory bank and select each position with a switch. This could be much fun :)
 

Thank you very much for your answer!
I have seen this Morse code translator new version « Liudr's Blog Please see the video. It is just perfect, very professional. but it is based on an embedded system which I do not like. I do not want to buy the arduino board, I would like to build something.

The Liudr project looks very well done. Works either direction. Terrific job.

I have not seen a decoder operating without a microcontroller anywhere, have you?

But for the encoder it may be another story. For the shake of discrete components, I consider the idea to make a fully transistorized decoder.
maybe looking on a 26 position homemade memory bank and select each position with a switch. This could be much fun :)

It will be hard to devise a way to switch among various choices electronically.

Just as a thought experiment, I picture what components might be put to use. Such as:

Morse encoder:

1. Press a key on custom 6 x 6 keypad (26 letters plus 10 numerals).

2. Sends unique binary value representing series of dots and dashes.

3. Goes to Parallel-to-serial converter.

4. Output is in sync with free-running clock.

5. Output goes to input #1 of two different logic (AND, NAND, whatever) gate ICs.

Clock cycle (serves as gate signal) goes to input #2 of the logic gate ICs.

6. One gate is hooked up to trigger a one-shot circuit which has been adjusted to output a short pulse.

The other gate is hooked up to trigger a different one-shot circuit which has been adjusted to output a long pulse.

7. A 0 output in conjunction with clock cycle, triggers the short pulse.

Or else a 1 output in conjunction with clock cycle, triggers the long pulse.

8. Either one-shot sends a gating pulse to an audio frequency oscillator (555 or astable multivibrator),

9. Parallel-to-serial converter sends next value (0 or 1).

10. Repeat until all bits are sent. A set of 32 characters will require at least six bits.

---------------------------

Morse decoder:

1. Initial pulse enters serial-to-parallel converter.

2. Initial pulse also starts a missing pulse detector.

3. The serial-to-parallel converter is driven by free-running clock.

Clock speed is carefully adjusted to produce a cycle which is longer than a dot but shorter than a dash.

4. Incoming series of dots and dashes is fed to serial-to-parallel converter.

Short pulse drops to low before end of clock pulse, sends a 0 into serial-to-parallel converter.

Long pulse remains high through end of clock pulse, sends a 1 into serial-to-parallel converter.

5. Silence for longer time than a dash triggers the missing pulse detector. (Letter is done.)

6. Eject binary number from output pins of serial-to-parallel converter. (6 bits will be sufficient for the morse character set.)

7. Goes into custom routing network consisting of diodes and logic gates (in like manner but more complicated than the internal network in a 7447 IC seven-segment decoder).

8. Which translates binary number to light up pertinent segments on alphanumeric display.

9. Character will be erased as soon as next morse transmission arrives. Therefore to show several characters at one time will require more sophisticated circuitry.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top