Sunteți pe pagina 1din 9

APLICACIONES DE CONTADORES CON EL PIC16F877A

Integrante: Ccanccapa Vilca Yeral Emerson


E-mail: yeralvilca50@gmail.com
Docente: Ing. Javier Jorge Mendoza Montoya

RESUMEN:

El presente informe tiene la finalidad de explicar la


aplicación de un contador ascendente y descendente
con dos pulsadores(SET,INICIO) que se visualiza en un
display de 7 segmentos (4 digitos), usando un buffer
invertido como decodificador, el código fue desarrollado
en el software MPLAB y la simulación en PROTEUS
para grabación del software PICKIT3.

PALABRAS CLAVE: Contador digital, pic, cristal,


display, buffer.

1 INTRODUCCIÓN
Un contador es básicamente un circuito que consta de
una entrada de impulsos (pulsador) y estos impulsos son
acumulados en un contador propiamente dicho cuyo
resultado, presenta mediante un visor que está
constituido por una serie de sencillos dígitos de siete
segmentos (display).

2 MARCO TEORICO

Los puertos del micro controlador PIC16F877A son el


medio de comunicación con el mundo exterior, en ellos
podremos conectar los periféricos o circuitos necesarios
Las entradas de control son siempre digitales, mientras
como por ejemplo los módulos LCD, motores eléctricos,
que las entradas y salidas pueden ser tanto digitales
etc.; pero estas conexiones no se podrán realizar como analógicas dependiendo del circuito integrado en
arbitrariamente. Existen unas reglas básicas que cuestión
deberán cumplirse para que el microcontrolador no sufra
daños o se destruya. Para ello es necesario conocer los
límites de corriente que puede manejar el
microcontrolador.

1
3 MATERIALES - Software MPLAB X.
- Micro controlador PIC 16F877A
- Condensadores: 22pF (2)
- Resistencias: 2200 Ω, 10KΩ
- Cristal Oscilador de 8MHz.
- Pulsador Normalmente abierto
- Display de 7 segmentos cátodo común
- Fuente de alimentación: 0V - 5V.

1 CARACTERISTICAS GENERALES Figura 2 condensador


4.2 Condensador
1.1 Pic 16F877A
Condensador cerámico 22pF de alta calidad ideal
El PIC 16F877 es un micro controlador de Microchip para proyectos con microcontroladores ya que es
Technology fabricado en tecnología CMOS, su consumo muy utilizado junto con cristales de cuarzo.
de potencia es muy bajo y además es completamente
estático (esto quiere decir que el reloj puede detenerse y
los datos de la memoria no se pierden). Tiene una 4.3 Cristal Oscilador
memoria memoria de programa tipo FLASH,
El oscilador de cristal se caracteriza por su estabilidad
de frecuencia y pureza de fase, dada por el resonador.
Especificaciones La frecuencia es estable frente a variaciones de la
tensión de alimentación. La dependencia con la
 Memoria de programa: FLASH de 8K de
temperatura depende del resonador, pero un valor típico
instrucciones de 14 bits
para cristales de cuarzo es de 0' 005% del valor a 25 °C,
 Memorias de datos: SRAM de 512 bytes,
en el margen de 0 a 70 °C.
EEPROM de 256 bytes
 Pines I/O (Input/Output) : 6 del puerto A, 8 del
puerto B, 8 del puerto C, 8 del puerto D y 3 del Especificaciones
puerto E, además de 8 entradas analógicas.
 Pila (Stack): 8 niveles (14 bits) - Reloj/Oscilador
 Fuentes de interrupción: 14 - 8 Mhz
 Instrucciones: 35
- Temperatura de funcionamiento
 Compatible modo SLEEP
- -20°C ~ 70°C
 Frecuencia máxima del oscilador de 20MHz
- Número de pines 2
 Conversor Analógico/Digital de 10 bits
multicanal (8 canales de entrada)
 Corriente máxima absorbida/suministrada
(sink/source) por pin: 25 mA
 Voltaje nominal: 3 a 5.5V DC (CMOS)
 Power On Reset
 Power Up Timer (PWRT)
 Oscilador Start Up Timer (OST)

Figura 3 crystal

Si tenemos un oscilador que nos controla el encendido y


el apagado de un led creando una intermitencia en
el momento que esta sea lo suficientemente rápida
ya no apreciaremos que el led llega a pagarse sino
nos dará la sensación que está permanentemente
encendido prácticamente a frecuencia superior a
30Hz ya no apreciamos el parpade
Figura 1 pic16F84A 4.4 Display

2
Es una forma de representar números en equipos
electrónicos. Está compuesto de siete segmentos que
Se pueden encender o apagar individualmente. Cada
segmento tiene la forma de una pequeña línea. Es un
componente que se utiliza para la representación de
números en muchos dispositivos electrónicos debido en
gran medida a su simplicidad. Aunque
Externamente su forma difiere considerablemente de un
diodo LED (diodos emisores de luz) típico, internamente
están constituidos por una serie de diodos LED con unas
determinadas conexiones internas, estratégicamente
ubicados de tal forma que forme un numero 8. A cada
uno de los segmentos que forman el display se les
denomina a, b, c, d, e, f y g y están ensamblados de
forma que se permita activar cada segmento por Figura 5 CI 4049
separado consiguiendo formar cualquier dígito numérico

2 FUNCIONAMIENTO

El contador consta de dos pulsadores, uno que es para


el seteo y el otro que es para el inicio, el programa nos
permite elegir entre dos secuencias de conteo, ya sea
de ascendente o descendente.

3 CONCLUSION

El laboratorio pudimos ver cómo funciona un pic y


que puede cumplir diferentes funciones de acuerdo
a las necesidades del programador.

4 RECOMENDACIONES
Figura 4 display
1. Se recomienda tener todos los materiales
4.5 CI 4049 previstos y materiales extras, porque en el
proceso de armando siempre encontramos
El CD4049UBD es un inversor CMOS Hex Buffer / fallas q pueden quemar nuestros materiales
Converter que cuenta con conversión de nivel lógico 2. Se recomienda primeramente realizar el circuito
usando solo un voltaje de suministro (VCC). El nivel alto en un simulador y seguidamente en físico para
de señal de entrada (VIH) puede exceder el voltaje de no errar en la implementación del circuito.
suministro de VCC cuando este dispositivo se usa para
conversiones de nivel lógico. Este dispositivo está
diseñado para usar como CMOS a un convertidor DTL /
TTL y puede conducir directamente dos cargas DTL / 5 REFERENCIAS
TTL. El CD4049UB se designa como reemplazos para
CD4009UB, respectivamente. Debido a que el
CD4049UB requiere solo una fuente de alimentación, es [1]http://www.alldatasheet.com/view.jsp?
Searchword=LM324&gclid=CjwKCAiA693RBRAwEiwALCc3
preferible a CD4009UB y debe usarse en lugar del
u-ipDC_KwUUu3Ge76RVvx2mt-
CD4009UB en todas las aplicaciones de conversión de 67vujdBsoVvTfTZFo6tkIqZJbnZrRoCef0QAvD_BwE
inversor, controlador actual o nivel lógico. [2] https://www.freepik.es/fotos-vectores-gratis/circuitos-
integrados [3]
Especificaciones [3] https://es.wikipedia.org/wiki/PIC16F84

- Tipo: CMOS
- Familia: CD4000
- Tipo dispositivo lógico: Buffer, Invertido
- Tensión de alimentación mínima: 3 V
- Tensión de alimentación máxima: 18 V
- Rango de temperatura de funcionamiento: -55 °
C a +125 ° C 6 ANEXO
- Encapsulado DIP
- 16 pines

3
6.1 SIMULACION (proteus)

A B C D E F G H J K

C1
0 0
x1
23uF

1
X1
1 2 CRYSTAL 1

C2
x2
A B C D E F G H J K
23uF
2 C1 2
0 0
x1
R1 23uF
10k

f
a
b

d
e

sb1
sb2
sb3
sb4
1 X1
3 reset 3
CRYSTAL
reset

1 1
2

C2
x2
23uF
4 U2:A 4
2 2
U1 3 2
b1 sb1
13 33
x1 OSC1/CLKIN RB0/INT a
x2
14
OSC2/CLKOUT RB1
34
b R1 4049
35
RB2 c
2 36 10k U2:B

f
a
b

d
e

sb1
sb2
sb3
sb4
RA0/AN0 RB3/PGM d
5 3 37 5
RA1/AN1 RB4 e
4
RA2/AN2/VREF-/CVREF RB5
383
f
reset b2
5 4
sb2
3
reset

5 39
RA3/AN3/VREF+ RB6/PGC g
6 40
RA4/T0CKI/C1OUT RB7/PGD h 4049
7
RA5/AN4/SS/C2OUT R2 R3
RC0/T1OSO/T1CKI
15 10k 10k U2:C
8 16
6 RE0/AN5/RD RC1/T1OSI/CCP2 6
9 17 7 6
10
RE1/AN6/WR RC2/CCP1 4
18
b3 sb3 U2:A 4
RE2/AN7/CS RC3/SCK/SCL seteo iniciar
RC4/SDI/SDA
23
seteo U1 4049 3 2
1 24 b1 sb1
reset MCLR/Vpp/THV RC5/SDO inicix1ar 13 33
OSC1/CLKIN RB0/INT a
RC6/TX/CK
25
x2
14
OSC2/CLKOUT RB1
34
b U2:D 4049
26 35
RC7/RX/DT RB2 c 9 10
7 195
2
RA0/AN0 RB3/PGM
36
d b4 sb4 7 U2:B 5
RD0/PSP0
20
b1 3
4
seteo
RA1/AN1 RB4 iniciar 37
38
e
5 4
RD1/PSP1 b2 RA2/AN2/VREF-/CVREF RB5 f 4049 b2 sb2
21 5 39
RD2/PSP2 b3 RA3/AN3/VREF+ RB6/PGC g
22 6 40
RD3/PSP3 b4 RA4/T0CKI/C1OUT RB7/PGD h 4049
RD4/PSP4
27 7
RA5/AN4/SS/C2OUT R2 R3
RD5/PSP5
28
RC0/T1OSO/T1CKI
15 10k 10k U2:C
8 29 8 16 8
RD6/PSP6 RE0/AN5/RD RC1/T1OSI/CCP2
306 9
RE1/AN6/WR RC2/CCP1
17
b3
7 6
sb3
6
RD7/PSP7
10 18
RE2/AN7/CS RC3/SCK/SCL seteo iniciar
PIC16F877A
1
RC4/SDI/SDA
23
24
seteo FILE NAME: contador 4 digitos.pdsprj DATE: 4049
reset MCLR/Vpp/THV RC5/SDO iniciar
25 25/10/2018 U2:D
RC6/TX/CK
RC7/RX/DT
26
DESIGN TITLE: contador 4 digitos.pdsprj
PAGE: 9 10
9 7 PATH: E:\xc8\contador 4 digitos.X\contador 4 digitos.pdsprj b4 9 sb4 7
RD0/PSP0
19
20
b1 seteo iniciar 1 of 1
RD1/PSP1 b2 BY: @AUTHOR REV:@REV TIME: 18:45:50 4049
21
RD2/PSP2 b3
A B C D E 22
RD3/PSP3 F b4 G H J K
27
RD4/PSP4
28
RD5/PSP5
8 29 8
RD6/PSP6
30
RD7/PSP7
PIC16F877A FILE NAME: contador 4 digitos.pdsprj DATE:

DESIGN TITLE: contador 4 digitos.pdsprj 25/10/2018


PAGE:
9 9
4 PATH: E:\xc8\contador 4 digitos.X\contador 4 digitos.pdsprj
1 of 1
BY: @AUTHOR REV:@REV TIME: 18:45:50
A B C D E F G H J K
9.2RESULTADOS DE LABORATORIO

5
6
6.1 DIAGRAMA DE FUJO

7
6.2 CODIGO FUENTE

8
[61] {
[1] /* [62] for (j=0;j<10000;j++)
[2] * File: contador 4d.c [63] disp_2d(j);
[3] * Author: Yeral Vilca [64] }
[4] * Created on 16 de octubre de 2018, 22:34 [65] void cont_dd(void)
[5] */ [66] {
[6] [67] for (j=9999;j>-1;j--)
[7] #include <xc.h> [68] disp_2d(j);
[8] #pragma config FOSC = HS,WDTE = OFF,PWRTE [69] }
= OFF,CP = OFF,LVP=OFF,BOREN=OFF [70] void disp_2d(int c)
[9] #define _XTAL_FREQ 10000000 [71] {
[10] #define b4 PORTDbits.RD0 [72] int j;
[11] #define b3 PORTDbits.RD1 [73] if(c== -1)
[12] #define b2 PORTDbits.RD2 [74] {
[13] #define b1 PORTDbits.RD3 [75] millar=10;
[14] #define SET PORTCbits.RC4 [76] centena=10;
[15] #define INI PORTCbits.RC5 [77] decena=10;
[16] int [78] unidad=10;
bcd[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0xfc,0x07, [79] }
0xff,0x67,0x77,0x5e}; [80] else if(c == -2)
[17] int unidad,decena,centena, millar,c,j; [81] {
[18] int num; [82] millar=11;
[19] int AA=-1; [83] centena=11;
[20] int dd=-2; [84] decena=11;
[21] void disp_2d(int c); [85] unidad=11;
[22] void disp_2df(int c); [86] }
[23] void cont_AA(void); [87] else if(c>=0)
[24] void cont_dd(void); [88] {
[25] //--- Main Program --- [89] millar=(c/1000)%10;
[26] void main(void) [90] centena=(c/100)%10;
[27] { [91] decena=(c/10)%10;
[28] TRISA=0; [92] unidad=c%10;
[29] TRISB=0; [93] }
[30] TRISD=0; [94] else
[31] TRISE=0X80; [95] {}
[32] ADCON1=0X06; // puertos digitales [96] for (j=0;j<5u;j++)
[33] [97] {
[34] c=1; [98] PORTB=bcd[unidad];
[35] num=dd; [99] b1=1;
[36] while(1) [100] __delay_ms(5);
[37] { [101] b1=0;
[38] disp_2d(num); [102] PORTB=bcd[decena];
[39] if(SET==0) [103] b2=1;
[40] { [104] __delay_ms(5);
[41] c++; [105] b2=0;
[42] while(SET !=1); [106] PORTB=bcd[centena];
[43] if(c%2 ==0) [107] b3=1;
[44] num = AA; [108] __delay_ms(5);
[45] else if(c%2 !=0) [109] b3=0;
[46] num=dd; [110] PORTB=bcd[millar];
[47] disp_2d(num); [111] b4=1;
[48] } [112] __delay_ms(5);
[49] else if(INI==0) [113] b4=0;
[50] { [114] }
[51] while(INI !=1); }
[52] if(num==AA)
[53] cont_AA();
[54] else
[55] cont_dd();
[56] }
[57] }
[58] return;
[59] }
[60] void cont_AA(void)

S-ar putea să vă placă și