Practical No8
Practical No8
Practical No8
1
Aim : Study of the Embedded system Hardware Components
Description :
1. Hardware
2. Software
3. Mechanical Components
The hardware could be a part of Input, output or both usually and includes
buttons, display, LED’s, sensors, actuators and other electronic circuitry.
2. Software: It has a chip on the circuit that holds the software which drives
controls & monitors the various operations possible.
2. Software: It has a chip on the circuit that holds the software which drives
controls & monitors the various operations possible. The software monitors the
external temperature through the sensors and then releases the coolant or
suppresses it.
3. Mechanical Components: the internals of an air conditioner the motor, the chassis,
the outlet, etc
In this practical we review some hardware components that are used in embedded
systems.
3. A microcontroller is a highly integrated chip that contains a CPU, scratch pad RAM,
special and general purpose register arrays,on chip ROM/FLASH memory for program
storage , timer and interrupt control units and dedicated I/O ports.
5. The Intel 8051 microcontroller is one of the most popular general purpose
microcontrollers in use today. The success of the Intel 8051 spawned a number of clones
(also called derivatives) which are collectively referred to as the MCS-51 family of
microcontrollers, which includes chips from vendors such as Atmel, Philips, Infineon,
and Texas Instruments.
6. 8051 Variants
1. The 8051 has the widest range of variants of any embedded controller in the market.
2. The smallest device is the Atmel 89c1051, a 20 pin flash variant with 2 timers, UART,
20mA.
3. The fastest parts are from Dallas, with performance close to 10 MIPS.
4. The most powerful chip is the Siemens 80C517A, with 32-bit ALU, 2 UARTs, 2K RAM,
PLCC84 package, 8×16 bit PWMs and other features.
ROM [ bytes] 4K
Timers 2
Serial port 1
Interrupt sources 6
A. Logic diagram of 8051 micro controller B. Pin out diagram of 8051 micro
controller
4. Inductors:
1. An inductor, also called a coil or reactor, is a passive two-terminal electrical
component which resists changes in electric current passing through it. It consists of a
conductor such as a wire, usually wound into a coil. When a current flows through
it, energy is stored temporarily in a magnetic field in the coil.
2. When the current flowing through an inductor changes, the time-varying magnetic field
induces a voltage in the conductor, according to Faraday’s law of electromagnetic
induction, which opposes the change in current that created it.
2. An LED is often small in area (less than 1 mm2) and integrated optical components may be used
to shape its radiation pattern.
1. Alphanumeric displays are available in seven-segment, starburst and dot-matrix format. Seven-
segment displays handle all numbers and a limited set of letters. Starburst displays can display
all letters. Dot-matrix displays typically use 5x7 pixels per character
2. Diodes
Embedded Systems Journal UDIT, MScIT Part II 2014-15 Page No :
_____
1. In electronics, a diode is a two-terminal electronic component with asymmetric
conductance; it has low (ideally zero) resistance to current in one direction, and high
(ideally infinite) resistance in the other. A semiconductor diode, the most common type
today, is a crystalline piece of semiconductor material with a p–n junction connected to
two electrical terminals.
2. The most common function of a diode is to allow an electric current to pass in one direction
(called the diode's forward direction), while blocking current in the opposite direction
(the reverse direction). Thus, the diode can be viewed as an electronic version of a check
valve. This unidirectional behavior is called rectification, and is used to convert alternating
current to direct current, including extraction of modulation from radio signals in radio
receivers—these diodes are forms of rectifiers.
3. Transistors
1. A transistor is a semiconductor device used to amplify and switch electronic signals and
electrical power.
2. It is composed of semiconductor material with at least three terminals for connection to an
external circuit.
3. A voltage or current applied to one pair of the transistor's terminals changes the current
through another pair of terminals. Because the controlled (output) power can be higher than
the controlling (input) power, a transistor can amplify a signal.
4. Sensors
Embedded Systems Journal UDIT, MScIT Part II 2014-15 Page No :
_____
1. A sensor is a device that detects events or changes in quantities and provides a
corresponding output, generally as an electrical or optical signal; for example, a
thermocouple converts temperature to an output voltage.
2. A sensor's sensitivity indicates how much the sensor's output changes when the input
quantity being measured changes.
3. The sensitivity is then defined as the ratio between output signal and measured
property. For example, if a sensor measures temperature and has a voltage output, the
sensitivity is a constant with the unit [V/K]; this sensor is linear because the ratio is
constant at all points of measurement.
5. Actuators
1. An actuator is a type of motor that is responsible for moving or controlling a mechanism or
system.
2. It is operated by a source of energy, typically electric current, hydraulic fluid pressure,
or pneumatic pressure, and converts that energy into motion. An actuator is the mechanism
by which a control system acts upon an environment. The control system can be simple (a
fixed mechanical or electronic system), software-based (e.g. a printer driver, robot control
system), a human, or any other input.
7. Operational Amplifiers:
8. An operational amplifier (op-amp) is a DC-coupled high-gain electronic
voltage amplifier with a differential input and, usually, a single-ended output.
9. In this configuration, an op-amp produces an output potential (relative to circuit ground)
that is typically hundreds of thousands of times larger than the potential difference between
its input terminals.
Conclusion: The practical of the study of the Embedded System hardware components
is successfully completed.
2. Write the code using and IDE and generate the hex file.
3. Give the hex file as input to the Designed circuit and execute.
Design:
void main()
{
P1=0;
while(1)
{
P1 = 0x00;
delay();
P1 = 0xFF;
delay();
}
}
void delay()
{
unsigned int i,j,k;
for(i=0; i < 6; i++ )
{
for(j=0;j<250;j++)
{
for(k=0;k<250;k++);
}
}
}
3. Create a new file by pressing Ctrl + N, type the code and save it with a name
blinkingled.c
Right click on the Source Group 1 and select “ Add Files to Group Source Group 1”.
4. Go the Project ->Options for Target Target 1. In the Target tab, change the
Xtal(mhz): 11.059
Click the Output tab on top and Select the “create HEX file” option
Description:
MAX232
4. creates virtual serial ports and connects them in pairs via virtual null
modem cable. Applications on both ends of the pair will be able to
exchange data in such a way, that everything written to the first port
will appear in the second one and backwards.
5. All virtual serial ports work and behave exactly like real ones, emulating
all their settings. We can create as many virtual port pairs as you want,
so there will be no serial ports shortage and no additional hardware
crowding your desk.
2. CAPACITORS
1. C1:33PF
2. C2:33PF
3. C3:1UF
4. C4:10UF
5. C5:10UF
6. C6:10UF
7. C7:10UF
8. C8:10UF
9. C9:10UF
3. COMPIM1, COMPIM2
4. CRYSTAL:11.059MhZ
5. MAX232
6. RESISTORS: R1 – 10K
TRANSMITTER
RECEIVER
void serial_init(void);
void main(void)
{
serial_init();
while(1)
{
printf("hello world!! \n\r");
}
}
void serial_init(void)
{
SCON=0x50;
TMOD=0x20;
TH1=0xFD;
TR1=1;
TI=1;
}
Description:
The LCD can be used in 2 modes – 8 bit mode and 4 bit mode.
Before using the LCD for display purpose, LCD has to be initialized. The LCD is
initialized in the following sequence.
1. Send command 0x30 - Using 8-bit interface
2. Delay 20ms
3. Send command 0x30 - 8-bit interface
4. Delay 20ms
5. Send command 0x30 - 8-bit interface
6. Delay 20ms
7. Send Function set - see Table 4 for more information
8. Display Clear command
9. Set entry mode command
The first 3 commands are usually not required but are recommended when you
are using 4-bit interface
Pin
Function Name
No
1 Ground (0V) Vss
2 Supply voltage; 5V (4.7V – 5.3V) VDD
3 Contrast adjustment; through a variable resistor VEE
4 Selects command register when low; and data register when Register
high Select(RS)
0 = Instruction input , 1 = Data input
5 Low to write to the register; High to read from the register Read/write (RW)
0 = Write to LCD Module, 1 = Read from LCD module
6 Sends data to data pins when a high to low pulse is given Enable (E)
7 DB0
8 DB1
9 DB2
10 DB3
8-bit data pins
11 DB4
12 DB5
13 DB6
14 DB7
15 Backlight VCC (5V) Led+
16 Backlight Ground (0V) Led
LCD Memory
LCD display contains three memory blocks:
1. DDRAM Display Data RAM;
2. CGRAM Character Generator RAM; and
3. CGROM Character Generator ROM.
DDRAM Memory
1. DDRAM memory is used for storing characters to be displayed. The size of this memory
is capable of storing 80 characters. Some memory locations are directly connected to the
characters on display.
All data transferred to an LCD through the outputs D0-D7 will be interpreted as a command or a
data, which depends on the RS pin logic state:
1. RS = 1 - Bits D0 - D7 are addresses of the characters to be displayed. LCD processor
addresses one character from the character map and displays it. The DDRAM address
specifies location on which the character is to be displayed. This address is defined prior
to transferring character or the address of the previously transferred character is
automatically incremented.
2. RS = 0 - Bits D0 - D7 are commands for setting the display mode.
EXECUTION
COMMAND RS RW D7 D6 D5 D4 D3 D2 D1 D0
TIME
Display on/off
0 0 0 0 0 0 1 D U B 40uS
control
Cursor/Display
0 0 0 0 0 1 D/C R/L x x 40uS
Shift
Set CGRAM
0 0 0 1 CGRAM address 40uS
address
Set DDRAM
0 0 1 DDRAM address 40uS
address
Write to CGRAM
1 0 D7 D6 D5 D4 D3 D2 D1 D0 40uS
or DDRAM
Read from
CGRAM or 1 1 D7 D6 D5 D4 D3 D2 D1 D0 40uS
DDRAM
D N
1 = Display on 1 = Display in two lines
0 = Display off 0 = Display in one line
U F
1 = Cursor on 1 = Character format 5x10 dots
0 = Cursor off 0 = Character format 5x7 dots
B D/C
1 = Cursor blink on 1 = Display shift
0 = Cursor blink off 0 = Cursor shift
THE BUSY FLAG: Compared to the microcontroller, the LCD is an extremely slow component.
For this reason, it is necessary to provide a signal which would, upon command execution, indicate
that the display is ready for the next piece of data. That signal, called the busy flag, can be read
from the line D7. The display is ready to receive new data when the voltage on this line is 0V
(BF=0).
COMPONENTS:
1. AT89C51:11.059MHz
2. BUTTON
3. CAPACITOR
1. C1:33pf
2. C2:33pf
3. C3:1uf
4. CRYSTAL:11.059MHz
5. LED-BLUE
DESIGN
#include<reg51.h>
#include<string.h>
void cct_init(void);
void delay(int);
void lcdinit(void);
void writecmd(int);
void writedata(char);
void writeline(char[]);
void ReturnHome(void);
char READ_SWITCHES(void);
char get_key(void);
int get_num(char);
char get_func(char);
void DispError(int);
void disp_num(int);
// ***********************************************************
// Main program
//
int main(void)
{
char key; //key char for keeping record of pressed key
int num1 = 0; //First number
char func = '+'; //Function to be performed among two numbers
int num2 = 0; //Second number
while(1)
Embedded Systems Journal UDIT, MScIT Part II 2014-15 Page No :
_____
{
//get numb1
key = get_key();
writecmd(0x01); //clear display
writedata(key); //Echo the key pressed to LCD
num1 = get_num(key); //Get int number from char value, it checks for wrong input as well
if(num1!=Error) //if correct input then proceed, num1==Error means wrong input
{
//get function
key = get_key();
writedata(key); //Echo the key pressed to LCD
func = get_func(key); //it checks for wrong func
if(func!='e') //if correct input then proceed, func=='e' means wrong input
{
//get numb2
key = get_key();
writedata(key); //Echo the key pressed to LCD
num2 = get_num(key); //Get int number from char value, it checks for
wrong input as well
void cct_init(void)
{
P0 = 0x00; //not used
P1 = 0xf0; //used for generating outputs and taking inputs from Keypad
P2 = 0x00; //used as data port for LCD
P3 = 0x00; //used for RS and E
}
void delay(int a)
{
int i;
for(i=0;i<a;i++); //null statement
}
void writedata(char t)
{
RS = 1; // This is data
P2 = t; //Data transfer
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
}
void writecmd(int z)
{
RS = 0; // This is command
P2 = z; //Data transfer
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
}
void lcdinit(void)
{
///////////// Reset process from datasheet /////////
delay(15000);
writecmd(0x30);
delay(4500);
Embedded Systems Journal UDIT, MScIT Part II 2014-15 Page No :
_____
writecmd(0x30);
delay(300);
writecmd(0x30);
delay(650);
/////////////////////////////////////////////////////
writecmd(0x38); //function set
writecmd(0x0c); //display on,cursor off,blink off
writecmd(0x01); //clear display
writecmd(0x06); //entry mode, set increment
}
char READ_SWITCHES(void)
{
RowA = 0; RowB = 1; RowC = 1; RowD = 1; //Test Row A
if( chf!='+' && chf!='-' && chf!='x' && chf!='/' ) //if input is not from allowed funtions then show
error
{
DispError(1);
return 'e';
}
switch(numb)
{
case 0: writeline("Wrong Input"); break;
case 1: writeline("Wrong Function"); break;
default: writeline("Wrong Input"); break;
}
}
if(numb<0)
{
numb = -1*numb; // Make number positive
writedata('-'); // Display a negative sign on LCD
}
Conclusion: The practical for LCD & Keypad interfacing is successfully completed.
Description:
Description:
Stepper motor is one of the commonly used motors for precise angular movement.
The advantage of using a stepper motor is that the angular position of the motor
shaft can be controlled without any feedback mechanism. Stepper motors are
widely used in industrial and commercial applications. They are also commonly
used as in drive systems of autonomous robots.
For a bipolar stepper motor, in the full step mode both the phases are energized
simultaneously. The coils A, B, C, D are energized in the following order:
Design :
void delay(int);
void main()
{
while(1)
{
P2=0x09;
delay(500);
P2=0x0C;
delay(500);
P2=0x06;
delay(500);
P2=0x03;
delay(500);
}
}
void delay(int k)
{
int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<100;j++)
{
}
}
}
Embedded Systems Journal UDIT, MScIT Part II 2014-15 Page No :
_____
Embedded Systems Journal UDIT, MScIT Part II 2014-15 Page No :
_____
Output:
Description:
The above diagram illustrates the traffic flow layout of the four way road
The traffic flow can be classified in to four phases in the above diagram and we have
considered the North as starting point of this traffic flow. And in the above scheme
vehicles are allowed to make a free right turn so we need to consider only two
directions straight and left. So the green signal was classified into two types one for
G for permitting vehicle to proceed forward and GL for permitting vehicles to left.
PHASE I-
1. Initially Vehicle from A needs to travel to F and from E to B roads.
2. So in the first Phase forward green signal in A and E permits vehicles to pass
through while East and west roads are stopped by red signal.
PHASE II-
1. Phase II permits the vehicle to pass from G to D and from C to H roads.
DESIGN :
sbit SR = P0^4;
sbit SY = P0^5;
sbit SG = P0^6;
sbit SL = P0^7;
sbit ER = P1^0;
sbit EY = P1^1;
sbit EG = P1^2;
sbit EL = P1^3;
while(1){
/*
NR = 1; //allow north to south AND WEST
NY = 1;
NG = 0;
NL = 1;
count1();
NR = 0;
NY = 1;
SR = 0;
SY = 1;
SG = 1;
SL = 1;
NG=0;
SG=0;
ER=0;
WRR=0;
count1();
EY=0;
WY=0;
ER=1;
//2ND 7SEC, NORTH TO SOUTH AND yELLOW FOR EAST TO WEST N WEST TO EAST
NR = 1; //allow north to south AND WEST
NY = 1;
NG = 0;
NL = 1;
//4TH 7 SEC, SOUTH TO WEST AND NORTH TO EAST REST ALL BLOCKED
SR = 0;
SY = 1;
SG = 1;
SL = 0;
ER = 0;
EY = 1;
EG = 1;
EL = 1;
WRR = 0;
WY = 1;
WG = 1;
WL = 1;
count1();
//5TH 7 SEC, EAST TO SOUTH AND WEST TO NORTH REST ALL BLOCKED
NR = 1;
NY = 0;
NG = 1;
NL = 1;
void count1()
{
unsigned int i,j;
for(j=0;j<=2;)
{
for(i=0;i<=3;)
{
i++;
delay();
}
void delay(void)
{
unsigned int s,k;
for(s=0;s<=230;s++)
{
for(k=0;k<238;k++);
}
}
OUTPUT:
Description:
This practical is based on the concept of elevator control. Here the elevator
is simulated for a Ground + 3 Floors structures.
An LED is used to indicate the availability of the lift. RED indicates. BUSY
and GREEN Indicates available.
A 7 segment display is used to indicate the current position of the lift. The
seven segment LED is used in the Common Cathode configuration.
The following table displays the how decimal values 0-9 are displayed on
the 7 segment display
char READ_SWITCHES(void);
char get_key(void);
void main()
{
P2 = 0x3f;
P1 = 0x00;
while(1)
{
char READ_SWITCHES(void)
{
//ground floor
if (GF == 1)
{
led=1;
// third to ground
if(GF==1 && key=='T')
{
delayd();
P2 = 0x5b;
delayd();
P2 = 0x06;
delayd();
P2 = 0x3f;
}
// second to ground
//first floor
if (FF == 1)
{
led=1;
//third floor to first floor
if(FF==1 && key=='T')
{
delayd();
P2 = 0x5b;
delayd();
P2 = 0x06;
}
void delayd( )
{
unsigned int s,k,i;
for(i=0;i<3;i++)
{
for(s=0;s<=230;s++)
{
for(k=0;k<238;k++);
}
}
}