Download as doc or pdf
Download as doc or pdf
You are on page 1of 78

Department of E.C.

E Braille Keypad for Visually Impaired

1. INTRODUCTION
Braille keypad for visually impaired is a device that can be used by blind for two major
purposes:

• NOTE TAKER: The device can be used to take notes via Braille keypad and
store words in PC and output the words in audio format.

• ELECTRONIC BRAILLE TUTOR SYSTEM: The device serves as a low cost


teaching aid for learning Braille in a more interactive way.

In 2008, The World Health Organization (WHO) estimates that there are approximately
161 million people with severe vision loss worldwide. A generation ago 50 percent of
blind school children used Braille. Now, it's less than 12 percent. Hence, in a vision to
increase the percentage of Blind people studying Braille in a interactive way, this device
is being developed.

1.1 OBJECTIVE

The main objective of the project is to create a low cost, economical typing device and
Braille tutor system for the blind.

1.2 DESCRIPTION

Braille keypad uses DTMF logic for entering the characters. UM91215B encoder
generates the DTMF signal for the key pressed. This signal is fed to the MT8870D
decoder, which decodes DTMF signal into 4 bit output. PIC18F4550 performs the
computation on the 4-bit output from the decoder and sends the appropriate character to
the PC’s Hyper Terminal using USB.

COMM API is used to read the character from the Hyper Terminal and Speech API is
used to convert the text to speech.

SCE 2009-2010 Page 1


Department of E.C.E Braille Keypad for Visually Impaired

1.3 BRAILLE SYSTEM

Braille is writing system which enables blind and partially sighted people to read and
write through touch. It was invented by Louis Braille (1809-1852), who was blind and
became a teacher of the blind. It consists of patterns of raised dots arranged in cells of up
to six dots in a 3 x 2 configuration. Each cell represents a letter, numeral or punctuation
mark. Some frequently used words and letter combinations also have their own single cell
patterns.

There are a number of different versions of Braille:

• Grade 1: This grade consists of the 26 standard letters of the alphabet and
punctuation. It is only used by people who are first starting to read Braille.

• Grade 2: This grade consists of the 26 standard letters of the alphabet,


punctuation and contractions. The contractions are employed to save space
because a Braille page cannot fit as much text as a standard printed page. Books,
signs in public places, menus, and most other Braille materials are written in
Grade 2 Braille.

• Grade 3: This grade is used mainly in personal letters, diaries, and notes, and also
in literature to some extent. It is a kind of shorthand, with entire words shortened
to a few letters.

1.3.1 Braille Code

Braille can be seen as the world's first binary encoding scheme for representing the
characters of a writing system. The system as originally invented by Braille consists of
two parts:

• A character encoding for mapping characters of the French language to tuples of


six bits or dots.

• A way of representing six-bit characters as raised dots in a Braille cell.

Today different Braille codes (or code pages) are used to map character sets of different
languages to the six bit cells. Different Braille codes are also used for different uses like

SCE 2009-2010 Page 2


Department of E.C.E Braille Keypad for Visually Impaired

mathematics and music. However, because the six-dot Braille cell only offers 63 possible
combinations (26 - 1 = 63), of which some are omitted because they feel the same (having
the same dots pattern in a different position), many Braille characters have different
meanings based on their context. Therefore, character mapping is not one-to-one.

Fig 1.1 Braille code for English characters (a-o)

SCE 2009-2010 Page 3


Department of E.C.E Braille Keypad for Visually Impaired

Fig 1.2 Braille code for English characters (p-z)

Fig 1.3 Braille code for Special Commands

SCE 2009-2010 Page 4


Department of E.C.E Braille Keypad for Visually Impaired

Fig 1.4 Braille code for Numbers

Fig 1.5 Braille code for Punctuation

SCE 2009-2010 Page 5


Department of E.C.E Braille Keypad for Visually Impaired

1.3.2 Louis Braille

Louis Braille, the father of Braille system, was the inventor of Braille system. This is a
worldwide system that is being used by blind people for reading and writing. Braille is
read by passing the fingers over characters made up of an arrangement of one to six
embossed points. It has been adapted to almost every known language.

Fig 1.6 LOUIS BRAILLE (1809 – 1852)

Louis Braille became blind at the age of 3, when he accidentally poked himself in the eye
with a stitching awl, one of his father's workshop tools. The injury wasn't thought to be
serious until it got infected. Braille's other eye went blind because of sympathetic
ophthalmia.

At the very young age of 10, Braille earned a scholarship to the National Institute for the
Blind in Paris, one of the first of its kind in the world. However, the conditions in the
school were not notably better. Louis was served stale bread and water, and students were
sometimes abused or locked up as a form of punishment.

SCE 2009-2010 Page 6


Department of E.C.E Braille Keypad for Visually Impaired

Braille, a bright and creative student, became a talented cellist and organist in his time at
the school, playing the organ for churches all over France.

At the school, the children were taught basic craftsman skills and simple trades. They
were also taught how to read by feeling raised letters (a system devised by the school's
founder, Valentin Haüy). However, because the raised letters were made using paper
pressed against copper wire, the students never learned to write. Another disadvantage
was that the letters weighed a lot and whenever people published books using this system,
they put together a book with multiple stories in one in order to save money. This made
the books sometimes weigh over a hundred pounds. The school had just 14 books, all of
which Louis had read. He liked to learn and to play music.

1.3.3 Development of Braille System

In 1821, Charles Barbier, a former Captain in the French Army, visited the National
Institute for the Blind school. Barbier shared his invention called "night writing" a code of
12 raised dots and a number of dashes that let soldiers share top-secret information on the
battlefield without having to speak. The code was too difficult for Louis to understand
and he later changed the number of raised dots to 6 to form what we today call Braille.

The same year, Louis Braille began inventing his raised-dot system with his father's
stitching awl, the same implement with which he had blinded himself, finishing at age 15,
in 1824. Inspired by the wooden dice his father gave to him; his system used only six dots
and corresponded to letters, whereas Barbier's used 12. The six-dot system allowed the
recognition of letters with a single fingertip apprehending all the dots at once, requiring
no movement or repositioning which slowed recognition in systems requiring more dots.
These dots consisted of patterns in order to keep the system easy to learn. The Braille
system also offered numerous benefits over Hauy's raised letter method, the most notable
being the ability to both read and write an alphabet. Another very notable benefit is that
because they were dots just slightly raised, there was a significant difference in makeup.

Braille later extended his system to include notation for mathematics and music. The first
book in Braille was published in 1829 under the title Method of Writing Words, Music,
and Plain Songs by Means of Dots, for Use by the Blind and Arranged for Them. In 1839
Braille published details of a method he had developed for communication with sighted
people, using patterns of dots to approximate the shape of printed symbols. Braille and his

SCE 2009-2010 Page 7


Department of E.C.E Braille Keypad for Visually Impaired

friend Pierre Foucault went on to develop a machine to speed up the somewhat


cumbersome system.

Braille became a well-respected teacher at the Institute. Although he was admired and
respected by his pupils, his writing system was not taught at the Institute during his
lifetime. The air at the institute was foul and he died in Paris of tuberculosis in 1852 at the
age of 43; his body was disinterred in 1952 (the centenary of his death) and honoured
with re-interment in the Panthéon in Paris. His system was finally officially recognized in
France two years after his death, in 1854.

SCE 2009-2010 Page 8


Department of E.C.E Braille Keypad for Visually Impaired

2. BLOCK DIAGRAM

Fig 2.1 Basic block diagram of the project

2.1 DESCRIPTION:
• BRAILLE KEYPAD: It consists of 8 keys, out of which 6 keys are used to
type the character.

• Encoder (UM91215B): The Key pressed is processed by the Encoder and it


produces a DTMF (Dual Tone Multi-Frequency) signal.

• Decoder (MT8870D): Decodes the frequency signal and sends the location of
the key pressed to the PIC microcontroller.

• PIC18F4550: It reads the data from the decoder processes it and sends the
character to the PC via USB.

• USB 2.0: This is used to transfer the character from the Micro controller to PC.

SCE 2009-2010 Page 9


Department of E.C.E Braille Keypad for Visually Impaired

3. CIRCUIT DESIGN

Fig 3.1 Complete Circuit Diagram

SCE 2009-2010 Page 10


Department of E.C.E Braille Keypad for Visually Impaired

3.1 Components used


Component Name Range Numbers
• Microcontroller PIC18F4550 - 1
• Encoder UM91215B - 1
• Decoder MT8870D - 1
• Crystal Oscillator 48MHz 1
3.579545MHz 2
• Resistors 100Ω 1
1KΩ 3
10KΩ 1
470KΩ 2
1MΩ 1
• Capacitors 0.1μF 7
4.7μF 1
100μF 1
• Zener Diode 3.6v 1

Table 3.1 List of Components used

SCE 2009-2010 Page 11


Department of E.C.E Braille Keypad for Visually Impaired

3.2 BRAILLE KEYPAD WITH ENCODER

Fig 3.2 Circuit diagram of Encoder (UM91215B)

Braille code works on the principle of DTMF (Dual-tone Multi Frequency) logic. DTMF
is a tone composed of two sine waves of mixed frequencies. Individual frequencies are
chosen such that the addition, multiplication or subtraction of any two frequencies should
not generate frequency at is used. DTMF is designed for control signals only. With
standard decoders, it is possible to signal at a rate of about 10 "beeps" (=5bytes) per
second. DTMF standards specify 50ms tone and 50ms space duration. For shorter lengths,
synchronization and timing becomes very tricky.

3.2.1 Composition of DTMF signals


The table 3.1 shows how to compose any DTMF code. Each code, or "beep", consists of
two simultaneous frequencies mixed together (added amplitudes). Standards specify 0.7%
typical and 1.5% maximum tolerance. The higher of the two frequencies may have higher
amplitude (be "louder") of 4 dB max. This shift is called a "twist". If the twist is equal to

SCE 2009-2010 Page 12


Department of E.C.E Braille Keypad for Visually Impaired

3 dB, the higher frequency is 3 dB louder. If the lower frequency is louder, the twist is
negative.

3.2.2 Frequency table


1209 Hz 1336 Hz 1477 Hz
697 Hz 1 2 3
770 Hz 4 5 6
852 Hz 7 8

Table 3.2 Frequency table

This table resembles a matrix keyboard. The X and Y coordinates of each code give the
two frequencies that the code is composed of. It contains 8 codes.

3.2.3 Encoder-UM91215B
UM91215B is a single chip, silicon gate, CMOS Integrated Circuit with an on-chip
oscillator for a 3.579545 MHz crystal. It provides Dual Tone Multi-Frequency dialing.

3.2.3.1 Features
• One touch redial operation.
• 32-digit capacity for redialing.
• DTMF Timing
▪ Manual Dialing: Minimum duration for bursts and pauses
▪ Redialing: Calibrated timing
• Hands free Control Function.
• Wide operating voltage range: 2v to 5.5v
• Key-in beep tone output.
• Digits dialed manually after redialing are cascadable and stored as additional
digits for next redialing.
• Uses inexpensive ceramic resonator (3.579545 MHz).
• Built-in power up reset circuit.

SCE 2009-2010 Page 13


Department of E.C.E Braille Keypad for Visually Impaired

3.3 BRAILLE KEYPAD ARRANGEMENT

Fig 3.3 Standard Braille Code Format Fig 3.4 Braille Keypad Arrangement
Braille Keypad designed in this project consists of all the six keys of Standard Braille
Code Format with two additional keys 7 and 8. Key-8 is used as a Enter button and Key-7
for Speech output.

3.3.1 BRAILLE KEYPAD TYPING EXAMPLE

Fig 3.5 Keypad Enter Example

SCE 2009-2010 Page 14


Department of E.C.E Braille Keypad for Visually Impaired

Figure 3.5 shows how to type a word – cat using the Braille Keypad. As shown in the
figure, for typing the character c the keys 1 and 4 are pressed sequentially. After pressing
the keys related to a character according to Braille Code format, key-8 is pressed to enter
the character and the ASCII value will be sent to the PC after encoding and Decoding.
This procedure is continued for the characters ‘a’ & ‘t’. Finally to get the Speech output
of typed word (Speech output for each character can also be obtained by pressing key-7
after entering the Character) key-7 is pressed.

SCE 2009-2010 Page 15


Department of E.C.E Braille Keypad for Visually Impaired

3.4 DECODER:

Fig 3.6 Circuit diagram of Decoder (MT8870D)

3.4.1 How to decode DTMF


It is not easy to detect and recognize DTMF with satisfactory precision. Often, dedicated
integrated circuits are used, although a functional solution for DTMF transmission and
receiving by a microprocessor (a PIC in most cases) exists. It is rather complicated, so it
is used only marginally. Most often, a MT8870D or compatible circuit would be used.
Most decoders detect only the rising edges of the sine waves. So, DTMF generated by
rectangular pulses and RC filters works reliably. The mentioned MT8870D uses two 6th
order band pass filters with switched capacitors. These produce pure sine waves even
from distorted inputs, with any harmonics suppressed.
Decoding of DTMF signal involves identifying the tow tones in that signal and
determining their corresponding symbol. This can be accomplished by using MT8870D
IC.

SCE 2009-2010 Page 16


Department of E.C.E Braille Keypad for Visually Impaired

3.4.2 Features of MT8870D


• Complete DTMF Receiver.
• Low power consumption.
• Internal gain setting amplifier.
• Adjustable guard time.
• Central office quality.
• Power-down mode.
• •Inhibit mode.

Fig 3.7 Block diagram of Decoder (MT8870D)

The MT8870D is a full DTMF Receiver that integrates both bandsplit filter and decoder
functions into a single 18-pin DIP or SOIC package. Manufactured using CMOS process
technology, the MT8870D offers low power consumption (35 mW max) and precise data
handling. Its filter section uses switched capacitor technology for both the high and low
group filters and for dial tone rejection. Its decoder uses digital counting techniques to
detect and decode all 16 DTMF tone pairs into a 4-bit code. External component count is
SCE 2009-2010 Page 17
Department of E.C.E Braille Keypad for Visually Impaired

minimized by provision of an on-chip differential input amplifier, clock generator, and


latched tri-state interface bus. Minimal external components required include a low-cost
3.579545 MHz color burst crystal, a timing resistor, and a timing capacitor.

3.4.3 Functional Description

MT8870D operating functions (see Fig 3.7) include a bandsplit filter that separates the
high and low tones of the received pair, and a digital decoder that verifies both the
frequency and duration of the received tones before passing the resulting 4-bit code to the
output bus.

3.4.4 Filter

The low and high group tones are separated by applying the dual-tone signal to the inputs
of two 6th order switched capacitor band pass filters with bandwidths that correspond to
the bands enclosing the low and high group tones. The filter also incorporates notches at
350 and 440 Hz, providing excellent dial tone rejection. Each filter output is followed by
a single-order switched capacitor section that smoothens the signals prior to limiting.
Signal limiting is performed by high gain comparators provided with hysteresis to prevent
detection of unwanted low-level signals and noise. The comparator outputs provide full-
rail logic swings at the frequencies of the incoming tones.

3.4.5 Decoder

MT8870D decoder uses a digital counting technique to determine the frequencies of the
limited tones and to verify that they correspond to standard DTMF frequencies. A
complex averaging algorithm is used to protect against tone simulation by extraneous
signals (such as voice) while tolerating small frequency variations. The algorithm ensures
an optimum combination of immunity to talk off and tolerance to interfering signals (third
tones) and noise. When the detector recognizes the simultaneous presence of two valid
tones (known as signal condition), it raises the Early Steering flag (ESt). Any subsequent
loss of signal condition will cause ESt to fall.

SCE 2009-2010 Page 18


Department of E.C.E Braille Keypad for Visually Impaired

3.4.6 Steering Circuit

Fig 3.8 Steering Circuit

Before a decoded tone pair is registered, the receiver checks for a valid signal duration
referred to as character-recognition-condition. This check is performed by an external RC
time constant driven by ESt. Logic high on ESt causes VC to rise as the capacitor
discharges. Provided that signal condition is maintained (ESt remains high) for the
validation period (tGTF), VC reaches the threshold (VTSt) of the steering logic to register
the tone pair, thus latching its corresponding 4-bit code into the output latch. At this point,
the GT output is activated and drives VC to VDD. GT continues to drive high as long as
ESt remains high. Finally, after a short delay to allow the output latch to settle, the
delayed steering output flag (StD) goes high, signaling that a received tone pair has been
registered. The contents of the output latch are made available on the 4-bit output bus by
raising the three state control input (OE) to logic high. The steering circuit works in
reverse to validate the inter digit pause between signals. Thus, as well as rejecting signals
too short to be considered valid, the receiver will tolerate signal interruptions (dropouts)
too short to be considered a valid pause. This capability, together with the ability to select
the steering time constants externally, allows the designer to tailor performance to meet a
wide variety of system requirements.

SCE 2009-2010 Page 19


Department of E.C.E Braille Keypad for Visually Impaired

3.5 PIC18F4550

Fig 3.9 Circuit diagram of PIC18F4550

3.5.1 FEATURES:

• PIC18F4550 is a 40-Pin PDIP. It provides high computational performance at an


economical price and in addition it provides high endurance, Enhanced Flash
program memory 32 Kbytes.

• Nano watt technology: The PIC18F4550 incorporate a range of features that can
significantly reduce power consumption during operation. Key items include:
▪ Alternate Run Modes: By clocking the controller from the Timer1
source or the internal oscillator block, power consumption during code
execution can be reduced by as much as 90%.
▪ Multiple Idle Modes: The controller can also run with its CPU
core disabled but the peripherals still active. In these states, power

SCE 2009-2010 Page 20


Department of E.C.E Braille Keypad for Visually Impaired

consumption can be reduced even further, to as little as 4% of normal


operation requirements.

• The PIC18F4550 incorporates a fully featured Universal Serial Bus


communications module that is USB Specification Revision 2.0. The module
supports both low-speed and full speed communication for all supported data
transfer types.

• Self-Programmability: These devices can write to their own program memory


spaces under internal software control. By using a boot loader routine, located in
the protected Boot Block at the top of program memory, it becomes possible to
create an application that can update itself in the field.

• Extended Instruction Set: The PIC18F4550 introduces an optional extension to


the PIC18 instruction set, which adds 8 new instructions and an Indexed Literal
Offset Addressing mode.

• Enhanced Addressable USART: This serial communication module is capable


of standard RS-232 operation and provides support for the LIN bus protocol.
Other enhancements include Automatic Baud Rate Detection and a 16-bit Baud
Rate Generator for improved resolution. When the microcontroller is using the
internal oscillator block, the EUSART provides stable operation for applications
that talk to the outside world without using an external crystal.

SCE 2009-2010 Page 21


Department of E.C.E Braille Keypad for Visually Impaired

3.6 UNIVERSAL SERIAL BUS 2.0

Fig 3.10 USB PERIPHERAL


USB is a specification to establish communication between devices and a host controller.

3.6.1 UNIVERSAL SERIAL BUS FEATURES


• USB V2.0 Compliant.
• Low Speed (1.5 Mb/s) and Full Speed (12 Mb/s).
• Supports Control, Interrupt, Isochronous and Bulk Transfers.
• Supports up to 32 endpoints (16 bidirectional).
• 1-Kbyte dual access RAM for USB.
• On-chip USB transceiver with on-chip voltage regulator.
• Interface for off-chip USB transceiver.
• Streaming Parallel Port (SPP) for USB streaming transfers.

SCE 2009-2010 Page 22


Department of E.C.E Braille Keypad for Visually Impaired

3.6.2 OVERVIEW OF THE USB PERIPHERAL

The PIC18FX4550 device contains a full speed and low-speed compatible USB Serial
Interface Engine (SIE) that allows fast communications between any USB host and the
PIC® microcontroller. The SIE can be interfaced directly to the USB, utilizing the
internal transceiver, or it can be connected through an external transceiver.

An internal 3.3V regulator is also available to power the internal transceiver in 5V


applications. Some special hardware features have been included to improve
performance. Dual port memory in the device’s data memory space (USB RAM) has been
supplied to share direct memory access between the microcontroller core and the SIE.
Buffer descriptors are also provided, allowing users to freely program endpoint memory
usage within the USB RAM space.

A Streaming Parallel Port has been provided to support the uninterrupted transfer of large
volumes of data, such as isochronous data, to external memory buffers.

SCE 2009-2010 Page 23


Department of E.C.E Braille Keypad for Visually Impaired

4. PROGRAMING
4.1 FIRMWARE FLOWCHART
4.1.1 Main Program

SCE 2009-2010 Page 24


Department of E.C.E Braille Keypad for Visually Impaired

4.1.2 Interrupt Service Routine

SCE 2009-2010 Page 25


Department of E.C.E Braille Keypad for Visually Impaired

SCE 2009-2010 Page 26


Department of E.C.E Braille Keypad for Visually Impaired

SCE 2009-2010 Page 27


Department of E.C.E Braille Keypad for Visually Impaired

4.2 Firmware Code for Programming PIC18F4550


#include <18F4550.h>
#fuses
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREG
EN
#use delay(clock=48000000)
#else //use the National USBN960x peripheral
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#endif //endif check to see which peripheral to use
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <C:\Program Files\PICC\Drivers\usb_cdc.h>
#int_EXT
void ext_isr()
{
int value;
static int k=0x00;
static int choice = 0x00;
char arr[] = {"HI BN\r\n"};
value = input_d() & 0x0f;
if((value != 0x08) ) {
switch(value) {
case 0x01:bit_set(choice, 0);
break;
case 0x02:bit_set(choice, 1);
break;
case 0x03:bit_set(choice, 2);
break;
case 0x04:bit_set(choice, 3);
break;
case 0x05:bit_set(choice, 4);
break;

SCE 2009-2010 Page 28


Department of E.C.E Braille Keypad for Visually Impaired

case 0x06:bit_set(choice, 5);


break;
case 0x07:usb_cdc_putc(' ');
break;
default:break;
}
}
else if(value == 0x08)
{
if(k==0x00)
{
if(choice == 0x01)
usb_cdc_putc('a');
else if(choice == 0x03)
usb_cdc_putc('b');
else if(choice == 0x09)
usb_cdc_putc('c');
else if(choice == 0x19)
usb_cdc_putc('d');
else if(choice == 0x11)
usb_cdc_putc('e');
else if(choice == 0x0b)
usb_cdc_putc('f');
else if(choice == 0x1b)
usb_cdc_putc('g');
else if(choice == 0x13)
usb_cdc_putc('h');
else if(choice == 0x0a)
usb_cdc_putc('i');
else if(choice == 0x1a)
usb_cdc_putc('j');
else if(choice == 0x05)
usb_cdc_putc('k');
else if(choice == 0x07)
SCE 2009-2010 Page 29
Department of E.C.E Braille Keypad for Visually Impaired

usb_cdc_putc('l');
else if(choice == 0x0d)
usb_cdc_putc('m');
else if(choice == 0x1d)
usb_cdc_putc('n');
else if(choice == 0x15)
usb_cdc_putc('o');
else if(choice == 0x0f)
usb_cdc_putc('p');
else if(choice == 0x1f)
usb_cdc_putc('q');
else if(choice == 0x17)
usb_cdc_putc('r');
else if(choice == 0x0e)
usb_cdc_putc('s');
else if(choice == 0x1e)
usb_cdc_putc('t');
else if(choice == 0x25)
usb_cdc_putc('u');
else if(choice == 0x27)
usb_cdc_putc('v');
else if(choice == 0x3a)
usb_cdc_putc('w');
else if(choice == 0x2d)
usb_cdc_putc('x');
else if(choice == 0x3d)
usb_cdc_putc('y');
else if(choice == 0x35)
usb_cdc_putc('z');
else if(choice == 0x02)
usb_cdc_putc(',');
else if(choice == 0x06)
usb_cdc_putc(';');
else if(choice == 0x12)
SCE 2009-2010 Page 30
Department of E.C.E Braille Keypad for Visually Impaired

usb_cdc_putc(':');
else if(choice == 0x32)
usb_cdc_putc('.');
else if(choice == 0x16)
usb_cdc_putc('!');
else if(choice == 0x26)
usb_cdc_putc('?');
else if(choice == 0x14)
usb_cdc_putc('*');
else if(choice == 0x34)
usb_cdc_putc('"');
else if(choice == 0x24)
usb_cdc_putc('-');
else if(choice == 0x20)
{
usb_cdc_putc('#');
k = 0x01;
}
else if(choice == 0x3c)
{
usb_cdc_putc('$');
k=0x02;
}
choice = 0x00;
}
else if(k==0x01)
{
if(choice == 0x01)
usb_cdc_putc('A');
else if(choice == 0x03)
usb_cdc_putc('B');
else if(choice == 0x09)
usb_cdc_putc('C');
else if(choice == 0x19)
SCE 2009-2010 Page 31
Department of E.C.E Braille Keypad for Visually Impaired

usb_cdc_putc('D');
else if(choice == 0x11)
usb_cdc_putc('E');
else if(choice == 0x0b)
usb_cdc_putc('F');
else if(choice == 0x1b)
usb_cdc_putc('G');
else if(choice == 0x13)
usb_cdc_putc('H');
else if(choice == 0x0a)
usb_cdc_putc('I');
else if(choice == 0x1a)
usb_cdc_putc('J');
else if(choice == 0x05)
usb_cdc_putc('K');
else if(choice == 0x07)
usb_cdc_putc('L');
else if(choice == 0x0d)
usb_cdc_putc('M');
else if(choice == 0x1d)
usb_cdc_putc('N');
else if(choice == 0x15)
usb_cdc_putc('O');
else if(choice == 0x0f)
usb_cdc_putc('P');
else if(choice == 0x1f)
usb_cdc_putc('Q');
else if(choice == 0x17)
usb_cdc_putc('R');
else if(choice == 0x0e)
usb_cdc_putc('S');
else if(choice == 0x1e)
usb_cdc_putc('T');
else if(choice == 0x25)
SCE 2009-2010 Page 32
Department of E.C.E Braille Keypad for Visually Impaired

usb_cdc_putc('U');
else if(choice == 0x27)
usb_cdc_putc('V');
else if(choice == 0x3a)
usb_cdc_putc('W');
else if(choice == 0x2d)
usb_cdc_putc('X');
else if(choice == 0x3d)
usb_cdc_putc('Y');
else if(choice == 0x35)
usb_cdc_putc('Z');
choice = 0x00;
k = 0x00;
}
else if(k==0x02)
{
if(choice == 0x01)
usb_cdc_putc('1');
else if(choice == 0x03)
usb_cdc_putc('2');
else if(choice == 0x09)
usb_cdc_putc('3');
else if(choice == 0x19)
usb_cdc_putc('4');
else if(choice == 0x11)
usb_cdc_putc('5');
else if(choice == 0x0b)
usb_cdc_putc('6');
else if(choice == 0x1b)
usb_cdc_putc('7');
else if(choice == 0x13)
usb_cdc_putc('8');
else if(choice == 0x0a)
usb_cdc_putc('9');
SCE 2009-2010 Page 33
Department of E.C.E Braille Keypad for Visually Impaired

else if(choice == 0x1a)


usb_cdc_putc('0');
choice = 0x00;
k = 0x00;
}
}

}
void main(void)
{
char c;
set_tris_b(0x01);
set_tris_d(0xff);
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
ext_int_edge(L_TO_H);
printf("\r\n\nCCS CDC (Virtual RS232) Example\r\n");
usb_init_cs();

while (TRUE)
{
usb_task();
}

SCE 2009-2010 Page 34


Department of E.C.E Braille Keypad for Visually Impaired

4.3 JAVA PROGRAMMING


The JAVA PROGRAMMING is used to produce the speech output of the text received at
the HyperTerminal of the PC. The speech output is obtained using Java communication
API and Java speech API.

4.3.1 JAVA COMM API

The Java Communications API consists of the javax.comm package. This package does
not come with the core Java development kits but instead is included in the set of optional
Java Extensions packages that provide various useful services.

With the Communications API can be used to obtain a set of objects representing the
RS232 serial ports and IEEE 1284 parallel ports on a platform. With these we can obtain
exclusive ownership of a port, read and write to the port either synchronously and
asynchronously, and receive events from the port that indicate some state change in the
port such as the arrival of data.

javax.comm package consists of primary classes that you need for input/output over serial
and parallel ports. This will include the port classes that give information about and
access to the ports on a platform, the port event classes and interfaces that allow for
responding to data and state changes on ports, and exceptions.

Package javax.comm

Class Summary

CommPort A communications port.

CommPortIdentifier Communications port management.

ParallelPort A parallel communications port.

ParallelPortEvent A parallel port event.

SerialPort An RS-232 serial communications port.

SerialPortEvent A serial port event.

SCE 2009-2010 Page 35


Department of E.C.E Braille Keypad for Visually Impaired

Table 4.1 Package javax.comm Class summary

Exception Summary

Thrown when a driver can't find the specified


NoSuchPortException
port.

PortInUseException Thrown when the specified port is in use.

Thrown when a driver doesn't allow the


UnsupportedCommOperationException
specified operation.

Table 4.2 Package javax.comm Exception summary

Interface Summary

CommDriver Part of the loadable device driver interface.

Propagates various communications port ownership


CommPortOwnershipListener
events.

ParallelPortEventListener Propagates parallel port events.

SerialPortEventListener Propagates serial port events.

Table 4.3 Package javax.comm Interface summary

SCE 2009-2010 Page 36


Department of E.C.E Braille Keypad for Visually Impaired

4.3.2 JAVA SPEECH API

The Java Speech API defines a standard, easy-to-use, cross-platform software interface to
state-of-the-art speech technology. Two core speech technologies are supported through
the Java Speech API: speech recognition and speech synthesis. Speech recognition
provides computers with the ability to listen to spoken language and to determine what
has been said. In other words, it processes audio input containing speech by converting it
to text. Speech synthesis provides the reverse process of producing synthetic speech from
text generated by an application, an applet or a user. It is often referred to as text-to-
speech technology.

The Java Speech API is an extension to the Java platform. Extensions are packages of
classes written in the Java programming language (and any associated native code) that
application developers can use to extend the functionality of the core part of the Java
platform.

4.3.2.1 Design Goals for the Java Speech API

Along with the other Java Media APIs, the Java Speech API lets developers incorporate
advanced user interfaces into Java applications. The design goals for the Java Speech API
included:

• Provide support for speech synthesizers and for both command-and-control and
dictation speech recognizers.

• Provide a robust cross-platform, cross-vendor interface to speech synthesis and


speech recognition.

• Enable access to state-of-the-art speech technology.

• Support integration with other capabilities of the Java platform, including the suite
of Java Media APIs.

• Be simple, compact and easy to learn.

4.3.2.2 Speech Engines: javax.speech

SCE 2009-2010 Page 37


Department of E.C.E Braille Keypad for Visually Impaired

The javax.speech package of the Java Speech API defines an abstract software
representation of a speech engine. "Speech engine" is the generic term for a system
designed to deal with either speech input or speech output. Speech synthesizers and
speech recognizers are both speech engine instances. Speaker verification systems and
speaker identification systems are also speech engines but are not currently supported
through the Java Speech API.

The javax.speech package defines classes and interfaces that define the basic functionality
of an engine. The javax.speech.synthesis package and javax.speech.recognition package
extend and augment the basic functionality to define the specific capabilities of speech
synthesizers and speech recognizers.

The basic processes for using a speech engine in an application are as follows.

• Identify the application's functional requirements for an engine (e.g, language or


dictation capability).

• Locate and create an engine that meets those functional requirements.

• Allocate the resources for the engine.

• Set up the engine.

• Begin operation of the engine - technically, resume it.

• Use the engine

• Deallocate the resources of the engine.

4.3.2.3 Speech Synthesis: javax.speech.synthesis

A speech synthesizer is a speech engine that converts text to speech. The


javax.speech.synthesis package defines the Synthesizer interface to support speech
synthesis plus a set of supporting classes and interfaces. Speech synthesis is also referred
to as text-to-speech (TTS) conversion.

The four basic steps which all speech synthesis applications must perform
ARE:
SCE 2009-2010 Page 38
Department of E.C.E Braille Keypad for Visually Impaired

• Create: The Central class of javax.speech package is used to obtain


a speech synthesizer by calling the createSynthesizer method. The
SynthesizerModeDesc argument provides the information needed to locate
an appropriate synthesizer.
• Allocate and Resume: Allocate and resume methods prepare the
Synthesizer to produce speech by allocating all required resources and
putting it in the RESUMED state.
• Generate: The speakPlainText method requests the generation of
synthesized speech from a string.
• Deallocate: The waitEngineState method blocks the caller until the
Synthesizer is in the QUEUE_EMPTY state - until it has finished speaking
the text. The deallocate method frees the synthesizer's resources.

4.3.2.4 Synthesizer as an Engine

The basic functionality provided by a Synthesizer is speaking text,


management of a queue of text to be spoken and producing events as these
functions proceed. The Synthesizer interface extends the Engine interface to
provide this functionality.

The following is a list of the functionality that the javax.speech.synthesis


package inherits from the javax.speech package and outlines some of the
ways in which that functionality is specialized.

• The properties of a speech engine defined by the EngineModeDesc


class apply to synthesizers. The SynthesizerModeDesc class adds
information about synthesizer voices.
• Synthesizers are searched, selected and created through the Central
class in the javax.speech package.
• Synthesizers inherit the basic state system of an engine from the
Engine interface. The basic engine states are ALLOCATED,
DEALLOCATED, ALLOCATING_RESOURCES and
DEALLOCATING_RESOURCES for allocation state, and PAUSED and
RESUMED for audio output state. The getEngineState method and other

SCE 2009-2010 Page 39


Department of E.C.E Braille Keypad for Visually Impaired

methods are inherited for monitoring engine state. An EngineEvent


indicates state changes.
• Synthesizers produce all the standard engine events. The
javax.speech.synthesis package also extends the EngineListener interface
as SynthesizerListener to provide events that are specific to synthesizers.

4.4 JAVA CODING FLOWCHART

SCE 2009-2010 Page 40


Department of E.C.E Braille Keypad for Visually Impaired

SCE 2009-2010 Page 41


Department of E.C.E Braille Keypad for Visually Impaired

4.5 JAVA CODE


Blind.java
import java.io.*;
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.Locale;
import java.net.*;

class blind extends Thread


{

Synthesizer synthesizer;
SynthesizerModeDesc synthesizermodedesc;
EngineList enginelist;
SynthesizerProperties synthesizerproperties;
public blind()
{
try
{
System.out.println("in synthesis");
synthesizer = Central.createSynthesizer(new
SynthesizerModeDesc(Locale.ENGLISH));
enginelist = Central.availableSynthesizers(null);
synthesizermodedesc = (SynthesizerModeDesc)enginelist.elementAt(0);
synthesizerproperties = synthesizer.getSynthesizerProperties();
synthesizer.allocate();
start();
}
catch(Exception e)
{;}
}
public void run()
{

SCE 2009-2010 Page 42


Department of E.C.E Braille Keypad for Visually Impaired

try
{
System.out.println("after allocate");
Voice avoice[] = synthesizermodedesc.getVoices();
synthesizerproperties.setVoice(avoice[0]);
}
catch(Exception e){}
}
public void speak(String msg) throws InterruptedException
{
synthesizer.speakPlainText(msg,null);
synthesizer.waitEngineState(0x10000L);
}
public void destroySynthesis() throws EngineException
{
synthesizer.deallocate();
}
public void stopSpeaking()
{
synthesizer.cancel();
}
public static void main(String args[])
{
//String data=args[0];
blind b=new blind();
new ReadWords(b);
}
}

SCE 2009-2010 Page 43


Department of E.C.E Braille Keypad for Visually Impaired

ReadWords.java
import javax.comm.*;
import java.io.*;
import java.util.*;
class ReadWords implements SerialPortEventListener
{
CommPortIdentifier portId;
SerialPort serialPort;
InputStream in;
int ch;
int k;
String data="";
String dat="";
String data1="";
String data2="";
blind b;
Vector vector;
StringTokenizer st;
ReadWords(blind b)
{
this.b=b;
try
{
vector=new Vector();
portId = CommPortIdentifier.getPortIdentifier("COM3");
serialPort = (SerialPort) portId.open("ComControl", 2000);
in = serialPort.getInputStream();
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);

serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,S
erialPort.PARITY_NONE);
System.out.println("com initialized");

SCE 2009-2010 Page 44


Department of E.C.E Braille Keypad for Visually Impaired

FileInputStream fstream = new FileInputStream("textfile.txt");


// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine="";
int i=0;
//Read File Line By Line
while ((i = br.read()) != -1) {
// Print the content on the console
strLine+=(char)i;
//System.out.println ("****"+strLine);
}
System.out.println ("&&&&"+strLine);
st=new StringTokenizer(strLine," ");
while(st.hasMoreTokens())
{
vector.add(st.nextToken());
}
}
catch(Exception e)
{
System.out.println("Error In Initalization Of Data"+e+st);
}
}
synchronized public void serialEvent(SerialPortEvent event)
{

try
{
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE)
{

while((ch=in.read())!=32)
SCE 2009-2010 Page 45
Department of E.C.E Braille Keypad for Visually Impaired

{
if(ch==35)
{
b.speak("capital sign");
}
else if(ch==36)
{
b.speak("number sign");
}
else if(ch==42)
{
b.speak(dat);
}
else if(ch==45)
{
k=1;
}
else
{
data+=(char)ch;
System.out.println("***********data*********"+data);
//sb.append((char)ch);
}
}

if(k!=1)
{
if(vector.contains(data))
{
b.speak(data);
File file=new File("D:\\project\\note taker for blind from
pratiba\\SOURCE CODE\\NoteTaker For
Blind\\spoken_words.txt");
FileOutputStream fos=new FileOutputStream(file,true);
SCE 2009-2010 Page 46
Department of E.C.E Braille Keypad for Visually Impaired

data1=data2;
dat+=(data1+','+' ');
if(data1!="")
{
fos.write((data1+" ").getBytes());
}
fos.flush();
fos.close();
data2=data;
}
else if(data=="")
{
File file=new File("D:\\project\\note taker for blind from P
ratiba\\SOURCE CODE\\NoteTaker For
Blind\\spoken_words.txt");
FileOutputStream fos=new FileOutputStream(file,true);
data1=data2;
dat+=(data1+','+' ');
if(data1!="")
{
fos.write((data1+" ").getBytes());
}
fos.flush();
fos.close();
data2=data;
}
else
{
b.speak("Sorry, the word was not found");
}
}
else
{
b.speak("previous spoken output, deleted");
SCE 2009-2010 Page 47
Department of E.C.E Braille Keypad for Visually Impaired

data2="";
k=0;
}
data="";
}
}
catch(Exception e)
{
System.out.println("Exception in Read"+e);
}
}
}

SCE 2009-2010 Page 48


Department of E.C.E Braille Keypad for Visually Impaired

5. SOFTWARE

5.1 MPLAB v8.43


MPLAB Integrated Development Environment (IDE) is a free, integrated toolset for the
development of embedded applications employing Microchip's PIC and dsPIC
microcontrollers. MPLAB IDE runs as a 32-bit application on MS Windows, is easy to
use and includes a host of free software components for fast application development and
super-charged debugging. MPLAB IDE also serves as a single, unified graphical user
interface for additional Microchip and third party software and hardware development
tools. Moving between tools is a snap, and upgrading from the free software simulator to
hardware debug and programming tools is done in a flash because MPLAB IDE has the
same user interface for all tools.
Both Assembly and C programming languages can be used with MPLAB IDE. Others
may be supported through the use of third party programs. MPLAB IDE does not support
Linux, UNIX, or Macintosh based operating systems.

5.1.1 STEPS TO CREATE PROJECT IN MPLAB v8.43


1. Open MPLAB and Go to project and select the “Project Wizard” and click
“NEXT”.

SCE 2009-2010 Page 49


Department of E.C.E Braille Keypad for Visually Impaired

2. Select the device as PIC18F4550 and click “NEXT”.

3. Select the language tool suite as CCS C compiler and click “NEXT”.

SCE 2009-2010 Page 50


Department of E.C.E Braille Keypad for Visually Impaired

4. Create the project by selecting name with the path. (NOTE: All the headers and
the source file used to build the project should be outside the folder containing the
project file) then click “NEXT”.

5. Add all the header files that is needed along with the source file and click
“NEXT”.

SCE 2009-2010 Page 51


Department of E.C.E Braille Keypad for Visually Impaired

6. Now the summary appears which defines the project parameters. If correct, click
“Finish”.

7. After clicking the “Finish”, the project will be opened. The Firmware Code is
written in the space provided and then it is compiled using CCS C Compiler.

SCE 2009-2010 Page 52


Department of E.C.E Braille Keypad for Visually Impaired

5.2 JCREATOR LE 3.50


JCreator is a Java IDE created by Xinox Software. Its interface is similar to that of
Microsoft's Visual Studio. Because it is programmed entirely in C++, Xinox Software has
asserted that JCreator is faster than competing Java-based Java IDEs.
JCreator has two editions:
• Lite Edition (LE)
• Pro Edition (Pro):

JCreator is only available on the Windows Operating System. However, both the LE and
Pro versions of JCreator run adequately on Linux (using Wine). So far no Linux versions
are planned for immediate release, but new components will be built for cross-
compatibility in mind.
The feature set of the Pro version is comparable to that of other language aware IDEs
with respect to project management and editing features, but lacks advanced features,
such as automated refactoring, support for common frameworks etc, which can be found
in the dominant Java IDEs such as Eclipse and IntelliJ IDEA. The free LE version further
lacks some features, such as code completion, that are included with other free IDEs.
Unlike the dominant Java IDEs today, JCreator also lacks the level of extensibility
through third-party plug-ins that is common in popular Java IDEs.

5.2.1 Features

 Custom color schemes.


 Wrapping around of your existing projects.
 Different JDK profiles can be used.
 Quick code writing via project templates.
 Easy project viewing with the class browser.
 Debugging with an easy, intuitive interface. No command-line prompts necessary.
 Wizards help you cut to the chase writing your project, quickly and easily.
 Automatic Class path configuration.
 UI customization (similar to Microsoft Visual Studio).

SCE 2009-2010 Page 53


Department of E.C.E Braille Keypad for Visually Impaired

 The run-time environment can run your application as an applet, in a JUnit


environment or in a command-line window.
 JCreator's IDE does not require a Java Runtime Environment to execute, which may
make it faster than Java-based IDE's.

Fig 5.1 JCreator Environment

SCE 2009-2010 Page 54


Department of E.C.E Braille Keypad for Visually Impaired

6. TESTING & EXECUTION

6.1 HYPER TERMINAL

This software is used to establish connection between PC and PIC Microcontroller. The
initial settings to receive the characters from the Microcontroller are shown below.

1. Go to device manager and check whether the device is connected. If so, see the
comm. Port number (if the driver is not installed, install the driver and then check
for comm. Port number).

SCE 2009-2010 Page 55


Department of E.C.E Braille Keypad for Visually Impaired

2. Open HyperTerminal, select a name and click “OK”.

3. Select the USB to UART comm. port (i.e. COM3) and click “OK”.

SCE 2009-2010 Page 56


Department of E.C.E Braille Keypad for Visually Impaired

4. Click “Restore Defaults” and then click “OK”.

5. Enter the characters and check whether it is appearing at the HyperTerminal.

SCE 2009-2010 Page 57


Department of E.C.E Braille Keypad for Visually Impaired

Fig 6.1 Received characters on the Serial Port

6.2 Execution of java file

To execute the java file the following steps should be performed:

Open a notepad in the folder that contains java file and write the instructions as
shown and save it as a bat file.

SCE 2009-2010 Page 58


Department of E.C.E Braille Keypad for Visually Impaired

Now close the notepad and open the bat file to execute the java file as shown and press
any key.

1. If there are no errors, then the output of the bat file will be as shown, after which
the characters can be entered.

SCE 2009-2010 Page 59


Department of E.C.E Braille Keypad for Visually Impaired

7. PCB Layouts

Fig 7.1 PCB of Braille Keypad with Encoder

SCE 2009-2010 Page 60


Department of E.C.E Braille Keypad for Visually Impaired

Fig 7.2 PCB of Decoder

SCE 2009-2010 Page 61


Department of E.C.E Braille Keypad for Visually Impaired

Fig 7.3 PCB of PIC18F4550 Microcontoller

7.1 Cost of the Project


• PIC18F4550 650
• BRAILLE KEYPAD 3500
• UM91215B 75
• MT8870D 85
• USB CABLE 70
• HEADPHONE 250
• MISCELLANOUS 500
TOTAL RS. 5130

SCE 2009-2010 Page 62


Department of E.C.E Braille Keypad for Visually Impaired

8. APPLICATIONS, ADVANTAGES &


DISADVANTAGES

8.1 APPLICATIONS
1. The main application of this Note taker is that it allows the blinds to enter notes
via Braille keypad to access words and to output result in audio format.
2. Braille Note taker can be used to take notes in class, lectures and meeting for the
blind people.
3. Blind people can be employed as a typist.
4. This device can be used to teach the Braille language for blind people in a more
interactive way.

8.2 ADVANTAGES

1. No external power supply is needed. Power is shared through USB for all the
components (5v).
2. Typing is easier using this device as it is based on the standard Braille system.
3. Learning of Braille language is made more interactive with the help of the audio
feedback.
4. Compared to the existing Braille keypads (available in foreign countries), this
device is low-cost and economical.

8.3 DISADVANTAGES

1. The initial setup has to be done by another person.


2. After typing the last word in a paragraph, the key-7 has to be pressed twice in
order to store the last word.
3. The deletion of the word in error can be performed only for the previous
spoken output.

9. FUTURE SCOPES
SCE 2009-2010 Page 63
Department of E.C.E Braille Keypad for Visually Impaired

• This device can be made a portable hand held device with features as shown in the
Figure 9.1.

Fig 9.1 Portable Device

• The device can be used to inform time, date, message in audio format.

Fig 9.2 Blind Man using the Device

• This device can be integrated with walking stick, which serves as a Walking aid to
the Blind.

SCE 2009-2010 Page 64


Department of E.C.E Braille Keypad for Visually Impaired

Fig 9.3 Device integrated with Stick

SCE 2009-2010 Page 65


Department of E.C.E Braille Keypad for Visually Impaired

10. PHOTO GALLERY

Fig 10.1 Braille Keypad with Encoder

Fig 10.2 Decoder

SCE 2009-2010 Page 66


Department of E.C.E Braille Keypad for Visually Impaired

Fig 10.3 Complete Hardware

Fig 10.4 Braille keypad connected to computer

SCE 2009-2010 Page 67


Department of E.C.E Braille Keypad for Visually Impaired

11. CONCLUSION

Braille Keypad serves a low cost, economical and easy to use device that has great
potential to aid the education of a large number of blind students residing in the
developing nations and also aids in the increase in employment opportunities for the
Blind People. The Keypad is an attempt to use technology to enable education for the
visually impaired.

SCE 2009-2010 Page 68


Department of E.C.E Braille Keypad for Visually Impaired

12. BIBLIOGRAPHY

[1] N. Kalra, T. Lauwers, D. Dewey, T. Stepleton, and M. B. Dias, “Iterative Design of A


Braille Writing Tutor to Combat Illiteracy,” 2nd IEEE/ACM International Conference on
Information and Communication Technologies and Development, December, 2007

[2] http://en.wikipedia.org/wiki/Braille

[3] http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010300

[4] “Portable Notetaker for Blind,” http://mypic32.com/web/guest/contestantsprofiles?


profileID=46951

[5] Anuraag Gupta, Prateek Agrawal, Shashank Singla, Sushmita Rawat, M. Balakrishnan
“Braille Tutor System for the Visually Handicapped,” World Blind Union, December,
2007

SCE 2009-2010 Page 69


Department of E.C.E Braille Keypad for Visually Impaired

13. APPENDICES
13.1 Encoder datasheet

Fig 13.1 UM91215B Pin Details

Pin 1: Hook switch input: This inverter input pin detects the state of the hook switch
contact. “Off Hook “is represented by a Vss condition. “On hook” is represented by a
Vdd condition.
Pin 2: Mode IN: This is a TRI-STATE mode select pin.

Table 13.1 MODE IN – Tri State mode select


Pin 3 and 4: oscillator input and output pins. The base for the UM91215 is a crystal
controlled on-chip Oscillator, which is completed by connecting a 3.58M Hz crystal or
ceramic resonator between the OSC1 and OSC0 pin.
Pin 5: Connected to Vss.
Pin 6: Connected to Vdd.

SCE 2009-2010 Page 70


Department of E.C.E Braille Keypad for Visually Impaired

Pin 7: TONE: Tone dialing output. When a valid key press is detected in the DTMF
mode, appropriate low group and high group frequencies are generated which hybridize
the dual tone output. TONE output is in the “OFF” state in pulse mode.
Pin 8: Dialing transmission mute output. This is a N-channel open drain output.
Normally, the transmission mute output is “OFF” during pulse or DTMF dialing this
output is “ON”.
Pin 9: MODE OUT PIN. This is an N-channel, open drain output. It is “ON” during tone
output and “OFF” during pulse output.
Pin 10: Key-in Tone Output. This N-channel open drain pin sends out a “beep” tone for
each pulse mode key entry, along with entries of accepted function keys. The tone output
frequency is 437 Hz and tone duration is 23 ms.
Pin 11: Dialing Pulse output. This is an N-channel open drain output. The normal output
will be “ON” during break and “OFF” during make in the pulse dialing mode.
Pin 11, 13, 14, 15, 16, 17, 18: Keyboard pins. This input serves as the interface to an XY
matrix keyboard. On a 4 x 4 matrix keyboard, the input from the forth column, should be
connected to Vss.

13.2 Decoder datasheet

Fig 13.2 MT8870D Pin Details

SCE 2009-2010 Page 71


Department of E.C.E Braille Keypad for Visually Impaired

Table 13.2 Pin Description of MT8870D


SCE 2009-2010 Page 72
Department of E.C.E Braille Keypad for Visually Impaired

13.3 PIC18F4550 datasheet

Fig 13.3 PIC18F4550 Pin Details

SCE 2009-2010 Page 73


Department of E.C.E Braille Keypad for Visually Impaired

SCE 2009-2010 Page 74


Department of E.C.E Braille Keypad for Visually Impaired

SCE 2009-2010 Page 75


Department of E.C.E Braille Keypad for Visually Impaired

SCE 2009-2010 Page 76


Department of E.C.E Braille Keypad for Visually Impaired

SCE 2009-2010 Page 77


Department of E.C.E Braille Keypad for Visually Impaired

Table 13.3 Pin Description of PIC18F4550

SCE 2009-2010 Page 78

You might also like