You are on page 1of 86

PROJECT REPORT ON

ELECTION VOTING VIA SMS

BY

ROHAN.S.GAVANKAR (0713085)
RONAK.P.KAMDAR (0713087)
SHASHANK.S.KATKAR (0713094)

UNDER THE GUIDANCE OF

Prof. SHARVARI. P.DESHMANE


IN PARTIAL FULFILLMENT OF

B.E. ELECTRONICS & TELECOMMUNICATION

DEGREE OF UNIVERSITY OF MUMBAI

DEPARTMENT OF ELECTRONICS & TELECOMMUNICATION

K.J.SOMAIYA COLLEGE OF ENGINERING,


VIDYAVIHAR, MUMBAI-400077.
(2010-2011)
K.J.SOMAIYA COLLEGE OF ENGINEERING,
VIDYAVIHAR, MUMBAI-400077.
DEPARTMENT OF ELECTRONICS &TELECOMMUNICATION

CERTIF ICATE
This is to certify that the following students
• Rohan .S. Gavankar (EXTC B-85)
• Ronak .P. Kamdar (EXTC B-87)
• Shashank. S. Katkar (EXTC B-94)
have successfully completed the project Titled “ ELECTION VOTING VIA SMS ”
towards the partial fulfillment of degree of Bachelor of Engineering in Electronics
and Telecommunications of the University of Mumbai during academic year 2010-
2011.

----------------- -------------------
Name & Designation Name & Designation
Internal Guide External Guide

-------------------
Prof.(Mrs.) J.M.Kundargi
Head of the Department

-------------------
Dr. (Mrs.) Medha Dixit
Principal

---------------------- -------------------------
INTERNAL EXAMINER EXTERNAL EXAMINER
ABSTRACT

Using SMS Based Voting machine we can vote from our home just by sending a
sms a specified format from our mobile. The entire voters will be provided with a
unique password (pin) and identification number. For voting we have to send a
sms in a predefined format. The voting machine will receive this messages and
decode the message and verify the the Pin number and identification number if
both number matches the voting machine will accept the vote else the message is
rejected by the machine. The voting machine is implemented using P89V51RD2
microcontroller .A GSM MODEM is used to receive messages fro m voters. The
microcontroller accepts this message and verifies the message and keep updates.
An LCD is used to display the result.
ACKNOWLEDGMENT

We wish to express my sincere gratitude to Prof. J. M. Kundargi, (Head of EXTC


Department) for providing us an opportunity to do our project work on “ELECTION
VOTING VIA SMS”. This project bears on imprint of many people. We sincerely
thank our project guide Prof. Sharvari.P.Deshmane for channelizing us towards the
successful completion of our project. We also wish to express our gratitude to the
officials and other staff members of KJSCE who rendered their help during the period
of our project work. Our special thanks to Prof. Mrunal.P.Chandane for her vital
insights and kind co-operation to the completion of our project work. Last but not the
least, we thank our family for giving us life in first place, for educating us with
aspects from both arts and sciences, for unconditional support and encouragement to
pursue our interests, even when the interests went beyond boundaries of language,
field and geography.

1
TABLE OF CONTENTS:
Sr. No. Page Title Page No.

1 Title page i
2 Certificate ii
3 Abstract iii
4 Acknowledgment iv
5 Introduction 4
6 Chapter 1:Introduction to P89V51RD2 Microcontroller

1.1 General Description 5


1.2 Features 6
1.3 Block diagram 7
1.4 Pin diagram 8
1.5 Pin description 9
1.6 Memory organization 12
1.7 Flash Memory in Application Programming 13
7 Chapter 2:Max 232 IC 14
2.1 Explanation 15
8 Chapter 3:GSM Module 16
3.1 Features 17
3.2 AT Commands 18

2
Sr. no Page Title Pg .no
8 3.3 General Syntax of Extended AT Commands 21
3.4 Result code of AT commands 24
3.5 SMS tutorial 28
9 Chapter 4: Hitachi LCD display 47

4.1 Features 48
10 Chapter 5: Block diagram 50
5.1 Block diagram explanation 51
5.2.Circuit diagram 52
5.3 Circuit diagram explanation 53
5.4 Flowchart 56
5.5 Hardware used 58
5.6 Software used 60
11 References 61

.
LIST OF TABLES & FIGURES
Sr. No. Title Page No.

1.1 P89V51RB2/RC2/RD2 BLOCK DIAGRAM 7

1.2 P89V51RD2 Pin diagram 8

1.3 P89V51RD2 pin description 9

1.4 P89V51RD2 pin description 10

1.5 P89V51RD2 pin description 11

1.6 Internal and External data memory structure of 12


P89V51RD2

2.1 Max 232 IC 14

3.1 SIM 300 GSM Module 16

3.2 The screenshot of MS HyperTerminal's Connection 40


Description dialog box in Win 98

3.3 The screenshot of MS HyperTerminal's Connect To 41


dialog box in Windows 98.

3.4 The screenshot of MS HyperTerminal's Properties 43


dialog box in Windows 98.

3.5 The screenshot of MS HyperTerminal's main 44


window in Windows 98.

4.1 Hitachi LCD display 47

5.1 Block Diagram 50

5.2 Circuit diagram 52

5.3.1 7805 voltage regulator 54

5.3.2 Bridge Rectifier 55

5.4 Flowchart 56

5.5.1 89CXX test board kit 58

4
1.INTRODUCTION

India is world’s largest democracy. Fundamental right to vote or simply voting in


elections forms the basis of Indian democracy. In India all earlier elections a voter
used to cast his vote by using ballot paper. This is a longtime-consuming process and
very much prone to errors. This situation continued till election scene was completely
changed by electronic voting machine. No more ballot paper, ballot boxes, stamping
,etc .all this condensed into a simple box called ballot unit of the electronic voting
machine. Cell phone based voting machine is capable of saving considerable printing
stationery and transport of large volumes of electoral material. It is easy to transport,
store, and maintain. It completely rules out the chance of invalid votes. Its use results
reduction of polling time, resulting in fewer problems in electoral preparations, law
and order, candidates' expenditure,etc. and easy and accurate counting without any
mischief at the counting centre. The aim of our project is to design & develop a
mobile based voting machine.

This Project focuses onto implement GSM (Global System for Mobile
Communication) based Voting System. This system is implemented using an
embedded microcontroller. The embedded microcontroller used here is P89V51RD2.
Actually, the aim of the project is to implement an Automatic Voting system. GSM
Based voting machine is fully controlled system. There is no chance of any mistake.
Primarily, the system functions with the help of different technologies like the
traditional cellular network such as Global System for Mobile Communications
(GSM) and other radio frequency medium. Today GSM fitted Banks, cars;
ambulances, fleets and police vehicles are common sights. The functional units of our
projects are GSM MODEM, LCD display, P89V51RD2.

5
CHAPTER 1: INTRODUCTION TO P89V51RD2

MICROCONTROLLER

1. 1 General description

The P89V51RB2/RC2/RD2 are 80C51 microcontrollers with 16/32/64 kB Flash and


1024 bytes of data RAM. A key feature of the P89V51RB2/RC2/RD2 is its X2 mode
option. The design engineer can choose to run the application with the conventional
80C51 clock rate (12 clocks per machine cycle) or select the X2 mode (6 clocks per
machine cycle) to achieve twice the throughput at the same clock frequency. Another
way to benefit from this feature is to keep the same performance by reducing the
clock frequency by half, thus dramatically reducing the EMI. The Flash program
memory supports both parallel programming and in serial In-System Programming
(ISP). Parallel programming mode offers gang-programming at high speed, reducing
programming costs and time to market. ISP allows a device to be reprogrammed in
the end product under software control. The capability to field/update the application
firmware makes a wide range of applications possible. The P89V51RB2/RC2/RD2 is
also In-Application Programmable (IAP), allowing the Flash program memory to be
reconfigured even while the application is running.

6
1.2. Features

1. 80C51 Central Processing Unit

2. 5 V Operating voltage from 0 MHz to 40 MHz

3. 16/32/64 kB of on-chip Flash user code memory with ISP (In-System

Programming) and IAP (In-Application Programming)

4. Supports 12-clock (default) or 6-clock mode selection via software or ISP

SPI (Serial Peripheral Interface) and enhanced UART

5. PCA (Programmable Counter Array) with PWM and Capture/Compare functions

6. Four 8-bit I/O ports with three high-current Port 1 pins (16 mA each)

7. Three 16-bit timers/counters

8. Programmable watchdog timer

9. Eight interrupt sources with four priority levels

10. Second DPTR register

11. Low EMI mode (ALE inhibit)

12. TTL- and CMOS-compatible logic levels

13. DIP40, PLCC44 and TQFP 44 packages

7
1.3 Block Diagram

Figure 1.1

8
1.4. Pin diagram

Figure 1.2

9
1.5 Pin Description

Figure 1.3

10
Figure 1.4

11
Figure 1.5

12
1.6 Memory Organization

Figure 1.6

13
1.7 Flash Memory in Application programming

1.7.1. Flash Organization


The P89V51RB2/RC2/RD2 program memory consists of a 16/32/64 kB block. An In-
System Programming (ISP) capability, in a second 8 kB block, is provided to allow
the user code to be programmed in-circuit through the serial port. There are three
methods of erasing or programming of the Flash memory that may be used. First, the
Flash may be programmed or erased in the end- user application by calling low- level
routines through a common entry point (IAP). Second, the on-chip ISP boot loader
may be invoked. This ISP boot loader will, in turn, call low-level routines through the
same common entry point that can be used by the end-user application. Third, the
Flash may be programmed or erased using the parallel method by using a
commercially available EPROM programmer which supports this device .

1.7. 2 Boot Block


When the microcontroller programs its own Flash memory, all of the low level details
are handled by code that is contained in Block 1. A user program calls the common
entry point in the Block 1 with appropriate parameters to accomplish the desired
operation. Boot block operations include erase user code, program user code, program
security bits, etc. A Chip-Erase operation can be performed using a commercially
available parallel programer. This operation will erase the contents of this Boot Block
and it will be necessary for the user to reprogram this Boot Block (Block 1) with the
Philips-provided ISP/IAP code in order to use the ISP or IAP capabilities of this
device.
1.7.3 In-System Programming
In-System Programming is performed without removing the microcontroller from the
System. The In-System Programming facility consists of a series of internal hardware
resources coupled with internal firmware to facilitate remote programming of the
P89V51RB2/RC2/RD2 through the serial port. This firmware is provided by Philips
and embedded within each P89V51RB2/RC2/RD2 device. The Philips In-System
Programming facility has made in-circuit programming in an embedded application
The ISP function uses five pins (VDD, VSS, TxD, RxD, and RST). Only a small
Connector needs to be available to interface your application to an external circuit in
Order to use this feature.
14
CHAP TER 2: MAX 232 IC

Figure 2.1

15
2.1 Features

The MAX232 is an integrated circuit that converts signals from an RS-232 serial port
to signals suitable for use in TTL compatible digital logic circuits. The MAX232 is a
dual driver/receiver and typically converts the RX, TX, CTS a nd RTS signals. The
drivers provide RS- 232 voltage level outputs (approx. ± 7.5 V) from a single +5V
supply via on-chip charge pumps and external capacitors. This makes it useful for
implementing RS-232 in devices that otherwise do not need any voltages outside the 0
V to + 5 V range, as power supply design does not need to be made more complicated
just for driving the RS-232 in this case. The receivers reduce RS-232inputs (which
may be as high as ± 25 V), to standard 5 V TTL levels. These receivers ha ve atypical
threshold of 1.3 V, and a typical hysteresis of 0.5 V. The later MAX232A is
backwards compatible with the original MAX232 but may operate at higher baud
rates and can use smaller external capacitors ± 0.1 F in place of the 1.0 F capacitors
used with the original device. The newer MAX3232 is also backwards compatible,
but operates at a broader voltage range, from 3 to 5.5V.

16
CHAP TER 3: GSM MODULE

Figure 3.1

17
3.1 Features

A GSM modem is a wireless modem that works with a GSM wire less network. A
wireless modem behaves like a dial- up modem. The main difference between them is
that a dial- up modem sends and receives data through a fixed telephone line while a
wireless modem Sends and receives data through radio waves. A GSM modem ca n be
an external device or a PC Card PCMCIA Card. Typically, an external GSM modem
is connected to a computer through a serial cable or a USB cable. A GSM modem in
the form of a PC Card / PCMCIA Card is designed for use with a laptop computer. It
should be inserted into one of the PC Card /PCMCIA Card slots of a laptop computer.
Like a GSM mobile phone, a GSM modem requires a SIM card from a wireless
carrier in order to operate. As mentioned below of this SMS tutorial l computers use
AT commands to control modems. Both GSM modems and dial-up modems support a
common set of standard AT commands. You can use a GSM modem just like a dial-
up modem. In addition to the standard AT commands; GSM modems support an
extended set of AT commands. These extended AT commands are defined in the
GSM standards. With the extended AT commands, you can do things like:

1. Reading, writing and deleting SMS messages.

2. Sending SMS messages.

3. Monitoring the signal strength.

4. Monitoring the charging status and charge level of the battery.

5. Reading, writing and searching phone book entries.

The number of SMS messages that can be processed by a GSM modem per minute is

very low -- only about six to ten SMS messages per minute.

18
3.2 AT Commands

AT commands are instructions used to control a modem. AT is the abbreviation of


ATtention. Every command line starts with "AT" or "at". That's why modem
commands are called AT commands. Many of the commands that are used to control
wired dial- up modems, such as ATD (Dial), ATA (Answer), ATH (Hook control) and
ATO (Return to online data state), are also supported by GSM/GPRS modems and
mobile phones. Besides this common AT command set, GSM/GPRS modems and
mobile phones support an AT command set that is specific to the GSM technology,
which includes SMS-related commands like AT+CMGS (Send SMS message),
AT+CMSS (Send SMS message from storage), AT+CMGL (List SMS messages) and
AT+CMGR (Read SMS messages).

Note that the starting "AT" is the prefix that informs the modem about the start of a
command line. It is not part of the AT command name. For example, D is the actual
AT command name in ATD and +CMGS is the actual AT command name in
AT+CMGS. However, some books and web sites use them interchangeably as the
name of an AT command.

Here are some of the tasks that can be done using AT commands with a GSM/GPRS
modem or mobile phone:

 Get basic information about the mobile phone or GSM/GPRS modem. For
example, name of manufacturer (AT+CGMI), model number (AT+CGMM),
IMEI number (International Mobile Equipment Identity) (AT+CGSN) and
software version (AT+CGMR).

 Get basic information about the subscriber. For example, MSISDN


(AT+CNUM) and IMSI number (International Mobile Subscriber Identity)
(AT+CIMI).

 Get the current status of the mobile phone or GSM/GP RS modem. For
example, mobile phone activity status (AT+CPAS), mobile network
registration status (AT+CREG), radio signal strength (AT+CSQ), battery
charge level and battery charging status (AT+CBC).

19
 Establish a data connection or voice connection to a remote modem (ATD,
ATA, etc).

 Send and receive fax (ATD, ATA, AT+F*).

 Send (AT+CMGS, AT+CMSS), read (AT+CMGR, AT+CMGL), write


(AT+CMGW) or delete (AT+CMGD) SMS messages and obtain notifications
of newly received SMS messages (AT+CNMI).

 Read (AT+CPBR), write (AT+CPBW) or search (AT+CPBF) phonebook


entries.

 Perform security-related tasks, such as opening or closing facility locks


(AT+CLCK), checking whether a facility is locked (AT+CLCK) and changing
passwords (AT+CPWD).
(Facility lock examples: SIM lock [a password must be given to the SIM card
every time the mobile phone is switched on] and PH-SIM lock [a certain SIM
card is associated with the mobile phone. To use other SIM cards with the
mobile phone, a password must be entered.])

 Control the presentation of result codes / error messages of AT commands.


For example, you can control whether to enable certain error messages
(AT+CMEE) and whether error messages should be displayed in numeric
format or verbose format (AT+CMEE=1 or AT+CMEE=2).

 Get or change the configurations of the mobile phone or GSM/GPRS modem.


For example, change the GSM network (AT+COPS), bearer service type
(AT+CBST), radio link protocol parameters (AT+CRLP), SMS center address
(AT+CSCA) and storage of SMS messages (AT+CPMS).

 Save and restore configurations of the mobile phone or GSM/GPRS modem.


For example, save (AT+CSAS) and restore (AT+CRES) settings related to
SMS messaging such as the SMS center address.

20
Note that mobile phone manufacturers usually do not implement all AT commands,
command parameters and parameter values in their mobile phones. Also, the behavior
of the implemented AT commands may be different from that defined in the standard.
In general, GSM/GPRS modems designed for wireless applications have better
support of AT commands than ordinary mobile phones.

In addition, some AT commands require the support of mobile network operators. For
example, SMS over GPRS can be enabled on some GPRS mobile phones and GPRS
modems with the +CGSMS command (command name in text: Select Service for MO
SMS Messages). But if the mobile network operator does not support the transmission
of SMS over GPRS, you cannot use this features .There are two types of AT
commands: basic commands and extended commands.

Basic commands are AT commands that do not start with "+". For example, D (Dial),
A (Answer), H (Hook control) and O (Return to online data state) are basic
commands.

Extended commands are AT commands that start with "+". All GSM AT commands
are extended commands. For example, +CMGS (Send SMS message), +CMSS (Send
SMS message from storage), +CMGL (List SMS messages) and +CMGR (Read SMS
messages) are extended commands. [4]

21
3.3 General Syntax of Extended AT Commands

The general syntax of extended AT commands is straightforward. The syntax rules


are provided below. The syntax of basic AT commands is slightly different. We will
not cover the syntax of basic AT commands in this SMS tutorial since all SMS
messaging commands are extended AT commands.

Syntax rule 1. All command lines must start with "AT" and end with a carriage return
character. (We will use <CR> to represent a carriage return character in this SMS
tutorial.) In a terminal program like HyperTerminal of Microsoft Windows, you can
press the Enter key on the keyboard to output a carriage return character.

Example: To list all unread inbound SMS messages stored in the message storage
area, type "AT", then the extended AT command "+CMGL", and finally a carriage
return character, like this:

AT+CMGL<CR>

Syntax rule 2. A command line can contain more than one AT command. Only the
first AT command should be prefixed with "AT". AT commands in the same
command- line string should be separated with semicolons.

Example: To list all unread inbound SMS messages stored in the message storage area
and obtain the manufacturer name of the mobile device, type "AT", then the extended
AT command "+CMGL", followed by a semicolon and the next extended AT
command "+CGMI":

22
AT+CMGL;+CGMI<CR>

An error will occur if both AT commands are prefixed with "AT", like this:

AT+CMGL;AT+CGMI<CR>

Syntax rule 3. A string is enclosed between double quotes.

Example: To read all SMS messages from message storage in SMS text mode (at this
time you do not need to know what SMS text mode is. More information will be
provided later in this SMS tutorial), you need to assign the string "ALL" to the
extended AT command +CMGL, like this:

AT+CMGL="ALL"<CR>

Syntax rule 4. Information responses and result codes (including both final result
codes and unsolicited result codes) always start and end with a carriage return
character and a linefeed character.

Example: After sending the command line "AT+CGMI<CR>" to the mobile device,
the mobile device should return a response similar to this:

<CR><LF>Nokia<CR><LF>
<CR><LF>OK<CR><LF>

23
The first line is the information response of the AT command +CGMI and the second
line is the final result code. <CR> and <LF> represent a carriage return character and
a linefeed character respectively. The final result code "OK" marks the end of the
response. It indicates no more data will be sent from the mobile device to the
computer / PC.

When a terminal program such as HyperTerminal of Microsoft Windows sees a


carriage return character, it moves the cursor to the beginning of the current line.
When it sees a linefeed character, it moves the cursor to the same position on the next
line. Hence, the command line "AT+CGMI<CR>" that you entered and the
corresponding response will be displayed like this in a terminal program such as
HyperTerminal of Microsoft Windows:

AT+CGMI
Nokia

OK

3.3..1. Information Response and Final Result Code

Don't forget the meanings of information response and final result code stated above,
since you will see these two terms frequently as you go through this SMS tutorial.

AT+CGMI <-- Command line entered


Nokia <-- Information response

OK <-- Final result code [4]

24
3.4 Result codes of AT commands

Result codes are messages sent from the GSM/GPRS modem or mobile phone to
provide you information about the execution of an AT command and the occurrence
of an event. Two types of result codes are useful to you when dealing with AT
commands for SMS messaging:

 Final result codes

 Unsolicited result codes

3.4.1. Final Result Codes of AT Commands

A final result code marks the end of an AT command response. It is an indication that
the GSM/GPRS modem or mobile phone has finished the execution of a command
line. Two frequently used final result codes are OK and ERROR. Only one final result
code will be returned for each command line. Thus, you will not see both OK and
ERROR in the response of a command line.

3.4.2. The OK Final Result Code

The OK final result code indicates that a command line has been executed
successfully by the GSM/GPRS modem or mobile phone. It always starts and ends
with a carriage return character and a linefeed character.

Here is an example for illustration. Let's say you send the command line
"AT+CMGL;+CGMI<CR>" to your GSM/GPRS modem. The AT command
"+CMGL" is used to list SMS messages stored in the message storage area and the
AT command "+CGMI" is used to get the manufacturer name of the GSM/GPRS
modem. If everything works properly without any errors, the command line, together
with the response returned, should be something similar to this:

25
AT+CMGL;+CGMI<CR>
<CR><LF>+CMGL: 1,"REC
UNREAD","+85291234567",,"06/11/11,00:30:29+32"<CR><LF>
Welcome to our SMS tutorial.<CR><LF>
<CR><LF>Nokia<CR><LF>
<CR><LF>OK<CR><LF>

As mentioned earlier, when a terminal program such as HyperTerminal of Microsoft


Windows sees a carriage return character, it moves the cursor to the beginning of the
current line. When it sees a linefeed character, it moves the cursor to the same
position on the next line. Hence, the command line you entered, together with the
response returned, will be displayed like this in a terminal program such as
HyperTerminal of Microsoft Windows:

AT+CMGL;+CGMI
+CMGL: 1,"REC UNREAD","+85291234567",,"06/11/11,00:30:29+32"
Welcome to our SMS tutorial.

Nokia

OK

3.4.3. The ERROR Final Result Code

The ERROR final result code indicates that an error occurs when the GSM/GPRS
modem or mobile phone tries to execute a command line. After the occurrence of an

26
error, the GSM/GPRS modem or mobile phone will not p rocess the remaining AT
commands in the command- line string.

Below are some common causes of error:

 The syntax of the command line is incorrect.

 The value specified to a certain parameter is invalid.

 The name of the AT command is spelt incorrectly.

 The GSM/GPRS modem or mobile phone does not support one or more of the
AT commands, command parameters or parameter values in the command-
line string.

Like the OK final result code, the ERROR final result code always starts and ends
with a carriage return character and a linefeed character.

Here is an example for illustration. Suppose you want to instruct your GSM/GPRS
modem to list SMS messages from the message storage area and get the manufacturer
name of the GSM/GPRS modem. You intend to type the command line
"AT+CMGL;+CGMI<CR>" but make a careless mistake by typing "+CMFL" instead
of "+CMGL". The GSM/GPRS modem will return the ERROR final result code, as
shown below:

AT+CMFL;+CGMI<CR>
<CR><LF>ERROR<CR><LF>

As an error occurs when the GSM/GPRS modem processes "+CMFL", the


GSM/GPRS modem stops the execution of the command line and so the second AT
command "+CGMI" is not processed.

27
If you type the second AT command "+CGMI" incorrectly instead of the first AT
command "+CMGL", the GSM/GPRS modem will output the res ult of the execution
of the AT command "+CMGL" before outputting the ERROR final result code, like
this:

AT+CMGL;+CGMU<CR>
<CR><LF>+CMGL: 1,"REC
UNREAD","+85291234567",,"06/11/11,00:30:29+32"<CR><LF>
Welcome to our SMS tutorial.<CR><LF>
<CR><LF>ERROR<CR><LF>

As mentioned earlier, when a terminal program such as HyperTerminal of Microsoft


Windows sees a carriage return character, it moves the cursor to the beginning of the
current line. When it sees a linefeed character, it moves the cursor to the same
position on the next line. Hence, the command line you entered, together with the
response returned, will be displayed like this in a terminal program such as
HyperTerminal of Microsoft Windows:

AT+CMGL;+CGMU
+CMGL: 1,"REC UNREAD","+85291234567",,"06/11/11,00:30:29+32"
Welcome to our SMS tutorial.

ERROR [4]

28
3.5 SMS tutorial

In general, there are two ways to send SMS messages from a computer / PC to a
mobile phone:

1. Connect a mobile phone or GSM/GPRS modem to a computer / PC. Then use


the computer / PC and AT commands to instruct the mobile phone or
GSM/GPRS modem to send SMS messages.

2. Connect the computer / PC to the SMS center (SMSC) or SMS gateway of a


wireless carrier or SMS service provider. Then send SMS messages using a
protocol / interface supported by the SMSC or SMS gateway.

3.5.1. The 1st Way: Sending SMS Messages from a Computer Using a Mobile Phone
or GSM/GPRS Modem

The SMS specification has defined a way for a computer to send SMS messages
through a mobile phone or GSM/GPRS modem. A GSM/GPRS modem is a wireless
modem that works with GSM/GPRS wireless networks. A wireless modem is similar
to a dial-up modem. The main difference is that a wireless modem transmits data
through a wireless network whereas a dial-up modem transmits data through a copper
telephone line. Most mobile phones can be used as a wireless modem. However, some
mobile phones have certain limitations comparing to GSM/GPRS modems.

To send SMS messages, first place a valid SIM card from a wireless carrier into a
mobile phone or GSM/GPRS modem, which is then connected to a computer. There
are several ways to connect a mobile phone or GSM/GPRS modem to a computer. For
example, they can be connected through a serial cable, a USB cable, a Bluetooth link
or an infrared link. The actual way to use depends on the capability of the mobile
phone or GSM/GPRS modem. For example, if a mobile phone does not support
Bluetooth, it cannot connect to the computer through a Bluetooth link.

29
After connecting a mobile phone or GSM/GPRS modem to a computer, you can
control the mobile phone or GSM/GPRS modem by sending instructions to it. The
instructions used for controlling the mobile phone or GSM/GPRS modem are called
AT commands. (AT commands are also used to control dial- up modems for wired
telephone system.) Dial- up modems, mobile phones and GSM/GPRS modems support
a common set of standard AT commands. In addition to this common set of standard
AT commands, mobile phones and GSM/GPRS modems support an extended set of
AT commands. One use of the extended AT commands is to control the sending and
receiving of SMS messages.

The following table lists the AT commands that are related to the writing and sending
of SMS messages:

AT command Meaning

+CMGS Send message

+CMSS Send message from storage

+CMGW Write message to memory

+CMGD Delete message

+CMGC Send command

+CMMS More messages to send

One way to send AT commands to a mobile phone or GSM/GPRS modem is to use a


terminal program. A terminal program's function is like this: It sends the characters
you typed to the mobile phone or GSM/GPRS modem. It then displays the response it

30
receives from the mobile phone or GSM/GPRS modem on the screen. The terminal
program on Microsoft Windows is called HyperTerminal. Below shows a simple
example that demonstrates how to use AT commands and the HyperTerminal
program of Microsoft Windows to send an SMS text message. The lines in bold type
are the command lines that should be entered in HyperTerminal. The other lines are
responses returned from the GSM / GPRS modem or mobile phone.

AT
OK
AT+CMGF=1
OK
AT+CMGW="+85291234567"
>A simple de mo of SMS text messaging.
+CMGW: 1

OK
AT+CMSS=1
+CMSS: 20

OK

31
Here is a description of what is done in the above example:

 Line 1: "AT" is sent to the GSM / GPRS modem to test the connection. The
GSM / GPRS modem sends back the result code "OK" (line 2), which means
the connection between the HyperTerminal program and the GSM / GPRS
modem works fine.

 Line 3: The AT command +CMGF is used to instruct the GSM / GPRS


modem to operate in SMS text mode. The result code "OK" is returned (line
4), which indicates the command line "AT+CMGF=1" has been executed
successfully. If the result code "ERROR" is returned, it is likely that the GSM
/ GPRS modem does not support the SMS text mode. To confirm, type
"AT+CMGF=?" in the HyperTerminal program. If the response is "+CMGF:
(0,1)" (0=PDU mode and 1=text mode), then SMS text mode is supported. If
the response is "+CMGF: (0)", then SMS text mode is not supported.

 Line 5 and 6: The AT command +CMGW is used to write an SMS text


message to the message storage of the GSM / GPRS modem. "+85291234567"
is the recipient mobile phone number. After typing the recipient mobile phone
number, you should press the Enter button of the keyboard. The GSM / GPRS
modem will then return a prompt "> " and you can start typing the SMS text
message "A simple demo of SMS text messaging.". When finished, press
Ctrl+z of the keyboard.

 Line 7: "+CMGW: 1" tells us that the index assigned to the SMS text message
is 1. It indicates the location of the SMS text message in the message storage.

 Line 9: The result code "OK" indicates the execution of the AT command
+CMGW is successful.

 Line 10: The AT command +CMSS is used to send the SMS text message
from the message storage of the GSM / GPRS modem. "1" is the index of the
SMS text message obtained from line 7.

 Line 11: "+CMSS: 20" tells us that the reference number assigned to the SMS
text message is 20.
32
 Line 13: The result code "OK" indicates the execution of the AT command
+CMSS is successful.

To send SMS messages from an application, you have to write the source code for
connecting to and sending AT commands to the mobile phone or GSM/GPRS
modem, just like what a terminal program does. You can write the source code in C,
C++, Java, Visual Basic, Delphi or other programming languages you like. However,
writing your own code has a few disadvantages:

 You have to learn how to use AT commands.

 You have to learn how to compose the bits and bytes of an SMS message. For
example, to specify the character encoding (e.g. 7-bit encoding and 16-bit
Unicode encoding) of an SMS message, you need to know which bits in the
message header should be modified and what value should be assigned.

 Sending SMS messages with a mobile phone or GSM/GPRS modem has a


drawback -- the SMS transmission speed is low. As your SMS messaging
application becomes more popular, it has to handle a larger amount of SMS
traffic and finally the mobile phone or GSM/GPRS modem will not be able to
take the load. To obtain a high SMS transmission speed, a direct connection to
an SMSC or SMS gateway of a wireless carrier or SMS service provider is
needed. However, AT commands are not used for communicating with an
SMS center or SMS gateway. This means your have to make a big change to
your SMS messaging application in order to move from a wireless- modem-
based solution to a SMSC-based solution.

In most cases, instead of writing your own code for interacting with the mobile phone
or GSM/GPRS modem via AT commands, a better solution is to use a high- level
SMS messaging API (Application programming interface) / SDK (Software
development kit) / library. The API / SDK / library encapsulates the low- level details.
So, an SMS application developer does not need to know AT commands and the
composition of SMS messages in the bit-level. Some SMS messaging APIs / SDKs /
libraries support SMSC protocols in addition to AT commands. To move from a
wireless- modem-based SMS solution to a SMSC-based SMS solution, usually you
33
just need to modify a configuration file / property file or make a few changes to your
SMS messaging application's source code.

Another way to hide the low-level AT command layer is to place an SMS gateway
between the SMS messaging application and the mobile phone or GSM/GPRS
modem. (This has been described in the section "What is an SMS Gateway?" earlier.)
Simple protocols such as HTTP / HTTPS can then be used for sending SMS messages
in the application. If an SMSC protocol (e.g. SMPP, CIMD, etc) is used for
communicating with the SMS gateway instead of HTTP / HTTPS, an SMS messaging
API / SDK / library can be very helpful to you since it encapsulates the SMSC
protocol's details.

Usually a list of supported / unsupported mobile phones or wireless modems is


provided on the web site of an SMS messaging API / SDK / library or an SMS
gateway software package. Remember to check the list if you are going to use an
SMS messaging API / SDK / library or an SMS gateway software package.

3.5.2. Major Drawback of Sending SMS Messages through a Mobile Phone or


GSM/GPRS Modem -- Low SMS Sending Rate

Using a mobile phone or GSM/GPRS modem to send SMS messages has a major
drawback, that is the SMS sending rate is too low. Only 6-10 SMS messages can be
sent per minute (when the "SMS over GSM" mode is used). The performance is not
affected by the connection between the computer and the mobile phone or
GSM/GPRS modem (i.e. the SMS sending rate is about the same no matter the mobile
phone or GSM/GPRS modem is connected to the computer through a serial cable,
USB cable, Bluetooth link or infrared link) and does not depend on whether a mobile
phone or GSM/GPRS modem is used (i.e. the SMS sending rate is about the same no
matter a mobile phone or a GSM/GPRS modem is used). The determining factor for
the SMS sending rate is the wireless network.

34
3.5.3 How to receive SMS messages using Computer/PC ?

In general, there are three ways to receive SMS messages using your computer / PC:

1. Connect a mobile phone or GSM/GPRS modem to a computer / PC. Then use


the computer / PC and AT commands to get the received SMS messages from
the mobile phone or GSM/GPRS modem.

2. Get access to the SMS center (SMSC) or SMS gateway of a wireless c arrier.
Any SMS messages received will be forwarded to your computer / PC using a
protocol / interface supported by the SMSC or SMS gateway.

3. Get access to the SMS gateway of an SMS service provider. Any SMS
messages received will be forwarded to your computer / PC using a protocol /
interface supported by the SMS gateway.

3.5.3.1 The 1st Way: Using a Computer to Receive SMS Messages through a Mobile
Phone or GSM/GPRS Modem

Receiving SMS messages through a mobile phone or GSM/GPRS modem has a major
advantage over the other two ways -- wireless carriers usually do not charge any fees
for receiving incoming SMS messages with their SIM cards. The disadvantage of
receiving SMS messages this way is that a mobile phone or GSM/GPRS modem
cannot handle a large amount of SMS traffic. One way to overcome this is to load
balance the SMS traffic with a pool of mobile phones or GSM/GPRS modems. Each
mobile phone or GSM/GPRS modem will have its own SIM card and mobile phone
number.

In terms of programming, sending and receiving SMS messages through a mobile


phone or GSM/GPRS modem are similar. What you need to do is to send instructions
(in the form of AT commands) to the mobile phone or GSM/GPRS modem.

The following table lists the AT commands that are related to the receiving and
reading of SMS messages:

35
AT command Meaning

+CNMI New message indications

+CMGL List messages

+CMGR Read messages

+CNMA New message acknowledgement

Below shows a simple example that demonstrates how to use AT commands and the
HyperTerminal program of Microsoft Windows to read SMS text messages received
by a GSM / GPRS modem or mobile phone. The lines in bold type are the command
lines that should be entered in HyperTerminal. The other lines are responses returned
from the GSM / GPRS modem or mobile phone.

AT
OK
AT+CMGF=1
OK
AT+CMGL="ALL"
+CMGL: 1,"REC READ","+85291234567",,"06/11/11,00:30:29+32"
Hello, welcome to our SMS tutorial.
+CMGL: 2,"REC READ","+85291234567",,"06/11/11,00:32:20+32"
A simple demo of SMS text messaging.

OK

36
Here is a description of what is done in the above example:

 Line 1: "AT" is sent to the GSM / GPRS modem to test the connection. The
GSM / GPRS modem sends back the result code "OK" (line 2), which means
the connection between the HyperTerminal program and the GSM / GPRS
modem works fine.

 Line 3: The AT command +CMGF is used to instruct the GSM / GPRS


modem to operate in SMS text mode. The result code "OK" is returned (line
4), which indicates the command line "AT+CMGF=1" has been executed
successfully. If the result code "ERROR" is returned, it is likely that the GSM
/ GPRS modem does not support the SMS text mode. To confirm, type
"AT+CMGF=?" in the HyperTerminal program. If the response is "+CMGF:
(0,1)" (0=PDU mode and 1=text mode), then SMS text mode is supported. If
the response is "+CMGF: (0)", then SMS text mode is not supported.

 Line 5-9: The AT command +CMGL is used to list all SMS text messages in
the message storage of the GSM / GPRS modem. There are two SMS text
messages in the message storage: "Hello, welco me to our SMS tutorial." and
"A simple demo of SMS text messaging.". "+85291234567" is the sender
mobile phone number. "06/11/11,00:30:29+32" and "06/11/11,00:32:20+32"
tell us when the SMS text messages were received by the SMSC. "+32" is the
time zone. Note that the unit is a quarter of an hour. So, +32 means GMT+8
hours, since 32 quarters of an hour = 8 hours. "REC READ" indicates both of
the SMS text messages have been read before.

 Line 11: The result code "OK" indicates the execution of the AT command
+CMGL is successful.

To enable an application to receive SMS messages, you have to write the source code
for connecting to and sending AT commands to the mobile phone or GSM/GPRS
modem, just like what a terminal program (such as HyperTerminal of Microsoft

37
Windows) does. You can write the source code in C, C++, Java, Visual Basic, Delphi
or other programming languages you like.

However, like what we have discussed in the earlier section "The 1st Way: Sending
SMS Messages from a Computer Using a Mobile Phone or GSM/GPRS Modem",
usually a better solution is to use a high- level SMS messaging API (Application
programming interface) / SDK (Software development kit) / library instead of writing
your own code for interacting with the mobile phone or GSM/GPRS modem via AT
commands. The API / SDK / library encapsulate the low- level details. So, an SMS
application developer does not need to know AT commands and the composition of
SMS messages in the bit- level. Some SMS messaging APIs / SDKs / libraries support
SMSC protocols in addition to AT commands. To move from a wireless- modem-
based SMS solution to a SMSC-based SMS solution, usually you just need to modify
a configuration file / property file or make a few changes to your SMS messaging
application's source code.

Another high- level solution is to place an SMS gateway between the SMS messaging
application and the mobile phone or GSM/GPRS modem. The SMS messaging
application can then use simple protocols such as HTTP / HTTPS for receiving SMS
messages. If an SMSC protocol (e.g. SMPP, CIMD, etc) is used for communicating
with the SMS gateway instead of HTTP / HTTPS, an SMS messaging API / SDK /
library can be very helpful to you since it encapsulates the SMSC protocol's details.

38
3.5.4. How to Use Microsoft HyperTerminal to Send AT Commands to a Mobile
Phone or GSM/GPRS Modem?

Microsoft HyperTerminal is a small program that comes with Microsoft Windows.


You can use it to send AT commands to your mobile phone or GSM/GPRS modem. It
can be found at Start -> Programs ->Accessories -> Communications -
> HyperTerminal. If you cannot find it and you are using Windows 98, then probably
you have not installed it. You can go to Control Panel -> Add/Remove Programs -
>Windows Setup tab -> Communications list box item -> Details button to install MS
HyperTerminal.

Before you start programming your SMS application, you may want to check if your
mobile phone, GSM/GPRS modem and SIM card are working properly first. The MS
HyperTerminal is a handy tool when it comes to testing your GSM devices. It is a
good idea to test your GSM devices beforehand. When a problem occurs, sometimes
it is difficult to tell what causes the problem. The cause can be your program, the
GSM device or the SIM card. If you test your GSM device and SIM card with MS
HyperTerminal and they operate properly, then it is very likely that t he problem is
caused by your program.

For Linux users, minicom can be used instead of HyperTerminal.

39
3.5.6. The Procedure for Sending AT Commands to a Mobile Phone or GSM/GPRS
Modem Using MS HyperTerminal

To use MS HyperTerminal to send AT commands to your mobile phone or


GSM/GPRS modem, you can follow the procedure below:

1. Put a valid SIM card into the mobile phone or GSM/GPRS modem. You can
obtain a SIM card by subscribing to the GSM service of a wireless network
operator.

2. Connect your mobile phone or GSM/GPRS modem to a computer and set up


the corresponding wireless modem driver. You should find the wireless
modem driver in the CD or disk that was provided by the manufacturer. If the
manufacturer does not provide such CD or disk with your mobile pho ne or
GSM/GPRS modem, you can go to the manufacturer's web site and see
whether the wireless modem driver can be downloaded there. If the wireless
modem driver cannot be found on the web site, you can still use Windows'
standard modem driver.

3. Run MS HyperTerminal by selecting Start -> Programs -> Accessories -


> Communications ->HyperTerminal.

4. In the Connection Description dialog box, enter a name and choose an icon
you like for the connection. Then click the OK button.

40
Figure 3.2

5. In the Connect To dialog box, choose the COM port that your mobile phone or
GSM/GPRS modem is connecting to in the Connect using combo box. For
example, choose COM1 if your mobile phone or GSM/GPRS modem is
connecting to the COM1 port. Then click the OK button.

(Sometimes there will have more than one COM port in the Connect
using combo box. To know which COM port is used by your mobile phone or
GSM/GPRS modem, follow the procedure below:

In Windows 98:
Go to Control Panel -> Modem. Then click the Diagnostics tab. In the list box,
you can see which COM port the mobile phone or GSM/GPRS modem is
connected to.

In Windows 2000 and Windows XP:


Go to Control Panel -> Phone and Modem Options. Then click
the Modems tab. In the list box, you can see which COM port the mobile
phone or GSM/GPRS modem is connected to.)
41
.

Figure 3.3

6. The Properties dialog box comes out. Enter the correct port settings for your
mobile phone or GSM/GPRS modem. Then click the OK button.

(To find the correct port settings that should be used with your mobile phone
or GSM/GPRS modem, one way is to consult the manual of your mobile
phone or GSM/GPRS modem. Another way is to check the port settings used
by the wireless modem driver that you installed earlier.

To check the port settings used by the wireless modem driver on Windows 98,
follow these steps:
a. Go to Control Panel -> Modem.
b. Select your mobile phone or GSM/GPRS modem in the list box.
c. Click the Properties button.
d. The Properties dialog box appears. The Maximum speeds field on
the General tab corresponds to HyperTerminal's Bits per second field. Click
the Connection tab and you can find the settings for data bits, parity and stop

42
bits. Click the Advanced button and you can find the setting for flow control.

To check the port settings used by the wireless modem driver on Windows
2000 and Windows XP, follow these steps:
a. Go to Control Panel -> Phone and Modem Options -> Modems tab.
b. Select your mobile phone or GSM/GPRS modem in the list box.
c. Click the Properties button.
d. The Properties dialog box appears. Click the Advanced tab and then click
the Change Default Preferences button.
e. The Change Default Preferences dialog box appears. The Port speed field
on the General tab corresponds to HyperTerminal's Bits per second field. You
can also find the setting for flow control on the General tab. On
the Advanced tab, you can find the settings for data bits, parity and stop bits.)

43
Figure 3.4

7. Type "AT" in the main window. A response "OK" should be returned from the
mobile phone or GSM/GPRS modem.
Type "AT+CPIN?" in the main window. The AT command "AT+CPIN?" is
used to query whether the mobile phone or GSM/GPRS modem is waiting for
a PIN (personal identification number, i.e. password). If the response is
"+CPIN: READY", it means the SIM card does not require a PIN and it is
ready for use. If your SIM card requires a PIN, you need to set the PIN with
the AT command "AT+CPIN=<PIN>".

44
Figure 3.5

If you get the responses above, your mobile phone or GSM/GPRS modem is wo rking
properly. You can start typing your own AT commands to control the mobile phone
or GSM/GPRS modem.

45
3.5 Checking if the GSM/GPRS Modem or Mobile Phone Supports the Use of AT
Commands to Send, Receive and Read SMS Messages

After testing the communication between the PC and GSM/GPRS modem/mobile


phone, the next thing that you may want to do is to check if the GSM/GPRS modem
or mobile phone supports the use of AT commands to send, receive and read SMS
messages. Most GSM/GPRS modems support all three functions. However, only
some mobile phones support all of them.

Sending SMS Messages

To find out whether a GSM/GPRS modem or mobile phone supports the sending of
SMS messages through AT commands, you have to:

1. Use the AT command +CSMS (command name in text: Select Message


Service) to check whether mobile-originated SMS messages are supported.

2. Perform test operations to check whether +CMGS (command name in text:


Send Message) and/or +CMSS (command name in text: Send Message from
Storage) are supported.
(You may want to check the AT commands +CMGW [command name in text:
Write Message to Memory] and +CMGD [command name in text: Delete
Message] in addition as they are sometimes used together with +CMSS.)

46
Receiving SMS Messages and Reading SMS Messages from Message Storage

To find out whether a GSM/GPRS modem or mobile phone supports the receiving
and reading of SMS messages through AT commands, you have to:

1. Use the AT command +CSMS (command name in text: Select Message


Service) to check whether mobile-terminated SMS messages are supported.

2. Perform test operations to check whether +CNMI (command name in text:


New Message Indications to TE), +CMGL (command name in text: List
Messages) and/or +CMGR (command name in text: Read Message) are
supported.

If the GSM/GPRS modem or mobile phone supports the +CNMI AT command, it can
send a notification or directly forward the message to the PC whenever a new SMS
message arrives.

If the GSM/GPRS modem or mobile phone does not support +CNMI but supports
+CMGL and/or +CMGR, the PC has to poll the GSM/GPRS modem or mobile phone
repeatedly in order to know if any new SMS messages have arrived. [4]

47
CHAP TER 4: HITACHI LCD DISPLAY

Figure 4.1

48
4.1 Features

An HD44780 Character LCD is a de facto industry standard liquid crystal display


(LCD) display device designed for interfacing with embedded systems. These screens
come in a variety of configurations including 8x1, which is one row of eight
characters, 16x2, and 20x4. The most commonly manufactured configuration is 40x4
characters, which requires two individually addressable HD44780 controllers with
expansion chips as the HD44780 can only address up to 80 characters. These LCD
screens are limited to text only and are often used in copiers, fax machines, laser
printers, industrial test equipment, networking equipment such as routers and storage
devices..Character LCDs use a standard 14-pin interface and those with backlights
have 16 pins. The pin outs are as follows:

1. Ground

2. VCC (+3.3 to +5V)

3. Contrast adjustment (VO)

4. Register Select (RS). RS=0: Command, RS=1: Data

5. Read/Write (R/W). R/W=0: Write, R/W=1: Read

6. Clock (Enable). Falling edge triggered

7. Bit 0 (Not used in 4-bit operation)

8. Bit 1 (Not used in 4-bit operation)

9. Bit 2 (Not used in 4-bit operation)

10. Bit 3 (Not used in 4-bit operation)

11. Bit 4

12. Bit 5

13. Bit 6
49
14. Bit 7

15. Backlight Anode (+)

16. Backlight Cathode (-)

Character LCDs can operate in 4-bit or 8-bit mode. In 4 bit mode, pins 7 through 10
are unused and the entire byte is sent to the screen using pins 11 through 14 by
sending 4-bits (nibble) at a time.

50
CHAP TER 5: BLOCK DIAGRAM

Figure 5.1

51
5.1 Block diagram explanation

5.1.1 Working of Block Diagram

A mobile interfaced to P89V51RD2 microcontroller .The user has his


password stored in front of his id number in the memory of µc. The User has to send
his voting information via sms to the mobile interfaced to the microcontroller. The µc
will consider a vote if the password of a person matches to his election id. When a
vote gets approved it gets locked and the user account will be expired. The mobile
interfaced to the µc will send an acknowledgment message when the vote is granted;
if something goes wrong then µc will send a negative acknowledgment message via
sms to the user.

If the password of the person is entered in the same order, there will be a positive vote
given to the candidate to which the voter is voting. If the password is in the reverse
manner, there will be a negative voting against the candidate voted. This is done in
order to reduce the risk of forcible voting.

The factor of negative voting is kept to be 1/3 rd i.e 1/3 rd vote will be subtracted
from the candidate’s vote to compensate the cheating. This factor is determined after a
lot of probability work done so that no one can determine the winner just on the basis
of negative voting. This cannot help in judging the output of the election.

Thus we can completely rely on the system.

52
5.2. Circuit diagram

Figure 15

Figure 5.2

53
5.3 Circuit diagram explanation

Here port 2 is connected to the lcd to display data from the microcontroller to the lcd.
The virtual terminal is used to send and receive data via serial port and is used instead
of a GSM module.

The HEX file of the program is loaded into the controller and the clock frequency and
baud rates of all the devices are adjusted so that they work in synchronization.

Some pins of port 0 are used to give the write and latching commands to the lcd.

54
5.3.1 POWER SUPPLY

7805 VOLTAGE REGULATOR The 78xx (also sometimes known as LM78xx)


series of devices is a family of self-contained fixed linear voltage regulator integrated
circuits. The 78xx family is a very popular choice for many electronic circuits which
require a regulated power supply, due to their ease of use and relative cheapness.
When specifying individual ICs within this family, the xx is replaced with a two-digit
number, which indicates the output voltage the particular device is designed to
provide (for example, the 7805 has a 5 volt output, while the 7812 produces 12 volts).
The 78xx line are positive voltage regulators, meaning that they are designed to
produce a voltage that is positive relative to a common ground. There is a related line
of 79xx devices which are complementary negative voltage regulators. 78xx and 79xx
ICs can be used in combination to provide both positive and negative supply voltages
in the same circuit, if necessary.78xx ICs have three terminals and are most
commonly found in the TO220 form factor, although smaller surface- mount and
larger TO3 packages are also available from some manufacturers. These devices
typically support an input voltage which can be anywhere from a couple of volts over
the intended output voltage, up to a maximum of 35 or 40 volts, and can typically
provide up to around 1 or 1.5 amps of current (though smaller or larger packages may
have a lower or higher current rating).

Figure 5.3.1

55
5.3.2 BRIDGE RECTIFIER

A diode bridge is an arrangement of four diodes in a bridge configura tion that


provides the same polarity of output for either polarity of input. When used in its most
common application, for conversion of an alternating current (AC) input into direct
current a (DC) output, it is known as a bridge rectifier. A bridge rectifier provides
full-wave rectification from a two-wire AC input, resulting in lower cost and weight
as compared to a rectifier with a 3-wire input from a transformer with a center-tapped
secondary winding.

Figure 5.3.2

56
5.4. Flowchart

57
Figure 5.4

58
5.5 Hardware used

5.5.1 89Cxx test board kit

Figure 5.5.1

59
5.5.1 List of components

QTY ON PCB Component’s

1 CON 1A 5 8/2 WAY DC TERMINAL

CON 1C DC SOCKET [OPTIONAL]

2 CON 2, 3 3 PIN RELIMATE CONNECTOR

4 CON 4, 5, 6, 7 10 PIN FRC/MALE BOX TYPE

4 CON 8, 9, 10, 11 10 PIN RELIMATE CONNECTOR

2 CON12, 14 2 PIN RELIMATE CONNECTOR

2 C 1, 5 33Pf DISC CAPACITOR

5 C 2, 7, 8, 9, 10 10uf / 50V ELECTROLYTIC CAPACITOR

1 C3 100uf / 16V ELECTROLYTIC CAPACITOR

1 C4 1000uf / 25V ELECTROLYTIC CAPACITOR

1 DC1 0.1uf BOX CAPACITOR

1 D1 W04 RECTIFIER BRIDGE

1 ON / OFF SPDT PCB MOUNT SLIDE SWITCH

1 P1 9 PIN D'CONNECTOR FEMALE RIGHT ANGLE

1 RESET 4 PIN TACTILE/ MICRO SWITCH

3 R1, 3, 4 4K7/ 9PIN RESISTOR ARRAY

1 R2 8K2/ 1/4W RESISTOR

1 U1 7805 VOLTAGE REGULATOR IC

1 U2* 40 PIN IC SOCKET

1 U3 IC MAX232 IC

1 U3* 16 PIN IC SOCKET

1 U4* 20 PIN IC SOCKET


[5 ]
1 Y1 11.0592 MHz CRYSTAL
60
5.6 Software used

5.6.1 Keil uvision 4.0

Keil Software is used provide you with software development tools for 8051 based
microcontrollers. With the Keil tools, you can generate embedded applications for
virtually every 8051 derivative. The supported microcontrollers are listed in the μ-
vision

5.6.2 Proteus Professional V7.6

Proteus is software for microprocessor simulation, schematic capture, and printed


circuit board (PCB) design. It is developed by Labcenter Electronics.

The XGameStation Micro Edition was designed using Labcenter's Proteus schematic
entry and PCB layout tools.

5.6.2.1 System components

ISIS Sche matic Capture - a tool for entering designs.

PROSPICE Mixed mode SPICE simulation - industry standard SPICE3F5


simulator combined with a digital simulator.

ARES PCB Layout - PCB design system with automatic component placer, rip-up
and retry auto-router and interactive design rule checking.

VSM - Virtual System Modelling lets cosimulate embedded software for popular
micro-controllers alongside hardware design.

System Benefits Integrated package with common user interface and fully context
sensitive help [3]

61
11. REFERENCES

Sr. No. Name Type

1 http://www.embedtronics.com Website

2 http://www.edaboard.com Website

3 http://www.wikipedia.org Website

4 http://www.developershome.com Website

5 http://www.8051projects.net Website

62
PROGRAM
#include<reg51.h>
#include<string.h>

xdata unsigned char cmti[50];//store message and other details in external memory
unsigned char mem[5];//storing index of message

unsigned char message[9];//storing full message


xdata unsigned char phno[20];
xdata unsigned char id[3],pwd[3],cand[3],revpwd[3],msg[5],pid[5],b;
xdata unsigned char gsm_cmd3[15]="AT+CMGR=";
xdata unsigned char gsm_cmd4[15]="AT+CMGD=";

xdata unsigned char gsm_cmd5[30]="AT+CMSS=1,";


xdata unsigned char person1[]="01ab";
xdata unsigned char person2[]="02cd";
xdata unsigned char person3[]="03ef";
xdata unsigned char person4[]="04gh";
xdata unsigned char person5[]="05ij";
xdata unsigned char gsm_cmd6[30]="AT+CMSS=2,";
unsigned int total=0;
unsigned char c1,c2,c3,a;//count for how much vote each candidate has got
unsigned int l;
signed int j,k;

sbit LCD_D7=P2^7;
sbit LCD_rs=P0^0;
sbit LCD_rw=P0^1;
sbit LCD_en=P0^2;
//prototype declaration

void init();
63
void serialtx(unsigned char);
void trans(unsigned char *);
char serialrx(void);
void acquire(void);
void extract(void);
void gsminit(void);
void phone(void);
void seperations(void);
void LCD_delay(unsigned char);
void LCD_init(void);
void LCD_set(void);
void LCD_sendcommand(unsigned char);
void LCD_senddata(unsigned char);
void LCD_sendstring(unsigned char *);
void winner(void);

void gsminit(void)
{unsigned char gsm_cmd1[]="AT";
unsigned char gsm_cmd2[]="AT+CMGF=1";

trans("\r\n");// \r-enter,\n-new line


trans(gsm_cmd1);//gsm to mc
trans("\r\n");
trans(gsm_cmd2);
trans("\r\n");
}

void init()
{ P0=0x00;//baud rate setting
P1=0x00;
TMOD=0X20;
TH1=0XFD;
SCON=0X50;
64
TR1=1;
}

void serialtx(unsigned char x)


{
SBUF=x;
while(TI==0);
TI=0;
}

void trans(unsigned char * x)


{
while(*x!='\0')//whnever space is encountered stop serial tx
{
serialtx(*x);
x++;
}
}

char serialrx(void)
{

while(RI==0);
RI=0;
return(SBUF);
}

void acquire(void)
{
unsigned char i=0;
65
while(SBUF!='\r')//store indication of msg
{

while(RI==0);
cmti[i]=SBUF;
i++;
RI=0;

}
cmti[i]='\0';
}

void extract(void)
{

unsigned char i=0;


unsigned char j=0;

while(cmti[i]!=',')//after encountering " ," store the details after it,i.e the index
{
i++;
}
i++;
while(cmti[i]!='\0')
{

mem[j]=cmti[i];
i++;
j++;
}

mem[--j]='\0';
}
66
void getit() // 01ab02 is stored in msg variable

{ unsigned char i;
i=0;
do
{
while(RI==0);
cmti[i]=SBUF;//ph.no and extra details are saved in cmti
i++;
RI=0;
}
while(SBUF!=0x0D);
cmti[--i]='\0';
i=0;
do
{

while(RI==0);
message[i]=SBUF;
i++;
RI=0;

}
while(SBUF!=0X0D);
message[--i]='\0';
}

void phone(void)
{
unsigned char i=0,j=0;
while(cmti[i]!=',')
{
67
i++;
}
i++;
while(cmti[i]!=',')
{
phno[j]=cmti[i];//ph.no is b/w 2 commas ,extract it
i++;
j++;
}
phno[--i]='\0';
}
void seperations(void)
{ unsigned int i;
for(i=0;i<2;i++)
{
id[i]=message[i];
pwd[i]=message[i+2];
cand[i]=message[i+4];
}
id[i]='\0';
pwd[i]='\0';
cand[i]='\0';
for(i=0;i<2;i++)
revpwd[1- i]=pwd[i];
revpwd[i]='\0';

strcpy(pid,id);
strcat(pid,revpwd);
strcpy(msg,id);
strcat(msg,pwd);
a=10*id[0]+id[1];
}
68
void LCD_delay(unsigned char val) //A simple for loop for delay of 5ms
{
unsigned char i,j,k;
i = val;
for (i=0;i<val;i++)
for(j=0;j<100;j++)
for(k=0;k<100;k++);
}

void LCD_init()
{
LCD_delay(4); //Wait for LCD startup

P2=0x38; //Function set: 2 Line, 8-bit, 5x7 dots


LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in instruction register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD startup

P2=0x38; //Function set: 2 Line, 8-bit, 5x7 dots


LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in instruction register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD startup

P2=0x38; //Function set: 2 Line, 8-bit, 5x7 dots


LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in instruction register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command
69
}
void LCD_set()
{
P2=0x38; //Function set: 2 Line, 8-bit, 5x7 dots
LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in data register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command

P2=0x08; //Display off, Cursor off


LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in data register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command

P2=0x01; //Clear LCD


LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in data register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command

P2=0x06; //Entry mode, auto increment with no shift


LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in data register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command

P2=0x0C; //Display on, Cursor off


LCD_rs=0; //Selected command register
70
LCD_rw=0; //We are writing in data register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command

P2=0x80; //Select line 1


LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in data register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command
}
void LCD_sendcommand(unsigned char var)
{
P2=var; //Function set: 2 Line, 8-bit, 5x7 dots
LCD_rs=0; //Selected command register
LCD_rw=0; //We are writing in instruction register
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command
}

void LCD_senddata(unsigned char var)


{
P2=var; //Function set: 2 Line, 8-bit, 5x7 dots
LCD_rs=1; //Selected data register
LCD_rw=0; //We are writing
LCD_en=1; //Enable H->L
LCD_en=0;
LCD_delay(1); //Wait for LCD to process the command
}

void LCD_sendstring(unsigned char *var)


71
{
while(*var) //till string ends
LCD_senddata(*var++); //send characters one by one
}

void winner(void)
{
j=c1-c2;
k=c3-c2;
if(j>0)
{
j=c1-c3;
if(j>0)
{
l=c1/3;
LCD_sendcommand(0xC0);
LCD_sendstring("WINNER=CAND1");
}
else
{
l=c3/3;
LCD_sendcommand(0xC0);
LCD_sendstring("WINNER=CAND3");
}
}

if(k<0)
{
l=c2/3;
LCD_sendcommand(0xC0);
LCD_sendstring("WINNER=CAND2");
}
else
72
{
l=c3/3;
LCD_sendcommand(0xC0);
LCD_sendstring("WINNER=CAND3");
}
}

void main()
{
init();
gsminit();
LCD_init();
LCD_set();
while(1)
{
while(serialrx()!='C');
while(serialrx()!='M');
while(serialrx()!='T');
while(serialrx()!='I');

acquire();

trans("\r\n");
// trans(cmti);
// trans("\r\n");
extract();
// trans(mem);
// trans("\r\n");
trans(gsm_cmd3);
trans(mem);
trans("\r\n");
getit();
// trans("\r\n");
73
// trans(message);
// trans("\r\n");
phone();
// trans(phno);
// trans("\r\n");
trans(gsm_cmd4);
trans(mem);
trans("\r\n");
seperations();
// trans(id);
// trans("\r\n");
// trans(pwd);
// trans("\r\n");
// trans(cand);
// trans("\r\n");
// trans(msg);
// trans("\r\n");
// trans(pid);
// trans("\r\n");
// trans(gsm_cmd5);
// trans(phno);
// trans("\r\n");
// trans(gsm_cmd6);
// trans(phno);
// trans("\r\n");

switch(id[1])
{case'1':
{if(strcmp(msg,person1)==0)
{ if(strcmp(cand,"01")==0)
74
{c1++;c1++;c1++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2++;c2++;c2++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3++;c3++;c3++;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else if(strcmp(pid,person1)==0)
{ if(strcmp(cand,"01")==0)
{c1--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2--;
trans(gsm_cmd5);
trans(phno);
total++;
75
}

else if(strcmp(cand,"03")==0)
{c3--;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else
{
trans(gsm_cmd6);
trans(phno);
}
break;
}
case'2':
{if(strcmp(msg,person2)==0)
{ if(strcmp(cand,"01")==0)
{c1++;c1++;c1++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2++;c2++;c2++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
76
{c3++;c3++;c3++;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else if(strcmp(pid,person2)==0)
{ if(strcmp(cand,"01")==0)
{c1--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3--;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else
{
trans(gsm_cmd6);
trans(phno);
}
77
break;
}
case'3':
{if(strcmp(msg,person3)==0)
{ if(strcmp(cand,"01")==0)
{c1++;c1++;c1++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2++;c2++;c2++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3++;c3++;c3++;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else if(strcmp(pid,person3)==0)
{ if(strcmp(cand,"01")==0)
{c1--;
trans(gsm_cmd5);
trans(phno);
total++;
}

78
else if(strcmp(cand,"02")==0)
{c2--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3--;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else
{
trans(gsm_cmd6);
trans(phno);
}
break;
}
case'4':
{if(strcmp(msg,person4)==0)
{ if(strcmp(cand,"01")==0)
{c1++;c1++;c1++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2++;c2++;c2++;
trans(gsm_cmd5);
79
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3++;c3++;c3++;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else if(strcmp(pid,person4)==0)
{ if(strcmp(cand,"01")==0)
{c1--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3--;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
80
else
{
trans(gsm_cmd6);
trans(phno);
}
break;
}

case'5':
{
if(strcmp(msg,person5)==0)
{ if(strcmp(cand,"01")==0)
{c1++;c1++;c1++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2++;c2++;c2++;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3++;c3++;c3++;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else if(strcmp(pid,person5)==0)
81
{ if(strcmp(cand,"01")==0)
{c1--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"02")==0)
{c2--;
trans(gsm_cmd5);
trans(phno);
total++;
}

else if(strcmp(cand,"03")==0)
{c3--;
trans(gsm_cmd5);
trans(phno);
total++;
}
}
else
{
trans(gsm_cmd6);
trans(phno);
}
break;
}

default: {
{
trans(gsm_cmd6);
trans(phno);
82
}
break;
}
}
for(b=0;b<10;b++)
{ LCD_sendstring(" hi ");
LCD_sendcommand(0xC0);
LCD_sendstring(" hello ");
}
winner();
}
}

83

You might also like