Download - Unidad 2 Lenguaje de Interfaces
Unidad 2: Programación básica.
Gabriela Abilene Ayala Salazar
Tania Indira Campos de Hoyos
María Guadalupe Montañez de la Rosa
Stefani Guadalupe Zavala García
Integrantes del Grupo
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 2 de 35
Tabla de contenido
Práctica 1: Parpadeo de un led. ........................................................................................................ 5
Práctica 2: Secuencia de led intermitente: ....................................................................................... 7
Práctica 3: Ida y vuelta en una secuencia de Leds: ....................................................................... 11
Práctica 4: Encendido de un led mediante un botón de presión. ................................................. 15
Práctica 5: Botón de presión de cuatro estados. ........................................................................... 19
Práctica 6: Interruptor en escalera: ................................................................................................ 23
Práctica 7: Contador de 0 a 9 con display de 7 segmentos: ......................................................... 25
Práctica 8: contador de pulsaciones de 00 a 99............................................................................. 28
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 3 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 4 de 35
Unidad 2: Programación Básica.
Programación de pic 16f887:
Durante esta unidad, la materia se enfoca en la introducción a la programación de microcircuitos que
permitan el diseño y la implementación de interfaces que favorezcan la relación hombre-máquina, para la
optimización de un sistema. En esta la unidad número 2 se nos dio a conocer las principales instrucciones
y funciones de un lenguaje ensamblador, la forma en que un programa debe de estar estructurado y los
parámetros que se deben de tomar en cuenta, con el desarrollo de 10 prácticas sencillas pero básicas.
A continuación se presentará un reporte detallado de estas 10 prácticas, que se realizaron en la
segunda unidad de lenguajes de interfaces, especificando los objetivos de las mismas, así como la lista de
materiales, la solución en código y la demostración de resultados en forma de fotografías, anexo a este
documento podrán encontrar la simulación de cada circuito, hecha en el software proteus, y los videos que
evidencian su realización.
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 5 de 35
Práctica 1: Parpadeo de un led.
Objetivo:
Crear un programa que haga encender y apagar un led ininterrumpidamente.
Lista de material:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Led
- Pic 16f887
- Resistencia de por lo menos 330 ohms
- Batería de 9 volts
- Regulador a 5 volts
Solución mediante programa:
#include<16F887.h>
#use delay(clock=40000)
Void main()
{
Set_tris_a(0);
while(true)
{
Output_high(pin_a0);
delay_ms(5000);
Output_low(pia_a0);
delay_ms(5000);
}
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 6 de 35
Demostración de resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 7 de 35
Práctica 2: Secuencia de led intermitente:
Objetivo:
Crear un programa que al tener 8 leds, enciendan 4, se apaguen y enciendan los otros cuatro,
colocados intercaladamente, usando el pic 16f887.
Lista de material:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Leds
- Pic 16f887
- Resistencia de por lo menos 330 ohms
- Batería de 9 volts
- Regulador a 5 volts
Solución mediante programa:
#include<16F887.h>
#use delay(clock=40000000)
Void main()
{
Set_tris_a(0);
set_tris_b(0);
while(true)
{
Output_high(pin_a0);
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 8 de 35
output_high(pin_a2);
output_high(pin_a4);
output_high(pin_b0);
delay_ms(50000);
Output_low(pin_a0);
output_low(pin_a2);
output_low(pin_a4);
output_low(pin_b0);
delay_ms(50000);
Output_high(pin_a1);
output_high(pin_a3);
output_high(pin_a5);
output_high(pin_b1);
delay_ms(50000);
Output_low(pin_a1);
output_low(pin_a3);
output_low(pin_a5);
output_low(pin_b1);
delay_ms(50000);
}
}
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 9 de 35
Demostración de resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 10 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 11 de 35
Práctica 3: Ida y vuelta en una secuencia de Leds:
Objetivo:
Escribir un programa que realice una secuencia de ida y vuelta con 8 leds utilizando el pic 16f887. El
primer led se enciende, se apaga y enciende el siguiente, se apaga el segundo y enciende el tercero, y así
hasta llegar al último led, y del último led hacer lo mismo de reversa.
Lista de material:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Leds
- Pic 16f887
- Resistencia de por lo menos 330 ohms
- Batería de 9 volts
- Regulador a 5 volts
Solución mediante programa:
#include<16f887.h>
#byte pb=0x6
#use delay(clock=4000000)
void moverizq()
{
long x;
for(x=1;x<=128;x*=2)
{
pb=x;
delay_ms(1000);
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 12 de 35
}
}
void moverder()
{
long x;
for(x=64;x>=2;x/=2)
{
pb=x;
delay_ms(1000);
}
}
void main()
{
set_tris_b(0);
while(true)
{
moverizq();
moverder();
}
}
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 13 de 35
Demostración de resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 14 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 15 de 35
Práctica 4: Encendido de un led mediante un botón de presión.
Objetivo:
Crear un programa que permita el encendido de un solo led mediante un botón de presión.
Lista de materiales:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Led
- Pic 16f887
- Batería de 9 volts
- Regulador a 5 volts
- Botón de presión.
Solución mediante programa en C:
#include<16f887.h>
#use delay(clock=40000)
void main()
{
set_tris_b(1);
while (true)
{
if(input(pin_b0)==1)
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 16 de 35
{
output_low(pin_b1);
}
else
{
output_high(pin_b1);
}
}
}
Demostración de Resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 17 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 18 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 19 de 35
Práctica 5: Botón de presión de cuatro estados.
Objetivo:
Crear un programa que permita el encendido de una serie de leds de la siguiente manera:
Cuando oprimamos 1 vez se prende el primer led, la segunda vez se apaga el primero y enciende el segundo, la tercera vez apaga el segundo enciende el tercero, la cuarta vez se apagan todos y comienza de nuevo el ciclo.
Lista de materiales:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Leds
- Pic 16f887
- Batería de 9 volts
- Regulador a 5 volts
- Botón de presión.
Solución mediante programa en C:
#include<16f887.h>
#byte pb=0x6
void main()
{set_tris_b(1);
pb=0;
int x= 0;
while(true)
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 20 de 35
{
if(input(pin_b0)==1)
{
x++;
switch(x)
{
case 1: pb=1;x=0; break;
case 2: pb=3; break;
case 3: pb=5; break;
case 4: pb=9;x=0; break;
}
while(input(pin_b0)==1);
}
}
}
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 21 de 35
Demostración de Resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 22 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 23 de 35
Práctica 6: Interruptor en escalera:
Objetivo:
Crear un programa que permita el encendido de un led usando dos switches, de manera que al activar uno el led encienda, pero al estar los dos activados el led permanezca apagado.
Lista de materiales:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Led
- Pic 16f887
- Batería de 9 volts
- Regulador a 5 volts
- Switch
Solución mediante programa en C:
#include<16f887.h>
#use delay(clock=4000000)
//#byte pa=0x01
void main()
{
set_tris_a(0x01);
while(true)
{
if((input(pin_a0) && !input(pin_a1)) || (!input(pin_a0) && input(pin_a1)))
{
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 24 de 35
output_high(pin_a2);
}
else if (input(pin_a0)&& input (pin_a1))
{
output_low(pin_a2);
}
else
{ output_low(pin_a2);}
}
}
Demostración de Resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 25 de 35
Práctica 7: Contador de 0 a 9 con display de 7 segmentos:
Objetivo:
Crear un programa que cuente de 0 a 9 en intervalos de un segundo y muestre los números en un display de 7 segmentos. Y como extra que cada medio segundo encienda el punto del display.
Lista de materiales:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Pic 16f887
- Batería de 9 volts
- Regulador a 5 volts
- Display de 7 segmentos
Solución mediante programa en C:
#include<16f887.h>
#use delay(clock=4000000)
void main()
{
int mostrar2[]=
{0b10111111,0b10000110,0b11011011,0b11001111,0b11100110,0b11101101,0b11111101,0b10000111,
0b11111111,0b11101111};
int numero2=0;
int i = 0;
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 26 de 35
set_tris_d(0x00);
do
{
i=0;
numero2=0;
while(i <= 9)
{
output_d(mostrar[numero2]);
delay_ms(500);
output_d(mostrar2[numero2]);
delay_ms(500);
i++;
numero2++;
}
}
while(true);
}
Demostración de Resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 27 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 28 de 35
Práctica 8: contador de pulsaciones de 00 a 99.
Objetivo:
Crear un programa que cuente de 00 a 99 con la pulsación de un botón de presión. Una pulsación por cada número.
Lista de materiales:
- Protoboard
- Cables de cobre para puentes y demás conexiones
- Pic 16f887
- Batería de 9 volts
- Regulador a 5 volts
- Dos display de 7 segmentos
- Botón de presión
Solución mediante programa en C:
#include<16f887.h>
#use delay(clock=4000000)
void main()
{
int
mostrar[]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0
b00000111,0b01111111,0b01101111};
int numero1 = 0;
int numero2 =0;
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 29 de 35
int i = 0;
set_tris_c(0x00);
set_tris_d(0x00);
set_tris_b(0x01);
//output_b(0x00);
while(true)
{
i=0;
numero1=0;
numero2=0;
while(i <= 99)
{
if (input(pin_b0)==1)
{
if(i == 10)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 30 de 35
}
else if(i == 20)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
else if(i == 30)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
else if(i == 40)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
else if(i == 50)
{
numero1++;
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 31 de 35
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
else if(i == 60)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
else if(i == 70)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
else if(i == 80)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 32 de 35
else if(i == 90)
{
numero1++;
numero2=0;
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
else
{
output_c(mostrar[numero1]);
output_d(mostrar[numero2]);
}
delay_ms(500);
i++;
numero2++;
}
}
while(input(pin_b0)==1);
}
}
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 33 de 35
Demostración de Resultados:
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 34 de 35
ITESRC
UNIDAD 2 LENGUAJE DE INTERFACES
ITESRC Página 35 de 35
Ingeniería en Sistemas Computacionales; Lenguaje de
interfaces, Grupo 6.1 G Ing. Héctor Padilla.