wk 222mod doc
TRANSCRIPT
-
8/3/2019 Wk 222mod Doc
1/110
`
EMBEDDED PREPAID ENERGY
METER USING 89S52
MICROCONTROLLER
1
-
8/3/2019 Wk 222mod Doc
2/110
`
INDEX
Technical Specifications 4
Project Abstract 6
Project Block Diagram 8
CHAPTER 1: INTRODUCTION 11
1.1Introduction 11
CHAPTER 2: BLOCK DESCRIPTION 14
2.1 Power Supply 15
2.1.1 Transformer 15
2.1.2 Rectifier 162.1.3 Filter 16
2.1.4 Voltage Regulator 16
CHAPTER 3: AT89S52 Microcontroller 17
3.1 Features of AT89S52 Microcontroller 19
3.2 Description 19
3.3 Pin Description 22
3.4 Machine Cycle 25
3.5 ALE/PROG 26
3.6 PSEN 26
3.7 EA 26
3.8 Ports 27
3.9 Data Memory 29
3.10 EEPROM 31
CHAPTER 4: IMPORTANT TERMINOLOGY TO MEMORIES
4.1 Memory Capacity 32
4.2 Memory Organization 32
4.3 Speed 32
4.4 EEPROM 33
4.5 Features Of EEPROM 33
4.6 Description 35
4.7 Signal Description 37
4.8 Device Operation 38
2
-
8/3/2019 Wk 222mod Doc
3/110
`
4.9 Minimizing Delays 43
4.10 Read Operations 46
4.11 Programming The Flash EEPROM 48
4.12 Data Polling 49
4.13 Ready/Busy 50
4.14 Program Verify 50
4.15 Chip Erase 50
4.16 Serial Downloading 51
4.17 Machine Cycle For 8052 52
4.18 Relays 52
4.19 Operation 53
4.20 Transistor Driver Circuit 54
4.21 RELAY INTERFACING WITH Uc 56
CHAPTER 5: LIQUID CRYSTAL DISPLAY
5.1 Pin Function 59
5.2 Lcd Screen 60
5.3 Lcd Basic Commands 61
5.4 Lcd Initialisation 62
5.5 Lcd Interfacing With The Uc 63
5.6 Code(Command) 65
5.7 Code(Data) 66
5.8 Switch Interfacing With The uC 67
5.9 Trigger Card 68
5.10 Slots For Recharge 68
5.11 Load Banks 68
5.12 Energy Meter 68
5.13 ADE7757 69
5.14 Design Calculations 70
CHAPTER 6: POWER SUPPLY
6.1 Transformer 73
6.2 Rectifier 73
6.3 Filter 76
6.4 Voltage Regulator 76
3
-
8/3/2019 Wk 222mod Doc
4/110
`
CHAPTER 7: SOFTWARE TOOLS
7.1 Keil Software 79
7.2 Steps To Write Programming 79
7.3 Proload 81
7.4 Advantages 82
7.5 Applications 82
RESULT 85
CONCLUSION 87
REFERENCES 89
APPENDIX 90
LIST OF FIGURES
FIGURE NO. DESCRIPTION PAGE NO.
1 Block Diagram 10
2 Recharging Unit 11
3 Power Supply Section 15
3.2 Pin Diagram 203.2.1 Architechture 21
4
-
8/3/2019 Wk 222mod Doc
5/110
`
3.3. Oscillator Connection 22
3.3.4 External Clock Drive Configuration 23
4.1.1 DIP Pin Connection 34
4.1.2 SO Pin Connection 34
4.5 Logic Diagram 35
4.7 Memory Protection 37
4.8 I2C Protocol 39
4.8.1 Ac Wave Form 41
4.9.1 Write Cycle Polling Using ACK 44
4.9.2 Write Mode Sequence 45
4.10 Read Mode Sequence 47
4.18 Circuit Symbol Of Relay 53
4.20 Relay Operation And Using Diodes 53
4.21 Transistor Driver Circuit 55
4.22 Relay Interface 56
5.2 Lcd Screen 60
5.4 Procedure For 8 Bit Initialization 63
5.8 Switch Interfacing 67
5.13 Energy Meter 69
6.0 Power Supply 72
6.1 Transformer 73
6.2 Rectifier 73
6.3 Expected Wave Form 75
LIST OF TABLES
TABLE NO. DESCRIPTION PAGE NO.
3.3 Port 3 Alternate Functions 25
3.4 Port 1 Alternate Functions 28
3.8 Port 3 Functions 29
3.9 Mcon Register Functions 31
4.1 Signal Names 34
4.6.1 Device Select Modes 36
4.6.2 Operating Modes 36
5.1 Pin Functions 60
5
-
8/3/2019 Wk 222mod Doc
6/110
`
6
-
8/3/2019 Wk 222mod Doc
7/110
`
T ECHNICAL SPECIFICATIONS
Title of the project : EMBEDDED PREPAID ENERGY METER
Domain : Energy calculation, Embedded Design,
Energy System
Software : Embedded C, Keil, Proload
Microcontroller : AT89S52
Power Supply : +5V, 750mA Regulated Power Supply
Display : 16 X 2 Alphanumeric LCD
Crystal : 11.0592MHz
Applications : Emergency lighting, water heaters,
Industrial applications
7
-
8/3/2019 Wk 222mod Doc
8/110
`
ABSTRACT
8
-
8/3/2019 Wk 222mod Doc
9/110
`
ABSTRACT
Embedded Prepaid Energy Meter using 89S52
Microcontroller
Due to the drastic changes in technology in the last decade, so many
advancements were introduced in electricity departments. The electricity bill can be
paid now through E-Seva centers, Net-banking and even through mobile phones. But
prepaid electricity is a unique and new concept which saves lot of time and a power
for electricity department. In this system the user has to purchase an EEPROM based
recharge card and it should be inserted in the slot provided on prepaid energy meter
kit.
After inserting the recharge card into the system, the user should
press RECHARGE key to start recharge. Then the system will be loaded with specific
units as per the recharge card value. A 16X2 LCD is provided to read units available.
Here the system is connected with three to four loads. If the load increases in the
system, current also increases and is calculated by an ADC . Whenever the count
value reaches one thousand, 1unit is decremented from EEPROM and these values are
displayed on LCD.
An EEPROM is provided on the board to store the updated recharge
units and energy meter pulse count. At every instant the count value and units values
are stored in EEPROM so that the data will not be lost even in power failure cases.
When the unit become zero on power consumption, the system shutdown all the
loads connected to it by giving a continuous beep sound.
Now the user has to place this recharge card in slot
provided to recharge. After pressing the recharge key, the system will be loaded with
the units corresponding to that recharge value. After successful recharge, the load
automatically gets ON.
This system uses 5V regulated power supply for the microcontroller and ADC
unit and 18V supply for the load. This is provided by the 18V, 2Amp transformer.
Recharging unit also requires regulated 5V supply, which is provided by a separate
18V and 750mA transformer. Hence this project provides a best solution for the users
to know how much amount of power is consumed in their day- to- day life and also
the amount of power consumed is also under the user control.
9
-
8/3/2019 Wk 222mod Doc
10/110
`
BLOCK DIAGRAM
Block Diagram
10
-
8/3/2019 Wk 222mod Doc
11/110
`
RECHARGING UNIT:
11
Power supply to all sections
Step
down
T/F
Bridge
Rectifier
Filter
CircuitRegulator
Load Bank
Energy
Meter
16 X 2LCD
8
9
s
5
2
EEPROM
RELAY
Trigger card
-
8/3/2019 Wk 222mod Doc
12/110
`
POWER SUPPLY SECTION:
I/P 18V O/P 5V
DC
12
POWER
SUPPLY
RESET
CRYSTAL
ATMEL
89S52
SLOT FOR
RECHARGE
BRIDGE
RECTFIER
FILTERING
UNIT
7805
VOLTAGE
REGULATOR
-
8/3/2019 Wk 222mod Doc
13/110
`
INTRODUCTION
13
-
8/3/2019 Wk 222mod Doc
14/110
`
CHAPTER 1
INTRODUCTION
An embedded system is a combination of software and hardware to perform a
dedicated task.
Some of the main devices used in embedded products are Microprocessors and
Microcontrollers.
Microprocessors are commonly referred to as general purpose processors as
they simply accept the inputs, process it and give the output.
In contrast, a microcontroller not only accepts the data as inputs but also
manipulates it, interfaces the data with various devices, controls the data and thus
finally gives the result.
As everyone in this competitive world prefers to make the things easy and
simple to handle, this project sets an example to some extent.
This project enables the user to consume the electricity based on the prepaid
recharge card he gets from the electrical department. The information such as the total
number of units available in the card will be displayed on the LCD. Thus accordingly,
the user has to consume the power and if the units are totally completed, he has to go
for another recharge card.
14
-
8/3/2019 Wk 222mod Doc
15/110
`
EXPLANATION OF EACH
BLOCK
15
-
8/3/2019 Wk 222mod Doc
16/110
`
CHAPTER 2
BLOCK DESCRIPTION
2.1 POWER SUPPLY:
The input to the circuit is applied from the regulated power supply. The a.c.
input i.e., 230V from the mains supply is step down by the transformer to 12V and is
fed to a rectifier. The output obtained from the rectifier is a pulsating d.c voltage. So
in order to get a pure d.c voltage, the output voltage from the rectifier is fed to a filter
to remove any a.c components present even after rectification. Now, this voltage is
given to a voltage regulator to obtain a pure constant dc voltage.
Fig: 2.1 Power supply
2.1.1 Transformer:
Usually, DC voltages are required to operate various electronic equipment and
these voltages are 5V, 9V or 12V. But these voltages cannot be obtained directly.
Thus the a.c input available at the mains supply i.e., 230V is to be brought down to
the required voltage level. This is done by a transformer. Thus, a step down
transformer is employed to decrease the voltage to a required level.
16
RegulatorFilterBridge
Rectifier
Step down
transformer
230V AC
50Hz D.C
Output
-
8/3/2019 Wk 222mod Doc
17/110
`
2.1.2 Rectifier:
The output from the transformer is fed to the rectifier. It converts A.C. into
pulsating D.C. The rectifier may be a half wave or a full wave rectifier. In this project,
a bridge rectifier is used because of its merits like good stability and full wave
rectification.
2.1.3 Filter:
Capacitive filter is used in this project. It removes the ripples from the output
of rectifier and smoothens the D.C. Output received from this filter is constant until
the mains voltage and load is maintained constant. However, if either of the two is
varied, D.C. voltage received at this point changes. Therefore a regulator is applied at
the output stage.
2.1.4 Voltage regulator:
As the name itself implies, it regulates the input applied to it. A voltage
regulator is an electrical regulator designed to automatically maintain a constant
voltage level. In this project, power supply of 5V and 12V are required. In order to
obtain these voltage levels, 7805 and 7812 voltage regulators are to be used. The first
number 78 represents positive supply and the numbers 05, 12 represent the required
output voltage levels.
17
-
8/3/2019 Wk 222mod Doc
18/110
`
AT89S52 MICROCONTROLLER
18
-
8/3/2019 Wk 222mod Doc
19/110
`
CHAPTER 3
MICROCONTROLLERS
Microprocessors and microcontrollers are widely used in embedded
systems products. Microcontroller is a programmable device. A microcontroller has a
CPU in addition to a fixed amount of RAM, ROM, I/O ports and a timer embedded
all on a single chip. 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.
The Intel 8052 is Harvard architecture, single chip microcontroller (C) which
was developed by Intel in 1980 for use in embedded systems. It was popular in the
1980s and early 1990s, but today it has largely been superseded by a vast range of
enhanced devices with 8052-compatible processor cores that are manufactured by
more than 20 independent manufacturers including Atmel, Infineon Technologies and
Maxim Integrated Products.
8052 is an 8-bit processor, meaning that the CPU can work on only 8 bits of
data at a time. Data larger than 8 bits has to be broken into 8-bit pieces to be
processed by the CPU. 8052 is available in different memory types such as UV-
EPROM, Flash and NV-RAM.
The present project is implemented on Keil Uvision. In order to program the
device, proload tool has been used to burn the program onto the microcontroller.
The features, pin description of the microcontroller and the software tools used
are discussed in the following sections.
19
-
8/3/2019 Wk 222mod Doc
20/110
`
3.1 FEATURES OF AT89S52:
4K Bytes of Re-programmable Flash Memory.
RAM is 128 bytes.
2.7V to 6V Operating Range.
Fully Static Operation: 0 Hz to 24 MHz.
Two-level Program Memory Lock.
128 x 8-bit Internal RAM.
32 Programmable I/O Lines.
Two 16-bit Timer/Counters.
Six Interrupt Sources.
Programmable Serial UART Channel.
Low-power Idle and Power-down Modes.
3.2 Description:
The AT89S52 is a low-voltage, high-performance CMOS 8-bit microcomputer
with 4K bytes of Flash programmable memory. The device is manufactured using
Atmels high-density nonvolatile memory technology and is compatible with the
industry-standard MCS-51 instruction set. By combining a versatile 8-bit CPU with
Flash on a monolithic chip, the Atmel AT89S52 is a powerful microcomputer, which
provides a highly flexible and cost-effective solution to many embedded control
applications.
In addition, the AT89S52 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.
20
-
8/3/2019 Wk 222mod Doc
21/110
`
Fig: 3.2.Pin
diagram
21
-
8/3/2019 Wk 222mod Doc
22/110
`
Fig: 3.2.1 Architechture
3.3PIN DESCRIPTION:
3.3.1 Vcc:
22
-
8/3/2019 Wk 222mod Doc
23/110
`
Pin 40 provides supply voltage to the chip. The voltage source is +5V.
3.3.2 GND:
Pin 20 is the ground.
3.3.3 XTAL1 and XTAL2:
XTAL1 and XTAL2 are the input and output, respectively, of an inverting
amplifier that can be configured for use as an on-chip oscillator, as shown in Figure
11. Either a quartz crystal or ceramic resonator may be used. To drive the device from
an external clock source, XTAL2 should be left unconnected while XTAL1 is driven,
as shown in the below figure. There are no requirements on the duty cycle of the
external clock signal, since the input to the internal clocking circuitry is through a
divide-by-two flip-flop, but minimum and maximum voltage high and low time
specifications must be observed.
Fig: 3.3.3 Oscillator Connections
C1, C2 = 30 pF 10 pF for Crystals
= 40 pF 10 pF for Ceramic Resonators
23
-
8/3/2019 Wk 222mod Doc
24/110
`
Fig: 3.3.4 External Clock Drive Configuration
3.3.4 RESET:
Pin9 is the reset pin. It is an input and is active high. Upon applying a high pulse to
this pin, the microcontroller will reset and terminate all the activities. This is often
referred to as a power-on reset.
3.3.5 EA (External access):
Pin 31 is EA. It is an active low signal. It is an input pin and must be connected to
either Vcc or GND but it cannot be left unconnected.
The 8052 family members all come with on-chip ROM to store programs. In
such cases, the EA pin is connected to Vcc. If the code is stored on an external ROM,
the EA pin must be connected to GND to indicate that the code is stored externally.
24
-
8/3/2019 Wk 222mod Doc
25/110
`
3.3.6 PSEN (Program store enable):
This is an output pin.
3.3.7 ALE (Address latch enable):
This is an output pin and is active high.
3.3.8 Ports 0, 1, 2 and 3:
The four ports P0, P1, P2 and P3 each use 8 pins, making them 8-bit ports.
All the ports upon RESET are configured as input, since P0-P3 have value FFH on
them.
Port 0(P0):
Port 0 is also designated as AD0-AD7, allowing it to be used for both address
and data. ALE indicates if P0 has address or data. When ALE=0, it provides data D0-
D7, but when ALE=1, it has address A0-A7. Therefore, ALE is used for
demultiplexing address and data with the help of an internal latch.
When there is no external memory connection, the pins of P0 must be
connected to a 10K-ohm pull-up resistor. This is due to the fact that P0 is an open
drain. With external pull-up resistors connected to P0, it can be used as a simple I/O,
just like P1 and P2. But the 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 and P3
are configured as input ports.
Port 1 and Port 2:
With no external memory connection, both P1 and P2 are used as simple I/O. With
external memory connections, port 2 must be used along with P0 to provide the 16-bit
address for the external memory. Port 2 is designated as A8-A15 indicating its dual
function. While P0 provides the lower 8 bits via A0-A7, it is the job of P2 to provide
bits A8-A15 of the address.
25
-
8/3/2019 Wk 222mod Doc
26/110
`
Port 3:
Port 3 occupies a total of 8 pins, pins 10 through 17. It can be used as input or
output. P3 does not need any pull-up resistors, the same as port 1 and port 2. Port 3
has an additional function of providing some extremely important signals such as
interrupts.
Table: 3.3 Port 3 Alternate Functions
3.4 Machine cycle for the 8052:
The CPU takes a certain number of clock cycles to execute an instruction. In
the 8052 family, these clock cycles are referred to as machine cycles. The length of
the machine cycle depends on the frequency of the crystal oscillator. The crystal
oscillator, along with on-chip circuitry, provides the clock source for the 8052 CPU.
The frequency can vary from 4 MHz to 30 MHz, depending upon the chip
rating and manufacturer. But the exact frequency of 11.0592 MHz crystal oscillator is
used to make the 8052 based system compatible with the serial port of the IBM PC.
In the original version of 8052, one machine cycle lasts 12 oscillator periods.
Therefore, to calculate the machine cycle for the 8052, the calculation is made as 1/12
of the crystal frequency and its inverse is taken.
The assembly language program is written and this program has to be dumped
into the microcontroller for the hardware kit to function according to the software.
The program dumped in the microcontroller is stored in the Flash memory in the
26
-
8/3/2019 Wk 222mod Doc
27/110
`
microcontroller. Before that, this Flash memory has to be programmed and is
discussed in the next section.
3.5 ALE/PROG:
Address Latch Enable is an output pulse for latching the low byte of the
address during accesses to external memory. This pin is also the program pulse input
(PROG) during Flash programming. In normal operation, ALE is emitted at a
constant rate of 1/6 the oscillator frequency and may be used for external timing or
clocking purposes. If desired, ALE operation can be disabled by setting bit 0 of SFR
location 8EH. With the bit set, ALE is active only during a MOVX or MOVC
instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has
no effect if the microcontroller is in external execution mode.
3.6 PSEN (Program Store Enable):
It is the read strobe to external program memory. When the AT89S8252 is
executing code from external program memory, PSEN is acti-vated twice each
machine cycle, except that two PSEN activations are skipped during each access to
external data memory.
3.7 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 when 12-volt
programming is selected.
3.8 Ports 0, 1, 2 and 3:
The four ports P0, P1, P2 and P3 each use 8 pins, making them 8-bit ports. All the
ports upon RESET are configured as input, since P0-P3 have value FFH on them.
Port 0(P0):
Port 0 is also designated as AD0-AD7, allowing it to be used for both address and
data. ALE indicates if P0 has address or data. When ALE=0, it provides data D0-D7,
27
-
8/3/2019 Wk 222mod Doc
28/110
`
but when ALE=1, it has address A0-A7. Therefore, ALE is used for demultiplexing
address and data with the help of an internal latch.
When there is no external memory connection, the pins of P0 must be
connected to a 10K-ohm pull-up resistor. This is due to the fact that P0 is an open
drain. With external pull-up resistors connected to P0, it can be used as a simple I/O,
just like P1 and P2. But the 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 and P3
are configured as input ports.
Port 1:
Port 1 is an 8-bit bi-directional I/O port with internal pull-ups. 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 pull-ups and can be used as inputs. As inputs, Port
1 pins that are externally being pulled low will source current because of the internal
pull-ups.
Some Port 1 pins provide additional functions. P1.0 and P1.1 can be
configured to be the timer/counter 2 external count input (P1.0/T2) and the
timer/counter 2 trigger input (P1.1/T2EX), respectively. Furthermore, P1.4, P1.5,
P1.6, and P1.7 can be configured as the SPI slave port select, data input/output and
shift clock input/output pins. Port 1 also receives the low-order address bytes during
Flash programming and verification.
Table: 3.4 Port1 Alternate functions
Programmable Clock Out:
28
-
8/3/2019 Wk 222mod Doc
29/110
`
A 50% duty cycle clock can be programmed to come out on P1.0. This pin,
besides being a regular I/0 pin, has two alternate functions. It can be programmed to
input the external clock for Timer/Counter 2 or to output a 50% duty cycle clock
ranging from 61 Hz to 4 MHz (for a 16-MHz operating frequency).
Port 2:
With no external memory connection, P2 are used as simple I/O. With
external memory connections, port 2 must be used along with P0 to provide the 16-bit
address for the external memory. Port 2 is designated as A8-A15 indicating its dual
function. While P0 provides the lower 8 bits via A0-A7, it is the job of P2 to provide
bits A8-A15 of the address.
Port 2 also receives the high-order address bits and some control signals
during Flash programming and verification.
Port 3:
Port 3 is an 8-bit bi-directional I/O port with internal pull-ups. 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 pull-ups and can be used as inputs. As inputs, Port
3 pins that are externally being pulled low will source current because of the pull-ups.
Port 3 receives some control signals for Flash programming and verification.
Port 3 also serves the functions of various special features of the AT89S8252,
as shown in the following table.
Table: 3.8 Port 3 Alternate functions
29
-
8/3/2019 Wk 222mod Doc
30/110
`
3.9 Data Memory EEPROM and RAM:
The AT89S8252 implements 2K bytes of on-chip EEPROM for data storage
and 256 bytes of RAM. The upper 128 bytes of RAM occupy a parallel space to the
Special Function Registers i.e., the upper 128 bytes have the same addresses as the
SFR space but are physically separate from SFR space.
When an instruction accesses an internal location above address 7FH, the
address mode used in the instruction specifies whether the CPU accesses the upper
128 bytes of RAM or the SFR space.
Instructions that use direct addressing access SFR space. For example, the
following direct addressing instruction accesses the SFR at location 0A0H (which is
P2).
MOV 0A0H, #data
Instructions that use indirect addressing access the upper 128 bytes of RAM.
For example, the following indirect addressing instruction, where R0 contains 0A0H,
accesses the data byte at address 0A0H, rather than P2 (whose address is 0A0H).
MOV @R0, #data
It should be noted that stack operations are examples of indirect addressing, sothe upper 128 bytes of data RAM are available as stack space.
The on-chip EEPROM data memory is selected by setting the EEMEN bit in
the WMCON register at SFR address location 96H. The EEPROM address range is
from 000H to 7FFH. The MOVX instructions are used to access the EEPROM. To
access off-chip data memory with the MOVX instructions, the EEMEN bit needs to
be set to 0.
30
-
8/3/2019 Wk 222mod Doc
31/110
`
MCON REGISTER
PS
2
PS1
PS
0
EEM
WE
EEM
EN
DP
S
RDY/
BSY
WDT
EN
7
6
5
4 3
2
1 0
The EEMEN and EEMWE bits are used to select the 2K bytes on-chip
EEPROM, and to enable byte-write. The DPS bit selects one of two DPTR registers
available.
Symbol Function
PS2
PS1
PS0
Prescaler Bits. When all three bits are set to 0, the timer has a
nominal period of 16 ms. When all three bits are set to 1; the nominal
period is 2048 ms. These bits are used for watchdog timer.
EEMWE EEPROM Data Memory Write Enable Bit. Set this bit to 1 before
initiating byte write to on-chip EEPROM with the MOVX instruction.
User software should set this bit to 0 after EEPROM write is
completed.EEMEN Internal EEPROM Access Enable. When EEMEN = 1, the MOVX
instruction with DPTR will access on-chip EEPROM instead of external
data memory. When EEMEN = 0, MOVX with DPTR accesses external
data memory.
DPS Data Pointer Register Select. DPS = 0 selects the first bank of Data
Pointer Register, DP0, and DPS = 1 selects the second bank, DP1
RDY/BSY RDY/BSY = 1 means that the EEPROM is ready to be programmed.
While programming operations are being executed, the RDY/BSY bitequals 0 and is automatically reset to 1 when programming is
completed.
WDTEN Used for Watchdog timer
Table: 3.9 MCON Register functions
3.10 EEPROM:
In the design of all microprocessors-based systems, semiconductor memories
are used as primary storage for code and data. Semiconductor memories are
31
-
8/3/2019 Wk 222mod Doc
32/110
`
connected directly to the CPU and they are the memory that the CPU first asks for
information (code and data). For this reason, semiconductor memories are sometimes
referred to as primary memory.
CHAPTER 4
IMPORTANT TERMINOLOGY COMMON TO ALL
SEMICONDUCTOR MEMORIES:
4.1 Memory capacity:
The number of bits that a semiconductor memory chip can store is called chip
capacity. It can be in units of Kilobits, Megabits and so on. This must be distinguished
from the storage capacity of computer system. While the memory capacity of a
memory IC chip is always given in bits, the memory capacity of a computer system is
given in bytes.
4.2 Memory organization:
Memory chips are organized into a number of locations within the IC. Each location
can hold 1 bit, 4 bits, 8 bits or even 16 bits, depending on how it is designed
internally. The number of bits that each location within the memory chip can hold is
always equal to the number of data pins on the chip. i.e., the total number of bits that a
32
-
8/3/2019 Wk 222mod Doc
33/110
`
memory chip can store is equal to the number of locations times the number of data
bits per location.
4.3 Speed:
One of the most important characteristics of a memory chip is the speed at
which its data can be accessed. The speed of the memory chip is commonly referred
to as its access time. The access time of memory chip varies from a few nanoseconds
to hundreds of nanoseconds, depending on the IC technology used in the design and
fabrication process.
The different types of memories are RAM, ROM, EPROM and EEPROM.
RAM and ROM are inbuilt in the microprocessor.
This project requires the data such as the total number of available units and
the pulse count to be stored permanently and this data modifies upon the power
consumption. Thus this data has to be stored in such a location where it cannot be
erased when power fails and also the data should be allowed to make changes in it
without the system interface i.e., there should be a provision in such a way that thedata should be accessed (or modified) while it is in system board but not external
erasure and programming.
The flash memory inbuilt in the microcontroller can erase the entire contents
in less than a second and the erasure method is electrical. But the major drawback of
Flash memory is that when flash memorys contents are erased, the entire device will
be erased but not a desired section or byte.
For this purpose, we prefer EEPROM in our project.
4.4EEPROM (Electrically Erasable Programmable Read only
memory):
EEPROM has several advantages over other memory devices, such as the fact
that its method of erasure is electrical and therefore instant. In addition, in EEPROM
one can select which byte to be erased, in contrast to flash , in which the entire
33
-
8/3/2019 Wk 222mod Doc
34/110
`
contents of ROM are erased. The main advantage of EEPROM is that one can
program and erase its contents while it is in system board. It does not require physical
removal of the memory chip from its socket. In general, the cost per bit for EEPROM
is much higher when compared to other devices.
The EEPROM used in this project is 24C04 type.
4.5 Features of 24C04 EEPROM:
1 million erase/write cycles with 40 years data retention.
Single supply voltage.
3v to 5.5v for st24x04 versions.
2.5v to 5.5v for st25x04 versions.
Hardware write control versions.
St24w04 and st25w04 versions.
Programmable write protection.
Two wire serial interface, fully i2c bus compatible.
Byte and multibyte write (up to 4 bytes).
Page write (up to 8 bytes).
Byte, random and sequential read modes
Self timed programming cycle
Automatic address incrementing
Enhanced ESD/Latch up performances
Fig:4.1.1 DIP Pin Connections fig:4.1.2 SO Pin Connection
34
-
8/3/2019 Wk 222mod Doc
35/110
`
Table :4.1 Signal Names
Fig: 4.5Logic Diagram
4.6 DESCRIPTION:
The 24C04 is a 4Kbit electrically erasable programmable memory
(EEPROM), organized as 2 blocks of 256 x8 bits. They are manufactured in ST
Microelectronics Hi-Endurance Advanced CMOS technology which guarantees an
endurance of one million erase/write cycles with a data retention of 40 years. Both
35
-
8/3/2019 Wk 222mod Doc
36/110
`
Plastic Dual-in-Line and Plastic Small Outline packages are available. The memories
are compatible with the I2C standard, two wire serial interface which uses a bi-
directional data bus and serial clock. The memories carry a built-in 4 bit, unique
device identification code (1010) corresponding to the I2C bus definition. This is used
together with 2 chip enable inputs (E2, E1) so that up to 4 x 4K devices may be
attached to the I2C bus and selected individually. The memories behave as a slave
device in the I2C protocol with all memory operations synchronized by the serial
clock. Read and write operations are initiated by a START condition generated by the
bus master. The START condition is followed by a stream of 7 bits (identification
code 1010), plus one read/write bit and terminated by an acknowledge bit.
Table: 4.6.1 Device Select Mode
Table:4.6.2 Operating Modes
When writing data to the memory it responds to the 8 bits received by
asserting an acknowledge bit during the 9th bit time. When data is read by the bus
36
-
8/3/2019 Wk 222mod Doc
37/110
`
master, it acknowledges the receipt of the data bytes in the same way. Data transfers
are terminated with a STOP condition.
4.6.1 Power on Reset: VCC locks out write protect :
In order to prevent data corruption and inadvertent write operations during
power up, a Power on Reset (POR) circuit is implemented. Until the VCC voltage has
reached the POR threshold value, the internal reset is active, all operations are
disabled and the device will not respond to any command. In the same way, when
VCC drops down from the operating voltage to below the POR threshold value, all
operations are disabled and the device will not respond to any command. A stable
VCC must be applied before applying any logic signal.
4.7 SIGNAL DESCRIPTIONS:
Serial Clock (SCL):
The SCL input pin is used to synchronize all data in and out of the memory.
A resistor can be connected from the SCL line to VCC to act as a pull up.
Serial Data (SDA):
The SDA pin is bi-directional and is used to transfer data in or out of the
memory. It is an open drain output that may be wire-ORed with other open drain or
open collector signals on the bus. A resistor must be connected from the SDA bus line
to VCC to act as pull up.
Chip Enable (E1 - E2):
These chip enable inputs are used to set the 2 least significant bits (b2, b3) of
the 7 bit device select code. These inputs may be driven dynamically or tied to VCC
or VSS to establish the device select code.
Protect Enable (PRE):
The PRE input pin, in addition to the status of the Block Address Pointer bit
(b2, location 1FFh as in below figure), sets the PRE write protection active.
37
-
8/3/2019 Wk 222mod Doc
38/110
`
Fig: 7.1 Memory Protection
Mode (MODE):
The MODE input is available on pin 7 and may be driven dynamically. It must
be at VIL or VIH for the Byte Write mode, VIH for Multibyte Write mode or VIL for
Page Write mode. When unconnected, the MODE input is internally read as VIH
(Multibyte Write mode).
Write Control (WC):
An hardware Write Control feature (WC) is offered only for ST24W04 and
ST25W04 versions on pin 7. This feature is useful to protect the contents of the
memory from any erroneous erase/write cycle. The Write Control signal is used to
enable (WC = VIH) or disable (WC =VIL) the internal write protection. When
unconnected, the WC input is internally read as VIL and the memory area is not write
protected.
4.8 DEVICE OPERATION:
I2C Bus Background:
The ST24/25x04 supports the I2C protocol. This protocol defines any devicethat sends data onto the bus as a transmitter and any device that reads the data as a
receiver. The device that controls the data transfer is known as the master and the
other as the slave. The master will always initiate a data transfer and will provide the
serial clock for synchronization.
38
-
8/3/2019 Wk 222mod Doc
39/110
`
Fig:4.8 I2C Protocol
Start Condition:
39
-
8/3/2019 Wk 222mod Doc
40/110
`
START is identified by a high to low transition of the SDA line while the
clock SCL is stable in the high state. A START condition must precede any command
for data transfer. Except during a programming cycle, the ST24/25x04 continuously
monitor the SDA and SCL signals for a START condition and will not respond unless
one is given.
Stop Condition:
STOP is identified by a low to high transition of the SDA line while the clock
SCL is stable in the high state. A STOP condition terminates communication between
the ST24/25x04 and the bus master. A STOP condition at the end of a Read
command, after and only after a No Acknowledge, forces the standby state. A STOP
condition at the end of a Write command triggers the internal EEPROM write cycle.
Acknowledge Bit (ACK):
An acknowledge signal is used to indicate a successful data transfer. The bus
transmitter, either master or slave, will release the SDA bus after sending 8 bits of
data. During the 9th clock pulse period the receiver pulls the SDA bus low to
acknowledge the receipt of the 8 bits of data.
Data Input:
During data input the ST24/25x04 sample the SDA bus signal on the rising
edge of the clock SCL. Note that for correct device operation the SDA signal must be
stable during the clock low to high transition and the data must change ONLY when
the SCL line is low.
Memory Addressing:
To start communication between the bus master and the slave ST24/25x04,
the master must initiate a START condition. Following this, the master sends onto the
SDA bus line 8 bits (MSB first) corresponding to the device select code (7 bits) and a
READ or WRITE bit. The 4 most significant bits of the device select code are the
device type identifier, corresponding to the I2C bus definition. For these memories the
4 bits are fixed as 1010b. The following 2 bits identify the specific memory on the
bus. They are matched to the chip enable signals E2, E1. Thus up to 4 x 4K memories
can be connected on the same bus giving a memory capacity total of 16 Kilobits.
40
-
8/3/2019 Wk 222mod Doc
41/110
`
After a START condition any memory on the bus will identify the device code and
compare the following 2 bits to its chip enable inputs E2, E1. The 7th bit sent is the
block number (one block = 256 bytes). The 8th bit sent is the read or write bit (RW),
this bit is set to 1 for read and 0 for write operations. If a match is found, the
corresponding memory will acknowledge the identification on the SDA bus during
the 9th bit time.
Fig: 4.8.1 AC Waveforms
Write Operations:
The Multibyte Write mode (only available on the ST24/25C04 versions) is
selected when the MODE pin is at VIH and the Page Write mode when MODE pin is
at VIL. The MODE pin may be driven dynamically with CMOS input levels.
Following a START condition the master sends a device select code with the RW bit
41
-
8/3/2019 Wk 222mod Doc
42/110
`
reset to 0. The memory acknowledges this and waits for a byte address. The byte
address of 8 bits provides access to one block of 256 bytes of the memory. After
receipt of the byte address the device again responds with an acknowledge. For the
ST24/25W04 versions, any write command with WC = 1 will not modify the memory
content.
Byte Write:
In the Byte Write mode the master sends one data byte, which is
acknowledged by the memory. The master then terminates the transfer by generating
a STOP condition. The Write mode is independent of the state of the MODE pin
which could be left floating if only this mode was to be used. However it is not a
recommended operating mode, as this pin has to be connected to either VIH or VIL,
to minimize the stand-by current.
Multibyte Write:
For the Multibyte Write mode, the MODE pin must be at VIH. The Multibyte
Write mode can be started from any address in the memory. The master sends from
one up to 4 bytes of data, which are each acknowledged by the memory. The transfer
is terminated by the master generating a STOP condition. The duration of the write
cycle is Tw = 10ms maximum except when bytes are accessed on 2 rows (that is have
different values for the 6 most significant address bits A7-A2), the programming time
is then doubled to a maximum of 20ms. Writing more than 4 bytes in the Multibyte
Write mode may modify data bytes in an adjacent row (one row is 8 bytes long).
However, the Multibyte Write can properly write up to 8 consecutive bytes as soon as
the first address of these 8 bytes is the first address of the row, the 7 following bytes
being written in the 7 following bytes of this same row.
Page Write:
For the Page Write mode, the MODE pin must be at VIL. The Page Write
mode allows up to 8 bytes to be written in a single write cycle, provided that they are
all located in the same row in the memory: that is the 5 most significant memoryaddress bits (A7-A3) are the same inside one block. The master sends from one up to
42
-
8/3/2019 Wk 222mod Doc
43/110
`
8 bytes of data, which are each acknowledged by the memory. After each byte is
transferred, the internal byte address counter (3 least significant bits only) is
incremented. The transfer is terminated by the master generating a STOP condition.
Care must be taken to avoid address counter roll-over which could result in data
being overwritten. Note that, for any write mode, the generation by the master of the
STOP condition starts the internal memory program cycle. All inputs are disabled
until the completion of this cycle and the memory will not respond to any request.
4.9 Minimizing System Delays by Polling on ACK:
During the internal write cycle, the memory disconnects itself from the bus in
order to copy the data from the internal latches to the memory cells. The maximum
value of the write time (Tw) is given from the AC Characteristics, since the typical
time is shorter, the time seen by the system may be reduced by an ACK polling
sequence issued by the master.
43
-
8/3/2019 Wk 222mod Doc
44/110
`
Fig:4.9.1 Write Cycle Polling using ACK
Data in the upper block of 256 bytes of the memory may be write protected.
The memory is write protected between a boundary address and the top of memory
(address 1FFh) when the PRE input pin is taken high and when the Protect Flag (bit
b2 in location 1FFh) is set to 0. The boundary address is user defined by writing it in
the Block Address Pointer. The Block Address Pointer is an 8 bit EEPROM register
located at the address 1FFh. It is composed by 5 MSBs Address Pointer, which
defines the bottom boundary address and 3 LSBs which must be programmed at 0.
This Address Pointer can therefore address a boundary in steps of 8 bytes.
The sequence to use the Write Protected feature is:
44
-
8/3/2019 Wk 222mod Doc
45/110
`
write the data to be protected into the top of the memory, up to, but not
including, location 1FFh;
set the protection by writing the correct bottom boundary address in the
Address Pointer (5 MSBs of location 1FFh) with bit b2 (Protect flag) set to
0. Note that for a correct functionality of the memory, all the 3 LSBs of
the Block Address Pointer must also be programmed at 0. The area will
now be protected when the PRE input pin is taken high. While the PRE
input pin is read at 0 by the memory, the location 1FFh can be used as a
normal EEPROM byte.
Fig: 4.9.1 Write Modes Sequence
4.10 Read Operations:
45
-
8/3/2019 Wk 222mod Doc
46/110
`
Read operations are independent of the state of the MODE pin. On delivery,
the memory content is set at all "1s" (or FFh).
Current Address Read:
The memory has an internal byte address counter. Each time a byte is read,
this counter is incremented. For the Current Address Read mode, following a START
condition, the master sends a memory address with the RW bit set to 1. The memory
acknowledges this and outputs the byte addressed by the internal byte address
counter. This counter is then incremented. The master does NOT acknowledge the
byte output, but terminates the transfer with a STOP condition.
Random Address Read:
A dummy write is performed to load the address into the address counter. This
is followed by another START condition from the master and the byte address is
repeated with the RW bit set to 1. The memory acknowledges this and outputs the
byte addressed. The master has to NOT acknowledge the byte output, but terminates
the transfer with a STOP condition.
Sequential Read:
This mode can be initiated with either a Current Address Read or a Random
Address Read. However, in this case the master DOES acknowledge the data byte
output and the memory continues to output the next byte in sequence. To terminate
the stream of bytes, the master must NOT acknowledge the last byte output, but
MUST generate a STOP condition. The output data is from consecutive byte
addresses, with the internal byte address counter automatically incremented after each
byte output. After a count of the last memory address, the address counter will roll-
over and the memory will continue to output data.
Acknowledge in Read Mode:
In all read modes the ST24/25x04 wait for an acknowledge during the 9th bit
time. If the master does not pull the SDA line low during this time, the ST24/25x04
terminate the data transfer and switches to a standby state.
46
-
8/3/2019 Wk 222mod Doc
47/110
`
Fig: 4.10 Read Modes Sequence
4.11 PROGRAMMING THE FLASH AND EEPROM
Atmels AT89S8252 Flash Microcontroller offers 8K bytes of in-system
reprogrammable Flash Code memory and 2K bytes of EEPROM Data memory. The
AT89S8252 is normally equipped with the on-chip Flash Code and EEPROM Data
memory arrays in the erased state (i.e. contents = FFH) and ready to be programmed.
47
-
8/3/2019 Wk 222mod Doc
48/110
`
This device supports a high-voltage (12-V VPP) Parallel programming mode
and a low-voltage (5-V VCC) Serial programming mode.
Serial Programming mode:
This mode provides a convenient way to reprogram the AT89S8252 inside the
users system. The Code and Data memory arrays are mapped via separate address
spaces in this mode. An auto-erase cycle is provided with the self-timed programming
operation. There is no need to perform the Chip Erase operation to reprogram any
memory location in this programming mode unless any of the lock bits have been
programmed.
Parallel Programming mode:
The parallel programming mode is compatible with conventional third party
Flash or EPROM programmers. In this mode, the two arrays occupy one contiguous
address space: 0000H to 1FFFH for the Code array and 2000H to 27FFH for the Data
array. In this mode, there is no auto-erase cycle. To reprogram any non-blank byte,
the user needs to use the Chip Erase operation first to erase both arrays.
The Code and Data memory arrays on the AT89S8252 are programmed byte-
by-byte in either programming mode.
Parallel Programming Algorithm:
To program and verify the AT89S8252 in the parallel programming mode, the
following sequence is recommended:
1. Power-up sequence: Apply power between VCC and GND pins. Set RST
pin to H. Apply a 3 MHz to 24 MHz clock to XTAL1 pin and wait for at
least 10 milliseconds.
48
-
8/3/2019 Wk 222mod Doc
49/110
`
2. Set PSEN pin to L ALE pin to H EA pin to H and all other pins to
H.
3. Apply the appropriate combination of H or L logic levels to pins P2.6,
P2.7, P3.6, and P3.7 to select one of the programming operations shown in
the Flash Programming Modes table.
4. Apply the desired byte address to pins P1.0 to P1.7 and P2.0 to P2.5. Apply
data to pins P0.0 to P0.7 for Write Code operation.
5. Raise EA/VPP to 12V to enable Flash programming, erase or verification.
6. Pulse ALE/PROG once to program a byte in the Code memory array, the
Data mem-ory array or the lock bits. The byte-write cycle is self-timed and
typically takes 1.5 ms.
7. To verify the byte just programmed, bring pin P2.7 to L and read the
programmed data at pins P0.0 to P0.7.
8. Repeat steps 3 through 7 changing the address and data for the entire 2K or
8K bytes array or until the end of the object file is reached.
9. Power-off sequence: Set XTAL1 to L. Set RST and EA pins to L. Turn
VCC power off.
4.12 Data Polling:
The AT89S8252 features DATA Polling to indicate the end of a byte write
cycle. During a byte write cycle in the parallel or serial programming mode, an
attempted read of the last byte written will result in the complement of the written
datum on P0.7 (parallel mode), and on the MSB of the serial output byte on MISO
(serial mode). Once the write cycle has been completed, true data are valid on all
outputs, and the next cycle may begin. DATA Polling may begin any time after a
write cycle has been initiated.
4.13 Ready/Busy:
The progress of byte programming in the parallel programming mode can also
be monitored by the RDY/BSY output signal. Pin P3.4 is pulled Low after ALE goes
49
-
8/3/2019 Wk 222mod Doc
50/110
`
high during programming to indicate BUSY. P3.4 is pulled High again when
programming is done to indicate READY.
4.14 Program Verify:
If lock bits LB1 and LB2 have not been programmed, the programmed Code
or Data byte can be read back via the address and data lines for verification. The state
of the lock bits can also be verified directly in the parallel programming mode. In the
serial programming mode, the state of the lock bits can only be verified indirectly by
observing that the lock bit features are enabled.
4.15 Chip Erase:
Both Flash and EEPROM arrays are erased electrically at the same time. In the
parallel programming mode, chip erase is initiated by using the proper combination of
control signals and by holding ALE/PROG low for 10 ms. The Code and Data arrays
are written with all 1s in the Chip Erase operation. In the serial programming mode,
a chip erase operation is initiated by issuing the Chip Erase instruction. In this mode,chip erase is self-timed and takes about 16 ms. During chip erase, a serial read from
any address location will return 00H at the data outputs.
4.16 SERIAL DOWNLOADING:
Both the Code and Data memory arrays can be programmed using the serialSPI bus while RST is pulled to VCC. The serial interface consists of pins SCK, MOSI
(input) and MISO (output). After RST is set high, the Programming Enable
instruction needs to be executed first before program/erase operations can be
executed.
An auto-erase cycle is built into the self-timed programming operation (in the
serial mode ONLY) and there is no need to first execute the chip erase instruction
unless any of the lock bits have been programmed. The Chip Erase operation turns the
content of every memory location in both the Code and Data arrays into FFH. The
50
-
8/3/2019 Wk 222mod Doc
51/110
`
Code and Data memory arrays have separate address spaces: 0000H to 1FFFH for
Code memory and 000H to 7FFH for Data memory. Either an external system clock is
supplied at pin XTAL1 or a crystal needs to be connected across pins XTAL1 and
XTAL2. The maximum serial clock (SCK) frequency should be less than 1/40 of the
crystal frequency. With a 24 MHz oscillator clock, the maximum SCK frequency is
600 kHz.
Serial Programming Algorithm:
To program and verify the AT89S8252 in the serial programming mode, the
following sequence is recommended:
1. Power-up sequence: Apply power between VCC and GND pins. Set RST pin
to H. If a crystal is not connected across pins XTAL1 and XTAL2, apply a 3
MHz to 24 MHz clock to XTAL1 pin and wait for at least 10 milliseconds.
2. Enable serial programming by sending the Programming Enable serial
instruction to pin MOSI/P1.5. The frequency of the shift clock supplied at pin
SCK/P1.7 needs to be less than the CPU clock at XTAL1 divided by 40.
3. The Code or Data array is programmed one byte at a time by supplying the
address and data together with the appropriate Write instruction. The selected
memory loca-tion is first automatically erased before new data is written. The
write cycle is self-timed and typically takes less than 2.5 ms at 5V.
4. Any memory location can be verified by using the Read instruction which
returns the content at the selected address at serial output MISO/P1.6.
5. At the end of a programming session, RST can be set low to commence normal
operation.
6. Power-off sequence (if needed): Set XTAL1 to L (if a crystal is not used).
Set RST to L. Turn VCC power off.
The algorithm used in this project to enable EEPROM is serial programming mode.
4.17 Machine cycle for the 8052
51
-
8/3/2019 Wk 222mod Doc
52/110
`
The CPU takes a certain number of clock cycles to execute an instruction. In
the 8052 family, these clock cycles are referred to as machine cycles. The length of
the machine cycle depends on the frequency of the crystal oscillator. The crystal
oscillator, along with on-chip circuitry, provides the clock source for the 8052 CPU.
The frequency can vary from 4 MHz to 30 MHz, depending upon the chip
rating and manufacturer. But the exact frequency of 11.0592 MHz crystal oscillator is
used to make the 8052 based system compatible with the serial port of the IBM PC.
In the original version of 8052, one machine cycle lasts 12 oscillator periods.
Therefore, to calculate the machine cycle for the 8052, the calculation is made as 1/12
of the crystal frequency and its inverse is taken.
4.18 RELAYS:
A relay is an electrically controllable switch widely used in industrial controls,
automobiles and appliances.
The relay allows the isolation of two separate sections of a system with two
different voltage sources i.e., a small amount of voltage/current on one side can
handle a large amount of voltage/current on the other side but there is no chance that
these two voltages mix up.
Fig:4.18 Circuit symbol of a relay
4.19 Operation:
When a current flow through the coil, a magnetic field is created around the
coil i.e., the coil is energized. This causes the armature to be attracted to the coil. The
armatures contact acts like a switch and closes or opens the circuit. When the coil is
52
-
8/3/2019 Wk 222mod Doc
53/110
`
not energized, a spring pulls the armature to its normal state of open or closed. There
are all types of relays for all kinds of applications.
Fig: 4.20 Relay Operation and use of protection diodes
Transistors and ICs must be protected from the brief high voltage 'spike'
produced when the relay coil is switched off. The above diagram shows how a signal
diode (eg 1N4148) is connected across the relay coil to provide this protection. The
diode is connected 'backwards' so that it will normally not conduct. Conduction
occurs only when the relay coil is switched off, at this moment the current tries to
flow continuously through the coil and it is safely diverted through the diode. Without
the diode no current could flow and the coil would produce a damaging high voltage
'spike' in its attempt to keep the current flowing.
In choosing a relay, the following characteristics need to be considered:
1. The contacts can be normally open (NO) or normally closed (NC). In the NC
type, the contacts are closed when the coil is not energized. In the NO type,
the contacts are closed when the coil is energized.
2. There can be one or more contacts. i.e., different types like SPST (single pole
single throw), SPDT (single pole double throw) and DPDT (double pole
double throw) relays.
53
-
8/3/2019 Wk 222mod Doc
54/110
`
3. The voltage and current required to energize the coil. The voltage can vary
from a few volts to 50 volts, while the current can be from a few milliamps to
20milliamps. The relay has a minimum voltage, below which the coil will not
be energized. This minimum voltage is called the pull-in voltage.
4. The minimum DC/AC voltage and current that can be handled by the contacts.
This is in the range of a few volts to hundreds of volts, while the current can
be from a few amps to 40A or more, depending on the relay.
4.20 TRANSISTOR DRIVER CIRCUIT:
An SPDT relay consists of five pins, two for the magnetic coil, one as the
common terminal and the last pins as normally connected pin and normally closed
pin. When the current flows through this coil, the coil gets energized. Initially when
the coil is not energized, there will be a connection between the common terminal and
normally closed pin. But when the coil is energized, this connection breaks and a new
connection between the common terminal and normally open pin will be established.
Thus when there is an input from the microcontroller to the relay, the relay will be
switched on. Thus when the relay is on, it can drive the loads connected between the
common terminal and normally open pin. Therefore, the relay takes 5V from themicrocontroller and drives the loads which consume high currents. Thus the relay acts
as an isolation device.
Digital systems and microcontroller pins lack sufficient current to drive the relay.
While the relays coil needs around 10milli amps to be energized, the
microcontrollers pin can provide a maximum of 1-2milli amps current. For this
reason, a driver such as a power transistor is placed in between the microcontroller
and the relay.
54
-
8/3/2019 Wk 222mod Doc
55/110
`
Fig: 4.20 Transistor driver circuit.
The operation of this circuit is as follows:
The input to the base of the transistor is applied from the microcontroller port
pin P1.0. The transistor will be switched on when the base to emitter voltage is greater
than 0.7V (cut-in voltage). Thus when the voltage applied to the pin P1.0 is high i.e.,
P1.0=1 (>0.7V), the transistor will be switched on and thus the relay will be ON and
the load will be operated.
When the voltage at the pin P1.0 is low i.e., P1.0=0 (
-
8/3/2019 Wk 222mod Doc
56/110
`
Fig: 4.21 RELAY INTERFACING WITH THE MICROCONTROLLER:
56
DRIVER
CIRCUIT
RELAY
LOAD
LCD INTERFACING
AT 89S52
P1.0
-
8/3/2019 Wk 222mod Doc
57/110
`
CHAPTER 5
LIQUID CRYSTAL DISPLAY:
LCD stands for Liquid Crystal Display. LCD is finding wide spread use replacing
LEDs (seven segment LEDs or other multi segment LEDs) because of the following
reasons:
1. The declining prices of LCDs.
2. The ability to display numbers, characters and graphics. This is in contrast to
LEDs, which are limited to numbers and a few characters.3. Incorporation of a refreshing controller into the LCD, thereby relieving the CPU
of the task of refreshing the LCD. In contrast, the LED must be refreshed by the
CPU to keep displaying the data.
4. Ease of programming for characters and graphics.
These components are specialized for being used with the microcontrollers,
which means that they cannot be activated by standard IC circuits. They are used for
writing different messages on a miniature LCD.
Fig:5.1 LCD
A model described here is for its low price and great possibilities most
frequently used in practice. It is based on the HD44780 microcontroller (Hitachi) and
can display messages in two lines with 16 characters each . It displays all the
alphabets, Greek letters, punctuation marks, mathematical symbols etc. In addition, it
is possible to display symbols that user makes up on its own. Automatic shifting
57
-
8/3/2019 Wk 222mod Doc
58/110
`
message on display (shift left and right), appearance of the pointer, backlight etc. are
considered as useful characteristics.
5.1Pin Functions:
There are pins along one side of the small printed board used for connection to
the microcontroller. There are total of 14 pins marked with numbers (16 in case the
background light is built in). Their function is described in the table below:
Table 5.1 pin functions
58
Function
Pin
Number Name
Logic
State Description
Ground 1 Vss - 0V
Power supply 2 Vdd - +5V
Contrast 3 Vee - 0 - Vdd
Control of
operating
4 RS0
1
D0 D7 are
interpreted as commands
D0 D7 are interpreted as
data
5 R/W0
1
Write data (from controller
to LCD)
Read data (from LCD to
controller)
6 E
0
1
From 1 to
0
Access to LCD disabled
Normal operating
Data/commands are
transferred to LCD
Data /
commands
7 D0 0/1 Bit 0 LSB
8 D1 0/1 Bit 1
9 D2 0/1 Bit 2
10 D3 0/1 Bit 3
11 D4 0/1 Bit 4
12 D5 0/1 Bit 5
13 D6 0/1 Bit 6
14 D7 0/1 Bit 7 MSB
-
8/3/2019 Wk 222mod Doc
59/110
`
5.2 LCD Screen:
LCD screen consists of two lines with 16 characters each. Each character consists of
5x7 dot matrix. Contrast on display depends on the power supply voltage and whether
messages are displayed in one or two lines. For that reason, variable voltage 0-Vdd is
applied on pin marked as Vee. Trimmer potentiometer is usually used for that
purpose. Some versions of displays have built in backlight (blue or green diodes).
When used during operating, a resistor for current limitation should be used (like with
any LE diode).
Fig:5.2LCD Screen
5.3 LCD Basic Commands :
All data transferred to LCD through outputs D0-D7 will be interpreted as
commands or as data, which depends on logic state on pin RS:
RS = 1 - Bits D0 - D7 are addresses of characters that should be displayed. Built in
processor addresses built in map of characters and displays corresponding symbols.
Displaying position is determined by DDRAM address. This address is either
previously defined or the address of previously transferred character is automatically
incremented.
59
-
8/3/2019 Wk 222mod Doc
60/110
`
RS = 0 - Bits D0 - D7 are commands which determine display mode. List of
commands which LCD recognizes are given in the table below:
I/D 1 = Increment (by 1) R/L 1 = Shift right
0 = Decrement (by 1) 0 = Shift left
S 1 = Display shift on DL 1 = 8-bit interface
0 = Display shift off 0 = 4-bit interface
D 1 = Display on N 1 = Display in two lines
0 = Display off 0 = Display in one line
U 1 = Cursor on F 1 = Character format 5x10 dots
0 = Cursor off 0 = Character format 5x7 dots
B 1 = Cursor blink on D/C 1 = Display shift
60
Command RS RW D7 D6 D5 D4 D3 D2 D1 D0Execution
Time
Clear display 0 0 0 0 0 0 0 0 0 1 1.64mS
Cursor home 0 0 0 0 0 0 0 0 1 x 1.64mS
Entry mode set 0 0 0 0 0 0 0 1I/
DS 40uS
Display on/off control 0 0 0 0 0 0 1 D U B 40uS
Cursor/Display Shift 0 0 0 0 0 1 D/C R/L x x 40uS
Function set 0 0 0 0 1 DL N F x x 40uS
Set CGRAM address 0 0 0 1 CGRAM address 40uS
Set DDRAM address 0 0 1 DDRAM address 40uS
Read BUSY flag (BF) 0 1 BF DDRAM address -
Write to CGRAM or
DDRAM1 0 D7 D6 D5 D4 D3 D2 D1 D0 40uS
Read from CGRAM or
DDRAM1 1 D7 D6 D5 D4 D3 D2 D1 D0 40uS
-
8/3/2019 Wk 222mod Doc
61/110
`
0 = Cursor blink off 0 = Cursor shift
5.4 LCD Initialization:
Once the power supply is turned on, LCD is automatically cleared. This process lasts
for approximately 15mS. After that, display is ready to operate. The mode of
operating is set by default. This means that:
1. Display is cleared
2. Mode
DL = 1 Communication through 8-bit interfaceN = 0 Messages are displayed in one line
F = 0 Character font 5 x 8 dots
3. Display/Cursor on/off
D = 0 Display off
U = 0 Cursor off
B = 0 Cursor blink off
4. Character entry
ID = 1 Addresses on display are automatically incremented by 1
S = 0 Display shift off
Automatic reset is mainly performed without any problems. Mainly but not always! If
for any reason power supply voltage does not reach full value in the course of 10mS,
display will start perform completely unpredictably? If voltage supply unit can not
meet this condition or if it is needed to provide completely safe operating, the process
of initialization by which a new reset enabling display to operate normally must be
applied.
Algorithm according to the initialization is being performed depends on whether
connection to the microcontroller is through 4- or 8-bit interface. All left over to be
done after that is to give basic commands and of course- to display messages.
61
-
8/3/2019 Wk 222mod Doc
62/110
`
Fig: 5.4 Procedure on 8-Bit Initialization.
5.5 LCD INTERFACING WITH THE MICROCONTROLLER:
62
-
8/3/2019 Wk 222mod Doc
63/110
`
Fig: 5.5 Sending Commands to LCD
To send commands we simply need to select the command register. Everything is
same as we have done in the initialization routine. But we will summarize thecommon steps and put them in a single subroutine. Following are the steps:
Move data to LCD port
select command register
select write operation
send enable signal
wait for LCD to process the command
5.6 CODE:
void LCD_command(unsigned char var)
{
LCD_data = var; //Function set: 2 Line, 8-bit, 5x7 dots
LCD_rs = 0; //Selected command register
LCD_rw = 0; //We are writing in instruction register
LCD_en = 1; //Enable H->L
63
Vcc
Gnd
PRESET
(CONTRAST
CONTROL)
VccFOR
BACKLIGHT
PURPOSE
P2.0
P2.1
P2.2
89S52 P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
4 (RS) 1
5 (R/W) 2
6(EN) 3
LCD
D0
D1
D2
D3
D4
D5 15
D6 16
D7
Gnd
-
8/3/2019 Wk 222mod Doc
64/110
`
LCD_en = 0;
LCD_busy(); //Wait for LCD to process the command
}
// Using the above function is really simple
// var will carry the command for LCD
// e.g.
//
// LCD_command(0x01);
Sending Data to LCD
To send data we simply need to select the data register. Everything is same as the
command routine. Following are the steps:
Move data to LCD port
select data register
select write operation
send enable signal
wait for LCD to process the data
64
-
8/3/2019 Wk 222mod Doc
65/110
`
Keeping these steps in mind we can write LCD command routine as.
5.7 CODE:
void LCD_senddata(unsigned char var)
{
LCD_data = var; //Function set: 2 Line, 8-bit, 5x7 dots
LCD_rs = 1; //Selected data register
LCD_rw = 0; //We are writing
LCD_en = 1; //Enable H->L
LCD_en = 0;
LCD_busy(); //Wait for LCD to process the command
}
// Using the above function is really simple
// we will pass the character to display as argument to function
// e.g.
//
// LCD_senddata('A');
65
-
8/3/2019 Wk 222mod Doc
66/110
`
5.8 Switch Interfacing With The Microcontroller:
Switches are the most widely used input/output devices of the 8052.
CPU accesses the switches through ports. Therefore these switches are
connected to a microcontroller. This switch is connected between the supply and
ground terminals. A single microcontroller (consisting of a microprocessor, RAM and
EEPROM and several ports all on a single chip) takes care of hardware and software
interfacing of the switch.
These switches are connected to an input port. When no switch is pressed,
reading the input port will yield 1s since they are all connected to high (Vcc). But if
any switch is pressed, one of the input port pins will have 0 since the switch pressed
provides the path to ground. It is the function of the microcontroller to scan the
switches continuously to detect and identify the switch pressed.
The switches that we are using in our project are 4 leg micro switches of
momentary type.
Vcc
R
Gnd
Fig: 5.8 Interfacing switch with the microcontroller
Thus now the two conditions are to be remembered:
66
P0.2
-
8/3/2019 Wk 222mod Doc
67/110
`
1. When the switch is open, the total supply i.e., Vcc appears at the port pin P0.2
P0.2 = 1
2. When the switch is closed i.e., when it is pressed, the total supply path is
provided to ground. Thus the voltage value at the port pin P0.2 will be zero.
P0.2 = 0
By reading the pin status, the microcontroller identifies whether the switch is pressed
or not. When the switch is pressed, the corresponding related to this switch press
written in the program will be executed.
5.9 Trigger card:
This is a slot where in we can place the recharge card in this particular
location where in the data in this card is read through the microcontroller.
5.10 Slots for Recharge:
This is only the slot for placing the recharge card.
5.11 Load banks:
These are the loads what we connect to our project where in when the loadsare in on state then the power consumed by it is taken to the energy meter and the
readings of this are shown on the 16 x2 LCD display.
5.12 ENERGY METER:
Energy Meter is an exclusive project that enables the user to consume the
power in a more efficient way .when the user tries to consume the power i.e. when he
switches on any of the electrical appliances in his house. When these electricalappliances are switched on, they consume more or less some power. In this project the
energy meter we are using for taking the counts is the ADE 7757 IC.
5.13 ADE7757: Single Phase Energy Metering IC with Integrated
Oscillator
The ADE7757 is an accurate electrical energy measurement integrated circuit.
It is a pin reduction version of ADE7755 with an enhancement of a precise oscillator
67
-
8/3/2019 Wk 222mod Doc
68/110
`
circuit that serves as a clock source to the chip. The ADE7757 eliminates the cost of
an external crystal or resonator, thus reducing the overall cost of a meter built with
this IC. The chip directly interfaces with shunt resistor.
The ADE7757 provides instantaneous and average real power based on line
current and voltage. The part specifications surpass the accuracy requirements as
quoted in the IEC1036 standard. The only analog circuitry used in the ADE7757 is in
the ADCs and reference circuit. All other signal processing (e.g., multiplication and
filtering) is carried out in the digital domain. This approach provides superior stability
and accuracy over extremes in environmental conditions and over time.
The small analog input full-scale allows the chip to interface to low valueshunt resistances without losing dynamic range. The ADE7757 is available in 16-lead
SOIC narrow-body package.
Fig:5.13 Energy Meter
5.14 Design Calculations:
The design parameters are as follows:
Line voltage = 220 V (nominal)
IMAX = 30 A (Ib = 5 A)
Counter = 100 imp/kWh
Meter constant = 1600 imp/kWh
Shunt size = 350 micro ohms.
68
-
8/3/2019 Wk 222mod Doc
69/110
`
100 imp/hour = 100/3600 sec = 0.02777 Hz
Meter calibration at Ib (5 A)
Power dissipation at Ib = 220 V 5 A = 1.2 kW
Freq. on F1 (and F2) at Ib = 1.1 0.0277 Hz = 0.0305555 Hz
Voltage across shunt (V1) at Ib = 5 A x 350 (micro ohms) = 1.75 mV rms
69
-
8/3/2019 Wk 222mod Doc
70/110
`
POWER SUPPLY DESIGN
70
-
8/3/2019 Wk 222mod Doc
71/110
`
CHAPTER 6
POWER SUPPLY
The input to the circuit is applied from the regulated power supply. The a.c.
input i.e., 230V from the mains supply is step down by the transformer to 12V and is
fed to a rectifier. The output obtained from the rectifier is a pulsating d.c voltage. So
in order to get a pure d.c voltage, the output voltage from the rectifier is fed to a filter
to remove any a.c components present even after rectification. Now, this voltage is
given to a voltage regulator to obtain a pure constant dc voltage.
Fig:6.0 Power supply
71
RegulatorFilterBridge
Rectifier
Step down
transformer
230V AC
50Hz D.C
Output
-
8/3/2019 Wk 222mod Doc
72/110
`
6.1Transformer:
Usually, DC voltages are required to operate various electronic equipment and
these voltages are 5V, 9V or 12V. But these voltages cannot be obtained directly.
Thus the a.c input available at the mains supply i.e., 230V is to be brought down tothe required voltage level. This is done by a transformer. Thus, a step down
transformer is employed to decrease the voltage to a required level.
Fig:6.1 Transformer
6.2 Rectifier:
The output from the transformer is fed to the rectifier. It converts A.C. into
pulsating D.C. The rectifier may be a half wave or a full wave rectifier. In this project,
a bridge rectifier is used because of its merits like good stability and full wave
rectification.
Fig:6.2 Power Supply
72
-
8/3/2019 Wk 222mod Doc
73/110
`
The Bridge rectifier is a circuit, which converts an ac voltage to dc voltage using both
half cycles of the input ac voltage. The Bridge rectifier circuit is shown in the figure.
The circuit has four diodes connected to form a bridge. The ac input voltage is applied
to the diagonally opposite ends of the bridge. The load resistance is connected
between the other two ends of the bridge.
For the positive half cycle of the input ac voltage, diodes D1 and D3 conduct, whereas
diodes D2 and D4 remain in the OFF state. The conducting diodes will be in series
with the load resistance RL and hence the load current flows through RL.
For the negative half cycle of the input ac voltage, diodes D2 and D4 conduct
whereas, D1 and D3 remain OFF. The conducting diodes D2 and D4 will be in serieswith the load resistance RL and hence the current flows through RL in the same
direction as in the previous half cycle. Thus a bi-directional wave is converted into a
unidirectional wave.
73
-
8/3/2019 Wk 222mod Doc
74/110
`
Fig:6.3 Expected Wave Forms
6.3Filter:
74
-
8/3/2019 Wk 222mod Doc
75/110
`
Capacitive filter is used in this project. It removes the ripples from the output
of rectifier and smoothens the D.C. Output received from this filter is constant until
the mains voltage and load is maintained constant. However, if either of the two is
varied, D.C. voltage received at this point changes. Therefore a regulator is applied at
the output stage.
6.4 Voltage Regulator:
Fig:6.4Voltage Regulator
As the name itself implies, it regulates the input applied to it. A voltage
regulator is an electrical regulator designed to automatically maintain a constant
voltage level. In this project, power supply of 5V and 12V are required. In order to
obtain these voltage levels, 7805 and 7812 voltage regulators are to be used. The first
number 78 represents positive supply and the numbers 05, 12 represent the required
output voltage levels. The L78xx series of three-terminal positive regulators is
available in TO-220, TO-220FP, TO-3, D2PAK and DPAK packages and several
fixed output voltages, making it useful in a wide range of applications. These
regulators can provide local on-card regulation,
eliminating the distribution problems
associated with single point regulation.
75
-
8/3/2019 Wk 222mod Doc
76/110
`
Fig Voltage Regulator
Each type employs internal current limiting, thermal shut-down and safe area
protection, making it essentially indestructible. If adequate heat sinking is provided,
they can deliver over 1 A output current. Although designed primarily as fixed
voltage regulators, these devices can be used with external components to obtain
adjustable voltage and currents.
76
-
8/3/2019 Wk 222mod Doc
77/110
`
Software Tools
77
-
8/3/2019 Wk 222mod Doc
78/110
`
CHAPTER 7
SOFT WARE TOOLS
7.1 KEIL SOFTWARE:
Keil compiler is a software used where the machine language code is written
and compiled. After compilation, the machine source code is converted into hex code
which is to be dumped into the microcontroller for further processing. Keil compiler
also supports C language code.
7.2 Steps To Write An Assembly / C Language Program In Keil And
How To Compile It:
1. Install the Keil Software in the PC in any of the drives.
2. After installation, an icon will be created with the name Keil uVision3. Just
drag this icon onto the desktop so that it becomes easy whenever you try to write
programs in keil.
3. Double click on this icon to start the keil compiler.
4. A page opens with different options in it showing the project workspace at the
leftmost corner side, output window in the bottom and an ash coloured space for
the program to be written.
5. Now to start using the keil, click on the option project.
6. A small window opens showing the options like new project, import project, open
project etc. Click on New project.
7. A small window with the title bar Create new project opens. The window asksthe user to give the project name with which it should be created and the
destination location. The project can be created in any of the drives available. You
can create a new folder and then a new file or can create directly a new file.
8. After the file is saved in the given destination location, a window opens where a
list of vendors will be displayed and you have to select the device for the target
you have created.
78
-
8/3/2019 Wk 222mod Doc
79/110
`
9. The most widely used vendor is Atmel. So click on Atmel and now the family of
microcontrollers manufactured by Atmel opens. You can select any one of the
microcontrollers according to the requirement.
10. When you click on any one of the microcontrollers, the features of that particular
microcontroller will be displayed on the right side of the page. The most
appropriate microcontroller with which most of the projects can be implemented
is the AT89S52. Click on this microcontroller and have a look at its features. Now
click on OK to select this microcontroller.
11. A small window opens asking whether to copy the startup code into the file you
have created just now. Just click on No to proceed further.
12. Now you can see the TARGET and SOURCE GROUP created in the project
workspace.
13. Now click on File and in that New. A new page opens and you can start
writing program in it.
14. After the program is completed, save it with any name but with the .asm or .c
extension. Save the program in the file you have created earlier.
15. You can notice that after you save the program, the predefined keywords will be
highlighted in bold letters.
16. Now add this file to the target by giving a right click on the source group. A list of
options open and in that select Add files to the source group. Check for this file
where you have saved and add it.
17. Right click on the target and select the first option Options for target. A window
opens with different options like device, target, output etc. First click on target.
18. Since the set frequency of the microcontroller is 11.0592 MHz to interface with
the PC, just enter this frequency value in the Xtal (MHz) text area and put a tick
on the Use on-chip ROM. This is because the program what we write here in the
keil will later be dumped into the microcontroller and will be stored in the inbuilt
ROM in the microcontroller.
19. Now click the option Output and give any name to the hex file to be created in
the Name of executable text area and put a tick to the Create HEX file option
present in the same window. The hex file can be created in any of the drives. You
can change the folder by clicking on Select folder for Objects.
79
-
8/3/2019 Wk 222mod Doc
80/110
-
8/3/2019 Wk 222mod Doc
81/110
`
5. Click on the Proload icon in the PC. A window appears providing the
information like Hardware model, com port, device type, Flash size etc. Click
on browse option to select the hex file to be dumped into the microcontroller
and then click on Auto program to program the microcontroller with that
particular hex file.
6. The status of the microcontroller can be seen in the small status window in the
bottom of the page.After this process is completed, remove the microcontroller
from the programmer kit and place it in your system board. Now the system
board behaves according to the program written in the microcontroller.
7.4 Advantages:
1. Sophisticated security
2. Monitors all hazards and threats
3. Alerts whenever the units are nearing to zero units
4. Can be recharged at any time.
7.5 Applications:
1. Banks
2. Offices
3. Industries
4. Jeweler Shops and Home Applications
81
-
8/3/2019 Wk 222mod Doc
82/110
`
RESULT
82
-
8/3/2019 Wk 222mod Doc
83/110
`
RESULT
By using our project we can reduce the electricity bill, it can be paid
now through E-Seva centers,ATMs,Net-banking and even through mobile phones .
But prepaid electricity is a unique and new concept which saves lot of time and a
power for electricity department. At every instant units values are stored in
EEPROM .So that no data loss even in power failure cases.
83
-
8/3/2019 Wk 222mod Doc
84/110
`
CONCLUSION
84
-
8/3/2019 Wk 222mod Doc
85/110
`
CONCLUSION
This project presents a Prepaid Energy Meter using 89S52. The Energy
consumption calculation based on the counting of pulses is designed and implemented
with Atmel 89S52 MCU in embedded system domain. Set up on the Energy tracking
system, the counting of pulses is used to determine the energy consumption. The
proposed Energy Meter is used can track the energy consumption automatically.
Thus, the efficiency of Energy Meter Calculation can be increased. Experimental
work has been carried out carefully. The result shows that higher efficiency is indeed
achieved using the embedded system. The proposed method is verified to be highly
beneficial for the Domestic purpose.
85
-
8/3/2019 Wk 222mod Doc
86/110
`
REFERENCES
REFERENCES
1. Embedded and real time projects system by Dr.kvk.prasad ,Black book
2. Embedded System By Raj Kamal fourth edition
3. 8052 Microcontroller And Embedded Systems By Ali Mazzidi
86
-
8/3/2019 Wk 222mod Doc
87/110
`
4. 8051 micro controller by Ak.ayala second edition
5. micro processor and interfacing by A.k.ray fourth edition
6. micro controllers and assembly language by dougles .Vhall forth edition
7. Electronics for you ( magazine)
8. Electrikindia (magazine)
9. Electronics bazar (magazine)
87
-
8/3/2019 Wk 222mod Doc
88/110
`
APPENDIX
88
-
8/3/2019 Wk 222mod Doc
89/110
`
89
1
Features Compatible with MCS-51 Products
8K Bytes of In-System Programmable (ISP) Flash Memory
Endurance: 1000 Write/Erase Cycles
4.0V to 5.5V Operating Range Fully Static Operation: 0 Hz to 33 MHz
Three-level Program Memory Lock 256 x 8-bit Internal RAM 32 Programmable I/O Lines Three 16-bit Timer/Counters Eight Interrupt Sources Full Duplex UART Serial Channel Low-power Idle and Power-down Modes Interrupt Recovery from Power-down Mode Watchdog Timer Dual Data Pointer Power-off Flag
Description
The AT89S52 is a low-power, high-performance CMOS 8-bit microcontroller with 8K
bytes of in-system programmable Flash memory. The device is manufactured using
Atmels high-density nonvolatile memory technology and is compatible with the indus-
try-standard 80C51 instruction set and p