Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A Project Report
On
EMBEDDED SYSTEMS
AND DTMF BASED WIRELESS CAR
I hereby declare that the project work on Embedded Systems is an authentic record of my
own work carried out at ATECH, CHANDIGARH(sec24) as requirements of six weeks project
term for the award of degree of B.E. (Electronics & Communication Engineering), Thapar
University, Patiala, under the guidance of Mr. VIKRAM , Project In Charge ATECH during
08-June to 20-July, 2009.
ACKNOWLEDGEMENT
First and foremost I would like to thank Mr. Vikram, ADVANCE TECHNOLOGIES,
CHANDIGARH, who was also our supervisor, for his consistent guidance on each and every
step of our project.
Without his push and direction, this project would have not been completed. His continuous
support and motivation made this project possible.
Id also like to thank our teachers in Thapar Universty who helped me in understanding the
basics of this course . Without their support I would not have been able to excel in my project.
Lastly, Id like to thanks all my friends and teammates for believing me in me and my
capabilities.
Gurjyot Singh
10706034
Thapar University, Patiala.
TABLE OF CONTENTS
Introduction............................................................................................04
Embedded Systems.................................................................................05
Types Of Microcontrollers.....................................................................06
Harvard Architecture.............................................................................
Types of Memory....................................................................................
Addressing Modes...................................................................................
Timers......................................................................................................
Interrupts................................................................................................
Project Description.................................................................................27
INTRODUCTION
A digital computer typically consists of three major components: the Central Processing
Unit(CPU), program and data memory, and an Input/Output (I/O) system. The CPU controls
the flow of information among the components of the computer. It also processes the data by
performing digital operations. Most of the processing is done in the Arithmetic-Logic Unit
(ALU)within the CPU. When the CPU of a computer is built on a single printed circuit board,
the computer is called a minicomputer. A microprocessor is a CPU that is compacted into a
single-chip semiconductor device. Microprocessors are general-purpose devices, suitable for
many applications. A computer built around a microprocessor is called a microcomputer. The
choice of I/O and memory devices of a microcomputer depends on the specific application. For
example, most personal computers contain a keyboard and monitor as standard input and
output devices.
A microcontroller is an entire computer manufactured on a single chip. Microcontrollers are
usually dedicated devices embedded within an application. For example, microcontrollers are
used as engine controllers in automobiles and as exposure and focus controllers in cameras. In
order to serve these applications, they have a high concentration of on-chip facilities such as
serial ports, parallel input output ports, timers, counters, interrupt control, analog-to-digital
converters, random access memory, read only memory, etc. The I/O, memory, and on-chip
peripherals of a microcontroller are selected depending on the specifics of the target
application. Since microcontrollers are powerful digital processors, the degree of control and
programmability they provide significantly enhances the effectiveness of the application.
EMBEDDED SYSTEMS
Characteristic
1. Embedded systems are not always standalone devices. Many embedded systems consist
of small, computerized parts within a larger device that serves a more general purpose.
For example, the Gibson Robot Guitar features an embedded system for tuning the
strings, but the overall purpose of the Robot Guitar is, of course, to play music.[5]
Similarly, an embedded system in an automobile provides a specific function as a
subsystem of the car itself.
2. The program instructions written for embedded systems are referred to as firmware, and
are stored in read-only memory or Flash memory chips. They run with limited computer
hardware resources: little memory, small or non-existent keyboard and/or screen.
TYPES OF MICROCONTROLLERS
The predominant family of microcontrollers are 8-bit types since this word size has proved
popular for the vast majority of tasks the devices have been required to perform. The
microcontroller family would have a common instruction subset but family members differ in
the amount, and type, of memory, timer facility, port options, etc. possessed, thus producing
cost-effective devices suitable for particular manufacturing requirements.
There are 4 major 8 bit micro controllers. They are Freescale's 6811, Intel's 8051, Zilog's Z8
and PIC 16x from Microchip Technology. Each of these Microcontrollers have a unique set of
instruction set and register set; therefore they are not compatible with each other.
8051 MICROCONTROLLER
The 8051 is the first microcontroller of the MCS-51 family introduced by Intel Corporation at
the end of the 1970s. The 8051 family with its many enhanced members enjoys the largest
market share, estimated to be about 40%, among the various microcontroller architectures. The
architecture of the 8051 family of microcontrollers is referred to as the MCS-51 architecture, or
sometimes simply as MCS-51. The microcontrollers have an 8-bit data bus. They are capable of
addressing 64K of program memory and a separate 64K of data memory. The 8051 has 4K of
code memory implemented as on-chip Read Only Memory (ROM). The 8051 has 128 bytes of
internal Random Access Memory (RAM). It has two timer/counters, a serial port, 4 general
purpose parallel input/output ports, and interrupt control logic with five sources of interrupts.
Besides internal RAM, the 8051 has various Special Function Registers (SFR), which are the
control and data registers for on-chip facilities
The Harvard architecture is a computer architecture with physically separate storage and signal
pathways for instructions and data. In a Harvard architecture, there is no need to make the two
memories share characteristics. In particular, the word width, timing, implementation
technology, and memory address structure can differ. In some systems, instructions can be
stored in read-only memory while data memory generally requires read-write memory. In some
systems, there is much more instruction memory than data memory so instruction addresses are
wider than data addresses. The Modified Harvard architecture is very much like the Harvard
architecture but provides a pathway between the instruction memory and the CPU that allows
words from the instruction memory to be treated as read-only data. This allows constant data,
particularly text strings, to be accessed without first having to be copied into data memory, thus
preserving more data memory for read/write variables. Special machine language instructions
are provided to read data from the instruction memory. This is by contrast with a Von Neumann
architecture computer, in which both instructions and data are stored in the same memory
system and (without the complexity of a cache) must be accessed in turn. Microcontrollers
(complete computers on a single chip) may use the Modified Harvard architecture for the
reasons it was first developed, which are to improve memory access speeds with moderate
complexity and to allow the instruction and data memory systems to be implemented
independently of each other.
Complex instruction set computer (CISC, pronounced like "sisk") is a computer instruction
set architecture (ISA) in which each instruction can execute several low-level operations, such
as a load from memory, an arithmetic operation, and a memory store, all in a single instruction.
The term was retroactively coined in contrast to reduced instruction set computer (RISC).
The acronym RISC (pronounced as risk), for reduced instruction set computer, represents a
CPU design strategy emphasizing the insight that simplified instructions that "do less" may still
provide for higher performance if this simplicity can be utilized to make instructions execute
very quickly.
For any given level of general performance, a RISC chip will typically have far fewer
transistors dedicated to the core logic which originally allowed designers to increase the size of
the register set and increase internal parallelism.
Other features, which are typically found in RISC architectures are:
Uniform instruction format, using a single word with the opcode in the same bit
positions in every instruction, demanding less decoding;
Identical general purpose registers, allowing any register to be used in any context,
simplifying compiler design (although normally there are separate floating point
registers);
Simple addressing modes. Complex addressing performed via sequences of arithmetic
and/or load-store operations;
Few data types in hardware, some CISCs have byte string instructions, or support
complex numbers; this is so far unlikely to be found on a RISC.
Exceptions abound, of course, within both CISC and RISC.
RISC designs are also more likely to feature a Harvard memory model, where the instruction
stream and the data stream are conceptually separated; this means that modifying the memory
where code is held might not have any effect on the instructions executed by the processor
(because the CPU has a separate instruction and data cache), at least until a special
synchronization instruction is issued. On the upside, this allows both caches to be accessed
simultaneously, which can often improve performance.
8051 ARCHITECTURE
The Intel 8051 is an 8-bit microcontroller which means that most available operations are
limited to 8 bits.
Some of the features that have made the 8051 popular are:
8-bit data bus
16-bit address bus
32 general purpose registers each of 8 bits
16 bit timers (usually 2, but may have more, or less).
3 internal and 2 external interrupts.
Bit as well as byte addressable RAM area of 16 bytes.
Four 8-bit ports, (short models have two 8-bit ports).
16-bit program counter and data pointer
REGISTERS
The Accumulator
The Accumulator, as its name suggests, is used as a general register to accumulate the results of
a large number of instructions. It can hold an 8-bit (1-byte) value and is the most versatile
register the 8051 has due to the shear number of instructions that make use of the accumulator.
More than half of the 8051s 255 instructions manipulate or use the accumulator in some way.
The "R" registers
The "R" registers are a set of eight registers that are named R0, R1, etc. up to and including
R7.These registers are used as auxillary registers in many operations.
The "B" Register
The "B" register is very similar to the Accumulator in the sense that it may hold an 8-bit (1-
byte) value.The "B" register is only used by two 8051 instructions: MUL AB and DIV AB.
Thus, if you want to quickly and easily multiply or divide A by another number, you may store
the other number in "B" and make use of these two instructions.Aside from the MUL and DIV
instructions, the "B" register is often used as yet another temporary storage register much like a
ninth "R" register.
The Data Pointer (DPTR)
The Data Pointer (DPTR) is the 8051s only user-accessable 16-bit (2-byte) register. The
Accumulator, "R" registers, and "B" register are all 1-byte values.
DPTR, as the name suggests, is used to point to data. It is used by a number of commands
which allow the 8051 to access external memory. When the 8051 accesses external memory it
will access external memory at the address indicated by DPTR.
The Program Counter (PC)
The Program Counter (PC) is a 2-byte address which tells the 8051 where the next instruction
to execute is found in memory. When the 8051 is initialized PC always starts at 0000h and is
incremented each time an instruction is executed. It is important to note that PC isnt always
incremented by one. Since some instructions require 2 or 3 bytes the PC will be incremented by
2 or 3 in these cases.The Program Counter is special in that there is no way to directly modify
its value.
The Stack Pointer (SP)
The Stack Pointer, like all registers except DPTR and PC, may hold an 8-bit (1-byte) value. The
Stack Pointer is used to indicate where the next value to be removed from the stack should be
taken from.
When you push a value onto the stack, the 8051 first increments the value of SP and then stores
the value at the resulting memory location.When you pop a value off the stack, the 8051 returns
the value from the memory location indicated by SP, and then decrements the value of SP.
This order of operation is important. When the 8051 is initialized SP will be initialized to 07h.
If you immediately push a value onto the stack, the value will be stored in Internal RAM
address 08h. This makes sense taking into account what was mentioned two paragraphs above:
First the 8051 will increment the value of SP (from 07h to 08h) and then will store the pushed
value at that memory address (08h).
A
B
R0
DPTR DPH DPL
R1
R2 PC PC
R3
R4 Some 8051 16-bit Register
R5
R6
R7
TL0/TH0 (Timer 0 Low/High, Addresses 8Ah/8Ch): These two SFRs, taken together, represent
timer 0. Their exact behavior depends on how the timer is configured in the TMOD SFR;
however, these timers always count up. What is configurable is how and when they increment
in value.
TL1/TH1 (Timer 1 Low/High, Addresses 8Bh/8Dh): These two SFRs, taken together, represent
timer 1. Their exact behavior depends on how the timer is configured in the TMOD SFR;
however, these timers always count up. What is configurable is how and when they increment
in value.
SCON (Serial Control, Addresses 98h, Bit-Addressable):
The Serial Control SFR is used to configure the behavior of the 8051's on-board serial port.
This SFR controls the baud rate of the serial port, whether the serial port is activated to receive
data, and also contains flags that are set when a byte is successfully sent or received..
The 8051 has three very general types of memory. To effectively program the 8051 it is
necessary to have a basic understanding of these memory types.
The memory types are illustrated in the following graphic. They are: On-Chip Memory,
External Code Memory, and External RAM.
On-Chip Memory refers to any memory (Code, RAM, or other) that physically exists on the
microcontroller itself. On-chip memory can be of several types, but we'll get into that shortly.
External Code Memory is code (or program) memory that resides off-chip. This is often in the
form of an external EPROM.
External RAM is RAM memory that resides off-chip. This is often in the form of standard
static RAM or flash RAM.
ADDRESSING MODES
An "addressing mode" refers to how you are addressing a given memory location. In summary,
the addressing modes are as follows, with an example of each:
Immediate addressing
Immediate addressing is so-named because the value to be stored in memory immediately
follows the operation code in memory. That is to say, the instruction itself dictates what value
will be stored in memory.
For example, the instruction:
MOV A,#20h
This instruction uses Immediate Addressing because the Accumulator will be loaded with the
value that immediately follows; in this case 20 (hexidecimal).Immediate addressing is very fast
since the value to be loaded is included in the instruction. However, since the value to be
loaded is fixed at compile-time it is not very flexible.
Direct Addressing
Direct addressing is so-named because the value to be stored in memory is obtained by directly
retrieving it from another memory location. For example:
MOV A,30h
This instruction will read the data out of Internal RAM address 30 (hexidecimal) and store it in
the Accumulator.
Direct addressing is generally fast since, although the value to be loaded isnt included in the
instruction, it is quickly accessable since it is stored in the 8051s Internal RAM. It is also much
more flexible than Immediate Addressing since the value to be loaded is whatever is found at
the given address--which may be variable.
Also, it is important to note that when using direct addressing any instruction which refers to an
address between 00h and 7Fh is referring to Internal Memory. Any instruction which refers to
an address between 80h and FFh is referring to the SFR control registers that control the 8051
microcontroller itself.
Register addressing
The register banks, containing registers R0 through R7, can be accessed by certain instructions
which carry a 3-bit register specification within the opcode of the instruction. Instructions that
access the registers this way are code efficient, since this mode eliminates an address byte.
When the instruction is executed, one of the eight registers in the selected bank is accessed.
One of four banks is selected at execution time by the two bank select bits in the PSW.
Indexed addressing
Used in accessing data elements of look up table entries located in the program ROM space of
8051
eg. MOVC A@A+DPTR
TIMERS
The 8051 comes equipped with two timers, both of which may be controlled, set, read, and
configured individually. The 8051 timers have three general functions: 1) Keeping time and/or
calculating the amount of time between events, 2) Counting the events themselves, or 3)
Generating baud rates for the serial port.
As mentioned before, the 8051 has two timers which each function essentially the same way.
One timer is TIMER0 and the other is TIMER1. The two timers share two SFRs (TMOD and
TCON) which control the timers, and each timer also has two SFRs dedicated solely to itself
(TH0/TL0 and TH1/TL1).
INTERRUPTS
As the name implies, an interrupt is some event which interrupts normal program execution.
As stated earlier, program flow is always sequential, being altered only by those instructions
which expressly cause program flow to deviate in some way. However, interrupts give us a
mechanism to "put on hold" the normal program flow, execute a subroutine, and then resume
normal program flow as if we had never left it. This subroutine, called an interrupt handler, is
only executed when a certain event (interrupt) occurs. The event may be one of the timers
"overflowing," receiving a character via the serial port, transmitting a character via the serial
port, or one of two "external events." The 8051 may be configured so that when any of these
events occur the main program is temporarily suspended and control passed to a special section
of code which presumably would execute some function related to the event that occured. Once
complete, control would be returned to the original program. The main program never even
knows it was interrupted.
The ability to interrupt normal program execution when certain events occur makes it much
easier and much more efficient to handle certain conditions. If it were not for interrupts we
would have to manually check in our main program whether the timers had overflown, whether
we had received another character via the serial port, or if some external event had occured.
Besides making the main program ugly and hard to read, such a situation would make our
program inefficient since wed be burning precious "instruction cycles" checking for events that
usually dont happen.
We can configure the 8051 so that any of the following events will cause an interrupt:
Timer 0 Overflow.
Timer 1 Overflow.
Reception/Transmission of Serial Character.
External Event 0.
External Event 1.
In other words, we can configure the 8051 so that when Timer 0 Overflows or when a character
is sent/received, the appropriate interrupt handler routines are called.
Polling Sequence
The 8051 automatically evaluates whether an interrupt should occur after every instruction.
When checking for interrupt conditions, it checks them in the following order:
External 0 Interrupt
Timer 0 Interrupt
External 1 Interrupt
Timer 1 Interrupt
Serial Interrupt
This means that if a Serial Interrupt occurs at the exact same instant that an External 0 Interrupt
occurs, the External 0 Interrupt will be executed first and the Serial Interrupt will be executed
once the External 0 Interrupt has completed.
One of the 8051s many powerful features is its integrated UART, otherwise known as a serial
port. The fact that the 8051 has an integrated serial port means that you may very easily read
and write values to the serial port. If it were not for the integrated serial port, writing a byte to a
serial line would be a rather tedious process requring turning on and off one of the I/O lines in
rapid succession to properly "clock out" each individual bit, including start bits, stop bits, and
parity bits.
However, we do not have to do this. Instead, we simply need to configure the serial ports
operation mode and baud rate. Once configured, all we have to do is write to an SFR to write a
value to the serial port or read the same SFR to read a value from the serial port. The 8051 will
automatically let us know when it has finished sending the character we wrote and will also let
us know whenever it has received a byte so that we can process it. We do not have to worry
about transmission at the bit level--which saves us quite a bit of coding and processing time
The first thing we must do when using the 8051s integrated serial port is, obviously, configure
it. This lets us tell the 8051 how many data bits we want, the baud rate we will be using, and
how the baud rate will be determined.
First, lets present the "Serial Control" (SCON) SFR and define what each bit of the SFR
represents:
PROJECT DESCRIPTION
INTRODUCTION
I have attempted to make a DTMF BASED WIRELESS ROBOT. It is a basically a wireless
car which will be run with the help of signals given through a cellphone. A cellphone will be
attached to the robot (car) with its earphones plugged into the dtmf circuit. When a person will
call on that cellphone ,he can operate the car by pressing keys on his own cellphone. Each key
will execute different command like moving forwards,backwards, sideways etc. Thus a
wireless car which requires very little investment and is reliable can be made with the help of
DTMF circuit.
PROJECT METHODOLOGY
Components:
1. Microcontroller Section: At89S51 with base
Crystal oscillator(11.0592 Mhz)
Capacitor(30 pf)
Capacitor(10 uF)
Resistor(8.2 K)
2. DTMF Section :MT8870 with base
Crystal oscillator(3.5 Mhz)
2 resistors (100K)
Capacitor(100nf)
3. H bridge IC (L293D)
4. Voltage regulators(LM7805)
5. Car (driven by 2 DC motors)
6. Voltage supply (DC battery of 6 v)
Softwares used:
1. Keil compiler
2. Proteus (Simulation software)
Equipments Used:
Soldering iron, flux,wire
Circuit Diagram
DTMF Section
STEP 1:Circuit Diagram of the project is designed and finalized (given above)
STEP 2: All the components and software platform (also mentioned above) are selected.
STEP 3: All the hardware components are soldered on the general circuit board.
STEP 4: The program/code of the project is written in C language and compiled using keil
compiler
STEP 5: The hex code of the program is burnt into the flash code memory of the
microcontroller
STEP 6: Testing is done at various levels to finalize the project
DTMF Decoder
Dual-tone multi-frequency (DTMF) signaling is used for telecommunication signaling over
analog telephone lines in the voice-frequency band between telephone handsets and other
communications devices and the switching center. DTMF, also known as touch-tone, are the
audible sounds you hear when you press keys on your phone. It was designed for optimal
performance with each tone being very distinct. This makes decoding the tone very easy even
in surrounding noise. It is this performance that makes DTMF ideal for clear transmission and
reception in remote control (wireless or through phone lines) applications.
The H-Bridge arrangement is generally used to reverse the polarity of the motor, but can also
be used to 'brake' the motor, where the motor comes to a sudden stop, as the motor's terminals
are shorted, or to let the motor 'free run' to a stop, as the motor is effectively disconnected from
the circuit. The following table summarises operation.
The L293D is a quadruple half H-bridge bidirectional motor driver IC that can drive current of
up to 600mA with voltage range of 4.5 to 36 volts. It is suitable to drive small DC-Geared
motors, bipolar stepper motor etc.
PIN DIAGRAM OF L293D