Magic Morse

Magic Morse Code Trainer

Learn Morse Code Easily

Difficulty: Intermediate
Time Required: 4-6 hours
Designer: Ray Burnette

The frustration in learning morse code comes when a student attempts to key a word or phrase and has no direct feedback if the keying was correct. Magic Morse eliminates this barrier to learning by providing immediate positive feedback, allowing the student to continue keying correctly while focusing on accuracy and rhythm. Magic Morse is implemented in a single microcontroller chip (PICAXE 20X2 -PIC18F14K22 uC), a wide band tone demodulator, and a Morse character decoder.

It can be used with a PC if there is a standard PC serial port, COM1 or COM2. It can be driven from the PC sound card provided that the audio level is sufficient. This allows for the decoding of ARRL test files which are hosted as MP3 and WAV formats on the Internet and provides a kind of safety net such that if students are listening and writing the code on paper, they can refer to the LCD display (optional) or the PC terminal display to make a positive association of the correct character with the Morse Code sounds.
Required tools and components:
PICAXE 20x2 microcontroller
PIC programmer
Telegraph Key
Soldering iron and solder
Diagonal wire cutters
Needle nose pliers
Wire strippers
9V battery
Wooden/plastic cutting board or plywood base (optional)
Wood screws, machine screws, coat hanger or stiff copper wire (optional)

Description Mfr. Part No.
Capacitor, Ceramic DISC, .01µF, 50V, 20% DC.01
LED, Red/Green, White diffused, T1-3/4, 697 LHG3392
IC, 78L05, +5V, TO-92 78L05
Capacitor, Radial, 100µF, 25V, 20%, 85°C R100/25
Male Plug, Stereo, 3.5mm 255-258
IC, LM555CN, DIP-8 LM555CN-R
Transistor, 2N3904, TO-92 2N3904-R
9V Battery Clip A104-R
Breadboard, 3.25" x 2.125", 400pnt WBU-301-R
Resistor, CF, 47Ω, 1/2 watt, 5% CF1/2W470JRC
Resistor, CF, 100Ω, 1/4 watt, 5% CF1/4W101JRC
Resistor, CF, 10kΩ, 1/4 watt, 5% CF1/4W103JRC
Capacitor, Conf, X7R, .047µF, 100V, 10% SR211C473KAA-VP
Buzzer, Piezo, 5Vp-p, 80dB PB140-ROX-VP
Wire, 22 AWG, Solid, Yellow, 25' 9313-4-R-25
LCD Display, 16 x 2, Serial, 5V, 12C NHD-0216K3Z-NS(RGB)-FBWV3

Step-by-Step Instructions

Step 1 - Review the Parts

Take a moment to be sure you have all the required parts.

Step 2 - Inserting the ICs into the Solderless Breadboard

ICs into the Breadboard Orient the prototype solderless board so that the row numbers are vertical, 1 - 30, across the left and the right sides. This will orient the power connections so that they too run vertical.

In the Magic Morse packet with the parts are several documents. Take reasonable precautions regarding static electricity prevention. There is an advisement printed and inserted with these assembly instructions. Take a moment and read this advisory.

There are 2 ICs. The 20-pin IC is the microcontroller that you will program with the Magic Morse software. The 8-pin IC is the 555-timer which will be used as the tone oscillator for our project.

The 555-timer, 8-pin IC, is to be inserted into the solderless breadboard such that it straddles the middle indentation (runs vertically). Before inserting the pins into the breadboard, take a moment and orient the chip so that pin #1 is at the top-left. pin #1 is identified by a small dimple molded in the top of the plastic case.

When the IC is oriented correctly, the molded "U" shaped notch represents the top side. Refer to the component pictures, if necessary, to ensure the correct orientation and then press the IC into the holes numbered 24-27. You may find it easier to gently insert the left or right side first and then use your thumb to press the metal "legs" so that they are easy to insert into the breadboard. Another "trick" is to use the edge of a table to press the left side and then the right side of the chip until the metal legs are completely vertical and easy to insert. When all 8 pins are inserted such that the IC straddles the trough, press the top of the IC with your thumb and make certain that it is firmly seated against the breadboard.

Applying the same techniques you used above, insert the 20-pin microcontroller in the breadboard. First, orientate the chip so that pin #1 is top-left. Remember that pin #1 is marked by a dimple in the plastic case. When properly oriented, the "U" notch is also at the top center. As there are more pins per side, proceed carefully starting with pin #1 and pin #20 in breadboard connection #5 (straddling the center grove of the breadboard.) IC pin #10 and pin #11 should be in breadboard row #14.

Step 3 - Adding the LED and current limiting resistors

Adding the LED & Resistors The LED used in this project is a 3-wire device with a clear or translucent plastic housing. With the plastic facing up, the three connection leads are pointed down and the center lead is the cathode. The two outside leads are Red and Green with the Green LED anode connection being the "shortest" of the three wires.

The Green LED should go to the PIC chip PIN #16 and the Red LED should go to PIC chip pin #15. BOTH, first connecting with a 100Ω resistor and then the resistor connecting with the representative PIC data pin. For example, the Green (shortest lead) of the LED connects to a 100Ω resistor and the other end of the resistor connects to PIC pin #15.

Insert the LED in the breadboard, right side of center, column "F" and rows 16, 17 & 18.

Lay one of the 100Ω resistors (Brown / Black / Brown) along the breadboard and even the length of the resistor leads from LED row 16 to PIC row 10. Using your wire cutters, cut both leads of the resistor with a minimum of 1/4" extra on each side of the resistor to allow the ends to be bent and inserted into the breadboard. See graphic before cutting the leads; double-check and cut the resistors leads. Using a long nose pair of pliers, bend the resistor leads on both sides at right angles and insert into vertical row "G" and horizontal holes 10 and 16.

Repeat the above for a second resistor, but center this resistor between horizontal row 18 (bottom of the LED) and PIC row 9. Cut the resistor, bend, and insert it in column "H" row 9 and column "H" row 18.

The third 100Ω current limiting resistor will be placed horizontally between the center LED connector (cathode) and circuit. Ground, represented by the right-most vertical blue bar with the "-" symbol at the top/bottom of the breadboard. Measure, cut, and insert in column "I" row 17 to Ground.

Step 4 - Adding the input "clipper" transistor

Adding the Transistor Insert the transistor, flat side facing to the right of the breadboard, into column "G" and rows 20 (collector), 21 (base), and 22 (emitter.)

Locate one of the 10K resistors (Brown, Black, Orange) and bend both leads close to the body, cut no shorter than 1/4" and insert one lead into column "H" row 20 and the other lead into the red vertical positive power bus area, labeled "+".

Cut a length of hook-up wire to be approximately 1" in length and remove 1/4" of insulation from each end of the wire. The wire ends should be bent at right angles and inserted into row #22 column "H", row #22 (the transistor Emitter) and the Blue "-" ground column.

Locate a 100Ω resistor (Brown, Black, Brown) and trim one end of the lead to 1/2" and bend the endmost 1/4" to fit into Column "F" Row #21 (NOTE: the resistor will connect to the Base of the transistor but will be positioned to the left of the center divide in the protoboard.) DO NOT insert the resistor yet.

Bend the left-most lead of the resistor downward and cut the lead 1/4" beyond row #26. Now bend the resistor lead just cut at right angles and insert it into left-row #26 column "C". Insert the transistor end of the resistor into column "F" row #21 (the transistor base - center connection.)

Step 5 - Complete the Code Practice Oscillator

Complete the Code Select a 10K resistor (Brown, Black, Orange) and clip one end to be 1/4" in length. Bend the top wire over against the resistor and clip the second lead to be even with the first lead; that is, the length beyond the transistor end is 1/4".

Repeat #1 for the second 10K resistor. Insert one resistor vertically into column "H" row #24 and the second lead into column "H", row #25. Insert the second resistor vertically into column "G" row #25 and the second lead into column "G" row #26.

Identify the 47nF ceramic capacitor - this capacitor may be marked as "473K" or .047µF or 47000pF. Clip both leads so that they are 1/4" long. Insert the capacitor into column "B" rows #24 and #25 (across pins #1 and #2 of the 555.)

Identify the 10nF capacitor - may be marked as 10000pF or .01uF. The leads on this capacitor must be longer to reach across the 555 IC from pin #1 to pin #5. Therefore, clip the leads of this capacitor to 1/2" each. The leads will need to be bent outward from the bottom to form an arc of approximately 90 degrees between the two wires. Then, use long nose pliers to adjust the angle of the two leads to be 1/4" straight to allow insertion into the pegboard. Insert this capacitor into column "E" row #24 and column " G" row #27.

Strip a bare 5/8" section of jumper wire. Connect this bare wire between column "A" and row #24 and the blue left-hand Ground "-" bus. Strip a bare 1" section of jumper wire. Connect this bare wire between column "A" and row #27 and the red left-hand Positive "+" bus.

Strip a bare 5/8" section of jumper wire. Connect this bare wire between column "J" and row #24 and the right-hand Positive "+" bus. Strip 1/4" from each end of a 1 1/2" length of insulated jumper wire. Connect one end to column "D" row #25 (555 pin #2). Route the wire around the end of the IC and connect the other end to column "H" row #26 (555 pin #6).

Step 6 - Adding the Voltage Regulator

Add Voltage Regulator Identify the 78L05 IC; the part is a 3-wire device and is labeled on the "flat" side. It looks identical to the 2N3904 transistor - so be careful that the right parts are used in the right location. Insert the 78L05 on the left-side of the breadboard with the flat side facing to the right. Position the part and press the 3 wires into Column "B" rows #3, #4, and #5.

Note that Row #5 is also pin #1 of the PIC microcontroller IC.

Identify the 100µF filter capacitor. Notice that the pins exit the bottom of the device and that one side is marked with "---" to signify the negative side of the part. It is critical that the part be installed correctly. If the part is marked with "+++", then that side of the part is positive. Markings differ by manufacturer, so pay particular attention. Insert the 100uF capacitor so that the "+++" (or unmarked side) is on row #3 (left-side of board adjacent to the 78L05) and the "---" (or unmarked side) is on row #4. The capacitor bridges the 78L05 pins #1 and #2. Do not worry about which columns ("C" or "D") used, just ensure that the device is inserted firmly and that the polarity markings are correct. Pin #2 of the 78L05 is the ground connection also referred to as the negative ("-") connection. Using a 1/2" bare jumper wire, connect column "A" row #4 to the left-side Ground bus "-".

Connect the two positive ("+") solderless breadboard buses. Run a 2 1/2" (1/4" stripped ends) wire from the last "+" row #30 on the left of the board to the last "+" row #30 on the right hand side of the board.

Connect the negative bus sides of the breadboard in a similar fashion to step #5 using a 2 1/2" piece of insulated wire (1/4" stripped from each end.) The wire should connect the lower "-" negative bus on the left with the lower "-" negative bus on the right.

Step 7 - Complete the PIC Microcontroller wiring

PIC Microcontroller Wiring Using a 5/8" section of bare jumper wire, connect breadboard location column "J" row #5 to the right-hand ground "-" bus. Identify the 22K resistor (Red, Red, Orange) Clip both leads to be 1/2" long and bend 1/4" of each lead to insert into the breadboard. One lead in column "D" row #6 and the other lead in column "D" row #16

Identify a 10K resistor (Brown, Black, Orange) and bend both leads at right-angle to the resistor body. Clip the leads to 1/4" each. Insert one end of the resistor into column "D" row #16 and insert the other end into the left-hand Ground bus "-". Identify the 9V battery connector. The red wire is "+" positive and the black wire is "-" negative. DANGER - APPLYING 9V TO THE PIC MICROCONTROLLER IC WILL DESTROY THE DEVICE.

The battery voltage must be regulated by the 78L05 to 5V. Remove 1/4" of insulation from the ends of both wires. Insert the Red "+" lead into column "A" row # 3. Insert the Black "-" lead into the left-hand negative bus "-".

If you wish, after testing is completed, you may use a drop of fingernail polish or airplane glue to fix the leads firmly into the breadboard. DO NOT USE any kind of "super glue" as all forms of this type of glue are corrosive to electronic connections.

Step 8 - Sanity Testing

Perform a visual inspection. Review the previous steps, perhaps have a friend or family member read them out and verify that parts are in the correct location and that component leads are not touching each other. All connections should be made through the solderless breadboard. Pay particular attention around the 555 IC since two of the resistors are vertically mounted and one capacitor is above the IC.

Step 9 - Configurations for use

Configurations for Use The Magic Morse PIC microcontroller can be configured to work with a Telegraph Key, the default usage or can be used with a PC (or other suitable audio device such as a portable CD player or high fidelity tape recorder) to decode recorded Morse Code signals for training purposes. For example, the ARRL has numerous MP3 files available at various speeds for downloading and these files can be played on your PC. If the PC has the ability to output the audio signal at 1.6 volts or greater from the earphone jack, then Magic Morse can decode from 5WPM to 15WPM.

For telegraph key operation, connect the key from "C26" to "A20". For PC earphone output to kit input, you will need an appropriate cable. If stereo, wire the Left and Right channels together through two 20Ω resisters. The junction of the resistors should go to "A20" and the shield should be grounded to the negative "-" connection. Your PC must produce 1.6V or greater for this circuit to work. Refer to the user manual for other valuable information.

Step 10 - Programming Pointers

The company, Revolution Education (England), produces the PICAXE -- essentially a stock Microchip PIC with specialized firmware serially programmed. PICAXE documentation is superb and extensive, but the exact programming process depends on the host PC environment. The compiler and the download software are free and the installation is significantly easier than a product such as Arduino. The free software (for Linux, Windows, iOS) is available for download from

Specific procedures for PICAXE programming are different based upon the hosting OS.

Once the PC host is configured with the free environment software, programming of the PICAXE chip can use either USB or RS232 connectivity. Assuming that the PC has a serial communications port -- Com1 or Com2 -- then the download circuit is very simple:

PICAXE programmingFrom PICAXE Manual

USB programming will likely be required for newer notebooks and you may need a USB to RS232 adapter. Note: this adapter is only needed once to program the PICAXE if RS232 Serial is not present on the host PC.

The PICAXE 20x2 can easily be programmed as in the graphic above with instructions from the PICAXE Manual.

For programming, use a USB to PICAXE cable. Solder cable wires to a miniature jack and then plug into the breadboard for one-time programming.

About the designer

Ray Burnette Ray Burnette is a retired IT architect with 30 plus years of experience using computers to solve business problems. His interests in electronics stem from childhood when his family would bring him broken tabletop radios for repair.

As a teenager, Ray would assemble electronics kits, including brands from EICO and Knight Kit. He became an avid tinkerer building transistorized projects in the mid-60's. Ray spent three years in Air Force communications electronics, worked for a major manufacturer of minicomputers, earned his college degree and a listing in Who's Who, and started down a long career in the 1980's with a local exchange carrier writing algorithms used in Divestiture. Ray retired in 2010 and enjoys spending time in his basement lab designing with ATmel and PIC microprocessors.

Ray lives on the outskirts of Atlanta with his wife of forty years. He enjoys photography (film/digital), lasers, model rocketry, microprocessor engineering, old movies on widescreen, and trips into the north Georgia mountains.