Está en la página 1de 61

1

MANUAL DE PRCTICAS
PROGRAMACIN AVANZADA

AUTOR:
Viridiana Brcenas Jimnez
Exp.: 153380

CONTENIDO
PRCTICA 1

USO DEL PUERTO PARALELO DE LA COMPUTADORA (Salida)


PG. 3

PRCTICA 2

USO DEL PUERTO PARALELO DE LA COMPUTADORA PARA EL CONTROL DE MOTORES DE CD Y


DE CONMUTACIN ELECTRNICA (MOTORES PASO A PASO).
PG.21

PRCTICA 3

ADQUISICIN DE DATOS DE TEMPERATURA (CONFIGURACIN DEL PUERTO PARALELO DE


ENTRADA).
PG.27

PRCTICA 4

USO DEL PUERTO SERIAL PARA COMUNICACIN (CHAT CON PUERTO SERIAL).
PG.34

PRCTICA5

INTRODUCCIN AL USO DE MICROCONTROLADORES (PIC16F877A).


PG.46

PRCTICA 6

USO DE C CONFIGURADO PARA ENTRADA Y SALIDA DE DATOS (PIC16F877A).


PG.

PRCTICA 7

TRANSMISIN/RECEPCIN DE DATOS VA UN MDULO DE COMUNICACIN XBee.


PG.52

...

Nombre de la Asignatura

LABORATORIO DE PROGRAMACIN AVANZADA

Nombre de la Prctica

USO DEL PUERTO PARALELO DE LA COMPUTADORA (Salida)

Nmero de Prctica

Duracin (Horas)

OBJETIVO (Resultado del aprendizaje)


El alumno comprender el uso del puerto paralelo para efectuar acciones de control (on/off), tambin, aprender a
configurar el puerto paralelo de salida para procesar seales

MARCO TERICO
Introduccin.
El puerto paralelo de una PC o computadora [1] es ideal para usarse como herramienta de control de motores,
relevadores, LEDs (Diodos Emisores de Luz), etc. Este dispositivo posee un bus de datos de 8 bits y seales de
control de salida y otras de entrada que pueden ser usadas fcilmente (Tabla 1). La PC generalmente posee slo
uno de estos puertos llamado LPT1 (Terminal de las Lneas de Impresin), la direccin hexadecimal de este puerto
es igual a 0x378 888 en decimal, esto se puede verificar fcilmente en el setup de la PC.
Tabla1. Configuracin del puerto paralelo estndar.

Pin (D-25)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18-25

Lnea Puerto SPP


-Strobe
D0
D1
D2
D3
D4
D5
D6
D7
-Ack
Busy
Paper-out
Select
-Auto-Linefeed
-Error
-Initialize
-SelecPrinter
GND

Direccin
Entrada/ Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Entrada
Entrada
Entrada
Entrada
Entrada/ Salida
Entrada
Entrada/ Salida
Entrada/ Salida

Registro (bit)
Control(0)
Datos(0)
Datos(1)
Datos(2)
Datos(3)
Datos(4)
Datos(5)
Datos(6)
Datos(7)
Estado(6)
Estado(7)
Estado(5)
Estado(4)
Control(1)
Estado(3)
Control(2)
Control(3)

4
El hardware del puerto paralelo.
El puerto paralelo de una tpica PC utiliza un conector hembra de tipo D de 25 pines (DB-25 S), definido este por el
estndar IEEE 1284. El orden de los pines y la funcin de cada uno de ellos es la correspondiente a la Figura 1.

Figura 1. Orden y funcin de pines para DB-25 S.

Hay tres direcciones de E/S asociadas con un puerto paralelo de la PC, estas direcciones pertenecen al registro de
datos, el registro de estado y el registro de control. El registro de datos es un puerto de lectura-escritura de ocho bits.
Los distintos pines (bits) de salida correspondientes al bus de datos no pueden ser escritos en forma independiente,
por lo que siempre que se modifiquen se deben escribir los ocho bits nuevamente. Los registros de control y estado
proveen la interfase a las otras lneas de E/S.
Para leer el estado de los pines de entrada se debe realizar una lectura a la direccin hexadecimal 0x379 889 en
decimal tal como se muestra en la Tabla 2. La lectura ser devuelta en un byte en donde el bit 6 corresponde al pin
10, el bit 5 corresponde al pin 12, el bit 4 corresponde al pin 13 y el bit 3 corresponde al pin 15.
Tabla 2. Direcciones a puerto.

Puerto
Datos
Se compone de 8 bits, es
bidireccional.
Estado
Registro
de
entrada
de
informacin de 5 bits.
Control
Es un bidireccional de 4 bits, con
un bit de configuracin que no
tiene conexin al exterior.

Direccin LPT1
378H

379H

37AH

Instrucciones en C para configurar el puerto paralelo.


En primera instancia se debe habilitar el puerto paralelo para su uso, para esto se recurre al USERPORT.

Manejo del USERPORT.


Para poder leer y escribir en el puerto paralelo es necesario un driver (archivo *.sys) que comunique el software con
dispositivo hardware. El proceso a seguir para instalar el driver que permita acceder a el puerto paralelo:

Descargar la utilidad denominada USERPORT .Descomprime el archivo en una carpeta del disco duro. No
importa el nombre.
Copiar el archivo "userport.sys" en la carpeta de sistema C:\WINDOWS\SYSTEM32\DRIVERS
Ejecuta el archivo UserPort.exe

Figura 2. Ventana principal USERPORT.

Para iniciar el driver, accionar el botn START, si se desea detener la ejecucin seleccionar el botn STOP
(Figura 2).

El direccionamiento de los puertos, est indicado en el cuadro de dilogo del USERPORT, en este se hace referencia
a los rangos habituales que se asigna a los puertos en un PC. Si el direccionamiento del puerto no coincide con los
que aparecen, se puede aadir un nuevo rango de direcciones escribindolas en notacin hexadecimal. Para finalizar
se debe ejecutar el lenguaje de programacin que acceda a los puertos y utilizar de forma transparente las
instrucciones primitivas para entrada/salida de datos.

Configuracin de puerto paralelo salida (escritura)


Con ocho bits se puede escribir en el puerto un total de 256 valores diferentes, cada uno representa un byte de
informacin y cada byte representa una accin concreta. Con la Tabla 1 y Tabla 2 se puede modificar o leer
cualquiera de las lneas de programacin de salida del puerto paralelo mediante el uso de las instrucciones de
acceso al mismo, en el lenguaje de programacin C, Turbo C y C++.
1. Determinar que salida del puerto paralelo es el que se va utilizar. Se debe tomar es esta salida y conectarla a
un diodo LED en serie a una resistencia de 330 Ohm como se muestra en la Figura 3.

Figura 3. Lnea de salida. NOTA: "Pin puerto paralelo" puede ser cualquier Pin del 2 al 9.

2. Se indica que seal ser la que se va a enviar, esto aplicado en la funcin Outportb tal como en la Figura 4
donde se indica que se enviara un dato a travs del puerto de datos.
Las instrucciones que terminan en b, como seria en el caso del Outportb, se refieren a la lectura o escritura de
un byte, mientras que las que no terminan en esta letra es decir el Outport se refieren a una palabra el
equivalente a dos byte.

Figura 4. Formato de instruccin de salida a puerto paralelo.

EQUIPO Y MATERIALES.

PC.
Resistencias de 330 Ohms.
LEDs.
Cable interfaz Puerto paralelo (armado DB-25 macho).
Alambre para conexin AWG 22.
Protoboard.

PRERREQUISITOS.
El alumno debe traer armado el cable de interfaz para puerto paralelo y los circuitos requeridos que son
necesarios para la comunicacin de salida del puerto paralelo contemplando slo las lneas de datos.

METODOLOGA.
El alumno debe realizar las siguientes aplicaciones visible en un arreglo de LEDs:
1. Secuencia par e impar: Desarrollar e implementar un programa que muestre en una lnea de salida donde se
enciendan primero los indicadores correspondientes a nmero par y en seguida los correspondientes a
nmero impar, secuencia dada en nmeros binarios, ver ejemplo Figura 5.

Figura 5. Tablero de LEDs indicadores secuencia de nmeros PAR e IMPAR.

7
2. Contador de 0-255: Desarrollar e implementar el programa necesario que muestre en una lnea de datos una
secuencia binaria correspondiente a un contador de 0 a 255, ver ejemplo Figura 6.

Figura 6. Tablero de LEDs indicadores contador 0-255.

3. Corrimiento de izquierda a derecha: Desarrollar e implementar el programa que muestre en una lnea de
salida los datos correspondientes al corrimiento de bits de izquierda a derecha, ver ejemplo Figura 7.

Figura 7. Tablero de LEDs indicadores secuencia de Izquierda a Derecha.

8
4. Corrimiento del centro a los lados: Desarrollar e implementar el programa que muestre en una lnea de datos
el corrimiento de bits partiendo del centro del arreglo de LED hacia las laterales del mismo, ver ejemplo
Figura 8.

Figura 8. Tablero de LEDs indicadores secuencia de Derecha a Izquierda.

EVALUACIN DE LA PRCTICA.
Conclusiones:_________________________________________________________________________
_____________________________________________________________________________________
____________________________________________________________________.
Observaciones:_______________________________________________________________________
__________________________________________________________________________.

BIBLIOGRAFA.
[1]http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm, 1999, El puerto paralelo de la PC, por Virgilio Gmez
Negrete, Espaol.
[2]http://olmo.pntic.mec.es/jmarti50/puerto_xp/userport.htm, 2004, USERPORT. Driver para acceder al puerto
paralelo en Windows NT/2000/XP, J.C.M.Castillo, Espaol.
[3]Tcnicas de programacin, Ed. McGraw Hill.

Figura Anexa (A)


Diagrama de flujo propuesto para la programacin.

Inicio
/*Declaracin de libreras
#include<>*/
#include<conio.h>
#include<stdio.h>
#include<dos.h>

/*Declaracin de variables globales. En


caso de que el programador lo desee*/
#define salida 0x378

// direccin salida

/*Pude direccionar la salida por puerto


empleando el Outport tal y como se indica
en la Figura4*/
/*Declaracin de la funcin principal */
Voidmain()

{
/*Declaracin de variables locales. En caso de que se
requiera su uso*/
Int a,b,c,d,e,f,g;
float x;

/*Se verifica la accin a ejecutar y se determina el


cdigo ms adecuado para el programador: If, Else,
For ,etc */
Palabra = inport(puerto);
outport (puerto, Palabra);
Byte = inportb (puerto);
outportb (puerto, Byte);

/*Se finaliza la ejecucin de la funcin principal*/


}

Fin

10

Nombre de la Asignatura

LABORATORIO DE PROGRAMACIN AVANZADA

Nombre de la Prctica

USO DEL PUERTO PARALELO DE LA COMPUTADORA PARA


EL CONTROL DE MOTORES DE CD Y DE CONMUTACIN
ELECTRNICA (MOTORES PASO A PASO).

Nmero de Prctica

Duracin (Horas)

OBJETIVO (Resultado del aprendizaje)


El alumno podr reconocer las diferentes configuraciones para accionar y controlar motores de CD y de conmutacin
electrnica (paso a paso) empleando drivers de uso especfico y el puerto paralelo.

MARCO TERICO
Interfaz para el puerto paralelo.
Actualmente, la mayora de los puertos instalados en las PC son de tipo multimodal configurables a travs del BIOS
de la mquina, en modo normal o de puerto paralelo estndar, adems de ste, estn las opciones bidireccional,
puerto paralelo extendido versin 1.7, versin 1.9 y el puerto de capacidad extendida. El modo de operacin Normal
es el ms elemental y solamente permite la escritura en las lneas de datos, pines 2 a la 9 del conector DB-25 del
[1]
puerto paralelo de la PC .
Elctricamente, el puerto paralelo entrega seales TTL (lgica de transistor a transistor)y como tal, se le puede
conectar cualquier dispositivo que cumpla con los niveles de voltaje especficos, sin embargo el hardware del puerto
paralelo es muy limitado en cuanto a su capacidad de manejo de corriente, es por eso que se tiene que ser muy
cuidadoso con el manejo de las seales del puerto, un corto circuito puede daar permanentemente la tarjeta madre
de la PC.
El manejo de potencia, es decir la manipulacin de altas corrientes, implica tener consideraciones de seguridad
elctrica para los operarios y de proteccin para el sistema digital en este caso el puerto paralelo de la PC.
Para disminuir el riesgo de dao al puerto se emplea una etapa de aislamiento.

[2]

El integrado 74LS244 funciona como etapa aislante y mejora la capacidad de manejo de corriente, Figura
1(A). Por cada lnea de entrada del puerto paralelo existe una etapa amplificadora-separadora dentro del
74LS244 con una tasa de entrega de corriente suficiente para desplegar la informacin a travs de LEDs,
Ver Figura 1(B).

11

Figura 1. A) Circuito 74LS244, B) Configuracin de conexin a Puerto Paralelo.

Es deseable que la interconexin entre ambas etapas la digital y la de potencia se realice por un medio de
acoplamiento que asle elctricamente los dos sistemas. Esto se puede lograr con los dispositivos llamados
[3]
OPTO ACOPLADORES (por ejemplo el optoacoplador 4N25 ), Figura 2(A), mediante los cuales se obtiene
un acoplamiento ptico y, al mismo tiempo, un aislamiento elctrico.
El acoplamiento se efecta en el rango del espectro infra-rojo a partir de dispositivos emisores de luz,
usualmente IRED (infra-rojo) o LEDs, actuando como emisores y utilizando dispositivos detectores de luz
(opto detectores), como receptores, Figura 2(B).

Figura 2. A) Opto acoplador 4N25, B) Configuracin del 4N25 salida.

[4]

Un relevador es un interruptor accionado por un electroimn (Figura 3). Al pasar corriente elctrica por la
bobina el ncleo de hierro se magnetiza, convirtindose en un imn que ser ms potente mientras mayor
sea la intensidad de la corriente y el nmero de vueltas de la bobina.
Al abrirse nuevamente el interruptor y dejar de pasar corriente por la bobina, desaparece el campo magntico
y el ncleo deja de ser un imn, cortando totalmente el paso de corriente del sistema en caso de los sistemas
que manejan cargas inductivas como lo son motores, se impide el paso de corrientes parsitas que puedan
quedar de su movimiento inercial regresando por la lnea de alimentacin daando la etapa digital del sistema
en cuestin.

12

Figura 3. Relevador.

Motores de corriente directa.


El funcionamiento se basa en la interaccin entre el campo magntico del imn permanente y el generado por las
bobinas, ya sea una atraccin o una repulsin hace que el eje del motor comience su movimiento. Cuando una
bobina es recorrida por la corriente elctrica, esta genera un campo magntico con dos polos un polo NORTE y un
polo SUR. Esto permite que mediante la inversin de la polaridad se consiga el cambio de giro del motor.
Divers para manejo de motores de CD.

Relevador:
Existen varias formas de lograr que estos motores inviertan su sentido de giro una es utilizando una
fuente simtrica o dos fuentes de alimentacin con un interruptor simple de dos contactos y otra es utilizar
una fuente comn con un interruptor doble es decir uno de 4 contactos o un relevador que cuente con
esta configuracin (Figura 3). Aunque esta opcin es una de las ms prcticas, tiene sus inconvenientes
ya que los relevadores suelen presentar problemas mecnicos y de desgaste.

Figura 3. Cambio de giro de un motor de CD mediante un rel de 4 contactos.

13
Transistor:
La segunda opcin es haciendo uso de transistores, estos conectados en modo corte y saturacin
[5]
(valores lgicos 1 y 0), as actan como interruptores (Figura 4 y Figura 5) .

Figura 4. Configuracin con dos transistores complementarios y una terminal de control


(Corte y saturacin) usando fuente dual.

Figura 5. Configuracin empleando 4 transistores, dos terminales de control y una fuente sencilla (Puente H).

Circuito integrado L293B:


La tercera opcin es haciendo uso del L293B
6), sus ventajas son las siguientes:
5.
6.
7.
8.

[6]

. Se trata de un driver para motores de 4 canales (Figura

Cada canal es capaz de entregar hasta 1A de corriente.


Posee una entrada de alimentacin independiente que alimenta los 4 drivers.
El control de los drivers es compatible con seales TTL es decir con 5 voltios (seales lgicas).
Cada uno de los 4 drivers puede ser activado de forma independiente (por su terminal de entrada), o
habilitado de dos en dos con un slo terminal (Enable).

14

Figura 6. Circuito integrado L293B.

Existen dos formas de emplear este circuito como elemento de control, una de ellas es controlar a los
motores en un slo sentido de giro (paro y arranque), en este caso se tiene la posibilidad de controlar
hasta 4 motores (Figura 7). En este circuito D1 y D2 sirven como seguro para el L293B de las tensiones
generadas por la induccin de las bobinas del motor.

Figura 7. Driver configurado para controlar motores en un solo sentido.

La otra configuracin es la que se muestra en la Figura 8, esta permite controlar el motor en cuatro
estados: un sentido o en otro, detenerlo o dejarlo libre (se refiere a que cualquier seal en los terminales
de control no tendrn efecto sobre el motor).

15

Figura 8. Configuracin del L293B para motor de CD (Forma de control 2).

Motores paso a paso.


Los motores paso a paso son comnmente utilizados en situaciones en que se requiere un cierto grado de precisin.
El ngulo de giro de estos motores es muy variado pasando desde los 90 hasta los 1.8 e incluso 0.72, cada ngulo
de giro, (tambin llamado paso) se efecta enviando un pulso en uno de sus terminales.
Los Motores-PaP suelen ser clasificado en dos tipos, segn su diseo y fabricacin pueden ser Bipolares o
Unipolares (Figura 9).

Figura 9. Configuracin de las bobinas de Motores PaP.

Motores bipolares.
Para motores bipolares se deben identificar los cables a, b, c y d empleando un multmetro se puede medir la resistencia
entre cada par de terminales, los extremos a y b deben tener la misma resistencia que los extremos c y d, al medir la
resistencia en forma cruzada el multmetro no marca nada ya que corresponden a bobinas distintas. Para su control se
requiere de invertir las polaridades de los terminales de las bobinas 1 y 2 en una determinada secuencia para lograr un
giro a derecha, y en secuencia opuesta para que gire a izquierda (Figura 10).

Figura 10. Secuencia de Pasos para un motor Bipolar.

Motores Unipolares.
El motor paso a paso de tipo unipolar es de fcil control, esto se debe a que tienen un terminal comn a
ambas bobinas. Una forma de identificar cada uno de los cables es analizar la forma de conexin interna de
estos motores.

16
1. Este motor tiene 6 cables, con el multmetro se mide resistencias por todos los cables. De este
estudio slo se obtienen tres valores distintos que adems se repiten, el primero valor corresponde a
la cifra de mayor resistencia, es decir a los extremos de las bobinas (a-b o bien c-d). El segundo valor
corresponde aproximadamente la mitad del valor nominal de la medicin anterior, por tanto esa debe
ser la resistencia entre el terminal comn y ambos extremos de una bobina, por ejemplo entre aCom1 o b-Com1, c-Com2 o d-Com2 (Figura 11A). La ltima seal es cuando no marca nada, esto
significa que se midieron los cables de bobinas distintas.
2. Lo que sigue ahora es unir los dos Com1 y el Com2 (Figura 11B). Aqu la resistencia entre cualquier
terminal y el comn es la misma (aproximadamente la mitad de la resistencia entre los extremos de
las bobinas). Al unir los comunes los cuatro cables restantes corresponden a: a, b, c, y d, se debe
conectar la terminal comn a la fuente de alimentacin, y seleccionar uno de los 4 cables restantes,
considerndolo como A y se conecta a GND (Tierra), el motor quedar enclavado en una sola
posicin, en seguida se debe tomar un segundo cable, cuando este sea conectado a GND el motor
dar un primer paso.
Aqu pueden ocurrir 3 cosas:
1. Que el motor gire a derecha (Terminal b).
2. Que gire a izquierda (Terminal d).
3. No pasa nada (Terminal c).

Figura 11. Bobinas de Motor paso a paso unipolar: A)configuracin inicial del motor a identificar
B) Com1 y el Com2 se unen para formar una sola terminal, Com.

Drivers tiles para el manejo de motores paso a paso (Bipolares).

LN293
En la Figura 12, L1 y L2 son las bobinas del motor, los diodos D1 a D8 son para proteger al integrado de
las sobre tensiones generadas por dichas bobinas, los terminales 1 y 9 se unieron como terminal de
habilitacin, 1a, 1b, 2a y 2b son las entradas de control para la secuencia de las bobinas del motor.

17

Figura 12. Configuracin de control para motores PaP bipolar empleando LN293B.

Drivers tiles para el manejo de motores paso a paso (unipolares).

ULN2803
[7]

El ULN2803
es un arreglo de transistores Drlington capaz de manejar hasta 500mA en sus salidas
(Figura 13). Las salidas del ULN2803 estn invertidas respecto de las entradas, y de acuerdo al diagrama
interno, se puede apreciar que son de colector abierto.
La configuracin para el manejo de motores paso a paso empleando el Driver ULN2803 se muestra en la
Figura 14.

18

Figura 13. Configuracin del ULN2803.

Figura 14. El ULN2803 tiene salidas invertidas, cada vez que enve un "1" por el pin In se enviar "0" a la
salida.

Secuencias para manejo de giro de motores paso a paso empleando el ULN2803


La secuencia que se requiere para hacer que el motor gire en un slo sentido se muestra en la Figura 15.

Figura 15. Secuencias para hacer que el motor gire en un sentido, si se desea que gire en sentido opuesto,
invertir dicha secuencia.

Al trabajar con una sola bobina se pierde un poco el torque del motor. Otra propuesta es activar las
bobinas de a dos, de esta manera el campo magntico se duplica, el motor tiene mayor fuerza de giro y
retencin, la secuencia a seguir se muestra en la Figura 16. Este mtodo presenta mayor fuerza en cada
paso y el consumo de energa aumenta.

19

Figura 16. Secuencia de giro activando dos bobinas a la vez.

Una tercera propuesta es la resultante de la combinacin de las anteriores, mejor conocida como
secuencia de medios pasos esto es, que si tenemos un motor de 4 pasos puede ser usado como de 8
pasos. Para el caso anterior se anexa la secuencia en la Figura 17.

Figura 17. Secuencia de medios pasos para motor de 4 pasos.

EQUIPO Y MATERIALES.

Fuente de alimentacin.
Motor de CD de 3 0 6 volts.
Motor a pasos bipolar y unipolar.
Circuitos (ULN2803, L293D, 74LS244, MOC 3011, RELEVADOR RAS 05)
Caimanes.
Puerto Paralelo.
Protoboard.

PRERREQUISITOS.
Que el alumno acuda al laboratorio de Programacin Avanzada contando con los circuitos necesarios armados para
conectar el puerto paralelo a los mandos finales (motores de CD y Motores paso a paso) as como la hoja de datos
de los de los siguientes elementos elctricos:

74LS244
ULN2803
L293D
MOC 3011
RELEVADOR seleccionado (RAS 05).

20
METODOLOGA.
El alumno:
Mediante el uso de los circuitos integrados usados en la prctica aprender a controlar el movimiento de los motores
de corriente directa, a pasos unipolar y bipolar mediante el puerto paralelo.

EVALUACIN DE LA PRCTICA.
Conclusiones:_________________________________________________________________________
_____________________________________________________________________________________
_____________________________________________________________________.
Observaciones:_______________________________________________________________________
_____________________________________________________________________________________
______________________________________________________________________.

BIBLIOGRAFA:
Williams, Arthur. Microprocesadores, dispositivos optoelectrnicos, perifricos y de interfaz. Serie de circuitos.

[1]Tutorial en web (PDF, html) El puerto paralelo de la PC por Virgilio Gmez Negrete.
[2]Datasheet74LS244.
[3]Datasheet 4N25.
[4]Maloney J. Timothy. Electrnica Industrial. Dispositivos y Sistemas. Editorial Prentice Hall Hispanoamericana,
Mxico, 2000
[5]Boylestad Robert y Nashelsky Louis. Electrnica. Teora de Circuitos. Editorial Prentice Hall Hispanoamericana,
Mxico, 1998.
[6]Datasheet L293D.
[7]Datasheet ULN2803.

21

Nombre de la Asignatura

LABORATORIO DE PROGRAMACIN AVANZADA

Nombre de la Prctica

ADQUISICIN DE DATOS DE TEMPERATURA


(CONFIGURACIN DEL PUERTO PARALELO DE ENTRADA).

Nmero de Prctica

Duracin (Horas)

OBJETIVO (Resultado del aprendizaje)


El alumno comprender el funcionamiento del sensor de temperatura LM-35 y el de un convertidor Analgico Digital
(ADC) de 8 bits de resolucin. Realizar mediante puerto paralelo un sistema de adquisicin de temperatura y el
monitoreo de la misma en la PC.

MARCO TERICO
Configuracin de puerto paralelo escritura.
Con ocho bits se puede escribir en el puerto paralelo un total de 256 valores diferentes, cada valor representa un byte
de informacin y cada byte puede representar una accin concreta que se puede definir de acuerdo a las
[1]
necesidades del programador .
Utilizando la Tabla1 y la Tabla2 se puede modificar o leer cualquier lnea de programacin direccionada al puerto
paralelo mediante el uso de las instrucciones de acceso.

Entrada.
1. Determinar que lnea del puerto paralelo se va a usar como seal de entrada, verificando que corresponda a
una seal este tipo.
2. Se asigna el valor del puerto mediante la funcione Inportb (Figura 1).

Figura 1. Instruccin de salida de datos para puerto paralelo.

La conexin para el circuito de entrada es la vista en la Figura 2A, Como se aprecia en el esquema, el circuito utiliza
una de las lneas de entrada para leer el estado de un push-buttom, en el esquema se utiliza la lnea de salida D1
para poder alimentar la resistencia de pull-up del push buttom, esto se aplica para no tener que utilizar una fuente
externa de 5v slo para alimentar a la resistencia. Para evitar que un fallo en el diseo del circuito dae a la PC es
necesario aislar las lneas del puerto paralelo. En la Figura 2B se observa el esquema de un circuito optoacoplado
[3]
para una lnea de entrada .

22

Figura 2. Lnea de entrada (lnea internamente invertida por hardware, conectada 5v corresponde a 0, conectada a GND
corresponde a 1).

Tabla1. Configuracin del puerto paralelo estndar.

Pin N (D-25)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18-25

Lnea Puerto
SPP
-Strobe
D0
D1
D2
D3
D4
D5
D6
D7
-Ack
Busy
Paper-out
Select
-AutoLinefeed
-Error
-Initialize
-SelecPrinter
GND

Direccin

Registro(bit)

Entrada/ Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Entrada
Entrada
Entrada
Entrada

Control(0)
Datos(0)
Datos(1)
Datos(2)
Datos(3)
Datos(4)
Datos(5)
Datos(6)
Datos(7)
Estado(6)
Estado(7)
Estado(5)
Estado(4)

Entrada/ Salida

Control(1)

Entrada
Entrada/ Salida
Entrada/ Salida

Estado(3)
Control(2)
Control(3)

Tabla 2. Direcciones a puerto.

Puerto
Datos
Estado
Control

Direccin
LPT1
378H
379H
37AH

23
ADC(Convertidor Analgico Digital)

Figura 3. ADC0804, resolucin a 8 bits (1 byte).

Un convertidor analgico/digital (Figura 3) es un circuito integrado que convierte seales anlogas en datos binarios
(ceros y unos).
[4]

El convertidor analgico/digital ADC0804


es un circuito integrado capaz de convertir una muestra analgica entre
0v y 5v, a un valor binario de 8 dgitos. Para conocer la resolucin del convertidor se tiene que conocer el valor
mximo que la entrada de informacin a utilizar y la cantidad mxima de la salida en dgitos binarios. Para el
ADC0804 la resolucin se determina de la forma siguiente:

Caractersticas Principales:
Convertidor ADC0804
Vcc: voltaje positivo de alimentacin
AGND: tierra del sistema anlogo
DGND: tierra del sistema digital
Vin(+): terminal positiva del voltaje de entrada
Vin(-): terminal negativa del voltaje de entrada
DB7-DB0: salidas de la conversin digital, con DB7 el MSB y DB0 el LSB
CLKin: entrada de reloj
CLKr: salida del reloj cuya frecuencia depende de una resistencia y un condensador externos
CS(chip select):, para que el ACD0804 funcione debe estar en bajo.
RD: cuando este pin est en bajo, las salidas tri-estado estn activas y se puede leer el dato.
WR: cuando va a nivel bajo, el proceso de conversin se inicia
INTR: genera una interrupcin de nivel bajo cuando finaliza el proceso de conversin
Vref/2: este pin debe ser alimentado con la mitad del rango de voltaje analgico mximo que
va a recibir el ADC0804 por el pin Vin (+). Ejemplo: para un rango de entrada entre 0,5v y
3,5v el valor de Vref/2 ser igual a: (3,5 0,5 )/2 o sea 1,5v

24
Sensor de temperatura LM35.
El sensor de temperatura utilizado, es el circuito integrado LM35
siguientes:

[5]

, cuyas caractersticas principales son las

El circuito integrado LM35 es un sensor de temperatura cuya tensin de salida es linealmente proporcional con la
temperatura en la escala Celsius. No necesita calibracin externa, posee slo tres terminales, es de bajo costo

Factor de escala: 10mV/C (garantizado entre 9,8 y 10,2mV/C).


Rango de utilizacin: -55C< T <150C.
Precisin de: ~1,5C (peor caso).
No linealidad: ~0,5C (peor caso).

Censado de temperatura empleando LM35 y ADC0804.

Figura 4. Interfaz entre el LM35 y el ADC0804, de acuerdo a la configuracin de su hoja de datos.

EQUIPO Y MATERIALES.

PC.
Resistencias de 330 Ohms.
LEDs.
Cable interfaz Puerto paralelo (armado DB-25 macho).
Cables de conexin.
Protoboard.
LM35
ADC0804

25
PRERREQUISITOS.
Que el alumno acuda al laboratorio de Programacin Avanzada contando con:
9. El ADC de 8 bits configurado de tal manera que de forma automtica transforme valores analgicos en
digitales (Ver Figura 4).
10. El sensor LM35 configurado para entregar voltajes de acuerdo a la ecuacin de transformacin del
sensor.

METODOLOGA.
El alumno:
Debe construir un sistema de adquisicin de datos de temperatura de tal forma que los datos de temperatura se
muestren en la pantalla de la computadora (Figura 5).

Figura 5. Interfaz entre el puerto paralelo de la PC y el sensor LM35.

Los datos deben ser adquiridos en la computadora mediante el puerto paralelo. El puerto debe ser configurado desde
el software de la PC y monitoreado a travs de la misma. El formato para mostrar es de 2 dgitos y dos decimales.

EVALUACIN DE LA PRCTICA.
Conclusiones:_________________________________________________________________________
_____________________________________________________________________________________
_____________________________________________________________________.
Observaciones:_______________________________________________________________________
_____________________________________________________________________________________
______________________________________________________________________.

BIBLIOGRAFA:
[1]Tutorial en Web (PDF, html) El puerto paralelo de la PC por Virgilio Gmez Negrete.
[2]Tcnicas de programacin, Ed. McGraw Hill.
[3]Williams, Arthur. Microprocesadores, dispositivos opto electrnicos, perifricos y de interfaz. Serie de circuitos.
[4]Datasheet ADC0804.
[5]Datasheet LM35.

26

Figura Anexa (B)


Diagrama de flujo propuesto para la programacin.

Inicio
/*Declaracin de libreras
#include<>*/
#include<conio.h>
#include<stdio.h>
#include<dos.h>

/*Declaracin de variables globales. En


caso de que el programador lo desee*/

/*Declaracin de la funcin principal */


Voidmain()

{
/*Declaracin de variables locales. En caso de que se
requiera su uso*/
Int a,b,c,d,e,f,g;
float x;

/*Se verifica la accin a ejecutar y se determina el


cdigo ms adecuado para el programador: If, Else,
For ,etc */
Palabra = inport(puerto);
Byte = inportb (puerto);

/*Se finaliza la ejecucin de la funcin principal*/


}

Fin

27

Nombre de la Asignatura

LABORATORIO DE PROGRAMACIN AVANZADA

Nombre de la Prctica

USO DEL PUERTO SERIAL PARA COMUNICACIN (CHAT CON


PUERTO SERIAL).

Nmero de Prctica

Duracin (Horas)

OBJETIVO (Resultado del aprendizaje)


El alumno comprender el uso del puerto serial para efectuar acciones de intercambio de informacin entre PC y PC.

MARCO TERICO
Introduccin.
[1]

El puerto serial se considera una de las conexiones ms simples. Su principal funcin es enviar y recibir datos bit
por bit, este posee un conector estndar y trabaja con un protocolo que permite la conexin de dispositivos a la PC.
Se le denomina como puerto serial debido a que toma un byte de datos y transmite cada uno de los 8 bits uno a uno
por un slo canal.
Al puerto serial se le conocen con el nombre de puertos de comunicacin o COM, y tienen la caracterstica de ser
bidireccional. Esta caracterstica permite a cada uno de estos dispositivos que puedan tanto recibir como enviar
datos. Su funcionamiento normal depende de un dispositivo especial denominado UART debido a las siglas en ingls
para Universal Asynchronous Reciever/Transmitter. Este dispositivo controlador toma la salida paralela del bus, y la
PC lo convierte a forma serial, lo que permite la transmisin de los datos a travs del puerto.
Dentro de sus principales ventajas se encuentra la necesidad de un slo cable para transmitir los 8 bits, sin embargo,
se demora 8 veces ms en realizar esta transmisin que si se contara con 8 cables, como sucede con un puerto
paralelo.
Las especificaciones del puerto serial estn contenidas en el estndar EIA RS-232C6. Este estndar posee varias
especificaciones, algunas son:
Un espacio (es un cero lgico) est entre los +3 volts y los +25 volts.
Una marca (es un uno lgico) que est entre los -3 volts y los -25 volts.
La zona entre los +3 volts y los -3 volts no est definida.
Un circuito abierto de voltaje no debe exceder los 25 volts con respecto a la tierra.
Un mximo largo de 15 metros garantizando mximo de transferencia.

28
Construccin de interfaz para puerto serial.
Una PC convencional maneja un conector DB9 hembra cuya configuracin de los pines es la que se muestra en la
Figura 1 (a), de igual forma se presenta la configuracin para el DB9 macho en la Figura 1 (b):

Figura 1. Configuracin de los pines del conector DB9: a) Tipo hembra, b) Tipo macho.
Tabla 1. Configuracin del los pines del conector DB9.

3
2
8
1

TD
RD
CTS
DCD

Transmit Data
Receive Data
Clear ToSend
Data CarrierDetect

DSR

Data Set Ready

DTR

Data Terminal Ready

RTS

RequestToSend

9
5

RI
GND

Ring Indicator
Ground

Salida de Datos Serial TX


Entrada de Datos Serial RX
Esta lnea indica que el MODEM est listo para intercambiar datos.
Cuando el MODEM detecta un carrier del otro MODEM al final de la lnea
este se activa.
Esto le dice a UART que el MODEM est listo para establecer una
conexin.
Esta lnea le informa al MODEM que la UART est lista para transmitir
datos.
Este es opuesto a DSR. Le indica al MODEM que la UART no est lista
para establecer una conexin.
Se activa cuando el MODEM detecta una seal de ring desde el PSTN.
Tierra

Configuracin del USERPORT para manejo del puerto serial.


[2]

Puerto serial: Este no aparece por defecto reflejado en la ventana de USERPORT .


Para conocer el direccionamiento de un puerto en una PC con Windows XP se debe hacer lo siguiente:

Desde el Panel de Control, abrir la carpeta de sistema (Figura 2)

Figura 2. Smbolo del sistema.

En el cuadro de dilogo Propiedades del Sistema (Figura 3), se debe elegir la pestaa Hardware y hacer
click sobre el botn "Administrador de dispositivos".

29

Figura 3. Vista ventana Propiedades del sistema.

En el rbol de dispositivos, se debe elegir la carpeta de puertos y hacer click con el botn derecho del mouse
sobre el puerto que se desea conocer su direccionamiento (Figura 4). Elegir la opcin "Propiedades" del
men contextual.

Figura 4. Administrador de dispositivos, seleccin de puerto.

Seleccionar la pestaa recursos del cuadro de dilogo, "Propiedades del puerto" y observar el direccionamiento que
aparece en el Intervalo de E/S, Figura 5, en esta venta aparecen dos valores el primero representa el intervalo de
direccionamiento al puerto serial, mientras que IRQ 04 representa el primer puerto serial (COM1).

Figura 5. Ventana Propiedades del puerto.

30
Instrucciones para configurar el puerto serial.

En lenguaje C, existe una instruccin especial para manejar la comunicacin serial


siguiente sintaxis: int bios com(int cmd, char abyte, int port);

[3]

. Esta instruccin posee la

Tabla 2. Instrucciones para manejo de puerto serie.


cmd

Especifica la operacin a realizar

abyte

es un carcter que se enviar por el puerto serial

port

es la identificacin del puerto serial (desde 0 para COM1


hasta 3 para COM4)

El parmetro cmd puede tener los siguientes valores y significados:


0
1
2
3

Inicializa el puerto port con los valores dados por abyte


Enva el carcter abyte por el puerto port
Lee el carcter recibido por el puerto port
Retorna el estado del puerto port

Para la inicializacin del puerto, el carcter abyte tiene las interpretaciones que se muestran en la Tabla 3.
Tabla 3. Interpretaciones para el carcter abyte.
0x02
0x03

7 bits de datos
8 bits de datos

0x00
0x04

1 bits de parada
2 bits de parada

0x00
0x08
0x18

Sin paridad
Paridad impar
Paridad par

0x00
0x20
0x40
0x60
0x80

110 baudios
150 baudios
300 baudios
600 baudios
1200 baudios

0xA0
0xC0
0xE0

2400 baudios
4800 baudios
9600 baudios

Para configurar el puerto con algunos parmetros, basta con realizar una operacin OR con los valor deseado, por
ejemplo, para 1200 baudios, sin bit de paridad, sin bit de parada y 8 bits, basta con seleccionar la palabra dada por:
abyte = 0x80 | 0x00 | 0x00 | 0x03
o lo que es equivalente,
abyte = 0x83
Para la lectura de un carcter que se haya recibido o del estado del puerto, se deben utilizar variables en las cuales
se almacenen los valores de retorno; en ambos casos se obtienen valores de 16 bits. Para la lectura de un dato
recibido, los 8 bits menos significativos corresponden al dato y los 8 ms significativos al estado del puerto; si alguno
de estos ltimos est en "1 ", un error ocurri; si todos estn en "0", el dato fue recibido sin error.

31
Cuando el comando es 2 3 (lee el carcter o el estado del puerto), el argumento abyte no se tiene en cuenta. Para
configurar el puerto COM1 con los parmetros del ejemplo dado anteriormente, basta con la instruccin:

Bios com (0,0x83,0); /*(inicializar, parmetros, COM1)*/

El manejo de los comandos y las instrucciones para la configuracin de los puertos aqu expuestos slo tendrn
sentido en la medida en que se utilice el puerto serial para establecer una comunicacin bien con otras PC o bien con
dispositivos electrnicos como microcontroladores.

EQUIPO Y MATERIALES.

2 PC
1 Cable interfaz puerto serie.

PRERREQUISITOS.
Que el alumno acuda al laboratorio de Programacin Avanzada contando con un cable para establecer comunicacin
con el puerto serial entre dos PCs. (debern estar soldados los pines correspondientes a RX entrada de datos Pin 2,
TX salida de datos Pin 3, GND tierra Pin 5 Figura 6)

Figura 6. Conexin entre DB9 para realizar comunicacin de puerto a puerto.

METODOLOGA.
El alumno debe desarrollar e implementar el programa necesario para la ejecucin de un chat entre dos PCs
a travs del puerto serial de las mismas (Figura 7).

Figura 7. Comunicacin serial(Chat)

32
VALUACIN DE LA PRCTICA.
Conclusiones:_________________________________________________________________________
_____________________________________________________________________________________
____________________________________________________________________________________.
Observaciones:_______________________________________________________________________
___________________________________________________________________________________.

BIBLIOGRAFA:
[1]http://www.monografias.com/trabajos-pdf/puertos-ordenador/puertos-ordenador.pdf
[2]Manual de configuracin del User Port. Web:http://hem.passagen.se/tomasf/UserPort/
[3]http://andersonramirez.tripod.com/rs232.htm

33

Figura Anexa (C)


Diagrama de flujo propuesto para la programacin.

Inicio
/*Declaracin de libreras
#include<>*/
#include<conio.h>
#include<stdio.h>
#include<dos.h>

/*Declaracin de variables globales. En


caso de que el programador lo desee*/

/*Declaracin de la funcin principal */


Voidmain()

{
/*Declaracin de variables locales. En caso de que se
requiera su uso*/
Int a,b,c,d,e,f,g;
int bios com(int cmd, char abyte, int port); //ver Tabla 2
float x;

/*Se verifica la accin a ejecutar y se determina el


cdigo ms adecuado para el programador: If, Else,
For ,etc */
Bioscom (0,0x83,0); /*(inicializar, parmetros, COM1)*/

/*Se finaliza la ejecucin de la funcin principal*/


}

Fin

34

Nombre de la Asignatura

LABORATORIO DE PROGRAMACIN AVANZADA


INTRODUCCIN AL USO DE MICROCONTROLADORES

Nombre de la Prctica
(PIC16F877A).
Nmero de Prctica

Duracin (Horas)

OBJETIVO (Resultado del aprendizaje)


El alumno aprender a identificar las instrucciones bsicas para controlar los puertos de salida de un
Microcontrolador (C), mostrando la salida en un tablero indicador de LEDs.

MARCO TERICO
Qu es un Microcontrolador (C)?
Muchos de los sistemas digitales pueden disearse empleando C, la seleccin del dispositivo depende del tipo de
aplicacin. Un C es un procesador que cuenta con memoria ROM y RAM, puertos de entrada/salida (E/S) y otros
dispositivos de propsito especial como es el convertidor analgico/digital (A/D), contadores, temporizadores y
puertos de comunicacin, en otras palabras es un microcomputador con funciones especiales. En la Figura 1 se
indica la estructura interna tpica de un C.

Figura 1. Estructura interna tipica de un C.

En el mercado existen una serie de dispositivos para todas las aplicaciones. El nombre actual que se utiliza significa
[1]
PIC Peripheral Interface Controller (Controlador de Interfaz Perifrico) .

35
Clasificacin de C.
Un C se caracteriza por su arquitectura Harvard con memorias de programas y de datos independientes, lo que
permite la accesibilidad simultnea y la diversidad en la longitud de posiciones y el tamao de ambas memorias
(Figura 2).

Figura 2.Esquema representativo de arquitectura Harvard.

Genricamente se clasifican segn el tamao de los datos en:


De 8 bits
De 16 bits
De 32 bits
Microchip slo fabrica de 8 y 16 bits. Estos de dividen en tres grandes gamas:
1. Gama Base
4. 33 instrucciones mquina de 12 bits de longitud cada una.
5. Su capacidad de memoria y el nmero de recursos internos son reducidos.
6. Est compuesto por 14 modelos de los cuales 6 estn encapsulados con slo 6 patitas.
7. Se los apoda como enanos.
2. Gama Media
11. El repertorio de instrucciones es de 35, de 14 bits cada una.
12. Dispone de un vector de interrupcin.
13. Es una gama numerosa que alcanza 71 modelos diferentes.
14. Se hallan encapsulados con 8 patitas y llegan hasta los que tienen 68 patitas.
3. Gama Mejorada
1. Dispone de 77 instrucciones de 16 bits cada una.
2. 2 vectores de interrupcin.
3. Esta gama responde a la nomenclatura: PIC18Xxxx.
4. Puede alcanzar una capacidad de memoria de programa de 128 Kb, la de datos 3963 bytes y
la EEPROM hasta 1Kb.
5. Dispone de perifricos muy especializados, como un convertidor analgico/digital de 10 bits;
hasta 5 temporizadores.
Mientras tanto las caractersticas ms relevantes de los PIC de 32 bits son las siguientes:
1.
2.
3.
4.
5.
6.
7.

CPU de 80 MHz, 1.56 DMIPS/MHz.


Cambio rpido de contexto y respuesta de interrupciones.
Capacidad de manipulacin individual de bits.
10/100 Ethernet, CAN2.0b, USB host/device/OTG
Controlador de interrupciones anidadas.
Puerto maestro de 16 bits para soporte de QVGA y memoria
Tensin desde 2.3 a 3.6 v, tolerancia de I/O: 5v

36
Micro controladores Flash
Los microcontroladores que ofrecen una mayor flexibilidad para la programacin son los que cuentan con memoria
elctricamente borrable Flash, ya que permiten grabar y re grabar el integrado.
El PIC16F877(Figura 3) cuenta con las siguientes caractersticas

[2]

Memoria de Programa tipo Flash 8Kx14


Memoria Datos 368 bytes
EEPROM 256 bytes
33 pines de Entrada/Salida
Encapsulado: 40 pines DIP, 44 pines PLCC y 44 pines TQFP
Soporta Xtal 20MHz
Voltaje de Operacin: 2.0 hasta 5.5VDC
Perifricos:
1 Convertidor A/D de 10-bits (8 canales)
2 Mdulos CCP (Captura, Comparador, PWM)
1 Modulo I2C
1 USART (Puerto Serie)
2 Timers de 8 bits
1 Timer 16 bits

Figura 3. Configuracin de pines del PIC16F877.

Compilador CCS C
Introduccin
Un compilador convierte el lenguaje de alto nivel a instrucciones en cdigo mquina; un cross-compiler es un
compilador que funciona en un procesador (normalmente una PC) diferente al procesador objeto. El
[3]
es un cross-compiles. Los programas son editados y compilados a instrucciones
compilador CSS C
mquina en el entorno de trabajo de la PC, el cdigo mquina puede ser cargado de la PC mediante
cualquier programador y puede ser depurado desde el entorno de trabajo de la misma.
El CCS es C estndar y, adems de las directivas estndar (#include, etc...), suministra unas directivas
especficas para PIC (#device, etc...); adems incluye funciones especficas (bit_set(), etc...). Se suministra
con un editor que permite controlar la sintaxis del programa.

37
Estructura de un programa.
Para escribir un programa en C con el CCS se deben tener en cuenta una serie de elementos bsicos de su
estructura (Figura 4).

Directivas de procesado: Controlan la conversin del programa a cdigo mquina por parte
del compilador.

Programas o Funciones: Conjunto de instrucciones. Puede haber uno o varios; en cualquier


caso siempre debe haber uno definido como principal mediante la inclusin de la llamada main().

Instrucciones: Indican cmo se debe comportar el PIC en todo momento.

Comentarios: Permiten describir lo que significa cada lnea del programa. Facilitan la
comprensin de las distintas expresiones tanto para el programador como para quien tiene que
interpretar dicho programa. No afecta a la compilacin.

Figura 4. Estructura bsica de un programa.

Tipos de dato.
CCS C acepta los siguientes tipos de datos (Tabla 1, Tabla 2):

Tipo

Tabla 1. Tipos de datos usados en CCS C.


Tamao
Rango

Descripcin

Int1
Short

Un bit

0a1

Entero de 1 bit

Int
Int8

8 bit

0 a 255

Entero

Int16
Long

16 bit

0 a 65535

Entero de 16 bit

Int32

32 bit

0 a 4 294967295

Entero de 32 bit

-38

Float

32 bit

1,175x10 a
-38
3,402x10

Coma flotante

Char

8 bit

0 a 255

Carcter

Void

Sin valor

Signed Int8

8 bit

-128 a +127

Enero con signo

Signed Int16

16 bit

-32768 a +32767

Entero largo con


signo

Signed Int32

32 bit

-2

-31

-31

a (+2 -1)

Entero 32 bit con


signo

38
Tabla 2. Tablas constantes y variables empleadas en CCS C.
Decimal
123

Se pueden especificar en
octal, decimal, binario o
hexadecimal.

Constantes
Se pueden definir como sufijo

Tambin se pueden definir


como caracteres especiales.

123

Octal (0)

0X123

Hexadecimal (0X)

0b010010

Binario (0b)

'X'

Carcter

'\010'

Carcter Octal

'\XA5'

Carcter
Hexadecimal

Int8

127U

Long

80UL

Signed INT16

80L

Float

3,14F

Char

Con comillas
simples 'C'

\n

Cambio de lnea

\r

Retorno de carro

\t

Tabulacin

\b

Backspace
Las variables
pueden ser
definidas con:

Variables

Las variables se utilizan para


nombrar
posiciones
de
memoria RAM; se deben
declarar
obligatoriamente,
antes de utilizarlas; para ello
se debe indicar el nombre y el
tipo de dato que se manejar.
Estas pueden ser del tipo :
Local: Slo se utilizan en la
funcin en la que fueron
declaradas.
Global: Se pueden utilizar en
todas
las
funciones del
programa. Estas son puestas
a cero cuando se inicia la
funcin principal main ()

Se define de la siguiente forma:


Tipo Nombre_variable[=valor inicia]
TIPO hace referencia a cualquiera de
los tipos de datos vistos. El
NOMBRE_VARIABLE
puede
ser
cualquiera y el valor inicial es opcional,
ejemplo:

Flota temp_limt=500;

Static:
Una
variable local se
activa
como
global,
se
inicializa a cero y
mantiene su valor
al entrar y salir de
la funcin.
Auto:
(Usadas
por defecto no
hace falta que se
indique) donde la
variable
existe
mientras
la
funcin
este
activa.
Esta
variable no se
inicializa a cero.
Su valor se pierde
cuando sale de la
funcin.
Extern: Permite
el
uso
de
variables
en
compilaciones
mltiples.

Funciones.
Las funciones son bloques de sentencias; todas las sentencias se deben enmarcar dentro de las funciones,
estas deben definirse antes de utilizarse.
Una funcin puede ser invocada desde una sentencia de otra funcin. Una funcin puede devolver un valor a
la sentencia que la ha llamado. El tipo de dato se indica en la definicin de la funcin; en caso de no indicarse
nada se entiende que es un int8 y en caso de no devolver un valor se debe especificar el valor void. La
funcin, adems de devolver un valor, puede recibir parmetros o argumentos.

39
La estructura de una funcin es:
Tipo_datoNombre_Funcin (tipo param1, param2,)
{
(sentencias);
}

La forma de devolver un valor es mediante la sentencia RETURN:


return (expresin);
return expersin;

Donde la expresin debe manejar el mismo tipo de dato que el indicado en la definicin de la funcin. En
caso de no devolver nada se finaliza con RETURN (de esta forma el compilador vuelve a la ejecucin de la
sentencia de llamada). Tambin se puede finalizar la funcin tan slo con la llave de cierre }.

Declaraciones de control.
Las declaraciones son usadas para controlar el proceso de ejecucin del programa (Tabla3).
Tabla 3. Declaraciones de control aceptadas por el compilador CCS C.
Instruccin.
Estructura de la funcin.
If-Else: Con ayuda de esta instruccin se pueden
tomar decisiones. Pueden anidarse los IF-ELSE
dando lugar a los ELSE- IF; esto permite decisiones
mltiples.

Switch: Es un caso particular de una decisin


mltiple. NOTA: No pueden existir dos Case con la
misma Constante.

For: Se usa para repetir sentencias.


Nota: Se pueden anidad bucles For utilizando
distintas variables de control.

While: se utiliza para repetir sentencias.


Do-While: La condicin de finalizacin se evala al
final del bucle, por lo que las sentencias se ejecutan al
menos una vez.

If (expresin)
Sentencia_1;
Else
Sentencia_2;
Primero se evala la expresin y si es (TRUE 1) ejecuta la
Sentencia_1, en el caso contrario (FALSE 0) ejecuta la
Sentencia_2.
Switch (expresin)
{
Case constante 1:
Sentencias;
Break;
Case constante 2:
Sentencias;
Break;

Default:
Sentencia;
}
Evala la expresin y en orden a la Constante adecuada realiza la
sentencia asociada. Si ninguno de los Case corresponde a la
constante se ejecuta Default (este comando es opcional).El comando
Break provoca la salida del Switch, de los contrario se ejecuta el
siguiente Case.
For ( inicializacin; condicin de finalizacin;
incremento)
{
Sentencias;
}
En las expresiones del For la inicializacin es una variable la cual
se le asigna una valor inicial con el que controlar
el bucle. La condicin de finalizacin sirve para
evaluar antes de ejecutar las sentencias si es
cierto o no, en el caso de ser cierta se ejecutan
las sentencias y en caso contrario se sale del For.
Por ltimo, la expresin de incremento o
decremento modifica la variable de control
despus de ejecutar el bucle.
While (expresin)
{
Sentencias;
}
La expresin se evala y la sentencia se ejecuta mientras la
expresin es verdadera, cuando es falsa se sale del While.
Do
{
Sentencias;
}
While (expresin);

40
Return: Se emplea para devolver datos en las funciones.
Break: Permite salir de un bucle, se utiliza para While, For, Do
y Switch.
Goto: Provoca un salto incondicional.

Otros

Comentarios.
Los comentarios en el programa facilitan la comprensin de las distintas expresiones tanto para el
programador como para quin tiene que interpretar dicho programa. No afectan a la compilacin por lo que
pueden ser tan extensos como el programador quiera.

Utilizando //. Al colocar estos signos se comienza el comentario y finaliza la lnea.


//comentario que termina al final de la lnea.

Utilizando /* y */. Se debe utilizar al inicio y al final del comentario.


/*Este comentario no finaliza al final de la lnea finaliza cuando se cierra el comentario*/

Directivas.
Las directivas de pre-proceso comienzan con el smbolo # y continan con un comando especfico. La
sintaxis depende del comando. Algunos comandos no permiten otros elementos sintcticos en la misma
expresin. Muchas de las directivas utilizadas por CCS son extensiones del C estndar (Tabla 4).

Tabla 4. Directivas de accin particular


#DEVICE chip: permite definir el PIC con el que se realizar
#device PIC16F84
la aplicacin.
#FUSES options: Permite definir la palabra de configuracin
#device PIC16F84
#Fuse XT, NOWDT, PUT, NOPROTECT
para programar un PIC. Para un PIC16F84 las opciones
posibles son:
LP, XT, HS, RC, NOWDT, WDT, NOPUT, PUT, PROTECT,
NOPROTECT.

#Include file name: Permite incluir fichero en el programa.

#Include <16F84.h>
#Fuse XT, NOWDT, PUT, NOPROTECT

#Use Delay (Clock=Speed): Permite define las frecuencias


del oscilador del PIC, el compilador lo utiliza para realizar
clculos de tiempo. Se puede utilizar M, MHz, K y KHz para
definir frecuencias.

#Include <16F877.h>
#use delay (clock=40000000)

Gestin de los puertos.


Los microcontroladores PIC tienen terminales de entrada/salida divididos en puertos, que se encuentran
nombrados alfabticamente A, B, C, etc. Cada puerto puede tener hasta 8 terminales que, de manera
bsica, se comportan como una entrada/salida digital. En funcin de las caractersticas del PIC, cada puerto
puede tener, adems, asignado un bloque funciona (Tabla 5).

La habilitacin como entrada o salida se realiza a travs del registro TRISx. Un valor 0 en estos
registros indica que la terminal correspondiente del puerto es de salida, mientras que un valor 1
indica que ser de entrada.
La gestin del bus de datos se realiza a travs de los registros PORTx.

41
Tabla 5. Instrucciones para gestin de puertos.

#Byte variable= constante;

#byte TrisA=0x85 //variable TrisA en 85h


#byet PortA=0x05//variable PortA en 05h
Una vez definidas estas variables se pueden configurar y controlar los
puertos a travs de los comandos de asignacin.
Tris A=0xFF; //8 terminales de entrada
Tris B=0x00;//8 terminales de salida
Tris C=0x0F;//4 terminales de mayor peso de salida, 4
terminales de menor peso de entrada.
Escritura en los puertos:
PORTC=0c0a;//Salida del dato 00001010 por el puerto C.
Lectura de puertos:
Valor=PORTA;//Asigna el dato del puerto A a VALOR

Manejo de registros y variables bit a bit

Bit_clear(var,bit); // pone a 0 el bit especifico(0-7) de la variable


Bit_set(var,bit); //pone a 1 el bit especifico (0-7) de la variable.
Bit_test(var,bit); //Muestra el bit especifico (0-7) de la variable.

El primer programa.
Los pasos ms importantes para la ejecucin de un primer programa son:
1. Utilizar la instruccin de cabecera donde se especifican las caractersticas del C PIC.
2. Se definen, mediante las correspondientes directivas, la velocidad del PIC y el puerto utilizado. Es
importante definir la velocidad inmediatamente despus del PIC ya que muchos drivers (como el
LCD) lo necesitan para configurarse.
3. Se puede describir la funcin principal MAIN () (desarrollo del programa principal).Y ampliar el
programa para que ejecute las operaciones que deseemos empleando las diferentes directivas antes
mencionadas.
4. Se procede a la compilacin del programa.

EQUIPO Y MATERIALES.

PC.
Programador de PICS.
PIC 16f877A configurado para trabajar.
LEDs
Resistencias de 330 Ohms.
Tablilla de pruebas.

PRERREQUISITOS.
Que el alumno acuda al laboratorio de Programacin Avanzada contando con:
1. El PIC16F877A acondicionado para su uso.

METODOLOGA.
El alumno debe realizar las siguientes aplicaciones visible en un arreglo de LEDs:
15. Secuencia par e impar: Desarrollar e implementar un programa que muestre en una lnea de salida donde se
enciendan primero los indicadores correspondientes a nmero par y en seguida los correspondientes a
nmero impar, secuencia dada en nmeros binarios, ver ejemplo Figura 5.

42

Figura 5. Tablero de LEDs indicadores secuencia de nmeros PAR e IMPAR.

16. Contador de 0-255: Desarrollar e implementar el programa necesario que muestre en una lnea de datos una
secuencia binaria correspondiente a un contador de 0 a 255, ver ejemplo Figura 6.

Figura 6. Tablero de LEDs indicadores contador 0-255.

17. Corrimiento de izquierda a derecha: Desarrollar e implementar el programa que muestre en una lnea de
salida los datos correspondientes al corrimiento de bits de izquierda a derecha, ver ejemplo Figura 7.

43

Figura 7. Tablero de LEDs indicadores secuencia de Izquierda a Derecha.

18. Corrimiento del centro a los lados: Desarrollar e implementar el programa que muestre en una lnea de datos
el corrimiento de bits partiendo del centro del arreglo de LED hacia las laterales del mismo, ver ejemplo
Figura 8.

Figura 8. Tablero de LEDs indicadores secuencia de Derecha a Izquierda.

EVALUACIN DE LA PRCTICA.
Conclusiones:_________________________________________________________________________
_____________________________________________________________________________________
_____________________________________________________________________.
Observaciones:_______________________________________________________________________
_____________________________________________________________________________________
______________________________________________________________________.

44
BIBLIOGRAFA:
[1]http://www.virtual.unal.edu.co/cursos/ingenieria/2000477/lecciones/110701.htm
[2] Datasheet PIC16F877.
[3] Garca Breijo Eduardo. Compilador C CCS y simulador PROTEUS para micro controladores PIC. Editorial Alfa
Omega.

45

Figura Anexa (D)


Diagrama de flujo propuesto para la programacin.

Inicio
/*Declaracin de libreras
#include<PIC en uso.h>*/
#include<16F877A.h>
#fuse XT, NOWDT, NOPROTECT
#Use delay (clock=4000000)

/*Declaracin de variables globales. En


caso de que el programador lo desee*/
#byte porta= 0x05
#byte portb= 0x06

/*Declaracin de la funcin principal */


Voidmain()

{
/*Declaracin de variables locales. En caso de que se
requiera su uso*/
/*Se verifica la accin a ejecutar y se determina el
cdigo ms adecuado para el programador: If, Else,
For ,etc */
Set_tris_a(0x1F);
Set_tris_b(0x00);
While (1)
{
Output_b(input_a());//salida del puerto
}
/*Se finaliza la ejecucin de la funcin principal*/
}

Fin

46

Nombre de la Asignatura

LABORATORIO DE PROGRAMACIN AVANZADA

Nombre de la Prctica

USO DE C CONFIGURADO PARA ENTRADA Y SALIDA DE DATOS


(PIC16F877A).

Nmero de Prctica

Duracin (Horas)

OBJETIVO (Resultado del aprendizaje)


El alumno aprender a identificar y manejar las instrucciones para controlar los puertos de un Microcontrolador (C),
usando como elemento de entrada un teclado matricial de 4x4, y como elemento de salida una pantalla LCD de 2x16.

MARCO TERICO
Entradas y salidas.
LCD.
Se acostumbra utilizar LCD con un nmero de lneas variable y un nmero de caracteres por lnea tambin
variable, por ejemplo, con 2x16 (Figura 1) donde, se trabaja con dos lneas de 16 caracteres cada una
[1]
(Tabla 1) .

Figura 1. LCD 2X16 tipo HD44780.

47
Tabla 1. Comandos de control para LCD en C.

El bus de datos es de 8 bits, aunque tambin existe la


posibilidad de trabajar con 4 bits (con un menor nmero
de caracteres). El compilador C incluye un fichero
(driver) que permite trabajar con un LCD. El archivo
LCD.C y debe llamarse como un #include. Este archivo
dispone de varias funciones definidas, como por
ejemplo: Lcd_int();Es la primera funcin que debe ser

Borra el LCD y lo configura en el formato de 4 bits, con dos


lneas y con caracteres de 5x8 puntos, en modo encendido,
cursor apagado y sin parpadeo.
Configura el LCD con un auto incremento del puntero de
direcciones y sin desplazamiento del display real.

llamada.
Indica la posicin de acceso al LCD. Por ejemplo (1,1) indica
la primera posicin de la primera lnea.
Lcd_getc (byte x, byte y);
Lee el carcter de la posicin (x,y)
S es una variable de tipo Char. Esta funcin escribe la
variable en la posicin correspondiente. Si adems se indica:
Lcd_putc(char s);
\f se limpia el LCD.
\n el cursor se va a la posicin (1,2).
\b el cursor retrocede una posicin.
El compilador de C ofrece una funcin ms verstil para trabajar con el LCD:
String es una cadena o array de caracteres, valueses una
lista de variables separada por comas y fnamees una funcin.
El formato es %ntdonde n es opcional y puede ser:
1-9: para especificar cuantos caracteres se deben
especificar.
01-09: para indicar la cantidad de ceros a la
izquierda.
1.1-9.9: para coma flotante.
t puede indicar:

Lcd_gotoxy(byte x, byte y);

Printf (string)
Prinf(cstring, values)
Printf(fname, cstring,values)

c carcter.
s cadena de carcter.
u Entero sin signo.
d Entero con signo.
Lu Entero largo sin signo.
Ld Entero largo con signo.
x Entero hexadecimal (minsculas).
X Entero hexadecimal (maysculas).
Lx Entero largo hexadecimal (minsculas).
LX Entero largo hexadecimal (minsculas).
f Flotante con truncado.
g Flotante con redondeo.
e Flotante en formato exponencial.
w Entero sin signo con decimales insertados.
La 1 cifra indica el total, la 2 el nmero de
decimales.

El driver LCD.C est pensado para trabajar con el PORTD o el PORTB. Por defecto, utiliza el PORTD a menos que
le indiquemos lo contrario mediante.
#define use_portb_lcd TRUE
Por defecto este driver usa siete terminales para la comunicacin entre el LCD y el PIC.

48
Teclado (keypad).
Las entradas a travs de interruptores son muy habituales en los sistemas con microcontroladores para trabajar con
una mayor informacin o informacin alfanumrica (Figura 2).

Figura 2. Teclado matricial 4X4

El teclado 4x4 se utiliza para introducir los datos numricos en el microcontrolador. Consiste en 16 botones
organizados en forma de matriz en cuatro filas y cuatro columnas.
El teclado se utiliza de la siguiente manera.
1. Cuatro pines del microcontrolador se debe configurar como salidas, mientras que los otros cuatro pines se
deben configurar como entradas. Para que el teclado funcione apropiadamente, las resistencias del pulldown se deben conectar a los pines de entrada del microcontrolador. As se define el estado lgico sin pulsar
ningn botn (Figura 3)

Figura 3. Esquema de conexin del teclado 4x4.

2. Los pines de salida estn en uno lgico (1), mientras que se lee el estado lgico de los pines de entrada. Al
pulsar un botn, un uno lgico aparece en algn pin de entrada.
3. Al combinar unos y ceros en los pines de salida se define cual botn fue pulsado.

49
El compilador de C incluye el driver KBD.C para manejar el teclado. Las funciones que se incorporan son las
siguientes (Tabla 2):
Tabla 2. Instrucciones para manejo de teclado matricial 4X4 en C.

Kbd_init()

Kbd_getc()

Inicializa el sistema, debe ser la primera funcin en el programa.

Devuelve el valor de la tecla pulsada en funcin de la tabla que tiene programada. (Figura3). A
travs de la modificacin de esta tabla podemos adecuar el resultado del programa en distintas
cartulas del teclado.

Figura 4. Definicin de teclas el archivo KBD.C

El archivo KBD.C est pensado para trabajar con el PORTB o el PORTD. Activando o no la lnea #define
use.portb_lcd TRUE podemos seleccionar el PORTB.
Se puede trabajar con el LCD y el teclado a travs de puertos separados o compartiendo el mismo puerto.

EQUIPO Y MATERIALES.

PC.
Programador de PICS.
PIC 16F877A configurado para trabajar.
Resistencias de 330 Ohms.
Un LCD de 2x16.
Un teclado matricial de 4x4.

PRERREQUISITOS.
El alumno debe acudir al laboratorio de programacin avanzada contando con el PIC16F877A acondicionado para su
uso, as como debidamente conectado para su interaccin con el teclado matricial 4x4 y la pantalla LCD.

METODOLOGA.
El alumno debe desarrollar el programa que permita establecer como elemento de entrada de datos al teclado
matricial, y como elemento de salida se muestre la informacin deseada en el Display, teniendo como interfaz de
comunicacin al PIC16F778A (Figura 5).

50

Figura 5. Ejemplo. Conexin entre PIC16F877A, Pantalla LCD y Teclado matricial.

EVALUACIN DE LA PRCTICA.
Conclusiones:_________________________________________________________________________
_____________________________________________________________________________________
_____________________________________________________________________.
Observaciones:_______________________________________________________________________
_____________________________________________________________________________________
______________________________________________________________________.

BIBLIOGRAFA:
[1]Garca Breijo Eduardo. Compilador C CCS y simulador PROTEUS para micro controladores PIC. Editorial Alfa
Omega.

51

Figura Anexa (E)


Diagrama de flujo propuesto para la programacin.

Inicio
/*Declaracin de libreras
#include<PIC en uso.h>*/
#include<16F877A.h>
#fuse XT, NOWDT, NOPROTECT
#Use delay(clock=4000000)

/*Declaracin de variables globales. En


caso de que el programador lo desee*/
#byte porta= 0x05
#byte portb= 0x06

/*Declaracin de la funcin principal */


Voidmain()

{
/*Declaracin de variables locales. En caso de que se
requiera su uso*/
/*Se verifica la accin a ejecutar y se determina el
cdigo ms adecuado para el programador: If, Else,
For ,etc */
Set_tris_a(0x1F);
Set_tris_b(0x00);
While (1)
{
Output_b(input_a());//salida del puerto
}
/*Se finaliza la ejecucin de la funcin principal*/
}

Fin

52

Nombre de la Asignatura

LABORATORIO DE PROGRAMACIN AVANZADA

Nombre de la Prctica

TRANSMISIN/RECEPCIN DE DATOS VIA UN MDULO DE


COMUNICACIN XBee.

Nmero de Prctica

Duracin (Horas)

OBJETIVO (Resultado del aprendizaje)


El alumno implementar un programa para establecer una comunicacin inalmbrica (empleando antenas XBee)
entre dos PIC16F877 acondicionados a una pantalla LCD de 2x16 para mostrar los datos recibidos y un teclado
matricial de 4X4 como elemento de entrada.

MARCO TERICO.
Introduccin.
Los mdulos XBee/XBee-PRO fueron diseados para operar dentro del protocolo ZigBee soportando las
necesidades particulares de las redes de sensores de bajo costo y consumo, requiriendo alimentacin mnima y a la
vez permitiendo el transporte confiable de datos entre dispositivos remotos.
El mdulo opera dentro de la banda ISM (Industrial, Scientific and Medical) utilizando una frecuencia de 2.4 GHz.
Los requerimientos mnimos de conexin (Tabla 1) consisten en proveer alimentacin mediante dos terminales (VCC
y GND) y dos terminales de datos (Vin y Vout). Para la actualizacin de firmwares es necesario agregar las
conexiones de los pines RTS y DTR.
Los mdulos XBee fueron diseados para ser montados en un zcalo, no requiriendo ningn soldado. Para ello
disponen dos hileras de 10 pines separadas entre ellas por 22 mm (Figura 1).

Figura 1.Vista inferior y superior de mduloXBee.

53
Tabla 1. Detalles tcnicos del mduloXBee.

Circuito bsico para el XBee.


La Figura 2 muestra las conexiones mnimas que necesita el mdulo Xbee para poder ser utilizado. Luego de esto,
se debe configurar segn el modo de operacin que se desea para la aplicacin requerida por el usuario.

Figura 2. Conexiones mnimas requeridas para el mduloXBee.

El mdulo requiere una alimentacin desde 2.8 a 3.4 V, la conexin a tierra y las lneas de transmisin de datos por
medio del UART (TXD y RXD) para comunicarse con un micro controlador, o directamente a un puerto serial
utilizando algn convertidor adecuado para los niveles de voltaje.

54
Configuracin del mdulo XBee.
Modo Transparente
En este modo todo lo que ingresa por el pin 3 (Data in), es guardado en el buffer de entrada y luego
transmitido y todo lo que ingresa como paquete RF, es guardado en el buffer de salida y luego enviado por el
pin 2 (Data out).
El modo Transparente viene por defecto en los mdulos Xbee. Este modo est destinado principalmente a la
comunicacin punto a punto, donde no es necesario ningn tipo de control. Tambin se usa para reemplazar
alguna conexin serial por cable, ya que es la configuracin ms sencilla posible y no requiere una mayor
configuracin.
En este modo, la informacin es recibida por el pin 3 del mdulo Xbee, y guardada en el buffer de entrada.
Dependiendo de cmo se configure el comando RO, se puede transmitir la informacin apenas llegue un
carcter (RO=0) o despus de un tiempo dado sin recibir ningn carcter serial por el pin 3. En ese
momento, se toma lo que se tenga en el buffer de entrada, se empaqueta, es decir, se integra a un paquete
RF, y se transmite. Otra condicin que puede cumplirse para la transmisin es cuando el buffer de entrada se
llena, esto es, ms de 100 bytes de informacin (Figura3).

Figura 3.Correspondencia de buffer.

Cable Virtual I/O


Se utilizan para crear un canal de comunicacin de manera transparente entre los pines de un mdulo y otro.
Cada pin de entrada tiene su propio pin de salida ya definido entre nodos, esto permite una forma totalmente
simple de enviar informacin, controlar o medir de manera sencilla y rpida, sin necesidad de complicadas
configuraciones.

Figura 4. El esquemtico de los pines.

55
El envo es transparente para el usuario, ya que el paquete recibido, puede o no ser entregado por el pin
DOUT (pin 3), lo que permite utilizar ese pin para el envo de otro tipo de informacin e incluso seguir
recibiendo desde otros mdulos.
Para crear un cable virtual, se debe notar que los pines de entrada/salida o I/O, estn asociados entre s, es
decir, vienen en pares. Por esto, slo se pueden crear cables entre estos pares de pines de distintos
mdulos (Tabla 2).
Cabe mencionar que DIO8 (ni DO8 ni DI8, pines 4 y 9 respectivamente) no puede usarse como cable virtual.
Tabla 2.Comandos para Cable Virtual.

Nombre PIN

Dn
(Con n entre 0 y 8)

Pn
(con n entre 0 y 1)

Configuracin I/O
Valor
0
1
2
3
4
5
0
1
2

IR

0x0-0xFFFF
(x 1 ms)

IT

0x0-0xFF

IA

0x0-0xFFFFFFFFFFFFFFFF

UI

0
1

Descripcin
Deshabilitado.
ADC(excepto 7 y 8)
Entrada Digital
Salida Digital L (Low)
Salida Digital H (High)
Deshabilitado
RSSI
PWM
Ajusta la tasa de muestreo de los
conversores ADC y digitales DIO.
Sin IR= 0x0A (10 en decimal),
entonces la tasa ser de 10ms o
100Hz
Nmero de muestras que gurda
en buffer antes enviarlas. Buffer
del mdulo es cercano a 93 bytes
de datos de muestra. Como los
conversores son de 10 bit, cada
muestra tiene 2 bytes, por lo que
deja un mximo de 46 muestras
(IT=0x2C) para el tamao del
buffer.
Indica la direccin del mdulo al
cual se le aceptarn los paquetes
para cambiar las salidas I/O.
Acepta direcciones de 16 y 64 bit.
Si IA=0xFFFFFFFFFFFFFFFF no
s aceptaran paquetes de ningn
mdulo. sta es la configuracin
por defecto. Si IA=0xFFFF se
aceptarn cambios de cualquiera
de los paquetes.
Este comando habilita o no la
salida por UART de los paquetes
recibidos.
Deshabilitado.
Habilitado.

56
Para su uso se debe escribir AT, ms el comando y luego el valor que se desea asignar. Por ejemplo si se
quiere configurar el pin 19 como convertidor analgico, se debe ingresar ATD12, donde D1 indica el
convertidor AD1 ubicado en el pin 19, y el 2 indica que se utilizar como convertidor analgico segn la tabla
anterior.
Montaje
La XBee Break out Board es una placa necesaria para adaptar los pines de 2 mm de separacin del mdulo XBee a
los 2.5 mm de separacin del protoboard. Se deben montar los zcalos y las tiras de pines correspondientes a los
puntos de conexin de esta placa.

Direccionamiento de los mdulos.


Los mdulos permiten 2 tipos de direccionamiento. La de 16 bit y la de 64 bits. La principal diferencia es que en la de
64 bit, es posible obtener una mayor cantidad de direcciones y por lo tanto, una mayor cantidad de nodos o equipos
funcionando en la misma red. Son a travs de estas direcciones que los mdulos se comunican entre s.

1. Direccionamiento de 16 bit.
El comando MY, define un nmero de 16 bit como direccin del mdulo dentro de la red. El rango se
encuentra entre 0x0 y 0xFFFE (la direccin 0xFFFF y 0xFFFE son para habilitar la direccin de 64-bit, por lo
que si se desea utilizar direccionamiento de 16 bits, estos valores no deben ser usados). Para definirla se
ingresa ATMY y el nmero en formato hexadecimal, pero sin el 0x.
El comando DL, permite definir un nmero de 16 bit como direccin del mdulo de destino dentro de la red
al cual se va a realizar la comunicacin. El rango debe estar entre 0x0 y 0xFFFE(las direcciones 0xFFFE y
0xFFFF se utilizan para direccionamiento de 64 bits).
As para habilitar el direccionamiento de 16 bit, se debe utilizar una direccin menor a 0xFFFEcon el
comando MY, de igual modo para DL y se debe dejar en cero el comando DH=0 (ATDH0). No se permite
usar la direccin 0xFFFE ni 0xFFFE para el direccionamiento de 16.

2. Direccionamiento de 64 bits
El nmero 0xFFFF y 0xFFFE del comando MY, se usa cuando se desea desactivar el direccionamiento de
16 bit, y se habilita el uso de la direccin de 64 bit. Con este direccionamiento ya no es posible definir la
direccin de origen del mdulo, ya que sta se asigna automticamente. En este caso, la direccin del
mdulo corresponde a su nmero serial, que viene de fbrica y el cual es imposible de cambiar. Este nmero
se encuentra guardado en dos variables de 32 bit cada una (SL y SH) y es nico. SL lee los 32 bit menos
significativos del nmero serial y SH los 32 ms significativos.
Cuando se utiliza direccionamiento de 64 bit, para asignar una direccin de destino, se utilizan los comandos
DL y DH. stos son de 32 bit cada uno (para el direccionamiento de 16 bit, DL se maneja como uno de 16,
mientras que DH se mantiene en cero) y juntos (DL+DH) forman el nmero de 64 bit que debe corresponder
con el nmero serial de otro mdulo formado por SL+SH. As para algn dato, DL debe ser igual a SL y DH
debe ser igual a SH, donde SL+SH corresponden al nmero serial de un mdulo destino configurado para
direccionamiento de 64 bits.
Para el direccionamiento de 64 bit, se debe dejar MY como 0xFFFF (ATMYFFFF) o 0xFFFE (ATMYFFFE) y
elegir una direccin de destino usando DL+DH, que debe corresponder a una direccin de 64 bit de otro
mdulo, indicando su nmero serial dado por SL+SH. Para consultar este nmero se debe ingresar ATSL (32
bit menos significativos) y luego ATSH (32 bit ms significativos), entregando como respuesta los nmeros
seriales en formato hexadecimal.

57
Software X-CTU.
X-CTU, permite configurar al mdulo XBEE de manera natural, fcil y rpida.

Figura 5. Opcin PCsetting.

En la pestaa llamada PC Settings(Figura 5) es posible configurar el nmero y la velocidad del puerto serial, as
como la paridad, entre otras cosas. Adems permite configurar opciones ms generales para los comandos AT,
como el signo elegido para salir del modo de comandos, que por defecto corresponde al signo + (2B en
hexadecimal).

58
Figura 6. Opcin Range Test.

En la pestaa Range Test (Figura 6) es posible enviar una cadena de datos de cualquier tipo para probar el rango
de alcance de la seal. Esto genera automticamente datos y los enva por el mdulo, de tal forma que permite
verificar cuales datos llegan buenos y cuales no y a partir de esa estadstica determinar el rango o alcance de la
seal.

Figura 7. Opcin Terminal.

En la pestaa de Terminal (Figura 7), todo lo escrito aqu, entra directamente al mdulo como si estuviera en el
modo de comandos.

Figura 8. Opcin Modem Configuration.

Esta pestaa de MODEM Configuration (Figura 8), permite leer, guardar o cargar cierta configuracin
predeterminada. Permite ver cmo est configurado cada mdem, cambiar alguna caracterstica o luego guardarla o
cargarla de una previamente guardada.

Usando Hyperterminal
Para abrir el Hyperterminal ingresar en Windows a Inicio->Programas->Accesorios->Comunicaciones. Crear una
nueva conexin utilizando el puerto al cual se encuentra el mdulo. En este ejemplo el puerto es el COM31. Se elige
la configuracin bsica de 9600 baudios 8N1 y sin Control de Flujo. Antes de iniciar la conexin se recomienda
ingresar a Archivos->Propiedades. En la ventana emergente elegir la pestaa Settings y presionar el botn ASCII
Setup. Activar las casillas Echo typed characters locally (permite ver lo que se enva por el puerto) y Append line
feeds to in comming line end (agrega fin de lnea a los mensajes entrantes). Lo anterior evita que se sobrescriban

59
los comandos AT que se envan con las respuestas del mdem (Figura 9).

Figura 9. Configuracin hyperterminal

Figura 10. Comando AT por hyperterminal.

Se parte con el signo +++ que indica el ingreso al modo de comandos (Figura 10). El Hyperterminal llamado Xbee
Explorer 2, ser el que posea el ECHO en sus conectores. El comando SL y SH entregarn el nmero serial de 64
bit de cada mdem.
Este nmero servir para diferenciarlos entre ellos en caso de cualquier error en la configuracin, ya que este no se
puede modificar. El comando BD=3, indica que la comunicacin entre el Host y el mdem es de 9600 baudios. El
comando CH=0x0C, indica que se elige el canal 12. La PAN ID es ID=0x3332. Tanto BD, CH como ID poseen los
valores indicados atrs como valores por defecto.
La direccin del mdulo 2 qued como MY=0xBBBB, mientras que la de destino es DL=0xAAAA. Para el mdulo 1,
lo anterior es al revs. Al final el comando WR graba todos los parmetros en la memoria. Con el comando CN se
sale del modo de comandos.
La configuracin anterior har que los dos mdems se comuniquen entre s, donde todo lo que entra por el PIN DIN
en uno, sale por el DOUT del otro. Luego se cortocircuitan los pines DIN y DOUT del mismo mdem para provocar el
ECHO. Esto har que todo lo que se escriba en un mdem, se devolver y aparecer en la pantalla de vuelta.

60

EQUIPO Y MATERIALES.

Mdulo de comunicacin XBee.

Zcalo de montaje para XBee.

PIC16F877A

Teclado matricial 4X4.

Pantalla LCD 2X16.

PRERREQUISITOS.
El alumno debe acudir al laboratorio de Programacin Avanzada contando con el PIC16F877A acondicionado
elctricamente para interactuar con el modulo de comunicacin XBee, teniendo como interfaz de entrada el teclado
matricial 4x4 y como interfaz de salida la pantalla LCD.

METODOLOGA.
El alumno debe diseare implementar un programa que permita establecer comunicacin inalmbrica entre dos
mdulos XBee(configurados como elemento I/O), empleando como elemento de entrada un teclado matricial 4X4,
como elemento de salida una pantalla LCD 2X16 y como elemento de control al PIC16F877A(Figura 5).

Figura 5.Diagrama a bloques para transmisin y recepcin mediante mdulos XBee.

EVALUACIN DE LA PRCTICA.
Conclusiones:________________________________________________________________________
_____________________________________________________________________________________
______________________________________________________________________.
Observaciones:_______________________________________________________________________
_____________________________________________________________________________________
______________________________________________________________________.

61
BIBLIOGRAFA:
[1]Gua de usuario XBee serie 1: http://www.olimex.cl/pdf/Wireless/ZigBee/XBee-Guia_Usuario.pdf

También podría gustarte