Sunteți pe pagina 1din 26

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO

Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

INSTITUTO TECNOLOGICO SUPERIOR


DE ALVARADO, VER.

INGENIERA EN SISTEMAS
COMPUTACIONALES
Materia:
Dispositivos programables

Semestre-Grupo:
7A

Producto Acadmico:
REPORTE DE PRCTICA

Tema:
Programar un men con un modulo LCD

Presentan:
Jos ngel Rosas Escobedo
Arcadio Patraca
Nancy Sandoval Fiscal
Fabiola Romero Chvez

Docente:
ING: Roberto Pealoza
H. Y G. ALVARADO, VER. 20 DIC de 2014

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

INTRODUCCION
Los PIC son una familia de microcontroladores tipo RISC fabricados
por Microchip Technology Inc. y derivados del PIC1650, originalmente
desarrollado por la divisin de microelectrnica de General Instrument.
El nombre actual no es un acrnimo. En realidad, el nombre completo
es PICmicro, aunque generalmente se utiliza
como Peripheral Interface Controller (controlador de interfaz perifrico).
El PIC original se dise para ser usado con la nueva CPU de
16 bits CP16000. Siendo en general una buena CPU, sta tena malas
prestaciones de entrada y salida, y el PIC de 8 bits se desarroll en 1975
para mejorar el rendimiento del sistema quitando peso de E/S a la CPU.
El PIC utilizaba microcdigo simple almacenado en ROM para realizar
estas tareas; y aunque el trmino no se usaba por aquel entonces, se
trata de un diseo RISC que ejecuta una instruccin cada
4ciclos del oscilador.

OBJETIVOS (COMPETENCIAS)
Utilizar con precisin la terminologa y simbologa de microcontroladores
e interfaces.
Acoplar dispositivos de visualizacin, sensores y actuadores a
microcontroladores
Programar microcontroladores.
Proponer aplicaciones de solucin mediante el diseo de interfaces de
hardware y software.

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

FUNDAMENTO
Juego de instrucciones y entorno de programacin

PIC usa un juego de instrucciones, cuyo nmero puede variar desde


35 para PIC de gama baja a 70 para los de gama alta. Las instrucciones
se clasifican entre las que realizan operaciones entre el acumulador y
una constante, entre el acumulador y una posicin de memoria,
instrucciones de condicionamiento y de salto/retorno, implementacin
de interrupciones y una para pasar a modo de bajo consumo
llamada sleep.
Microchip
proporciona
un entorno
de
desarrollo freeware llamado MPLAB que incluye un simulador software y
un ensamblador. Otras empresas desarrollan compiladores C y BASIC.
Microchip tambin vende compiladores para los PIC de gama alta ("C18"
para la serie F18 y "C30" para los dsPIC) y se puede descargar una
edicin para estudiantes del C18 que inhabilita algunas opciones
despus de un tiempo de evaluacin.
Para el lenguaje de programacin Pascal existe un compilador
de cdigo
abierto, JAL,
lo
mismo
que PicForth para
el
lenguaje Forth. GPUTILS es una coleccin de herramientas distribuidas
bajo licencia GPL que incluye ensamblador y enlazador, y funciona
en Linux, MacOS y Microsoft Windows. GPSIM es otra herramienta libre
que permite simular diversos dispositivos hardware conectados al PIC.
Uno de los ms modernos y completos compiladores para lenguaje C
es [mikroC], que es un ambiente de desarrollo con editor de
texto, bibliotecas con mltiples funciones para todos los mdulos y
herramientas incorporadas para facilitar enormemente el proceso de
programacin.

Arquitectura central

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

La arquitectura del PIC es sumamente minimalista. Est caracterizada


por las siguientes prestaciones:
rea de cdigo y de datos separadas (Arquitectura Harvard).
Un reducido nmero de instrucciones de longitud fija.
Implementa segmentacin de tal modo que la mayora de
instrucciones duran 1 tiempo de instruccin (o 4 tiempos de reloj).
Pueden haber instrucciones de dos tiempos de instruccin (saltos,
llamadas y retornos de subrutinas y otras) o inclusive con ms tiempo de
instruccin en PIC de gama alta. Esto implica que el rendimiento real de
instrucciones por segundo del procesador es de al menos 1/4 de la
frecuencia del oscilador.
Un solo acumulador (W), cuyo uso (como operador de origen) es
implcito (no est especificado en la instruccin).
Todas las posiciones de la RAM funcionan como registros de origen y/o
de destino de operaciones matemticas y otras funciones.1
Una pila de hardware para almacenar instrucciones de regreso de
funciones.
Una relativamente pequea cantidad de espacio de datos
direccionable (tpicamente, 256 bytes), extensible a travs de
manipulacin de bancos de memoria.
El espacio de datos est relacionado con el CPU, puertos, y los registros
de los perifricos.
El contador de programa est tambin relacionado dentro del espacio
de datos, y es posible escribir en l (permitiendo saltos indirectos).
A diferencia de la mayora de otros CPU, no hay distincin entre los
espacios de memoria y los espacios de registros, ya que la RAM cumple
ambas funciones, y esta es normalmente referida como "archivo de
registros" o simplemente, registros.

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

Espacio de datos (RAM)


Los microcontroladores PIC tienen una serie de registros que funcionan
como una RAM de propsito general. Los registros de propsito
especfico para los recursos de hardware disponibles dentro del propio
chip tambin estn direccionados en la RAM. La direccionabilidad de la
memoria vara dependiendo de la lnea de dispositivos, y todos los
dispositivos PIC tienen algn tipo de mecanismo de manipulacin de
bancos de memoria que pueden ser usados para acceder memoria
externa o adicional. Las series ms recientes de dispositivos disponen de
funciones que pueden cubrir todo el espacio direccionable,
independientemente del banco de memoria seleccionado. En los
dispositivos anteriores, esto deba lograrse mediante el uso del
acumulador.
Para implementar direccionamiento indirecto, se usa un registro de
"seleccin de registro de archivo" (FSR) y uno de "registro indirecto"
(INDF): Un nmero de registro es escrito en el FSR, haciendo que las
lecturas o escrituras al INDF sern realmente hacia o desde el registro
apuntado por el FSR. Los dispositivos ms recientes extienden este
concepto con post y preincrementos/decrementos para mayor eficiencia
al acceder secuencialmente a la informacin almacenada. Esto permite
que se pueda tratar al FSR como un puntero de pila.
La memoria de datos externa no es directamente direccionable excepto
en algunos microcontroladores PIC 18 de gran cantidad de pines.

Tamao de palabra
El tamao de palabra de los microcontroladores PIC es fuente de muchas
confusiones. Todos los PIC (excepto los dsPIC) manejan datos en trozos
de 8 bits, con lo que se deberan llamar microcontroladores de 8 bits.
Pero a diferencia de la mayora de las CPU, el PIC usa arquitectura
Harvard, por lo que el tamao de las instrucciones puede ser distinto del
de la palabra de datos. De hecho, las diferentes familias de PIC usan
tamaos de instruccin distintos, lo que hace difcil comparar el tamao
del cdigo del PIC con el de otros microcontroladores. Por ejemplo, un
microcontrolador tiene 6144 bytes de memoria de programa: para un
PIC de 12 bits esto significa 4096 palabras y para uno de 16 bits, 3072
palabras.

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

Programacin del PIC


Para transferir el cdigo de un ordenador al PIC normalmente se usa un
dispositivo llamado programador. La mayora de PIC que Microchip
distribuye hoy en da incorporan ICSP (In Circuit Serial Programming,
programacin serie incorporada) o LVP (Low Voltage Programming,
programacin a bajo voltaje), lo que permite programar el PIC
directamente en el circuito destino. Para la ICSP se usan los pines RB6 y
RB7 (En algunos modelos pueden usarse otros pines como el GP0 y GP1
o el RA0 y RA1) como reloj y datos y el MCLR para activar el modo
programacin aplicando un voltaje de 13 voltios. Existen muchos
programadores de PIC, desde los ms simples que dejan al software los
detalles de comunicaciones, a los ms complejos, que pueden verificar
el dispositivo a diversas tensiones de alimentacin e implementan en
hardware casi todas las funcionalidades. Muchos de estos
programadores complejos incluyen ellos mismos PIC preprogramados
como interfaz para enviar las rdenes al PIC que se desea programar.
Uno de los programadores ms simples es el TE20, que utiliza la lnea TX
del puerto RS232 como alimentacin y las lneas DTR y CTS para mandar
o recibir datos cuando el microcontrolador est en modo programacin.
El software de programacin puede ser el ICprog, muy comn entre la
gente que utiliza este tipo de microcontroladores. Entornos de
programacin basados en intrpretes BASIC ponen al alcance de
cualquiera proyectos que parecieran ser ambiciosos.
Se
pueden
obtener
directamente
de
programadores /depuradores (octubre de 2005):

Microchip

muchos

Un buena recopilacin de herramientas de desarrollo para PIC puede


encontrarse Aqu. (Mayo de 2009).

Programadores

PICStart Plus (puerto serie y USB)

Promate II (puerto serie)

MPLAB PM3 (puerto serie y USB)

ICD2 (puerto serie y USB)

ICD3 (USB)

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

PICKit 1 (USB)

IC-Prog 1.06B

PICAT 1.25 (puerto USB2.0 para PIC y Atmel)

WinPic 800 (puerto paralelo, serie y USB)

PICKit 2 (USB)

PICKit 3 (USB)

Terusb1.0

Eclipse (PIC y AVR. USB)

MasterProg (USB)

Depuradores integrados

ICD (Serie)

ICD2 (Serie o full speed USB - 2 Mbits/s)

ICD3 (High speed USB - 480 Mbits/s)

Emuladores

Proteus - ISIS

ICE2000 (puerto paralelo, convertidor a USB disponible)

ICE4000 (USB)

PIC EMU

ISEC

PIC CDlite

PIC Simulator

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

Crocodrile Clips

Caractersticas
Los PIC actuales vienen con una amplia gama de mejoras hardware
incorporadas:

Ncleos de CPU de 8/16 bits con Arquitectura Harvard modificada

Memoria Flash y ROM disponible desde 256 bytes a 256 kilobytes

Puertos de E/S (tpicamente 0 a 5.5 voltios)

Temporizadores de 8/16/32 bits

Tecnologa Nanowatt para modos de control de energa

Perifricos serie sncronos y asncronos: USART, AUSART, EUSART

Conversores analgico/digital de 8-10-12 bits

Comparadores de tensin

Mdulos de captura y comparacin PWM

Controladores LCD

Perifrico MSSP para comunicaciones IC, SPI, y IS

Memoria EEPROM interna con duracin de hasta un milln de


ciclos de lectura/escritura

Perifricos de control de motores

Soporte de interfaz USB

Soporte de controlador Ethernet

Soporte de controlador CAN

Soporte de controlador LIN

Soporte de controlador Irda

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

Variaciones del PIC


PIC modernos
Los viejos PIC con memoria PROM o EPROM se estn renovando
gradualmente por chips con memoria Flash. As mismo, el juego de
instrucciones original de 12 bits del PIC1650 y sus descendientes
directos ha sido suplantado por juegos de instrucciones de 14 y 16 bits.
Microchip todava vende versiones PROM y EPROM de la mayora de los
PIC para soporte de aplicaciones antiguas o grandes pedidos.
Se pueden considerar tres grandes gamas de MCU PIC en la actualidad:
Los bsicos (Linebase), los de medio rango (Mid Range) y los de alto
desempeo (high performance). Los PIC18 son considerandos de alto
desempeo y tienen entre sus miembros a PIC con mdulos de
comunicacin y protocolos avanzados (USB, Ethernet, Zigbee por
ejemplo).

Clones del PIC


Por todos lados surgen compaas que ofrecen versiones del PIC ms
baratas o mejoradas. La mayora suelen desaparecer rpidamente. Una
de ellas que va perdurando es Ubicom (antiguamente Scenix) que
vende clones del PIC que funcionan mucho ms rpido que el
original. OpenCores tiene un ncleo del PIC16F84 escrito en Verilog.

PIC inalmbricos
El microcontrolador rfPIC integra todas las prestaciones del PICmicro de
Microchip con la capacidad de comunicacininalmbrica UHF para
aplicaciones RF de baja potencia. Estos dispositivos ofrecen un diseo
muy comprimido para ajustarse a los cada vez ms demandados
requerimientos de miniaturizacin en aparatos electrnicos. Aun as, no
parecen tener mucha salida en el mercado.

PIC para procesado de seal (dsPIC)

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

Los dsPIC son el penltimo lanzamiento de Microchip, comenzando a


producirlos a gran escala a finales de 2004. Son los primeros PIC con bus
de datos inherente de 16 bits. Incorporan todas las posibilidades de los
anteriores PIC y aaden varias operaciones de DSP implementadas en
hardware, como multiplicacin con suma de acumulador (multiplyaccumulate, o MAC), barrel shifting, bit reversion o multiplicacin 16x16
bits.

PIC de 32 bits (PIC32)


Microchip Technology lanz en noviembre de 2007 los nuevos
microcontroladores de 32 bits con una velocidad de procesamiento de
hasta 1.6 DMIPS/MHz con capacidad HOST USB. Sus frecuencias de reloj
pueden alcanzar los 80MHz a partir de cuarzos estndares de 4 a 5MHz
gracias a un PLL interno. Funcionan a 3.3V en sus puertos de entrada y
salida, aunque el fabricante indica que salvo en los pines con funcin
analgica, en la mayora se toleran tensiones de hasta 5V. Disponen de
una arquitectura optimizada con alto grado de paralelismo y ncleo de
tipo M4K y una elevada capacidad de memoria RAM y FLASH ROM. Todo
ello hace que estos MCUs permiten un elevado procesamiento de
informacin.

PIC ms comnmente usados


PIC12C508/509 (Encapsulamiento reducido de 8 pines, oscilador interno,
popular en pequeos diseos como el iPod remote).

PIC12F629/675

PIC16F84 (Considerado obsoleto, pero imposible de descartar y


muy popular)

PIC16F84A (Actualizacin del anterior, la A indica que cuenta con


mdulos de comparacin A/D, algunas versiones funcionan a 20 MHz,
compatible 1:1)

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

PIC16F628A/648A (Opciones tpicas para migrar o actualizar desde


diseos antiguos hechos con el PIC16F84A. Poseen mdulos de
comparacin A/D, Capture & Compare CCP (PWM), comunicacin en
serie USART y oscilador interno, entre otras mejoras)

PIC16F88 (Nuevo sustituto del PIC16F84A y superior al PIC16F648A


con ms memoria, oscilador interno, USART, SSP, comparador y
convertidor A/D. Muy popular).

PIC16F87X/87XA ("Hermanos mayores" del PIC16F84/84A, con


cantidad de mejoras incluidas en hardware. Bastante comn en
proyectos de aficionados).

PIC16F886/887 (Nuevo sustituto del 16F876A y 16F877A con la


diferencia que ahora ya incluye oscilador interno, considerados los
ms cercanos a la familia 18F).

PIC16F193x (Nueva gama media de PIC optimizado y con mucha


RAM, ahora con 49 instrucciones frente al conjunto de 35 ms
comn).

PIC18F452

PIC18F2455 Con manejo de puerto USB 2.0

PIC18F2520/4520 Mltiples comparadores y convertidores A/D.

PIC18F2550/4550 Manejo de puertos USB 2.0 y muy verstil.

dsPIC30F2010

dsPIC30F3014

dsPIC30F3011

(Ideales

para

control

electrnico

de

motores

elctricos de induccin, control sobre audio, etc).

PIC32 (Nueva gama de PIC de 32 bits, los ms modernos son


compatibles con USB 2.0).

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

PIC en Internet
Se puede encontrar extensa informacin y documentacin sobre PIC
en Internet, principalmente por dos motivos:[cita requerida] el primero, porque
han sido muy usados para romper los sistemas de seguridad de varios
productos de consumo masivo (televisin paga, PlayStation, etc), lo que
atrae la atencin de los cracker; y segundo, porque el PIC16C84 fue uno
de los primeros microcontroladores fcilmente reprogramables para
aficionados. Hay muchos foros ylistas de correo dedicados al PIC, en los
que un usuario puede proponer sus dudas y recibir respuestas.

Monitorizacin y control va Internet


Con estos se pueden desarrollar sistemas sistemas SCADA, para adquirir
y enviar datos al puerto serial de un computador utilizando, por ejemplo,
transmisin UART y
el
protocolo RS232,
o
implementando
el
protocolo TCP/IP directamente para construir un sistema completamente
embebido.

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

EQUIPAMIENTO Y MATERIAL DE APOYO

Software
Programa pic c
compiler genera el
cdigo en c para
programar el pic
16f877a

Programa isis de
proteus donde
simularemos el
circuito elctrico

Programa US-burn de
steren el cual
utilizaremos para
grabar el pic 16f877A

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

Hardware

Resistencias de varios valores


Led blue

Diodo 22 p
Ponteciometro de 22k

Cristal de cuarzo de 4MHZ

switch pulsador

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Fuente de carga de 5 volts


LCD de 16 pin

Departamento de Ingeniera en
Sistemas Computacionales

Protoboart

Modulo

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas
Pic 600 dispocitivo para gravar pic

Departamento de Ingeniera en
Sistemas Computacionales
pic 16F877A

DESARROLLO DE LA PRACTICA

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

EJEMPLO 5
MENU-LCD
Realizado en Isis, un programa diseado para realizar circuitos
electrnicos y simularlos en funcionamiento real.
En este caso se realizo un men, utilizando una pantalla LCD y un
micro controlador que ser programado en el lenguaje de programacin

C con un programa llamado (ccs c).

A continuacin trataremos de explicar el cdigo que ocupamos


para programar el pic que utilizamos en el circuito anterior.

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas
#include <16f877A.h>

Departamento de Ingeniera en
Sistemas Computacionales

// se est incluyendo la librera del micro

controlador.

#fuses XT, NOWDT

// #fuses configura los fusibles // XT es la

configuracin del
oscilador para 4 Mhz. // NOWDT
deshabilita el Watch Dog Timer

#use delay (clock=4MHZ)


#include <lcd.c>

// declara la frecuencia del cristal a 4MHZ


// se est incluyendo la librera de la pantalla

LCD.

#include <tones.c>

// se est incluyendo la librera de tonos para la

bocina.

void main (){

// abrimos el mtodo void o programa principal

signed INT CUENTA=0;


// declaramos signed int la variable cuenta y la
iniciamos con 0. El signed se le pone por si a la variable se le asigna un valor negativo,
lo siga reconociendo como entero.
int subcuenta1=0;

// Declaramos entero la variablesubcuenta1 y la

iniciamos con 0.

int subcuenta2=0;

// Declaramos entero la variablesubcuenta2 y la

iniciamos con 0.

Int subcuenta3=0;

// Declaramos entero la variablesubcuenta3 y la

iniciamos con 0.

lcd_init();
while (true) {
If ((input (PIN_B0))

// iniciamos nuestro LCD


// Usamos un bucle de repeticin y lo declaramos verdadero para que
sea infinito
mientras se requiera
//
Usamos
un
if
condicional
le
decimos
que cuando la
==1) {
entrada del pin b0 sea == 1

Cuenta++;
delay_ms (1000);

// Increment cuenta en uno


// Le damos un retardo de 1 segundo

generate_tone (A_note [2], //100);


Que genere un tono de tipo A y le damos las
coordenadas 2-100

// //
Cerramos
Usamosel
unif if condicional le decimos que cuando la entrada

IF ((INPUT (PIN_B1)) ==1) {del pin b1 sea == 1


CUENTA--;

// Decremento cuenta en uno

delay_ms (1000);

// Le damos un retardo de 1 segundo


// Que genere un tono de tipo A y le damos las coordenadas 2100
// Cerramos el if

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

Generate tone (A_note [2], 100);


}
// Usamos un if condicional le preguntamos si cuenta es mayor
que 3

If (cuenta>3) {
Cuenta=0;

//

}
IF (CUENTA<0) {

Si se cumple Cuenta vale 0


// Cerramos el if

// Usamos un if condicional le preguntamos si cuenta es menor que 3

CUENTA=3;

//

Si se cumple Cuenta vale 3

// Cerramos el if

Switch (cuenta) {

// Abrimos un switch y le damos el valor de lo que

vale cuenta

Case 0:

// Empezamos el caso 0 del switch principal

lcd_gotoxy (1, 1);

// Damos las coordenadas del LCD, la columna 1 de la fila 1

Printf (lcd_putc,"
lcd_gotoxy (1, 2);
Printf (lcd_putc,"
break;

");
// Imprima
en las coordenadas anteriores una cadena vaca para borrar
antecedentes
// Damos las coordenadas del LCD, la columna 1 de la fila 2

");

// Imprima en las coordenadas anteriores una cadena vaca para borrar


antecedentes

case 1:

// Empezamos el caso 1 del switch principal

lcd_gotoxy(1,1);

// Le damos las coordenadas del LCD, la columna 1 de la


fila 1

Printf (lcd_putc,"opcion 1");


If ((input (pin_b2))

// Imprima en las coordenadas anteriores una cadena con


==1) la
{ palabra opcin 1

Subcuenta1++;
delay_ms(1000);
}
if (subcuenta1>1) {
subcuenta1=0;
}

// Abrimos un if y le decimos que cuando el pin b2 est en


1
// Subcuenta se incremente en 1
// Le damos un retardo de 1 segundo
// Cerramos el if
// Abrimos un if le preguntamos si subcuenta1 es mayor
que 1
// Subcuenta tomara el valor de cero

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas
switch (subcuenta1){

Departamento de Ingeniera en
Sistemas Computacionales

// Abrimos un switch anidado( subcuenta1)

dentro del caso 1 de


switch

case 0:

principal

// Empezamos el caso 0 del switch anidado dentro del caso1

del switch principal

output_low(pin_a1); // asignamos la salida del pin a2 como baja(0v) para


apagar el led que esta
conectado en ese pin

lcd_gotoxy(1,2);

// Damos las coordenadas columna 1 fila 2

printf(lcd_putc,"led 1 off"); // En las coordenadas anteriores imprima en el

LCD led 1 Apagado

break;
// Salimos el caso 0 del switch anidado(subcuenta1) dentro del caso1
del switch principal
case 1:

// CASO 1: DEL SWITCH ANIDADO(subcuenta1), DENTRO DEL CASO 1,

DEL SWITCH
PRINCIPAL

output_high(pin_a1); // asignamos la salida del pin a1 como alta(5v) para


encender el led que esta
conectado en ese pin

lcd_gotoxy(1,2);

// Damos las coordenadas columna 1 fila 2

printf(lcd_putc,"led 1 on "); // En las coordenadas anteriores imprima en el


LCD led 1 Encendido

break; // SALIDA del caso 1 DEL switch anidado(subcuenta1), dentro del caso 1,
del switch Principal
}

// cerramos switch subcuenta1

break;

// SALIDA del caso 1, del switch principal

case 2:

// Empezamos el caso 2, del switch principal

lcd_gotoxy(1,1);

// Damos las coordenadas del LCD, columna 1

de la fila 2

printf(lcd_putc,"opcion 2");

// Imprima en display lcd del puerto C las

coordenadas anteriores una


cadena con la palabra opcin 2

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas
if((input(pin_b2))==1){

Departamento de Ingeniera en
Sistemas Computacionales

// Abrimos un if y le decimos que cuando el pin

b2 est en 1

subcuenta2++;
delay_ms(1000);
}

// incremente subcuenta2 en 1
// damos un retardo de 1 segundo
// Cerramos el if

if(subcuenta2>1){

// Abrimos un if y preguntamos si subcuenta2 es

mayor que 1

subcuenta2=0;

// si subcuenta es mayor que 1 subcuenta

tomara el valor de 0

// Cerramos el if

switch(subcuenta2){

// Abrimos un switch anidado( subcuenta2) dentro del

caso 2 del primer switch

case 0: // Empezamos el caso 0 del switch anidado(subcuenta2) dentro del caso1


del switch principal
output_low(pin_a2);

// asignamos la salida del pin a2 como baja(0v) para

apagar
el led que esta conectado en ese pin

lcd_gotoxy(1,2);

// Damos las coordenadas del LCD, columna 1 de la fila 2

printf(lcd_putc,"led 2 off"); // Imprima en display lcd del puerto C las


coordenadas anteriores una
cadena con la palabra led 2 off

break;

//salimos el caso 0 del switch anidado(subcuenta2) dentro del caso2 del

switch principal

case 1: //Empezamos el caso 1 del switch anidado(subcuenta2) dentro del caso2


del switch principal
output_high(pin_a2); // Asignamos la salida del pin a2 como alta(5v) para
encender
el led que est conectado en ese pin

lcd_gotoxy(1,2);

// Damos las coordenadas del LCD, columna 1

de la fila 2

printf(lcd_putc,"led 2 on "); // Imprima en display lcd del puerto C las


coordenadas anteriores

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales
una cadena con la palabra led 2 on

break;

// Salimos el caso 1 del switch

anidado(subcuenta2) dentro del


caso2 del switch principal

// terminamos el switch subcuenta2

break;

// Salimos el caso 2, del switch principal

case 3:

// Empezamos el caso , del switch principal

lcd_gotoxy(1,1);

//Damos las coordenadas del LCD, columna 1 de

la fila 1

printf(lcd_putc,"opcion 3"); // Imprima en display lcd del puerto C las


coordenadas anteriores
una cadena con la palabra opcin 3

if((input(pin_b2))==1){

// Abrimos un if le decimos que si la entrada del

pin b2 es 1 (5v) pase


a la siguiente linea

subcuenta3++;

// subcuenta3 incrementamos en 1

delay_ms(1000);

// Damos un retardo de 1 segundo

// Terminamos el if

if(subcuenta3>1){

// Abrimos un if y preguntamos si subcuenta3 es

mayor que 1

subcuenta3=0;

//si se cumple la condicin anterior subcuenta tomara

el valor de 0.

// Terminamos el if

switch(subcuenta3){

// Abrimos un switch anidado( subcuenta3) dentro del

caso 3 del
primer switch

case 0:

// Empezamos el caso 0 del switch

anidado(subcuenta3) dentro del


caso3 del switch principal

output_low(pin_a3);
apagar el

// asignamos la salida del pin a3 como baja(0v) para

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

led que esta conectado en ese pin

lcd_gotoxy(1,2);

// Damos las coordenadas del LCD, columna 1 de la fila 2

printf(lcd_putc,"led 3 off");

// Imprima en display lcd del puerto C las

coordenadas anteriores
una cadena con la palabr led 3 off

break;

//salimos el caso 0 del switch

anidado(subcuenta3) dentro del


caso3 del switch principal

case 1:

// Empezamos el caso 1 del switch

anidado(subcuenta3)
dentro del caso3 del switch principal

output_high(pin_a3);

// Asignamos la salida del pin a3 como alta(5v) para

encender el
led que est conectado en ese pin

lcd_gotoxy(1,2);

// Damos las coordenadas del LCD, columna 1 de la

fila 2

printf(lcd_putc,"led 3 on "); // Imprima en display lcd del puerto C las


coordenadas anteriores
una cadena con la palabra led 3 on

break;

//salimos el caso 1 del switch anidado(subcuenta3) dentro del

caso3 del
switch principal

}
break;
}

//cerramos switch subcuenta3


// Salimos el caso 3, del switch principal
// cerramos switch principal

// cerramos bucle while

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas
}

Departamento de Ingeniera en
Sistemas Computacionales

// cerramos programa principal

RESULTADOS Y CONCLUSIONES
Como resultado de esta prctica obtuvimos un men desplegado en un
display LCD, siendo controlado con nuestro pic 16f877a, donde pudimos
observar que se puede manipular diferentes dispositivos electrnicos y
mecnicos desde este pequeo chip, el cual tiene una gran variedad de
funciones y opciones de resolver diferentes problemas que se nos
puedan presentar en una empresa donde se use procesos
automatizados y tambin en otros tipos de empresa ya que su usos son

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

ilimitados todo depende de la creatividad e ingenio del tcnico o


ingeniero que los use.
A continuacin presentamos el resultado fsico de nuestro proyecto
realizado en un protoboard

REFERENCIAS
http://es.wikipedia.org/wiki/Microcontrolador_PIC
http://electronicadesarrollo.blogspot.mx/2007/12/programacin-depics.html

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO


Manual de Practicas

Departamento de Ingeniera en
Sistemas Computacionales

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