Professional Documents
Culture Documents
INDUSTRIES
CONTENTS
1
7.6 ETCHING 51
7.7 SOLDER MASK 52
7.8 HOT AIR LEVELING 52
SOFTWARE
8 SOFTWARE TOOLS
8.1 KEILC COMPILER 53
8.2 SIMULATOR 54
9 PROGRAM 56
10 PROGRAM DESCRIPTION 60
11 ADVANTAGES 61
12 APPLICATIONS 61
13 CONCLUSION 62
14 REFERENCES 63
2
1. ABSTRACT
Microcontroller.
LCD display.
Keypad.
RTC[Real Time Clock]
Relay.
The LCD display, which we are going to use, is two line sixteen-character
alphanumeric LCD displays. The Timing to which the bell should ring can be
entered through a keypad. This has keys in up arrows, down arrows, left and
right keys. All the necessary timings will be stored in external memory. The final
output will be given to the relays through relay driver circuit. The controller will
always checks the set time with real time clock, if both are matched it will trigger
the relay. Before implementing the microcontroller in this hardware we have to
program that for this application.
3
2. INTRODUCTION
Automatic timer is a useful to all industries. They may have hour basis
classes. This is useful motor on /off at programmed time. Almost there may be
eight hours per day. The controlling time may required to change the timings
accordingly. it has a real time clock IC to display the timings in the LCD display.
The LCD display, which we are going to use, is two line sixteen-character
alphanumeric LCD displays. The Timing to which the bell should ring can be
entered through a keypad. This has keys in up arrows, down arrows, left and
right keys. All the necessary timings will be stored in external memory. The final
output will be given to the relays through relay driver circuit. The controller will
always checks the set time with real time clock, if both are matched it will trigger
the relay. Before implementing the microcontroller in this hardware we have to
program that for this application.
The real time can be changeable through keypad connected and relay
ON/OFF timings also changeable through keypad. Real time is continuously
displayed on the LCD. Whenever it reaches set time it will direct the relay.
4
3. BLOCK DIAGRAM
5
4. BLOCK DIAGRAM DESCRIPTION
4.1 RTC
DESCRIPTION:
systems controlling. Complexity varies from low, with a single chip, to very high
with multiple units, peripherals and networks mounted inside a large chassis or
enclosure.
6
The DS12887 real-time clock (RTC) plus RAM is designed to be a direct
replacement for the DS1287.The DS12887 is identical in form, fit, and function to
the DS1287, and has an additional 64 bytes of general-purpose RAM. The logic
level presented on AD6 during the address portion of an access cycle determines
access to this additional RAM space. A lithium energy source, quartz crystal, and
write-protection circuitry are contained within a 24-pin dual in-line package. As
such, the DS12887 is a complete subsystem replacing 16 components in a
typical application. The functions include a nonvolatile time-of-day clock, an
alarm, a 100-year calendar, programmable interrupt, square-wave generator, and
114 bytes of NV SRAM. The RTC is unique in that time-of-day and memory are
maintained even in the absence of power.
Features:
Drop-in replacement for IBM AT computer clock/calendar
Pin-compatible with the MC146818B and DS1287
Totally nonvolatile with over 10 years of operation in the absence of power
Self-contained subsystem includes lithium, quartz, and support circuitry
Counts seconds, minutes, hours, days, day of the week, date, month, and
year with leap-year compensation valid up to 2100
Binary or BCD representation of time, calendar, and alarm
12-hour or 24-hour clock with AM and PM in 12-hour mode
Daylight Savings Time option
Selectable between Motorola and Intel bus timing
Multiplex bus for pin efficiency
Interfaced with software as 128 RAM locations
14 bytes of clock and control registers
114 bytes of general-purpose RAM
Programmable square-wave output signal
Bus-compatible interrupt signals (IRQ)
7
Three interrupts are separately software-maskable and testable
Time-of-day alarm once/second to once/day
Periodic rates from 122ms to 500ms
End-of-clock update cycle
Underwriters Laboratory (UL) recognized
4.2 KEYPAD
Numeric keypads usually operate in two modes: when Num Lock is off,
keys 8, 6, 2, 4 act like an arrow keys and 7, 9, 3, 1 act like Home, PgUp, PgDn
and End; when Num Lock is on, digits keys produce corresponding digits. These,
however, differ from the numeric keys at the top of the keyboard in that, when
combined with the Alt key on a PC, they are used to enter characters which may
not be otherwise available: for example, Alt-0169 produces the copyright symbol.
8
These are referred to as Alt codes. On Apple Computer Macintosh computers,
which lack a Num Lock key, the numeric keypad always produces only numbers.
The num lock key is replaced by the clear key.
AAAAA
4.3 MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLER
revolutionizing various industries and influencing our day to day life more strongly
than one can imagine. Since its emergence in the early 1980's the
intelligent digital systems. It is finding using diverse area, starting from simple
children's toys to highly complex spacecraft. Because of its versatility and many
system design and development. It identifies the vital features responsible for
their tremendous impact, the acute educational need created by them and
MICROCONTROLLER
9
A microcontroller is a complete microprocessor system built on a single
single chip substantially reduces the cost of building simple products, which use
idea of using a microprocessor for low cost products comes up often. But the
typical 8-bit microprocessor based system, such as one using a Z80 and 8085 is
expensive. Both 8085 and Z80 system need some additional circuits to make a
product design may requires only very simple system, the parts needed to make
chip microcontroller. This could be called microcomputer, as all the major parts
are in the IC. Most frequently they are called microcontroller because they are
computer. Micro suggests that the device is small, and controller tells you that
the device' might be used to control objects, processes, or events. Another term
10
to describe a microcontroller is embedded controller, because the microcontroller
and its support circuits are often built into, or embedded in, the devices they
control.
Decoding, and Serial transmission circuits. Many low cost products, such as
Toys, Electric Drills, Microwave Ovens, VCR and a host of other consumer and
EVOLUTION OF MICROCONTROROLLER
Markets for microcontrollers can run into millions of units per application.
produced a mind-numbing array of designs that would seem to meet almost any
need. Some of the chips listed in this section are no longer regular production,
most are current, and a few are best termed as "smoke ware": the dreams of an
11
Sl.N Manufacture Chip Year No. N RA RO Other
o r Designatio of o M M Feature
n Pin of s
s I/
O
4 Bit MC
8 bit MC
12
5. Zilog Z8 - 40 32 128 2K External
Memory
128K,
16 Bit MC
32 Bit MC
13
APPLICATION
microcontrollers are built-in. If it has buttons and a digital display, chances are it
Try to make a list and counting how many devices and the events with
microcontrollers you use in a typical day. Here are some examples: if your clock
radio goes off, and you hit the snooze button a few times in the morning, the first
thing you do in your day is interact with a microcontroller. Heating up some food
in the microwave oven and making a call on a cell phone also involve operating
microcontrollers. That's just the beginning. Here are a few more examples:
Turning on the Television with a handheld remote, playing a hand held game,
Using a calculator, and Checking your digital wrist watch. All those devices have
microcontrollers inside them, that interact with you. Consumer appliances aren't
designs and other high-tech devices are also built with microcontrollers.
14
BLOCK DIAGRAM OF MICROCONTROLLER
15
PIN DIAGRAM
PIN DESCRIPTION
VCC
Supply voltage.
GND
Ground.
Port 0
Port 0 is an 8-bit open drain bidirectional I/O port. As an output port each
pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be
data memory. In this mode P0 has internal pullups. Port 0 also receives the code
bytes during Flash programming, and outputs the code bytes during program
16
Port 1
Port 1 is an 8-bit bidirectional I/O port with internal pullups. The Port 1
output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins
they are pulled high by the internal pullups and can be used as inputs. As inputs,
Port 1 pins that are externally being pulled low will source current (IIL) because
of the internal pullups. Port 1 also receives the low-order address bytes during
Port 2
Port 2 is an 8-bit bidirectional I/O port with internal pullups. The Port 2
output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins
they are pulled high by the internal pullups and can be used as inputs. As inputs,
Port 2 pins that are externally being pulled low will source current (IIL) because
of the internal pullups. Port 2 emits the high-order address byte during fetches
from external program memory and during accesses to external data memory
that use 16-bit addresses (MOVX @ DPTR). In this application it uses strong
internal pull-ups when emitting 1s. During accesses to external data memory
that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2
Special Function Register. Port 2 also receives the high-order address bits and
Port 3
Port 3 is an 8-bit bidirectional I/O port with internal pullups. The Port 3
output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins
they are pulled high by the internal pullups and can be used as inputs. As inputs,
17
Port 3 pins that are externally being pulled low will source current (IIL) because
of the pullups. Port 3 also serves the functions of various special features of the
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
ALE/PROG
Address Latch Enable output pulse for latching the low byte of the address
during accesses to external memory. This pin is also the program pulse input
constant rate of 1/6 the oscillator frequency, and may be used for external timing
or clocking purposes. Note, however, that one ALE pulse is skipped during each
8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction.
18
Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect
PSEN
When the AT89C51 is executing code from external program memory, PSEN is
activated twice each machine cycle, except that two PSEN activations are
EA/VPP
the device to fetch code from external program memory locations starting at
executions.
This pin also receives the 12-volt programming enable voltage (VPP)
XTAL1
Input to the inverting oscillator amplifier and input to the internal clock
operating circuit.
XTAL2
Output from the inverting oscillator amplifier. It should be noted that when
idle is terminated by a hard ware reset, the device normally resumes program
execution, from where it left off, up to two machine cycles before the internal
reset algorithm takes control. On-chip hardware inhibits access to internal RAM
19
in this event, but access to the port pins is not inhibited. To eliminate the
the instruction following the one that invokes Idle should not be one that writes to
ARCHITECTURE OF 89C51
20
ADVANTAGES OF MICROCONTROLLERS:
go for external memory such as RAM, ROM or EPROM and peripherals and
hence the size of the PCB will be large enough to hold all the required
peripherals. But, the micro controller has got all these peripheral facilities on a
microprocessor is that a controller often deals with bits , not bytes as in the real
world application, for example switch contacts can only be open or close,
indicators should be lit or dark and motors can be either turned on or off and so
forth.
21
Full Duplex UART
On - Chip EEPROM
IDLE MODE:
The CPU is turned off while the RAM and other on - chip peripherals
continue operating. Inn this mode current draw is reduced to about 15 percent of
All on-chip activities are suspended while the on – chip RAM continues to
hold its data. In this mode, the device typically draws less than 15 Micro Amps
22
POWER ON RESET:
When power is turned on, the circuit holds the RST pin high for an amount
of time that depends on the capacitor value and the rate at which it charges.
To ensure a valid reset, the RST pin must be held high long enough to
allow the oscillator to start up plus two machine cycles. On power up, Vcc should
rise within approximately 10ms. The oscillator start-up time depends on the
oscillator frequency. For a 10 Mhz crystal, the start-up time is typically 1ms.With
the given circuit, reducing Vcc quickly to 0 causes the RST pin voltage to
momentarily fall below 0V. How ever, this voltage is internally l limited and will
MEMORY ORGANIZATION:
All Atmel Flash micro controllers have separate address spaces for
porgram and data memory as shown in Fig 1.The logical separation of program
and data memory allows the data memory to be accessed by 8 bit addresses .
Nevertheless 16 Bit data memory addresses can also be generated through the
DPTR register.
directly addressable program memory. The read strobe for external program
memory is the Program Store Enable Signal (PSEN) Data memory occupies a
23
external memory can be directly addressed in the external data memory space.
The CPU generates read and write signals, RD and WR, during external data
memory accesses. External program memory and external data memory can be
combined by an applying the RD and PSEN signals to the inputs of AND gate
and using the output of the fate as the read strobe to the external program/data
memory.
PROGRAM MEMORY:
The map of the lower part of the program memory, after reset, the CPU
begins execution from location 0000h. Each interrupt is assigned a fixed location
in program memory. The interrupt causes the CPU to jump to that location,
assigned to location 0003h. If external Interrupt 0 is used, its service routine must
begin at location 0003h. If the I interrupt in not used its service location is
The interrupt service locations are spaced at 8 byte intervals 0003h for
External interrupt 0, 000Bh for Timer 0, 0013h for External interrupt 1,001Bh for
Timer1, and so on. If an Interrupt service routine is short enough (as is often the
case in control applications) it can reside entirely within that 8-byte interval.
Longer service routines can use a jump instruction to skip over subsequent
make this selection, strap the External Access (EA) pin to either Vcc or GND. For
24
strapped to Vcc, program fetches to addresses 0000h through 0FFFh are
DATA MEMORY:
The Internal Data memory is dived into three blocks namely, Refer Fig
Internal Data memory Addresses are always 1 byte wide, which implies an
address space of only 256 bytes. However, the addressing modes for internal
RAM can in fact accommodate 384 bytes. Direct addresses higher than 7Fh
access one memory space, and indirect addresses higher than 7Fh access a
instructions call out these registers as R0 through R7. Two bits in the Program
Status Word (PSW) Select, which register bank, is in use. This architecture
allows more efficient use of code space, since register instructions are shorter
The next 16-bytes above the register banks form a block of bit
addressable memory space. The micro controller instruction set includes a wide
selection of single - bit instructions and this instruction can directly address the
128 bytes in this area. These bit addresses are 00h through 7Fh. either direct or
indirect addressing can access all of the bytes in lower 128 bytes. Indirect
25
addressing can only access the upper 128. The upper 128 bytes of RAM are only
controls etc., direct addressing can only access these register. In general, all
Atmel micro controllers have the same SFRs at the same addresses in SFR
space are both byte and bit Addressable. The bit Addressable SFRs are those
whose address ends in 000B. The bit addresses in this area are 80h through
FFh.
ADDRESSING MODES:
DIRECT ADDRESSING:
instruction. Only internal data RAM and SFR’s can be directly addressed.
INDIRECT ADDRESSING:
address of the operand. Both internal and external RAM can indirectly address.
The address register for 8-bit addresses can be either the Stack Pointer or
R0 or R1 of the selected register Bank. The address register for 16-bit addresses
26
INDEXED ADDRESSING:
bit base register (Either DPTR or the Program Counter) points to the base of the
table, and the accumulator is set up with the table entry number. Adding the
Accumulator data to the base pointer forms the address of the table entry in
program memory.
computed as the sum of the base pointer and the Accumulator data.
REGISTER INSTRUCTION:
Instructions that access the registers this way make efficient use of code, since
this mode eliminates an address byte. When the instruction is executed, one of
four banks is selected at execution time by the row bank select bits in PSW.
point OT ir. In these cases, the opcode itself points to the correct register.
Opcodes.
27
IMMEDIATE CONSTANTS:
The value of a constant can follow the opcode in program memory For
example. MOV A, #100 loads the Accumulator with the decimal number 100.
PSW 7 PSW 0
PSW 6 PSW 1
PSW 5 PSW 2
PSW 4 PSW 3
PSW 0:
PSW1:
PSW2:
PSW3:
28
PSW4:
PSW5:
PSW6:
PSW7:
The Program Status Word contains Status bits that refklect the current
stae of the CPU. The PSW shown if Fig resides in SFR space. The PSW
conrains the Carry Bit, The auxillary Carry (For BCD Operations) the two -
register bank select bits, the Overflow flag, a Parity bit and two user Definable
status Flags.
also serves the as the “Accumulator” for a number of Boolean Operations .The
bits RS0 and RS1 select one of the four register banks. A number of instructions
register to these RAM locations as R0 through R7.The status of the RS0 and
RS1 bits at execution time determines which of the four banks is selected.
The Parity bit reflect the Number of 1s in the Accumulator .P=1 if the
contains an even number of 1s. Thus, the number of 1s in the Accumulator plus
29
P is always even. Two bits in the PSW are uncommitted and can be used as
INTERRUPTS
timer interrupts and a serial port interrupts. The External Interrupts INT0 and
INT1 can each either level activated or transistion - activated, depending on bits
IT0 and IT1 in Register TCON. The Flags that actually generate these interrupts
are the IE0 and IE1 bits in TCON. When the service routine is vectored to
hardware clears the flag that generated an external interrupt only if the interrupt
WA transition - activated. If the interrupt was level - activated, then the external
requesting source (rather than the on-chip hardware) controls the requested flag.
Tf0 and Tf1 generate the Timer 0 and Timer 1 Interrupts, which are set by a
3). When a timer interrupt is generated, the on-chip hardware clears the flag that
generated it when the service routine is vectored to. The logical OR of RI and TI
generate the Serial Port Interrupt. Neither of these flag is cleared by hardware
when the service routine is vectored to. In fact, the service routine normally must
software.
Neither of these flag is cleared by hardware when the service routine is vectored
30
IE: INTERRUPT ENABLE REGISTER
31
OSCILLATOR AND CLOCK CIRCUIT:
XTAL1 and XTAL2 are the input and output respectively of an inverting
configuration, in the frequency range of 1.2 Mhz to 12 Mhz. XTAL2 also the input
To drive the chip with an internal oscillator, one would ground XTAL1 and
XTAL2. Since the input to the clock generator is divide by two filip flop there are
tow phase clock signal to the chip. The phase 1 signal is active during the first
half to each clock period and the phase 2 signals are active during the second
CPU TIMING:
half, during which the phase 1 clock is active and phase 2 half. Arithmetic and
Logical operations take place during phase1 and internal register - to register
The manner in which the use of micro controllers is shaping our lives is
32
A micro controller unit (MCU) uses the microprocessor as its central
The micro controller is the most essential IC for continuous process- based
steel, and electrical, employing programmable logic systems (DCS). PLC and
Micro controller devices have many similarities. When you look at the
differences, they are not so great either. Most common and popular MCUs
each family to satisfy most memory, I/O, data conversion, and timing needs of
enduser applications.
that is fed through its serial or operated on under the control of software and
stored in ROM. Appropriate signals are fed via output ports to control external
33
APPLICATIONS OF MICROCONTROLLERS
applications such as
1. Industrial Control
2. Instrumentation and
Motor
Robotics
In medical instrumentation
Oscilloscopes
Telecommunication
Automobiles
Driving an LCD
Period Measurements
34
4.4 LIQUID CRYSTAL DISPLAY (LCD)
35
numeric data. The recent advances in technology have resulted in better
legibility, more information displaying capability and a wider temperature range.
These have resulted in the LCDs being extensively used in telecommunications
and entertainment electronics. The LCDs have even started replacing the
cathode ray tubes (CRTs) used for the display of text and graphics, and also in
small TV applications.
Crystalonics dot–matrix (alphanumeric) liquid crystal displays are
available in TN, STN types, with or without backlight. The use of C-MOS LCD
controller and driver ICs result in low power consumption. These modules can be
interfaced with a 4-bit or 8-bit microprocessor /Micro controller.
The built-in controller IC has the following features:
Correspond to high speed MPU interface (2MHz)
80 x 8 bit display RAM (80 Characters max)
9,920-bit character generator ROM for a total of 240 character fonts. 208
character fonts (5 x 8 dots) 32 character fonts (5 x 10 dots)
64 x 8 bit character generator RAM 8 character generator RAM 8 character
fonts (5 x 8 dots) 4 characters fonts (5 x 10 dots)
Programmable duty cycles
1/8 – for one line of 5 x 8 dots with cursor
1/11 – for one line of 5 x 10 dots with cursor
1/16 – for one line of 5 x 8 dots with cursor
Wide range of instruction functions display clear, cursor home, display on/off,
cursor on/off, display character blink, cursor shift, display shift.
Automatic reset circuit, which initializes the controller / driver ICs after power
on.
36
4.5 RELAY OPERATION
The coil of a relay passes a relatively large current, typically 30mA for a
12V relay, but it can be as much as 100mA for relays designed to operate from
lower voltages. Most ICs (chips) cannot provide this current and a transistor is
usually used to amplify the small IC current to the larger value required for the
relay coil. The maximum output current for the popular 555 timer IC is 200mA so
these devices can supply relay coils directly without amplification.
4.6 EEPROM:
37
memory for the same capacity because each cell usually needs both a read,
write and erase transistor, while in flash memory the erase circuits are shared by
large blocks of cells (often 512×8).
Newer non-volatile memory technologies such as FeRAM and MRAM are slowly
replacing EEPROMs in some applications, but are expected to remain a small
fraction of the EEPROM market for the foreseeable future.
1) Read mode
2) Standby mode
3) Write inhibit
4) Byte write.
A complete family of packages is offered to provide utmost flexibility in
operation.
38
I/O 1 ------------------I/O7
DATA PROTECTION
SYSTEM
CONTROL
ENABLE/OUTPUT ENABLE
CONTROL LOGIC
A1
| L
| A Y Y GATING
| T DECODER
| C
| H
| E
| S
| X 16 KB
| DECODER CELL MATRIX
|
A12
39
5. OVERALL CIRCUIT DIAGRAM
40
6. OVERALL CIRCUIT DIAGRAM DESCRIPTION
Block diagram
41
Working principle
Transformer
The transformer will step down the power supply voltage (0-230V) to (0-6V) level.
Then the secondary of the potential transformer will be connected to the
precision rectifier, which is constructed with the help of op–amp. The advantages
of using precision rectifier are it will give peak voltage output as DC; rest of the
circuits will give only RMS output.
Bridge rectifier
When four diodes are connected as shown in figure, the circuit is called as
bridge rectifier. The input to the circuit is applied to the diagonally opposite
corners of the network, and the output is taken from the remaining two corners.
The negative potential at point B will forward bias D1 and reverse D2. At
this time D3 and D1 are forward biased and will allow current flow to pass
through them; D4 and D2 are reverse biased and will block current flow.
The path for current flow is from point B through D1, up through RL,
through D3, through the secondary of the transformer back to point B. this path is
indicated by the solid arrows. Waveforms (1) and (2) can be observed across D1
and D3.
42
One-half cycle later the polarity across the secondary of the transformer
reverse, forward biasing D2 and D4 and reverse biasing D1 and D3. Current flow
will now be from point A through D4, up through RL, through D2, through the
secondary of T1, and back to point A. This path is indicated by the broken
arrows. Waveforms (3) and (4) can be observed across D2 and D4. The current
flow through RL is always in the same direction. In flowing through RL this
current develops a voltage corresponding to that shown waveform (5). Since
current flows through the load (RL) during both half cycles of the applied voltage,
this bridge rectifier is a full-wave rectifier.
The maximum voltage that appears across the load resistor is nearly-but
never exceeds-500 v0lts, as result of the small voltage drop across the diode. In
the bridge rectifier shown in view B, the maximum voltage that can be rectified is
the full secondary voltage, which is 1000 volts. Therefore, the peak output
voltage across the load resistor is nearly 1000 volts. With both circuits using the
same transformer, the bridge rectifier circuit produces a higher output voltage
than the conventional full-wave rectifier circuit.
43
IC voltage regulators
44
A fixed three-terminal voltage regulator has an unregulated dc input
voltage, Vi, applied to one input terminal, a regulated dc output voltage, Vo, from
a second terminal, with the third terminal connected to ground.
The series 78 regulators provide fixed positive regulated voltages from 5
to 24 volts. Similarly, the series 79 regulators provide fixed negative regulated
voltages from 5 to 24 volts.
For ICs, microcontroller, LCD --------- 5 volts
For alarm circuit, op-amp, relay circuits ---------- 12 volts
45
6.2 MICROCONTROLLER CIRCUIT
The microcontroller circuit is connected with reset circuit, crystal oscillator circuit,
lcd circuit the reset circuit is the one which is an external interrupt which is
designed to reset the program. And the crystal oscillator circuit is the one used to
generate the pulses to microcontroller and it also called as the heart of the
microcontroller here we have used 12mhz crystal which generates pulses upto
12000000 frequency which is converted it machine cycle frequency when divided
by 12 which is equal to 1000000hz to find the time we have to invert the
frequency so that we get one micro second for each execution of the instruction.
46
The lcd that is liquid crystal display which is used to display the what we need the
lcd has fourteen pins in which three pins for the command and eight pins for the
data. If the data is given to lcd it is write command which is configured by the
programmer otherwise it is read command in which data read to microcontroller
the data pins are given to the to port0 and command pins are given to the port2.
Other than these pin a one pin configured for the contrast of the lcd. Thus the
microcontroller circuit works
Relay:
47
circuit to switch a second circuit which can be completely separate from the first.
For example a low voltage battery circuit can use a relay to switch a 230V AC
mains circuit. There is no electrical connection inside the relay between the two
circuits; the link is magnetic and mechanical.
The coil of a relay passes a relatively large current, typically 30mA for a
12V relay, but it can be as much as 100mA for relays designed to operate from
lower voltages. Most ICs (chips) cannot provide this current and a transistor is
usually used to amplify the small IC current to the larger value required for the
relay coil. The maximum output current for the popular 555 timer IC is 200mA so
these devices can supply relay coils directly without amplification.
Relays are usually SPDT or DPDT but they can have many more sets of
switch contacts, for example relays with 4 sets of changeover contacts are
readily available. Most relays are designed for PCB mounting but you can solder
wires directly to the pins providing you take care to avoid melting the plastic case
of the relay. The animated picture shows a working relay with its coil and switch
contacts. You can see a lever on the left being attracted by magnetism when the
coil is switched on. This lever moves the switch contacts. There is one set of
contacts (SPDT) in the foreground and another behind them, making the relay
DPDT.
48
The relay's switch connections are usually labeled COM, NC and NO:
49
7. PCB DESIGN
7.1 INTRODUCTION:
7.2 MANUFATCURING:
The manufacturing process consists of two methods; print and etch, and
print, plate and etch. The single sided PCBs are usually made using the print and
etch method. The double sided plate through – hole (PTH) boards are made by
the print plate and etch method.
The production of multi layer boards uses both the methods. The inner
layers are printed and etch while the outer layers are produced by print, plate and
etch after pressing the inner layers.
7.3 SOFTWARE:
7.4 PANELISATION:
50
circuits as possible in a panel, which can be operated in every sequence of
subsequent steps in the PCB process. This is called penalization. For the
PTH boards, the next operation is drilling.
7.5 DRILLING:
PCB drilling is a state of the art operation. Very small holes are drilled with
high speed CNC drilling machines, giving a wall finish with less or no smear or
epoxy, required for void free through hole plating.
7.6 PLATING:
The heart of the PCB manufacturing process. The holes drilled in the
board are treated both mechanically and chemically before depositing the copper
by the electro less copper platting process.
7.7 ETCHING:
Once a multiplayer board is drilled and electro less copper deposited, the
image available in the form of a film is transferred on to the out side by photo
printing using a dry film printing process. The boards are then electrolytic plated
on to the circuit pattern with copper and tin. The tin-plated deposit serves an etch
resist when copper in the unwanted area is removed by the conveyor’s spray
etching machines with chemical etch ants. The etching machines are attached to
an automatic dosing equipment, which analyses and controls etch ants
concentrations
51
7.8 SOLDERMASK:
Since a PCB design may call for very close spacing between conductors,
a solder mask has to be applied on the both sides of the circuitry to avoid the
bridging of conductors. The solder mask ink is applied by screening. The ink is
dried, exposed to UV, developed in a mild alkaline solution and finally cured by
both UV and thermal energy.
After applying the solder mask, the circuit pads are soldered using the hot
air leveling process. The bare bodies fluxed and dipped in to a molten solder
bath. While removing the board from the solder bath, hot air is blown on both
sides of the board through air knives in the machines, leaving the board soldered
and leveled. This is one of the common finishes given to the boards. Thus the
double sided plated through whole printed circuit board is manufactured and is
now ready for the components to be soldered.
52
8 SOFTWARE TOOLS
Keil development tools for the 8051 Microcontroller Architecture support every
level of software developer from the professional applications engineer to the
student just learning about embedded software development.
The Keil 8051 Development Tools are designed to solve the complex problems
facing embedded software developers.
When starting a new project, simply select the microcontroller you use
from the Device Database and the µVision IDE sets all compiler, assembler,
linker, and memory options for you.
Numerous example programs are included to help you get started with the
most popular embedded 8051 devices.
53
Simulation helps you understand hardware configurations and avoids
time wasted on setup problems. Additionally, with simulation, you can write
and test applications before target hardware is available.
When you are ready to begin testing your software application with target
hardware, use the MON51, MON390, MONADI, or FlashMON51 Target
Monitors, the ISD51 In-System Debugger, or the ULINK USB-JTAG Adapter
to download and test program code on your target system.
It's been suggested that there are now as many embedded systems in everyday
use as there are people on planet Earth. Domestic appliances from washing
machines to TVs, video recorders and mobile phones, now include at least one
embedded processor. They are also vital components in a huge variety of
automotive, medical, aerospace and military systems. As a result, there is strong
demand for programmers with 'embedded' skills, and many desktop developers
are moving into this area.
8.2 Simulator:
The Keil hardware simulator for the popular 8051 microcontroller is on the CD-
ROM so that readers can try out examples from the book - and create new ones -
without requiring additional hardware.
54
C compiler from Keil software is included on the CD-ROM, along with copies of
code examples from the book to get you up and running very quickly.
Key techniques required in all embedded systems are covered in detail, including
the control of port pins and the reading of switches.
A complete embedded operating system is presented, with full source code on
the CD-ROM.
55
9 . PROGRAM
#include<reg52.h>
#include<lcd.h>
void rel_mode();
void key_scan();
void time_indicate();
void get();
void time_disp1();
void take();
56
xdata unsigned char regb _at_ 0x800b; // 24/
xdata unsigned char dow _at_ 0x8006; //day of week(sunday=1)
xdata unsigned char dom _at_ 0x8007; // date of month
xdata unsigned char mon _at_ 0x8008; // month
xdata unsigned char yea _at_ 0x8009; //year
void main()
{
lcd_init();
either_or();
lcd_dis("PLANT IRRIGATION",16);
command(0xc0);
lcd_dis(" ---SYSTEM--- ",16);
del();
add=41000;
take();
either_or();
rega=0x20;
regb=0x04;
while(1)
{
57
m=key;
all_disp();
if(m==127) {delay(30000);time_set();}
if(m==191) {delay(30000);rel_mode();}
if(str[0]==hours && str[1]==minutes && str[2]==seconds && str[3]==dm)
{
rly1=0;str[0]=str[1]=str[2]=str[3]=0;
}
58
if(str[20]==hours && str[21]==minutes && str[22]==seconds &&
str[23]==dm)
{
rly3=1;str[20]=str[21]=str[22]=str[23]=0;
}
}
}
void time_set()
{
either_or();
lcd_dis(" TIME SET ",16);
command(0xc0);
lcd_dis(" MODE ",16);
del();
either_or();
all_disp();
command(0xc8);
datum(' ');
59
}
else
{
datum('A'); // to display A
var=0; // means that AM is about to be displayed
am=1;
}
datum('M');
while(1)
{
m=key;
command(0x0f);command(count[cur]);
if(m==247){cur++;if(cur==8)cur=0;}else if(m==251){cur--;if(cur==0xff)cur=7;}
else if(count[cur]==0x80)
{if(m==223){command(0x0c);date+
+;if(date>=32)date=01;display1(date);}else if(m==239)
{command(0x0c);date--;if(date==0xff)date=31;display1(date);}}
else if(count[cur]==0x85)
{if(m==223){command(0x0c);month+
+;if(month>=0x0d)month=1;disp_month();}else if(m==239)
{command(0x0c);month--;if(month==0)month=0x0c;disp_month();}}
else if(count[cur]==0x8e)
{if(m==223){command(0x0c);year++;if(year>99)year=0;display1(year);}else
if(m==239){command(0x0c);year--;if(year==0xff)year=99;display1(year);}}
else if(count[cur]==0xc0)
60
{if(m==223){command(0x0c);hours+
+;if(hours>=13)hours=0;display1(hours);}else if(m==239)
{command(0x0c);hours--;if(hours==0)hours=12;display1(hours);}}
else if(count[cur]==0xc3)
{if(m==223){command(0x0c);minutes+
+;if(minutes>=60)minutes=0;display1(minutes);}else if(m==239)
{command(0x0c);minutes--;if(minutes==0xff)minutes=59;display1(minutes);}}
else if(count[cur]==0xc6)
{if(m==223){command(0x0c);seconds+
+;if(seconds>=60)seconds=0;display1(seconds);}else if(m==239)
{command(0x0c);seconds--;if(seconds==0xff)seconds=59;display1(seconds);}}
else if(count[cur]==0xc9)
{if(m==223){command(0x0c);datum('A');am=1;}if(m==239)
{command(0x0c);datum('P');am=2;}}
else if(count[cur]==0xcd)
{if(m==223){command(0x0c);day++;if(day>=8)day=1;disp_day();} if(m==239)
{command(0x0c);day--;if(day==0)day=7;disp_day();}}
if ((month==4||month==6||month==9||month==11)&&date>30)date=30;
if (month==2){if (date>28)date=28;else if ((year%4==0)&&date>29)date=29;}
if(m==254)
{
if(am==2)hours+=0x80;
command(0x0c); // cur off
rega=0xe0;delay(125);regb=0x84; delay(125); // rtc osc dis enable
61
dom=date;mon=month;hou=hours;min=minutes;sec=seconds;dow=day;yea=year
;
rega=0x20;delay(125);regb=0x04;
delay(125);
either_or();
lcd_dis(" TIME IS ",16);
command(0xc0);
lcd_dis(" STORED ",16);
del();
either_or();
goto end;
}
delay(15000);
}
end:;
}
void disp_month()// As the name indicates, it will be used only to display the
month
{
if (month==1) lcd_dis("Jan",3);
else if (month==2) lcd_dis("Feb",3);
else if (month==3) lcd_dis("Mar",3);
else if (month==4) lcd_dis("Apr",3);
else if (month==5) lcd_dis("May",3);
else if (month==6) lcd_dis("Jun",3);
else if (month==7) lcd_dis("Jul",3);
else if (month==8) lcd_dis("Aug",3);
else if (month==9) lcd_dis("Sep",3);
62
else if (month==0x0a) lcd_dis("Oct",3);
else if (month==0x0b) lcd_dis("Nov",3);
else if (month==0x0c) lcd_dis("Dec",3);
}
void disp_year()// used to display the year
{
datum('2');
datum('0');
display1(year);
}
void disp_day()// used to display the day of week
{
if(day==1) lcd_dis("Sun",3);
else if(day==2) lcd_dis("Mon",3);
else if(day==3) lcd_dis("Tue",3);
else if(day==4) lcd_dis("Wed",3);
else if(day==5) lcd_dis("Thu",3);
else if(day==6) lcd_dis("Fri",3);
else if(day==7) lcd_dis("Sat",3);
}
void time_disp()// to display the time
{
command(0xc0);
display1(hours);
datum(':');
display1(minutes);
datum(':');
display1(seconds);
}
void all_disp()// the routine in which all the parameters will be displayed
{
63
date=dom; // to get the particular date in a month.
month=mon; // to get the month
year=yea; // to get the year
day=dow; // to get the day of week
command(0x80);
display1(date); // to display the date
command(0x85);
disp_month(); // to display the month
command(0x8c);
disp_year(); // to display the year
seconds=sec; // to get the seconds
delay(20);
minutes=min; // to get the minutes
delay(20);
hours=hou; // to get the hours
delay(20);
command(0xc8);
datum(' ');
if (hours>=0x81) // to findout whether it is AM or PM
{
var=0x80; // means that PM is about to be displayed
hours=hours-0x80; // to get the actual time
datum('P'); // to display P
dm=2;
}
else
{
datum('A'); // to display A
var=0; // means that AM is about to be displayed
dm=1;
}
64
datum('M');
time_disp(); // to display the time
command(0xcd);
disp_day(); // to display the day of week
}
void rel_mode()
{
cur=0;sg=0;add=41000;jj=kk=0;con[3]=dm;
again:
while(1)
{
m=key;
if(m==223) {delay(30000);sg++;if(sg>2)sg=0;}
else if(m==239) {delay(30000);sg--;if(sg==255)sg=2;}
if(sg==0)
{
command(0x80);
lcd_dis(" CHOOSE TIME ",16);
command(0xc0);
lcd_dis(" FOR RELAY1 ",16);
m=key;
if(m==254)
{
65
delay(20000);
command(0x80);
lcd_dis(" CHOOSE ON-TIME ",16);
command(0xc0);
lcd_dis(" FOR RELAY1 ",16);
sun=0; del();
command(0x01);
command(0x80);
lcd_dis("Choose time now ",16);
time_indicate();
key_scan();
command(0x80);
lcd_dis(" CHOOSE OFF-TIME",16);
command(0xc0);
lcd_dis(" FOR RELAY1 ",16);
sun=1; del();
command(0x01);
command(0x80);
lcd_dis("Choose time now ",16);
time_indicate();
key_scan();
goto again;
}
else if(m==191) {delay(30000);command(0x01);goto top;}
}
else if(sg==1)
{
command(0x80);
lcd_dis(" CHOOSE TIME ",16);
command(0xc0);
66
lcd_dis(" FOR RELAY2 ",16);
m=key;
if(m==254)
{
delay(20000);
command(0x80);
lcd_dis(" CHOOSE ON-TIME ",16);
command(0xc0);
lcd_dis(" FOR RELAY2 ",16);
sun=0; del();
command(0x01);
command(0x80);
lcd_dis("Choose time now ",16);
time_indicate();
key_scan();
command(0x80);
lcd_dis(" CHOOSE OFF-TIME",16);
command(0xc0);
lcd_dis(" FOR RELAY2 ",16);
sun=1; del();
command(0x01);
command(0x80);
lcd_dis("Choose time now ",16);
time_indicate();
key_scan();
goto again;
}
else if(m==191) {delay(30000);command(0x01);goto top;}
}
else if(sg==2)
67
{
command(0x80);
lcd_dis(" CHOOSE TIME ",16);
command(0xc0);
lcd_dis(" FOR RELAY3 ",16);
m=key;
if(m==254)
{
delay(20000);
command(0x80);
lcd_dis(" CHOOSE ON-TIME ",16);
command(0xc0);
lcd_dis(" FOR RELAY3 ",16);
sun=0; del();
command(0x01);
command(0x80);
lcd_dis("Choose time now ",16);
time_indicate();
key_scan();
command(0x80);
lcd_dis(" CHOOSE OFF-TIME",16);
command(0xc0);
lcd_dis(" FOR RELAY3 ",16);
sun=1; del();
command(0x01);
command(0x80);
lcd_dis("Choose time now ",16);
time_indicate();
key_scan();
goto again;
68
}
else if(m==191) {delay(30000);command(0x01);goto top;}
}
}
top:;
}
void key_scan()
{
while(1)
{
m=key;
command(0x0f);command(count1[cur]);
if(m==247){cur++;if(cur==4)cur=0;}else if(m==251){cur--;if(cur==0xff)cur=3;}
else if(count1[cur]==0xc0)
{if(m==223){command(0x0c);if(con[0]<12)con[0]++;display1(con[0]);}else
if(m==239){command(0x0c);if(con[0]>0)con[0]--;display1(con[0]);}}
else if(count1[cur]==0xc3)
{if(m==223){command(0x0c);if(con[1]<59)con[1]++;display1(con[1]);}else
if(m==239){command(0x0c);if(con[1]>0)con[1]--;display1(con[1]);}}
else if(count1[cur]==0xc6)
{if(m==223){command(0x0c);if(con[2]<59)con[2]++;display1(con[2]);}else
if(m==239){command(0x0c);if(con[2]>0)con[2]--;display1(con[2]);}}
else if(count1[cur]==0xc9)
{if(m==223){command(0x0c);datum('A');con[3]=1;}if(m==239)
{command(0x0c);datum('P');con[3]=2;}}
69
if(m==254)
{
back_light=0;
get();
either_or();
lcd_dis(" SETTING TIME ",16);
command(0xc0);
lcd_dis(" HAS STORED ",16);
del();
either_or();
goto send;
}
delay(20000);
}
send:;
}
void time_indicate()
{
command(0xc0);
time_disp1(); // to display th e time
command(0xc8);
datum(' ');
if(con[3]==2)
datum('P'); // to display P
else
datum('A'); // to display A
datum('M');
}
void get()
70
{
if(sg==0 && sun==0)
{
jj=0;add=41000;
for(kk=0;kk<4;kk++)
{
str[jj]=con[kk];
*add=con[kk];
delay(1000);
add++;jj++;
}
}
else if(sg==0 && sun==1)
{
for(kk=0;kk<4;kk++)
{
str[jj]=con[kk];
*add=con[kk];
delay(1000);
add++;jj++;
}
}
71
add++;jj++;
}
}
else if(sg==1 && sun==1)
{
for(kk=0;kk<4;kk++)
{
str[jj]=con[kk];
*add=con[kk];
delay(1000);
add++;jj++;
}
}
else if(sg==2 && sun==0)
{
jj=16;add=41016;
for(kk=0;kk<4;kk++)
{
str[jj]=con[kk];
*add=con[kk];
delay(1000);
add++;jj++;
}
}
else if(sg==2 && sun==1)
{
for(kk=0;kk<4;kk++)
{
str[jj]=con[kk];
*add=con[kk];
delay(1000);
72
add++;jj++;
}
}
}
void take()
{
for(jj=0;jj<24;jj++)
{
str[jj]=*add;
delay(1000);add++;
}
}
73
10. PROGRAM DESCRIPTION:
First we have to include the header files like LCD and microcontroller .then its
will go to void main function every program we should declare one main function
that is void main () inside void main we are displayed “Automatic Intelligent
Plant Irrigation System”. Then it will go to while loop(1) inside the while loop
we are monitor the all functions.
The real time clock IC maintain the date and time. Now all the information
about the On Off time are stored in the EEPROM.
In program, the LCD always shows the Real time. When the stored time
will match with the real time then corresponding relay will be ON or OFF. Even if
power goes the relay On / Off time will be get through EEPROM.
74
11. ADVANTAGES
Reliability
Compatibility
75
12. APPLICATIONS
76
13. CONCLUSION
77
14. REFERENCES
WEBSITES:
http://www.atmel.com/
http://www.microchip.com/
www.8052.com
http://www.beyondlogic.org
http://www.ctv.es/pckits/home.html
http://www.aimglobal.org/
78
79