Multiplexed Seven Segment Drive

July 25, 2009 by admin
Filed under: Microcontrollers, electronics 

Multiplexed seven segment drive using AVR

sevenseg

Figure above shows the circuit arrangment for 4 seven segment display drive in a multiplexed manner. Data to be displayed is put onto the display unit on PORTA of ATmega32. PORTB0..3 pins are used to enable one display at a time slice. R1–4 are transistors biasing resistors valued usually 10K.

Display used are common Anode that is high logic lit the corresponding segment on display.

First we need to identify the hex value to be written onto data PORTA, corresponding to number 0 to 9.

which are as follows-

// Code for a kind of stop watch just for demonstration of multiplexing display

// One switch (PORTD_0)is meant for count stop(PORTD_1), one for resume and last one(PORTD_2) for reset count to zero here is the code

#include<avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>
#include<compat/deprecated.h>
unsigned int speed=0;
volatile unsigned char  one=0,two=0,three=0,four=0;
unsigned char seg[10]={0xde,0×42,0xec,0xe6,0×72,0xb6,0xbe,0xc2,0xfe,0xf2};
SIGNAL(SIG_OVERFLOW0)
{

speed++;
if(speed==20)
{
four++;
if(four>9)
{
four=0;
three++;
if(three>9)
{
three=0;
two++;
if(two>9)
{
two=0;
one++;
if(one>9)
one=0;
}

}
}
speed=0;
}

}

int main(void)
{

unsigned int i;
DDRB=0xFF;
DDRA=0xFF;
DDRD=0×00;
PORTB=0×00;
PORTA=0×00;
PORTD=0xFF;
TCCR0=(1<<CS00)|(1<<CS02);
TCNT0=0;
TIMSK=(1<<TOIE0);
sei();
while(1)
{

if(!(PIND & 0×01))
{
while(!(PIND & 0×01));
cli();

}
if(!(PIND & 0×02))
{
while(!(PIND & 0×02));
sei();

}
if(!(PIND & 0×04))
{
while(!(PIND & 0×04));
four=three=two=one=0;
//PORTB=0xFF;
//PORTA=seg[0];
//_delay_ms(2);
//PORTB=0×00;

}
PORTB=0×01;
PORTA=seg[four];

_delay_us(100);
PORTB=0×02;

PORTA=seg[three];

_delay_us(100);
PORTB=0×04;
PORTA=seg[two];

_delay_us(100);
PORTB=0×08;
PORTA=seg[one];

_delay_us(100); }

return 0;

}




Comments

4 Comments on Multiplexed Seven Segment Drive

  1. anon on Mon, 19th Oct 2009 9:30 pm
  2. This schematic is unreadable.

  3. admin on Tue, 20th Oct 2009 3:39 am
  4. Schematic Updated

  5. Amit Rana on Mon, 8th Feb 2010 4:23 am
  6. The scheme doesnt works for 4-inch Jumbo LEDs since it requires 12V to operate
    what should be done to use them on 12Volt?

  7. admin on Tue, 9th Feb 2010 6:10 am
  8. use transistor switching

Tell me what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!





Anti-Spam Protection by WP-SpamFree