You are on page 1of 15

MANUAL DE PRCTICAS

Que presentan:

Estudiantes de la carrera:
Ingeniera en Sistemas Computacionales

Fecha:

23 de Mayo del 2016

Introduccin:
Prctica 1.- SEMFORO
Prctica 2.- LETRERO CON DESPLAZAMIENTO
Prctica 3.- CONTROL DE TEMPERATURA
Prctica 4.- COMUNICACIN SERIAL

Introduccin:
Hoy en da, la tecnologa est por todos lados, estamos en una poca donde el desarrollo
va de la mano con la tecnologa, y con tanta mquina, Como crees que se controlan?. El
microcontrolador es uno de los logros ms sobresalientes del siglo XX. Hace un cuarto de
siglo tal afirmacin habra parecido absurda. Pero cada ao, el microcontrolador se acerca
ms al centro de nuestras vidas, forjndose un sitio en el ncleo de una mquina tras otra.
Su presencia ha comenzado a cambiar la forma en que percibimos el mundo e incluso a
nosotros mismos. Cada vez se hace ms difcil pasar por alto el microcontrolador como otro
simple producto en una larga lnea de innovaciones tecnolgicas.
Los microcontroladores tienen millones de usos, pero para que te des una idea, esta es una
pequea lista con alguno de los mbitos en los que se usan:

En la industria del automvil: Control de motor, alarmas, regulador del servofreno,


dosificador, etc.

En la industria de los electrodomsticos: control de calefacciones, lavadoras, cocinas


elctricas, etc.
En informtica: como controlador de perifricos. Por ejemplo para controlar impresoras,
plotters, cmaras, scanners terminales, unidades de disco, teclados, comunicaciones
(modems), etc.
En la industria de imagen y sonido: tratamiento de la imagen y sonido, control de los
motores de arrastre del giradiscos, magnetfono, video, etc.
Dentro de la industria se ocupan para:

Regulacin: todas las familias de microcontroladores incorporan en alguna de sus versiones


conversores A/D y D/A, para la regulacin de la velocidad de las mquinas, de niveles, de
temperatura, etc.
Automatismos: La enorme cantidad de lneas de entrada y salidas, y su inmunidad al ruido
le hacen muy valioso para el control secuencial de procesos. Por ejemplo control de
mquinas, herramientas, apertura y cierre automtico de puertas segn condiciones,
plantas empaquetadoras, aparatos de maniobra de ascensores, etc.
Robtica: para control de los motores y captura de seales de los diferentes sensores,
fabricacin de controladores robticos para sistemas automticos, etc.
Y algunos de los dispositivos en los que se encuentran:

Radio paginador numrico (beeper).


Planmetro electrnico.
Nivelmetro digital.
Identificador-probador de circuitos integrados.
Tacmetro digital.
Panel frontal de un osciloscopio.
Controlador de display LCD.
Analizador de espectros, etc.
Cabe mencionar, adems, que un microcontrolador por s solo no tiene utilidad, es como un
cerebro, y necesita instrucciones sobre lo que puede o debe realizar, para ello, es necesario
programarlo.
Los lenguajes de programacin que se utilizan para programar microcontroladores son:
Lenguaje ensamblador: Las instrucciones en ensamblador consisten en las

abreviaturas con significado y a cada instruccin corresponde una localidad de


memoria. Un programa denominado ensamblador compila (traduce) las
instrucciones del lenguaje ensamblador a cdigo mquina (cdigo binario).
Lenguaje C: Los lenguajes de programacin de alto nivel (Basic, Pascal, C etc.)
fueron creados con el propsito de superar las desventajas del ensamblador. En
lenguajes de programacin de alto nivel varias instrucciones en ensamblador se
sustituyen por una sentencia. El programador ya no tiene que conocer el conjunto
de instrucciones o caractersticas del hardware del microcontrolador utilizado. Ya no
es posible conocer exactamente cmo se ejecuta cada sentencia, de todas formas
ya no importa

En esta imgen se puede apreciar la diferencia entre ambos lenguajes


(C // Ensamblador). Ambos cdigos son el mismo programa.

Prctica 1.- SEMFORO


El propsito de esta prctica es crear un circuito electrnico con el mismo funcionamiento
que un semforo, el cual debe prender el foco verde 3 segundos, empezar a parpadear 2
segundos y cambiar al foco amarillo, el cual prender por 2 segundos para despus
cambiar al foco rojo y este encienda durante 3 segundos para despus apagarse y repetir el
ciclo de manera indefinida.
Los conocimientos que se adquieren al realizarla son:

Uso de delays (retrasos)


Implementacin de secuencias de salida con el microcontrolador.
Instrucciones que el microcontrolador necesita para poder funcionar.

Componentes
Los componentes que ocuparemos para esta prctica son:
1 LED verde
1 LED amarillo
3

1 LED rojo
1 microcontrolador PIC16F688
3 resistencias de 270 Ohms
El diagrama de conexiones es el siguiente:

Se debe conectar una resistencia de 270 Ohms antes de cada foco.


El diagrama a bloques quedara de esta manera:

El cdigo del programa quedara as:


//Programa 1 - control de semforo
//Directivas
#include <16F877A.h>
#fuses NOPROTECT,NOLVP,PUT

#use delay(clock=4M)
#use fast_io(a) //Declara puerto a usar
#byte salidas=0x05 //se ubica en qu direccin de memoria est el puerto
#bit verde=0x05.0 //PA0 controla foco verde
#bit amarillo=0x05.1 //PA1 controla foco amarillo
#bit rojo=0x05.2 ////PA0 controla foco rojo

//Funciones
void inicializar(){
salidas=0;
set_tris_a(0b00000000);
SETUP_ADC(ADC_OFF); //Se apaga el convertidor analgico-digital
}

void parpadeo_verde()
{
verde=0;
delay_ms(500);
verde=1;
delay_ms(500);
}
void main()
{
inicializar();
while(TRUE)
{
verde=1; //Prende el foco verde
delay_ms(3000); //Espera 3 segundos
parpadeo_verde(); //Llama a la funcin de parpadeo del foco verde
parpadeo_verde();
verde=0; //Apaga el foco verde
amarillo=1; //Prende el foco amarillo
delay_ms(2000); //Espera 3 segundos
amarillo=0; //Apaga el foco amarillo
rojo=1; //Prende el foco rojo
delay_ms(3000); //Espera 3 segundos
rojo=0; //Apaga el foco rojo
}
}

Prctica 2.- LETRERO CON DESPLAZAMIENTO


El propsito de esta prctica es crear un circuito que con un microcontrolador muestre en
una LCD un letrero que se desplaza a la izquierda, en este caso la frase que se mostrar
ser Sistemas es en primer rengln y segundo semestre"
Los aprendizajes obtenidos en esta prctica son:

Conexin de una pantalla LCD (16x2)


Desplegar informacin en una LCD
El diagrama de conexiones es el siguiente:

El diagrama a bloques quedara de esta manera:

El cdigo para esta prctica sera el siguiente:


//Directivas
#include <16F688.h>
#fuses INTRC,NOWDT,NOPROTECT,PUT,NOBROWNOUT //Usar oscilador interno, no
proteger el cdigo

#use delay(clock=4M)
#include <lcd_flex.c>
/*es importante que la librera se invoque
despus de haber declarado la velocidad del reloj de otra
forma mandar error en la compilacin*/
#use fast_io(c)
#use fast_io(a) /*la librera est creada para controlarse
en el puerto A y C dentro de la misma librera se declara
como se van a usar estos puertos que sera como salidas, es por
eso que ya no se necesita declarar el puerto en la parte de
funciones*/
//No se necesita funcin para inicializar el micro, la funcin lcd_init() lo hace
signed int i; int j;
void limpiar(int p) //Para limpiar la LCD a medida que se escribe
{ //"p" es la direccin donde se borra
lcd_gotoxy(1,p);
for(j=1; j<=16; j++) //Ciclo para limpiar todas las columnas de la fila
printf(lcd_putc," ");
}
void main() //Funcion principal
{
lcd_init(); //funcin para iniciar LCD, incluida en lcd_flex.c
while(true) //Repetir indefinidamente
{
for(i=16; i>0; i--)
{
j=i; if(i<5) j=5; //'j' toma el valor de 'i' excepto si i<5
/*Esto con el propsito de que el letrero se mueva
de derecha a izquierda y que quede centrado*/
lcd_gotoxy(j,1);
printf(lcd_putc,"Sistemas"); //Solo se imprime en el rengln 1 y queda centrado por 'j'
lcd_gotoxy(i,2);
printf(lcd_putc, "segundo semestre");
//Para escribir en el segundo rengln
delay_ms(100); //Retardo de desplazamiento de las letras
if(i==1) //Si el rengln 2 llega a la localidad 1, se har un retardo ms largo
delay_ms(900);
limpiar(1); //Limpia el rengln 1
limpiar(2); //Limpia el rengln 2
}
}
}

Prctica 3.- CONTROL DE TEMPERATURA


El propsito de esta prctica es crear un circuito para poder medir la temperatura ambiental
mediante el uso de un sensor de temperatura LM-35, este es un sensor con una capacidad
de deteccin de -55C hasta 150 C. Est calibrado en C y responde a 10mV por C.
150 C = 1500 mV
-55 C = -550 mV

Los conocimientos que se adquieren en esta prctica


Para esta prctica se necesitar:
1 pantalla LCD
1 PIC16F688
1 sensor LM35
Del LM35, el pin 1 va conectado a los 5V, el pin 2 va conectado al pin 13 del PIC 16F688, el
pin 3 va conectado a tierra (Al negativo). De la LCD, el pin 1 va conectada al negativo, el pin
2 va conectado a los 5V, el pin 3 va conectado a negativo, el pin 4 va conectado al pin 6 del
PIC 16F688, el pin 5 va tambin a negativo, el pin 6 va al pin 5 del PIC, el pin 7, 8, 9 y 10 no
se conectan, el pin 11 va al pin 10 del PIC, el pin 12 va al pin 9 del PIC, el pin 13 va al pin 8
del PIC, el pin 14 va al pin 7 del PIC. Del PIC ya solo faltara conectar el pin 4 a los 5V.
El diagrama de conexiones es el siguiente:

El diagrama a bloques:

El cdigo para esta prctica sera el siguiente:


// programa para realizar un termmetro utilizando como
// sensor de temperatura un LM35,y un voltaje de
//referencia de 2 volts
//directivas
#include <16F688.h>
#device adc=10
#fuses INTRC, NOBROWNOUT, NOPROTECT, NOWDT, PUT
#use delay(clock=8M)
#include <lcd_flex.c>
#use fast_io(a)
#use fast_io(c)
#bit vent=0x05.2
float temp=0; float temp_final=0;

//funciones
inicializar(){
set_tris_a(0b00001011);
setup_adc_ports(sAN0|VSS_VREF);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
set_tris_c(0x00);
lcd_init();
}
//principal

main(){
inicializar();
while(TRUE){
temp=read_adc(); //aqui se obtiene la temperatura que est registrando el sensor
temp_final= temp* 0.1466; //aqui se hace el clculo para que el micro sepa interpretar la
informacin
lcd_gotoxy(2,1); //ajuste de coordenadas de impresin en la LCD
printf(lcd_putc,"T= %3.2f grados",temp_final); //despliegue en la LCD de la temperatura
que se est midiendo
if (temp_final>34)
{
vent=1; //Encendido del ventilador
delay_ms(3500); //retardo de 3.5 segundos
}
else
{
vent=0;
printf(lcd_putc,"\f");
}
}
}

Prctica 4.- COMUNICACIN SERIAL


En esta prctica el objetivo es crear un circuito que pueda hacer conexin serial con una
computadora a travs de la hyperterminal. Para ello, se utiliza un adaptador USB-RS232,
que permite la conexin entre la computadora y el circuito armado. Mediante la
hyperterminal, podemos darle instrucciones al microcontrolador. Al enviar una rden desde
la consola, se enciende determinado LED.
Los conocimientos adquiridos en esta prctica son:

Conexin serial entre microcontrolador y computadora mediante puerto serial


Dar instrucciones al microcontrolador mediante la computadora
Recibir informacin en la computadora desde el microcontrolador

Para lograr esto ocuparemos:


1 PIC16F688
1 computadora
1 adaptador USB-Serial modelo RS232
4 LEDs de varios colores
4 resistencias de 270 Ohms

10

El Diagrama de bloques sera:

El cdigo para esta prctica sera el siguiente:


//Programa no. 2 de comunicacin serial
//Desde la PC se va a controlar el encendido y apagado de leds
//Con un "1" enciende el led1, "2" enciende led2, "Z" apaga todos los leds
//El micro NO ejecutar ninguna accin, solo espera q le llegue informacin
// de la PC para realizar alguna accin.
//Directivas
#include <16f688.h> //Importacin del microcontrolador a utilizar
#fuses INTRC,NOWDT,NOPROTECT, PUT //instrucciones para el uso del micro. INTRC:
USar oscilador interno, NOPROTECT: No proteger el cdigo, para poder reutlizar el micro
#use delay(clock=8000000) //velocidad a la que trabajar el oscilador interno del
microcontrolador
#use rs232(baud=9600, bits=8,xmit=PIN_C4, rcv=PIN_C5, parity=n)// directiva
//para protocolo RS232, velocidad de transmisin, no. de bits a transmitir,
//indicar pin de recepcin y pin de transmisin
#use fast_io(C) //declaracin de que se usar el puerto C
#use fast_io(A) //declaracin de que se usar el puerto A

11

char tecla;// variable tipo char para recibir la informacin de la PC


#byte leds=0x05 // le ponemos nombre al puerto A que va controlar los leds

//Funciones
inicializar(){//funcin que inicializa el microcontrolador. Debe ser lo primero en invocarse en
el programa
leds=0;//limpiamos el puerto A q se le puso el nombre de leds
set_tris_a(8);// puertoa como salida para exhibir lo que se recibio de la PC
//menos el PA3 q es entrada para el MCLR, as q la informacin de la PC no se
//ver completa por la falta de 3 pines en el puerto A
set_tris_c(0b00100000);//PC4 salida (transmisin) PC5 entrada (recepcin)
}

// PRINCIPAL del programa


main(){
inicializar();
while(TRUE){
if(kbhit()){ //esta es una funcin q pregunta todo el tiempo si lleg
//informacin por puerto serial, es decir de la PC, si lleg entonces
// el valor cambia a 1 y entrara a la funcin if
tecla= getc(); // con la instruccin getc se captura lo q llego de PC
// y en este caso se asigna al char tecla
switch(tecla){ //switch para ver qu led es el que se encender, en base a lo recibido de la
computadora
case 0x31:
{leds=1; // enciende el led1 si mando un "1" desde PC
printf(" led1 prendido");} //se envia un letrero a la PC q indica led1 encendido
break;
case 0x32:
{leds=2; //enciende led2 si mando un "2" desde PC
printf(" led2 prendido");} // se envia letrero a PC de led2 encendido
break;
case 0x33:
{leds=4; //enciende led3 si mando un "3" desde PC
printf(" led3 prendido");} //se envia letrero a PC de led3 encendido
break;
case 0x5A:
{leds=0; //se apagan todos los leds si mando Z la PC
printf(" leds apagados");} // se envia letrero a PC de leds apagados
break;}
}}}

12

Anexos:
Diagrama de pines PIC16f688

Diagrama de pines LCD 16x2

13

Diagrama de conexin RS232 - USB

Nota: TX y RX se conectan de manera invertida en el microcontrolador.


Tx(USB) ----------Rx (micro)
Rx(USB)-----------Tx(micro)

14

You might also like