Line 18: Line 18:
 
Since these are basically LEDs arranged as a group they can either have anode in common or cathode.
 
Since these are basically LEDs arranged as a group they can either have anode in common or cathode.
 
*'''Common Cathode''': This type of 7 segments, requires a positive voltage(5v) to given to the segments '''a''' to '''g''' in order to glow. This is shown in figure(3). Providing a positive voltage with respect to common cathode makes the LED forward biased.
 
*'''Common Cathode''': This type of 7 segments, requires a positive voltage(5v) to given to the segments '''a''' to '''g''' in order to glow. This is shown in figure(3). Providing a positive voltage with respect to common cathode makes the LED forward biased.
*'''Common Anode''': This type of 7 segments, requires a negativevoltage(GND) to given to the segments '''a''' to '''g''' in order to glow. This is shown in figure(4). A ground connection to cathode with respect to common anode again forward biases the LED which glows.
+
*'''Common Anode''': This type of 7 segments, requires a negativevoltage(GND) to given to the segments '''a''' to '''g''' in order to glow. This is shown in figure(4). A ground connection to cathode with respect to common anode again forward biases the LED which glows.<br />
 
}}
 
}}
 +
=Interfacing 7 segment display to 8051 =
 +
==Driving the Seven Segment==
 +
==Schematic Diagram==
 +
[[File:8051 7SEGMENT INTERFACE.PNG|600x600px]]
 +
==Code==
 +
<syntaxhighlight>
 +
/* Reg51.h contains the defnition of all ports and SFRs */
 +
#include <reg51.h>
 +
#include "delay.h" //User defined delay library which conatins the delay routines
 +
#define SegmentValue P0
 +
#define SegmentSelection P1
 +
#define SegOne  0x01
 +
#define SegTwo  0x02
 +
#define SegThree 0x04
 +
#define SegFour  0x08
 +
/* start the main program */
 +
void main()
 +
{
 +
  unsigned char seg_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 +
  unsigned char cnt=0;
 +
  while(1)
 +
    {
 +
 
 +
    for(cnt=0x00;cnt<=0x0f;cnt++) // loop to display 0-F
 +
{
 +
  SegmentSelection = SegOne; // Select the segment
 +
SegmentValue= seg_code[cnt]; // Send the segment_code of number to be displayed
 +
delay_sec(1);
 +
  }
 +
 +
  }  
 +
}
 +
</syntaxhighlight>

Revision as of 11:30, 17 December 2013


Seven Segment Display

fig 1: Basic 7 segment Display
fig 2: Simulation

Well, the name 7 segments implies there are 7 LED segments arranged as shown in figure 1. After LEDs they are the easiest interfaces to a microcontroller. There is also a decimal point or dp. It is used when decimal digits like 5.1 etc are displayed.

Applications

Seven segment are widely used in applications where digits[0-9] are required to be displayed.Although they also display letters A to F as shown in figure(2) simulation. This is a very simple and convenient way to display numbers in a bright fashion.

Form Factor

  • Sizes:They come in various sizes; 0.28”, 0.3”, 0.32”, 0.36”, 0.39”, 0.4”, 0.5”, 0.56”, 0.6”, 0.8”, 1.0”, 1.2”, 1.5”, 1.8”, 2.0”, 2.3”, 3.0”, 4.0”, 5.0”, 7.0”)
  • Colors: and varied colors too; Red, Green, Yellow, Orange, Blue, and White.

Working

fig 3:Common Cathode Display
fig 4: Common Anode 7 segment

Since these are basically LEDs arranged as a group they can either have anode in common or cathode.

  • Common Cathode: This type of 7 segments, requires a positive voltage(5v) to given to the segments a to g in order to glow. This is shown in figure(3). Providing a positive voltage with respect to common cathode makes the LED forward biased.
  • Common Anode: This type of 7 segments, requires a negativevoltage(GND) to given to the segments a to g in order to glow. This is shown in figure(4). A ground connection to cathode with respect to common anode again forward biases the LED which glows.

Interfacing 7 segment display to 8051

Driving the Seven Segment

Schematic Diagram

8051 7SEGMENT INTERFACE.PNG

Code

 
/* Reg51.h contains the defnition of all ports and SFRs */
#include <reg51.h> 
#include "delay.h"	//User defined delay library which conatins the delay routines
#define SegmentValue P0
#define SegmentSelection P1
#define SegOne   0x01
#define SegTwo   0x02
#define SegThree 0x04
#define SegFour  0x08
/* start the main program */
void main() 
{
   unsigned char seg_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
   unsigned char cnt=0;
   while(1)
    {
 
	    for(cnt=0x00;cnt<=0x0f;cnt++)	 // loop to display 0-F
		 {
		   	SegmentSelection = SegOne;	 // Select the segment
			SegmentValue= seg_code[cnt];	 // Send the segment_code of number to be displayed
			delay_sec(1);
		   }
 
	  }												  
}