Escolar Documentos
Profissional Documentos
Cultura Documentos
DE MEXICO
FACULTAD DE INGENIERIA
CROFI
Club de Robtica de la Facultad de Ingeniera
MICROCONTROLADORES PIC CON C APLICADO
A LA ROBOTICA
1
CROFI-UNAM
Temario.
1. Introduccin.
a. Qu es un microcontrolador?
b. Definicin de microcontrolador
c. Diferencia entre microcontrolador y microprocesador
d. Codigo Fuente
e. Ensambladores
f. Interpretes
g. Compiladores
2. La familia de los PICs
a. El porque los PICs se han colocado en el mercado
b. Gamas
i. Gama baja o bsica PIC16C5X
ii. Gama media PIC16FXXX
iii. Gama alta PIC17CXXX con instrucciones de 16 bits
iv. Gama mejorada PIC18FXXX con instrucciones de 16 bits
v. Los de 8 pines PIC12(C)FXXX
3. El PIC16F887
a. El microcontrolador PIC16F887
b. Recursos
c. Caractersticas
d. Diagrama de pines
e. Descripcin de los pines y puertos
4. Lenguaje C
a.
b.
c.
d.
e.
f.
g.
Compilador
Estructuras de control
Operaciones lgicas
Declaracin y uso de variables
Uso de funciones
Programa bsico
Simulador
2
CROFI-UNAM
5. Mdulos
a. Entradas y salidas digitales
b. Bootloader
c. Uso LCD 16x2
d. Convertidor A/D
e. Mdulo CCP, especficamente PWM
f. Comunicacin serie RS232
g. Comunicacin serie I2C
h. Comunicacin USB
i. Timers
j. Interrupciones
k. Uso LCD Grafico
l. Teclado matricial
m. Encoders
n. Motor a pasos
o. Servomotores
6. Proyecto
a.
b.
c.
d.
e.
Robot de Micromouse
Robot de laberinto
Limpiador de playa
Brazo robtico
Otro
3
CROFI-UNAM
TEMA 1 Introduccin
1Qu es un micro controlador?
Un microcontrolador es un tipo de computadora en miniatura que puedes encontrar en los
pequeos dispositivos electrnicos. Unos ejemplos comunes de aparatos que utilizamos a diario y
que en su interior tienen uno o varios microcontroladores se muestran en la figura siguiente. Si
estos dispositivos solo tienen botones y displays, es muy probable que posean un cerebro
constituido por un microcontrolador programable.
4
CROFI-UNAM
5
CROFI-UNAM
Microcontrolador
Dispositivo electrnico que posee todas las caractersticas de una PC, claro que en pequea escala.
Pues cuenta con puertos de entrada y salida de informacin, puertos de comunicacin, Unidad
aritmtica Lgica, memoria interna (RAM y ROM), y una Unidad Central de Procesos.
Microprocesador
Este elemento en cambio, solo es un Unidad Central de Procesos, que de manera externa (desde
un punto de vista de una PC) hay que conectarle la memoria, puertos y unidades de
almacenamiento (por eso se monta en una tarjeta madre para poder utilizarlo), tiene la ventaja de
ser mas escalable que un microcontrolador.
Algo muy importante cuando se estudia cualquier microcontrolador, es el entender cul es la
diferencia entre cdigo fuente, cdigo objeto, compilador y ensamblador.
Cdigo Fuente
EI cdigo fuente, es almacenado en el archivo fuente, este archivo est escrito con el American
Standar Code for Information Interchange (ASCII) y contiene las sentencias del programa y
comentarios (utilizados para que los humanos puedan entender lo que el programa est
ejecutando). EI archivo fuente es creado en un editor estndar (como NotePad o WordPad) o
puede ser construido en un editor IDE (ambientes de desarrollo integrado) que posee mltiples
aplicaciones que apoyan en el desarrollo de la aplicacin. EI archivo fuente es usado como entrada
para los ensambladores, interpretes o compiladores que producen las instrucciones necesarias
para controlar un dispositivo. En el caso de un ensamblador o compilador, el cdigo fuente es
convertido en un archivo objeto o archivo hex, que finalmente ser grabado dentro del
microcontrolador que controla el dispositivo. El intrprete es construido dentro del
microcontrolador del dispositivo y ejecuta el archivo fuente que es una serie de instrucciones y
comandos que determinan inmediatamente salidas a procesos intermedios.
El archivo fuente puede incluir otros archivos que proveen que adiciones al cdigo fuente o
prototipos para las libreras de funciones o datos requeridos por la aplicacin. Los archivos
include para ensamblar lenguajes de programacin generalmente terminan con *.inc que es la
extensin con la que terminan los archivos de sistema. Los archivos include para el lenguaje de
programacin C tienen como extensin una *.h los ensambladores y compiladores proveen de
estos archivos include para hacer las tareas del desarrollo de aplicaciones ms sencillas,
basndose en los requerimientos de tu aplicacin. Al finalizar las operaciones de ensamblar o
compilar se produce en un archivo objeto (usualmente terminado en *.obj) o un archivo hex. El
archivo hex es la aplicacin completa, lista para programarse dentro de un microcontrolador.
El archivo objeto est conectado a otros archivos objeto para producir el archivo hex. El ms
popular de los formatos para archivos hex es el formato Intel 8 bit conocido como INHXM8. Otros
ejemplo de un formato diferente utilizado por los microcontroladores y programadores de
microcontroladores de Motorola es el llamado *.S9 o *.S19.
6
CROFI-UNAM
Ensambladores
Al programar en un lenguaje ensamblador se producen los cdigos ms eficientes en cuanto a
tamao, numero de instrucciones y manejo de recursos del microprocesador. Si el objeto es
manejar en su totalidad y de manera eficiente un microprocesador o microcontrolador es
necesario programar en ensamblador ya que se tiene un mayor control sobre los recursos. Si los
recursos no son limitados en cuanto a la memoria, pues se puede comprar el dispositivo que
soporte las necesidades del lenguaje de alto nivel y adems se requiere realizar operaciones
aritmticas complejas la mejor opcin es programar en un lenguaje de alto nivel. Hay que decir
que el lenguaje ensamblador es complicado. A pesar de esto, es el lenguaje ms utilizado en los
robots prototipo.
Los pic tienen un juego reducido de 35 poderosas instrucciones (familia 16Fxxx). Cabe decir que
los diferentes tipos de microprocesadores tienen muchas instrucciones parecidas que son muy
similares, lo cual hace muy difcil el poder programar diferentes microcontroladores sabiendo
utilizar un lenguaje.
Las desventajas son:
1.- EI cdigo no es totalmente portable. (Un cdigo para un micro puede no funcionar en un micro
diferente).
2.- Es muy difcil explicar lo que uno piensa a la hora de hacer un programa a otro programador.
3.- Es difcil pasar de un lenguaje ensamblador a uno de alto nivel.
Las ventajas:
1.- Desarrollo de prototipos robticos sencillos.
2.- Programacin de interfaces dedicadas o especificas.
3.- Cuando nuestra aplicacin tiene mucho contacto con el exterior y el procesamiento no sea
complejo.
Interpretes
Cuando las computadoras estuvieron disponibles, prcticamente en todos los desarrollos en
software se utilizo un intrprete (usualmente BASIC) que era automticamente cargado dentro de
las computadoras cuando eran arrancadas por primera vez. Los intrpretes realizaban muchas de
las funciones bsicas que se consideran normales para los sistemas operativos. La IBM PC cambio
esto con la introduccin de un simple sistema operativo que poda ejecutar aplicaciones binarias o
ejecutar constructores con el interprete BASIC.
7
CROFI-UNAM
Un intrprete es un programa que corre dentro de la computadora y lee y ejecuta otro programa
que no necesita convertir a algn formato especfico para la computadora. Esto es solamente una
simple interfaz dentro de la computadora.
Compiladores
Los compiladores trabajan bajo una serie de reglas lgicas simples para convertir sentencias de
lenguajes de alto nivel al lenguaje ensamblador. Los modernos compiladores permiten simplificar
el cdigo ensamblador, dando como resultado aplicaciones ms pequeas y ms eficientes. Si
estas interesado en aprender un lenguaje ensamblador para un procesador especifico, no debes
de sorprenderte al descubrir que el cdigo que producen los modernos compiladores son unos
excelentes ejemplos para aprenderlo. Par ejemplo los programas en C son convertidos sentencia
por sentencia en instrucciones de lenguaje ensamblador (compilado) a partir de este cdigo
ensamblador se obtiene el cdigo objeto que finalmente es programado dentro del procesador.
La familia de los PICS
En la corta vida de los PICs ya ocupan las posiciones de cabeza en el ranking mundial,
compartiendo codo a codo con gigantes como Intel y Motorola. En 1990 ocupaban el puesto
vigsimo y actualmente son ms de 100 millones de PICs los que vende Microchip cada ao, lo que
ha alzado al segundo puesto del ranking mundial.
EI por que los PICS se han colocado en el mercado
Los PIC tienen una gran aceptacin en la comunidad de tcnicos y aficionados que trabajan con
microcontroladores. Las caractersticas que han provocado esta gran aceptacin son:
Sencillez de Manejo
Buena Informacin
Precio
Buen promedio de parmetros: velocidad, consumo, tamao, alimentacin, cdigo
compacto, etc.
Herramientas de desarrollo fciles y baratas
Diseo rpido
Disponibilidad inmediata
Compatibilidad del software en todos los modelos de la misma gama
Su coste es comparativamente inferior al de los competidores
Poseen una elevada velocidad de funcionamiento
Tienen un juego de instrucciones reducido
Bajo consumo unido a un amplio rango de voltajes de alimentacin.
Muchas herramientas se pueden recoger gratuitamente por Internet
(www.microchip.com).
8
CROFI-UNAM
Existen una gran variedad de herramientas que permiten grabar, depurar, borrar y
comprobar el comportamiento de los PICs.
La gran variedad de modelos de PIC permite elegir el que mejor responde a los
requerimientos de la aplicacin.
Gamas
Gama baja o bsica PIC16C5X
Se trata de una serie de PIC de recursos limitados, pero con una de las mejores relaciones
coste/presentacin. Sus versiones estn encapsuladas con 18 y 28 pins y pueden alimentarse a
partir de una tensin de 2.5 en el caso de los "LF", lo que les hace ideales en las aplicaciones que
funcionan con pilas. Tienen un repertorio de 33 instrucciones cuyo formato de 12 bits. No admiten
ningn tipo de interrupcin y la pila solo dispone de dos niveles.
Gama Media PIC16FXXX
Es la gama ms variada y completa de los PICs. Abarca modelos con encapsulado desde 18 patitas
hasta 68, cubriendo varias opciones que integran abundantes perifricos.
Dentro de esta gama se halla el PIC16F887 que es el microcontrolador que vamos a utilizar para el
desarrollo de proyectos. El repertorio de Instrucciones es de 35 a 14 bits cada una y compatible
con el de la gama baja. Sus distintos modelos contienen todos los recursos que se precisan en las
aplicaciones de los microcontroladores de 8 bits. Tambin dispone de interrupciones y unas Pila
(stack) de 8 niveles que permite el anidamiento de subrutinas.
Gama Alta PIC17CXXX con instrucciones de 16 bits
9
CROFI-UNAM
El PIC16F887
Recursos
Tiene una estructura de 4 bancos, seleccionables a travs de los bits RPO y RP1 del registro
STATUS. El nmero de puertos en los PIC16F886 y 883 es de 3 (28 pines) y el nmero de puertos
en los PIC16F887 y 884 es de 5 (40 pines).
Este microcontrolador pertenece a la familia PIC16F88x, donde posee todas las caractersticas de
sus predecesores mejoradas. Incorporan la memoria FLASH, con una capacidad de 4k 8k (segn
el modelo), sin cambiar la estructura interna del procesador y conservando el mismo repertorio de
instrucciones.
Caractersticas:
10
CROFI-UNAM
1.
2.
3.
4.
5.
6.
7.
a.
Compilador.
El compilador a usar es el CCS C v4.109 del Custom Computer Services, el cual cuenta con una
Interfas de usuario amigable fcil de usar.
b.
Estructuras de control
11
CROFI-UNAM
Estructura If simple. Redirige un curso de accin segn la evaluacin de una condicin, ya sea falsa
o verdadera.
Estructura If-else. Si la condicin es verdadera, se ejecuta el bloque de sentencias 1, de lo
contrario, se ejecuta el bloque de sentencias 2.
IF (Condicin)
{Bloque de sentencias 1}
ELSE
{Bloque de sentencias 2}
Estructura while y do-while. Mientras la condicin sea verdadera, se ejecutarn las sentencias del
bloque. En el caso del do-while, el bloque de sentencias se ejecuta al menos una vez.
While(Condicin){
Bloque de sentencias
}
Do {
Bloque de sentencias
}while(condicin);
12
CROFI-UNAM
c.
Operaciones lgicas
Operadores relacionados. Son smbolos que se usan para comparar dos valores. Si el resultado de
la comparacin es correcto la expresin considerada es verdadera y representa el valor true (del
tipo boolean), en caso contrario es falsa y representa false.
Operador
<
>
==
!=
<=
>=
nombre
menor que
mayor que
igual a *
no igual a
menor que o igual a
mayor que o igual a
ejemplo
a<b
a>b
a==b
a!=b
a<=b
a>=b
significado
a es menor que b
a es mayor que b
a es igual a b
a no es igual a b
a es menor que o igual a b
a es menor que o igual a b
*Nota. No se debe confundir el operador asignacin = con el operador relacional igual a ==.
Operadores lgicos. Los operadores lgicos son:
AND y OR trabajan con dos operandos y retornan un valor lgico basadas en las denominadas
tablas de verdad. El operador NOT acta sobre un operando. Ejemplo:
(a<b) && (b<c)
es verdadero (true), si ambas son verdaderas. Si alguna o ambas son falsas el resultado es falso
(false).
d.
int i;
Int i=7;
13
CROFI-UNAM
En una linea se pueden declarer mas de una variable del mismo tipo con la opcion de inicializar o
no alguna variable.
Ejemplo:
int a, b=8, c, d;
Tipo
int1 o short
int8 , int o char
int16 o long
int32 o long long
float32 o float
Rango
Unsigned (sin
Signed ( con signo)
signo)
0a1
No aplica
0 a 255
-128 a 127
0 a 65535
-32768 a 32767
0 a 4294967296
- 2147483648 a 2147483647
-1.5x10^45 a 3.4x10^38
Tamao
1 bit
8 bits
16 bits
32 bits
32 bits
e.
Uso de funciones
Declaracion de funciones. Cuando se declara una funcin, se le pone un tipo de variable
que puede regresar despus de su ejecucin, si la funcin no regresa algn valor en tipo
simplemente se coloca void, las variables 1 y 2 son las variables de entrada, y estas
solamente son locales a la funcin, se pueden omitir simplemente no colocndolas.
Tipo nombre_funcion(tipo variable1, tipo variable2, ){
Tipo valor;//declaracin de la variable valor
Bloque de sentencias
Return valor; // regresa la variable valor
}
14
CROFI-UNAM
f.
Programa bsico
//Este es un programa donde parpadea un led, donde se
//demuestra la estructura bsica de un programa
#include <16F887.h> // inclusin de archivos de cabecera
#fuses HS, NOWDT, NOPROTECT, NOLVP, NODEBUG, MCLR //Palabras
// de configuracin
#use delay(clock=20MHZ) //configuracin de la frecuencia de
//oscilacin del reloj
#use rs232 (baud=115200, xmit=PIN_C6, rcv=PIN_C7)
//Configuracin del puerto serie: Velocidad de transmisin,
//pin de transmisin, pin de recepcin
Simulador
Como simulador de los programas usaremos un simulador de circuitos elctricos, este software se
llama Proteus Professional 7.6.
15
CROFI-UNAM
Sistema mnimo.
7.
16
CROFI-UNAM
Mdulos
// Se etiqueta la direccin de
17
CROFI-UNAM
PuertoB=valor;
Para realizar una lectura digital de los pines individuales, se lee de la siguiente forma:
Input(PIN_B7);
Donde esta funcin devuelve un booleano, segn el estado en el que se encuentre el pin.
Para realizar una lectura digital de todo un puerto, se lee de la siguiente forma:
Input_X();
X representa el nombre del puerto ya sea: A, B, C, D o E; esta funcin devuelve un
nmero int8, donde representa el estado de las entradas de todo el puerto.
Programa Ejemplo, Parpadeo de un LED:
#include <16F887.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,MCLR
#use delay(clock=20MHZ)
#use rs232 (baud=115200, xmit=PIN_C6, rcv=PIN_C7)
d. Convertidor A/D
f.
h. Comunicacin USB
i.
Timers
j.
Interrupciones
l.
Teclado matricial
m. Encoders
n. Motor a pasos
o. Servomotores
19
CROFI-UNAM
20
CROFI-UNAM