Professional Documents
Culture Documents
BY
ROHAN.S.GAVANKAR (0713085)
RONAK.P.KAMDAR (0713087)
SHASHANK.S.KATKAR (0713094)
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
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
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.
5.4 Flowchart 56
4
1.INTRODUCTION
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
6
1.2. Features
6. Four 8-bit I/O ports with three high-current Port 1 pins (16 mA each)
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
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:
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
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 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).
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
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>
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.
AT+CGMI
Nokia
OK
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.
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:
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.
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>
AT+CMGL;+CGMI
+CMGL: 1,"REC UNREAD","+85291234567",,"06/11/11,00:30:29+32"
Welcome to our SMS tutorial.
Nokia
OK
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.
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>
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>
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:
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
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 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 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.
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.
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:
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.
The following table lists the AT commands that are related to the receiving and
reading of SMS messages:
35
AT command Meaning
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 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?
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.
39
3.5.6. The Procedure for Sending AT Commands to a Mobile Phone or GSM/GPRS
Modem Using MS HyperTerminal
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.
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.
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
To find out whether a GSM/GPRS modem or mobile phone supports the sending of
SMS messages through AT commands, you have to:
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:
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
1. Ground
11. Bit 4
12. Bit 5
13. Bit 6
49
14. Bit 7
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
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.
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
Figure 5.3.1
55
5.3.2 BRIDGE RECTIFIER
Figure 5.3.2
56
5.4. Flowchart
57
Figure 5.4
58
5.5 Hardware used
Figure 5.5.1
59
5.5.1 List of components
1 U3 IC MAX232 IC
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
The XGameStation Micro Edition was designed using Labcenter's Proteus schematic
entry and PCB layout tools.
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
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
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";
void init()
{ P0=0x00;//baud rate setting
P1=0x00;
TMOD=0X20;
TH1=0XFD;
SCON=0X50;
64
TR1=1;
}
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)
{
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
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