Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin a los
MICRO -CONTROLADORES
Utilizando Lenguaje C18 con Plataforma
MPLAB y simulacin en PROTEUS.
Este libro muestra de una forma clara y concisa, los temas relacionados con la
programacin de Microcontroladores en la gama 18F4xxxx realizando un enfoque rpido
y conceptual en cada uno de los estudiantes.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Los Microcontroladores son integrados con todas las etapas necesarias para convertirse en un
cerebro, es decir, tienen memoria, CPU, osciladores, puertos de comunicacin, y algunos
recursos especiales, que permiten a los usuarios por medio de la programacin en un lenguaje
de comandos, crear dispositivos electrnicos que realicen tareas especificas o cumplan con
necesidades actuales de algn sistema.
Son dispositivos que contienen en un mismo encapsulado todos los bloques funcionales
necesarios para realizar tareas repetitivas y de anlisis. A diferencia de los microporcesadores
que son sistemas que son sistemas abiertos que pueden modificar los bloques funcionales
segn sus necesidades, por ejemplo aumentar la memoria RAM de un Computador.
Fuente: www.sigmaelectronica.net
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Figura 2. Estructura interna de un Microcontrolador
Fuente: http://www.mikroe.com
Qu hacen?
Son capaces de interpretar una serie de instrucciones que un usuario programa en un lenguaje
estandarizado como C18.
Para qu?
Para generar acciones de comunicacin interna y externa, de naturaleza digital y analgica, con
el fin de manipular de sistemas y dispositivos electrnicos. Es difcil imaginar cmo se sera el
mundo si desaparecieran los Microcontroladores, pues actualmente se encuentran aplicados
en los siguientes campos:
Automatizacin industrial.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Medida y control de procesos.
Enseanza e investigacin.
Perifricos y dispositivos auxiliares de las computadoras.
Electrodomsticos.
Aparatos porttiles y de bolsillo.
Mquinas expendedoras y juguetera.
Instrumentacin.
Industria de la automocin.
Electro-medicina.
Robtica.
Sistemas de navegacin.
Sistemas de seguridad y alarma.
Domtica.
Termorregulacin
Qu Microcontrolador elegir?
Sin duda para elegir el mejor microcontrolador se deben tener en cuenta algunos aspectos
propios del sistema (seales, dispositivos a controlar, velocidad, comunicacin) y otros del
usuario (presupuesto, lenguaje, familia)
Fuente http://perso.wanadoo.es
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Tabla #. Algunos fabricantes de Microcontroladores con algunos modelos.
Fuente: ?
Fuente: http://html.rincondelvago.com
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
http://www.mikroe.com/
1.2.1 Memoria
Memoria de programa.
Memoria de datos.
Este tipo de memoria es muy similar a la memoria de largo plazo que ustedes tienen, en este
tipo de memoria se encuentra su nombre, su edad, la fecha de nacimiento, entre otras.
Existe otro tipo de memoria que cambia o vara a medida que el cdigo se ejecuta, esta memoria
es de lectura y escritura, es decir tipo RAM.
Al contrario que la anterior este es muy similar a la memoria de corto plazo de cada uno de
ustedes, en esta se guarda un el nombre de la persona que acaban de conocer, el numero
nuevo que acaban de dictar.. Entre otros.
Los diferentes tipos de memoria no voltil que nos podemos encontrar en un microcontrolador
son:
ROM CON MSCARA: Memoria de solo lectura, se graba durante la fabricacin del chip. Este
tipo de memoria no se puede volver a programar.
OTP: (One Time Programable), o ROM programable una vez. El Microcontrolador posee una
memoria ROM que el usuario puede programar una nica vez.
EPROM: (Erasable Programmable Read Only Memory), Se puede grabar y borrar muchas
veces. Se borra mediante luz ultravioleta y a travs de una ventana de cristal que posee el chip.
EEPROM: (Electrical Erasable Programmable Read Only Memory) Tanto la grabacin como el
borrado se realizan mediante impulsos elctricos. Estas operaciones se pueden efectuar
muchas veces.
FLASH: Es una memoria de bajo consumo, que se puede leer y escribir en el propio circuito. Es
ms veloz y de mayor densidad que la EEPROM.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
1.2.2 CPU
Parte del microcontrolador encargado de analizar todos los datos y realizar operaciones
aritmticas y lgicas ayudndose de estados de memoria llamados registros y de la ALU
(Unidad Aritmtica-Lgica).
Este tipo de dispositivo se puede comparar fcilmente con el cerebro de ustedes, cuando se va
a hacer una cuenta matemtica ustedes necesitan unos datos de entrada, un registro de
memoria para guardar estos datos, una ALU que es donde se encuentra la operacin que va a
realizar, suma, resta, divisin, entre otras.
1.2.3 Bus
Figura #.
Figura #.
Fuente:
Temporizadores o timers.
Perro guardin o watchdog.
Proteccin ante fallos de alimentacin o brownout.
Estado de bajo consumo o sleep.
Convertidor A/D.
Convertidor D/A.
Control se anchura de pulsos PWM.
Puertos de comunicacin.
UART
USART
USB
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
I2C
CAN
TCP/IP
Hoy en da, la mayora de los Microcontroladores llevan incorporados varios sistemas diferentes
para la comunicacin en serie, como un equipo estndar. Cul de estos sistemas se utilizar en
un caso concreto, depende de muchos factores, de los que ms importantes son:
Figura #.
Figura #.
Un bus serial de interfaz de perifricos es un sistema para la comunicacin serial que utiliza
hasta cuatro lneas (normalmente solo son necesarias tres) - para recibir los datos, para
transmitir los datos, para sincronizar y (opcional) para seleccionar el dispositivo con el que se
comunica. Esto es la conexin full duplex, lo que significa que los datos se envan y se reciben
simultneamente.
Figura #.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Este tipo de conexin es asncrona, lo que significa que no se utiliza una lnea especial para
transmitir la seal de reloj. En algunas aplicaciones este rasgo es crucial (por ejemplo, en
mandar datos a distancia por RF o por luz infrarroja). Puesto que se utiliza slo una lnea de
comunicacin, tanto el receptor como el transmisor reciben y envan los datos a velocidad
misma que ha sido predefinida para mantener la sincronizacin necesaria. Esto es una manera
simple de transmitir datos, puesto que bsicamente representa una conversin de datos de 8
bits de paralelo a serial. La velocidad de transmisin no es alta, es hasta 1 Mbit/sec.
1.2.6 Temporizador
Figura #.
Fuente:
En prctica, los pulsos generados por el oscilador de cuarzo son llevados al circuito una vez
por cada ciclo de mquina directamente o por el pre-escalador, lo que aumenta el nmero en
el registro del temporizador. Si una instruccin (un ciclo de mquina) dura cuatro perodos del
oscilador de cuarzo, este nmero ser cambiado un milln de veces por segundo (cada
microsegundo) al incorporar al cuarzo que oscila con una frecuencia de 4 MHz.
Es fcil de medir los intervalos de tiempo cortos de la manera descrita anteriormente (hasta 256
microsegundos porque es el mayor nmero que un registro puede contener). Esta obvia
desventaja se puede superar de varias maneras: al utilizar el oscilador ms lento, por medio de
registros con ms bits, del pre-escalador o de la interrupcin. Las primeras dos soluciones
tienen algunas debilidades as que se recomienda utilizar el pre-escalador y/o la interrupcin.
Si el registro del temporizador es de 8 bits, el mayor nmero que se puede escribir en l es 255
(en los registros de 16 bits es el nmero 65.535). Si se excede este nmero, el temporizador se
reinicia automticamente y el conteo comienza de nuevo en cero. Esto es denominado
desbordamiento o sobreflujo (overflow). Permitido por el programa, el desbordamiento puede
provocar una interrupcin, lo que abre completamente nuevas posibilidades. Por ejemplo, el
estado de registros utilizados para contar segundos, minutos o das puede ser implementado
en una rutina de interrupcin. El proceso entero (excepto la rutina de interrupcin) se lleva a
cabo internamente, lo que permite que los circuitos principales del microcontrolador funcionen
regularmente.
Fuente
La figura anterior describe el uso de una interrupcin en el funcionamiento del temporizador.
Al asignarle un pre-escalador al temporizador, se producen retrasos de duracin arbitraria con
mnima interferencia en la ejecucin del programa principal.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
CONTADORES
Si el perro guardin est habilitado, cada vez que cuenta hasta el mximo valor en el que ocurre
el desbordamiento del registro se genera una seal de reinicio del microcontrolador y la
ejecucin de programa inicia en la primera instruccin. El punto es evitar que eso ocurra al
utilizar el comando adecuado.
La idea se basa en el hecho de que cada programa se ejecuta en varios bucles, ms largos o
cortos. Si las instrucciones que reinician el temporizador perro guardin se colocan en lugares
estratgicos del programa, aparte los comandos que se ejecutan regularmente, el
funcionamiento del perro guardin no afectar a la ejecucin del programa. Si por cualquier
razn (ruidos elctricos frecuentes en la industria) el contador de programa se queda
atrapado dentro de un bucle infinito, el valor del registro continuar aumentado por el
temporizador perro guardin alcanzar el mximo valor, el registro se desbordar
y, aleluya! Ocurre el reinicio!
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
El resultado de esta medicin es un nmero (el valor digital) utilizado y procesado ms tarde
en el programa.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Segn el tamao de los datos que procesa el microcontrolador se puede distinguir entre:
- Microcontroladores de 4 bits.
- Microcontroladores de 8 bits.
- Microcontroladores de 16 bits.
- Microcontroladores de 32 bits.
- Microcontroladores de 64 bits.
Resol
RO RA Frecu
Entr ucin Tempori Sali
M M Pi encia Comun
ada del Compa zadores das Otro
Familia [Kb [by ne de icacin
s conv radores de 8/16 PW s
ytes tes s reloj. serial
A/D ertido bits M
] ] [MHz]
r A/D
Arquitectura de la gama baja de 8 bits, palabra de instruccin de 12 bits
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
0.3
16
PIC10F 75 - 6-
- 4-8 0-2 8 0-1 1x8 - - -
XXX 0.7 8
24
5
0.7 25 EEP
PIC12F
5- - 8 4-8 0-3 8 0-1 1x8 - - RO
XXX
1.5 38 M
25
0.7 14 EEP
PIC16F -
5- - 20 0-3 8 0-2 1x8 - - RO
XXX 13
3 44 M
4
18 Vdd
PIC16H
1.5 25 - 20 - - - 1x8 - - =
VXXX
20 15V
Arquitectura de la gama media de 8 bits, palabra de instruccin de 14 bits
64
1.7 EEP
PIC12F - 1-2x8 0-
5- 8 20 0-4 10 1 - RO
XXX 12 1 x 16 1
3.5 M
8
PIC12H 1.7 1-2x8 0-
64 8 20 0-4 10 1 - -
VXXX 5 1 x 16 1
64
1.7 14 USAR
PIC16F - 0- 8 or 1-2x8 0-
5- - 20 0-2 T I2C -
XXX 36 13 10 1 x 16 3
14 64 SPI
8
64
1.7 14 USAR
PIC16H - 0- 2x81x
5- - 20 10 2 T I2C - -
VXXX 12 12 16
3.5 20 SPI
8
Arquitectura de la gama alta de 8 bits, palabra de instruccin de 16 bits
USB2.
0
25
18 0-2x8 CAN2.
PIC18F 4- 6- 32 - 4- 10 or 0-
- 0-3 2-3x 0 -
XXX 128 39 48 16 12 5
80 16 USAR
36
T I2C
SPI
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
USB2.
10 0
28
24 0-2x8 USAR
PIC18F 8- - 40 - 10 - 2-
- 10 2 2-3x T -
XXJXX 128 10 48 16 5
39 16 Ethern
0
36 et I2C
SPI
76
28 USAR
PIC18F 8- 8- 10 - 1x83x
- 64 10 2 T I2C 2 -
XXKXX 64 39 13 16
44 SPI
36
Todos los Microcontroladores PIC utilizan una arquitectura Harvard, lo que quiere decir que su
memoria de programa est conectada a la CPU por ms de 8 lneas. Hay Microcontroladores
de 12, 14 y 16 bits, dependiendo de la anchura del bus. La tabla anterior muestra las
caractersticas principales de estas tres categoras.
Como se puede ver en la tabla de la pgina anterior, salvo los monstruos de 16 bits PIC
24FXXX y PIC 24HXXX - todos los Microcontroladores tienen la arquitectura Harvard de 8 bits
y pertenecen a una de las tres grandes grupos. Por eso, dependiendo del tamao de palabra
de programa existen la primera, la segunda y la tercera categora de Microcontroladores, es
decir Microcontroladores de 12, 14 o 16 bits. Puesto que disponen del ncleo similar de 8 bits,
todos utilizan el mismo juego de instrucciones y el esqueleto bsico de hardware conectado
a ms o menos unidades perifricas.
Los Microcontroladores que utilizan la arquitectura von- Neumann disponen de un solo bloque
de memoria y de un bus de datos de 8 bits. Como todos los datos se intercambian por medio
de estas 8 lneas, este bus est sobrecargado, y la comunicacin por si misma es muy lenta e
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
ineficaz. La CPU puede leer una instruccin o leer/escribir datos de/en la memoria. Los dos
procesos no pueden ocurrir a la vez puesto que las instrucciones y los datos utilizan el mismo
bus. Por ejemplo, si alguna lnea de programa dice que el registro de la memoria RAM
llamado SUM debe ser aumentado por uno (instruccin: incf SUMA), el microcontrolador
har lo siguiente:
1. Leer la parte de la instruccin de programa que especifica QU es lo que debe realizar
(en este caso es la instruccin para incrementar incf)
2. Seguir leyendo la misma instruccin que especifica sobre CUL dato lo debe realizar (en
este caso es el contenido del registro SUMA)
3. Despus de haber sido incrementado, el contenido de este registro se debe escribir en el
registro del que fue ledo (direccin del registro SUMA)
El mismo bus de datos se utiliza para todas estas operaciones intermedias.
ARQUITECTURA DE HARVARD
Los Microcontroladores que utilizan esta arquitectura disponen de dos buses de datos
diferentes. Uno es de 8 bits de ancho y conecta la CPU con la memoria RAM. El otro consiste
en varias lneas (12, 14 o 16) y conecta a la CPU y la memoria ROM. Por consiguiente, la
CPU puede leer las instrucciones y realizar el acceso a la memoria de datos a la vez. Puesto
que todos los registros de la memoria RAM son de 8 bits de ancho, todos los datos dentro del
microcontrolador que se intercambian son de la misma anchura. Durante el proceso de la
escritura de programa, slo se manejan los datos de 8 bits. En otras palabras, todo lo que
usted podr cambiar en el programa y a lo que podr afectar ser de 8 bits de ancho. Todos
los programas escritos para estos Microcontroladores sern almacenados en la memoria
ROM interna del microcontrolador despus de haber sido compilados a cdigo mquina. No
obstante, estas localidades de memoria ROM no tienen 8, sino 12, 14 o 16 bits. 4, 6 o 8 bits
adicionales representan una instruccin que especifica a la CPU qu hacer con los datos de 8
bits.
Las ventajas de este diseo son las siguientes:
Todos los datos en el programa son de un byte (8 bits) de ancho. Como un bus de
datos utilizado para lectura de programa tiene unas lneas ms (12, 14 o 16), tanto la
instruccin como el dato se pueden leer simultneamente al utilizar estos bits
adicionales. Por eso, todas las instrucciones se ejecutan en un ciclo salvo las
instrucciones de salto que son de dos ciclos.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
El hecho de que un programa (la ROM) y los datos temporales (la RAM) estn
separados, permite a la CPU poder ejecutar dos instrucciones simultneamente. Dicho
de manera sencilla, mientras que se realiza la lectura o escritura de la RAM (que marca
el fin de una instruccin), la siguiente instruccin se lee por medio de otro bus.
En los Microcontroladores que utilizan la arquitectura de von-Neumann, nunca se sabe
cunta memoria ocupar algn programa. Generalmente, la mayora de las
instrucciones de programa ocupan dos localidades de memoria (una contiene
informacin sobre QU se debe realizar, mientras que la otra contiene informa cin
sobre CUL dato se debe realizar). Sin embargo, esto no es una frmula rgida, sino el
caso ms frecuente. En los Microcontroladores que utilizan una arquitectura Harvard, el
bus de la palabra de programa es ms ancho que un byte, lo que permite que cada
palabra de programa est compuesto por una instruccin y un dato. En otras palabras,
una localidad de memoria - una instruccin de programa.
El formato de instrucciones del cdigo fuente se basan en el lenguaje C18 el cual es una
derivacin del lenguaje C convencional,
Instalacin
Se debe bajar directamente desde Microchip, hay disponible una versin gratuita para
estudiantes que es un demo de 60 das. Tambin para poder descargarlo es necesario
registrarse.
File - new
Escribir el cdigo
Para Compilar el archivo es necesario adherirlo el cdigo creado al proyecto, dando click
derecho en la carpeta Source Files Add Files y elegir el archivo guardado con extensin .c.
Ahora si se puede compilar el cdigo, para esto se debe utilizar en la barra de tareas el icono
La compilacin solo revisa que la parte gramatical del cdigo se encuentre bien escrita, esta no
indica errores de lo que debe o no hacer el cdigo.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Introduccin al C18:
Para cualquier desarrollo es importante leer el datasheet del PIC a utilizar. En mi caso voy a
utilizar el PIC18F4550 y aqu pueden encontrar una descripcin en espaol del mismo.
Creando el cdigo:
Primer que nada debemos incluir las libreras que se van a utilizar en el proyecto, la librera que
siempre incluiremos ser la del PIC a usar, la cual tiene las direcciones de los registros del
mismo.
Cdigo: (c)
#include <PIC18F4550.h>
Luego viene la configuracin de los fuses del microcontrolador. sea configuracin de oscilador,
watch-dog, Brown-out reset, power-on reset, proteccin del cdigo, etc. Esto depende del
microcontrolador que se utilice: La sintaxis seria:
Para esto es muy til la ayuda que trae C18, recomiendo mirarla:
C:\MCC18\doc\ hlpPIC18ConfigSet
Definicin de variables globales, son las que se utilizaran en el programa principal y funciones
del proyecto.
Cdigo: (c)
Cdigo: (c)
main{ }
Para este sencillo ejemplo vamos a necesitar definir operadores y estructuras de control:
Operadores:
Operadores lgicos: Son los encargados de producir resultados lgicos del tipo TRUE o FALSE
Estructuras:
Estructura if:
Esta estructura se utiliza para ejecutar instrucciones en forma condicional, de acuerdo con la
evaluacin de la expresin. Seria si una condicin es dada entonces accin. Cdigo: (c)
if(condicion){
//Accion
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
}
Estructura if-else
En este caso se agrega la instruccin else. Ahora se evala una condicin original, si es
verdadera, se ejecuta y sino no lo es, se ejecuta el bloque debajo de else.
Cdigo: (c)
if(condicion){
//Accin
else{
//Accion }
}
Estructura while
Estructura do-while
Es parecida a un while solo que la condicin se evala al final, por lo que el bucle se ejecutara
por lo menos una vez.
Cdigo: (c)
do {
// Sentencias
} while (condicion);
Estructura For:
Esta estructura se usa para ejecutar un bloque de cdigo cierto nmero de veces. Posee un
valor de inicio, un valor final y un valor de incremento.
Cdigo: (c)
for(valor inicial; valor final; valor de incremento){
//Sentencias
}
Estructura switch.
Esta estructura permite ejecutar un bloque de cdigo de acuerdo con el valor de una variable o
expresin:
Cdigo: (c)
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
switch(Variable){
Case 0x01:
//Sentencias.- Break;
Case 0x02:
//Sentencias.- Break;
Default:
//Sentencias.- Break;
}
Accediendo a los bits de un registro: Para acceder individualmente a los bits de un registro se
escribe la siguiente sentencia:
Registrobits.bit
PORTBbits.RB0
Hardware
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Cdigo: (c)
#include <p18f4550.h>
void main(void){
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Variables
Auto: las variables declaradas fuera de las funciones son globales y las declaradas en la funcin
son locales. Si no se inicializan toman un valor indefinido.
Static: variables locales a una funcin, y sirven para retener el valor de la variable en llamadas
sucesivas a dicha funcin.
Extern: La variable declarada pertenece a otro mdulo, por lo que no es necesario reservar memoria
para ella.
Overlay: Se aplica a variables locales, hace un almacenamiento esttico y las inicializa en cada
llamada.
Rom: la variable se sita en la memoria del programa. Por lo general se usa para cadena de
caracteres contantes.
Demoras: Para utilizar demoras en nuestro cdigo debemos incluir la librera delays.h
Hardware
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Cdigo: (c)
char i=0;
void main(void){
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
ADCON1=0x0F;//Todos entrada/salida digitales.
TRISA=0x00; //Todos como salida
TRISD=0xFF; //Todos como entrada
LATB=0x00; //leds apagados
while(1){
if(PORTDbits.RD0==1){ // testeamos RA0.
LATA=0x00; // Si esta en 1 Apagamos leds
}
else{
for(i=1;i<=10;++i){ //Titila 10 veces
LATA=0x0F;
Delay10KTCYx(100); //Demora 200ms
LATA=0x00;
Delay10KTCYx(100); //Demora 200ms }.
}
}
}
}
Objetivo: Al accionar el pulsador se realiza una secuencia de leds como se muestra en la figura:
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Cdigo: (c)
#include <p18f4550.h>
char i=0;
void main(void){
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
while(1){
if(PORTDbits.RD0==1){ // testeamos RA0.
LATA=0x00; // Si esta en 1 Apagamos leds
}
else{
LATA=0x01;
for(i=1;i<=4;++i){
Delay10KTCYx(30);
LATA<<=1;
}
}
}
}
Arreglos de Variables
Nos permite trabajar con un conjunto de variables y acceder a cada una mediante un ndice nico
que lo identifica. Todos los valores que contienen deben ser del mismo tipo.
Cdigo: (c)
unsigned char Vector[5];
unsigned char Matriz[3][3]; . . .
//Cargamos vector y matriz:
Vector[0]=156;
Matriz[1][1]=85;
Cdigo: (c)
unsigned char
Vector[3]={1,0x10,0b000101}
unsigned char
Matriz[3][3]={1,2,3,4,5,6,7,8,9,10};
Cdigo: (c)
void main(void){
La definicin estar en algn otro punto del programa, aqu se especifican las instrucciones que
forman parte de la misma y que se utilizan para llevar a cabo la tarea especfica de la funcin.
Sintaxis:
Cdigo: (c)
Tipo de retorno: Representa el tipo del valor que devuelve la funcin. Si no devuelve ninguno se
debe colocar void.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Nombre: indica el nombre que se le da a la funcin, se recomienda que este relacionado con la tarea
que llevar a cabo.
Lista de parmetros : se enlista el tipo de dato y el nombre de cada parmetro. En caso de utilizar
parmetros se deja el parntesis vacio o se incluye la palabra void.
Ejemplos:
Cdigo: (c)
Cdigo: (c)
void Envio_Data(unsigned char A){
//Sentencia.-
}
Cdigo: (c)
void Muestras(void){
//Sentencias.-
}
Ejemplo:
Cdigo: (c)
// Declaracion de la funcion
Otra forma es no realizar la declaracin de la funcin y realizar directamente la definicin, pero esta
tiene que estar si o si antes de su invocacin.
Ejemplo:
Cdigo: (c)
//Definicin de la funcin
void Funcion(void){
// Sentencias }
void main(void){
.
.
.
// Llamo a la funcin.
Funcion();
}
Cdigo: (c)
void main(void){
ADCON1=0x0F;//Todos entrada/salida digitales.-
TRISA=0xF0; //Todos como entrada.-
TRISB=0X00; //Todos como salida.-
PORTA=0x00;
Unidad=0;
Decena=0;
Centena=0;
while(1){
Visualizacion();
++Unidad;
if(Unidad==10){
Unidad=0;
++Decena;
if(Decena==10){
Decena=0;
++Centena;
}
}
}
}
Control de un LCD.
Para realizar el control de un LCD necesitamos crear la librera lcd4550.h y guardarla en la extensin
.h
Para crear la librera de es necesario tener en cuenta la tabla descrita abajo, donde indica de manera
fcil como se configura el Display LCD.
Para configurar la LCD es necesario que RS=0 y cuando deseo escribir algo en la pantalla el pin RS
= 1.
Librera.
Codigo : (c)
// Configurar el hardware
#define LCD_DISPLAY_8_BITS 0x38 //0b00111000
#define LCD_DISPLAY_4_BITS 0x28 //0b00111000
}
/******inicializacion del LCD************/
void lcd_init(void)
{
int dir,valor;
dir=LCD_COMANDO; //para configurar la lcd
valor=LCD_DISPLAY_8_BITS; //0x38 Inicia el modulo a 8 bits
lcd_enviar(dir,valor);
delay_ms(1);
valor=LCD_CLEAR; //0x0c activa Display
lcd_enviar(dir,valor);
valor=LCD_HOME; //0x01 borra display
lcd_enviar(dir,valor);
valor=LCD_CURSOR_SHIFT_LEFT; //selecciona mensaje fijo
lcd_enviar(dir,valor);
// valor=0x05; // instruccion para decrementar el cursor
// lcd_enviar(dir,valor);
valor=0x0C;
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
lcd_enviar(dir,valor);
}
#endif
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Ejemplo: Control de un LCD.
Hardware
Codigo (c):
#include <p18f4550.h>
#include <lcd4550.h> // incluir la librera creada anteriormente
while (1){
lcd_init();
lcd_gotoxy(8,1); // posiciona el cursor en la columna 8 fila 1.
for (i=0;i<=7;i++){
lcd_enviar (LCD_DATO,vector [i]);
delay_ms (500);
}
}
}
Este mdulo permite la conversin de una seal anloga de entrada a un nmero digital de 10 bits
correspondiente.
El registro ADCON0, muestra Registrarse 21-1, controla el funcionamiento del mdulo A/D. El
Registro ADCON1, muestra Registrarse 21-2, configura las funciones de los pines del puerto.
El registro ADCON2, muestra Registrarse 21-3, configura el reloj de A/D, fuente, tiempo de
adquisicin programada y justificacin.
Para realizar una conversin analgica a digital vamos a crear un programa que muestre el valor
en que se encuentra una resistencia variable (Potenciometro), en el Display LCD
Hardware
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Codigo (c):
while(1)
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
{
dato_analogo = leer_adc();
conver_bcd (dato_analogo);
lcd_gotoxy(6,1);
lcd_enviar(LCD_DATO, bcd_mil+0x30);
lcd_enviar(LCD_DATO, bcd_cent+0x30);
lcd_enviar(LCD_DATO, bcd_dec+0x30);
lcd_enviar(LCD_DATO, bcd_unid+0x30);
delay_ms(50);
}
}
Los siguientes pasos se deben tomar cuando se configura el mdulo CCP para la operacin PWM:
Hardware
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Codigo (c)
#include <p18f4550.h>
#include <delays.h>
Problema 1
1. Disear un sistema para un parqueadero que cuenta con dos secciones una derecha y
una izquierda, cada una con espacio de 8 carros. con las siguientes caractersticas.
a. Indicar por medio de un display 7 segmentos los espacios libres totales del parqueadero.
b. Otro display dentro del parqueadero que indique los espacios libres en la zona derecha
c. Otro display dentro del parqueadero que indique los espacios libres en la zona izquierda.
d. Cada espacio libre en el parqueadero se debe indicar con una luz de color verde
encendida.
MICROCONTROLADORES
ING. Ramdhar Hadit Yusseff Vanegas
Problema 2.
Problema 3.