Monday, 19 January 2015

Interfacing of seven segment with 8051

SEVEN SEGMENT:  

   Seven segment display (SSD), or seven-segment indicator, is a form of electronic display device for displaying decimal numerals  that is an alternative to the more complex dot matrix displays.
   Seven segment display consists of seven LEDs (hence its name) arranged in a rectangular fashion as shown. Each of the seven LEDs is called a segment because when illuminated the segment forms part of a numerical digit (both Decimal and Hex) to be displayed. An additional 8th LED is sometimes used within the same package thus allowing the indication of a decimal point, (DP) when two or more 7-segment displays are connected together to display numbers greater than ten.

                                                                  


 Each one of the seven LEDs in the display is given a positional segment with one of its connection pins being brought straight out of the rectangular plastic package. These individually LED pins are labelled from a through to g representing each individual LED. The other LED pins are connected together and wired to form common pin.
     So by forward biasing the appropriate pins of the LED segments in a particular order, some segments will be light and others will be dark allowing the desired character pattern of the number to be generated on the display. This then allows us to display each of the ten decimal digits 0 through to 9 on the same 7-segment display. The displays common pin is generally used to identify which type of 7-segment display it is. As each LED has two connecting pins, one called the “Anode” and the other called the “Cathode”.

There are two types of seven segments:

1) Common Cathode
2) Common Anode

1)  Common Cathode  In the common cathode display, all the cathode connections of the LED segments are joined together to logic 0 or ground. The individual segments are illuminated by application of a HIGH, or logic 1 signal via a current limiting resistor to forward bias the individual Anode terminals (a-g).


                                    

2)  Common Anode:  In the common anode display, all the anode connections of the LED segments are joined together to logic “1”. The individual segments are illuminated by applying a ground, logic “0” or “LOW” signal via a suitable current limiting resistor to the Cathode of the particular segment (a-g).

                                  




PIN Diagram of 7 segment:



7 Segment Display Segments for all Numbers:





Hexadecimal encodings for 7 Segment common cathode:


     
Digit
gfedcba
abcdefg
a
b
c
d
e
f
g
0
0×3F
0×7E
on
on
on
on
on
on
off
1
0×06
0×30
off
on
on
off
off
off
off
2
0×5B
0×6D
on
on
off
on
on
off
on
3
0×4F
0×79
on
on
on
on
off
off
on
4
0×66
0×33
off
on
on
off
off
on
on
5
0×6D
0×5B
on
off
on
on
off
on
on
6
0×7D
0×5F
on
off
on
on
on
on
on
7
0×07
0×70
on
on
on
off
off
on
off
8
0×7F
0×7F
on
on
on
on
on
on
on
9
0×6F
0×7B
on
on
on
on
off
on
on
A
0×77
0×77
on
on
on
off
on
on
on
b
0×7C
0×1F
off
off
on
on
on
on
on
C
0×39
0×4E
on
off
off
on
on
on
off
d
0×5E
0×3D
off
on
on
on
on
off
on
E
0×79
0×4F
on
off
off
on
on
on
on
F
0×71
0×47
on
off
off
off
on
on
on


Hexadecimal encodings for 7 Segment common anode:




Interfacing of seven  segment with 8051:


Circuit Diagram:




                                                                                                            



 Program to display 0 to 9 on seven segment common cathode:

1) ASM code:


$mod51
org 00h

mov p1,#3fh
acall delay
mov p1,#06h
acall delay
mov p1,#5bh
acall delay
mov p1,#4fh
acall delay
mov p1,#66h
acall delay
mov p1,#6dh
acall delay
mov p1,#7dh
acall delay
mov p1,#47h
acall delay
mov p1,#7fh
acall delay
mov p1,#6fh
acall delay


delay:

    mov r0,#255
L3: mov r1,#255
L2: mov r2,#50
L1: djnz r2,L1
    djnz r1,L2
    djnz r0,L3

ret
end


2)  C code: 

#include<reg51.h>
unsigned int i, j, k;
void delay( );
unsigned char arr[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x47,0x7f,0x6f};

 void main( )
 {
 for(i=0;i<=9;i++)
 {
 P1=arr[i];
delay();  
}
}
void delay( )

{
for(j=0;j<=60000;j++);
}


3) Simulation on proteus:







 Program to display 0 to 99 on seven segment common cathode:

1) ASM code:
$mod51
org 00h

 mov p1,#3fh
 acall L1
 mov p1,#06h
 acall L1
 mov p1,#5bh
 acall L1
 mov p1,#4fh
 acall L1
 mov p1,#66h
 acall L1
 mov p1,#6dh
 acall L1
 mov p1,#7dh
 acall L1
 mov p1,#47h
 acall L1
 mov p1,#7fh
 acall L1
 mov p1,#6fh
 acall L1
L1:
 mov p2,#3fh
 acall delay
 mov p2,#06h
 acall delay
 mov p2,#5bh
 acall delay
 mov p2,#4fh
 acall delay
 mov p2,#66h
 acall delay
 mov p2,#6dh
 acall delay
 mov p2,#4dh
 acall delay
 mov p2,#47h
 acall delay
 mov p2,#7fh
 acall delay
 mov p2,#6fh
 acall delay
delay:
 mov r0,#255
L4:  mov r1,#255
L3:  mov r2,#20
L2:  djnz r2,L2
 djnz r1,L3
 djnz r0,L4
 ret
end

2) C code: 

#include<reg51.h>
unsigned int i, j, k;
void delay( );
unsigned char arr[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x47,0x7f,0x6f};

 void main( )
 {
 for(i=0;i<=9;i++)
      {
             P1=arr[i];

               for(i=0;k<=9;k++)
                     {
                           P2=arr[k];
                            delay();  
                      }
       }
  }
void delay( )

{
for(j=0;j<=60000;j++);
}


3) Simulation on proteus: 




 Program to display 0 to 999 on seven segment common cathode:

1)  ASM code:

$mod51
org 00h
   mov p3,#3fh
 acall L2
 mov p3,#06h
 acall L2
 mov p3,#5bh
 acall L2
 mov p3,#4fh
 acall L2
 mov p3,#66h
 acall L2
 mov p3,#6dh
 acall L2
 mov p3,#7dh
 acall L2
 mov p3,#47h
 acall L2
 mov p3,#7fh
 acall L2
 mov p3,#6fh
 acall L2
l2:

 mov p1,#3fh
 acall L1
 mov p1,#06h
 acall L1
 mov p1,#5bh
 acall L1
 mov p1,#4fh
 acall L1
 mov p1,#66h
 acall L1
 mov p1,#6dh
 acall L1
 mov p1,#7dh
 acall L1
 mov p1,#47h
 acall L1
 mov p1,#7fh
 acall L1
 mov p1,#6fh
 acall L1
L1:
 mov p2,#3fh
 acall delay
 mov p2,#06h
 acall delay
 mov p2,#5bh
 acall delay
 mov p2,#4fh
 acall delay
 mov p2,#66h
 acall delay
 mov p2,#6dh
 acall delay
 mov p2,#4dh
 acall delay
 mov p2,#47h
 acall delay
 mov p2,#7fh
 acall delay
 mov p2,#6fh
 acall delay
delay:
 mov r0,#25
L4:  mov r1,#25
L3:  mov r2,#20
L21:  djnz r2,L21
 djnz r1,L3
 djnz r0,L4
 ret
end

C code: 

#include<reg51.h>
unsigned int i, j, k,m;
void delay( );
unsigned char arr[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x47,0x7f,0x6f};

 void main( )
 {
 for(i=0;i<=9;i++)
      {
             P3=arr[i];

               for(k=0;k<=9;k++)
                     {
                           P1=arr[k];
                               for(m=0;m<=9;m++)
                                    { 
                                         P2=arr[m];
                                         delay();  
                                     }
                      }
       }
  }
void delay( )

{
for(j=0;j<=60000;j++);
}








0 comments:

Post a Comment

if you have any doubt please let me know