LABORATORIO N° 03
Alumno(s) Nota
Grupo
Ciclo 4C5 Electrónica y Automatización – Microcontroladores
Fecha de entrega
PENSAMIENTO DE LA SEMANA:
I. CAPACIDAD TERMINAL
Utilizar al microcontrolador en aplicaciones de control electrónico.
Desarrollar y ejecutar programas en un microcontrolador PIC
Programar y configurar interfaces básicas del microcontrolador.
IV. RESULTADOS
Diseñan y optimizan sistemas y procesos para cumplir con las condiciones establecidas y
gestionando adecuadamente los recursos materiales y humanos.
V. MATERIALES Y EQUIPO
CCS Compiler instalado.
Entrenador de PICS
PIC16F877A
Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
PC con Software de simulación.
PULSADORES
+5V
1 D0
PIC16F877A U6
1 D1 RV1 U1
1 E0
20MHz 13
14
OSC1/CLKIN RB0/INT
33
34
A3
U2
A3 OSC2/CLKOUT RB1
1
88%
E2 10k 35 NOT
RB2
2 36 A2
A0 RA0/AN0 RB3/PGM U3
3 37
A1 RA1/AN1 RB4
POTENCIOMETRO A2
4
RA2/AN2/VREF-/CVREF RB5
38 NOT
5 39 A1
A3 RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7 NOT
SENSOR TEMP. RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
U5 8 16
E0 RE0/AN5/RD RC1/T1OSI/CCP2
9 17
3 RE1/AN6/WR RC2/CCP1
VCC 10 18
27.0 2 E2 RE2/AN7/CS RC3/SCK/SCL
DQ
1 RC4/SDI/SDA
23 ? C0
LEDS INDICADORES
GND 1 24
MCLR/Vpp/THV RC5/SDO
DS18B20 RC6/TX/CK
25
26
? C1
RC7/RX/DT
19
? C2
RD0/PSP0 D0
LS1 RD1/PSP1
20
21
D1 ? C3
1
RD2/PSP2
RD3/PSP3
22
27
? C4
PIEZO RD4/PSP4
RESET RD5/PSP5
28
29
? C5
RD6/PSP6
SOUNDER
RD7/PSP7
30 ? C6
PIC16F877A ? C7
PANTALLA LCD
LCD1
LM016L
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A0
int tabBCD[10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,
0b01101101,0b01111101,0b00000111,0b01111111,0b01101111};
int delay=5; // Completar con valor de retardo adecuado en ms
int16 dato=0; // Declaramos una variable ENTERA de 16 bits
int16 unidades=0, decenas=0, centenas=0;
/******************************************************/
// Funcion que descompone un número Entero de 4 cifras
/******************************************************/
void descomp_entero(int16 valor)
{
centenas = (int16) valor / 100; // 1er Dígito o Centenas
valor -= centenas * 100; // y se lo resto al valor
decenas = (int16) valor / 10; // 2do Dígito o Decenas
valor -= decenas * 10; // y también se lo resto
unidades = (int16) valor; // y por último solo me quedan las unidades
}
/*************************************************/
// Funcion para displayar en forma multiplexada
/************************************************/
void visualizar(void)
{
Nro.
LABORATORIO MICROCONTROLADORES Página 3 de 4
output_b(tabBCD[centenas]);
output_a(0b00001000);
delay_ms(delay);
output_b(tabBCD[decenas]);
output_a(0b00000100);
delay_ms(delay);
output_b(tabBCD[unidades]);
output_a(0b00000010);
delay_ms(delay);
}
/*************************************************/
// Funcion para emitir un pitido
/************************************************/
void BIP()
{
FOR (i=0;i<=100;++i)
{
output_high(PIN_E1); // Pone a "1" el pin E1 (envía 5 voltios)
delay_ms(1); // "Congela el tiempo" durante 1ms
output_low(PIN_E1); // Pone a "0" el pin E1
delay_ms(1); // "Congela el tiempo" durante 1ms
}
}
/*************************************************/
// FUNCION PRINCIPAL VOID (MAIN)
/************************************************/
void main ()
{
dato = 123; // ingrese numero inicial a visualizar
descomp_entero(dato);
visualizar(); // mostramos el valor de "dato" en displays
while(1)
{
IF (!input(PIN_E0)) // si pulsamos E0.....
{
dato = dato + 1; // el valor "dato" se incrementa en uno
descomp_entero(dato); // descomponemos el valor "dato"
delay_ms(300); // congelamos el tiempo para evitar falsos disparos
}
1. Se tiene un sistema con 2 pulsadores (D0, D1) de entrada y 3 displays de salida, además de
un zumbador en el pin E1. Programe según lo siguiente:
a. Al empezar el programa, se debe mostrar el número 500.
b. Al presionar D0, el número mostrado se debe incrementar en 5 unidades, además debe
zonar un pitido.
c. Al presionar D1, el número mostrado debe disminuir 5 unidades pero de de 1 en 1 cada
segundo.
Nro.
LABORATORIO MICROCONTROLADORES Página 4 de 4
XII. RESÚMEN
Programación de los displays de 7 segmentos