Académique Documents
Professionnel Documents
Culture Documents
RESUMEN:
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
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.
Figura 3 crystal
2
Es una forma de representar números en equipos temperatura de funcionamiento: -55 ° C a +125
electrónicos. Está compuesto de siete segmentos que °C
Se pueden encender o apagar individualmente. Cada - Encapsulado DIP
segmento tiene la forma de una pequeña línea. Es un - 16 pines
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
separado consiguiendo formar cualquier dígito numérico
Figura 5 CI 4049
2 FUNCIONAMIENTO
El CD4049UBD es un inversor CMOS Hex Buffer / El laboratorio pudimos ver cómo funciona un pic y
Converter que cuenta con conversión de nivel lógico que puede cumplir diferentes funciones de acuerdo
usando solo un voltaje de suministro (VCC). El nivel alto a las necesidades del programador.
de señal de entrada (VIH) puede exceder el voltaje de
suministro de VCC cuando este dispositivo se usa para 4 RECOMENDACIONES
conversiones de nivel lógico. Este dispositivo está
diseñado para usar como CMOS a un convertidor DTL / 1. Se recomienda tener todos los materiales
TTL y puede conducir directamente dos cargas DTL / previstos y materiales extras, porque en el
TTL. El CD4049UB se designa como reemplazos para proceso de armando siempre encontramos
CD4009UB, respectivamente. Debido a que el fallas q pueden quemar nuestros materiales
CD4049UB requiere solo una fuente de alimentación, es 2. Se recomienda primeramente realizar el circuito
preferible a CD4009UB y debe usarse en lugar del en un simulador y seguidamente en físico para
CD4009UB en todas las aplicaciones de conversión de no errar en la implementación del circuito.
inversor, controlador actual o nivel lógico.
Especificaciones 5 REFERENCIAS
- Tipo: CMOS
- Familia: CD4000 [1]http://www.alldatasheet.com/view.jsp?
- Tipo dispositivo lógico: Buffer, Invertido Searchword=LM324&gclid=CjwKCAiA693RBRAwEiwALCc3
u-ipDC_KwUUu3Ge76RVvx2mt-
- Tensión de alimentación mínima: 3 V 67vujdBsoVvTfTZFo6tkIqZJbnZrRoCef0QAvD_BwE
- Tensión de alimentación máxima: 18 V [2] https://www.freepik.es/fotos-vectores-gratis/circuitos-
- Rang integrados [3]
o de [3] https://es.wikipedia.org/wiki/PIC16F84
3
6 ANEXO
A B C D E F G H J K
0 0
1 SET R1
1
10k
R2
2 2
10k
INIT
3 U1 3
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
4 5
RA3/AN3/VREF+ RB6/PGC
39 U2:D 4
6 40
RA4/T0CKI/C1OUT RB7/PGD
7 9 10
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8
RE0/AN5/RD RC1/T1OSI/CCP2
16 U2:C4049
9 17
RE1/AN6/WR RC2/CCP1
10 18 7 6
RE2/AN7/CS RC3/SCK/SCL
5 R3 23 U2:A 5
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO 4049
10k 25 3 2
RC6/TX/CK
26
RC7/RX/DT
U2:B
4049
19
RD0/PSP0
20 5 4
6 RD1/PSP1 6
21
RD2/PSP2
22
RD3/PSP3 4049
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
7 PIC16F877A
7
8 8
22/10/2018
DESIGN TITLE: Conta877a.pdsprj
PAGE:
9 PATH: E:\SISTEMAS\4DIG.X\Conta877a.pdsprj 1 of 1 9
0 0
1 SET R1
1
10k
R2
2 2
10k
INIT
3
U1 3
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
4 5
RA3/AN3/VREF+ RB6/PGC
39 U2:D 4
6 40
RA4/T0CKI/C1OUT RB7/PGD
7 9 10
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8
RE0/AN5/RD RC1/T1OSI/CCP2
16 U2:C4049
9 17
RE1/AN6/WR RC2/CCP1
10 18 7 6
RE2/AN7/CS RC3/SCK/SCL
5 R3 23 U2:A 5
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO 4049
10k 25 3 2
RC6/TX/CK
26
RC7/RX/DT
U2:B
4049
19
RD0/PSP0
20 5 4
6 RD1/PSP1 6
21
RD2/PSP2
22
RD3/PSP3 4049
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
7 PIC16F877A
7
8 8
22/10/2018
DESIGN TITLE: Conta877a.pdsprj
PAGE:
9 PATH: E:\SISTEMAS\4DIG.X\Conta877a.pdsprj 1 of 1 9
5
BY: @AUTHOR REV:@REV TIME: 03:37:05 p.m.
A B C D E F G H J K
9.2RESULTADOS DE LABORATORIO
6
6.1
DIAGRAMA
DE FUJO
7
[27] int sw;
[28] c=1;
[29] num=dd;
[30] while(1)
[31] {
[32] disp_2df(num);
[33] if(SET==0)
[34] {
[35] c++;
[36] while(SET !=1);
[37] if(c%2 ==0)
[38] num = AA;
[39] else if(c%2 !=0)
[40] num=dd;
[41] disp_2df(num);
[42] }
[43] else if(INI==0)
[44] {
[45] while(INI !=1);
[46] if(num==AA)
[47] cont_AA();
[48] else
[49] cont_dd();
[50] }
[51] }
[52] return;
[53] }
[54] void cont_AA(void)
[55] {
[56] for (j=0;j<10000;j++) //mil
[57] disp_2d(j);
[58] }
[59] void cont_dd(void)
[60] {
[61] for (j=9999;j>-1;j--) //nueve m
[62] disp_2d(j);
[63] }
[64] void disp_2d(int c)
[65] {
[66] int j;
6.2 CODIGO FUENTE [67] if(c== -1)
[68] {
[69] millar=10;
[1] #include <xc.h> [70] centena=10;
[2] #pragma config FOSC = HS,WDTE = OFF,PWRTE = [71] decena=10;
OFF,CP = OFF,LVP=OFF,BOREN=OFF [72] unidad=10;
[3] #define _XTAL_FREQ 8000000 [73] }
[4] #define b1 PORTDbits.RD0 [74] else if(c == -2)
[5] #define b2 PORTDbits.RD1 [75] {
[6] #define b3 PORTDbits.RD2 [76] millar=11;
[7] #define b4 PORTDbits.RD3 [77] centena=11;
[8] #define SET PORTDbits.RD4 [78] decena=11;
[9] #define INI PORTDbits.RD5 [79] unidad=11;
[10] int [80] }
bcd[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0xfc,0x07,0xff,0x [81] else if(c>=0)
67,0x77,0x5e}; [82] {
[11] int unidad,decena,centena,millar,a,s,d,c,j; [83]
[12] int num; [84] unidad=c%10; // modulo o resto de una div.
[13] int AA=-1; [85] a=c/10;
[14] int dd=-2; [86] decena=a%10;
[15] void disp_2d(int c); [87] s=a/10;
[16] void disp_2df(int c); [88] centena=s%10;
[17] void cont_AA(void); [89] d=s/10;
[18] void cont_dd(void); [90] millar=d;
[19] //--- Main Program --- [91] }
[20] void main(void) [92] else
[21] { [93] {}
[22] TRISA=0; [94] for (j=0;j<20;j++)
[23] TRISB=0; [95] {
[24] TRISD=0; [96] PORTB=bcd[unidad];
[25] TRISE=0X80; [97] b1=1;
[26] ADCON1=0X06; // puertos digitales [98] __delay_ms(5);
8
[99] b1=0;
[100] PORTB=bcd[decena];
[101] b2=1;
[102] __delay_ms(5);
[103] b2=0;
[104] PORTB=bcd[centena];
[105] b3=1;
[106] __delay_ms(5);
[107] b3=0;
[108] PORTB=bcd[millar];
[109] b4=1;
[110] __delay_ms(5);
[111] b4=0;
[112]
[113] }
[114]}
[115]void disp_2df(int c)
[116]{
[117] int j;
[118] if(c== -1)
[119] {
[120]
[121] millar=10;
[122] centena=10;
[123] decena=10;
[124] unidad=10;
[125] }
[126] else if(c == -2)
[127] {
[128] millar=11;
[129] centena=11;
[130] decena=11;
[131] unidad=11;
[132] }
[133] else if(c>=0)
[134] {
[135] decena=c/10; // división entera
[136] unidad=c%10; // modulo o resto de una div.
[137] }
[138] else
[139] {}
[140] for (j=0;j<2;j++)
[141] {
[142] PORTB=bcd[unidad];
[143] b1=1;
[144] __delay_ms(5);
[145] b1=0;
[146] PORTB=bcd[decena];
[147] b2=1;
[148] __delay_ms(5);
[149] b2=0;
[150] PORTB=bcd[centena];
[151] b3=1;
[152] __delay_ms(5);
[153] b3=0;
[154] PORTB=bcd[millar];
[155] b4=1;
[156] __delay_ms(5);
[157] b4=0;
[158]
[159] }
[160]}