Вы находитесь на странице: 1из 3

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD INGENIERIA ELECTRONICA


ESCUELA ELECTRONICA

CURSO

CIRCUITOS ELECTRONICOS II

TRABAJO

INFORME N7 CONTADOR DE EVENTOS EXTERNOS

PROFESOR

ING. FLAVIO CONDOR DE LA CRUZ

INTEGRANTES

:
JUSCAMAYTA MORI ALVARO ERNESTO
RAMOS CORDOVA RAFAEL

AO Y CICLO

LABORATORIO N7:

2015 A

CONTADOR DE EVENTOS EXTERNOS

Realizar un programa para obtener un contador de eventos de 3 dgitos.

CIRCUITO EN PROTEUS:
el circuito nos muestra una conexin de los tres display
de forma multiplexada , el pulsador en el PIN PD5 se usa con el fin de aumentar el
conteo ascendente.
+5v

R3
5k

U1
13
12
11
6
5
4
3
2
1
28
27
26
25
24
23

PD7/AIN1
PD6/AIN0
PD5/T1
PD4/T0/XCK
PD3/INT1
PD2/INT0
PD1/TXD
PD0/RXD
PC6/RESET
PC5/ADC5/SCL
PC4/ADC4/SDA
PC3/ADC3
PC2/ADC2
PC1/ADC1
PC0/ADC0

AVCC
AREF

PB7/TOSC2/XTAL2
PB6/TOSC1/XTAL1
PB5/SCK
PB4/MISO
PB3/MOSI/OC2
PB2/SS/OC1B
PB1/OC1A
PB0/ICP1

20
21

CENTENAS

10
9
19
18
17
16
15
14

DECENAS

UNIDADES

ATMEGA8

R1
1k

Q1
BC548

R4

Q3
BC548

R2

1k

1k

PROGRAMACION EN C: (ATMEL STUDIO 6)

#define F_CPU 1000000


#include <avr/io.h>
#include <util/delay.h>
int contador=0;
unsigned char unidades,decenas,centenas;
int pulsador=1;
//se declara un vector de longitud 10 que contenga los valores para formar los
digitos , acomodamos en orden del 0 al 9
int numeros[10]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
int main(void)
{
DDRB=0XFF;// PUERTO B ES SALIDA
DDRD|=(_BV(PD2)|_BV(PD1)|_BV(PD0));// PD0 , PD1 Y PD2 SALIDAS

Q2
BC548

while(1)
{
if(bit_is_clear(PIND,PD5)&(pulsador==1))// verifica si PD5=0
{
_delay_ms(40);
while(bit_is_clear(PIND,PD5)&(pulsador==1))
{
contador++;
unidades=contador%10;
decenas=(contador/10)%10;
centenas=(contador/10)/10;
if(contador>999){contador=0;}
pulsador=0; // carga a cero la variable pulsador
}
}
if(bit_is_set(PIND,PD5))// Verifica si PD5=1
{ pulsador=1;} // carga a uno el pulsador
// VISUALIZACION DEL CONTEO EN EL DISPLAY
//-----------------------------------------------------------------PORTD=1;
PORTB=numeros[unidades];// posicin unidades
_delay_ms(30);
PORTD=2;
PORTB=numeros[decenas]; // posicion decenas
_delay_ms(30);
PORTD=4;
PORTB=numeros[centenas];// posicin centenas
_delay_ms(30);
}

Вам также может понравиться