with Dot-Matrix LCD Display for
Microchip PIC16F84
Concept
How it works
Specifications
Supported Morse
Alphabet
Features
Limitations
Project Resources
Available PIC Assembler
Code
Schematic, Data Sheets,
Pinout
User-specific
Customization
This implementation contains the complete fetch and decoding
of AT keyboard scan patterns as well as RS232 transmission of
ASCII characters to the RS232 target device. It also features an
interface to a dot matrix LCD display to visualize the characters
typed on the locally attached keyboard.
Additional Morse port for pulse-width modulated (PWM) Morse code
output. Further, there is also the ability to enable acoustic
Morse code feedback through a Piezo beeper (parameterizable
feature).
Basically, it works in the same way as the AT Keyboard Interface V2.03, although this program does not support direct Ctrl-Hex and Alt-Dec entry, and no bi-directional communication between keyboard and PIC microcontroller. Further, there is also no RS232 data reception.
Morse code feature:
All legal ASCII characters specified within the Morse alphabet
are translated to a 16 bit pattern through a look-up table.
Within these bit patterns, two consecutive ones followed by a
zero indicate a dash, a dot is encoded as single one followed by
a zero.
The Morse code has different lengths for encoding, e.g.
e = . b = -...
1 = .----
? = ..--..
therefore 16 bits are necessary to support all of them. For
instance, 'b' is encoded in 16 bits as b'1101_0101_0000_0000'.
Subsequent zeros at the end within a pattern are considered as
termination and are ignored. The Morse pattern is signaled as
pulse-width modulated stream at the Morse port, active high.
Parameterization of Piezo beeper support (acoustic Morse code feedback) with constant BEEP_ENABLE within section 'Parameterization' in program code.
Customization of Morse code speed at assemble time (length of dot, length of dash, wait period in between dash and dot, wait period in between two characters) can be done using constants within section 'Constant declaration' in program code. No dynamic speed control during run time (not yet).
Since Morse code transmission needs some time for each character - especially numbers - multiple typed characters at the AT keyboard are stalled within the keyboard internal TX buffer whenever the PIC microcontroller pulls down the open-collector clock line (between keyboard and PIC) for stalling. With this scheme, up to 7 keyboard characters can be queued up without data loss (in my no-name 10$ keyboard). This queuing mechanism is maybe keyboard-dependent.
Translation from keyboard ASCII characters to Morse code is done using a look-up table. The look-up table for the ASCII to 16 bit Morse pattern conversion has been created using an Excel 97 work sheet (MorseTableGenerator.zip) and Visual Basic macros. The supported Morse alphabet is listed in this table below.
The 16 bit Morse code look-up table for Microchip PIC
assembler has been
created automatically using an Excel 97 work sheet and Visual
Basic macros.
Processor: | Microchip PIC 16F84 |
Clock Frequency: | 4 MHz crystal |
Throughput: | 1 MIPS |
RS232 Baud Rate: | 9600 baud, 8 bit, no parity, 1 stopbit |
Acquisition Methodology: | Preemptive, interrupt-based keyboard scan pattern acquisition, decoding to ASCII characters during normal operation mode activated by ready flag |
Code Size of entire Program: | 973 instruction words |
Required Hardware: | AT keyboard, PS/2 connector, MAX232, HD44780 compatible dot matrix LCD (2x16, 2x20 or 2x40 characters) |
Optional Hardware: | Piezo beeper with decoupling capacitor |
Required Software: | RS232 terminal software |
|
Supported Morse alphabet within this Microchip PIC
project.
Same as within AT Keyboard Interface V1xx.
Main File | Main Keyboard Decode Lookup Table | SHIFT Keyboard Decode Lookup Table | HEX Files |
Latest version: morse_2x.asm |
English 'codepage' (QWERTY) View: eng_main.html Download: eng_main.asm |
English 'codepage' (QWERTY) View: eng_shif.html Download: eng_shif.asm |
QWERTY 'codepage': QWERTZ 'codepage': |
Modified Swiss German 'codepage'
(QWERTZ) View: ger_main.html Download: ger_main.asm |
Modified Swiss German 'codepage'
(QWERTZ) View: ger_shif.html Download: ger_shif.asm |
||
The above programs need
additional include files (modules) to
get successfully assembled: m_bank.asm, m_wait.asm,
m_rs096.asm, m_lcd_bf.asm Important: Due to bi-directional communication between controller and LCD display, the above programs only work if both components are connected and are working properly! |
|||
For those, who are not familiar with interfacing a PIC to the RS232 using a MAX232: RS232-Interface.pdf (9.7 kB) |
AT Keyboard Specification (PDF, 189 kB)
Basically, the schematic of the AT
Keyboard Interface with Morse Code Support V2.02 is
the same as the AT Keyboard Interface
V2.04: Keyboard_V2xx.pdf
The only additional features:
The 16 bit Morse code look-up table for Microchip PIC assembler as Excel 97 work sheet with Visual Basic macros: MorseTableGenerator.zip
You don't know how a dot matrix LCD is working? Have a look at my data sheets page.
Download ASCII Character Map: ASCII-Map.pdf
You can get the description of the various keyboard connectors <here>.
For a high level view, please refer to the section 'How it works' above.
Basically the same customization as for AT Keyboard Interface
V1.xx applies to this implementation.
If you apply changes to the existing code, you may need to change the ORG directives in order to realign the assembler code properly.
Last updated: 2004/12/30