You are on page 1of 101

REAL TIME PATIENT MONITORING SYSTEM USING CAN CONTROLLER

Automation of Industries, Automation of home appliances has been rapidly developing these
days. The concept of automation was implemented to the Hospitals also. Automation plays an
important role in monitoring the patient’s status.

Nowadays, the average lifespan has increased, due to the improvement of medical care, resulting
in an increase of the disabled population. Also, due to social development, the number of
disabilities as a result of various diseased or due to accidents is increasing. So the needs for a
rehabilitation system to assist patients in developing their physical, mental, social ability and
independence increased. And it is common that rehabilitation patients’ vital signs are not
monitored during physical therapy in a rehabilitation center.
The purpose of this study is to develop a monitoring system that can monitor heart rates of
rehabilitation patients’ who are taking physical therapy inside a rehabilitation center so that it
gives physical therapist early warning if necessary.
This system transmits the patient's heart rate to the (Central Monitoring System) CMS’s PC
through wireless communication. Therefore, patients are not restricted in their movements
during treatment.
The whole system consists of the patient’s side device (PSD) and central monitoring
system (CMS). The PSD was designed to be wearable and low power consumption. The CMS
was designed to monitor multiple patients simultaneously and generate a warning signal if
necessary. The CMS and PSDs are linked by a wireless network using Control Area Network
(CAN) protocol.

The PSD consists of a contact-type microphone to detect patient's heart sound, a signal
processing hardware for signal conditioning of heart sound and calculating heart rate. The PSB’s
connected using CAN protocol for serial communication uses radio-frequency (RF) transmitter
and receiver module to communicate with the CMS periodically.
A small foot-print microcontroller with a built-in analog-to-digital converter (ADC) and low-
power consumption was incorporated in the PSD. The heart sound signal captured by the
contact-type microphone is filtered by a band pass filter and amplified to the level which
corresponds to a full-scale input voltage range of the ADC built-in a microcontroller. The CMS
was designed to monitor multiple patients simultaneously and generate a warning signal if
necessary.
It consists of an RF transmitter and receiver module to communicate with all PSDs
periodically through serial communication and a Microsoft Windows- based personal computer
(PC). The heart rate information for each patient are collected by an RF module and transferred
to monitoring software in the PC that displays the heart rates for all patients and generates
warning signal if the heart rate is out of pre-defined range.

INTRODUCTION TO EMBEDDED SYSTEM

An embedded system is a special-purpose computer system designed to perform one or a few


dedicated functions, sometimes with real-time computing constraints. It is usually embedded as
part of a complete device including hardware and mechanical parts. In contrast, a general-
purpose computer, such as a personal computer, can do many different tasks depending on
programming. Embedded systems have become very important today as they control many of the
common devices we use.

Since the embedded system is dedicated to specific tasks, design engineers can optimize
it, reducing the size and cost of the product, or increasing the reliability and performance. Some
embedded systems are mass-produced, benefiting from economies of scale.

Physically, embedded systems range from portable devices such as digital watches and
MP3 players, to large stationary installations like traffic lights, factory controllers, or the systems
controlling nuclear power plants. Complexity varies from low, with a single microcontroller
chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or
enclosure.

In general, "embedded system" is not an exactly defined term, as many systems have
some element of programmability. For example, Handheld computers share some elements with
embedded systems — such as the operating systems and microprocessors which power them —
but are not truly embedded systems, because they allow different applications to be loaded and
peripherals to be connected.

An embedded system is some combination of computer hardware and software, either


fixed in capability or programmable, that is specifically designed for a particular kind of
application device. Industrial machines, automobiles, medical equipment, cameras, household
appliances, airplanes, vending machines, and toys (as well as the more obvious cellular phone
and PDA) are among the myriad possible hosts of an embedded system. Embedded systems that
are programmable are provided with a programming interface, and embedded systems
programming is a specialized occupation.

Certain operating systems or language platforms are tailored for the embedded market,
such as Embedded Java and Windows XP Embedded. However, some low-end consumer
products use very inexpensive microprocessors and limited storage, with the application and
operating system both part of a single program. The program is written permanently into the
system's memory in this case, rather than being loaded into RAM (random access memory), as
programs on a personal computer are.

APPLICATIONS OF EMBEDDED SYSTEM

We are living in the Embedded World. You are surrounded with many embedded
products and your daily life largely depends on the proper functioning of these gadgets.
Television, Radio, CD player of your living room, Washing Machine or Microwave Oven in
your kitchen, Card readers, Access Controllers, Palm devices of your work space enable you to
do many of your tasks very effectively. Apart from all these, many controllers embedded in your
car take care of car operations between the bumpers and most of the times you tend to ignore all
these controllers.
In recent days, you are showered with variety of information about these embedded
controllers in many places. All kinds of magazines and journals regularly dish out details about
latest technologies, new devices; fast applications which make you believe that your basic
survival is controlled by these embedded products. Now you can agree to the fact that these
embedded products have successfully invaded into our world. You must be wondering about
these embedded controllers or systems. What is this Embedded System?

The computer you use to compose your mails, or create a document or analyze the
database is known as the standard desktop computer. These desktop computers are manufactured
to serve many purposes and applications.

You need to install the relevant software to get the required processing facility. So, these
desktop computers can do many things. In contrast, embedded controllers carryout a specific
work for which they are designed. Most of the time, engineers design these embedded controllers
with a specific goal in mind. So these controllers cannot be used in any other place.

Theoretically, an embedded controller is a combination of a piece of microprocessor based


hardware and the suitable software to undertake a specific task.

These days designers have many choices in microprocessors/microcontrollers. Especially,


in 8 bit and 32 bit, the available variety really may overwhelm even an experienced designer.
Selecting a right microprocessor may turn out as a most difficult first step and it is getting
complicated as new devices continue to pop-up very often.

In the 8 bit segment, the most popular and used architecture is Intel's 8031. Market
acceptance of this particular family has driven many semiconductor manufacturers to develop
something new based on this particular architecture. Even after 25 years of existence,
semiconductor manufacturers still come out with some kind of device using this 8031 core.

 Military and aerospace software applications


From in-orbit embedded systems to jumbo jets to vital battlefield networks, designers of
mission-critical aerospace and defense systems requiring real-time performance, scalability, and
high-availability facilities consistently turn to the LynxOS® RTOS and the LynxOS-178 RTOS
for software certification to DO-178B.

Rich in system resources and networking services, LynxOS provides an off-the-shelf


software platform with hard real-time response backed by powerful distributed computing
(CORBA), high reliability, software certification, and long-term support options.

The LynxOS-178 RTOS for software certification, based on the RTCA DO-178B standard,
assists developers in gaining certification for their mission- and safety-critical systems. Real-time
systems programmers get a boost with LynuxWorks' DO-178B RTOS training courses.

LynxOS-178 is the first DO-178B and EUROCAE/ED-12B certifiable, POSIX®-compatible


RTOS solution.

 Communications applications

"Five-nines" availability, CompactPCI hot swap support, and hard real-time response—
LynxOS delivers on these key requirements and more for today's carrier-class systems. Scalable
kernel configurations, distributed computing capabilities, integrated communications stacks, and
fault-management facilities make LynxOS the ideal choice for companies looking for a single
operating system for all embedded telecommunications applications—from complex central
controllers to simple line/trunk cards.

LynuxWorks Jumpstart for Communications package enables OEMs to rapidly develop


mission-critical communications equipment, with pre-integrated, state-of-the-art, data
networking and porting software components—including source code for easy customization.

The Lynx Certifiable Stack (LCS) is a secure TCP/IP protocol stack designed especially for
applications where standards certification is required.

 Electronics applications and consumer devices


As the number of powerful embedded processors in consumer devices continues to rise, the
BlueCat® Linux® operating system provides a highly reliable and royalty-free option for
systems designers.

And as the wireless appliance revolution rolls on, web-enabled navigation systems, radios,
personal communication devices, phones and PDAs all benefit from the cost-effective
dependability, proven stability and full product life-cycle support opportunities associated with
BlueCat embedded Linux. BlueCat has teamed up with industry leaders to make it easier to build
Linux mobile phones with Java integration.

For makers of low-cost consumer electronic devices who wish to integrate the LynxOS real-
time operating system into their products, we offer special MSRP-based pricing to reduce royalty
fees to a negligible portion of the device's MSRP.

 Industrial automation and process control software

Designers of industrial and process control systems know from experience that LynuxWorks
operating systems provide the security and reliability that their industrial applications require.

From ISO 9001 certification to fault-tolerance, POSIX conformance, secure partitioning and
high availability, we've got it all. Take advantage of our 20 years of experience.

MICROCONTROLLER VERSUS MICROPROCESSOR

What is the difference between a Microprocessor and Microcontroller? By


microprocessor is meant the general purpose Microprocessors such as Intel's X86 family (8086,
80286, 80386, 80486, and the Pentium) or Motorola's 680X0 family (68000, 68010, 68020,
68030, 68040, etc). These microprocessors contain no RAM, no ROM, and no I/O ports on the
chip itself. For this reason, they are commonly referred to as general-purpose Microprocessors.
A system designer using a general-purpose microprocessor such as the Pentium or the
68040 must add RAM, ROM, I/O ports, and timers externally to make them functional. Although
the addition of external RAM, ROM, and I/O ports makes these systems bulkier and much more
expensive, they have the advantage of versatility such that the designer can decide on the amount
of RAM, ROM and I/O ports needed to fit the task at hand. This is not the case with
Microcontrollers.

A Microcontroller has a CPU (a microprocessor) in addition to a fixed amount of RAM,


ROM, I/O ports, and a timer all on a single chip. In other words, the processor, the RAM, ROM,
I/O ports and the timer are all embedded together on one chip; therefore, the designer cannot add
any external memory, I/O ports, or timer to it. The fixed amount of on-chip ROM, RAM, and
number of I/O ports in Microcontrollers makes them ideal for many applications in which cost
and space are critical.

In many applications, for example a TV remote control, there is no need for the
computing power of a 486 or even an 8086 microprocessor. These applications most often
require some I/O operations to read signals and turn on and off certain bits.
MICROCONTROLLERS FOR EMBEDDED SYSTEMS

In the Literature discussing microprocessors, we often see the term Embedded System.
Microprocessors and Microcontrollers are widely used in embedded system products. An
embedded system product uses a microprocessor (or Microcontroller) to do one task only. A
printer is an example of embedded system since the processor inside it performs one task only;
namely getting the data and printing it. Contrast this with a Pentium based PC. A PC can be used
for any number of applications such as word processor, print-server, bank teller terminal, Video
game, network server, or Internet terminal. Software for a variety of applications can be loaded
and run. Of course the reason a pc can perform myriad tasks is that it has RAM memory and an
operating system that loads the application software into RAM memory and lets the CPU run it.

In an Embedded system, there is only one application software that is typically burned
into ROM. An x86 PC contains or is connected to various embedded products such as keyboard,
printer, modem, disk controller, sound card, CD-ROM drives, mouse, and so on. Each one of
these peripherals has a Microcontroller inside it that performs only one task. For example, inside
every mouse there is a Microcontroller to perform the task of finding the mouse position and
sending it to the PC. Table 1-1 lists some embedded products.
BLOCK DIAGRAM:

PSD1

POWER
SUPPLY LCD

MICROCONTROLLER
TEMP A
SENSOR
D

HUMIDITY C CAN BUS


SENSOR
PSD2

POWER
SUPPLY LCD

MICROCONTROLLER
TEMP
A
SENSOR
D
CAN BUS
C
HUMIDITY
SENSOR

A ZIGBEE

RECEIVER:

ZIGBEE MAX23 D
PC
2 B

C
BLOCK DIAGRAM EXPLINATION

In the above block diagram we can see the block of can, MICRO CONTROLLER, SENSORS
and POWER SUPPLY.

Let us discuses about each block in detail.

POWER SUPPLY

A variable regulated power supply, also called a variable bench power supply, is one where you
can continuously adjust the output voltage to your requirements. Varying the output of the power
supply is the recommended way to test a project after having double checked parts placement
against circuit drawings and the parts placement guide. This type of regulation is ideal for having
a simple variable bench power supply. Actually this is quite important because one of the first
projects a hobbyist should undertake is the construction of a variable regulated power supply.

While a dedicated supply is quite handy e.g. 5V or 12V, it's much handier to have a
variable supply on hand, especially for testing. Most digital logic circuits and processors need a 5
volt power supply. To use these parts we need to build a regulated 5 volt source. Usually you
start with an unregulated power supply ranging from 9 volts to 24 volts DC (A 12 volt power
supply is included with the Beginner Kit and the Microcontroller Beginner Kit.). To make a 5
volt power supply, we use a LM7805 voltage regulator IC.

The LM7805 is simple to use. You simply connect the positive lead of your unregulated
DC power supply (anything from 9VDC to 24VDC) to the Input pin, connect the negative lead to
the Common pin and then when you turn on the power, you get a 5 volt supply from the Output
pin.

SENSORS:

A sensor is a device that measures a physical quantity and converts it into a signal which can be
read by an observer or by an instrument. For example, a mercury-in-glass thermometer converts
the measured temperature into expansion and contraction of a liquid which can be read on a
calibrated glass tube. A thermocouple converts temperature to an output voltage which can be
read by a voltmeter. For accuracy, most sensors are calibrated against known standards.

CAN:

Controller–area network (CAN or CAN-bus) is a vehicle bus standard designed to allow


microcontrollers and devices to communicate with each other within a vehicle without a host
computer.

CAN is a message based protocol, designed specifically for automotive applications but now also
used in other areas such as industrial automation and medical equipment.

Development of the CAN-bus started originally in 1983 at Robert Bosch GmbH.[1] The protocol
was officially released in 1986 at the Society of Automotive Engineers (SAE) congress in
Detroit, Michigan. The first CAN controller chips, produced by Intel and Philips, came on the
market in 1987. Bosch published the CAN 2.0 specification in 1991.

MAX- 232

To allow compatibility among data communication equipment made by various


manufactures, an interfacing standard called RS232 was set by the Electronic Industries
Association (EIA).This RS-232 standard is used in PCs and numerous types of equipment
.However, since the standard was set long before the advent of the TTL logic family, its input
and output voltage levels are not TTL compatible. In RS-232 ,a 1 is represented by -3 to
-25V,while a 0 bit is +3 to +25V,making -3 to +3 undefined. For this reason, to connect any RS-
232 to a microcontroller system we must use voltage converters such as MAX232 to convert the
TTL logic levels to the RS-232 voltage levels and vice versa.

So here we are using this MAX-232 to have compatibility between the zigbee and
microcontroller.
ZIGBEE:

ZigBee is a specification for a suite of high level communication protocols using small,
low-power digital radios based on the IEEE 802.15.4-2003 standard for Low-Rate Wireless
Personal Area Networks (LR-WPANs), such as wireless light switches with lamps, electrical
meters with in-home-displays, consumer electronics equipment via short-range radio needing
low rates of data transfer. The technology defined by the ZigBee specification is intended to be
simpler and less expensive than other WPANs, such as Bluetooth. ZigBee is targeted at radio-
frequency (RF) applications that require a low data rate, long battery life, and secure networking
SCHEMATIC:
HARD WARE COMPONENTS EXPLANATION:

Power supply

The power supplies are designed to convert high voltage AC mains electricity to a
suitable low voltage supply for electronics circuits and other devices. A power supply can by
broken down into a series of blocks, each of which performs a particular function. A d.c power
supply which maintains the output voltage constant irrespective of a.c mains fluctuations or load
variations is known as “Regulated D.C Power Supply”

Transformer:
A transformer is an electrical device which is used to convert electrical power from one

electrical circuit to another without change in frequency.

Transformers convert AC electricity from one voltage to another with little loss of power.
Transformers work only with AC and this is one of the reasons why mains electricity is AC.
Step-up transformers increase in output voltage, step-down transformers decrease in output
voltage. Most power supplies use a step-down transformer to reduce the dangerously high mains
voltage to a safer low voltage. The input coil is called the primary and the output coil is called
the secondary. There is no electrical connection between the two coils; instead they are linked by
an alternating magnetic field created in the soft-iron core of the transformer. The two lines in the
middle of the circuit symbol represent the core. Transformers waste very little power so the
power out is (almost) equal to the power in. Note that as voltage is stepped down current is
stepped up. The ratio of the number of turns on each coil, called the turn’s ratio, determines the
ratio of the voltages. A step-down transformer has a large number of turns on its primary (input)
coil which is connected to the high voltage mains supply, and a small number of turns on its
secondary (output) coil to give a low output voltage.
RECTIFIER:

A circuit which is used to convert a.c to dc is known as RECTIFIER. The process of


conversion a.c to d.c is called “rectification”

TYPES OF RECTIFIERS:

• Half wave Rectifier


• Full wave rectifier
1. Centre tap full wave rectifier.

2. Bridge type full bridge rectifier.

Full-wave Rectifier:

From the above comparison we came to know that full wave bridge rectifier as more
advantages than the other two rectifiers. So, in our project we are using full wave bridge rectifier
circuit.

Bridge Rectifier: A bridge rectifier makes use of four diodes in a bridge arrangement to achieve
full-wave rectification. This is a widely used configuration, both with individual diodes wired as
shown and with single component bridges where the diode bridge is wiredinternally.
Filter:

A Filter is a device which removes the a.c component of rectifier output

but allows the d.c component to reach the load

Capacitor Filter:

We have seen that the ripple content in the rectified output of half wave rectifier is 121%
or that of full-wave or bridge rectifier or bridge rectifier is 48% such high percentages of ripples
is not acceptable for most of the applications. Ripples can be removed by one of the following
methods of filtering.

(a) A capacitor, in parallel to the load, provides an easier by –pass for the ripples voltage though
it due to low impedance. At ripple frequency and leave the d.c.to appears the load.

(b) An inductor, in series with the load, prevents the passage of the ripple current (due to high
impedance at ripple frequency) while allowing the d.c (due to low resistance to d.c)

(c) various combinations of capacitor and inductor, such as L-section filter section filter,
multiple section filter etc. which make use of both the properties mentioned in (a) and (b) above.
Two cases of capacitor filter, one applied on half wave rectifier and another with full wave
rectifier.

Filtering is performed by a large value electrolytic capacitor connected across the DC


supply to act as a reservoir, supplying current to the output when the varying DC voltage from
the rectifier is falling. The capacitor charges quickly near the peak of the varying DC, and then
discharges as it supplies current to the output. Filtering significantly increases the average DC
voltage to almost the peak value (1.4 × RMS value).

Regulator:

Voltage regulator ICs is available with fixed (typically 5, 12 and 15V) or variable output
voltages. The maximum current they can pass also rates them. Negative voltage regulators are
available, mainly for use in dual supplies. Most regulators include some automatic protection
from excessive current ('overload protection') and overheating ('thermal protection'). Many of
the fixed voltage regulator ICs have 3 leads and look like power transistors, such as the 7805
+5V 1A regulator shown on the right. The LM7805 is simple to use. You simply connect the
positive lead of your unregulated DC power supply (anything from 9VDC to 24VDC) to the
Input pin, connect the negative lead to the Common pin and then when you turn on the power,
you get a 5 volt supply from the output pin.

78XX:

The Bay Linear LM78XX is integrated linear positive regulator with three terminals. The
LM78XX offer several fixed output voltages making them useful in wide range of applications.
When used as a zener diode/resistor combination replacement, the LM78XX usually results in an
effective output impedance improvement of two orders of magnitude, lower quiescent current.
The LM78XX is available in the TO-252, TO-220 & TO-263packages,
Features:

• Output Current of 1.5A

• Output Voltage Tolerance of 5%

• Internal thermal overload protection

• Internal Short-Circuit Limited

• No External Component

• Output Voltage 5.0V, 6V, 8V, 9V, 10V,12V, 15V, 18V, 24V

• Offer in plastic TO-252, TO-220 & TO-263

• Direct Replacement for LM78XX


MICROCONTROLLER

INTRODUCTION:

A Micro controller consists of a powerful CPU tightly coupled with


memory RAM, ROM or EPROM), various I / O features such as Serial ports,
Parallel Ports, Timer/Counters, Interrupt Controller, Data Acquisition
interfaces-Analog to Digital Converter (ADC), Digital to Analog Converter
(ADC), everything integrated onto a single Silicon Chip.

It does not mean that any micro controller should have all the above said
features on chip, Depending on the need and area of application for which it is
designed, The ON-CHIP features present in it may or may not include all the
individual section said above.

Any microcomputer system requires memory to store a sequence of


instructions making up a program, parallel port or serial port for communicating
with an external system, timer / counter for control purposes like generating time
delays, Baud rate for the serial port, apart from the controlling unit called the
Central Processing Unit.
INTRODUCTION TO 8051MICROCONTROLLER

In 1981,Intel corporation introduced an 8 bit microcontroller called the


8051.This microcontroller had 128 bytes of RAM,4K bytes of on-chip ROM, two
timers, one serial port and 4 ports(each 8-bits wide)all on single chip. At that time it
was also referred to as a “system on a chip”.

INTRODUCTION TO ATMEL MICROCONTROLLER

The major Features of 8-bit Micro controller ATMEL 89C51:

• 8 Bit CPU optimized for control applications


• Extensive Boolean processing (Single - bit Logic) Capabilities.
• On - Chip Flash Program Memory
• On - Chip Data RAM
• Bi-directional and Individually Addressable I/O Lines
• Multiple 16-Bit Timer/Counters
• Full Duplex UART
• Multiple Source / Vector / Priority Interrupt Structure
• On - Chip Oscillator and Clock circuitry.
• On - Chip EEPROM
• One Serial communication port
Block Diagram

ON-
CHIP

EXTERNAL

INTERRUPTS
TIMER COUNTER
1
INPUTS
TIMER
0
ON-CHIP
ON-CHIP
INTERRUP
T FLASH

CPU

OSC BUS 4 I/O SERIL


PORTS
CONTROL PORT

PO P2 P1 P3 TXD RXD
Fig.1 Oscillator Connection.

The P89C51 provides the following standard features: 4K bytes of Flash, 128
bytes of RAM, 32 I/O lines, two 16-bit timer/counters, five vector two-level interrupt
architecture, a full duplex serial port, and on-chip oscillator and clock circuitry. In
addition, the P89C51 is designed with static logic for operation down to zero
frequency and supports two software selectable power saving modes. The Idle Mode
stops the CPU while allowing the RAM, timer/counters, serial port and interrupt
system to continue functioning. The Power-down Mode saves the RAM contents but
freezes the oscillator disabling all other chip functions until the next hardware reset.

Memory Organization

Program Memory

Below Fig shows a map of the lower part of the program memory. After
reset, the CPU begins execution from location 0000H. As shown in fig.4, each
interrupt is assigned a fixed location in program memory. The interrupt causes the
CPU to jump to that location, where it executes the service routine. External
Interrupt 0, for example, is assigned to location 0003H. If External Interrupt 0 is
used, its service routine must begin at location 0003H. If the interrupt is not used,
its service location is available as general purpose.
(0033)
H

002BH

0023H

INTERRUPT 001BH
LOCATION 8 bytes
S
0013H

RESE
T
000BH

Program Memory.
0003H
Program memory addresses are always 16 bits wide, even though the actual
amount o program memory used may be less than 64Kbytes. External program
0000H
execution sacrifices two of the 8-bit ports, P0 and P2, to the function of addressing
the program memory.

Data Memory

The right half of Figure 3 shows the internal and external data memory
spaces available on Philips Flash microcontrollers. Fig.6 shows a hardware
configuration for accessing up to 2K bytes of external RAM. In this case, the CPU
executes from internal flash. Port0 serves as a multiplexed address/data bus to the
RAM, and 3 lines of Port 2 are used to page the RAM. The CPU generates RD and WR
signals as needed during external RAM accesses. You can assign up to 64K bytes of
external data memory. External data memory addresses can be either 1 or 2bytes
wide.

Internal data memory addresses are always 1 byte wide, which implies an
address space of only 256bytes. However, the addressing modes for internal RAM
can infact accommodate 384 bytes. Direct addresses higher than 7FH access one
memory space and indirect addresses higher than 7FH access a different memory
space. Thus, Figure.7 shows the Upper 128 and SFR space occupying the same
block of addresses, 80H through FFH, although they are physically separate entities.
The lowest 32 bytes are grouped into 4 banks of 8 registers. Program instructions
call out these registers as R0 through R7.

The next 16 bytes above the register banks form a block of bit-addressable
memory space. The microcontroller instruction set includes a wide selection of
single-bit instructions, and these instructions can directly address the 128 bits in
this area. These bit addresses are 00H through 7FH. All of the bytes in the Lower
128 can be accessed by either direct or indirect addressing.

REGISTERS:

In the CPU, registers are used to store information temporarily. That


information could be a byte of data to be processed, or an address pointing to the
data to be fetched. The vast majority of 8051 registers are 8–bit registers. In the
8051 there is only one data type: 8bits. The 8bits of a register are should in the
diagram from the MSB (most significant bit) D7 to the LSB (least significant bit) D0.
With an 8-bit data type, any data larger than 8bits must be broken into 8-bit chunks
before it is processed.

D7 D6 D5 D4 D3 D2 D1 D0

The most widely used registers of the 8051 are A(accumulator), B, R0, R1,
R2, R3, R4, R5, R6, R7, DPTR(data pointer), and PC(program counter). All of the
above registers are 8-bits, except DPTR and the program counter. The
accumulator, register A, is used for all arithmetic and logic instructions.

SFRs (Special Function Registers)


Among the registers R0-R7 are part of the 128 bytes of RAM memory . what
about registers A,B, PSW, and DPTR? Do they also have addresses? The answer is
yes. In the 8051, registers A, B, PSW and DPTR are part of the group of registers
commonly referred to as SFR (special function registers). There are many special
function registers and they are widely used. The SFR can be accessed by the
names (which is much easier) or by their addresses. For example, register A has
address E0h, and register B has been ignited the address F0H.

PIN CONFIGURATION:

Pin Diagram of AT89C51

Pin Description
VCC: Pin 40 provides supply voltage to the chip. The voltage source is +5v.

GND: Pin 20 is the ground.

Ports 0, 1, 2 and 3

As shown in pin diagram, the four ports P0, P1, P2, and P3 each use of 8 pins,
making the 8-bit ports. All the ports upon Reset are configured as input, since P0-
P3 have FFH on them.

Port 0

Port 0 occupies a total of 8 pins (pins 32-33). It can be used for input or output. Port0 is
also designated as AD0-AD7, allowing it to be used for both address and data. When connecting
an 8051/31 to an external memory, port 0 provides both address and data. The 8051 multiplexes
address and data through port 0 to save pins. ALE=0, it provides data D0-D7, but when ALE=1,
it has address A0-A7. Therefore, ALE is used for demultiplexing address address and data with
the help of a 74LS373 latch. In the 8051-based systems where there is no external memory
connection, the pins of P0 must be connected externally to a 10k –ohm pull-up resistor.

This is due to the fact that P0 is an Open drain, Unlike P1, P2, P3. Open drain is a term
used for Mos chips in the same way that open collector is used for TTL chips. In many systems
usig the 8751, 89C51, or DS89C4x0 chips, we normally connect P0 to pull-up resistors. With
external pull-up resistors connected to P0, it can be used as a simple I/O port, just like P1 and P2.
In contrast to Port 0, ports p1, p2, and p3 do not need any pull-up resistors since they already
have pull-up resistors internally. Upon reset, ports p1, p2, ad p3 are configured as input ports.

Port 1

Port 1 occupies a total of 8-pins (pins1-8). It can be used as input or output.


In contrast to port 0, this port does not need any pull-up resistors since it already
has pull-up resistors internally. Upon reset, port1 is configured as an input port.

Port 2
Port 2 occupies a total 8 pins (pins 21-28). It can be used as input or output. However, in
8031-based systems, port2 is also designated as A8-A15, indicating its dual function. Since an
8051/31 is capable of accessing 64K bytes of external memory, it needs a path for the 16 bits of
the address. While P0 provides the lower 8 bits via A0-A7, it is the job of p2 is used for the
upper 8 bits of the 16-bit address, and it cannot be used for I/O. Just like P1, port 2 does not
need any pull-up resistors since it already has pull-up resistors internally. Upon reset, port2 is
configured as an input port.

Port 3

Port 3 occupies a total of 8 pins (pins 10-17). It can be used as input or


output. P3 does not need any pull-up resistors, just as P1 and P2 did not. Although
Port 3 is configured as an input port upon reset, this is not the way it is most
commonly used. Port 3 has the additional function of providing some extremely
important signals such as interrupts. The below table provides these alternate
functions of P3. This is information applies to both 8051 and 8031 chips.

Alternate Functions of PORT3

Port 3 also receives some control signals for Flash programming and verification.

RST

Reset input. A high on this pin for two machine cycles while the oscillator is running
resets the device.

ALE/PROG

Prior to each reading from external memory, the microcontroller will set the
lower address byte (A0-A7) on P0 and immediately after that activates the output
ALE. Upon receiving signal from the ALE pin, the external register (74HCT373 or
74HCT375 circuit is usually embedded ) memorizes the state of P0 and uses it as an
address for memory chip. In the second part of the microcontroller’s machine cycle,
a signal on this pin stops being emitted and P0 is used now for data transmission
(Data Bus). In this way, by means of only one additional (and cheap) integrated
circuit, data multiplexing from the port is performed. This port at the same time
used for data and address transmission.

PSEN

Program Store Enable is the read strobe to external program memory. When the
AT89C51 is executing code from external program memory, PSEN is activated twice
each machine cycle, except that two PSEN activations are skipped during each
access to external data memory.

EA/VPP

External Access Enable. EA must be strapped to GND in order to enable the


device to fetch code from external program memory locations starting at 0000H up
to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally
latched on reset. EA should be strapped to VCC for internal program executions.
This pin also receives the 12-volt programming enable voltage (VPP) during Flash
programming, for parts that require 12-volt VPP.

XTAL1 and XTAL2

The 8051 has an on-chip oscillator but requires an external clock to run it.
Most often a quartz crystal oscillator is connected to inputs XTAL1 (pin19) and
XTAL2 (pin18). The quartz crystal oscillator connected to XTAL1 and XTAL2 also
needs two capacitors of 30pf value. One side of each capacitor is connected to the
ground as shown in fig1.

It must be noted that there are various speeds of the 8051 family. Speed
refers to the maximum oscillator frequency connected to XTAL. For example, a 12-
MHz chip must be connected to a crystal with 12 MHz frequency of no more than 20
MHz. When the 8051 is connected to a crystal oscillator and is powered up, we can
observe the frequency on the XTAL2 pin using the oscilloscope.

TIMERS

On-chip timing/counting facility has proved the capabilities of the


microcontroller for implementing the real time application. These includes pulse
counting, frequency measurement, pulse width measurement, baud rate
generation, etc,. Having sufficient number of timer/counters may be a need in a
certain design application. The 8051 has two timers/counters. They can be used
either as timers to generate a time delay or as counters to count events happening
outside the microcontroller. Let discuss how these timers are used to generate time
delays and we will also discuss how they are been used as event counters.

BASIC RIGISTERS OF THE TIMER

Both Timer 0 and Timer 1 are 16 bits wide. Since the 8051 has an 8-bit
architecture, each 16-bit timer is accessed as two separate registers of low byte
and high byte.

TIMER 0 REGISTERS

The 16-bit register of Timer 0 is accessed as low byte and high byte. the
low byte register is called TL0(Timer 0 low byte)and the high byte register is
referred to as TH0(Timer 0 high byte).These register can be accessed like any other
register, such as A,B,R0,R1,R2,etc.for example, the instruction ”MOV TL0,
#4F”moves the value 4FH into TL0,the low byte of Timer 0.These registers can also
be read like any other register.

TIMER 1 REGISTERS

Timer 1 is also 16-bit register is split into two bytes, referred to as TL1
(Timer 1 low byte) and TH1(Timer 1 high byte).these registers are accessible n the
same way as the register of Timer 0.
TMOD (timer mode) REGISTER

Both timers 0 and 1 use the same register, called TMOD, to set the various
timer operation modes. TMOD is an 8-bit register in which the lower 4 bits are set
aside for Timer 0 and the upper 4 bits for Timer 1.in each case; the lower 2 bits are
used to set the timer mode and the upper 2 bits to specify the operation.

TCON Register:

TCON controls the timer/counter operations. The lower four bits of TCON cater to
interrupt functions, but the upper four bits are for timer operations. The details of
the TCON register are shown below.

MSB LSB

TF1 TR1 TF0 TR0 IE1 IT1 IE0


IT0

INTERRUPTS:

A single microcontroller can serve several devices. There are two ways to do that:
INTERRUPTS or POLLING.
POLLING:

In polling the microcontroller continuously monitors the status of a given device;


when the status condition is met, it performs the service .After that, it moves on to
monitor the next device until each one is serviced. Although polling can monitor
the status of several devices and serve each of them as certain condition are
met.

INTERRUPTS:

In the interrupts method, whenever any device needs its service, the device
notifies the microcontroller by sending it an interrupts signal. Upon receiving an
interrupt signal, the microcontroller interrupts whatever it is doing and serves the
device. The program associated with the interrupts is called the interrupt service
routine (ISR).or interrupt handler.

Six Interrupts in the 8051:

In reality, only five interrupts are available to the user in the 8051, but many
manufacturers’ data sheets state that there are six interrupts since they include
reset .the six interrupts in the 8051 are allocated as above.

1. Reset. When the reset pin is activated, the 8051 jumps to address location
0000.this is the power-up reset.
2. Two interrupts are set aside for the timers: one for Timer 0 and one for Timer
1.Memory location 000BH and 001BH in the interrupt vector table belong to
Timer 0 and Timer 1, respectively.
3. Two interrupts are set aside for hardware external harder interrupts. Pin
number 12(P3.2) and 13(P3.3) in port 3 are for the external hardware
interrupts INT0 and INT1,respectively.These external interrupts are also
referred to as EX1 and EX2.Memory location 0003H and 0013H in the
interrupt vector table are assigned to INT0 and INT1, respectively.
4. Serial communication has a single interrupt that belongs to both receive and
transmit. The interrupt vector table location 0023H belongs to this interrupt.

8051/52 Interrupt Priority upon Reset

Highest to Lowest Priority

External Interrupt 0 (INT0)

Timer Interrupt 0 (TF0)

External Interrupt 1 (INT1)

Timer Interrupt 1 (TF1)

Serial Communication (RI+TI)

Timer 2(8052 only) TF2

SERIAL COMMUNICATION
Computers can transfer data in two ways: parallel and serial. In
parallel data transfers, often 8 or more lines (wire conductors) are used to transfer
data to a device that is only a few feet away. An example of parallel transfers a
printers and hard disks; each uses cables with many wire strips. Although in such
cases a lot of data can be transferred in a short amount of time by using many
wires in parallel, the distance cannot be great.

To transfer to a device located many meters away, the serial method is used.
In serial communication, the data is sent one bit at a time, in contrast to parallel
communication, in which the data is sent a byte or more at a time. Serial
communication of the 8051 is the topic of this chapter. The 8051 has serial
communication capability built into it, there by making possible fast data transfer
using only a few wires.

If data is to be transferred on the telephone line, it must be converted from


0s and 1s to audio tones, which are sinusoidal-shaped signals. This conversion is
performed by a peripheral device called a modem, which stands for
“modulator/demodulator.”

Serial data communication uses two methods, asynchronous and


synchronous. The synchronous method transfers a block of data at a time, while
the asynchronous method transfers a single byte at a time.

In data transmission if the data can be transmitted and received, it is a


duplex transmission. This is in contrast to simplex transmissions such as with
printers, in which the computer only sends data. Duplex transmissions can be half
or full duplex, depending on whether or not the data transfer can be simultaneous.

Asynchronous serial communication and data framing

The data coming in at the receiving end of the data line in a serial data
transfer is all 0s and 1s; it is difficult to make sense of the data unless the sender
and receiver agree on a set of rules, a protocol, on how the data is packed, how
many bits constitute a character, and when the data begins and ends.

Start and stop bits

Asynchronous serial data communication is widely used for character-


oriented transmissions, while block-oriented data transfers use the synchronous
method. In the asynchronous method, each character is placed between start and
stop bits. This is called framing. In the data framing for asynchronous
communications, the data, such as ASCII characters, are packed between a start bit
and a stop bit. The start bit is always one bit, but the stop bit can be one or two bits.
The start bit is always a 0 (low) and the stop bit (s) is 1 (high).

Data transfer rate

The rate of data transfer in serial data communication is stated in bps (bits
per second). Another widely used terminology for bps is baud rate. The data
transfer rate of given computer system depends on communication ports
incorporated into that system. For example, the early IBMPC/XT could transfer data
at the rate of 100 to 9600 bps. In recent years, however, Pentium based PCS
transfer data at rates as high as 56K bps. It must be noted that in asynchronous
serial data communication, the baud rate is generally limited to 100,000bps.

Baud rate in the 8051

The 8051 transfers and receives data serially at many different baud rates.
The baud rate in the 8051 is programmable. The is done with the help of Timer1.
The 8051 divides the crystal frequency by 12 to get the machine cycle frequency.
In the case of XTAL=11.0592MHZ, the machine cycle frequency is 921.6 KHz
(11.0592MHz/12=921.6KHz). the 8051’s serial communication UART circuitry
divides the machine cycle frequency of 921.6khz divided by 32 once more before it
is used by Timer 1 to set the Baud rate. Therefore, 921.6 kHz divided by 32 gives
28,800 Hz. This is the number well use to find the Timer 1 value to set baud rate.

Baud TH1(Decimal) TH1(Hex)


rate
9600 -3 FD
4800 -6 FA
2400 -12 F4
1200 -24 E8

NOTE: XTAL=11...592MHz

SBUF register

SBUF is an 8-bit register used solely for serial communication in the 8051. for
a byte of data to be transferred via the TXD line, it must be placed in the SBUF
register. Similarly, SBUF holds the byte of data when it is received by the 8051’s
RXD line. SBUF can be accessed like any other register in the 8051. Look at the
following the examples of how this register is accessed.

MOV SBUF, #’D’ ; load SBUF=44h, ASCII for ‘D’

MOV SBUF, A ; copy accumulator into SBUF

MOV A, SBUF ; copy SBUF into accumulator

The moment a byte is written into SBUF, it is framed with the start and stop
bits and transferred serially via the TXD pin. Similarly, when the bits are received
serially via RXD, the 8051 defames it by eliminating the stop and start bits, making
a byte out of the data received, and then placing it in the SBUF.

SCON (serial control) register

The SCON register is an 8-bit register used to program the start bit, stop bit,
and data bits of data framing, among other things.
The following describes various bits of the SCON register.

SM0 SM1 SM2 REN TB8 RB8 TI RI

SM0 SCON.7 Serial port mode specifier

SM1 SCON.6 Serial port mode specifier

SM2 SCON.5 Used for multiprocessor communication. (make it 0.)

REN SCON.4 Set/cleared by software to enable/disable reception

TB8 SCON.3 Not widely used

RB8 SCON.2 Not widely used

TI SCON.1 Transmit interrupt flag. Set by hardware at the beginning

Of the stop bit in mode 1. Must be cleared by software.

RI SCON.0 Receive interrupt flag. Set by hardware halfway through


the stop bit time mode 1. Must be cleared by
software.

Note: Make SM2, TB8, and RB8=0.

SM0, SM1

SM0 and SM1 are D7 and D6 of the SCON register, respectively. These two
bits determine the framing of data by specifying the number of bits per character
and the start and stop bits. They take the following combinations.
SM0 SM1 FUNCTION

0 0 Serial Mode 0

0 1 Serial Mode 1, 8-bit data, 1 stop bit, 1 start bit

1 0 Serial Mode 2

1 1 Serial Mode 3

Of the 4 serial modes, only mode 1 is of interest to us. In the SCON register,
when serial mode 1 is chosen, the data framing is 8 bits, 1 stop bit, and 1 start bit,
which makes it compatible with the COM port of IBM/compatible PCs. More
importantly, serial mode 1 allows the baud rate to be variable and is set by Timer 1
of the 8051. In serial mode 1, for each character a total of 10 bits are transferred,
where the first bit is the start bit, followed by 8 bits of data, and finally 1 stop bit.

MAX-232:

The MAX232 from Maxim was the first IC which in one package contains the necessary
drivers (two) and receivers (also two), to adapt the RS-232 signal voltage levels to TTL logic. It
became popular, because it just needs one voltage (+5V) and generates the necessary RS-232
voltage levels (approx. -10V and +10V) internally. This greatly simplified the design of circuitry.
Circuitry designers no longer need to design and build a power supply with three voltages (e.g.
-12V, +5V, and +12V), but could just provide one +5V power supply, e.g. with the help of a
simple 78x05 voltage converter.

The MAX232 has a successor, the MAX232A. The ICs are almost identical, however, the
MAX232A is much more often used (and easier to get) than the original MAX232, and the
MAX232A only needs external capacitors 1/10th the capacity of what the original MAX232
needs.

The MAX232 and MAX232A were once rather expensive ICs, but today they are cheap.
It has also helped that many companies now produce clones (ie. Sipex). The original
manufacturer (and now some clone manufacturers, too) offers a large series of similar ICs, with
different numbers of receivers and drivers, voltages, built-in or external capacitors, etc. E.g. The
MAX232 and MAX232A need external capacitors for the internal voltage pump, while the
MAX233 has these capacitors built-in. The MAX233 is also between three and ten times more
expensive in electronic shops than the MAX232A because of its internal capacitors. It is also
more difficult to get the MAX233 than the garden variety MAX232A.

A Typical Application

The MAX 232(A) has two receivers (converts from RS-232 to TTL voltage levels) and
two drivers (converts from TTL logic to RS-232 voltage levels). This means only two of the RS-
232 signals can be converted in each direction. The old MC1488/1498 combo provided four
drivers and receivers.

Typically a pair of a driver/receiver of the MAX232 is used for

• TX and RX

And the second one for

• CTS and RTS.

There are not enough drivers/receivers in the MAX232 to also connect the DTR, DSR, and
DCD signals. Usually these signals can be omitted when e.g. communicating with a PC's serial
interface. If the DTE really requires these signals either a second MAX232 is needed, or some
other IC from the MAX232 family can be used (if it can be found in consumer electronic shops
at all).

An alternative for DTR/DSR is also given below.Maxim's data sheet explains the MAX232
family in great detail, including the pin configuration and how to connect such an IC to external
circuitry. This information can be used as-is in own design to get a working RS-232 interface.
Maxim's data just misses one critical piece of information: How exactly to connect the RS-232
signals to the IC. So here is one possible example
In addition one can directly wire DTR (DB9 pin 4) to DSR (DB9 pin 6) without going
through any circuitry. This gives automatic (brain dead) DSR acknowledgment of an incoming
DTR signal.

Sometimes pin 6 of the MAX232 is hard wired to DCD (DB9 pin 1). This is not
recommended. Pin 6 is the raw output of the voltage pump and inverter for the -10V voltage.
Drawing currents from the pin leads to a rapid breakdown of the voltage, and as a consequence
to a breakdown of the output voltage of the two RS-232 drivers. It is better to use software which
doesn't care about DCD, but does hardware-handshaking via CTS/RTS only.

The circuitry is completed by connecting five capacitors to the IC as it follows. The


MAX232 needs 1.0µF capacitors, the MAX232A needs 0.1µF capacitors. MAX232 clones show
similar differences. It is recommended to consult the corresponding data sheet. At least 16V
capacitor types should be used. If electrolytic or tantalic capacitors are used, the polarity has to
be observed. The first pin as listed in the following table is always where the plus pole of the
capacitor should be connected to.

The 5V power supply is connected to

• +5V: Pin 16
• GND: Pin 15

Description/ordering information

The MAX232 is a dual driver/receiver that includes a capacitive voltage generator to


supply EIA-232 voltage levels from a single 5-V supply. Each receiver converts EIA-
232 inputs to 5-V TTL/CMOS levels. These receivers have a typical threshold of 1.3 V
and a typical hysteresis of 0.5 V, and can accept 30-V inputs. Each driver converts
TTL/CMOS input levels into EIA-232 levels. The driver, receiver, and voltage-
generator functions are available as cells in the Texas Instruments Lin ASIClibrary.
LCD (Liquid Cristal Display)

Introduction:

A liquid crystal display (LCD) is a thin, flat display device made


up of any number of color or monochrome pixels arrayed in front of a light source or
reflector. Each pixel consists of a column of liquid crystal molecules suspended
between two transparent electrodes, and two polarizing filters, the axes of polarity
of which are perpendicular to each other. Without the liquid crystals between them,
light passing through one would be blocked by the other. The liquid crystal twists
the polarization of light entering one filter to allow it to pass through the other.

A program must interact with the outside world using input and
output devices that communicate directly with a human being. One of the most
common devices attached to an controller is an LCD display. Some of the most
common LCDs connected to the contollers are 16X1, 16x2 and 20x2 displays. This
means 16 characters per line by 1 line 16 characters per line by 2 lines and 20
characters per line by 2 lines, respectively.

Many microcontroller devices use 'smart LCD' displays to output visual


information. LCD displays designed around LCD NT-C1611 module, are inexpensive,
easy to use, and it is even possible to produce a readout using the 5X7 dots plus
available. Line lengths
cursor of the display. They have a standard ASCII set of characters and
of 8,
mathematical symbols. For an 8-bit data bus, the display requires a +5V supply 16,
plus 10 I/O lines (RS RW D7 D6 D5 D4 D3 D2 D1 D0). For a 4-bit data bus it only 20,
24, 32
requires the supply lines plus 6 extra lines(RS RW D7 D6 D5 D4). When the LCD
and
display is not enabled, data lines are tri-state and they do not interfere with the 40
operation of the microcontroller. chara
cters
are all
stand
ard, in
one,
two
Features:

(1) Interface with either 4-bit or 8-bit microprocessor.

(2) Display data RAM

(3) 80x8
 bits (80 characters).

(4) Character generator ROM

(5). 160 different 5 7


 dot-matrix character patterns.

(6). Character generator RAM

(7) 8
 different user programmed 5 7
 dot-matrix patterns.

(8).Display data RAM and character generator RAM may be

Accessed by the microprocessor.

(9) Numerous instructions

(10) .Clear Display, Cursor Home, Display ON/OFF, Cursor ON/OFF,

Blink Character, Cursor Shift, Display Shift.

(11). Built-in reset circuit is triggered at power ON.

(12). Built-in oscillator.

Data can be placed at any location on the LCD. For 16×1 LCD, the address
locations are:
Fig : Address locations for a 1x16 line LCD

Shapes and sizes:


Even limited to character based modules,there is still a wide variety of shapes
and sizes available. Line lenghs of 8,16,20,24,32 and 40 charecters are all standard,
in one, two and four line versions.

Several different LC technologies exists. “supertwist” types, for example, offer


Improved contrast and viewing angle over the older “twisted nematic” types. Some
modules are available with back lighting, so so that they can be viewed in dimly-lit
conditions. The back lighting may be either “electro-luminescent”, requiring a high
voltage inverter circuit, or simple LED illumination.
Electrical blockdiagram:

Power supply for lcd driving:

PIN DESCRIPTION:
Most LCDs with 1 controller has 14 Pins and LCDs with 2 controller has 16
Pins (two pins are extra in both for back-light LED connections).

Fig: pin diagram of 1x16 lines lcd


CONTROL LINES:

EN:

Line is called "Enable." This control line is used to tell the LCD that you are sending it
data. To send data to the LCD, your program should make sure this line is low (0) and then set
the other two control lines and/or put data on the data bus. When the other lines are completely
ready, bring EN high (1) and wait for the minimum amount of time required by the LCD
datasheet (this varies from LCD to LCD), and end by bringing it low (0) again.

RS:

Line is the "Register Select" line. When RS is low (0), the data is to be treated as a
command or special instruction (such as clear screen, position cursor, etc.). When RS is high (1),
the data being sent is text data which sould be displayed on the screen. For example, to display
the letter "T" on the screen you would set RS high.

RW:
Line is the "Read/Write" control line. When RW is low (0), the information on the data
bus is being written to the LCD. When RW is high (1), the program is effectively querying (or
reading) the LCD. Only one instruction ("Get LCD status") is a read command. All others are
write commands, so RW will almost always be low.

Finally, the data bus consists of 4 or 8 lines (depending on the mode of operation selected
by the user). In the case of an 8-bit data bus, the lines are referred to as DB0, DB1, DB2, DB3,
DB4, DB5, DB6, and DB7.

Logic status on control lines:

• E - 0 Access to LCD disabled

- 1 Access to LCD enabled

• R/W - 0 Writing data to LCD

- 1 Reading data from LCD

• RS - 0 Instructions

- 1 Character

Writing data to the LCD:

1) Set R/W bit to low

2) Set RS bit to logic 0 or 1 (instruction or character)

3) Set data to data lines (if it is writing)

4) Set E line to high

5) Set E line to low

Read data from data lines (if it is reading)on LCD:


1) Set R/W bit to high

2) Set RS bit to logic 0 or 1 (instruction or character)

3) Set data to data lines (if it is writing)

4) Set E line to high

5) Set E line to low

Entering Text:

First, a little tip: it is manually a lot easier to enter characters and commands
in hexadecimal rather than binary (although, of course, you will need to translate
commands from binary couple of sub-miniature hexadecimal rotary switches is a
simple matter, although a little bit into hex so that you know which bits you are
setting). Replacing the d.i.l. switch pack with a of re-wiring is necessary.

The switches must be the type where On = 0, so that when they are turned to
the zero position, all four outputs are shorted to the common pin, and in position “F”,
all four outputs are open circuit.

All the available characters that are built into the module are shown in Table
3. Studying the table, you will see that codes associated with the characters are
quoted in binary and hexadecimal, most significant bits (“left-hand” four bits) across
the top, and least significant bits (“right-hand” four bits) down the left.

Most of the characters conform to the ASCII standard, although the Japanese
and Greek characters (and a few other things) are obvious exceptions. Since these
intelligent modules were designed in the “Land of the Rising Sun,” it seems only fair
that their Katakana phonetic symbols should also be incorporated. The more
extensive Kanji character set, which the Japanese share with the Chinese, consisting
of several thousand different characters, is not included!

Using the switches, of whatever type, and referring to Table 3, enter a few
characters onto the display, both letters and numbers. The RS switch (S10) must be
“up” (logic 1) when sending the characters, and switch E (S9) must be pressed for
each of them. Thus the operational order is: set RS high, enter character, trigger E,
leave RS high, enter another character, trigger E, and so on.

The first 16 codes in Table 3, 00000000 to 00001111, ($00 to $0F) refer to the
CGRAM. This is the Character Generator RAM (random access memory), which can
be used to hold user-defined graphics characters. This is where these modules really
start to show their potential, offering such capabilities as bar graphs, flashing
symbols, even animated characters. Before the user-defined characters are set up,
these codes will just bring up strange looking symbols.

Codes 00010000 to 00011111 ($10 to $1F) are not used and just display
blank characters. ASCII codes “proper” start at 00100000 ($20) and end with
01111111 ($7F). Codes 10000000 to 10011111 ($80 to $9F) are not used, and
10100000 to 11011111 ($A0 to $DF) are the Japanese characters.
Initialization by Instructions:
If the power conditions for the normal operation of the internal
reset circuit are not satisfied, then executing a series of instructions must
initialize LCD unit. The procedure for this initialization process is as above
show.

SENSORS:

Thermocouple sensor for high temperature measurement

A sensor is a device that measures a physical quantity and converts it into a signal which can be
read by an observer or by an instrument. For example, a mercury-in-glass thermometer converts
the measured temperature into expansion and contraction of a liquid which can be read on a
calibrated glass tube. A thermocouple converts temperature to an output voltage which can be
read by a voltmeter. For accuracy, most sensors are calibrated against known standards.

Use

Sensors are used in everyday objects such as touch-sensitive elevator buttons (tactile sensor) and
lamps which dim or brighten by touching the base. There are also innumerable applications for
sensors of which most people are never aware. Applications include cars, machines, aerospace,
medicine, manufacturing and robotics.

A sensor is a device which receives and responds to a signal. A sensor's sensitivity indicates how
much the sensor's output changes when the measured quantity changes. For instance, if the
mercury in a thermometer moves 1 cm when the temperature changes by 1 °C, the sensitivity is
1 cm/°C (it is basically the slope Dy/Dx assuming a linear characteristic). Sensors that measure
very small changes must have very high sensitivities. Sensors also have an impact on what they
measure; for instance, a room temperature thermometer inserted into a hot cup of liquid cools the
liquid while the liquid heats the thermometer. Sensors need to be designed to have a small effect
on what is measured, making the sensor smaller often improves this and may introduce other
advantages. Technological progress allows more and more sensors to be manufactured on a
microscopic scale as microsensors using MEMS technology. In most cases, a microsensor
reaches a significantly higher speed and sensitivity compared with macroscopic approaches.

Classification of measurement errors

A good sensor obeys the following rules:

• Is sensitive to the measured property


• Is insensitive to any other property likely to be encountered in its application
• Does not influence the measured property

Ideal sensors are designed to be linear or linear to some simple mathematical function of the
measurement, typically logarithmic. The output signal of such a sensor is linearly proportional to
the value or simple function of the measured property. The sensitivity is then defined as the ratio
between output signal and measured property. For example, if a sensor measures temperature
and has a voltage output, the sensitivity is a constant with the unit [V/K]; this sensor is linear
because the ratio is constant at all points of measurement.

Sensor deviations

If the sensor is not ideal, several types of deviations can be observed:

• The sensitivity may in practice differ from the value specified. This is called a sensitivity
error, but the sensor is still linear.
• Since the range of the output signal is always limited, the output signal will eventually
reach a minimum or maximum when the measured property exceeds the limits. The full
scale range defines the maximum and minimum values of the measured property.
• If the output signal is not zero when the measured property is zero, the sensor has an
offset or bias. This is defined as the output of the sensor at zero input.
• If the sensitivity is not constant over the range of the sensor, this is called nonlinearity.
Usually this is defined by the amount the output differs from ideal behavior over the full
range of the sensor, often noted as a percentage of the full range.
• If the deviation is caused by a rapid change of the measured property over time, there is a
dynamic error. Often, this behaviour is described with a bode plot showing sensitivity
error and phase shift as function of the frequency of a periodic input signal.
• If the output signal slowly changes independent of the measured property, this is defined
as drift (telecommunication).
• Long term drift usually indicates a slow degradation of sensor properties over a long
period of time.
• Noise is a random deviation of the signal that varies in time.
• Hysteresis is an error caused by when the measured property reverses direction, but there
is some finite lag in time for the sensor to respond, creating a different offset error in one
direction than in the other.
• If the sensor has a digital output, the output is essentially an approximation of the
measured property. The approximation error is also called digitization error.
• If the signal is monitored digitally, limitation of the sampling frequency also can cause a
dynamic error, or if the variable or added noise noise changes periodically at a frequency
near a multiple of the sampling rate may induce aliasing errors.
• The sensor may to some extent be sensitive to properties other than the property being
measured. For example, most sensors are influenced by the temperature of their
environment.

All these deviations can be classified as systematic errors or random errors. Systematic errors
can sometimes be compensated for by means of some kind of calibration strategy. Noise is a
random error that can be reduced by signal processing, such as filtering, usually at the expense of
the dynamic behaviour of the sensor.
Resolution

The resolution of a sensor is the smallest change it can detect in the quantity that it is measuring.
Often in a digital display, the least significant digit will fluctuate, indicating that changes of that
magnitude are only just resolved. The resolution is related to the precision with which the
measurement is made. For example, a scanning tunneling probe (a fine tip near a surface collects
an electron tunnelling current) can resolve atoms and molecules.actuator is something that
converts energy into motion

Types

Sensors in Nature

All living organisms contain biological sensors with functions similar to those of the mechanical
devices described. Most of these are specialized cells that are sensitive to:

• Light, motion, temperature, magnetic fields, gravity, humidity, vibration, pressure,


electrical fields, sound, and other physical aspects of the external environment
• Physical aspects of the internal environment, such as stretch, motion of the organism, and
position of appendages (proprioception)
• Environmental molecules, including toxins, nutrients, and pheromones
• Estimation of biomolecules interaction and some kinetics parameters
• Internal metabolic milieu, such as glucose level, oxygen level, or osmolality
• Internal signal molecules, such as hormones, neurotransmitters, and cytokines
• Differences between proteins of the organism itself and of the environment or alien
creatures.

Biosensor

In biomedicine and biotechnology, sensors which detect analytes thanks to a biological


component, such as cells, protein, nucleic acid or biomimetic polymers, are called biosensors.
Whereas a non-biological sensor, even organic (=carbon chemistry), for biological analytes is
referred to as sensor or nanosensor (such a microcantilevers). This terminology applies for both
in vitro and in vivo applications. The encapsulation of the biological component in biosensors,
presents with a slightly different problem that ordinary sensors, this can either be done by means
of a semipermeable barrier, such as a dialysis membrane or a hydrogel, a 3D polymer matrix,
which either physically constrains the sensing macromolecule or chemically (macromolecule is
bound to the scaffold)

Temperature Sensors (LM35)


Introduction:

The LM35 series are precision integrated-circuit temperature sensors, whose


output voltage is linearly proportional to the Celsius (Centigrade) temperature. The
LM35 thus has an advantage over linear temperature sensors calibrated in Kelvin,
as the user is not required to subtract a large constant voltage from its output to
obtain convenient centigrade scaling. The LM35 does not require any external
calibration or trimming to provide typical accuracies of ±1/4°C at room temperature
and ±3/4°C over a full -55 to +150°C temperature range. Low cost is assured by
trimming and calibration at the wafer level. The LM35’s low output impedance,
linear output, and precise inherent calibration make interfacing to readout or
control circuitry especially easy. It can be used with single power supplies, or with
plus and minus supplies. As it draws only 60 µA from its supply, it has very low self-
heating, less than 0.1°C in still air. The LM35 is rated to operate over a -55° to
+150°C temperature range, while the LM35C is rated for a -40° to +110°C range (-
10° with improved accuracy). The LM35 series is available packaged plastic TO-92
transistor package. The LM35D is also available in an 8-lead surface mount small
outline package and a plastic TO-220 package.

Features:

1. Calibrated directly in ° Celsius (Centigrade)


2. Linear + 10.0 mV/°C scale factor
3. 0.5°C accuracy guaranteeable (at +25°C)
4. Rated for full -55° to +150°C range
5. Suitable for remote applications
6. Low cost due to wafer-level trimming
7. Operates from 4 to 30 volts
8. Less than 60 µA current drain
9. Low self-heating, 0.08°C in still air
10.Nonlinearity only ±1/4°C typical
11.Low impedance output, 0.1 for
 1 mA load

Pin diagram:

Applications:

The LM35 can be applied easily in the same way as other integrated-circuit
temperature sensors. It can be glued or cemented to a surface and its temperature
will be within about 0.01°C of the surface temperature. This presumes that the
ambient air temperature is almost the same as the surface temperature; if the air
temperature were much higher or lower than the surface temperature, the actual
temperature of the LM35 die would be at an intermediate temperature between the
surface temperature and the air temperature. This is expecially true for the TO-92
plastic package, where the copper leads are the principal thermal path to carry heat
into the device, so its temperature might be closer to the air temperature than to
the surface temperature. To minimize this problem, be sure that the wiring to the
LM35, as it leaves the device, is held at the same temperature as the surface of
interest. The easiest way to do this is to cover up these wires with a bead of epoxy
which will insure that the leads and wires are all at the same temperature as the
surface, and that the LM35 die’s temperature will not be affected by the air
temperature. The TO-46 metal package can also be soldered to a metal surface or
pipe without damage. Of course, in that case the V- terminal of the circuit will be
grounded to that metal. Alternatively, the LM35 can be mounted inside a sealed-end
metal tube, and can then be dipped into a bath or screwed into a threaded hole in a
tank. As with any IC, the LM35 and accompanying wiring and circuits must be kept
insulated and dry, to avoid leakage and corrosion. This is especially true if the
circuit may operate at cold temperatures where condensation can occur. Printed-
circuit coatings and varnishes such as Humiseal and epoxy paints or dips are often
used to insure that moisture cannot corrode the LM35 or its connections. These
devices are sometimes soldered to a small light-weight heat fin, to decrease the
thermal time constant and speed up the response in slowly-moving air. On the other
hand, a small thermal mass may be added to the sensor, to give the steadiest
reading despite small deviations in the air temperature.

Controller area network

Controller–area network (CAN or CAN-bus) is a vehicle bus standard designed to allow


microcontrollers and devices to communicate with each other within a vehicle without a host
computer.

CAN is a message based protocol, designed specifically for automotive applications but now also
used in other areas such as industrial automation and medical equipment.

Development of the CAN-bus started originally in 1983 at Robert Bosch GmbH.[1] The protocol
was officially released in 1986 at the Society of Automotive Engineers (SAE) congress in
Detroit, Michigan. The first CAN controller chips, produced by Intel and Philips, came on the
market in 1987. Bosch published the CAN 2.0 specification in 1991.
CAN is one of five protocols used in the OBD-II vehicle diagnostics standard. The OBD
standard has been mandatory for all cars and light trucks sold in the United States since 1996,
and the EOBD standard, mandatory for all petrol vehicles sold in the European Union since 2001
and all diesel vehicles since 2004.[2]

Applications

Automotive

A modern automobile may have as many as 70 electronic control units (ECU) for various
subsystems.[3] Typically the biggest processor is the engine control unit (also engine control
module/ECM in automobiles); others are used for transmission, airbags, antilock braking, cruise
control, audio systems, windows, doors, mirror adjustment, etc. Some of these form independent
subsystems, but communications among others are essential. A subsystem may need to control
actuators or receive feedback from sensors. The CAN standard was devised to fill this need.

The CAN bus may be used in vehicles to connect engine control unit and transmission, or (on a
different bus) to connect the door locks, climate control, seat control, etc. Today the CAN bus is
also used as a fieldbus in general automation environments, primarily due to the low cost of
some CAN Controllers and processors.

Bosch holds patents on the technology, and manufacturers of CAN-compatible microprocessors


pay license fees to Bosch, which are normally passed on to the customer in the price of the chip.
Manufacturers of products with custom ASICs or FPGAs containing CAN-compatible modules
may need to pay a fee for the CAN Protocol License.

Technology

CAN is a multi-master broadcast serial bus standard for connecting electronic control units
(ECUs).

Each node is able to send and receive messages, but not simultaneously. A message consists
primarily of an id, which represents the priority of the message, and up to eight data bytes. It is
transmitted serially onto the bus. This signal pattern is encoded in non-return-to-zero (NRZ) and
is sensed by all nodes.

The devices that are connected by a CAN network are typically sensors, actuators, and other
control devices. These devices are not connected directly to the bus, but through a host processor
and a CAN controller.

If the bus is free, any node may begin to transmit. If two or more nodes begin sending messages
at the same time, the message with the more dominant id (which has more dominant bits, i.e.,
zeroes) will overwrite other nodes' less dominant id's, so that eventually (after this arbitration on
the id.) only the dominant message remains and is received by all nodes. This mechanism is
referred to as priority based bus arbitration. Messages with numerically smaller values of id.
have higher priority and are transmitted first.

Each node requires a

• Host processor
o The host processor decides what received messages mean and which messages it
wants to transmit itself.
o Sensors, actuators and control devices can be connected to the host processor.
• CAN controller (hardware with a synchronous clock).
o Receiving: the CAN controller stores received bits serially from the bus until an
entire message is available, which can then be fetched by the host processor
(usually after the CAN controller has triggered an interrupt).
o Sending: the host processor stores its transmit messages to a CAN controller,
which transmits the bits serially onto the bus.
• Transceiver (possibly integrated into the CAN controller)
o Receiving: it adapts signal levels from the bus to levels that the CAN controller
expects and has protective circuitry that protects the CAN controller.
o Sending: it converts the transmit-bit signal received from the CAN controller into
a signal that is sent onto the bus.
Bit rates up to 1 Mbit/s are possible at network lengths below 40 m. Decreasing the bit rate
allows longer network distances (e.g., 500 m at 125 kbit/s).

The CAN data link layer protocol is standardized in ISO 11898-1 (2003). This standard describes
mainly the data link layer (composed of the logical link control (LLC) sublayer and the media
access control (MAC) sublayer) and some aspects of the physical layer of the OSI reference
model. All the other protocol layers are the network designer's choice.

Data transmission

CAN features an automatic arbitration-free transmission. A CAN message that is transmitted


with highest priority will succeed, and the node transmitting the lower priority message will
sense this and back off and wait.

This is achieved by CAN transmitting data through a binary model of "dominant" bits and
"recessive" bits where dominant is a logical 0 and recessive is a logical 1. This means open
collector, or wired or physical implementation of the bus (but since dominant is 0 this is
sometimes referred to as wired and). If one node transmits a dominant bit and another node
transmits a recessive bit then the dominant bit "wins" (a logical AND between the two).

So, if you are transmitting a recessive bit, and someone sends a dominant bit, you see a dominant
bit, and you know there was a collision. (All other collisions are invisible.) A dominant bit is
asserted by creating a voltage across the wires while a recessive bit is simply not asserted on the
bus. If any node sets a voltage difference, all nodes will see it. Thus there is no delay to the
higher priority messages, and the node transmitting the lower priority message automatically
attempts to re-transmit 6 bit clocks after the end of the dominant message.

When used with a differential bus, a carrier sense multiple access/bitwise arbitration
(CSMA/BA) scheme is often implemented: if two or more devices start transmitting at the same
time, there is a priority based arbitration scheme to decide which one will be granted permission
to continue transmitting. The CAN solution to this is prioritized arbitration (and for the dominant
message delay free), making CAN very suitable for real time prioritised communications
systems.

During arbitration, each transmitting node monitors the bus state and compares the received bit
with the transmitted bit. If a dominant bit is received when a recessive bit is transmitted then the
node stops transmitting (i.e., it lost arbitration). Arbitration is performed during the transmission
of the identifier field. Each node starting to transmit at the same time sends an id. with dominant
as binary 0, starting from the high bit. As soon as their id. is a larger number (lower priority)
they'll be sending 1 (recessive) and see 0 (dominant), so they back off. At the end of id.
transmission, all nodes but one have backed off, and the highest priority message gets through
unimpeded.

For example, consider an 11-bit id. CAN network, with two nodes with id's of 15 (binary
representation, 00000001111) and 16 (binary representation, 00000010000). If these two nodes
transmit at the same time, each will transmit the first 6 zeros of their id. with no arbitration
decision being made. When the 7th bit is transmitted, the node with the id. of 16 transmit a 1
(recessive) for its id., and the node with the id. of 15 transmits a 0 (dominant) for its id.. When
this happens, the node with the id. of 16 will realize that it lost its arbitration, and allow the node
with id. of 15 to continue its transmission. This ensures that the node with the lower bit value
will always win the arbitration. The id. with the smaller number will win the right to use.

Id. allocation

Messages id's must be unique on a single CAN bus, otherwise two nodes would continue
transmission beyond the end of the arbitration field (id.) causing an error.

The choice of id's for messages is often done simply on the basis of identifying the type of data
and the sending node; however, as the id. is also used as the message priority, this can lead to
poor real-time performance. For example, if an urgent message with a short deadline has a
numerically high id. (low priority) then its transmission can be delayed by other messages with
lower numerical id's (higher priority), even though these messages may have much longer
deadlines.

In the early 1990s, CAN messages in automotive systems were typically given id's based only on
the type of data and sending node, and this led to the widely held but incorrect belief that a low
CAN bus utilization of circa 30% was required to ensure that all messages would meet their
deadlines. However, if id's are instead determined based on the deadline of the message, so the
shorter the deadline, the lower the numerical id. and hence the higher the message priority, then
bus utilizations of 70 to 80% can typically be achieved before any message deadlines are missed.

Bit timing

Each node in a CAN network has its own clock, and no clock is sent during data transmission.
Synchronization is done by dividing each bit of the frame into a number of segments:
Synchronization, Propagation, Phase 1 and Phase 2. The Length of each phase segment can be
adjusted based on network and node conditions. The sample point falls between Phase Buffer
Segment 1 and Phase Buffer Segment 2, which helps facilitate continuous synchronization.
Continuous synchronization in turn enables the receiver to be able to properly read the messages.

CAN Bit Timing

Layers

Based on levels of abstraction, the structure of the CAN protocol can be described in terms of the
following layers:

• Application Layer
• Object Layer
o Message Filtering
o Message and Status Handling

Transfer Layer
The Transfer Layer represents the kernel of the CAN protocol. It presents messages
received to the object layer and accepts messages to be transmitted from the object layer.
The transfer layer is responsible for bit timing and synchronization, message framing,
arbitration, acknowledgement, error detection and signalling, and fault confinement. It
performs:

• Fault Confinement
• Error Detection
• Message Validation
• Acknowledgement
• Arbitration
• Message Framing
• Transfer Rate and Timing
• Information Routing

Physical Layer

CAN bus in its original form was a link layer protocol specification that made reference to the
physical layer only in abstract terms. (IE as a medium that supported multiple access at the
individual bit level by providing dominant and recessive states). In recent times the ISO11898-2
standard went some distance towards providing a candidate concrete class definition for the
electrical part of the physical layer and is now widely adopted as a standard solution. The
mechanical aspects of the physical layer however (connector type, pin-outs etc.) continue to lack
formal treatment and it is from this background that we see the emergence of several de-facto
standards for mechanical implementation with the 9 Way ‘D’ type CAN-(2), CAN+(7), OV (3),
Supply(9) configuration as one of the most common.
[Tip for node designers here wishing to standardise on the de-facto mechanical interface:- Make
sure each node is provided with 1 male and 1 female 9 Way D connector electrically wired in
parallel. – Assume power is fed to the male and drawn from the female – Adoption of this
strategy allows buses to be constructed using standard cable sets and avoids the use of the
dreaded ‘ hand built 2 cables into 1 D type’ scenario which over the years has made a significant
contribution to bus unreliability, cable incompatibility and per network cost.]

The absence of a formal definition for the physical layer had the original advantage of freeing the
scope of CAN bus from the constraints of any one particular physical implementation however
its legacy has been to leave CAN bus implementations open to inter-operability issues in the
physical domain.

The very high noise immunity on ISO11898-2 is achieved by ensuring that the differential
impedance of the bus is maintained at a very low level using low value resistors (120 ohms)
mounted at each end of the bus. The low impedance draws more current (and power) than other
voltage based signalling specifications during the dominant state. On CAN bus systems,
balanced line operation, where current in one signal line is exactly balanced by current in the
opposite direction in the other signal leg becomes an essential facility to provide an independant
stable 0 V reference for the receivers. Best practice determines that CAN bus balanced pair
signals be carried in twisted pair form within a shielded cable and it is this precaution that helps
to keep RF emissions to a minimum.

Whilst ISO11898-2 provides a small degree of immunity to common mode voltage between
transmitter and receiver it is usual to implement networks with a high degree of voltage
association between the transceivers of different nodes by having a 0 V rail running along the
bus. Also, in the de-facto configuration, a supply rail is also included to distribute power to each
of the participating CAN bus transceiver nodes. The design intention here is to provide a
common supply for all the transceivers rather than as a convenient method of powering all the
nodes. It should be noted however, that the actual Voltage to be applied, which nodes apply it (if
any) are application specific and not formally specified. Common ‘good practice’ node design
might provide each node with transceivers which are optically isolated from their node host and
derive a 5 V linearly regulated supply voltage for the transceivers from the universal supply rail
provided by the bus. This configuration generally allows a sufficiently wide operating margin on
the supply rail to provide interoperability across a broad spectrum of different node types.
Typical values of supply voltage on such networks range between 7 and 30 Volts however lack
of standardisation means that ultimately it is up to the individual system designer to check out all
aspects of supply rail compatibility.

The standard (ISO11898-2) describes the electrical implementation formed from a multi-dropped
single-ended balanced line configuration with resistor termination at each end of the bus. In this
configuration a dominant state is asserted by 1 or more transmitters switching the CAN- to
supply 0 V and (simultaneously) switching CAN+ to the +5 V bus voltage thereby forming a
current path through the resistors that terminate the bus. As such the terminating resistors form
an essential component of the signalling system and are included not just to limit wave reflection
at high frequency. During a recessive state the signal lines and resistor(s) remain in a high
impedances state with respect to both rails. Voltages on both CAN+ and CAN- tend (weakly)
towards ½ rail voltage. During a dominant state the signal lines and resistor(s) move to a low
impedance state with respect to the rails so that current flows through the resistor. CAN+ voltage
tends to +5 V and CAN- tends to 0 V. A recessive state is only present on the bus when none of
the transmitters on the bus is asserting a dominant state. Irrespective of signal state the signals
lines are always in low impedance state with respect to one another by virtue of the terminating
resistors at the end of the bus.

It should be noted that this signalling strategy differs significantly from other balanced line
transmission technologies such as RS-422/3, RS-485, etc. which employ differential line drivers/
receivers and use a signalling system based on the differential mode voltage of the balanced line
crossing a notional 0 V. Multiple access on such systems normally relies on the media supporting
3 states (active high, active low and inactive tri-state)and is dealt with in the time domain.
Multiple access on CAN bus is achieved by the electrical logic of the system supporting just 2
states that are conceptually analagous to a ‘wired OR’ network.

Frames
A CAN network can be configured to work with two different message (or "frame") formats: the
standard or base frame format (or CAN 2.0 A), and the extended frame format (or CAN 2.0 B).
The only difference between the two formats is that the "CAN base frame" supports a length of
11 bits for the identifier, and the "CAN extended frame" supports a length of 29 bits for the
identifier, made up of the 11-bit identifier ("base identifier") and an 18-bit extension ("identifier
extension"). The distinction between CAN base frame format and CAN extended frame format is
made by using the IDE bit, which is transmitted as dominant in case of an 11-bit frame, and
transmitted as recessive in case of a 29-bit frame. CAN controllers that support extended frame
format messages are also able to send and receive messages in CAN base frame format. All
frames begin with a start-of-frame (SOF) bit that denotes the start of the frame transmission.

CAN has four frame types:

• Data frame: a frame containing node data for transmission


• Remote frame: a frame requesting the transmission of a specific identifier
• Error frame: a frame transmitted by any node detecting an error
• Overload frame: a frame to inject a delay between data and/or remote frame

Data frame

The data frame is the only frame for actual data transmission. There are two message formats:

• Base frame format: with 11 identifier bits


• Extended frame format: with 29 identifier bits

The CAN standard requires the implementation must accept the base frame format and may
accept the extended frame format, but must tolerate the extended frame format.

ZigBee
ZigBee module. The €1 coin, shown for size reference, is about 23 mm (0.9 inch) in diameter.

ZigBee is a specification for a suite of high level communication protocols using small, low-
power digital radios based on the IEEE 802.15.4-2003 standard for Low-Rate Wireless Personal
Area Networks (LR-WPANs), such as wireless light switches with lamps, electrical meters with
in-home-displays, consumer electronics equipment via short-range radio needing low rates of
data transfer. The technology defined by the ZigBee specification is intended to be simpler and
less expensive than other WPANs, such as Bluetooth. ZigBee is targeted at radio-frequency (RF)
applications that require a low data rate, long battery life, and secure networking.

Technical overview

ZigBee is a low-cost, low-power, wireless mesh networking standard. First, the low cost allows
the technology to be widely deployed in wireless control and monitoring applications. Second,
the low power-usage allows longer life with smaller batteries. Third, the mesh networking
provides high reliability and more extensive range.

It is not capable of powerline networking though other elements of the OpenHAN standards suite
promoted by openAMI [1] and UtilityAMI [2] deal with communications co-extant with AC
power outlets. In other words, ZigBee is intended not to support powerline networking but to
interface with it at least for smart metering and smart appliance purposes. Utilities, e.g. Penn
Energy, have declared the intent to require them to interoperate [3] again via the openHAN
standards.

Trademark and Alliance


The ZigBee Alliance is an association of companies working together to enable reliable, cost-
effective, and low-power wirelessly networked monitoring and control products based on an
open global standard.[1]

The ZigBee Alliance is a group of companies that maintain and publish the ZigBee standard. The
term ZigBee is a registered trademark of this group, not a single technical standard.

As per its main role, it standardizes the body that defines ZigBee, and also publishes application
profiles that allow multiple OEM vendors to create interoperable products. The current list of
application profiles either published, or in the works are:

Released specifications

• ZigBee Home Automation


• ZigBee Smart Energy 1.0
• ZigBee Telecommunication Services
• ZigBee Health Care
• ZigBee Remote Control

Specifications under development

• ZigBee Smart Energy 2.0


• ZigBee Building Automation
• ZigBee Retail Services

The relationship between IEEE 802.15.4 and ZigBee[2] is similar to that between IEEE 802.11
and the Wi-Fi Alliance. The ZigBee 1.0 specification was ratified on 14 December 2004 and is
available to members of the ZigBee Alliance. Most recently, the ZigBee 2007 specification was
posted on 30 October 2007. The first ZigBee Application Profile, Home Automation, was
announced 2 November 2007. As amended by NIST, the Smart Energy Profile 2.0 specification
will remove the dependency on IEEE 802.15.4. Device manufacturers will be able to implement
any MAC/PHY, such as IEEE 802.15.4(x) and IEEE P1901, under an IP layer based on
6LoWPAN.

ZigBee operates in the industrial, scientific and medical (ISM) radio bands; 868 MHz in Europe,
915 MHz in the USA and Australia, and 2.4 GHz in most jurisdictions worldwide. The
technology is intended to be simpler and less expensive than other WPANs such as Bluetooth.
ZigBee chip vendors typically sell integrated radios and microcontrollers with between 60 KB
and 256 KB flash memory.

Chip vendors/devices include

• Atmel ATmega128RFA1
• Digi International XBee XB24CZ7PIS-004
• Freescale MC13213
• Ember EM250
• Jennic JN5148
• Renesas uPD78F8056/57/58, M16C/6B3 and R8C/3MQ
• STMicroelectronics STM32W
• Samsung Electro-Mechanics ZBS240
• Texas Instruments CC2530 and CC2520

Radios are also available as stand-alone components to be used with any processor or
microcontroller. Generally, the chip vendors also offer the ZigBee software stack, although
independent ones are also available.

Because ZigBee can activate (go from sleep to active mode) in 30 msec or less, the latency can
be very low and devices can be very responsive — particularly compared to Bluetooth wake-up
delays, which are typically around three seconds. [3] Because ZigBees can sleep most of the time,
average power consumption can be very low, resulting in long battery life.

The first stack release is now called ZigBee 2004. The second stack release is called ZigBee
2006, and mainly replaces the MSG/KVP structure used in 2004 with a "cluster library". The
2004 stack is now more or less obsolete.[citation needed]
ZigBee 2007, now the current stack release, contains two stack profiles, stack profile 1 (simply
called ZigBee), for home and light commercial use, and stack profile 2 (called ZigBee Pro).
ZigBee Pro offers more features, such as multi-casting, many-to-one routing and high security
with Symmetric-Key Key Exchange (SKKE), while ZigBee (stack profile 1) offers a smaller
footprint in RAM and flash. Both offer full mesh networking and work with all ZigBee
application profiles.[citation needed]

ZigBee 2007 is fully backward compatible with ZigBee 2006 devices: A ZigBee 2007 device
may join and operate on a ZigBee 2006 network and vice versa. Due to differences in routing
options, ZigBee Pro devices must become non-routing ZigBee End-Devices (ZEDs) on a ZigBee
2006 network, the same as for ZigBee 2006 devices on a ZigBee 2007 network must become
ZEDs on a ZigBee Pro network. The applications running on those devices work the same,
regardless of the stack profile beneath them.

Licensing

For non-commercial purposes, the ZigBee specification is available free to the general public. [4]
An entry level membership in the ZigBee Alliance, called Adopter, provides access to the as-yet
unpublished specifications and permission to create products for market using the specifications.

The click through license on the ZigBee specification requires a commercial developer to join
the ZigBee Alliance. "No part of this specification may be used in development of a product for
sale without becoming a member of ZigBee Alliance." This causes problems for open-source
developers because the annual fee conflicts with the GNU General Public License. From the
GPL v2, "b) You must cause any work that you distribute or publish, that in whole or in part
contains or is derived from the Program or any part thereof, to be licensed as a whole at no
charge to all third parties under the terms of this License." Since the GPL makes no distinction
between commercial and non-commercial use it is impossible to implement a GPL licensed
ZigBee stack or combine a ZigBee implementation with GPL licensed code. The requirement for
the developer to join the ZigBee Alliance similarly conflicts with most other Free software
licenses.[5]

Uses
ZigBee protocols are intended for use in embedded applications requiring low data rates and low
power consumption. ZigBee's current focus is to define a general-purpose, inexpensive, self-
organizing mesh network that can be used for industrial control, embedded sensing, medical data
collection, smoke and intruder warning, building automation, home automation, etc. The
resulting network will use very small amounts of power — individual devices must have a
battery life of at least two years to pass ZigBee certification.[6]

Typical application areas include[7]

• Home Entertainment and Control — Smart lighting, advanced temperature control,


safety and security, movies and music

• Wireless Sensor Networks' — Starting with individual sensors like Telosb/Tmote and
Iris from Memsic.

Device types

There are three different types of ZigBee devices:

• ZigBee coordinator (ZC): The most capable device, the coordinator forms the root of the
network tree and might bridge to other networks. There is exactly one ZigBee coordinator
in each network since it is the device that started the network originally. It is able to store
information about the network, including acting as the Trust Center & repository for
security keys[8][9].
• ZigBee Router (ZR): As well as running an application function, a router can act as an
intermediate router, passing on data from other devices.
• ZigBee End Device (ZED): Contains just enough functionality to talk to the parent node
(either the coordinator or a router); it cannot relay data from other devices. This
relationship allows the node to be asleep a significant amount of the time thereby giving
long battery life. A ZED requires the least amount of memory, and therefore can be less
expensive to manufacture than a ZR or ZC.

Protocols
The protocols build on recent algorithmic research (Ad-hoc On-demand Distance Vector,
neuRFon) to automatically construct a low-speed ad-hoc network of nodes. In most large
network instances, the network will be a cluster of clusters. It can also form a mesh or a single
cluster. The current profiles derived from the ZigBee protocols support beacon and non-beacon
enabled networks.

In non-beacon-enabled networks (those whose beacon order is 15), an unslotted CSMA/CA


channel access mechanism is used. In this type of network, ZigBee Routers typically have their
receivers continuously active, requiring a more robust power supply. However, this allows for
heterogeneous networks in which some devices receive continuously, while others only transmit
when an external stimulus is detected. The typical example of a heterogeneous network is a
wireless light switch: The ZigBee node at the lamp may receive constantly, since it is connected
to the mains supply, while a battery-powered light switch would remain asleep until the switch is
thrown. The switch then wakes up, sends a command to the lamp, receives an acknowledgment,
and returns to sleep. In such a network the lamp node will be at least a ZigBee Router, if not the
ZigBee Coordinator; the switch node is typically a ZigBee End Device.

In beacon-enabled networks, the special network nodes called ZigBee Routers transmit periodic
beacons to confirm their presence to other network nodes. Nodes may sleep between beacons,
thus lowering their duty cycle and extending their battery life. Beacon intervals may range from
15.36 milliseconds to 15.36 ms * 214 = 251.65824 seconds at 250 kbit/s, from 24 milliseconds to
24 ms * 214 = 393.216 seconds at 40 kbit/s and from 48 milliseconds to 48 ms * 2 14 = 786.432
seconds at 20 kbit/s. However, low duty cycle operation with long beacon intervals requires
precise timing, which can conflict with the need for low product cost.

In general, the ZigBee protocols minimize the time the radio is on so as to reduce power use. In
beaconing networks, nodes only need to be active while a beacon is being transmitted. In non-
beacon-enabled networks, power consumption is decidedly asymmetrical: some devices are
always active, while others spend most of their time sleeping.
Except for the Smart Energy Profile 2.0, which will be MAC/PHY agnostic, ZigBee devices are
required to conform to the IEEE 802.15.4-2003 Low-Rate Wireless Personal Area Network
(WPAN) standard. The standard specifies the lower protocol layers—the physical layer (PHY),
and the media access control (MAC) portion of the data link layer (DLL). This standard specifies
operation in the unlicensed 2.4 GHz (worldwide), 915 MHz (Americas) and 868 MHz (Europe)
ISM bands. In the 2.4 GHz band there are 16 ZigBee channels, with each channel requiring
5 MHz of bandwidth. The center frequency for each channel can be calculated as, FC = (2405 + 5
* (ch - 11)) MHz, where ch = 11, 12, ..., 26.

The radios use direct-sequence spread spectrum coding, which is managed by the digital stream
into the modulator. BPSK is used in the 868 and 915 MHz bands, and OQPSK that transmits
four bits per symbol is used in the 2.4 GHz band. The raw, over-the-air data rate is 250 kbit/s per
channel in the 2.4 GHz band, 40 kbit/s per channel in the 915 MHz band, and 20 kbit/s in the
868 MHz band. Transmission range is between 10 and 75 meters (33 and 246 feet) and up to
1500 meters for zigbee pro, although it is heavily dependent on the particular environment. The
output power of the radios is generally 0 dBm (1 mW).

The basic channel access mode is "carrier sense, multiple access/collision avoidance"
(CSMA/CA). That is, the nodes talk in the same way that people converse; they briefly check to
see that no one is talking before they start. There are three notable exceptions to the use of
CSMA. Beacons are sent on a fixed timing schedule, and do not use CSMA. Message
acknowledgments also do not use CSMA. Finally, devices in Beacon Oriented networks that
have low latency real-time requirements may also use Guaranteed Time Slots (GTS), which by
definition do not use CSMA.

ZigBee RF4CE

On March 3, 2009 the RF4CE (Radio Frequency for Consumer Electronics) Consortium agreed
to work with the ZigBee Alliance to jointly deliver a standardized specification for radio
frequency-based remote controls. ZigBee RF4CE is designed to be deployed in a wide range of
remotely-controlled audio/visual consumer electronics products, such as TVs and set-top boxes.
It promises many advantages over existing remote control solutions, including richer
communication and increased reliability, enhanced features and flexibility, interoperability, and
no line-of-sight barrier.[10]

Software and hardware

The software is designed to be easy to develop on small, inexpensive microprocessors. The radio
design used by ZigBee has been carefully optimized for low cost in large scale production. It has
few analog stages and uses digital circuits wherever possible.

Even though the radios themselves are inexpensive, the ZigBee Qualification Process involves a
full validation of the requirements of the physical layer. This amount of concern about the
Physical Layer has multiple benefits, since all radios derived from that semiconductor mask set
would enjoy the same RF characteristics. On the other hand, an uncertified physical layer that
malfunctions could cripple the battery lifespan of other devices on a ZigBee network. Where
other protocols can mask poor sensitivity or other esoteric problems in a fade compensation
response, ZigBee radios have very tight engineering constraints: they are both power and
bandwidth constrained. Thus, radios are tested to the ISO 17025 standard with guidance given by
Clause 6 of the 802.15.4-2006 Standard. Most vendors plan to integrate the radio and
microcontroller onto a single chip [4] getting smaller devices [5].

History

• ZigBee-style networks began to be conceived around 1998, when many installers realized
that both Wi-Fi and Bluetooth were going to be unsuitable for many applications. In
particular, many engineers[by whom?]
saw a need for self-organizing ad-hoc digital radio
networks.[citation needed]
• The IEEE 802.15.4-2003 standard was completed in May 2003 and has been superseded
by the publication of IEEE 802.15.4-2006. [6]
• In the summer of 2003, Philips Semiconductors, a major mesh network supporter, ceased
the investment. Philips Lighting has, however, continued Philips' participation, and
Philips remains a promoter member on the ZigBee Alliance Board of Directors.[citation needed]
• The ZigBee Alliance announced in October 2004 that the membership had more than
doubled in the preceding year and had grown to more than 100 member companies, in 22
countries. By April 2005 membership had grown to more than 150 companies, and by
December 2005 membership had passed 200 companies.[citation needed]
• The ZigBee specifications were ratified on 14 December 2004.[citation needed]
• The ZigBee Alliance announces public availability of Specification 1.0 on 13 June 2005,
known as ZigBee 2004 Specification.
• The ZigBee Alliance announces the completion and immediate member availability of
the enhanced version of the ZigBee Standard in September 2006, known as ZigBee 2006
Specification.
• During the last quarter of 2007, ZigBee PRO, the enhanced ZigBee specification was
finalized.[citation needed]

Origin of the ZigBee name

The name of the brand is originated with reference to the behaviour of honey bees after their
return to the beehive

Buzzer

A buzzer or beeper is an audio signaling device, which may be mechanical, electromechanical,


or Piezoelectric. Typical uses of buzzers and beepers include alarms, timers and confirmation of
user input such as a mouse click or keystroke.

Mechanical

A joy buzzer is an example of a purely mechanical buzzer.

Electromechanical

Early devices were based on an electromechanical system identical to an electric bell without the
metal gong. Similarly, a relay may be connected to interrupt its own actuating current, causing
the contacts to buzz. Often these units were anchored to a wall or ceiling to use it as a sounding
board. The word "buzzer" comes from the rasping noise that electromechanical buzzers made.

Piezoelectric
Piezoelectric disk beeper

A piezoelectric element may be driven by an oscillating electronic circuit or other audio signal
source, driven with a piezoelectric audio amplifier. Sounds commonly used to indicate that a
button has been pressed are a click, a ring or a beep.

Uses

• Annunciator panels
• Electronic metronomes
• Game shows
• Microwave ovens and other household appliances
• Sporting events such as basketball games

An alarm gives an audible or visual warning about a problem or condition.

Alarms include:

• burglar alarms, designed to warn of burglaries; this is often a silent alarm: the police or
guards are warned without indication to the burglar, which increases the chances of
catching him or her.
• alarm clocks can produce an alarm at a given time
• distributed control manufacturing systems or DCSs, found in nuclear power plants,
refineries and chemical facilities also generate alarms to direct the operator's attention to
an important event that he or she needs to address.
• alarms in an operation and maintenance (O&M) monitoring system, which informs the
bad working state of (a particular part of) the system under monitoring.
o first-out alarm
• safety alarms, which go off if a dangerous condition occurs. Common public safety
alarms include:
o tornado sirens
o fire alarms
 "Multiple-alarm fire", a locally-specific measure of the severity of a fire
and the fire-department reaction required.
o car alarms
o community Alarm or autodialer alarm (medical alarms)
o air raid sirens
o personal alarm
o tocsins — a historical method of raising an alarm

Alarms have the capability of causing a fight-or-flight response in humans; a person under this
mindset will panic and either flee the perceived danger or attempt to eliminate it, often ignoring
rational thought in either case. We can characterise a person in such a state as "alarmed".

With any kind of alarm, the need exists to balance between on the one hand the danger of false
alarms (called "false positives") — the signal going off in the absence of a problem — and on the
other hand failing to signal an actual problem (called a "false negative"). False alarms can waste
resources expensively and can even be dangerous. For example, false alarms of a fire can waste
firefighter manpower, making them unavailable for a real fire, and risk injury to firefighters and
others as the fire engines race to the alleged fire's location. In addition, false alarms may
acclimatise people to ignore alarm signals, and thus possibly to ignore an actual emergency:
Aesop's fable of The Boy Who Cried Wolf exemplifies this problem.

Etymology
The word comes from the Old French À l'arme meaning "To the arms", "To the weapons",
telling armed men to pick up their weapons and get ready for action, because an enemy may have
suddenly appeared.

Software components

Configuring the Simulator

Open the Keil µ Vision2

Go to Project – Open Project and browse for Hello in Ch03_00 in Pont and open it.
Go to Project – Select Device for Target ‘Target1’

Select 8052(all variants) and click OK


Now we need to check the oscillator frequency:

Go to project – Options for Target ‘Target1’

Make sure that the oscillator frequency is 12MHz.


Building the Target

Build the target as illustrated in the figure below

Running the Simulation


Having successfully built the target, we are now ready to start the debug session and run the
simulator.

First start a debug session

The flashing LED we will view will be connected to Port 1. We therefore want to
observe the activity on this port
To ensure that the port activity is visible, we need to start the ‘periodic window
update’ flag
Go to Debug - Go
While the simulation is running, view the performance analyzer to check the delay
durations.
Go to
Debug – Performance Analyzer and click on it

Double click on DELAY_LOOP_Wait in Function Symbols: and click Define button


Introduction to Micro vision Keil (IDE)

Keil is a cross compiler. So first we have to understand the concept of compilers and
cross compilers. After then we shall learn how to work with keil.

Concept of compiler: -

Compilers are programs used to convert a High Level Language to object code.
Desktop compilers produce an output object code for the underlying
microprocessor, but not for other microprocessors. I.E the programs written in one
of the HLL like ‘C’ will compile the code to run on the system for a particular
processor like x86 (underlying microprocessor in the computer). For example
compilers for Dos platform is different from the Compilers for Unix platform

So if one wants to define a compiler then compiler is a program that translates


source code into object code. The compiler derives its name from the way it
works, looking at the entire piece of source code and collecting and reorganizing
the instruction. See there is a bit little difference between compiler and an
interpreter. Interpreter just interprets whole program at a time while compiler
analyzes and execute each line of source code in succession, without looking at
the entire program.

The advantage of interpreters is that they can execute a program immediately.


Secondly programs produced by compilers run much faster than the same
programs executed by an interpreter. However compilers require some time
before an executable program emerges. Now as compilers translate source code
into object code, which is unique for each type of computer, many compilers are
available for the same language.

Concept of cross compiler: -

A cross compiler is similar to the compilers but we write a program for the target
processor (like 8051 and its derivatives) on the host processors (like computer of
x86)

It means being in one environment you are writing a code for another
environment is called cross development. And the compiler used for cross
development is called cross compiler

So the definition of cross compiler is a compiler that runs on one computer but
produces object code for a different type of computer. Cross compilers are used
to generate software that can run on computers with a new architecture or on
special-purpose devices that cannot host their own compilers. Cross compilers
are very popular for embedded development, where the target probably couldn't
run a compiler. Typically an embedded platform has restricted RAM, no hard
disk, and limited I/O capability. Code can be edited and compiled on a fast host
machine (such as a PC or Unix workstation) and the resulting executable code
can then be downloaded to the target to be tested. Cross compilers are
beneficial whenever the host machine has more resources (memory, disk, I/O
etc) than the target. Keil C Compiler is one such compiler that supports a huge
number of host and target combinations. It supports as a target to 8 bit
microcontrollers like Atmel and Motorola etc.

Why do we need cross compiler?

There are several advantages of using cross compiler. Some of them are
described as follows

• By using this compilers not only can development of complex embedded


systems be completed in a fraction of the time, but reliability is improved,
and maintenance is easy.

• Knowledge of the processor instruction set is not required.

• A rudimentary knowledge of the 8051’s memory architecture is desirable


but not necessary.

• Register allocation and addressing mode details are managed by the


compiler.

• The ability to combine variable selection with specific operations


improves program readability.

• Keywords and operational functions that more nearly resemble the


human thought process can be used.

• Program development and debugging times are dramatically reduced


when compared to assembly language programming.
• The library files that are supplied provide many standard routines (such
as formatted output, data conversions, and floating-point arithmetic) that
may be incorporated into your application.

• Existing routine can be reused in new programs by utilizing the modular


programming techniques available with C.

• The C language is very portable and very popular. C compilers are


available for almost all target systems. Existing software investments can be
quickly and easily converted from or adapted to other processors or
environments.

Now after going through the concept of compiler and cross compilers lets we start
with Keil C cross compiler.

Keil C cross compiler: -

Keil is a German based Software development company. It provides several


development tools like

• IDE (Integrated Development environment)

• Project Manager

• Simulator

• Debugger

• C Cross Compiler, Cross Assembler, Locator/Linker

Keil Software provides you with software development tools for the ARM
microcontrollers. With these tools, you can generate embedded applications for the
multitude of ARM derivatives. Keil provides following tools for ARM development

1. ARM Optimizing C Cross Compiler,

2. Macro Assembler,
3. ARM Utilities (linker, object file converter, library manager),

4. Source-Level Debugger/Simulator,

5. µVision for Windows Integrated Development Environment.

The keil ARM tool kit includes three main tools, assembler, compiler and linker.

An assembler is used to assemble your ARM assembly program

A compiler is used to compile your C source code into an object file

A linker is used to create an absolute object module suitable for your in-circuit
emulator.

Embedded C:

Data Types:

U people have already come across the word “Data types” in C- Language. Here also the
functionality and the meaning of the word is same except a small change in the prefix of their
labels. Now we will discuss some of the widely used data types for embedded C- programming.

Data Types Size in Bits Data Range/Usage


unsigned char 8-bit 0-255
signed char 8-bit -128 to +127
unsigned int 16-bit 0 to 65535
signed int 16-bit -32,768 to +32,767
sbit 1-bit SFR bit addressable only
Bit 1-bit RAM bit addressable only
sfr 8-bit RAM addresses 80-FFH
only
Sbit (single bit):

The sbit data type is widely used and designed specifically to access single bit
addressable registers. It allows access to the single bits of the SFR registers.

Source code:

#include<reg52.h>
#include<intrins.h>
#include "lcd.h"
void _nop_(void);

#define delay_us _nop_(); //generates 1 microsecond

sbit sck=P3^4;
sbit dout=P3^5;
sbit din=P3^6;
sbit cs=P3^7;

unsigned char txrxbyte(unsigned char);

unsigned char byte1,byte2,byte3;


float dcode1,dcode2,dcode3;
float vref=4.096,output,output1,output2,output3;
unsigned int i,j;

void integer_lcd(int);
void timer(unsigned int);
void init_lcd(void);
void cmd_lcd(unsigned char);
void write_lcd(unsigned char);
void delay_ms(unsigned int);

bit flag=0;
void transmit(unsigned char *);
void integer_lcd1(int);

void main(void)
{
unsigned int p=0,t=0;
TMOD=0x20;
SCON=0x50;
TH1=0XFD;
TR1=1;
IE=0x90;

init_lcd();
display_lcd("real time patient");
cmd_lcd(0xc0);
display_lcd("USING CAN BUS");
delay_ms(1000);

while(1)
{

cs=0;
byte1=txrxbyte(0x06);
byte2=txrxbyte(0x00);
byte3=txrxbyte(0x00);
i=(byte2&0x0f);
i=(i<<8|byte3);
dcode1=(((4.096*i)/4096));
//output1=dcode1;
dcode1=dcode1/0.035;
cs=1;
delay_ms(10);

cs=0;
byte1=txrxbyte(0x06);
byte2=txrxbyte(0x40);
byte3=txrxbyte(0x00);

i=(byte2&0x0f);
i=(i<<8|byte3);
dcode2=(((4.096*i)/4096));
//output1=dcode1;
dcode2=dcode2*100;
cs=1;
delay_ms(10);
if(dcode2>45)
{
SBUF='T';
while(!TI);
TI=0;
}
else
{
SBUF='t';
while(!TI);
TI=0;
}
if(dcode1>70)
{
SBUF='H';
while(!TI);
TI=0;
}
else
{
SBUF='h';
while(!TI);
TI=0;
}
cmd_lcd(0x01);
display_lcd("TEMPARATURE: *C");
cmd_lcd(0xc0);
integer_lcd(dcode2);
delay_ms(1000);

cmd_lcd(0x01);
display_lcd("Humidity: %RH");
cmd_lcd(0xc0);
integer_lcd(dcode1);
delay_ms(1000);
}
}

void transmit(unsigned char *t_data)


{

while(*t_data!='\0')
{
SBUF = *t_data;
while(!TI);
TI=0;
t_data++;
}

unsigned char txrxbyte( unsigned char d)


{
char mask=0x80;
unsigned char i,c=0x00;

for(i=0;i<8;i++)
{
sck=1;
if(d&mask)
{din=1;}
else
{din=0;}
sck=0;
if(dout==1)
{c=c|mask;}
mask=mask>>1;

return c;
}

Receiver section:
//program to implement rs232 serial communication using loop back test

#include<reg51.h>

#define LCD P2
sbit AB =P1^0;
void init_lcd(void);
void cmd_lcd(unsigned char);
void write_lcd(unsigned char);
void display_lcd(unsigned char *);
void delay_ms(unsigned int);

void serial_intr(void) interrupt 4;

unsigned char *s="TARANG WORKING",*c;


void main(void)
{
init_lcd();
TMOD=0x20; //set timer1 to mode2
SCON=0x50; //set serial communication parameters,
// mode1=1 start bit, 8 data bits, 1 stop bit, no parity
& receive enable
IE=0x90; //set global interrupt bit EA=1, serial interrupt bit ES=1
TH1=0xfd; //set 9600 baud rate
TR1=1; //start timer1
c=s;

display_lcd(" CAN BASED ");


cmd_lcd(0xc0);
display_lcd("PATIENT MONITORING");
cmd_lcd(0x01);
display_lcd("TEMPARATURE:");

while(1);
{
cmd_lcd(0xc0);
while(*c)
{
SBUF=*c++; //transmit byte
delay_ms(100);
}
delay_ms(1000);
c=s;
}
}

//interrupt service routine for serial interrupt


void serial_intr(void) interrupt 4
{
if(TI) //if transmit interrupt, clear TI
TI=0;
if(RI) //if receive interrupt, clear RI
{
if(SBUF=='T')
{
cmd_lcd(0x01);
display_lcd("TEMPARATURE:");
}
else if(SBUF=='H')
{
cmd_lcd(0x01);
display_lcd("humidity %rh:");
}
else if(SBUF==' ')
cmd_lcd(0xC0);
else
write_lcd(SBUF); //display received byte
RI=0;
}
}

void init_lcd(void)
{
delay_ms(10);
cmd_lcd(0x28);
cmd_lcd(0x0e);
cmd_lcd(0x06);
cmd_lcd(0x01);
}

void cmd_lcd(unsigned char c)


{
unsigned char temp;
temp=c>>4;
LCD=temp<<4|0x02;
LCD=0;
LCD=c<<4|0x02;
LCD=0;
delay_ms(2);
}

void write_lcd(unsigned char c)


{
unsigned char temp;
temp=c>>4;
LCD=temp<<4|0x03;
LCD=0;
LCD=c<<4|0x03;
LCD=0;
delay_ms(2);
}

void display_lcd(unsigned char *s)


{
while(*s)
write_lcd(*s++);
}

void delay_ms(unsigned int i)


{
unsigned int j;
while(i-->0)
{
for(j=0;j<500;j++)
{
;
}
}
}
BIBLIOGRAPHY

The 8051 Micro controller and Embedded Systems


-Muhammad Ali Mazidi
-Janice Gillispie Mazidi

The 8051 Micro controller Architecture, Programming & Applications


-Kenneth J.Ayala

Fundamentals Of Micro processors and Micro computers


-B.Ram
Micro processor Architecture, Programming & Applications
-Ramesh S.Gaonkar

Electronic Components
-D.V.Prasad

Wireless Communications
- Theodore S. Rappaport

References on the Web:

www.national.com
www.nxp.com
www.8052.com
www.microsoftsearch.com
www.geocities.com

You might also like