DESIGN AND CONSTRUCTION OF A MICROCONTROLLER
BASED DIGITAL CALENDAR WITH TIME, DATE, MONTH AND
YEAR
BY
SUBMITTED TO
THE DEPARTMENT
ENGINEERING
FACULTY OF ENGINEERING
ENUGU STATE UNIVERSITY OF SCIENCE AND TECHNOLOGY,
(ESUT), ENUGU
IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE
AWARD OF BACHELOR OF ENGINEERING (B.ENG) DEGREE
IN ELECTRICAL AND ELECTRONICS ENGINEERING.
OCTOBER 2006
CERTIFICATION
I,
NNAM
AMOGECHUKWU
with
registration
ESUT/2005/77776 certify that this project report
number
Design and
construction of a microcontroller based digital calendar with
time, date, month and year was written by me, and to the
best of my knowledge it has not been presented elsewhere for a
certificate, diploma or degree of any other higher institution.
------------------------------------------------------NNAM
Date
AMOGECHUKWU
APPROVAL
This project titled Design and construction of a microcontroller
based digital calendar with time, date, month was approved
for and carried out in accordance to the standard of computer
engineering department in partial fulfillment of the requirements
for the award of bachelor of Engineering degree in Electrical and
Electronics Engineering.
The following undersigned are witnesses.
DR.
ENEH
DATE
(PROJECT SUPERVISOR)
DEDICATION
I wish to acknowledge with thank, God Almighty, who
has given me life and made this project/research work a success;
I give him all the glory.
I wish to acknowledge with gratitude the effort of my Lecturers
who worked so hard to transform me to what I am today.
I would also like to acknowledge and thank my Parents for a job
well done; their wonderful contribution through out my
educational pursuit. They have supported me financially, morally
and spiritually and I wish to express my deepest thanks to them.
ACKNOWLEDGEMENT
I wish to acknowledge with thank, God Almighty, who has given
me life and made this project/research work a success; I give him
all the glory.
I wish to acknowledge with gratitude the effort of my
supervisor, Dr. Tom A. Nwodoh for his patience and most of all for
his help during my research study and implementation of this
project work, he has been really wonderful.
I would also like to acknowledge and thank my Brother and
Wife, Dr. and Mrs. Nsumei P.A for a job well done; their wonderful
contribution through out my educational pursuit. They have
supported me financially, morally and spiritually and I wish to
express my deepest thanks to them.
Also, my big thanks goes to every member of my family; Emma,
Anwuli, Nkechi, Agatha, Solex, Ifeanyi and Prisca for their love
and supports.
And to my darling, Armstrong Buba for his care and sacrifices
also for making this write-up a reality; I love you.
And to my friends Thompson Akabuogu, Confidence, Rosexcel,
Ugomma, Stephanie,Monique,Faith,Cynthia,Beauty,Oghenetano,
the household of NIFES and to all other. God bless you all richly
Amen.
ABSTRACT
The design and operational principle of the digital calendar and
digital clock is the subject of this thesis. The system as realized in
this book is made up of six units.
The power supply unit supplies the required regulated voltage to
the appropriate connections of the overall circuit. The micro
controller controls the general operation of the circuit; all the
other units are interfaced to it. The input unit is activated by
pressing the keypad (buttons) unit to call up the subroutine
program that controls the set date, month, year and time with
alarm instructions. The decoder with the aid of the micro
controller executes the instruction codes, which are transmitted
to the light emitting diode that corresponds to the actual day that
is to display. The display unit consist of a twelve seven segment
display in which their common anode is driven by a NPN
switching transistor; displaying digits in a multiplex mode.
TABLE OF CONTENT
Title Page...i
Certification.....ii
Approval Page..iii
Dedication iv
Acknowledgement.v
Abstract .vi
Table of Contentvii
List of Figures.....viii
List of Tablesix
Abstract..x
CHAPTER ONE: INTRODUCTION
1.0 Objective of Project Design
1.1 Justification of Project.
1.2 Scope of Project..
1.3 Block Diagram of Project.
1.4 Project Report
Organization..
CHAPTER TWO: LITERATURE REVIEW
2.0 Origin of Project..
2.1 Uses of Project
CHAPTER THREE: DESIGN ANALYSIS
3.0 Information Gathering.
3.1 Analysis of Block Diagram..
3.2 Analysis of AT89C51 (Microcontroller).
3.3.1 Features of AT89C51..
3.3.2 Pin Description..
3.4 Led Characteristics..
3.5 The Voltage Regulator..
3.6 The Voltage Supply
Transformer.
3.7 The Power transistor
3.8 System Flow Chart
CHAPTER FOUR: DESIGN OF PROJECT
4.1 Preliminary
Designs..
4.2.1 Power Supply Design..
4.2.2 Microcontroller.
4.2.3 Transistored Seven Segment
Display
4.3.1 Software Design
4.3.2 Program Code.
4.4 Software/ Hardware
Integration..
CHAPTER FIVE: TESTING
5.1 System Testing
Integration..
5.2 Test Plan and Test
Data...
5.2.1 Component Test..
5.2.2 System Test
5.2.3 Transformer Test (step down)..
5.2.4 Other Tests
5.3 Experimented Result/ Actual
Result.
5.4 Performance Evaluation
CHAPTER SIX: SUMMARY
6.1 Summary and Conclusion.
6.2 Summary of Achievement..
6.3 Problems Encountered and
Solution.
6.4 Suggestions for Further
Improvement.
6.5 Conclusion.
Reference
Appendix
Appendix A: System component list
Appendix B: Component cost analysis table
Appendix C: Complete system circuit schematics
Appendix D: System components layout
Appendix E: System wiring schedule
Appendix F: System source code in Atmel 89C51 Microcontroller
Assembly language
Appendix G: System users guide
Appendix H: Project package photograph
Appendix I: Atmel 89C51 Microcontroller instruction set
LIST OF FIGURES
FIGURE
PAGE
TITLE
Figure 1.1: Block diagram of project..
Figure 3.1: Block diagram analysis.
Figure 3.2: Microcontroller Interface with Keyboard.
Figure 3.3: Power Supply Interface with Microcontroller
Figure 3.4: Microcontroller Interface with Alarm Unit
Figure 3.5: Pin layout of the 74LS138.
Figure 3.6: Pin Configuration of AT89C51..
Figure 3.7: Block Diagram of AT89C51 Internal Circuitry..
Figure 3.8: Seven Segment Display and LED.
Figure 3.9: A 7805 Voltage Regulator..
Figure 3.10: Circuit Diagram of Step down Transformer
Figure 3.11: Bipolar Junction Transistors.
Figure 3.12: System Flow Chart
Figure 4.1: Block Diagram Overview..
Figure 4.2: Block Diagram of a Regulated Power Supply
System..
Figure 4.3: Step down Transformer
Figure 4.4: Transistorized Seven Segment.
Figure 4.5: Software Design
LIST OF TABLES
TABLE
TITLE
PAGE
Table 3.1: Alternate functions of Port 3.
Table 4.1: Limiting Values of NPN transistor C945..
Table 5.1: Tests for Transistor
Table 5.2: Experimented Values versus Actual Values
CHAPTER ONE
INTRODUCTION
The purpose of this project is to produce a narrative description
of the design and construction of digital calendar with date,
month, year and time with alarm.
Firstly computer aided design is the modeling of physical
system on Computers lowing both interactive and automatic
analysis of design variant and the expression of design in a form
suitable for manufacturing. This follows by explaining digital
calendar/clock as a date/time keeping digital device which is fast
gaining wide acceptance and application in the present days due
to its ability to provide a very high precision timing by the days
and events. Digital calendar can also be described as digital
system for processing information in which the information is
represented by physical quantities, which are so constrained to
take only discrete values that can be referred to as binary
signals.
The application of digital calendar with clock varies widely from
normal time alarm system. Also computer system uses digital
clock and calendar in keeping track of time and date in
synchronization of several activities in its everyday operation due
to the abilities in the systems.
In this design we have implored the use of both hardware and
software to bring about the entire project. The hardware
components are solely coordinated by the AT89C51 micro
controller chip while the c programming language is used to
program the chip
1.1 Objective of the project design
This project (digital calendar with date, month, year and time) is
based on a computer aided design. It enables anybody to read
both time and date from the clock and calendars respectively.
This project can serve in any aspect of life. It encourages the
following:
Proper reading of time and date
Prompt keeping of appointments
Proper simulation and utilization of time
Proper management, etc.
This project is design in such a way that if sold in the market,
the buyer gets as much service from the calendar which is
tantamount to the resources he paid for it. This project can be
kept or used in houses, cars etc as a time/date device.
The features of the AT89C51 were exploited to achieve the
desired sequence of operation of this project.
With the AT89C51, we were able to see how the output /input
devices were solely coordinated through the software program
that was written to the chip with the aid of an EPROM
programmer using C programming language.
1.2 Justification of the project
Micro
controller
base
design
on
digital
calendar
is
an
improvement in the electronics sector. Electronics like this device
can be coupled solely via
the use of discrete components including counter, multiplexers,
de-multiplexers, timers and latches; moreover the use of a micro
controller for this design can be justified by the reduction in the
number of components used in the course of the design which
also improves the reliability durability and flexibility.
1.3 Scope of project
The construction of a computer-aided design of a digital clock
with calendar is implemented using micro controller based on
discrete components like
transistors, resistors, LED, seven segment display etc.
Micro controller was used in this work and not only hardware, in
order to allow for easy flexibility and low level of errors. The
project was made portable and also there is provision for a back
up battery, if a.c supply fails. Since the time and date keeping
devices are very imperative to the society, so this project has
been designed to solve the predicaments of irregular date and
time keeping.
1.4 Block diagram
KEY PAD UNIT
MICRO
-CONTROLLER UNIT
REGULATED 22OVAC/5 VDC SUPPLY UNIT
MICRO-CONT
UNIT
ALARM UNIT
DECODER UNIT
DISPLAY UNIT
Fig. 1.1 System Block Diagram
From the figure above, the microcontroller is seen at the centre
of design receiving the input as well as output to the other
peripheral components. The block diagrams consist of six stages,
which are:
1. Keypad unit
These are soft touch buttons mounted on the front of the casing
from which input signal is sent to the microcontroller unit to
either set the calendar, time or the alarm unit.
2. Microcontroller (AT89C51):
This is an integrated circuit programmed with an EPROM
programmer to receive input signals and relating it to other
interfaced sub-unit attached to it for their corresponding signals
generation.
3. Display unit
The display unit consists of the light emitting diodes and power
transistors design to sink current to the light emitting diode
(LED). It is necessary to have these power transistors because
the micro controller cannot produce the large current needed by
the circuit. The transistor is configured in the switch mode in
other to achieve this purpose.
In this block diagram the led are arrange to display the days
in the week and also arrange in the seven segment to display
time and calendar.
4. Alarm unit
This unit is made up of the buzzer and the alarm indicator. The
alarm indicator light when the alarm is set by the depressing of
the alarm set button.
5. Decoder unit
The unit is made up of the DM74LS138 three to eight line
decoder which receive input signal from the microcontroller via
pin 1,2,3 and sends this input signal to the output pins displaying
days.
6. Power supply unit
The transformer, bridge rectifier diodes, capacitors and a voltage
regulator make up the power supply unit. This power unit gives
out an output voltage of +5v.
1.5 Project report organization
This report is structured to follow the origin of the digital calendar
in all through the design and implementation phase. The report
takes into account the step-by-step process followed in order to
arrive at the final design.
The report is broken into Chapters each handling a specific
aspect of the microcontroller based digital calendar system.
Chapter one of this report introduces the concept of the digital
calendar and its objectives. Chapter two centers on the Literature
review, the origin and history of digital calendar and its basic
uses. Chapter Three explains the components, which makes up
the digital calendar and their basic functionalities/mode of
operation.
Chapter Four discusses how the system was implemented while
Chapter Five and Six handles the concluding part of the design:
system testing and integration, data testing, Summary and
Conclusion.
CHAPTER TWO
LITERATURE REVIEW
The digital calendar with date, month, year and time is designed
to be hung in offices, rooms, churches and even car dashboard,
where time and date can be easily accessed.
2.1 Origin of project
There can be little doubt that the first clock appeared shortly
after 1500, when Peter Heinlain, a black smith in Nurberg
Germany introduced main spring as a replacement for weights in
driving clocks. Early clocks were made in Germany and at Blois
in France. This early timepiece measured some 4 to 5 inches (100
to125mm) in diameter and about 3 inches (75mm) in depth.
They were carried about in hand.
One of the main defect of the early clocks was greater when fully
wound than when it was almost run down since the time/date
keeping of a clock fitted with a verge escapement is greatly
influenced by the force driving it, this problem was quite serious.
Solution of the problem was advanced between 1515 and 1540
by the invention by Jacob the Czech of praque, of the fuse, a
coned shaped groove pulley used together with a barrel
containing the mainspring is made to rotate a barrel in which it is
housed.
The most famous English clock/calendar maker of his time, who is
known for clock making improvement, was Tampion Thomas.
Tampion made an early repealing clock with calendar a type that
could be made to sound the nearest hour and nearest quarter
hour by pushing two pieces extending from the side of the clock.
Tampion devised improvement in pendulum and he constructed
several clocks made to run for a year without rewinding.
The progressive miniaturization of electronics components in the
20th century made possible the development of all electronic
clocks with calendar.
The complex circuits of such clocks with
calendar (digital) enable them to vary the time/date keeping
functions and also made possible digital readouts of the
time/date in place of the traditional second minutes and hour
hands.
2.2 Uses of project
In this project the techniques employed makes time/date reading
extremely easy and convenient. And this is achieved by the use
of software and hardware implementation or design.
The whole system has been proved to be very reliable since
date/time can easily be read as digits in the display unit. And the
time and date settings can be adjusted using the keypad buttons.
Digital calendar with time is a date and time keeping digital
device, which is fast gaining wider acceptance and application in
the present days due to its ability to provide a every high
precision timing of the day and events.
CHAPTER THREE
DESIGN ANALYSIS
Designing the system was the major part of this project work
and this involved the planning and estimation of the entire
system
before
the
actual
implementation.
Here,
every
component used is accounted for and resolved to obtain the best
performance.
3.1 Information gathering: These are different ways in which
informations are gotten for the project; these includes:
Library research: In the course of designing this project data over
a wide range of topics relating to the project was obtained from
the library, topics such as seven-segment display, decoder
circuits, micro controller circuits and application etc were also
obtained from the library.
Internet browsing: This is one of the highest sources of data
collection for the project. In depth study of the project historical
background, up to date information on designs and applications
were also obtained. Tutorials on the project were also present in
some websites.
Special directives and training: This is the information gotten
from stone code inc., here lectures on how to program the
microcontroller were received. Their machine was used to burn
the written software program into the microcontroller. The project
supervisor also gave directives/focus with respect to the scope of
the project.
3.2 Analysis of block diagram
KEY PAD UNIT
MICRO-CONTROLLER UNIT
REGULATED 22OVAC/5VDC SUPPLY UNIT
MICRO-CONT
UNIT
ALARM UNIT
Fig. 3.1 Block diagram of project
3.1.1 Keypad unit
DECODER UNIT
DISPLAY UNIT
It consists of the following:
1.
Time set button: It enables adjustment to be made on the
time display.
2.
Date set button: To adjust date
3.
Enter key button:
It is used to activate whenever as
adjustment is made on the display.
4.
Up and down button: For increment or decrement of time
and date during settings.
5.
Alarm set button: For setting of alarm when necessary
P1.7 of the micro controller connects the alarm set switch
through the I0K resistor, which connects to the one terminal of
the button the ground. And the other terminal of the resistor is
connected to Vcc.
P3.6 of micro controller connects to the set date.
P3.7 of Micro controller connects to the set time
P3.0 of micro controller connects to the increment button
P0.7 of micro controller connects to the decrement button
P3.1 of micro controller connects to the enter button
P3.6, P3.7, P3.0, P0.7, and P3.1 have the same connection as
explained in P1.7 above. Therefore, this is illustrated on the
figure below
VCC
VCC
40
10k
P3.6
MICROCONTROLLER AT89C51
10K
20
P3.7
P1.7
P3.0
P0.7
10K
10K
10K
10K
CALENDAR SET BUTTON
TIME SET BUTTON
ALARM SET BUTTON
INCREMENT BUTTON
DECREMENTT BUTTON
ENTER BUTTON
P3.1
GND
GND
Fig. 3.2 Microcontroller interface with keypad
3.1.2 Power supply unit
The power supply circuit is made up of 240/12Vac bridge rectifier,
capacitor (2200uf) and a +5Vdc voltage regulator (7805).
The a.c voltage is rectified to d.c voltage with bridge rectifier,
and the voltage regulator regulates the 12Vdc to 5Vdc which is
the required voltage for the microcontroller referred to fig. 3.3
VCC
AN7805
220/240
12vac
ac
4O
2200uf/25v
20
GND
MICROCONTROLLER AT89C51
Fig. 3.3 Power supply interface with microcontroller
3.1.3
Alarm unit
This consists of an LED, which connects from the P2.7 of the
micro controller, which in turn connects to 4.7K resistor, which
finally connects to the VCC. The LED indicates on the alarm is
set to slow.
P2.6 of the micro controller connects to the resistor (2K),
through the base of the transistor (NPN C, 945) and the collector
to the ground, while the emitter terminal is connected to the
negative terminal of the alarm speaker, and the positive to the
Vcc. The remaining terminal of the resistor to Vcc, as shown in
the figure 3.4
MICRO
- CONTROLLER AT89C51
1k
P2.7
28
vcc
VCC
VCC
Buzzer
4.7k
2k
P2.6 27
C945 or NPN Transistor
GND
Fig. 3.4 Micro controller interface with alarm unit
3.1.4 Display unit
The display unit is made up of: -
(1) Seven segment display unit which comprises of 12, seven
segment display capable of displaying time in hours, minutes and
second and date in day, month and year.
(2) Weekly display unit, which comprises of a 3-8 line decoder, 7
light emitting diodes which represent Sunday to Saturday
respectively.
All the corresponding segments of the 12 seven
segment displays are connected together which in turn connect
to the micro controller.
All the anodes of the seven segment LEDs are internally
connected together and brought out to Vcc, which is connected
to the emitter of the switching transistor (NPN C 945), and its
collector is connected to the Vcc, and its base is then connected
to our terminal of 4.7K resistor which in turn is connected from
the microcontroller. So remaining terminal of the 2K resistor is
connected to the VCC.
On the weekly display unit, the micro controller sends binary
codes through the inputs the 3-8-line decoder IC (74LS138) that
decodes it to the appropriate binary code equivalent, which will
be indicated by the LED on the day. It corresponds. Also pin 4,5
& 8 of the IC are connected to the ground while pin 16 is
connected to the Vcc.
3.2 Analysis of AT89C51 microcontroller
The AT89C51 is a low power, high performance cmos 8-bit
microcomputer with 4Kbytes of flash programmable and erasable
read only memory (PEROM). The device is manufactured using
Atmel`s high density nonvolatile memory technology and is
compatible with the industry standard MCS-51 instruction set and
pinout. The on-chip flash allows the program memory to be
reprogrammed in system or by a conventional nonvolatile
memory programmer. By combining a versatile 8-bit CPU with
flash on a monolithic chip, the Atmel AT89C51 is a powerful
microcomputer, which provides a highly flexible and cost
effective solution to many embedded control application.
The AT89C51 is designed with static logic for operation down to
zero frequency and support 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 [4].
Fig. 3.6 Pin configuration of AT89C51
3.3.1 Features of AT89C51
Programmable serial channel
Compatible with MCS-51TM product
4Kbytes of in-system Reprogrammables flash memory Endurance: 1,000 write/Erase cycles
Fully static operation:0Hz to 24MHz
Three-level program memory lock
128 x 8-bit internal RAM
32 programmable I/O lines
Two 16-bit timer/counters
Six interrupt sources
Low-power idle and power-down modes.
Fig. 3.7 Block diagram of AT898C51 internal circuitry
3.3.2 Pin description
Vcc
Supply voltage.
GND
Ground.
Port 0
Port 0 is an 8-bit open-drain bi-directional 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 used as high impedance inputs. Port
0 may also be configured to be the multiplexed low order
Address/data bus during accesses to external program and data
memory. In this mode P0 has internal pull-ups. Port 0 also
receives the code bytes during Flash programming, and outputs
the code bytes during program verification. External pull-ups are
required during program verification.
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 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 pull-ups. Port 1 also receives the low-order address bytes
during Flash programming and verification.
Port 2
Port 2 is an 8-bit bi-directional I/O port with internal pull-ups. 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 pull-ups. Port 2 emits the high-order address byte during
fetches from external program memory and during accesses to
external data memory that uses 16-bit addresses (MOVX @
DPTR). In this application, it uses strong internal pull-ups when
emitting 1s. During accesses to external data memory that uses
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 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 pullups and can be used as inputs. As inputs,
Port 3 pins that are externally being pulled low will source current
(IIL) because of the pull-ups. Port 3 also serves the functions of
various special features of the AT89C51 as listed below.
Table 3.1 Alternate functions of port 3
Port 3 also receives some control signals for Flash programming
and verification.
RST
Reset input. A high on this pin for two machine cycles while the
oscillator is running resets the device.
ALE/PROG
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 (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. Note, however, that one ALE pulse is skipped
during each access to external Data Memory. 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.
PSEN
Program Store Enable is the read strobe to external program
memory. When the AT89C51 is executing code from external
program memory, PSEN is activated twice each machine cycle,
except that two PSEN activations are skipped during each access
to external data memory.
EA/VPP
External Access Enable. EA must be strapped to GND in order to
enable the device to fetch code from external program memory
locations starting at 0000H up to FFFFH.
Note, however, that if lock bit 1 is programmed, EA will be
internally latched on reset.
EA should be strapped to VCC for
internal program executions. This pin also receives the 12-volt
programming enable voltage (VPP) during Flash programming,
for parts that require 12-volt VPP.
XTAL1
Input to the inverting oscillator amplifier and input to the internal
clock operating circuit.
XTAL2
Output from the inverting oscillator amplifier.
3.4 Light emitting diode(LED) characteristics
As the name indicates, it iss a forward-biased P-Njunction which
emits visible light when energised. The colour of the emitted light
depends on the type of material used as given below
GaAs- Infrared radiation (invisible)
GaP- Red or green light
GaAsP- Red or yellow (amber) light
LEDs that emits blue light are also available but red is the most
common. LEDs emit no light when reverse biased.
LEDs are manufactured with domed lensses in order to lesssen
the reabssorption problem ; they are always encased in order to
protect their delicate wires. Being made of semiconductor
material, it is rugged and has a life of more than 10,000 hours.
Since LEDs operate at voltage levels from 1.5v to 3.3v, they
are highly compatible with solid state circuitry [2].
LED Seven segment display
This type of display comes in a variety of colours, sizes and
packaging styles.
While red is still the most favored colour,
green, yellow and orange LED readouts are also available. The
readouts come packaged in standard DIP configurations with
clear or modified diffused lens the latter, for Full-flood
visibility.
Its mode of fabrication is based in either a common-cathode or
common-anode
arrangement.
But
common
anode
arrangement was used in this project for easier configuration.
The seven-segment display gets its name from the fact seven
illuminated segments are used to configure the digits 0-9 (and a
few lower and upper case letters).
figure of number eight.
Its arrangement is in the
Its read out and list of segments
required for it to illuminate is given below.
In common cathode, all the cathode are internally tied together
and brought out to circuit ground through an external current
limiting, or pull-down resistor.
A high voltage to an individual
anode turns the LED segment ON.
Also, in common anode arrangement all anodes are internally
connected and brought out to + Vcc through an external current
limiting, or pull-up resistor.
turns it on [3].
A low voltage to any LED cathode
As read out, LED display offers two distinct
advantages, which are as follows:
Allows digital designers maximum flexibility due to their sizes
and shapes.
They are visible in subdued light.
But operation of LED in bright light (out door displays) makes the
display to be washed off by direct sunlight (invisible).
diagram of the seven segment display is shown below.
SEVE
SEGMENT DISPLAY
LAYOUT
DIFFERENT COLOURS OF LED
The
Internal Circuitry Of The Two Types Seven Segment
Display
Fig. 3.8 Seven segment Display and LED
3.5 Analysis of voltage regulator
Voltage Regulator (also called a "regulator") has only three legs
and appears to be a comparatively simple device but it is
actually a very complex integrated circuit [1]. A regulator
converts
varying
input
voltage
and
produces
constant
"regulated" output voltage. Voltage regulators are available in a
variety of outputs, typically 5 volts, 9 volts and 12 volts. The last
two digits in the name indicate the output voltage.
Symbol for a Voltage
Regulator.
A LM7805
This device looks like a
Regulator
Transistor,
but it is actually a complex
Integrated Circuit.
Fig. 3.9 A 7805 Voltage regulator
After rectification we have full 15v on the positive end and to
obtain the 5v required to drive the microcontroller a voltage
regulator (LM7805) is connected to the circuit. This particular
type of voltage regulator ensures that only 5v passes through to
the other side. Hence, the above power supply design of the
system can operate on +5v and +15v as well as 0v level.
3.6 Analysis of voltage supply transformer
The voltage transformer is a device that step-up or step-down
the input voltage to the specified voltage which is determined by
the turns ration of the primary ad secondary side [1]. In this case
we are considering a step-down mode configuration. Due to the
large current drain by the LED display, our secondary current I 2 is
made sufficient enough to supply the demanded current.
Fig. 3.10 Circuit diagram of step down transformer
Transformer Equation
E1/E2 = N1/N2 = I2/I1
Where E = Voltage
N = No of turns
I = current
Numbers 1 =primary, 2 = secondary
3.7 Analysis of power transistor (i.e. LED drivers)
A power transistor is a bipolar junction formed by joining three
sections of some conductor materials, each with a different
doping concentration. The three sections can be either a thin n
region sandwiched between p and p+ layers, or a p region
between n and n+ layers where the superscript plus indicates
more heavily doped materials .The resulting BJTs are called pnp
and npn transistors respectively [3].
Fig. 3.11 Bipolar junction transistor
The operation of the NPN power BJT may be explained by
considering the transistor a consisting of two back-to-back PN
junctions. The base (b) junction acts very much like a diode when
it is forward biased, thus, one can picture the corresponding flow
of hole and electron current from base to emitter when the
collector is open and the BE junction is forward biased [5].
.
3.8 System flow chart
START
SEND LOGIC SIGNAL 1 TO OUTPUT PORTS:
INITIALIZE CALENDAR,TIME AND ALARM SET
READ INPUT FOR
CALENDAR SET
YES
IS CALENDAR SET
NO
READ INPUT FOR TIME ?
YES
IS TIME SET
NO
READ INPUT FOR ALARM
YES
IS ALARM SET?
SEND LOGIC 0 TO INPUTS AND
AND DISPLAY CALENDAR,TIME AND
ALARM
END
Fig. 3.13 SYSTEM FLOW CHART
NO
CHAPTER FOUR
DESIGN OF PROJECT
4.1 Preliminary Design
220Vac/5Vdc REGULATED POWER SOURCE
SET BUTTON
SEVEN SEGMENT
DISPLAY
TRANSISTORISE D
SEGMENT DRIVERS
AT89C51
ALARM
DECODER
LED DISPLAY
Fig. 4.1 Block Diagram Overview
4.2.1 Power Supply Design
There are many types of power supply. Most are designed to
convert high voltage AC mains electricity to a suitable low
voltage supply for electronics circuits and other devices [1]. A
power supply can by broken down into a series of blocks, each of
which performs a particular function.
For example a 5V regulated supply:
Fig. 4.2 Block Diagram of Regulated Power Supply System
Each of the blocks is described in more detail below:
Transformer - steps down high voltage AC mains to low
voltage AC.
Rectifier - converts AC to DC, but the DC output is varying.
Smoothing - smoothes the DC from varying greatly to a
small ripple.
Regulator - eliminates ripple by setting DC output to a fixed
voltage.
Power supplies made from these blocks are described below with
a circuit diagram and a graph of their output:
Transformer only
Transformer + Rectifier
Transformer + Rectifier + Smoothing
Transformer + Rectifier + Smoothing + Regulator
Step Down Transformer
Fig. 4.3 Step Down Transformer
The low voltage AC output is suitable for lamps, heaters and
special AC motors. It is not suitable for electronic circuits unless
they include a rectifier and a smoothing capacitor [6].
Transformer + Rectifier
The varying DC output is suitable for lamps, heaters and
standard motors. It is not suitable for electronic circuits unless
they include a smoothing capacitor.
Transformer + Rectifier + Smoothing
The smooth DC output has a small ripple. It is suitable for most
electronic circuits.
Transformer + Rectifier + Smoothing + Regulator
The regulated DC output is very smooth with no ripple. It is
suitable for all electronic circuits.
4.2.2 Micro-Controller
From the circuit diagram below, an overview of the connection of
the various components can be explained. Thus the 10uf/16v
capacitor was connected to the reset pin and pulled high to +5v.
This is to enable the microcontroller to resets itself as power is
switched on. The reset pin requires a logic 1 to reset and at start
up the capacitor acts as a short circuit and charges up within
seconds (t=RC) via the resistor keeping the reset key at logic
zero.
The microcontroller also requires a clock input of 16 MHz
generated the crystal oscillator.
Port 1,2,3 and 0 were used for interfacing; Port 1 (pin 1-7) and
Port 0 (pin 33,34,35,36,37,38,39) were connected to the calendar
and time display segments a, b, c, d, e, f, and g of the seven
segment display. The segments of the seven segment receives a
logic signal of either 1or0 from the micrcontroller. In Port 2, pin
21, 22,23,24,25 and 26 were use as output pins to drive the
switching transistors of the individual anodes of the time and
calendar segment. Port 2 (pin 27 and 28) to switch on the alarm
and the LED to indicate alarm set. Port 3 (pin 13,14,15) are use
to send logic signals to the input select of the 3-8 line decoder
(pin 1,2,3).
Resistor Values Analysis for the seven segment display
Each segment LED of the seven segment has a maximum current
tolerance of 30mA; assuming the maximum current I am
working with is 23mA then
V=IR where V=5V and I=23mA..
R=V/I= 5/23*10^-3=217.
This value is closer to the 220 resistor used.
4.2.3 Transistorized Seven Segment Driver
TO COMMON ANODE
2K
TO PORTS
C945
VCC
Fig. 4.4 A transistorized seven segment
The NPN transistor is use as a switch to switch on the
corresponding anode of each segment .The segment is design to
use a current sink of about 23mA. The npn transistor from data
book has the following limiting values in accordance with the
absolute maximum rating system (IEC134).
Table 4.1 Limiting values of NPN transistor: C945
SYMBOL
CONDITIONS
MIN.
MAX.
UNIT
VCBO
OPEN EMITTER
----------
60
VCEO
OPEN BASE
------------ 50
VEBO
OPEN COLLECTOR
------------ 5
IC
------------ 100
mA
ICM
------------ 200
mA
IBM
------------ 100
mA
hfE
------------ 120
-
Analysis;
Maximum current from port 1, 2, 3 of the microcontroller is
15mA. The transistor is design to sink a minimum current of
2.5mA, therefore from OHMS LAW
V=IR where V=5v, I=2.5mA, R=
R= V/I, 5/2.5=2 K.
The resistor value connected to the base of the collector is 2k.
4.3.1 Software Design
PLANING
HARDWARE
INTERFACING
BUILDING THE PROGRAM
SETING PROPERTIES
WRITING THE CODES
COMPILING
TESSTING
Fig. 4.5 Software Design
4.3.2
Program Code
#include "at89x51.h"
code unsigned char
digit[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0,
0x10,0x08,0x03,0x46,0x21,0x06,0x0e};
code unsigned int
dec[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x10,0x
11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x
30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x
50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x
70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x
90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99
};
volatile unsigned char
buffer,buffer2,display_buffer1,display_buffer3,display_buff
er4,display_buffer5;
volatile unsigned char
display_buffer2,display_buffer6,display_buffer7,i,x,y,show;
volatile unsigned char
data1,data2,data3,data4,set_pos,disp_pos;
volatile char day_name;
bit flag,flag1,over;
char sec,min,year,hour,day,month;
unsigned int del;
//delay function:
void delay(int pause)
{
while (!(pause==0))
{
pause--;
_asm;
mov r6,#3
// 1ms assembly code(for 18Mhz crystal)
// adjust to crystal freqeuncy
mov r7,#215
00111$:
djnz r7,00111$
djnz r6,00111$
_endasm;
}
}
//;;;;;;;;;;;;;;;;;;;;;;Display Functin;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void display(void) interrupt 1
{
TR0=0;
//disable timer
if((del>400)&&(disp_pos==0)){
del=1;
//======running the normal clock
loop=============
sec++;
if(sec==60){
sec=0;
min++;
if(min==60){
min=0;
hour++;
if(hour==12){
hour=0;
//hour=0;
flag1 = !flag1;
day++;
if(++day_name==7)day_name = 0;
switch(month){
//jan
case 1:
if(day==32){
day=1;
month++;}
break;
//feb
case 2:
if((year%4)==0){
if(day==30){
day=1;
month++;}
break;
}
else{
if(day==29){
day=1;
month++;}
}
break;
//mar
case 3:
if(day==32){
day=1;
month++;}
break;
//apr
case 4:
if(day==31){
day=1;
month++;}
break;
//may
case 5:
if(day==32){
day=1;
month++;}
break;
//june
case 6:
if(day==31){
day=1;
month++;}
break;
//july
case 7:
if(day==32){
day=1;
month++;}
break;
//aug
case 8:
if(day==32){
day=1;
month++;}
break;
//sep
case 9:
if(day==31){
day=1;
month++;}
break;
//oct
case 10:
if(day==32){
day=1;
month++;}
break;
//nov
case 11:
if(day==31){
day=1;
month++;}
break;
//dec
case 12:
if(day==32){
day=1;
month=1;
year++;
if(year==100)year=0;}
break;
default:
break;
}
}
}
}
}
if(i>5){
display_buffer1=dec[year];
display_buffer2=dec[month];
display_buffer3=dec[day];
display_buffer5=dec[sec];
display_buffer6=dec[min];
display_buffer7=dec[hour];
i=0;}
switch(i){
case 0:
P2_5=0;
buffer=display_buffer1 & 0x0f;
// show
first character
if(flag&&(disp_pos!=1)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=display_buffer5 & 0x0f;
p first character
if(flag&&(disp_pos!=4)){P0=0x3f;}
else{P0=digit[buffer];}
P2_0=1;
// show
break;
case 1:
P2_0=0;
buffer=(display_buffer1>>4) & 0x0f;
// show
second character
if(flag&&(disp_pos!=1)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=(display_buffer5>>4) & 0x0f;
second character
if(flag&&(disp_pos!=4)){P0=0x3f;}
else{P0=digit[buffer];}
P2_1=1;
break;
case 2:
// show
P2_1=0;
buffer=display_buffer2 & 0x0f;
// show
first character
if(flag&&(disp_pos!=2)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=display_buffer6 & 0x0f;
// show
p first character
if(flag&&(disp_pos!=5)){P0=0x3f;}
else{P0=digit[buffer];}
P2_2=1;
break;
case 3:
P2_2=0;
buffer=(display_buffer2>>4) & 0x0f;
second character
if(flag&&(disp_pos!=2)){P1=0x3f;}
else{P1=digit[buffer];}
// show
buffer=(display_buffer6>>4) & 0x0f;
// show
second character
if(flag&&(disp_pos!=5)){P0=0x3f;}
else{P0=digit[buffer];}
P2_3=1;
break;
case 4:
P2_3=0;
buffer=display_buffer3 & 0x0f;
// show
first character
if(flag&&(disp_pos!=3)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=display_buffer7 & 0x0f;
p first character
if(flag&&(disp_pos!=6)){P0=0x3f;}
else{P0=digit[buffer];}
// show
P2_4=1;
break;
case 5:
P2_4=0;
buffer=(display_buffer3>>4) & 0x0f;
// show
second character
if(flag&&(disp_pos!=3)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=(display_buffer7>>4) & 0x0f;
second character
if(flag&&(disp_pos!=6)){P0=0x3f;}
else{P0=digit[buffer];}
P2_5=1;
break;
// show
default:
break;
}
i++; del++;
TH0=180;
// load timer
TL0=240;
TR0=1;
//enable timer
void main(void){
TMOD=0;
ET0=1;
//choose timer mode
//enable timer interupt
EA=1;
TR0=1;
//enable global interupt
//run timer
flag=flag1=i=0;
//intitialize variables
del=1;set_pos=disp_pos=0;day_name = 1;
sec=00;min=16;hour=10;day=17;month=12;year=11;
//P0=P1=x=0;
while(1){
if(!P3_3){
delay(30);
if(!P3_3){
switch(disp_pos){
case 1:
if(++year > 99)year=06;
break;
case 2:
if(++month>12)month=1;
break;
case 3:
if(++day>31)day=1;
if(+
+day_name==7)day_name = 0;
break;
case 4:
if(++sec > 59)sec=0;
break;
case 5:
if(++min > 59)min=0;
break;
case 6:
if(++hour > 12)hour=1;flag1=!
flag1;
break;
}
}
while(!P3_3){;}
}
if(!P3_4){
delay(30);
if(!P3_4){
switch(disp_pos){
case 1:
if(--year==05)year=99;
break;
case 2:
if(--month==0)month=12;
break;
case 3:
if(--day==0)day=31;
if(--day_name==1)day_name = 6;
break;
case 4:
if(--sec==-1)sec=59;
break;
case 5:
if(--min==-1)min=59;
break;
case 6:
if(--hour==-1)hour=12; flag1=!
flag1;
break;
}
}
while(!P3_4){;}
}
if(disp_pos!=0){
flag=1;}
else{
flag=0;
}
if(!P3_6){
delay(30);
if(!P3_6){
disp_pos++;
if(disp_pos>6)disp_pos=0;
}
while(!P3_6){;}
delay(300);
}
//P3 = day_name | 0xf8;
}
}
4.4 Software/Hardware Integration
The
software
is
written
to
acknowledge
the
hardware
components, which is burn into the microcontroller. This software
is access via the input buttons as it is depressed.
Having done this, then as the program runs, it acknowledges all
other peripheral devices. The microcontroller has connected to it
a interface the 74LS138 Decoder which sends a logic 1 or 0
signal to the light emitting diodes ( LEDS ) which in turns light up
the corresponding LED that display either Monday, Tuesday,
Wednesday, etc.
CHAPTER FIVE: TESTING
5.1 System Testing and Integration
After the design and implementation phase, the system built has
to be tested for Durability, Efficiency, and Effectiveness and also
ascertain if there is need to modify this design. The system was
first assembled using a breadboard. All components were
properly inserted into the breadboard from whence some tests
were carried out at various stages.
To ensure proper functioning of components expected data, the
components were tested using a digital multimeter (DMM).
Resistors were tested to ensure that they were within the
tolerance value. Faulty resistors were discarded .The 78LS05
voltage regulator was also tested, the resulting output was 5.02v
which is just a deviation of 0.20v from the expected result of
5.00v.The LEDs were tested to ensure that they were all working
properly.
5.2 Test plan and Test data
This chapter entails an overall system testing of the integrated
design of the voltage measurement device. The testing and
integration is done to ensure that the design is functioning
properly as expected thereby enabling one or even intended
users for which the project was targeted for, appreciate its
implementation and equally approaches used in the design and
integration of the various modules of the project.
However, this involves checks made to ensure that all the various
units and subsystems function adequately. Also there has to be a
good
interface
existing
between
the
input/output
unit
subsystems.
When the totality of the modules was integrated together, the
system was created and all modules and sections responded to
as specified in the design through the power supply delivering
into the system designed.
5.2.1
Components Test
Similar components like resistors were packed together. Other
components includes capacitor, preset switches, transformer,
diodes (rectifier) LED, transistor, voltage regulator etc
Reference was made to resistor colour code data sheet to
ascertain the expected values of resistors used. Each resistor was
tested and the value read and recorded. Also for transistor test
the DMM was switched to the diode range with the symbol
I )))). The collector, base and emitter junctions were tested
in the following order. The collector, emitter and base pins were
gotten from the data analysis on power transistor.
Table 5.1 Test for Transistor
1 test on pins
2nd test on pins
st
Black probe
Collector
Emitter
Red probe
Base
Base
5.2.2 System Test
The system was powered and operated upon using several
possibilities. They include depressing more than one button at
the same time and noting the output responses of the system
hardware. The system allows only one input at a time and gives
the voice output along side flashing the corresponding LED.
5.2.3 Transformer Test (Step-Down
Expectedly, the transformer was rated 240v/12v,300mA.From the
mains power supply , the primary coil received 220v input; the
output was measured to b e 13.75v using a DMM.
Test data on transformer has it that the resistance of the primary
windings for step down transformer is higher than that of the
secondary side. This was ascertained.
5.2.4 Other Tests
Light emitting diode (LED) emits rays when forward biased .For
capacitors the DMM was switched to the 22uf range and the
capacitors were inserted into the slot provided for it by the
meter. Other test carried out include depressing of the calendar
and time set button one after the other; observing the output in
the seven segment display. Also the increasing and decreasing
button is also depressed to see if there is increment and
decrement on the other hand of the segment display. Finally the
alarm button is depressed to activate the alarm, when the alarm
was activated the alarm indicator lighted to show that the alarm
system is armed.
5.3 EXPERIMENTED RESULT VS ACTUAL RESULT
Table 5.2 Experimented Value/ Actual value
COMPONENTS EXPERIMENTED ACTUAL UNIT
Resistor
Capacitor
Transistor
VALUE
10000
VALUE
10000
2000
2000
220
218
10000
9980
10
10.20
10
10.15
30
29.82
Rbe
520
550
Rbc
510
548
TOLERANCE
5%
Transformer
12Vac @
13.2 @
voltage
Regulator
240Vac input
5.00
210
5.02
V
V
5.4 Performance Evaluation
From the table above, shows the range between the expected
value and the actual value can be tolerated. As a result of this
the drift in expected value has no critical effect on the system
design since the result current range was not also exceeded, also
the operational voltage range was not exceeded.
CHAPTER SIX: SUMMARY
6.1 Summary and Conclusion
This section of this project report forms the concluding part of the
write up and takes a look at some of the problems encountered
during the progressive job on the system and also brings in
suggestions for further improvement and/or enhancement for the
system design.
6.2 Summary of Achievement
The design and development of this project has really been
challenging, as I have been faced with choices far beyond what I
expected. But in the long run the result paid off.
After the complete design of the system, the deviation between
the expected result and the actual result was very close. The
performance and efficiency was beyond expectation and from
every ramification, the design of the microcontroller based digital
calendar was a success.
6.3 Problems Encountered and Solution
During the course of the design of this system, there were series
of problems which came in the way of achieving the design goals
of this project, most of them where over come via share
troubleshooting, in some cases some parts require redesigning
and the software debugging also created a bit of a problem.
One major set back of this project is the availability of
components required to build the hardware of the system. In
most cases I had to look through electrical catalogs to obtain
replacements of some of the components which are not available
in the market.
After developing the software for the microcontroller, it was very
difficult to find a firm/individual to help program the chip (burning
the embedded software on to the chip). This posed serious
problem as it brought about delay in the design time and it was
also costly, this also affected the overall cost of the system.
The final packaging of the design was also another trouble, as
this actually caused problems on the circuit board. Such
problems include partial contact within the circuit board, between
components and also with the wiring. This was actually one of
the most challenging aspects of the circuit implementation
phase. Due to this fact, there was a lot of soldering and desoldering to ensure that the circuit was well implemented.
6.4 Suggestions for further improvement
It will be more appreciated if the system is designed to have
integrated voice output playback. The size of the digital calendar
and clock should be reduced for portability sake.
6.5 Conclusion
Going through the planning, flow process, design and software
implementation the system had really been a tough one; but on
the whole it has been a chance to show case a little bit of
craftsmanship.
REFERENCES
(1). Belone Schilling, Electronic Circuits: Discrete and Integrated,
McGraw-Hill, New York,1979.
(2). B.L Theraja and A.K Theraja, A Textbook on Electrical
Technology, 2003, 23rd Edition, Pp 1887 Pp 1888.
(3). Paul Horowitz and Windfield Hill, The Art of Electronics, 1989,
2nd Edition, Pp 7- Pp 8, Pp 55 Pp 58, Pp 614 Pp 622.
(4). Atmel Corporation Data Sheet on AT89C51, 0285D-B-12/97
(5). NTE Electronics Inc., ECG Data Book, January 2002, 10 th
Edition.
(6). Giorgio Rizzoni, Principles of Electrical Engineering, 2003, 3 rd
Edition,
(7). Ronald .J Tocci, Digital Systems, Arentice Hall. Inc. USA,
1988.
(8). Mark Burgess, C programming tutorial, (K & R version 4).
APPENDIX A
SYSTEM COMPONENTS LIST
1. Vero Board
2. Connection Wire
3. Seven Segment Display
4. Light Emitting Diode
5. Soldering Iron
6. AC Cord
7. 240 / 12v, 200 mA Transformer
8. Rectifier Diodes
9. 2200uf /25V Capacitor
10. 10uf 16V Capacitor
11. 30pf capacitor
12. Resistors
13. 7805 Voltage Regulator
14. Touch Buttons
15. 16 MHz crystal oscillator
16. AT89C51 Micro controller
17. 74LS138 Decoder
18. IC Base Socket (40 pins)
19. IC Base Socket (16 pins)
20. Transistors
21. Battery
APPENDIX B
COMPONENTS COST ANALYSIS TABLE
S/N COMPONENTS
QUANTIT
UNIT PRICE
QUANTIT
300
Y PRICE
300
Y
1
220V/12V,300mA
Rectifier Diodes
40
40
2200uf/25V
30
30
10uf/16V
30
30
30pf
30
60
10k resistor
30
220 resistor
14
70
4.7k resistor
2k resistor
14
70
10
LEDS
35
11
78LS05
60
60
12
Touch Button
30
180
13
16MHz Oscillator
70
70
14
AT89C51
1700
1700
15
74LS138
150
150
16
IC Base (40 pins)
60
60
S/N COMPONENTS
QUANTITY
UNIT PRICE
QUANTIT
17
IC Base (20 pins)
50
Y PRICE
50
18
Connection Wires
15 yards
150
150
19
Vero Board
180
180
20
Seven Segment
120
720
21
Display
Soldering Lead
6 yards
20
120
22
AC Cord
60
60
23
Battery
60
60
24
Casing
1800
1800
TOTAL COSTING_____________________________ 6,255
APPENDIX C
CIRCUIT COMPONENTS LAYOUT
CAPACITOR
TRANSFORMER
BRIDGE DIODE
VOLTAGE
REGULATOR
RESISTORS
SEVEN SEGMENT
TRANSISTOR
SEVEN SEGMENT
TRANSISTORS
RESISTORS
RESISTORS
74138
TRANSISTORS
LEDS
XTAL
AT89C51
APPENDIX D
CIRCUIT WIRING OF AT89C51
Uc / 1Segment a of seven segment of
calendar
Uc / 2Segment b of seven segment of
calendar
Uc / 3 ...Segment c of seven segment of
calendar
Uc / 4 ...Segment d of seven segment of
calendar
Uc / 5 ...Segment e of seven segment of
calendar
Uc / 6 ...Segment f of seven segment of
calendar
Uc / 7 ...Segment g of seven segment of
calendar
Uc / 8 ...Alarm set
Uc / 9 ...+ve of Capacitor 10uf / 16V
Uc / 10..Increment Button
Uc / 11..Enter Button
Uc / 12..Dot of time segment
Uc / 13..Pin 1 of 74SL138
Uc / 14 .....Pin 2 0f 74SL138
Uc / 15..Pin 3 of 74SL138
Uc / 16..Calendar Set
Uc / 17 .....Time Set
Uc / 18 .Crystal Oscillator
Uc / 19 .Crystal Oscillator
Uc / 20 To Gnd
Uc / 21 Anode of seven segment
Uc / 22 Anode of seven segment
Uc / 23 Anode of seven segment
Uc / 24 .Anode of seven segment
Uc / 25.Anode of seven segment
Uc / 26 .Anode of seven segment
Uc / 27 .To transistor Alarm
Uc / 28 .Alarm set indicator
Uc / 32 .Decrement Button
Uc / 33 Segment g of seven segment of
calendar
Uc / 34 Segment f of seven segment of
calendar
Uc / 35 .Segment e of seven segment of
calendar
Uc / 36 . Segment d of seven segment of
calendar
Uc / 37 Segment c of seven segment of
calendar
Uc / 38 Segment b of seven segment of
calendar
Uc / 39 Segment a of seven segment of
calendar
Uc / 40 ..Vcc +5v
CIRCUIT WIRING OF 74LS138 DECODER
Pin 1.. Uc / 13
Pin 2 .. Uc / 14
Pin 3 .. Uc / 15
Pin 4,5,8 Gnd
Pin 6 ..Vcc
Pin 9 .. LED
Pin 10. LED
Pin 11 .LED
Pin 12 .LED
Pin 13 .LED
Pin 14 .LED
Pin 15 .LED
Pin 16 .Vcc +5v
APPENDIX F
SYSTEM SOURCE CODE (ATMEL 89C51 MICROCONTROLLER
USING C LANGUAGE)
#include "at89x51.h"
code unsigned char
digit[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0,
0x10,0x08,0x03,0x46,0x21,0x06,0x0e};
code unsigned int
dec[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x10,0x
11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x
30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x
50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x
70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x
90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99
};
volatile unsigned char
buffer,buffer2,display_buffer1,display_buffer3,display_buff
er4,display_buffer5;
volatile unsigned char
display_buffer2,display_buffer6,display_buffer7,i,x,y,show;
volatile unsigned char
data1,data2,data3,data4,set_pos,disp_pos;
bit flag,over;
char sec,min,hour,day,month;
unsigned int year,del;
//delay function:
void delay(int pause)
{
while (!(pause==0))
{
pause--;
_asm;
mov r6,#3
// 1ms assembly code(for 18Mhz crystal)
// adjust to crystal freqeuncy
mov r7,#215
00111$:
djnz r7,00111$
djnz r6,00111$
_endasm;
}
}
//;;;;;;;;;;;;;;;;;;;;;;Display Functin;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void display(void) interrupt 1
{
TR0=0;
//disable timer
if((del>400)&&(disp_pos==0)){
del=1;
//======running the normal clock
loop=============
sec++;
if(sec==60){
sec=0;
min++;
if(min==60){
min=0;
hour++;
if(hour==24){
hour=0;
day++;
switch(month){
//jan
case 1:
if(day==32){
day=1;
month++;}
break;
//feb
case 2:
if((year%4)==0){
if(day==30){
day=1;
month++;}
break;
}
else{
if(day==29){
day=1;
month++;}
}
break;
//mar
case 3:
if(day==32){
day=1;
month++;}
break;
//apr
case 4:
if(day==31){
day=1;
month++;}
break;
//may
case 5:
if(day==32){
day=1;
month++;}
break;
//june
case 6:
if(day==31){
day=1;
month++;}
break;
//july
case 7:
if(day==32){
day=1;
month++;}
break;
//aug
case 8:
if(day==32){
day=1;
month++;}
break;
//sep
case 9:
if(day==31){
day=1;
month++;}
break;
//oct
case 10:
if(day==32){
day=1;
month++;}
break;
//nov
case 11:
if(day==31){
day=1;
month++;}
break;
//dec
case 12:
if(day==32){
day=1;
month=1;
year++;
if(year==100)year=0;}
break;
default:
break;
}
}
}
}
}
if(i>7){
display_buffer1=dec[day];
display_buffer2=dec[month];
display_buffer3=dec[year/100];
display_buffer4=dec[year%100];
display_buffer5=dec[hour];
display_buffer6=dec[min];
display_buffer7=dec[sec];
i=0;}
switch(i){
case 1:
P2_0=0;
buffer=display_buffer1 & 0x0f;
// show
first character
if(flag&&(disp_pos!=1)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=display_buffer5 & 0x0f;
// show
p first character
if(flag&&(disp_pos!=4)){P0=0x3f;}
else{P0=digit[buffer];}
P3=i;P2_0=1
break;
case 0:
P2_0=0;
buffer=(display_buffer1>>4) & 0x0f;
// show
second character
if(flag&&(disp_pos!=1)){P1=0x3f;}
else{P1=digit[buffer];}
P3=i;P2_0=1;
buffer=(display_buffer5>>4) & 0x0f;
second character
if(flag&&(disp_pos!=4)){P0=0x3f;}
// show
else{P0=digit[buffer];}
P3=i;P2_0=1;
break;
case 3:
P2_0=0;
buffer=display_buffer2 & 0x0f;
// show
first character
if(flag&&(disp_pos!=2)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=display_buffer6 & 0x0f;
// show
p first character
if(flag&&(disp_pos!=5)){P0=0x3f;}
else{P0=digit[buffer];}
P3=i;P2_0=1;
break;
case 2:
P2_0=0;
buffer=(display_buffer2>>4) & 0x0f;
second character
if(flag&&(disp_pos!=2)){P1=0x3f;}
// show
else{P1=digit[buffer];}
P3=i;P2_0=1;
buffer=(display_buffer6>>4) & 0x0f;
// show
second character
if(flag&&(disp_pos!=5)){P0=0x3f;}
else{P0=digit[buffer];}
P3=i;P2_0=1;
break;
case 5:
P2_0=0;
buffer=display_buffer3 & 0x0f;
// show
first character
if(flag&&(disp_pos!=3)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=display_buffer7 & 0x0f;
p first character
if(flag&&(disp_pos!=6)){P0=0x3f;}
else{P0=digit[buffer];}
P3=i;P2_0=1;
break;
// show
case 4:
P2_0=0;
buffer=(display_buffer3>>4) & 0x0f;
// show
second character
if(flag&&(disp_pos!=3)){P1=0x3f;}
else{P1=digit[buffer];}
buffer=(display_buffer7>>4) & 0x0f;
// show
second character
if(flag&&(disp_pos!=6)){P0=0x3f;}
else{P0=digit[buffer];}
P3=i;P2_0=1;
break;
case 7:
P2_0=0;
buffer=display_buffer4 & 0x0f;
first character
if(flag&&(disp_pos!=3)){P1=0x3f;}
else{P1=digit[buffer];}
P3=i;P2_0=1;
break;
// show
case 6:
P2_0=0;
buffer=(display_buffer4>>4) & 0x0f;
second character
if(flag&&(disp_pos!=3)){P1=0x3f;}
else{P1=digit[buffer];}
P3=i;P2_0=1;
break;
default:
break;
}
i++; del++;
TH0=180;
// load timer
TL0=240;
TR0=1;
//enable timer
}
void main(void){
TMOD=0;
ET0=1;
//choose timer mode
//enable timer interupt
// show
EA=1;
//enable global interupt
TR0=1;
//run timer
flag=i=0;
//intitialize variables
del=1;set_pos=disp_pos=0;
sec=59;min=20;hour=11;day=31;month=8;year=2006;
//P0=P1=x=0;
while(1){
if(!P2_2){
delay(30);
if(!P2_2){
switch(disp_pos){
case 1:
if(++day>31)day=1;
break;
case 2:
if(++month>12)month=1;
break;
case 3:
if(++year > 2100)year=2006;
break;
case 4:
if(++hour > 23)hour=0;
break;
case 5:
if(++min > 59)min=0;
break;
case 6:
if(++sec > 59)sec=0;
break;
}
}
while(!P2_2){;}
}
if(!P2_3){
delay(30);
if(!P2_3){
switch(disp_pos){
case 1:
if(--day==0)day=31;
break
case 2:
if(--month==0)month=12;
break;
case 3:
if(--year==2005)year=2100;
break;
case 4:
if(--hour==-1)hour=23;
break;
case 5:
if(--min==-1)min=59;
break;
case 6:
if(--sec==-1)sec=59;
break;
}
}
while(!P2_3){;}
}
if(disp_pos!=0){
flag=1;}
else{
flag=0;
}
if(!P2_1){
delay(30);
if(!P2_1){
disp_pos++;
if(disp_pos>6)disp_pos=0;
}
while(!P2_1){;}
delay(300);
}
}
}
APPENDIX G
SYSTEM USERS GUIDE
PROCEDURES
Step 1: Plug the power cord to AC main
Step 11: Switch the power button ON
Step 111: Press either time, calendar or alarm button to activate
the corresponding parameter to be set
Step 1V: Use the increment or decrement button to set
parameters
Step V: Then press the enter button to display either the time,
calendar or alarm.
APPENDIX I
ATMEL 89C51 MICROCONTROLLER INSTRUCTION SET