est 6

9
EMBEDDED SYSTEMS TUTORIAL6- INTERFACING 7 SEGMENT DISPLAY WITH AVR Hii… friends its our next AVR tutorial this time we are going to discuss about interfacing of 7 segment display with a AVR. You must have seen 7 segment display in you house hold inverters, in a zerox machine or even on your microwave oven. So in this tutorial , We will discuss about 7 segment display , its types and its interfacing with AVR along with source code so have a look… INTROUCTION A seven segment display is the most basic electronic display device that can display digits from 0-9. They find wide application in devices that display numeric information like digital clocks, radio, microwave ovens, electronic meters etc. The most common configuration has an array of eight LEDs arranged in a special pattern to display these digits. They are laid out as a squared-off figure ‘8’. Every LED is assigned a name from 'a' to 'g' and 'dp'and is identified by its name. Seven LEDs 'a' to 'g' are used to display the numerals while eighth LED 'dp' is used to display the dot/decimal. PACKAGE AND TYPES A seven segment is generally available in ten pin package. While eight pins correspond to the eight LEDs, the remaining two pins (at middle) are common and internally shorted. These segments come in two configurations, namely, Common cathode (CC) and Common anode (CA). In CC configuration, the negative terminals of all LEDs are connected to the common pins. The common is connected to ground and a particular LED glows when its corresponding pin is given high. In CA arrangement, the common pin is given a high logic and the LED pins are given low to display a number .

Upload: akshay-sharma

Post on 14-Jul-2015

64 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Est 6

EMBEDDED SYSTEMS TUTORIAL6- INTERFACING 7 SEGMENT DISPLAY WITH AVR

Hii… friends its our next AVR tutorial this time we are going to discuss about interfacing of 7 segment

display with a AVR. You must have seen 7 segment display in you house hold inverters, in a zerox

machine or even on your microwave oven. So in this tutorial , We will discuss about 7 segment display ,

its types and its interfacing with AVR along with source code so have a look…

INTROUCTION

A seven segment display is the most basic electronic display device that can display digits from 0-9.

They find wide application in devices that display numeric information like digital clocks, radio, microwave

ovens, electronic meters etc. The most common configuration has an array of eight LEDs arranged in a

special pattern to display these digits. They are laid out as a squared-off figure ‘8’. Every LED is assigned

a name from 'a' to 'g' and 'dp'and is identified by its name. Seven LEDs 'a' to 'g' are used to display the

numerals while eighth LED 'dp' is used to display the dot/decimal.

PACKAGE AND TYPES

A seven segment is generally available in ten pin package. While eight pins correspond to the eight

LEDs, the remaining two pins (at middle) are common and internally shorted. These segments come in

two configurations, namely, Common cathode (CC) and Common anode (CA). In CC configuration, the

negative terminals of all LEDs are connected to the common pins. The common is connected to ground

and a particular LED glows when its corresponding pin is given high. In CA arrangement, the common pin

is given a high logic and the LED pins are given low to display a number.

Page 2: Est 6

HOW IT WORKS

Now let us suppose a digit is to be displayed on the 7 segment. Suppose the digit is 1 in

such case LEDS corresponding b and c should glow, so we can say foe each and every

digit a specific set of LEDs has to glow . the LEDs to be golw with corresponding digits

Are as shown.

Page 3: Est 6

INTERFACING WITH AVR MICROCONTROLLER

Here is step wise process for inTERfacing a 7 segment display with AVR

microcontroller( ATMEGA 16)

SETP 1

CICUIT CONNECTION

Here we are using a common anode 7 segment display.

Connect your 7 segment display with the atmega 16 as per the connections shown in

the diagram below

Page 4: Est 6

STEP 2

SOURCE CODE

Create the new project in AVR STUDIO4 and compile the code written below-

/*

A simple program for interfacing common anode seven segment display with AVR

microcontroller

Page 5: Est 6

a->PD7

b->PD6

c->PD5

d->PD4

e->PD3

f->PD2

g->PD1

DP->PD0

Written by: ABHILASH DIXIT

TECH_STRONG

*/

#include <avr/io.h>

#include <util/delay.h>

// You can change the 7 segement display port just by changing the port in this macro

#define SEVEN_SEGMENT_PORT PORTC

#define SEVEN_SEGMENT_DDR DDRC

void Seven_Segment_display(uint8_t n,uint8_t dp)

{

/*

This function writes a digit given by n to the display

the decimal point is displayed if dp=1

Note:

Page 6: Est 6

n must be less than 9

*/

if(n<10)

{

switch (n)

{

case 0:

SEVEN_SEGMENT_PORT=0b00000011;

break;

case 1:

SEVEN_SEGMENT_PORT=0b10011111;

break;

case 2:

SEVEN_SEGMENT_PORT=0b00100101;

break;

case 3:

SEVEN_SEGMENT_PORT=0b00001101;

break;

case 4:

SEVEN_SEGMENT_PORT=0b10011001;

break;

case 5:

SEVEN_SEGMENT_PORT=0b01001001;

break;

case 6:

SEVEN_SEGMENT_PORT=0b01000001;

break;

Page 7: Est 6

case 7:

SEVEN_SEGMENT_PORT=0b00011111;

break;

case 8:

SEVEN_SEGMENT_PORT=0b00000001;

break;

case 9:

SEVEN_SEGMENT_PORT=0b00001001;

break;

}

if(dp)

{

//if decimal point should be displayed

//make 0th bit Low

SEVEN_SEGMENT_PORT&=0b11111110;

}

}

else

{

//This symbol on display tells that n was greater than 9

//so display can't handle it

SEVEN_SEGMENT_PORT=0b11111101;

}

}

void Wait()

{

Page 8: Est 6

// An approx one second delay for 1Mhz CPU clock

uint8_t i;

for(i=0;i<1302;i++)

{

_delay_loop_2(0);

}

}

void main()

{

//Setup

SEVEN_SEGMENT_DDR=0xFF; //All output

SEVEN_SEGMENT_PORT=0xFF; //All segments off

uint8_t count=0;

while(1)

{

Seven_Segment_display(count,0);

count=count+1;

if(count>9)

{

count=0;

}

_delay_ms(300);

}

}

Page 9: Est 6

In this program first we have created a function to display digits named

seven_segment_display, then we have passed two argument first to display numbers

and other to display decimal point if we want. We are going to connect our 7 segment at

PORT C, so we will make it output port and after that the corresponding pins connected

to 7 segment pins are set to high or low according to number to be displayed. This

program will display the no from 0 t0 9 and as it reaches to 9 , it will be reset to 0. You

can change numbering sequence or display only odd or odd number or whatever you

want just by some small changes in the source code according to your task.

Now burn the microcontroller with the hex file generated and power up your

circuit , you will see numbers displaying from 0 to 9.

So we have learnt the basics of 7 segment display interfacing, we can more 7 seven

segment display with a AVR but for that we will need multiplexing technique, we will

discuss multiplexing in upcoming tutorials but before that we have to discuss about

TIMER in AVR so in next tutorial we will discuss about TIMER s