P. 1
43743759 Tutorial Pic

43743759 Tutorial Pic

|Views: 1|Likes:
Published by txuxjjg

More info:

Published by: txuxjjg on Feb 06, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/29/2013

pdf

text

original

Sections

  • PROGRAMA BÁSICO PARA HACER PARPADEAR UN LED CON INTERVALOS DE 1 SEGUNDO
  • UN SEMÁFORO DE DOS INTERSECCIONES
  • JUEGO DE LUCES PARA DISCOTECA
  • EJERCICIO CON LA INSTRUCCIÓN FOR NEXT
  • LAS VARIABLES BIT, BYTE Y WORD
  • EJERCICIOS CON PULSADORES
  • CONTADOR BINARIO CON PULSADOR ANTIRREBOTE
  • LED INTERMITENTE DE VELOCIDAD VARIABLE
  • MANEJO DE UN DISPLAY DE 7 SEGMENTOS CON EL CI.7447
  • UN CONTADOR DECIMAL DE UN DIGITO CON EL CI 7447 Y UN PULSADOR
  • MANEJO DE UN DISPLAY DE 7 SEGMENTOS SIN EL
  • DECLARACIÓN LOOKUP
  • MANEJO DE 4 DISPLAY DE 7 SEGMENTOS CON EL CI.7447
  • CONTADOR DECIMAL DE 4 DÍGITOS CON EL CI.7447
  • MANEJO DE 4 DISPLAYS DE 7 SEGMENTOS SIN EL CI.7447 (ROTULACIÓN)
  • MANEJO DE 4 DISPLAYS CON ROTULO EN MOVIMIENTO
  • MANEJO DE UN MODULO LCD
  • DESPLAZAMIENTO DE UN TEXTO LCD
  • CONTADOR DE PULSOS CON LCD
  • LECTURA DE UN POTENCIÓMETRO CON LCD
  • GENERACIÓN DE SONIDO
  • UNA SIRENA POLICIAL
  • UTILIZANDO UN CRISTAL DE MAYOR VELOCIDAD
  • GENERACIÓN DE UN TIMBRE DE TELÉFONO CELULAR
  • LLAMADA TELEFÓNICA DTMF
  • LA DECLARACIÓN DTMFOUT
  • LECTURA DE UN TECLADO DE 16 PULSADORES CON DISPLAY DE 7 SEGMENTOS
  • CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIA FLASH
  • CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIA RAM Y CAMBIO DE CLAVE
  • CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIA EEPROM Y CAMBIO DE CLAVE
  • LA DECLARACIÓN EEPROM, READ Y WRITE
  • MANEJO DEL PWM COMO VARIADOR DE VELOCIDAD DE UN MOTOR DC
  • UN CONVERSOR D/A CON EL CI LM358
  • ¿QUÉ ES UN MOTOR PASO A PASO?
  • MOTORES PASO A PASO BIPOLARES
  • MOTORES PASO A PASO UNIPOLARES
  • SECUENCIA DEL CIRCUITO DE CONTROL
  • MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA WAVE DRIVE
  • MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA FULL STEP
  • MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA HALF STEP
  • QUE ES LA COMUNICACIÓN SERIAL?
  • MODOS DE TRANSMISIÓN DE DATOS
  • COMUNICACIÓN SERIAL RS232
  • COMUNICACIÓN SERIAL PC A PIC
  • COMUNICACIÓN SERIAL CON EL MAX 232
  • COMUNICACIÓN SERIAL PIC A PIC
  • COMUNICACIÓN I²C CON UNA MEMORIA SERIAL 24L04B
  • LA DECLARACIÓN I2CWRITE E I2CREAD
  • COMUNICACIÓN I2C CON EL RELOJ CALENDARIO DS1307
  • UTILIZANDO LA INTERRUPCIÓN DEL PUERTO B.0
  • UTILIZANDO LA INTERRUPCIÓN DEL PUERTO B.4 AL B.7
  • RELOJ DIGITAL UTILIZANDO LA INTERRUPCIÓN DEL TMR0
  • CONVERSOR ANÁLOGO DIGITAL DEL PIC 16F87X
  • TERMÓMETRO DIGITAL CON EL PIC 16F877A

Octavo Electrónica 2009 – 2010

Universidad Técnica de Ambato
Facultad de Ingeniería en Sistemas Electrónica e Industrial

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

TABLA DE CONTENIDOS INSTALACIÓN Descarga de programa microcode studio ……………………………………... 1 ……………………………... 1

Descarga de pbp2.44 (picbasic pro versión 2.44)

Instalación del software microcode studio ……………………………………… 2 Instalación de pbp244 (PicBasic Pro) ………..…………………………………… 6 Configuración de microcode studio ……………………………………………... 7 Manejo de microcode studio ………………….…………………………………... 12

Programa básico para hacer parpadear un led con intervalos de 1 segundo .... 15 Un semáforo de dos intersecciones …………………………………………….…. 16 Juego de luces para discoteca …………………………………………………..… 19 Ejercicio con la instrucción FOR NEXT ……………………………………….... 21 LAS VARIABLES BIT, BYTE Y WORD …………………………………..…… 22 Luces del auto fantástico ……………………………………………………..….… 23 Ejercicios con pulsadores ……………………………………………………….... 24 La declaración IF… THEN ……………………………………………………..... 25 Contador binario con pulsador antirrebote …………………………………...… 26 Led intermitente de velocidad variable ……………………………………..….… 28 Utilizando el mclr ……………………………………………………………..….... 29 Manejo de un display de 7 segmentos con el ci.7447 ………………………....…. 30 Un contador decimal de un digito con el ci 7447 y un pulsador ………….…....... 31

FISEI

Manejo de un display de 7 segmentos sin el ci.7447 …………………………...… 33 Declaración LOOKUP …………………………………………………….…….... 33 Manejo de 4 display de7 segmentos con el ci.7447 ……………………….…..…. 34 Octavo Electrónica 2009 – 2010 FISEI - UTA

Contador decimal de 4 dígitos con el CI.7447 ………………………………..… 36 Manejo de 4 displays de 7 segmentos sin el ci.7447 (rotulación) …………...… 38 Manejo de 4 displays con rotulo en movimiento …………………………….... 39 Manejo de un modulo lcd …………………………………………………..…… 41 Declaración LCDOUT ………………..……………………………………..….. 42 Presentación de carácter por carácter en lcd ………………………………….. 46 Desplazamiento de un texto lcd ………………………………………….……… 47 Contador de pulsos con lcd ………………………………………………..……. 48 Lectura de un potenciómetro con lcd ………………………………………..… 50 Generación de sonido ………………………………………………………...…. 51 Una sirena policial ……………………………………………………………….. 52 Utilizando un cristal de mayor velocidad …………………………………...…. 53 Generación de un timbre de teléfono celular ………………………………….. 54 Llamada telefónica DTMF ……………………………………………….…...… 55 La declaración DTMFOUT …………………………………………………...... 56 Lectura de un teclado de 16 pulsadores con display de 7 segmentos ……...…. 59 Cerradura electrónica con clave en memoria flash ………………………….... 63 Cerradura electrónica con clave en memoria ram y cambio de clave …...….. 66 Cerradura electrónica con clave en memoria eeprom y cambio de clave ….... 69 La declaración EEPROM, READ Y WRITE ………………………………….. 69 MOTORES PASO A PASO Manejo del pwm como variador de velocidad de un motor dc ……….…..….. 72

FISEI

Un conversor d/a con el ci lm358 ……..…………………………………………. 75 ¿Qué es un motor paso a paso? …………………………………………………. 76 Octavo Electrónica 2009 – 2010 FISEI - UTA

...……………………………………………. 109 Termómetro digital con el pic 16f877a ……………………………………….………..... 82 Manejo de un motor paso a paso en secuencia full step …………….… 77 Motores paso a paso unipolares ………………………………………………… 79 Secuencia del circuito de control ………………………………………………. 96 La declaración i2cwrite e i2cread ……………………………………………. 90 Comunicación serial con el max 232 …………………………………………… 92 Comunicación serial pic a pic ………………………………………………….………………………….…......……..…... 83 Manejo de un motor paso a paso en secuencia half step …….………………………………………..Motores paso a paso bipolares …. 105 Reloj digital utilizando la interrupción del tmr0 .. 106 FISEI Conversor análogo digital del pic 16f87x ………………………………….. 103 Utilizando la interrupción del puerto b.….......… 97 Comunicación i2c con el reloj calendario ds1307 …………………………... 86 Comunicación serial pc a pic ……………………...0 …………………………………….... 111 Octavo Electrónica 2009 – 2010 FISEI ..……….. 96 Comunicación i²c con una memoria serial 24l04b …………………..….4 al b...………………………….………………… 83 COMUNICACIÓN Que es la comunicación serial? ……………………………………………….……….. 84 Comunicación serial rs232 ……………………………………………………… 85 Comunicación serial pi a pc …………………...… 84 Modos de transmisión de datos ……………………………………...…..UTA ..….....………………..........….……. 81 Manejo de un motor paso a paso en secuencia wave drive ………. 94 Comunicación i²c …………….…..7 ……………………..…..... 100 Utilizando la interrupción del puerto b.

.…….Circuito programador Pic serial …………………………………….… 115 Circuito programador Pic paralelo……………………………………………….UTA .. 118 FISEI Octavo Electrónica 2009 – 2010 FISEI .

FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA .

FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA .

y esperamos un instante hasta que se ejecute la descarga. solo nos falta un programa compilador que nos genere los archivos (. hasta visualizar el siguiente grafico. d) Se presentara una pantalla similar.uk haciendo un clic en “Compilers”.uk y realizamos los siguientes pasos: a) Ya abierta la pagina web. y acedemos dando un clic.DESCARGA E INSTALACION DE LOS SOFTWARE PARA PROGRAMAR MICROCONTROLADORES PIC En este manual se enseñara a descargar el software necesario para poder diseñar. ya que se dispone del editor de texto “MicroCode Studio”. DESCARGA DE PROGRAMA MICROCODE STUDIO Este es el primer software que vamos a descargar desde Internet.6”. a continuación proceda a descargarlo como se aprendió en los casos anteriores. e) DESCARGA DE pbp2.co. indicándonos la dirección en la que deseamos guardar el archivo descargado. FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 1 . editar y compilar proyectos con micro controladores PIC.mecanique. b) Se ejecutara una nueva pagina.co. nos deslizamos a la pestaña “Microcode Studio”.Hex) necesarios para poder grabar en un micro controlador PIC.1.44 (PicBasic Pro versión 2. en donde seleccionamos “Guardar este programa en disco”. El mensaje varia dependiendo del explorador que usamos. f) En seguida veremos una pantalla de descarga. c) En esta pantalla damos un clip en “USA versión 2.mecanique.44) Este es el compilador que nos facilitara la programación.0. Ver figura siguiente. se presenta una pantalla similar al siguiente grafico. En pequeños instantes. y luego en “PicBasic Professional”. En internet se nos facilita la versión Demo de este software en la pagina www. deslizamos la barra de desplazamiento que se encuentra a la derecha de la pantalla. Para ello necesitamos adquirir el programa mencionado. damos un clic en aceptar. aquí podemos “Cancelar” la descarga u otras opciones que depende del explorador de internet usado. primero accedemos a la magina www.

FISEI Octavo Electrónica 2009 – 2010 FISEI .El archivo a descargar se llama “PBP_demo_install.7.UTA 2 .1.exe” que terminamos de descargar y lo ejecutamos.exe”. INSTALACION DEL SOFTWARE MicroCode Studio Para instalar nuestro edito debemos buscar el archivo “mcstudio. luego “yes”. veremos una nueva pantalla en la que presionamos “next”. este archivo ejecutable contiene en una carpeta “mcs” otro instalador de Microcode Studio versión 2.0. esto se explicara mas adelante en la instalación. el cual ya no hace falta porque ya descargo anteriormente la ultima versión del mismo.

presionamos “Next” FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 3 .A continuación nos indicara la carpeta en donde se instalar “C:\Archivos de Programa\Mecanique” si deseamos lo dejamos ahí o cambiamos la dirección.

UTA 4 .En el caso que se desee cambiar la ubicación de destino de la carpeta damos un clic en “Browse”. Determinada la nueva dirección de destino presionamos “OK” FISEI Octavo Electrónica 2009 – 2010 FISEI ..

presionamos “Si”.Inmediatamente preguntara si quiere crear esta nueva ubicación.UTA 5 . FISEI Octavo Electrónica 2009 – 2010 FISEI . Luego tendremos la pantalla destino de la instalación y presionamos un clic en “Next”.

entonces presionamos “Finish” FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA .Al cabo de unos segundos la instalación habrá terminado.

veremos una nueva pantalla en la que presionamos “Next”. La carpeta pbp se debe crear manualmente.UTA 6 . para mayor comodidad. FISEI La extracción del compilador se ejecutara en breves instantes y presionamos “Finish”. Octavo Electrónica 2009 – 2010 FISEI . y presionamos “Next”.INSTALACION DE pbp244 (PicBasic Pro) Para instalar nuestro compelador debemos buscar el archivo “pbp244” que ya lo descargamos y lo ejecutamos. se recomienda instalar en la misma carpeta en la cual se instala el editor MicroCode estudió. Instantemente aparecerá una pantalla definiendo la ubicación donde se instalara el compilador.

que sirve para que aparezca el número de línea que esta programando. Octavo Electrónica 2009 – 2010 FISEI . en este caso el Pbp. luego Show line numbers in left gutter. y aparecerá una pantalla similar al siguiente grafico: FISEI En esta pantalla acceda a View y haga clic en Editor Options…. la primera vez el programa buscara el compilador disponible.CONFIGURACIÓN DE MicroCode Studio Como se recomendó anteriormente. el compilador y el editor de texto deberían estar dentro de la misma carpeta. esto es muy útil al momento de determinar errores de compilación. Ejecute el programa MicroCode Studio.UTA 7 .

Si desea también puede indicar la carpeta predefinida en los que desee guardar los archivos “.pbp”.UTA 8 . luego de personalizar presione “Ok”. Ahora aparecen números al lado izquierdo del editor de texto. esto será muy útil en lo posterior. FISEI Octavo Electrónica 2009 – 2010 FISEI .

Aparecerá una nueva pantalla mas pequeña. Para añadir un programador damos un clic en “Add New Programmer…” FISEI Octavo Electrónica 2009 – 2010 FISEI . en donde se vera que ya esta predefinido la ubicación del compilador en el disco duro. En la pestaña “Programmer”.En esta pantalla. nuevemente acceda a View y haga clic en Compile and Program Option. se puede añadir el software del programador de los microcontroladores Pic.UTA 9 .

si esta seguro que es el único archivo “usb110a1.exe” puede presionar la tecla “Find Automatically”. escriba el nombre del software programador “en mi caso usb110a1. en donde debemos marcar “create a custon programmer entry”. luego presionamos “Next”. En esta pantalla se pedirá que se ponga el nombre del archivo ejecutable.Inmediatamente aparece otra pantalla.UTA 10 . y el otro es para localizar manualmente. Se mostrara otra pantalla con dos botones. FISEI Octavo Electrónica 2009 – 2010 FISEI . el uno localiza automáticamente la carpeta que contiene al ejecutable.exe” y luego presione “Next”. En la siguiente pantalla escriba el nombre que desea darle al programador. en este caso será usb 110a1 y lego presione la tecla “Next”.

UTA 11 . luego desaparece esta pantalla y solo queda la pantalla del “PICbasic Options”. FISEI Octavo Electrónica 2009 – 2010 FISEI . no escriba nada y solo presione la tecla “Finished”. en donde debe asegurarse de los cambios presionado “Ok”. como para usb110a1 no hace falta.En esta pantalla le pedirá parámetros de programación.

Si el programa esta bien hecho y sin fallas compilara y mostrara en la parte inferior izquierda el espacio requerido en el PIC. FISEI Octavo Electrónica 2009 – 2010 FISEI . en seguida se creara automáticamente tres archivos con el mismo nombre pero diferentes extensiones (*. de preferencia relacionado con la aplicación y presione el botón “Compile” que se encuentre dentro de la pestaña “Project”. por que es este el que se debe grabar en el PIC. la tecla “F9” realiza la misma función. A continuación las partes mas importantes de la pantalla de MicroCode Studio.hex). *.asm. los procedimientos para programar son muy sencillos. este ultimo es el mas importante para nosotros. *.UTA 12 . escriba el programa y guárdelo bajo un nombre. pero con la diferencia de que este esta hecho exclusivamente para facilitar la programación de los microcontroladores PIC. PIC16F877 entre otros.mac. primero seleccionamos el modelos del PIC 16F628A.MANEJO DE MicroCode Studio MicroCode Studio es un programa editor de texto como Bloc de notas de Windows.

sirve para saber que componentes incluyen ene el programa y también como buscador de líneas. con la finalidad de ahorrarnos tiempo y no tener que abrir por separado.MAC. debemos verificar en las hojas de datos del dispositivo.Este es el espacio de memoria que requiere el programa en el PIC y aparece una vez que se copila el programa. Espacio que ocupa el PIC. también puede llamar al programador. a parte de hacer lo mismo que el botón anterior.Es lo primero que se debe seleccionar antes de empezar a programar. FISEI Nota: Para saber la capacidad de información que soporta los Pic. Buscador de Códigos.Modelo de MicroPIC. o creamos algunos nombres de línea.ASM. Compile Only – F9 Este primer botón sirve para compilar. El archivo . Compile and Program – F10 Este botón tiene doble función. el . Compilador.Aquí se van adicionando cada que se crea un variable.Esto por defecto se encuentra deshabilitado.HEX. Número de línea del programa. seleccionamos de acuerdo al modelo de Pic que vamos a programar.Estos dos botones sirven básicamente para compilar nuestros programas y crear los archivos . debemos habilitarlo previamente. es decir nuestro programa lo cambia a assembler y crea el .HEX sirve para grabar en el micro. y es muy útil a la hora de encontrar errores. :HEX.UTA 13 . . porque nos dice el número de la línea en donde se halla un error.MAC solo sirve para el PicBasic y el . y automáticamente nos indicara donde esta dicha línea. incluimos un define. Octavo Electrónica 2009 – 2010 FISEI . para esto basta con dar un clic en el nombre de la línea que deseamos encontrar. debemos fijarnos si alcanza en el PIC que disponemos o debemos remplazar por otro de mayor capacidad.ASM para los interesados en ver como lo hizo el compilador en assembler ya que podemos abrirlo en MPLAB.

compilador y programador de PIC. HIGH…. Microcode reconoce varias palabras claves como VAR. Nota: Los comentarios se crean anteponiendo un punto y como (.Es recomendable usar comentarios todo el tiempo. LOW. y porque no para usted mismo. FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 14 . Comentarios. y los pinta con mayúsculas y negrillas. por lo que no debemos utilizar estas palabras como nombre de subrutinas o variables.En esta parte es donde empezamos a escribir nuestro programa. etiquetas de línea. Nota: 1. Varias funciones ya se detallaron anteriormente durante la configuración de nuestro editor. aquí colocamos el autor y la empresa para que se coloque automáticamente cada que abrimos una pagina nueva.Programa del microcontrolador. Los PAUSE que podemos utilizar es de 1 a 65535. fecha.. aunque sea obvio para usted. y PAUSE 1 equivale a 0.001 segundos.). podemos acceder a varias funciones que nos permite el editor. autor y una explicación en breves palabras de cómo y para que sirve el programa. ni para que serbia tal instrucción. Encabezado del programa: No son nada mas que comentarios en los que podemos incluir nombre.5 segundos. Barra de tareas. dentro de un tiempo no recordara ni como lo hizo ni como funciona. equivale a mas de 1 minuto y 5.En este segmento del la pantalla principal de nuestro editor de texto para microcontroladores PIC. alguien podría necesitarlo. no deben empezar con números y tampoco debe contener espacios: 2. constantes. es decir que PAUSE 65535. noten que el texto cambia de color de negro a azul y de tipo cursiva. También podemos hacerlo modificando en View – Editor Option – Program header. Los variables..

FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA .

0 ' nombre sub rutina ' enciendo led ' espero 1 segundo ' apago led ' ir a octavio Octavo Electrónica 2009 – 2010 FISEI . PROGRAMA BÁSICO PARA HACER PARPADEAR UN LED CON INTERVALOS DE 1 SEGUNDO. un protoboard preferible de 4 regletas. Este proyecto genera un tren de pulsos visible por medio de un LED con intervalos de tiempo de 1 segundo. Es importante seguir en orden el avance de los proyectos ya que existen proyectos que requieren de una secuencia de aprendizaje. Si desea utilizar otro modelo de PIC que no sea el PIC16F62X.UTA 15 . este es un grabador tipo JMD (Jens Dyekjaer Madesn). debe considerar los cambios necesarios para su correcto funcionamiento. Como materiales básicos necesitamos un PIC16F62X. una fuente de energía y por supuesto tener un grabador de PIC‟S como el que se incluirá mas adelante.0 octavio: high led pause 1000 low led pause 1000 goto octavio end ' etiqueta para el puerto B. Para construir este grabador será necesario que primero lea el capitulo dedicado a esto.PROYECTOS CON MICROCONTROLADORES PIC PROYECTOS DE APLICACIÓN Este capitulo es el más extenso y el mas importante de este libro. no hay nada más emocionante y satisfactorio que ver funcionando un proyecto realizado por uno mismo. Al igual que otras carreras la práctica es lo que nos hace mejores. FISEI led var portb. los microcontroladores se aprende desarrollando prácticas reales. muy fácil de utilizar ya que solo requiere la energía del puerto COM. un regulador de voltaje 7805.

voy a realizar de las dos formas el programa. recuerde que son en milisegundos y sus valores son desde 1 hasta 65535. es controlando el puerto como un todo.UTA 16 .Una vez escrito el programa compilamos y grabamos el PIC Una vez realizado este proyecto siga intentando con diferentes tiempos de Pause. Este es el ejemplo ideal para entender como asignar nombres a los diferentes bits de los puertos. pruebe Pause 3 verá que el parpadeo es mas lento. FISEI Octavo Electrónica 2009 – 2010 FISEI . existe otra forma de realizar este proyecto. para que entiendan lo que digo. UN SEMÁFORO DE DOS INTERSECCIONES. vera diferentes efectos. así mismo ponga diferentes valores entre los 2 Pause. este se mide en microsegundos. para ello usaremos un grupo de leds y manejaremos todo el puerto. Si desea tiempos mas pequeños debe usar Pauseus.

de amarillo a rojo solo 3 segundos Trisb = 0 semaf: portb =%100001 pause 9000 portb =%100010 pause 3000 portb =%001100 pause 9000 portb =%010100 pause 3000 goto semaf end 'encender rojo del 1er semáforo y verde del 2do semáforo 'esperar 9 segundos 'cambiar el 2do semáforo de verde a amarillo 'esperar 3 segundos 'cambiar a verde el 1er semáforo y rojo el 2do semáforo 'esperar 9 segundos 'cambiar el 1er semáforo de verdee a amarillo 'esperar 3 segundos 'ir a semáforo FISEI Octavo Electrónica 2009 – 2010 FISEI . es decir no puede estar en el un semáforo verde y en el otro verde también existe un cambio de verde a amarillo mientras en el otro semáforo sigue en rojo.Bien es momento de escribir el programa. Primero nunca se encienden las luces del mismo color. pondremos tiempos estimados de cambio de color. para esto debemos entender como trabaja los semáforos. Por considerar que esta es una practica. empecemos de la forma que se maneja el puerto completo.UTA 17 . en el momento que se pone en rojo el primer semáforo el segundo salta de rojo a verde. de verde a amarillo durante 9 segundos.

debemos utilizar periféricos de salida como los relés.El siguiente es otra forma de escribir el programa.3 Rojo2 var portb. estos sirven para declaraciones múltiples en una sola línea. Ejemplo.1 Verde2 var portb. para ambos casos el tamaño de código generado es el mismo.UTA 18 . y además no escribimos trisb = 0 al inicio. porque HIGH ya los convierte en salida.5 Amarillo1 var portb. si queremos expresar en una sola línea las 2 siguientes declaraciones: HIGH Rojo1 HIGH Verde2 Quedara así: HIGH Rojo1 : HIGH Verde2 Si se desea aplicar este proyecto con focos de 110V. el semáforo funciona igual Rojo1 var portb.0 semaf: high rojo1 : high verde2 pause 9000 low verde2 : high amarillo2 pause 3000 low amarillo2 : low rojo1 high verde1 : high rojo2 pause 9000 low verde1 : high amarillo1 pause 3000 goto semaf end En esta otra manera de escribir el programa.4 Verde1 var portb.2 Amarillo2 var portb. noten que es mas largo que el primer programa. el siguiente es el diagrama de conexión de un relé. FISEI Octavo Electrónica 2009 – 2010 FISEI . también aquí se ve algo nuevo los 2 puntos (:).

JUEGO DE LUCES PARA DISCOTECA Este proyecto propone familiarizar aún más con el manejo de los puertos. esta vez vamos a utilizar las 8 salidas del puerto B. En la figura siguiente se muestra como conectar cada uno de los leds. FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 19 . se trata de una secuencia de luces que deben encender de izquierda a derecha una tras otra con un intervalo de 200 mili segundos.

estos sirven para cuando tenemos muchas repeticiones de una línea o grupo de líneas de programa. en el siguiente programa veremos una declaración nueva el GOSUB y el RETURN. Una de las ventajas mas importantes que tenemos es que ahorra espacio en el PIC. en nuestro caso el PAUSE. la declaración RETURN lo envía de regreso a continuar después del GOSUB que lo envió. lo que al contrario si no lo utilizaremos el GOSUB y escribiríamos 30 PAUSE. deberíamos cambiarlo a los 30 PAUSE por el de otro valor.A continuación.UTA 20 . y otra que si queremos cambiar el PAUSE por el de otro valor. en vez de poner en cada cambio de estado de las luces. un ejemplo sería trisb = 0 prueba1: portb =%00000001 pause 1000 portb =%00000010 pause 1000 portb =%00000100 pause 1000 goto prueba1 end trisb = 0 prueba2: portb =%00000001 gosub esperar portb =%00000010 gosub esperar portb =%00000100 gosub esperar goto prueba2 esperar: pause 1000 return end FISEI Octavo Electrónica 2009 – 2010 FISEI . lo agrupamos en una sola subrutina y lo llamaremos las veces que queramos. basta con cambiar una sola vez y el cambio se ejecuta para todos.

Esa declaración sirve para ejecutar un número n de veces una línea de programa o grupo de líneas de programa.4 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN ' enciende el puerto B.2 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN ' enciende el puerto B. FOR NEXT se utiliza de la siguiente manera: FISEI Octavo Electrónica 2009 – 2010 FISEI . se puede utilizar el proto que se armo para las luces de discoteca ya que el mismo nos servirá después para el siguiente proyecto el de las luces del auto fantástico. fíjense que se encuentra después y fuera de las líneas principales de programación. EJERCICIO CON LA INSTRUCCIÓN FOR NEXT Este proyecto es muy importante encenderlo.5 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN ' enciende el puerto B.1 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN ' enciende el puerto B. el siguiente proyecto pretende encender un led en el puerto B.0 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN ' enciende el puerto B.7 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN Nota: La ubicación de la subrutina Pause.0 5 veces con intervalo de medio segundo segundo.trisb = %00000000 discoteca: portb = %00000001 gosub tiempo portb = %00000010 gosub tiempo portb = %00000100 gosub tiempo portb = %00001000 gosub tiempo portb = %00010000 gosub tiempo portb = %00100000 gosub tiempo portb = %01000000 gosub tiempo portb = %10000000 gosub tiempo goto discoteca tiempo: pause 200 return ' convioerte todos los pines del puerto B en salida ' enciende el puerto B.UTA 21 . ya que el siguiente proyecto de luces de auto fantástico utilizando la declaración FOR NEXT.6 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN ' enciende el puerto B. es importante. si esta misma subrutina lo colocáremos al principio del programa. de seguro se nos cuelga por que al encontrar el RETURN simplemente no sabe a donde retornar ya que nadie lo ha enviado aún.3 y los demas los apaga ' ir a sub rutina tiempo y volver cuando diga RETURN ' enciende el puerto B. después debe detenerse por 2 segundos y luego parpadear 3 veces mas. detenerse por 3 segundos y luego repetir nuevamente el proceso.

repe var byte led var portb. Estas son creadas para guardar datos en la memoria RAM (Random Access Memory) o memoria de acceso casual. una vez que el AV R es desconectado. es decir . crea una variable y asigna un tamaño de 8 bits. BYTE Y WORD. después del NEXT. es decir 0 o 1 Repe VAR Byte Repe VAR Word . crea una variable y asigna un tamaño de un bit. está ……. nos corresponde crear un BYTE que nos permite almacenar un número hasta 255. es decir 0 a 65535 Para nuestro caso como queremos hacer 5 repeticiones. crea una variable y asigna un tamaño de 2 bytes. es decir 0 a 255 . peter debe ser creado como variable.. una vez concluido las repeticiones continúa con la declaración que . esta memoria trabaja únicamente mientras esté alimentado el PIC. NEXT . Primero se crea y asigna un tamaño para la variable peter .Peter Var Byte FOR Peter = 1 to 5 ……. los datos de la memoria RAM se borran.UTA 22 . Ejecuta las siguientes instrucciones 5 veces hasta donde dice NEXT . asignarle un espacio en la memoria en este caso para 5 LAS VARIABLES BIT. Repe VAR Bit ..0 programa: for repe = 1 to 5 ' para repeticiones de 1 a 5 high led pause 500 low led pause 500 next pause 2000 for repe = 1 to 3 ' para repeticiones de 1 a 3 high led pause 500 low led pause 500 next pause 3000 goto programa end FISEI Octavo Electrónica 2009 – 2010 FISEI .

en le en binario sería (% 10000000). si tenemos una variable X con un valor inicial de 1 (%00000001) y lo Multiplicáramos por 2 . y este es uno de ellos. Los desplazamientos utiliza la multiplicación y la división. como podemos ver ahora está regresando a su lugar de origen. veríamos que los leds se enciende de la misma forma que las luces para discoteca. también podemos LEDS = LEDS << 2 equivalente a multiplicar por 4 y se desplaza de dos en dos LEDS = LEDS >> 1 equivale a dividir por 2 y se desplaza uno a uno hacia la derecha Entendido como funciona los desplazamientos desarrollamos el siguiente programa: x var byte leds var portb trisb = 0 'hacemos salida todo el puerto B leds = 1 'cargamos la variable LEDS con 1 (%00000001) prog: for x = 1 to 7 leds = leds << 1 'desplazamos uno a uno a la izquierda pause 200 next FISEI Octavo Electrónica 2009 – 2010 FISEI . entonces 128 / 2 es igual a 64 (%01000000). pensaríamos que el programa será el doble del tamaño que el que hicimos paira las luces de discoteca. el resultado sería 2 (%00000010). que no son nada más que recorrer un uno lógico a la izquierda o .0 debemos dividir para 2. y así sucesivamente hasta llegar a 128. esta vez utilizaremos los desplazamientos. con la diferencia de que este se enciende de izquierda a derecha y luego de derecha a izquierda. como sabemos el PIC trabaja con el sistema binario. pero no es así.y este a su vez lo volveríamos a multiplicar por 2 el resultado sería 4 (%00000100). recuerde que existen varios caminos para llegar a un mismo objetivo. para hacer que las luces se regresen hasta el puerto B.Derecha de la salida de los puertos.UTA 23 .LUCES DEL AUTO FANTÁSTICO (DESPLAZAMIENTOS) Este proyecto es muy similar al de las luces para discoteca. los desplazamientos se escribe de la siguiente manera: LEDS = LEDS << 1 Equivale a multiplicar por 2 y se desplaza uno a uno.

EJERCICIOS CON PULSADORES Para esta practica debemos entender como funciona los pulsadores con el PIC. el voltaje se desvía a tierra y en este caso el PIC detecta un cambio de estado de 1L a 0L.for x = 1 to 7 leds = leds >> 1 'desplazamos uno a uno a la derecha pause 200 next goto prog end Nota: No olviden cargar a LEDS = 1. el primero es 1 Lógico. cuando es presionado. es decir siempre permite el ingreso de 5V al PIC. porque si no lo hace significa que vale cero (0) y esto multiplicado por 2 siempre dará cero. existe básicamente 2 tipos de conexión para los pulsadores. FISEI Diagrama de conexión de dos pulsadores. los siguientes son los diagramas de conexión. Octavo Electrónica 2009 – 2010 FISEI . en consecuencia nunca veríamos el desplazamiento. el funcionamiento del segundo pulsador es totalmente lo contrario.UTA 24 . el que siempre está en 1 lógico (5V) y cuando es pulsado cambia a cero lógico (0V). y el que está en cero lógico y cuando pulsamos para a uno lógico.

END IF IF porb. ELSE y si es falsa ejecuta el contenido entre . Si la comparación es verdadera ejecuta todo el .0 = 0 ENDIF . si la variable pato es mayor que 35 ejecuta Majo El siguiente es el diagrama de conexión para esta práctica del pulsador FISEI Octavo Electrónica 2009 – 2010 FISEI . ir a Michu si la entrada Portb.IF porb.0 = 0 THEN Michu . contenido que se encuentra entre el THEN y el . ir a Gato si la entrada Portb.0 = 1 Wait 1 Porta. ELSE ………. Si la comparación es verdadera ejecuta todo el . contenido que se encuentra entre el THEN y el .0 es cero lógico IF porb. ELSE y END IF IF pato > 10 THEN Majo .0 = 1 THEN Gato . ENDIF .0 = 0 THEN Porta.0 es uno lógico IF porb.UTA 25 .0 = 0 THEN ……….

de estado 1 lógico.1 pause 1000 low porta. el resultado lo veremos en código binario a través de 8 leds conectados al puerto B. por lo que el PIC detecta un cambio de estado a cero lógico. en el momento que es presionado este desvía la tensión hacia tierra. A continuación el programa en Basic para leer el estado de un pulsador cmcon = 7 'convierte todo el puerto A en digital prog: if portb.1 goto prog end CONTADOR BINARIO CON PULSADOR ANTIRREBOTE En esta práctica haremos un contador binario. dada la velocidad que procesa el PIC el programa se ejecutara varias veces hasta que suelte el pulsador.UTA 26 .Diagrama de conexión de un pulsador conectado en el puerto B0. ya que si presiona por un instante. Para esta practica necesita poner un antirrobote al pulsador. en ese instante se enciende el led.3 = 0 then encen ' si portb.3 = 0 ir a encen goto prog encen: high porta. para aprender de los errores haga el programa sin antirrobote y luego con antirrobote FISEI Octavo Electrónica 2009 – 2010 FISEI .

este envía a un programa que lo mantiene encerrado.1 num var byte num = 0 pulsar: portb = num 'indica sacar el valor de num a través del puerto B if boton = 0 then contar goto pulsar contar: num = num + 1 'suma 1 a la variable num goto pulsar end Si tuvo la oportunidad de ver funcionando este proyecto.UTA 27 . que es necesario para que en el momento de soltar la tecla se estabilice la señal cmcon = 7 'convierte todo el puerto A en digital trisb = 0 boton var porta.1 num var byte num = 0 pulsar: portb = num 'indica sacar el valor de num a través del puerto B if boton = 0 then contar goto pulsar contar: IF boton = 0 then contar Pause 200 num = num + 1 'suma 1 a la variable num goto pulsar end FISEI Octavo Electrónica 2009 – 2010 FISEI . Para solucionar este problema proponemos hacer un programa de antirrobote de tecla. a continuación incluimos un PAUSE 200. en el cual si presionamos el botón. en este tiempo el PIC ya sumo alrededor de 25000 veces. esto es como se dijo antes por el PIC trabaja a gran velocidad cada instrucción y cuando una persona presione el botón. por lo menos necesita de 100ms de tiempo para soltarlo.cmcon = 7 'convierte todo el puerto A en digital trisb = 0 boton var porta. únicamente sale de esta subrutina en el momento que el pulsador deja de ser presionado. se dará cuenta que cada que se pulsa el botón el contador aumenta demasiado.

división. Debemos tener en cuenta que una variable BYTE no puede exceder su contenido a mas de 255. www.frino. Para esto utilizaremos dos operadores matemáticos. el primero para aumentar la frecuencia del parpadeo del led. y viceversa si el resultado de la resta pasara a negativo.ar y descargue un manual de pbp en español.Para conocer más sobre los operadores matemáticos disponibles como: resta.todopic. LED INTERMITENTE DE VELOCIDAD VARIABLE Este proyecto se basa en dos pulsadores.com. la suma y la resta.UTA 28 . recomendamos ver la ayuda de microcode en Help Topics/math operators/introducción o visite las webs www. ni tampoco pasar a valores negativos al ser restado consecutivamente. mientras que la resta disminuirá las repeticiones del mismo PAUSE.ar. si excediera el valor a mas de 255. IF veces < 10 THEN RETURN IF veces > 150 THEN RETURN La primera se encarga de no permitir que siga restando. la variable se carga con 255.com. con esto el tiempo máximo de pause sería de 750 milisegundos (150 x PAUSE 5). etc. y el segundo para disminuir la frecuencia de parpadeo. para que el tiempo mínimo de pause sea de 50 milisegundos (10 x PAUSE 5). mientras que la segunda se encarga de no permitir que siga sumando si el valor de la variable es mayor que 150. el mismo se carga con valor de cero. la suma incrementa las repeticiones de una instrucción FOR…NEXT. este ejecuta en RETURN. existentes en el compilador PICBasic PRO. FISEI Octavo Electrónica 2009 – 2010 FISEI .. que contiene un PAUSE 5. multiplicación.

5 ' el portb.UTA 29 . cuyo pin es especifico para el MCLR.5. FISEI Octavo Electrónica 2009 – 2010 FISEI . para siempre.4 led var portb. la utilización del MCLR es muy sencillo. aparte del reset al encendido que dispone. el proyecto debe funcionar de la siguiente manera: Hacemos un programa para que parpadee un led cada 200 milisegundos (PAUSE 200). y al pulsar el botón de MCLR.Pbaja var portb. este parpadeo debe detenerse y al soltarlo debe continuar con el parpadeo del led. es importante de colocar las líneas de código en el programa para activar o desactivar el reset externo.5 se llama Pbaja Psube var portb.3 xy var byte veces var byte veces = 100 inicio: high led gosub timer low led gosub timer goto inicio timer: if psube = 0 then gosub restar if pbaja = 0 then gosub sumar for xy = 1 to veces pause 5 next return sumar: if veces > 150 then return veces = veces + 5 return restar: if veces < 10 then return veces = veces . solo debemos instalar un pulsador 1 lógico (pull_up) en el puerto A.5 return end UTILIZANDO EL MCLR (RESET EXTERNO) Este es un reset externo que le PIC posee.

7447 Los display son muy utilizados para visualizar datos. para lo cual se facilita el diagrama en la figura siguiente.4 pause 200 low portb.9). El proyecto consiste en hacer un contador decimal (0.UTA 30 . con la diferencia que solo se necesita 4 bits del puerto.@ device mclr_on 'activo MCLR iniciar: high portb. El programa es muy similar al contador binario. FISEI Octavo Electrónica 2009 – 2010 FISEI . el decodificador binario a 7 segmentos (7447).4 pause 200 goto iniciar PROYECTO CON DISPLAYS MANEJO DE UN DISPLAY DE 7 SEGMENTOS CON EL CI. es encargado de transformar el número binario que ingresa al número decimal.….5 segundos. Para esta práctica se utiliza como periférico de salida un display tipo ánodo común. con intervalos de 0.

Diagrama de conexión de un display ánodo común con el BCD 7447 @ device mclr_off 'apago MCLR trisb = %11110000 ' hace salidas solo los bits mas bajos número var byte encerar: número = 0 display: portb = número pause 500 if número = 9 then encerar número = número + 1 goto display end UN CONTADOR DECIMAL DE UN DIGITO CON EL CI 7447 Y UN PULSADOR Adicionando al proyecto anterior un pulsador se hace un contador manual de un digito. No se olvide hacer un programa antirrobote de tecla. FISEI Octavo Electrónica 2009 – 2010 FISEI .0. pero adicionando un pulsador de estado uno lógico en el puerto B. El diagrama de este proyecto es el mismo de la figura anterior. por el caso expuesto anteriormente.UTA 31 .

esta nos indica cuando ha sido pulsada.UTA 32 . pues bien para esto utilizamos banderas que no son nada más que una variable de 1 bit.4 flag var bit encerar: número = 0 display: portb = número if bot = 0 then aumentar pause 80 flag = 0 goto display aumentar: if flag = 1 then goto display flag = 1 if número = 0 then encerar número = número + 1 goto display end Octavo Electrónica 2009 – 2010 FISEI .4 encerar: número = 0 display: portb = número if bot = 0 then aumentar goto display aumentar: if bot = 0 then aumentar pause 200 if número = 0 then encerar número = número + 1 goto display end Ustedes se preguntaran como hacer para que el número se incremente apenas pulsamos la tecla y no cuando soltamos como actualmente sucede. FISEI @ device mclr_off 'apago MCLR trisb = %11110000 ' hace salidas solo los bits mas bajos número var byte bot var portb.@ device mclr_off 'apago MCLR trisb = %11110000 ' hace salidas solo los bits mas bajos número var byte bot var portb. El siguiente es un ejercicio adicional aplicando la bandera.

b. Como debemos encender los segmentos a. esto se hace de la siguiente forma. B3 y B6. la segunda vez. debemos calcular el número decimal que hace que se enciendan los segmentos correctos del display. c. estos debemos ponerlos en cero lógicos para que los segmentos se enciendan (recuerde que el display es ánodo común). para esto debemos saber que para sacar el número 3 por ejemplo. en esta ocasión haremos que le propio PIC sea como el CI.UTA 33 .MANEJO DE UN DISPLAY DE 7 SEGMENTOS SIN EL CI. B1. y los demás 1 lógico para que permanezcan apagados DECLARACIÓN LOOKUP Sirve para obtener un valor constante de una tabla. d y g. respectivamente. B2. esto lo hace según el número de veces que repita el FOR…NEXT. revisamos los pintes del PIC que les corresponde y estos son: B0. toma el dato del lugar 1 y así sucesivamente FISEI Octavo Electrónica 2009 – 2010 FISEI . por ejemplo la primera vez toma el dato que se encuentra en el lugar 0.7447 Como se sabemos.7447. al PIC se le puede programar para reemplazar a casi cualquier circuito integrado.

esto lo conseguimos gracias al transistor tipo PNP. es decir que los cambios son tan rápidos que el ojo humano ve todos los display encendidos al mismo tiempo.120. luego pasamos a cero lógico el segundo transistor y los demás los mantenemos en nivel alto. al mismo tiempo sacamos el número 7 por los bits menos significativos del puerto B. es decir el número 184 porque si analizamos en código binario.2. que nos ayudara a multiplexar cada uno de los displays.18. el CI 7447 se encargara de formar el número 4 en el display. y así consecutivamente. el tiempo que debemos mantener activado cada transistor no puede ser mayor que 5 mili segundos. primero habilitamos el cuarto transistor.4]. tenemos que los bits mas bajos entran al CI 7447.UTA 34 .@ device mclr_off 'apago MCLR di var byte dat var byte trisb = 0 prog: for di = 0 to 15 lookup di. el funcionamiento es bastante sencillo.7447 El siguiente proyecto debe encender 4 display para poder mostrar cualquier número de 0 hasta el 9999.33.dat 'toma uno por uno cada valor de la tabla contante y lo guarda en 'la variable dat portb = dat pause 500 next di goto prog end MANEJO DE 4 DISPLAY DE 7 SEGMENTOS CON EL CI. si por ejemplo queremos sacar el número 6874.121.[64.8. FISEI Octavo Electrónica 2009 – 2010 FISEI .0.70. debemos conectar los 4 bits mas altos a cada transistor y los cuatro bits mas bajos al CI 7447.36. y los bits mas altos.3.6. el de la derecha y enviamos el número 4. cuando en realidad solo se encienden uno a la vez. son los encargados de encender el display que le corresponden a las centenas. Ejemplo: para sacar el número 8 en las centenas debemos sacar (176 + 8).120.48.25.16.

activa el transistor de los miles y presenta el 5 pause 5 goto display end Octavo Electrónica 2009 – 2010 FISEI . activa el transistor de las unidades y presenta el 8 pause 5 portb = 208 + 7 '%11100000. activa el transistor de las centenas y presenta el 6 pause 5 portb = 112 + 5 '%11100000. activa el transistor de las decenas y presenta el 7 pause 5 portb = 176 + 6 '%11100000.UTA 35 .FISEI @ device mclr_off 'apago MCLR trisb = 0 display: portb = 224 + 8 '%11100000.

comparar y visualizar el número almacenado en la memoria.UTA 36 .CONTADOR DECIMAL DE 4 DÍGITOS CON EL CI. y entendido el ejercicio del contador. y si pulsamos la tecla C. activa un aviso auditivo. presenta el número al cual va a comparar. este buzzer trabaja a 12 Voltios. FISEI Octavo Electrónica 2009 – 2010 FISEI . lo que diferencia de los parlantes comunes es que no necesita ser activado con una frecuencia. pues el siguiente proyecto consta en hacer un contador decimal que incremente su valor cada vez que se pulsa el botón A. sino basta con alimentarle con 12 voltios para que suene El siguiente es el programa para controlar los 4 displays.7447 Es hora de hacer un proyecto de considerable tamaño. contar. si pulsamos el botón B se encera y se apaga la chicharra. si el número a contar es igual a 24. encerar. una vez entendido como multiplexar 4 displays.

UTA 37 .2 visual vAr Porta.3 activar var bit trisb = 0 cmcon = 7 high chicha pause 200 Encerar: Unid = 0 Dece = 0 Cent = 0 Mile = 0 low chicha display: Portb = 224 + Unid pause 5 Portb = 208 + Dece pause 5 Portb = 176 + Cent pause 5 Portb = 112 + Mile pause 5' Gosub Teclas Goto display Teclas: If contar = 0 Then Gosub Sumar If encera = 0 Then Gosub Encerar If visual = 0 Then Gosub Visualizar Activar = 1 Return Sumar: If Activar = 0 Then Return Activar = 0 Unid = Unid + 1 If Unid < 10 Then Comparar Unid = 0 Dece = Dece + 1 If Dece < 10 Then Comparar Dece = 0 Cent = Cent + 1 If Cent < 10 Then Comparar Cent = 0 Mile = Mile + 1 If Mile < 10 Then Comparar Mile = 0 Return Visualizar: Portb = 224 + Setunid pause 5 Portb = 208 + Setdece pause 5 Portb = 176 + Setcent pause 5 Portb = 112 + Setmile pause 5 Return Comparar: If unid != setunid then return If dece != setdece then return If cent != setcent then return If mile != setmile then return high chicha return end FISEI Octavo Electrónica 2009 – 2010 FISEI .1 Encera vAr Porta.@ device mclr_off 'apago MCLR Unid vAr Byte Dece vAr Byte Cent vAr Byte Mile vAr Byte Setunid vAr Byte Setdece vAr Byte Setcent vAr Byte Setmile vAr Byte Setunid = 4 Setdece = 2 Setcent = 0 Setmile = 0 chicha vAr Porta.0 Contar vAr Porta.

FISEI Octavo Electrónica 2009 – 2010 FISEI . como vieron la ventaja de conectar el display directamente al PIC es la de poder sacar casi la mayoría de las letras del alfabeto. 7447. pues bien este proyecto consiste en sacar la palabra HOLA a través de los 4 displays.MANEJO DE 4 DISPLAYS DE 7 SEGMENTOS SIN EL CI. Esquema de conexión para manejar 4 displays directamente desde el PIC y multiplexado por el puerto A.7447 (ROTULACIÓN) Es posible hacer un contador decimal igual que el del proyecto anterior y sin ayuda del CI.UTA 38 . pero en esta ocasión haremos mas que eso.

para comprobarlo modifique el valor de todas las repeticiones de 1 TO 20 al doble 1 TO 40. pero para no alargar mucho el programa solo utilizaremos la palabra HOLA. La variable x es la que regula la velocidad con que se desplazan las letras. moviéndose continuamente de derecha a izquierda y con un espacio por palabra. con esto podemos ingresar frases completas como “HOLA LUIS”.UTA 39 . y vera como se desplaza las letras mas lentamente FISEI Octavo Electrónica 2009 – 2010 FISEI . le añadiremos movimiento.@ device mclr_off 'apago MCLR cmcon = 7 'convierte todo el puerto A en digital trisb = 0 'convierte todos los pines del puerto B en salidas trisa = 0 'convierte todos los pines del puerto A en salidas texto: porta = 14 '%1110 activa el display de la derecha portb = 8 '%0001000 forma letra A pause 5 porta = 13 '%1101 activa el siguiente display portb = 71 '%1000111 forma letra L pause 5 porta = 11 '%1011 activa el siguiente display portb = 64 '%1000000 forma letra O pause 5 porta = 7 '%0111 activa el siguiente display portb = 9 '%0001001 forma letra H pause 5 goto texto end MANEJO DE 4 DISPLAYS CON ROTULO EN MOVIMIENTO Para hacerlo mas interesante el proyecto anterior.

UTA 40 .@ device mclr_off 'apago MCLR cmcon = 7 'convierte todo el puerto A en digital trisb = 0 'convierte todos los pines del puerto B en salidas trisa = 0 'convierte todos los pines del puerto A en salidas x var byte texto: for x = 1 to 20 porta = 14 : portb = 8 pause 5 porta = 13 : portb = 71 pause 5 porta = 11 : portb = 64 pause 5 porta = 7 : portb = 9 pause 5 next for x = 1 to 20 porta = 14 : portb = 127 pause 5 porta = 13 : portb = 8 pause 5 porta = 11 : portb = 71 pause 5 porta = 7 : portb = 64 pause 5 next for x = 1 to 20 porta = 14 : portb = 9 pause 5 porta = 13 : portb = 127 pause 5 porta = 11 : portb = 8 pause 5 porta = 7 : portb = 71 pause 5 next for x = 1 to 20 porta = 14 : portb = 64 pause 5 porta = 13 : portb = 9 pause 5 porta = 11 : portb = 127 pause 5 porta = 7 : portb = 8 pause 5 next for x = 1 to 20 porta = 14 : portb = 71 pause 5 porta = 13 : portb = 64 pause 5 porta = 11 : portb = 9 pause 5 porta = 7 : portb = 127 pause 5 next goto texto end FISEI Octavo Electrónica 2009 – 2010 FISEI .

este puede mostrar cualquier carácter ASCII. Sin backlight (14 pines) o con backlight (16 pines.5V o +5 Vcc (según especificaciones técnicas) Tierra GND del backlight Octavo Electrónica 2009 – 2010 FISEI . 2x20. 2x16.MANEJO DE UN MODULO LCD Los módulos LCD (Display de Cristal Líquidos). 4x40. iluminado de pantalla). Datos Lectura/Escritura en LCD R/W = 0 escritura (write) R/W = 1 lectura (read) Habilitación E = 0 módulo desconectado E = 1 módulo conectado Bit menos significativo (bus de datos bidireccional) Bit menos significativo (bus de datos bidireccional) Alimentación del backlight +3. y consume mucho menos que los display de 7 segmentos.UTA 41 . Fotografía de un LCD 2x16 FISEI Pin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Simb Vss Vdd Vo RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 A K Descripción Tierra de alimentación GND Alimentación de +5V CC Ajuste de contraste del cristal liquido (0 a +5V) Selección del registro control/datos RS=0 reg. son utilizados para mostrar mensajes que indican al operario es estado de la maquina. existe de varias presentaciones por ejemplo de 2 líneas por 8 caracteres. el LCD más popular es el 2x16. etc. o para dar instrucciones de manejo. etc. 4x20. Mostar valores. 2 líneas de 16 caracteres cada una. El LCD permite la comunicación entre las maquinas y los humanos. Control RS=1 reg.

$80 $FE. $0F $FE. como podemos ver en la figura siguiente solo debemos conectar el bit de Registro. Pero la gran ventaja de hacer conexión a 4 bits. en el pin B3 el bit Enable y en el puerto A empezando desde A0 hasta A3. $C0 $FE. son los pocos cables que se deben conectar.UTA 42 . asume que se conecto en el pin A4 el bit de registro. con esto es suficiente para enviar mensajes. FISEI Octavo Electrónica 2009 – 2010 FISEI .LA DECLARACIÓN LCDOUT: sirve para mostrar ítems en una pantalla de cristal líquido. $0C $FE. 1 $FE. $10 $FE. $14 $FE. y seguido por el comando a utilizar. el Enable y los 4 bits más altos del LCD. primero envía los 4 bits más altos y luego los 4 bits mas bajos. esto no es un inconveniente si consideramos que el LCD trabaja en microsegundos. $94 $FE. la diferencia está en el tiempo que se demora. luego escribiendo $FE. se utiliza escribiendo: LCDOUT. Esta configuración predefinida. se lo puede cambiar de acuerdo a la necesidad. mientras que la de 8 bits envía todo al mismo tiempo. $D4 Operación Limpia el visor LCD Vuelve al inicio (comienzo de la primera línea) Apagar el cursor Subrayado el cursor activo (-) Parpadeo del cursor activo Mover el cursor una posición a la izquierda Mover el cursor una posición a la derecha Mueve el cursor al comienzo de la primera línea Mueve el cursor al comienzo de la segunda línea Mueve el cursor al comienzo de la tercera línea Mueve el cursor al comienzo de la cuarta línea Los LCD se puede conectar con el PIC con un bus de 4 u 8 bits. como lo veremos mas adelante. los bits más altos del LCD. El compilador PBP soporta módulos LCD‟S con controlador Hitachi 44780 o equivalentes y por defecto. pues la comunicación a 4 bits. el siguiente cuadro muestra los comandos mas utilizados: Comando $FE. $0E $FE. 2 $FE.

“ Micro PIC” FISEI Octavo Electrónica 2009 – 2010 FISEI .1.” Hola” y LCDOUT $FE. "Hola" 'limpiar pantalla y sacar el tecto hola lcdout $FE. 1. tenemos 2 maneras de hacerlo. la primera es dando espacio antes de cada palabra.UTA 43 . $C0. pero existen otros modelos que necesita unos pocos milisegundos para estar listos.@ device mclr_off 'apago MCLR pause 200 lcdout $FE. ejemplo: LCDOUT $FE. si queremos que salgan centrados en nuestro LCD. por eso colocamos un PAUSE 200 al comienzo del programa. "micro PIC" 'pasar al comienzo ded la segunda linea 'y escribir micro PIC end Nota: algunos LCD no requieren de ninguna PAUSE al inicio. $C0. Bien una vez listo el texto notaremos que las dos palabras están al lado izquierdo.

"micro PIC" 'pasar el cursor a la 7ma casilla de 1ra línea y escribe 'pasar a la casilla 5ta de la 2da línea y escribe micro PIC Se debe entender que existe un cursor que aunque no lo vemos. $14 'desplaza el cursor una casilla a la derecha pause 2000 lcdout. Primero que nada haremos visible el cursor y luego pondremos PAUSE para poder ver el funcionamiento."1" 'vuelve al inicio de la 1era fila y escribe 1 end Octavo Electrónica 2009 – 2010 FISEI . para poder entender haremos un ejercicio completo.Lo cual es sencillo pero no es muy recomendable porque ocupa mas espacio en el PIC. 1 pause 2000 lcdout pepa. 1 LCDOUT $FE. $C0+12.UTA 44 .2. así podrán aprender más de LCD y las funciones de cada uno de los comandos. "Hola" LCDOUT $FE. $10 'desplaza el cursos una casilla a la izquierda pause 1000 next lcdout. LCDOUT $FE. "8Vo" pause 2000 lcdout pepa. "TABIN" pause 2000 for x = 1 to 3 lcdout pepa. FISEI @ device mclr_off 'apago MCLR x var byte pepa con $FE pause 2000 lcdout pepa. $0F 'muestra el cursor en casilla negra pause 2000 lcdout pepa. "V" 'enviar caracter ASCII "V" para corregir TAVIN pause 2000 lcdout pepa. $0E 'subraya el cursor pause 2000 lcdout pepa. $C4. pues este es el que indica donde aparecerá la siguiente letra. $86. la segunda manera es asignando el lugar donde se requiere que aparezca cada palabra.

este permanecerá ahí y el PIC se lo puede utilizar para otras tareas o podemos desconectarlo si lo deseamos. y cuando desee escribir en la segunda línea pondrían: LCDOUT pepa.0 al B. por ejemplo para utilizar los comparadores de voltaje que se encuentran en el puerto A. En ocasiones especiales se debe cambiar la configuración de los pines del PIC hacia el LCD.4 al B. programamos de la misma forma que las ocasiones anteriores. estos deben estar en un solo puerto. puede definir la constante: lin2 CON $C0. además debemos definir en el PBP que vamos a utilizar un bus de 8 bits. También cave recalcar que el LCD tiene una memoria RAM (Random Access Memory) que lo explicaremos más adelante. así mismo si se les dificulta memorizar como pasar a la segunda línea. esto es de la siguiente manera: DEFINE LCD_BITS 8 „ Define comunicación a 8 bits con el LCD Y si nuestro LCD posee 4 líneas. “Hola”. también debemos definirlo de la siguiente forma DEFINE LCD_BITS 4 „ Define comunicación 4 8 bits con el LCD FISEI Octavo Electrónica 2009 – 2010 FISEI .Observen que la constante $FE se le cambio por pepa. o lo que es lo mismo utilizando números decimales: LCDOUT 254. necesitamos dejar disponibles estos pines.UTA 45 .3) o los 4 bits más altos (B.7) de un puerto del PIC. esto se logra adicionando al principio lo siguiente: DEFINE LCD_DREG DEFINE LCD_DBIT PORTB 4 „define pines del LCD B4 a B7 „empezando desde el puerto B4 hasta el B7 „define pin para conectar el bit RS „en el puerto B3 „define el pin par conectar el bit Enable „en el puerto B2 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 3 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 2 Una vez que se define la nueva configuración de pines para el LCD. 192. y si deseamos hacer una comunicación a 8 bits con el LCD. “Hola”. lin2. por lo que una vez que se envía el texto. es importante además saber que los 4 bits de datos solo se pueden configurar en los 4 bits más bajos (B.

FISEI Octavo Electrónica 2009 – 2010 FISEI . en nuestras simulaciones vamos a obviar esto. Como conexión para esta practica utilizaremos la nueva configuración aprendida. Configuración de un LCD a 4 bits con una configuración diferente a la predefinida por el PBP. que nos servirá para enviar carácter por carácter con un intervalo de 400 mls. en esta nueva práctica incluimos la declaración LOOKUP.4 al B.7 para los bits de comunicación .UTA 46 . dando como resultado un efecto especial en la visualización. PRESENTACIÓN DE CARÁCTER POR CARÁCTER EN LCD En las practicas anteriores se presentaron mensajes completos en un instante. esta vez utilizando el puerto B.Nunca debes olvidarte de colocar el potenciómetro en el display y las alimentaciones.3 para el bit R/S al B2 pare el Enable y desde el B.

abc lcdout . el cual no es visible y luego iremos desplazando a la izquierda. FISEI Octavo Electrónica 2009 – 2010 FISEI . como resultado tendremos un texto que se mantiene en movimiento.@ device mclr_off 'apago MCLR DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 3 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 2 x var byte abc var byte pause 200 ini: lcdout $FE. una vez que este termina recorrerá 16 posiciones en blanco y luego volverá a parecer los 24 caracteres del texto.abc pause 400 next pause 2000 goto ini end DESPLAZAMIENTO DE UN TEXTO LCD El LCD dispone en cada una de las líneas 40 posiciones de memoria.["Microcontrolador"].UTA 47 . en el siguiente ejercicio escribiremos un mensaje desde el casillero 17 ($90).1 for x = 0 to 15 lookup x. de los cuales únicamente 16 son visibles.

1 pause 200 ini: lcdout $FE.0.abc pause 400 next goto ini end CONTADOR DE PULSOS CON LCD Este proyecto. el cual lo conectamos al PIC para su posterior conteo. 1000. este encenderá un led Verde.I 555 que nos ayuda a generar un tren de pulsos variable. no se encenderá ningún led. consiste en contar el número de pulsos que ingresan por un pin en un determinado periodo.$90 for x = 0 to 23 lookup x. se encenderá una alarma visual (un led rojo). Para esta practica utilizaremos el C. este a su vez visualiza en un LCD. y si la cantidad de pulsos baja a menos de 100Hz.["Microcontroladores-PIC-"]. Sirve para contar el número de pulsos que ingresan por un pin en un determinado tiempo. COUNT portb.abc lcdout . $7 lcdout $FE. la manera de utilizarlo es la siguiente.@ device mclr_off 'apago MCLR DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 3 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 2 x var byte abc var byte lcdout $FE. abc FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 48 . este a su vez lo guarda en una variable para su posterior procesamiento. si la frecuencia se mantiene entre estos 2 rangos. si la cantidad de este supera a los 120 pulsos por segundo es decir 120Hz. DECLARACIÓN PULSEIN.

El cual se interpreta así: cuenta pulsos a través del puerto B0 en un periodo de 1000 milisegundos y lo guarda en la variable previamente creada llamada abc, el periodo podemos variarlo de 1 a 65535.

@ device mclr_off 'apago MCLR cmcon = 7 ledred var portb.2 ledver var portb.1 puls var word prog: count portb.0, 1000, puls ' contar pulsos en el puerto B.0 lcdout $FE,1 LCDOut $FE,$82,"Frecuencia" lcdout $FE,$C5, dec puls, "Hz" if puls > 120 then alarmah if puls < 100 then alarmal low ledred : low ledver goto prog alarmah: high ledred : low ledver goto prog alarmal: low ledred : high ledver goto prog end

LA PALABRA DEC. Sirve para mostrar el número de la variable en decimal, también se lo puede representar por el signo (#), además existe las palabras BIN y HEX, el siguiente es un ejemplo de cómo mostraría el LCD si puls = 105: LCDOUT $FE,$C5, DEC puls, “Hz” ;muestra en el LCD así: 105Hz

También se lo puede utilizar el signo # que equivale a DEC LCDOUT $FE,$C5, # puls, “Hz” ;muestra en el LCD así: 105Hz Si deseamos ver la variable en hexadecimal pondríamos así: LCDOUT $FE,$C5, HEX puls, “Hz” ;muestra en el LCD así: 69Hz

FISEI

Y si queremos verlo en binario LCDOUT $FE,$C5, BIN puls, “Hz”

;muestra en el LCD así: 1101001Hz

Octavo Electrónica 2009 – 2010

FISEI - UTA

49

LECTURA DE UN POTENCIÓMETRO CON LCD
LA DECLARACIÓN POT: esta declaración sirve para leer el estado de un potenciómetro de 5K hasta uno de 50K, o cualquier elemento resistivo cualesquiera, el principio de funcionamiento es muy sencillo, utiliza la ayuda de un condensador de 0.1uf, al cual lo carga y descarga utilizando el potenciómetro para regular la corriente que circula, entonces a mayor resistencia el capacitor se demora mas tiempo en cargarse, y la PIC nos dará un valor alto u si giramos el potenciómetro a la mínima resistencia, el capacitor se cargara más rápido y la variable nos dará cero, en definitiva estaremos leyendo el estado de un potenciómetro.

Conexión de un potenciómetro para leerlo.

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

50

@ device mclr_off 'apago MCLR DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 3 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 2 dato var byte medir pot portb.0,255,dato 'leer el potenciometro y guardar en dato lcdout $FE,1," Rango= " lcdout ,#dato pause 100 goto medir end

SONIDO
GENERACIÓN DE SONIDO

El software Microcode es capaz de sacar las frecuencias especificadas por un pin del PIC, para esto aprenderemos la declaración FREQOUT. LA DECLARACIÓN FREQOUT. Saca lo o las frecuencias especificadas por un pin del micro, estas pueden ser de 0 a 32767 Hz, su utilización es de la siguiente forma. FREQOUT pin, duración, pulsos FREQOUT Portb.0 ,2000 , 1000

Quiere decir sacar una frecuencia de 1000 ciclos durante 2 segundos por el puerto B.0. En esta práctica lo utilizaremos para generar un sonido a través de un piezoeléctrico o por medio de un parlante

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

51

10. Sirve para generar tonos y/o ruido blanco en un pin del PIC. 50.0 end UNA SIRENA POLICIAL Esta practica consiste en sacar por un parlante el sonido característico de una sirena policial. FISEI Octavo Electrónica 2009 – 2010 FISEI .74 Hz y 127 a 10000 Hz. 2000. para esto emplearemos la ayuda de la declaración SOUND.0.0. el primer tono es 100 que equivale a (7874 Hz) con una duración de 10 milisegundos y luego un tono de 50 (3937 Hz) con una duración de 10 milisegundos también.UTA 52 . y es posible combinar hasta dos frecuencias desde 1 a 127 que son tonos y 128 a 255 ruido blanco.freqout portb.2KHz . LA DECLARACIÓN SOUND. 1 equivale a 78. 0 es silencio. En cuanto a los materiales y diagrama de conexión son los mismos de la practica anterior. esto se lo utiliza de la siguiente manera: SOUND portB.durante 2 segundos por el puerto B. [100.7200 .0. 10] Esto quiere decir sacra dos tonos por el puerto B.dacar una frecuencia dee 7.

10. el micro trabaja 5 veces más rápido que antes.0 goto programa end UTILIZANDO UN CRISTAL DE MAYOR VELOCIDAD Como sabemos el PIC esta trabajando actualmente a una velocidad de 4MHz.programa: sound portb. 10. 16. utilizando un oscilador interno (RC). genera tonos por el puerto B. esto se logra adicionando un DEFINE al inicio del programa de la siguiente manera: DEFINE OSC 20 . 50. en este caso notaremos una considerable diferencia en cuanto a la nitidez del sonido respecto al programa anterior.0000002 S). [100. pero el PIC puede operar también con osciladores externos de hasta 20MHz. con un oscilador de 20MHz lo hará en 0.0. Para esta práctica necesitaremos estos elementos 1 cristal de 20MHz u otro de menor velocidad. Especifica al PBP que se va a utilizar un cristal de 20MHz Con un oscilador de 20MHz. el PIC ejecutaba cada instrucción en 1uS. 2 capacitores de 22pF FISEI Octavo Electrónica 2009 – 2010 FISEI . 20 MHz).UTA 53 . 12.2 uS (0. Este es el momento de aprender a utilizar un oscilador de mayor frecuencia (8. es decir con un oscilador interno de 4Mhz.10] .

0 goto programa end Para que este proyecto funcione se debe especificar al compilador que usaremos un cristal externo. genera tonos por el puerto B. 10. para ello debemos aumentar la siguiente línea de código al inicio del programa.0.define OSC 20 . @ DEVICE HS_OSC Frecuencia 4 MHz 32 KHz 200 KHz 100 KHz 2 MHz 4 MHz 8 MHz 10 MHz 12 MHz 16 MHz 20 MHz OSC1/C1 ------------68 – 100 pF 15 – 30 pF 68 – 150 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF OSC1/C1 -----------68 – 100 pF 15 – 30 pF 68 – 150 pF 15 – 30 Pf 15 – 30 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF 15 – 30 pF Tipo IntRC I/O LP LP XT XT XT HS HS HS HS HS GENERACIÓN DE UN TIMBRE DE TELÉFONO CELULAR Esta practica consiste en sacar por un parlante el sonido característico de un teléfono celular. En cuando al diagrama de conexión y materiales. 50. [100.10] .UTA 54 . para esto emplearemos la ayuda de la declaración SOUND.especifica que se va a utilizar un oscilador de 20MHz programa: sound portb. podemos utilizar el mismo de la práctica anterior FISEI Octavo Electrónica 2009 – 2010 FISEI .

200.0.UTA 55 . estos tonos no son nada mas que el envió de dos frecuencias especificas asignadas a cada tecla.@ device HS_OSC . FISEI Octavo Electrónica 2009 – 2010 FISEI . lo que sucede cuando pulsamos una tecla. pero para facilitarnos las cosas el compilador PBP tiene una declaración específica para este trabajo.4.0.941.1477 .123. así como también con diferentes tiempos y verá que bien pude componer una melodía.cambiar a oscilador de alta velocidad HS define OSC 20 . esto podríamos hacerlo con la declaración FREQOUT @ device HS_OSC .equivale a presionar la tecla 9 de DTMF pause 50 goto inicio Esto deberíamos hacerlo por cada tecla que desearemos que marque.especifica que se va a utilizar un oscilador de 20MHz x var byte prog: for x = 1 to 15 sound portb. [125. es que envía una frecuencia baja y luego una segunda frecuencia del grupo alto.0. LLAMADA TELEFÓNICA DTMF Esta practica tiene como objetivo generar tonos DTMF (Dual tono Multifrecuency) a través de un PIC.5] pause 2500 next goto prog end Pruebe con algunas combinaciones de tonos.cambiar a oscilador de alta velocidad HS define OSC 20 .especifica que se va a utilizar un oscilador de 20MHz inicio: freqout portb.equivale a presionar la tecla 0 de DTMF pause 50 freqout portb. como los que genera cualquier teléfono fijo o celular.1336 . estas frecuencias podemos ver en la figura siguiente.200.852.

5. sea este desde 4 a 20 MHz.8. además notarán que esta resistencia empieza a disipar calor en el momento que se une a la red telefónica. por lo que experimentalmente no es muy confiable el marcado. Para que los tonos DTMF que generan el PIC sean validos al 100%. FISEI Octavo Electrónica 2009 – 2010 FISEI .0. con sus debidos capacitores.2. La resistencia de 560Ohm a 1 vatio paralela a la red telefónica. esto no es muy preciso. sirve para simular la carga de un teléfono normal.1] .UTA 56 .7. es necesario utilizar un cristal externo.LA DECLARACIÓN DTMFOUT Esta genera automáticamente los tonos duales correspondientes a cada tecla y los envía cada una con intervalos de 50 milisegundos. su manera de utilizar es la siguiente: DTMFOUT portb.9.6. equivale a presionar las teclas 098767251 En la figura siguiente se muestra el diagrama básico de conexión para poder hacer una llamada telefónica. y con esto podremos tener el tono de marcado necesario para hacer la llamada. debido a que el oscilador interno que posee el PIC es un RC. aunque estos los podemos cambiar si lo deseamos. esto debido a la cantidad de voltaje que circula (60 voltios). [0.7.

este es un diagrama más completo en el que la polaridad de la línea no es un problema. por lo que el capacitor debe pasar de 60 voltios y además el lado positivo de la red telefónica debe ir a tierra del PIC y el negativo hacía el pin del PIC. Es importante indicar que la red telefónica suministra alrededor de 60 voltios en DC.UTA 57 .El relé hace la conexión y desconexión de la red telefónica. El filtro de 1 uF a 100 voltios. Para solucionar este inconveniente se propone el diagrama de la figura. que en este caso sería como el auricular que cuelga y descuelga el teléfono. sirve para poder mejorar la onda que sale del PIC y además como protección para el PIC. por lo que necesitaremos la ayuda de un voltímetro para poder identificar la polaridad de la red. puesto que dispone un puente de diodos en donde el lado positivo ya está unido a tierra y el lado negativo va a través del filtro hacia el PIC FISEI Octavo Electrónica 2009 – 2010 FISEI .

se envía datos en forma serial como: Zona de apertura. este realice automáticamente una llamada al propietario.5.9.0. etc.1 x var byte iniciar: pause 2000 high rele pause 1000 dtmfout portb.UTA 58 .2.1] 'número al cual el PIC va a llamar pause 3000 for x = 1 to 25 sound portb. señal suficiente para saber que alguien ha activado la alarma.7. la cual en el momento de violar su seguridad. se puede hacer una alarma.10.[0.0. con la diferencia que en vez de generar un sonido de sirena.7.50.10] next low rele end Octavo Electrónica 2009 – 2010 FISEI .cambiar a oscilador de alta velocidad HS define OSC 20 .especifica que se va a utilizar un oscilador de 20MHz rele var portb.[100. hora.Este proyecto es muy utilizado en sistemas de seguridad. estado de batería. este mismo principio utilizan las centrales de monitoreo. FISEI @ device HS_OSC .8.6. el propietario en el momento de contestar escuchará una sirena.

el de una cerradura eléctrica.PROYECTOS CON TECLADOS LECTURA DE UN TECLADO DE 16 PULSADORES CON DISPLAY DE 7 SEGMENTOS Los teclados matriciales son muy útiles para ingresar datos. haremos un proyecto para aprender a identificar filas y columnas que lo componen un teclado hexadecimal de 16 pulsadores. FISEI Octavo Electrónica 2009 – 2010 FISEI . el teclado de una caja fuerte. luego se visualizará en un display de 7 segmentos el número de la tecla presionada. etc. Para introducirnos en el manejo de un teclado.UTA 59 . y su correspondiente barrido de teclas. un ejemplo del computador. el teclado de una alarma que nos permite armar y desarmar un sistema de seguridad.

por eso se propone otro modo de programar. deebemos cambiar (fila*3) tecla = (fila*4) + (NCD (colu^%1111)) porta = tecla goto prog1 end Debe considerarse que el lugar de las teclas no se pueden cambiar.UTA 60 .cambiar a oscilador interno cmcon = 7 fila var byte colu var byte tecla var byte trisa = 0 prog1: portb = 0 trisb = %11110000 ' si la tecla es presionada manténgalo en prog1 if ((portb >> 4)!=%1111) then prog1 prog2: for fila = 0 to 3 portb = 0 trisb = (dcd fila)^%11111111 ' setea una fila a una y los ' invierte a todos los demas colu = portb >> 4 'desplaza los 4 bits altos al inicio if colu !=%1111 then numtecla 'si una tecla es pulsada ir numtecla next fila goto prog2 numtecla: 'calcula el valor de la tecla multiplicando por 4 la fila 'a la que pertenece y sumando a la posición que se encuentra 'para un teclado de 12 pulsdores. FISEI Octavo Electrónica 2009 – 2010 FISEI .@ device INTRC_OSC . utiliza operaciones matemáticas para calcular la tecla pulsada. así como también se le puede poner letras. pero debemos reconocer lo que es el programa. en donde los valores se le puede asignar en cualquier lugar. puesto que este sistema de programación.

3 uno var portb.@ device INTRC_OSC cmcon = 7 TRISA = 0 A var portb.4 dos var portb.1 C var portb.UTA 61 .6 cuatro var portb.7 barrido: low a if uno = 0 then porta = 1 if dos = 0 then porta = 2 if tres = 0 then porta = 3 if cuatro = 0 then porta = 10 high a low B if uno = 0 then porta = 4 if dos = 0 then porta = 5 if tres = 0 then porta = 6 if cuatro = 0 then porta = 11 high B low c if uno = 0 then porta =7 if dos = 0 then porta = 8 if tres = 0 then porta = 9 if cuatro = 0 then porta = 12 high c low D if uno = 0 then porta = 14 if dos = 0 then porta = 0 if tres = 0 then porta = 15 if cuatro = 0 then porta = 13 high D pause 10 goto barrido end FISEI Octavo Electrónica 2009 – 2010 FISEI .0 B var portb.2 D var portb.5 tres var portb.

UTA 62 . así que este será la forma que utilizaremos en adelante. es decir eliminar las siguientes líneas de programa. FISEI Octavo Electrónica 2009 – 2010 FISEI . si una de las condiciones encuentra la igualdad. además tiene la ventaja de poder en cualquier lugar el valor de las teclas y es más fácil de entender. por lo que de seguro detectara inmediatamente la tecla pulsada. Su funcionamiento es sencillo solo debemos fijarnos cual fila es la que está en LOW y esta es la fila que se está barriendo. If Cuatro = 0 Then Portc = 10 If Cuatro = 0 Then Portc = 11 If Cuatro = 0 Then Portc = 12 If Cuatro = 0 Then Portc = 13 En este caso quedaría un teclado con pulsadores del 0 al 9 y dos teclas de propósito especial. pues esta es la tecla pulsada.Como se puede ver este programa es un poco más largo. Ejemplo: Si pulsamos la tecla 6. Para el caso de utilizar un teclado de 12 pulsadores. B. por lo que: LOW B If Tres = 0 Then Porta = 6 HIGH B Debemos considerar que una persona requiere como mínimo 100 milisegundos para presionar una tecla. las que corresponden a la tecla A. debemos eliminar una columna. C y D. pero ocupa menos espacio en la memoria del PIC que el ejercicio anterior. en este tiempo el PIC realiza 10 barridos. la tecla asterisco (*) y la tecla numeral (#). en algún momento se pondrá en bajo la fila B y detectara un cambio de estado de 1 a 0 en la columna 3.

mas adelante en los próximos proyectos la memoria podrá ser cambiada a gusto del usuario.UTA 63 .CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIA FLASH Este es un proyecto aplicable en seguridad. 3. esto sirve para que el usuario sepa que el PIC reconoció la pulsación. 4) se la grabó en el programa del PIC por lo que reside en la memoria FLASH. 2. ya que el número de la combinación (1. se trata de una cerradura electrónica en la cual al ingresar los 4 dígitos correctamente en su teclado. para hacerlo mas interesante se le agregado sonido a las teclas en el momento de ser pulsadas. en tal caso este proyecto sirve para poder identificar y diferenciar las 3 memorias que dispone el PIC. pero si la clave es incorrecta el PIC emite 3 pitos indicando que ingreso una clave errónea y por supuesto que el relé no se conectara. también tiene un programa antirrebote de tecla para asegurarse que ingrese una sola tecla a la vez. FISEI Octavo Electrónica 2009 – 2010 FISEI . El único inconveniente es que la clave no puede ser cambiada. el PIC energiza un relé.

6 Cuatro var Portb.4 Dos var Portb.2 D var Portb.3 Uno var Portb.1 C var Portb.5 Tres var Portb.0 B var Portb.@ device INTRC_OSC Número var Byte R var Byte BIP var porta.0 LED var porta.2 A var Portb.1 DOOR var porta.UTA 64 .7 Iniciando: high Led : high Bip pause 500 low Led : low Bip Goto Teclauno Barrido: low a If Uno = 0 Then Número = 1 : Return If Dos = 0 Then Número = 2 : Return If Tres = 0 Then Número = 3 : Return If Cuatro = 0 Then Número = 10 : Return high a low b If Uno = 0 Then Número = 4 : Return If Dos = 0 Then Número = 5 : Return If Tres = 0 Then Número = 6 : Return If Cuatro = 0 Then Número = 11 : Return high b low c If Uno = 0 Then Número = 7 : Return If Dos = 0 Then Número = 8 : Return If Tres = 0 Then Número = 9 : Return If Cuatro = 0 Then Número = 12 : Return high c low d If Uno = 0 Then Número = 14 : Return If Dos = 0 Then Número = 0 : Return If Tres = 0 Then Número = 15 : Return If Cuatro = 0 Then Número = 13 : Return high d pause 10 Goto Barrido Ptecla: high Led : high Bip pause 100 low Led : low Bip Espacio: If Uno = 0 Then Espacio If Dos = 0 Then Espacio If Tres = 0 Then Espacio If Cuatro = 0 Then Espacio pause 25 Return Teclauno: Gosub Barrido Gosub Ptecla If Número = 1 Then Teclados Goto Falso Teclados: Gosub Barrido : Gosub Ptecla If Número = 2 Then Teclatres Goto Falso1 Teclatres: Gosub Barrido : Gosub Ptecla If Número = 3 Then Teclacuatro Goto Falso2 Teclacuatro: Gosub Barrido : Gosub Ptecla If Número = 4 Then Openge Goto Falso3 Openge: For R = 1 To 2 pause 100 high Led : high Bip pause 100 low Led : low Bip Next FISEI Octavo Electrónica 2009 – 2010 FISEI .

UTA 65 .high Door pause 1000 low Door Goto Teclauno Falso: Gosub Barrido : Gosub Ptecla Falso1: Gosub Barrido : Gosub Ptecla Falso2: Gosub Barrido : Gosub Ptecla Falso3: For R = 1 To 3 pause 1000 high Led : high Bip pause 100 low Led : low Bip Next Goto Teclauno End FISEI Octavo Electrónica 2009 – 2010 FISEI .

esto debido a que esta clave se encuentra en la memoria FLASH y en el momento de correr el programa lo carga nuevamente en la memoria RAM para desde aquí poder ser modificada. si no presionamos la tecla D a tiempo. en el momento que ingresa al programa de cambio de clave se encenderá el led y permanecerá encendido esperando a que ingresemos los 4 nuevos dígitos.CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIA RAM Y CAMBIO DE CLAVE Este proyecto es muy similar al anterior con la diferencia que este se le puede cambiar la clave predefinida (1. la nueva clave se nos habrá perdido y en su lugar se encontrara la clave original (1. por consiguiente al momento de volver a prender el micro PIC. estas variables ocupan espacio de 224 BYTES. para ser más exactos en el momento que el relé se conecta después de 1 segundo hay una pregunta si la tecla D es presionada ir a grabar. 2. 3. perderemos la oportunidad de cambiar la clave y tendremos que volver a repetir el proceso. por lo tanto solo están activadas mientras el PIC se encuentra alimentado. son los mismos que se utilizaron en el ejercicio anterior. 4) por cualquier otra combinación de teclas. Es importante saber que la nueva clave se almacenara en las variables SETPRIME. 2. debemos mantener presionado la tecla D durante 2 segundos. SETERCER y SETCUART. En cuanto a los materiales y el diagrama de conexión. 4). FISEI Octavo Electrónica 2009 – 2010 FISEI . 3. la clave original será cargada en cuatro variables y existirá una manera de cambiar los valores de estas variables lo cual se lo hace de la siguiente manera: después de haber colocado la clave original. una vez que se corta la alimentación al PIC esta memoria de borra. SETSEGUN.UTA 66 .

0 B var Portb.1 C var Portb.7 setprime var byte setsegu var byte setercer var byte setcuart var byte setprime = 1 setsegu = 2 setercer = 3 setcuart = 4 Iniciando: high Led : high Bip pause 500 low Led : low Bip Goto Teclauno grabauno: gosub ptecla : high led gosub barrido : gosub ptecla high led setprime = número grabados: gosub barrido : gosub ptecla high led setsegu = número grabatres: gosub barrido : gosub ptecla high led setercer = número grabacuatro: gosub barrido : gosub ptecla high led setcuart = número goto iniciando Barrido: low a If Uno = 0 Then Número = 1 : Return If Dos = 0 Then Número = 2 : Return If Tres = 0 Then Número = 3 : Return If Cuatro = 0 Then Número = 10 : Return high a low b If Uno = 0 Then Número = 4 : Return If Dos = 0 Then Número = 5 : Return If Tres = 0 Then Número = 6 : Return If Cuatro = 0 Then Número = 11 : Return high b low c If Uno = 0 Then Número = 7 : Return If Dos = 0 Then Número = 8 : Return If Tres = 0 Then Número = 9 : Return If Cuatro = 0 Then Número = 12 : Return high c low d If Uno = 0 Then Número = 14 : Return If Dos = 0 Then Número = 0 : Return If Tres = 0 Then Número = 15 : Return If Cuatro = 0 Then Número = 13 : Return high d pause 10 Goto Barrido Ptecla: high Led : high Bip pause 100 low Led : low Bip Espacio: If Uno = 0 Then Espacio If Dos = 0 Then Espacio If Tres = 0 Then Espacio If Cuatro = 0 Then Espacio pause 25 Return FISEI Octavo Electrónica 2009 – 2010 FISEI .6 Cuatro var Portb.0 LED var porta.2 D var Portb.4 Dos var Portb.1 DOOR var porta.5 Tres var Portb.3 Uno var Portb.UTA 67 .2 A var Portb.@ device INTRC_OSC Número var Byte R var Byte BIP var porta.

Teclauno: Gosub Barrido Gosub Ptecla If Número = 1 Then Teclados Goto Falso Teclados: Gosub Barrido : Gosub Ptecla If Número = 2 Then Teclatres Goto Falso1 Teclatres: Gosub Barrido : Gosub Ptecla If Número = 3 Then Teclacuatro Goto Falso2 Teclacuatro: Gosub Barrido : Gosub Ptecla If Número = 4 Then Openge Goto Falso3 Openge: For R = 1 To 2 pause 100 high Led : high Bip pause 100 low Led : low Bip Next high Door pause 1000 low Door Goto Teclauno Falso: Gosub Barrido : Gosub Ptecla Falso1: Gosub Barrido : Gosub Ptecla Falso2: Gosub Barrido : Gosub Ptecla Falso3: For R = 1 To 3 pause 1000 high Led : high Bip pause 100 low Led : low Bip Next Goto Teclauno End

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

68

CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIA EEPROM Y CAMBIO DE CLAVE

Una vez aprendido acerca de las 2 memoria anteriores, es el momento de aprender a utilizar la memoria EEPROM (Electrical Erasable Programable Read Only Memory), o memoria de lectura de programación y borrado eléctrico, que a diferencia de la memoria RAM, esta no es volátil y tiene capacidad para 128 Bytes, lo que quiere decir que si al PIC se le corta la alimentación, los datos almacenados en la memoria EEPROM, permanecen según su fabricante por un periodo de 40 años a 100 años. Este proyecto cumple todas las expectativas de un estudiante de micros, tiene la posibilidad de cambiar la clave y no borrarse, si se digita una clave errónea el teclado se bloquea y únicamente lo desbloqueamos presionando al mismo tiempo las teclas 7 y C por 2 segundos, así mismo para cambiar la clave procedemos como en el proyecto anterior, presionando la tecla D. Algo importante es que si nos olvidamos la clave, la única manera de recuperarlo es leyendo el contenido del PIC a través de un programador. En cuanto a los materiales y el diagrama de conexión, son los mismos que se utilizaron en el proyecto anterior. LA DECLARACIÓN EEPROM, READ Y WRITE Estas declaraciones las explicaremos con un ejercicio. EEPROM 5,[3,”K”,9,12] ; quiere decir colocar en la memoria EEPROM, dirección 5 el número 3, en la dirección 6 el carácter ASCII de K, es decir el número 75, en la dirección 7 se guardara el número 9 y así sucesivamente, recuerde que el PIC16F628 tiene 128 espacios de memoria EEPROM de 1 BYTE cada una lo que quiere decir que el número más alto que podemos guardar es el 255. READ 5, pepa ; quiere decir leer la dirección 5 de la memoria EEPROM y guardar en la variable pepa, por consiguiente pepa se carga con el número 3. WRITE 8, 137 ; quiere decir guardar en la dirección 8 de la memoria EEPROM el número 137, el dato anterior en este caso el 12 automáticamente se borra y se escribe el número 137.
Nota: Estas declaraciones ya incluyen las pausas necesarias para realizar la grabación.

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

69

@ device INTRC_OSC Numero var Byte R var Byte BIP var porta.0 LED var porta.1 DOOR var porta.2 A var Portb.0 B var Portb.1 C var Portb.2 D var Portb.3 Uno var Portb.4 Dos var Portb.5 Tres var Portb.6 Cuatro var Portb.7 setprime var byte setsegu var byte setercer var byte setcuart var byte setprime = 1 setsegu = 2 setercer = 3 setcuart = 4 Iniciando: for r = 1 to 2 high Led : high Bip pause 1000 low Led : low Bip next ; cargar la memoria EEPROM desde la dirección 0 en adelante eeprom 0,[1,2,3,4] reset: for r = 1 to 3 high Led : high Bip pause 50 low Led : low Bip pause 50 if (cuatro = 0) and (uno = 0) then reset next read 0, setprime read 1, setsegu read 2, setercer read 3, setcuart goto teclauno

FISEI

grabauno: gosub ptecla : high led gosub barrido : gosub ptecla high led write 0, numero grabados: gosub barrido : gosub ptecla high led write 1, numero grabatres: gosub barrido : gosub ptecla high led write 2, numero grabacuatro: gosub barrido : gosub ptecla high led write 3, numero goto reset Barrido: low a If Uno = 0 Then Numero = 1 : Return If Dos = 0 Then Numero = 2 : Return If Tres = 0 Then Numero = 3 : Return If Cuatro = 0 Then Numero = 10 : Return high a low b If Uno = 0 Then Numero = 4 : Return If Dos = 0 Then Numero = 5 : Return If Tres = 0 Then Numero = 6 : Return If Cuatro = 0 Then Numero = 11 : Return high b low c If Uno = 0 Then Numero = 7 : Return If Dos = 0 Then Numero = 8 : Return If Tres = 0 Then Numero = 9 : Return If Cuatro = 0 Then Numero = 12 : Return high c low d If Uno = 0 Then Numero = 14 : Return If Dos = 0 Then Numero = 0 : Return If Tres = 0 Then Numero = 15 : Return If Cuatro = 0 Then Numero = 13 : Return high d pause 10 Goto Barrido

Octavo Electrónica 2009 – 2010

FISEI - UTA

70

UTA 71 .Ptecla: high Led : high Bip pause 100 low Led : low Bip Espacio: If Uno = 0 Then Espacio If Dos = 0 Then Espacio If Tres = 0 Then Espacio If Cuatro = 0 Then Espacio pause 25 Return Teclauno: Gosub Barrido Gosub Ptecla If Numero = 1 Then Teclados Goto Falso Teclados: Gosub Barrido : Gosub Ptecla If Numero = 2 Then Teclatres Goto Falso1 Teclatres: Gosub Barrido : Gosub Ptecla If Numero = 3 Then Teclacuatro Goto Falso2 Teclacuatro: Gosub Barrido : Gosub Ptecla If Numero = 4 Then Openge Goto Falso3 Openge: For R = 1 To 2 pause 100 high Led : high Bip pause 100 low Led : low Bip Next high Door pause 1000 low Door high a : high b : high c : high D if cuatro = 0 then grabauno Goto Teclauno Falso: Gosub Barrido : Gosub Ptecla Falso1: Gosub Barrido : Gosub Ptecla Falso2: Gosub Barrido : Gosub Ptecla Falso3: For R = 1 To 30 pause 150 high Led : high Bip pause 150 low Led : low Bip high a : high b : high c : high D if (cuatro = 0) and (uno = 0) then reset Next panico: high led pause 500 low led pause 500 if (cuatro = 0) and (uno = 0) then reset goto panico End FISEI Octavo Electrónica 2009 – 2010 FISEI .

El presente proyecto es un variador de velocidad de un motor DC que se alimenta a 5 voltios. quiere decir sacar 60 pulsos PWM por el puerto B. esto nos indica que ya llego al limite. al pulsar el botón (S) incrementa la variable en múltiplos de 25 y la velocidad del motor sube hasta legar a (FREC = 250). el motor trabaja a alta velocidad FISEI Octavo Electrónica 2009 – 2010 FISEI . entonces pulsamos el botón (B). que es lo que veremos en este caso. el cual hace que disminuya la velocidad del motor hasta legar a (FREC = 25).PROYECTOS CON MOTORES MANEJO DEL PWM COMO VARIADOR DE VELOCIDAD DE UN MOTOR DC El PWM (Pulse Width Modulation) o modulador en ancho de pulso. Si usted no dispone de un motor puede conectar a un LED directamente con una resistencia de 330 Ohm. el LED permanecerá encendido. la forma de utilizar el PWM es de la siguiente manera: PWM portb. si seguimos pulsando la mismo tecla.0. tiene muchas aplicaciones. es decir (FREC = 125). por ejemplo para atenuar la iluminación de un led. la iluminación BACKLIGHT de un LCD. de igual manera si seguimos pulsando el botón (B) el LED permanecerá encendido. en alto aproximadamente La forma de la señal que sale por el PIC es similar a los siguientes gráficos: Genera 3 ciclos al 90% alto y 10% bajo. su funcionamiento es de la siguiente manera: Al momento de alimentar el circuito. 60 .0 al 50% . 127. para variar la velocidad de un motor DC. el motor parte desde una velocidad media. igualmente podrá observar como baja o sube la intensidad del LED.UTA 72 .

FISEI Octavo Electrónica 2009 – 2010 FISEI . el largo de cada ciclo para un oscilador de 5 milisegundos y para un oscilador de 20MHz es de 1 milisegundos.Genera 3 ciclos al 50% alto y 50% bajo.UTA 73 . el motor trabaja a velocidad media Genera 3 ciclos al 10% alto y 90% bajo. el motor trabaja a baja velocidad Por consiguiente 0 representa 0% del ciclo útil y 255 el 100% de nivel alto.

0.25 goto prog Aviso: high led goto prog end FISEI Octavo Electrónica 2009 – 2010 FISEI . frec.3 Frec var byte Bandera var bit frec = 125 high led pause 500 low led Prog: pwm portb.UTA 74 .2 Led var portb.1 botbajar var portb. 30 ' sacar PWM 30 ciclos de 125 señal útil low led if botsubir = 0 then subir if botbajar = 0 then bajar bandera = 0 goto prog Subir: if frec > 249 then aviso if bandera = 1 then prog high led bandera = 1 frec = frec + 25 goto prog Bajar: if frec < 26 then Aviso if bandera = 1 then Prog high led bandera = 1 frec = frec .@ device INTRC_OSC botsubir var portb.

Conexión de un LM358 como conversor D/A para convertir el PWM en señal análoga de 0 a 5V. en el caso de un PWM de 255.5V. A la salida del LM358 podemos colocar un LED con su resistencia de 330 Ohm para poder observar su atenuación. también podemos colocar el circuito del motor DC. tendremos 2. en definitiva los pulsos que ingresan al LM358 se convierten en salida análoga. pero en nuestro caso por motivos experimentales solo lo conectamos a los 5 voltios de la misma fuente que está alimentado el PIC. si sacamos un PWM de 127. FISEI Octavo Electrónica 2009 – 2010 FISEI .UN CONVERSOR D/A CON EL CI LM358 Se puede hacer un pequeño convertidor de digital a analógico para el PWM con una resistencia y un capacitor. peo vamos a proponer realizarlo con el LM358 por sus mejores prestaciones. con su capacitor y diodo de protección.UTA 75 . Se necesita un voltímetro para medir los niveles de voltaje en la salida. ya que lograremos mayor rango de voltaje (hasta 32V). en cuanto al programa podemos utilizar el mismo del ejercicio anterior. el LM358 tendrá en su salida 5V. desde 0 hasta 5V.

el motor paso a paso está concebido de tal manera que gira un determinado ángulo proporcional a la "codificación" de tensiones aplicadas a sus entradas (4. De ello se deduce que el motor paso a paso presenta una precisión y repetitividad que lo habilita para trabajar en sistemas abiertos sin realimentación. dependiendo el ángulo de paso (o resolución angular) del tipo de motor (puede ser tan pequeño como 1. De la misma manera que se puede posicionar el eje del motor. La posibilidad de controlar en todo momento esta codificación permite realizar desplazamientos angulares lo suficientemente precisos. es posible controlar la velocidad del mismo. para completar una vuelta serán necesarios 200 pasos. De este modo. pero de un modo tan peculiar que constituye en la actualidad una categoría aparte.MOTORES PASO A PASO ¿QUÉ ES UN MOTOR PASO A PASO? Como todo motor. FISEI Octavo Electrónica 2009 – 2010 FISEI .). y de otro a sus propias limitaciones de potencia). es en esencia un conversor electromecánico. En efecto. si por ejemplo el número de grados por paso es de 1. que transforma la energía eléctrica en mecánica.UTA 76 . 6.80º hasta unos 15º). la cual será función directa de la frecuencia de variación de las codificaciones en las entradas. mientras que un motor convencional gira libremente al aplicar una tensión comprendida dentro de ciertos límites (que se corresponden de un lado al par mínimo capaz de vencer su propia inercia mecánica.80º. etc.

Esto se consigue de la siguiente manera: en principio. por los devanados T y U se hace circular una corriente. antes de conmutar el interruptor I. Como las bobinas se encuentran distribuidas simétricamente en torno al estator. como se verá más adelante. sobre cada uno de los cuales se ha devanado una bobina (1 y U). Ahora bien. se invierte el sentido de la corriente que circula por T y por tanto la polaridad magnética. pero la mitad de un paso (45º). el campo magnético creado dependerá en magnitud de la intensidad de corriente por cada fase.d).UTA 77 . al contrario que en el caso anterior.c.1 se conmuta a su segunda posición (fig. orientándose el rotor según ella (fig. 4a). 4b). si bien a costa de la regularidad del par. este tipo de motores también puede funcionar de un modo menos "ortodoxo". FISEI Octavo Electrónica 2009 – 2010 FISEI . y en polaridad magnética. Con esto se llega a la conclusión de que para dar una vuelta completa serían necesarios cuatro pasos de 90º cada uno (el ciclo completo se puede seguir en la figura 4a.1 a su segunda posición. del sentido de la corriente que circule por cada bobina. al igual que en el anterior fondo de funcionamiento.MOTORES PASO A PASO BIPOLARES En el esquema de la figura 4 aparece uno de estos motores con dos estatores. De este modo el estator adquiere la magnetización correspondiente. Si el interruptor 1. pero que nos va a permitir doblar el número de pasos. reorientándose por consiguiente el rotor. volviéndose a reorientar el rotor (el campo ha sufrido una rotación de 90º en sentido antihorario. se desconectará el devanado T. haciendo girar el rotor 90º en ese mismo sentido).b. las cuales se encuentran conectadas directamente a unos conmutadores de control que. de tal modo que el estator adquiere la magnetización correspondiente y por lo tanto el rotor se orienta según ella. podrán ser sustituidos por las líneas de entrada y salida de nuestro ordenador debidamente programadas.Ahora bien.

FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 78 .

a través de un dispositivo de conmutación.P.P. De este modo.MOTORES PASO A PASO UNIPOLARES Los motores paso a paso unipolares. cada bobina del estator se encuentra dividida en dos mediante una derivación central conectada a un terminal de alimentación. bipolares se conmuta la bobina por donde circula dicha co-rriente. el sentido de la corriente que circula a través de la bobina y por consiguiente la polaridad magnética del estator viene determinada por el terminal al que se conecta la otra línea de la alimentación. Por consiguiente las medias bobinas de conmutación hacen que se inviertan los polos magnéticos del estator. 5). FISEI Octavo Electrónica 2009 – 2010 FISEI . en cuanto a construcción son muy similares a los anteriormente descritos excepto en el devanado de su estator (fig. Nótese que en vez de invertir la polaridad de la corriente como se hacía en los M. en la forma apropiada.UTA 79 . En efecto.

Octavo Electrónica 2009 – 2010 FISEI . es posible tener resoluciones de giro correspondientes a un semipaso. dado que las características constructivas de estos motores unipolares son idénticas a las de los bipolares.UTA 80 . se puede deducir que los devanados tanto en uno como otro caso ocuparán el mismo espacio. Ahora bien. y por tanto es evidente que por cada fase tendremos menos vueltas o bien el hilo de cobre será de una sección menor.FISEI Al igual que los M.P. Por tanto. En cualquiera de los dos casos se deduce la disminución de la relación de amperios/vuelta. bipolares.P. a igualdad de tamaño los motores bipolares ofrecen un mayor par.

presentando como principal ventaja una mayor resolución de paso. ya que disminuye el avance angular (la mitad que en el modo de paso completo). las X indican los interruptores que deben estar cerrados (interruptores en ON). según se muestra en la Tabla siguiente para ambos sentidos de giro. Medio paso (Half step): Con este modo de funcionamiento el rotor avanza medio paso por cada pulso de excitación. y que se presentada de forma resumida en la Tabla 1 para ambos sentidos de giro.UTA 81 . Para conseguir tal cometido. el modo de excitación consiste en hacerlo alternativamente sobre dos bobinas y sobre una sola de ellas.SECUENCIA DEL CIRCUITO DE CONTROL Existen dos formas básicas de hacer funcional los motores paso a paso atendiendo al avance del rotor bajo cada impulso de excitación: Paso completo (full step): El rotor avanza un paso completo por cada pulso de excitación y para ello su secuencia ha de ser la correspondiente a la expuesta anteriormente. FISEI Octavo Electrónica 2009 – 2010 FISEI . mientras que la ausencia de X indica interruptor abierto (interruptores en OFF). para un motor como el de la Figura 2.

UTA 82 .MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA WAVE DRIVE FISEI @ device INTRC_OSC trisb = 0 X var byte antihorario: for x = 1 to 12 portb =%0001 gosub timer portb =%0010 gosub timer portb =%0100 gosub timer portb =%1000 gosub timer next pause 1000 for x = 1 to 12 portb =%1000 gosub timer portb =%0100 gosub timer portb =%0010 gosub timer portb =%0001 gosub timer next pause 1000 goto antihorario timer: pause 5 return end Octavo Electrónica 2009 – 2010 FISEI .

MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA FULL STEP @ device INTRC_OSC trisb = 0 antihorario: portb =%0011 gosub timer portb =%0110 gosub timer portb =%1100 gosub timer portb =%1001 gosub timer goto antihorario timer: pause 5 return end MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA HALF STEP @ device INTRC_OSC trisb = 0 Rept var byte for Rept = 1 to 12 portb =%0001 gosub timer portb =%0011 gosub timer portb =%0010 gosub timer portb =%0110 gosub timer portb =%0100 gosub timer portb =%1100 gosub timer portb =%1000 gosub timer portb =%1001 gosub timer next timer: pause 5 return end FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 83 .

en la norma RS232 a 15 mts. un ejemplo son los llamados radios WALKING TALKING. Los modos de transmisión de datos se dividen en cuatro tipos y estos son: Simplex: se dice a la transmisión que puede ocurrir en un solo sentido. tiene la ventaja de que la transferencia de datos es más rápida. en la norma RS422/485 a 1200 mts y utilizando un MODEM.COMUNICACIÓN QUE ES LA COMUNICACIÓN SERIAL? Existen dos formas de realizar una comunicación binaria. estos a su vez indican cuando un dato es válido. 7447 de los ejercicios anteriores. luego suelta el botón y el otro usuario presiona el botón para contestar. la paralela y la serial. La comunicación serial en cambio es mucho más lenta debido a que transmite bit por bit pero tiene la ventaja de necesitar menor cantidad de hilos. un ejemplo claro es la radiodifusión. en su lugar utiliza mecanismo como referencia tierra (RS232) o voltajes diferenciales (RS422/485). en donde la estación es el transmisor y los radios son los receptores. pues a cualquier parte del mundo. en donde una ubicación puede ser transmisor o un receptor. pero no los dos al mismo tiempo. sea sólo para recibir o sólo para transmitir. la diferencia entre estas dos formas de comunicación es que la comunicación sincrónica además de la línea para la transmisión de datos. Una ubicación pude ser un transmisor o un receptor. pero no al mismo tiempo. La comunicación paralela como por ejemplo la comunicación del PIC con el CI. Octavo Electrónica 2009 – 2010 FISEI . Por otra parte la comunicación serial asincrónica no necesita pulsos de reloj. en donde la duración de cada bit es determinada por la velocidad de transmisión de datos que se debe definir previamente entre ambos equipos.. y además se puede extender la comunicación a mayor distancia.UTA FISEI 84 . pero el inconveniente es que necesitamos un cable por cada bit de dato. pero no ambos a la vez. MODOS DE TRANSMISIÓN DE DATOS Se incluye este literal para poder entender mejor las practicas que más adelante realizaremos. otro inconveniente es la capacitancia que genera los conductores por lo que la transmisión se vuelve defectuosa a partir de unos pocos metros. necesita otra línea que contenga los pulsos de reloj. en donde un operador presiona el botón y habla. por ejemplo. pues mencionaremos algunas palabras que podría encontrar su significado en este literal. en donde los datos viajan simultáneamente a través de los 4 hilos. Existen dos formas de realizar la comunicación serial: la sincrónica y la asincrónica. Half-duplex: se refiere a la transmisión que puede ocurrir en ambos sentidos. lo que encarece y dificulta el diseño de las placas.

conocido como puerto serial y sirve para comunicarse con otras computadoras además del mouse.. a continuación empieza a transmitir con el mismo intervalo de tiempo los bits de datos. . correspondiente al número 68 carácter ASCII de "D" (%01000100). al tiempo de un bit es de 416 us. A continuación veremos un gráfico que muestra la forma de comunicación serial.8N1. comenzando por los bits menos significativos y terminando por los más significativos. por lo que el receptor revisa el bit de arranque después de 208 us. este se llama el bit de arranque. programadores. siempre y cuando la estación a la que está transmitiendo también sea la estación de la cual está recibiendo. y luego cada 416 us FISEI Como podemos ver la señal permanece en un nivel lógico alto mientras no realiza ninguna transferencia de datos.Full-duplex: se dice a la transmisión que puede ocurrir en ambos sentidos y al mismo tiempo. también se lo conoce con el nombre de líneas simultaneas de doble sentido. sin paridad. Octavo Electrónica 2009 – 2010 FISEI . COMUNICACIÓN SERIAL RS232 La norma RS232 se incluye actualmente en los computadores. es decir una estación puede transmitir a una segunda estación y recibir de una tercera estación al mismo tiempo. un ejemplo es la telefonía móvil. Al final de la transmisión de datos se envía el bit de paridad. una ubicación puede transmitir y recibir simultáneamente. si estuviera activa esta opción y por último los bits de parada. Para empezar a transmitir datos el transmisor coloca la línea en nivel bajo durante el tiempo de un bit (416 us para 2400bits/s).UTA 85 . Estructura de un dato que se envía serialmente a 2400. pero no necesariamente entre las dos ubicaciones. Esta transmisión se utiliza exclusivamente con circuitos de comunicación de datos. (2400bits/seg. impresoras. que pueden ser de 7 u 8 bits. Full/full-duplex: con este modo de transmisión es posible transmitir y recibir simultáneamente. stc. 8 bits de dato y 1 bit de parada).

que consiste en enviar datos. Para que la lectura de los datos sea correcta. a 2400 bits/seg.A PC. con la diferencia que la lógica es inversa. para señal O lógica (+5V a +15 V) en el transmisor y (+3V a +25V) en el receptor..UTA 86 . ambos equipos deben estar configurados a la misma velocidad y demás parámetros y no exceder más allá de los 2 metros. Comunicación serial con la norma RS232. ruido. etc. el dato enviado es el mismo que el de la figura anterior. Para distancias mayores existe el protocolo RS232. si no lo está no lo recibe ya que pudo ser ocasionado por un ruido en la línea. cuyos niveles de voltaje están establecidos de la siguiente manera: para señal 1 lógica (-5V a -15V) en el transmisor y (-3V a -25V) en el receptor. haremos un ejercicio de comunicación serial asincrónica modo simplex. y el transmisor está listo para enviar el siguiente dato. a 8 bits de datos. 1 equivale a -10 y 0 a +10. empieza a recibir la transmisión hasta el bit de parada. más específicamente los caracteres ASCII de la palabra "DOG". FISEI Una vez comprendido la teoría de la comunicación serial y su protocolo RS232. Octavo Electrónica 2009 – 2010 FISEI . pasado esta distancia los datos recibidos pueden no ser los correctos debido a la pérdida de voltaje en el cable. una vez que se da este bit. después de esto la linea vuelve a un estado lógico alto.que pueden ser 1 o 2. caso contrario si el estado sigue siendo bajo. COMUNICACIÓN SERIAL PÍC. y 1 bit de parada. Como el receptor no está sincronizado con el transmisor desconoce el momento en que empieza la transmisión. medio bit después vuelve a verificar si está en bajo. es decir una lógica inversa. sin paridad. por lo que siempre debe estar en espera del cambio de estado o sea el bit de arranque. a través de un cable y directamente desde el PIC al PC.

Debemos incluir al comienzo del programa la siguiente línea: INCLUDE “Modedefs. para esto existe la declaración SEROUT. aquí se encuentran algunos de los parámetros para las comunicaciones.enviar el carácter ASCII "D"por el puerto Bl a Esquema del dato enviado por el PIC simulando la norma RS232. por lo tanto debemos simular esos voltajes desde el PIC.UTA 87 . quiere decir que 1 lógico vale 0V. . en cambio para dato verdadero por ejemplo el T2400 el 1ógico vale 5V y el 0 lógico vale 0V y este es el que se utiliza para manejar con el CI.Como sabemos el computador tiene al menos un puerto serial. LA DECLARACIÓN SEROUT. el cual ya se vara mas adelante.["D"] 24008N1. N1200. en dato invertido. con la norma RS232. N2400. T2400. pero con diferentes niveles de voltaje.bas”. N9600 y para dato verdadero: T300. sin paridad y 1 stop bit. T1200. esto lo conseguimos enviando O para representar el 1 lógico y 5V. y para poder utilizarlo SEROUT puerto B. T9600. Octavo Electrónica 2009 – 2010 FISEI . Esta declaración sirve para enviar datos seriales en un formato standard asincrónico usando 8 bits de dato. MAX232. (8N1).l. Los datos invertidos por ejemplo el N2400. N2400.bas (modos de comunicación) Esto significa incluir el programa modedefs. incluir el programa modedefs. se incluirá el sonido para un parlante por el puerto B.bas en esta línea. y un 0 lógico vale 5V.0 que durara 2 segundos. para representar el 0 lógico. FISEI Este comando INCLUDE podemos utilizarlo para nuestros propios programas por ejemplo si ponemos INCLUDE “electronica. noten que es muy similar al esquema anterior.bas” . por ejemplo en nuestro caso la velocidad de transmisión que son: para dato invertido N300.

Diagrama de conexión del PIC para enviar datos al PC include "modedefs.bas" . para esto presionamos en la ventana de microcode F4 y configuramos los parámetros que necesitamos.envia serialmente a 2400N1 los caracteres "DOG" goto inicio end Una vez que tenemos listo el proyecto necesitamos una ventana de comunicación serial como el Hyper terminal o la misma ventana de comunicación serial que dispone microcode.UTA 88 .["DOG"] . FISEI Octavo Electrónica 2009 – 2010 FISEI .2 pause 1000 low portb.1.N2400.2 pause 500 serout portb. incluyo los modos de comunicación inicio: high portb.

luego paridad ninguna.Para este ejercicio debemos primero seleccionar el puerto con que vamos a utilizar. FISEI Octavo Electrónica 2009 – 2010 FISEI . 8 bits de datos y 1 stop bit. en este caso a 2400 baud. luego la velocidad que se transmite el dato.UTA 89 . notaran en la parte inferior izquierda que decía disconnected cambiará como lo demuestra la siguiente figura. una vez que estemos listos para iniciar la comunicación presionamos el botón connect.

el com que se esta utilizando y los parámetros de comunicación (2400N81).0. ya que si se la deja abierto este com no se puede utilizar para grabar micros o cualquier otra aplicación. letra .bas” al inicio del programa. DECLARACIÓN SERIN: esta declaración sirve para recibir datos seriales en un formato estándar asíncrono usando 8 bits de dato. sin paridad y 1 stop bit. En este caso el PIC es un receptor por lo que debemos permanecer en espera del bit de inicio. y poder utilizarlo. (8N1). variable previamente creada llamada letra. como el programa esta en un lazo sin fin el texto DOG seguirá saliendo continuamente. Es importante saber que esta declaración detiene el programa esperando a que ingrese un dato. por lo que es de suponerse los voltajes serán desde -10V hasta +10V y la distancia podemos extenderlo hasta 15 metros sin ningún problema.Cuando la ventana esta activa sale un mensaje en la parte inferior izquierda connected. encienda el micro PIC y después de apagarse el Led del puerto B. como la conexión es directamente al PIC debemos colocar una resistencia de 22K para no dañar el puerto del PIC. para hacer que solo espere un determinado tiempo y luego continúe con la siguiente línea debe utilizar TIMEOUT. y solamente cuando haya recibido un dato. se trata de enviar datos desde el PC al PIC. Octavo Electrónica 2009 – 2010 FISEI . obligadamente necesita oscilador externo de 4MHz a 16Mhz para poder comunicarse en forma serial.UTA 90 . Nota: Es importante dejar cerrado esta ventana presionando donde dice Disconnect. continua con la siguiente línea de programa. Esperar un dato serial y guardarlo en la . COMUNICACIÓN SERIAL PC A PIC Si usted tubo problemas con el envió de datos del PIC al PC.2 deberá salir el texto enviado en el cuadro que dice Receive. Nota: El PIC16F628A. este proyecto de seguro le funcionara. N2400. debemos incluirlo igualmente que para el SEROUT la línea INCLUDE “modedefs. para esto tenemos la declaración SERIN. si deseamos limpiar el texto presionamos la hoja en blanco que esta justo encima la palabra Receive. FISEI El presente proyecto consiste en enviar un texto desde la ventana de comunicación serial de microcode hacia el PIC y este a su vez mostrara el texto en un LCD 2x16. su forma de utilizar es la siguiente: SERIN port.

0. si el texto inicial no sale. inmediatamente dedbemos ver el mismo en el LCD.UTA 91 . "LCD listo" pause 1000 lcdout $FE. Octavo Electrónica 2009 – 2010 FISEI . N2400. revise las conexiones al LCD. incluir modos de comunicación dat var byte lcdout $FE. dat goto inicio end FISEI Una vez que arranca el PIC saldrá un texto que dice LCD listo. abrimos la ventana de comunicación serial de microcode de la forma que aprendimos anteriormente y escribimos en la ventana que dice Send: micro PIC.include "modedefs.bas" . esperar dato y guardarlo en dat lcdout. luego pulsamos la tecla Send Text. caso contrario si todo esta bien. dat . 1 inicio: serin portb. un segundo después se borrara y quedara en un lazo de espera del dato serial. 1.

[“Y”] . T2400.1 a . El MAX232 dispone de dos juegos de transmisores y receptores. quiere decir que si enviamos un estado lógico alto (5V). 2400 bits/s 8N1 en dato verdadero. y si enviamos un 0 lógico desde el PIC (0V).UTA 92 . gracias a un juego de capacitores que le ayuda a doblar os voltajes. de los cuales solo ocupamos un par de ellos. ya que incrementa los niveles de voltaje de 5V a un voltaje simétrico de 10V. Octavo Electrónica 2009 – 2010 FISEI . quiere decir enviar el dato serial D por el pin B. El MAX232 en este caso nos ayudara a convertir los voltajes TTL del PIC en voltajes de la norma RS232.1. el MAX232 enviara +10V.COMUNICACIÓN SERIAL CON EL MAX 232 El CI MAX 232 es la solución para transmitir a mayor distancia. a la salida del Tout del CI MAX232 tendremos -10V. por lo que para su alimentación solo requiere una fuente de 5V que puede ser la misma que utiliza el PIC. por lo tanto debemos invertir el dato de salida del PIC y esto lo conseguimos utilizando T2400 de la siguiente manera: FISEI SEROUT portb.

esto para asegurarnos que todo esta funcionando bien.0.El presente proyecto trabaja de la siguiente manera. [#num.bas" . T2400. como podemos observar esto es un ejemplo de la transmisión half-duplex. dat if dat = "C" then contar gosub ledr goto inicio contar: high led serout portb. include "modedefs. ahora si enviamos la C mayúscula el led se quedara encendido permanentemente e inmediatamente el PIC empezara a enviar un contador separado por el signo menos (-) empezando desde el 0 hasta el 255. ahora desde el computador enviaremos una letra cualquiera que no sea la C."-"] num = num + 1 pause 1000 goto contar ledr: high led pause 200 low led return end FISEI Octavo Electrónica 2009 – 2010 FISEI . incluir modos de comunicación led var portb.7 dat var byte num var byte gosub ledr inicio: serin portb. una vez listo y conectado todo. T2400.UTA 93 . observaran que el led parpadea cada que se le envié una letra.1. cuando el Pic arranca debe encender el led y luego apagarlo.

ya que necesitamos 2. FISEI Octavo Electrónica 2009 – 2010 FISEI . solo realizaremos a una distancia de 2 metros conectando directamente de PIC a PIC utilizando dato invertido. Por tratarse de un practica y no complicarnos con el MAX232. el receptor encenderá un led amarillo. igualmente después de 1 segundo lo apagara y por ultimo desde el transmisor presionamos la tecla C y el receptor encenderá un led verde.UTA 94 . el botón A envía la letra “A” el cual el PIC receptor lo detecta y enciende un LED rojo por un segundo.COMUNICACIÓN SERIAL PIC A PIC Este proyecto consiste en hacer una transmisión simplex entre un PIC transmisor y un PIC receptor. el primer dispone de tres botones. desde el transmisor presionamos el botón B y transmite la letra “B”.

3 transmitir: if botona = 0 then envio1 if botonb = 0 then envio2 if botonc = 0 then envio3 goto transmitir envio1: serout portb.bas" ledr var portb. FISEI Octavo Electrónica 2009 – 2010 FISEI . N2400. .0.RECEPTOR include "modedefs.0.Para este proyecto podemos utilizar una o dos fuentes de 5 voltios. N2400. pero seria recomendable utilizar dos fuentes para que la comunicación se vea mas real.0.bas botonA var portb.1 botonB var portb.["C"] pause 500 goto transmitir end .2 botonC var portb.2 ledv var portb. N2400.TRANSMISOR include "modedefs. por lo que empezaremos con el programa del transmisor.0. como es de suponerse se necesitará de 2 programas diferentes una para cada microcontrolador. datos if datos = "A" then high ledr : pause 1000 if datos = "B" then high leda : pause 1000 if datos = "C" then high ledv : pause 1000 low ledr : low leda : low ledv goto recibir end Una vez que concluya con esta practica pruebe con el MAX232 a mayor distancia o el receptor cambie los leds por un LCD y escriba desde el transmisor agregando un teclado de 16 pulsadores.["A"] pause 500 goto transmitir envio2: serout portb. N2400.3 datos var byte high ledr pause 500 low ledr recibir: serin portb.UTA 95 .["B"] pause 500 goto transmitir envio3: serout portb.1 leda var portb.

COMUNICACIÓN I²C CON UNA MEMORIA SERIAL 24L04B Esta es una practica muy básica para aprender sobre la interfaz I²C. puede operar como transmisor o receptor de datos.5V 2.4Mbps en alta velocidad.5V 2. estos son: para datos (SDA) y para la señal de reloj (SCL).5-5. consiste en guardar datos es las cuatro primeras direcciones de la memoria serial. y el Slave es el dispositivo direccionado. los procesadores de señal. El master es el dispositivo que inicia la transferencia en el bus y genera la señal de reloj (SCL). ya que la línea (SDA) es bidireccional.5V 2. Cada dispositivo conectado al bus tiene un código de dirección seleccionable mediante software.5-5. RTC (reloj en tiempo real). luego de almacenarlos los volveremos a leer y mostrar en la pantalla LCD. Referencia Capacida d Ciclos de E/W Bloques Internos Dirección A0 1-0 1-0 x x x A1 1-0 1-0 1-0 x x A2 1-0 1-0 1-0 1-0 x Cantidad de disposit. En el bus Voltaje de operación 24LC01B 24LC02B 24LC04B 1K bits 2 K bits 4 K bits 8 K bits 16 K bits 1000000 1000000 1000000 1000000 1000000 1 1 2 4 8 8 8 4 2 1 2. esta forma de comunicación utiliza una sincronía con un tren de pulsos que viaja en la línea SCL.5V FISEI 24LC08B 24LC016B Octavo Electrónica 2009 – 2010 FISEI .5-5. su velocidad de transmisión pueden ser de 100Kbps en el modo estándar. de tal manera que en los flancos negativos se revisan los datos RX o TX.5V 2.5-5. El bus I2C (Inter Integrated Circuit). etc. sin embargo cada dispositivo reconocido por su código (dirección). 400Kbps en el modo rápido y 3. por lo que existe un relación permanente Master/Slave.COMUNICACIÓN SERIAL SINCRÓNICA I2C Muchos de los dispositivos electrónicos que se encuentran comúnmente en una tarjeta electrónica. Para el caso de la memoria 24LC04B tiene un espacio de memoria de 4Kbytes.UTA 96 . codificadores de video. incluye circuitos integrados con el bus I2C.5-5. como por ejemplo las memorias 24CXX. estas son utilizadas para el almacenamiento de datos que pueden ser necesitados más adelante. sensores de temperatura. necesita solo 2 líneas para transmitir y recibir datos.

si vale 0 (enviado por el esclavo). este acuse de recibo se denomina ACK (acknowledge). sin embargo existe una línea de comando que hace que no se necesite la resistencia Pull-up del SCL. esto indica que el circuito direccionado no valida la comunicación.UTA 97 . A0). finalmente se envía el dato a ser almacenado y se espera la respuesta de la memoria indicando que el dato llegó correctamente. Los 7 hilos de control contienen el código de fabrica del chip y la selección del chip A2. en este caso se envía el código de la memoria 1010 (este dato lo suministra el fabricante). el ultimo bit es una bandera interna que indica que si es un comando de lectura o escritura y no se debe usar. luego de todo esto la memoria. Octavo Electrónica 2009 – 2010 FISEI . nuevamente la memoria envía un reconocimiento. Luego el master lee el ACK. conversores A/D. reloj calendarios. el proceso de transferencia continúa. funcionan en modo I2C Master y también puede ser utilizado para comunicarse con otros dispositivos de interfaz I2C como sensores de temperatura. No es necesario resistencia pull-up en SCL (RELOJ) FISEI También cabe indicar que existe algunas memorias que necesitan de un periodo de tiempo para poder ser grabadas. A1. y un bit 0 indicando que se debe escribir en la memoria (1 = lectura).El principio de funcionamiento es el siguiente: primero se envía el star (bit de arranque) cada palabra puesta en el bus SDA debe tener 8 bits. A0.7K Ohm pull-up. la primera palabra transferida debe contener la dirección del esclavo seleccionado. entonces el microcontrolador envía los 8 bits correspondientes a la posición de memoria que se desea escribir a leer. finalmente se debe enviar el bit de parada. estas deben ir conectadas con resistencias de 4. Si vale 1. etc. A1. por lo que se adiciona un PAUSE 10 después de cada grabación. debe enviar un reconocimiento para informar al microcontrolador que recibió la información. LA DECLARACIÓN I2CWRITE E I2CREAD Estas declaraciones sirven para escribir y leer datos en un chip EEPROM serial usando interfaz I2C de 2 hilos. esta se debe agregar al comienzo del programa: DEFINE I2C_SCLOUT 1 . luego la dirección del dispositivo (A2. en la cual las líneas SDA y SCL pasan a un estado alto. vamos a suponer que el ACK es 0. entonces es Master genera un bit de stop para liberar el bus I²C. Por lo tanto el control para nuestro caso en lectura o escritura es %10100000. Debido a que los pines SDA y SCL de la memoria 24LC04B son de colector abierto.

%10100000. una vez que se haya grabado se podrá colocar este pin en estado alta para proteger la memoria de futuras escrituras.Su escritura es de la siguiente manera I2CWRITE portb. por lo que el pin WP debe estar colocado en estado bajo. por lo tanto se debe tener cuidado de no ejecutar un programa que almacene una y otra vez el mismo dato. pausa necesaria para completar la grabación En nuestro caso vamos a escribir y leer en la memoria. 0. [65] .7. recuerde que la memoria serial soporta 1000000 de ciclos de borrado y escritura. portb. FISEI Octavo Electrónica 2009 – 2010 FISEI .6. los datos almacenados en esta memoria permanecen aún si se le corta la alimentación al CI.UTA 98 . almacenar en la dirección 0 el dato 65 PAUSE 10 . el acceso a estos datos se lo realiza las veces deseadas.

1. contro. [dato] lcdout dato pause 10 i2cread pinsda. ["A"] pause 10 lcdout $FE.1.. contro.6 dato var byte inicio: lcdout $FE. 3. pinscl.UTA 99 ." pause 1000 i2cwrite pinsda."Grabando. ["O"] pause 10 i2cwrite pinsda. 3. pinscl. pinscl. 2..1. "Leer memoria" pause 1000 lcdout $FE. 0. contro. [dato] lcdout dato pause 10 i2cread pinsda. [dato] lcdout dato pause 10 i2cread pinsda.1 leer: i2cread pinsda. pinscl.7 PinSDA var portb. contro. pinscl. contro. 1. ["H"] pause 10 i2cwrite pinsda. contro. contro. 2.define I2C_SCLOUT 1 contro con %10100000 . contro contiene valor constante PinSCL var portb. pinscl. pinscl. [dato] lcdout dato pause 10 end FISEI Octavo Electrónica 2009 – 2010 FISEI . contro. ["L"] pause 10 i2cwrite pinsda. pinscl. 0.

RTC. Haremos un proyecto ded lectura y escritura de un RTC (Real Time Clock). los procesadores de señal. FISEI Octavo Electrónica 2009 – 2010 FISEI . por consiguiente si se lo vuelve a prender el PIC. esto tienen la finalidad de que os datos fecha y hora sean una sola vez igualados. muestre la hora actual. pero con la diferencia que el byte de control es %11010000. etc. permite l comunicación con algunos dispositivos como las memorias 24CXX.COMUNICACIÓN I2C CON EL RELOJ CALENDARIO DS1307 Como habíamos dicho anteriormente el bus I2C. y su modo de grabación de datos es en sistema hexadecimal. Estos datos serán grabados una sola vez. pudiendo ser cambiado a gusto del lector. (propio de fabrica). ya que se utilizara una condición de bandera. significa que ya corrió una vez el programa. no guardara nuevamente los datos.UTA 100 . codificadores de video. sensores de temperatura. esta será almacenada en la memoria EEPROM del mismo PIC y se llamara (actualizado = 1). este proyecto es muy similar al anterior. para que cuando usted vuelva a encender el PIC. Una aclaración importante es por ser experimento los datos a ser almacenados serán: Miércoles 13 de enero del 2010 y la hora 09:01:00.

$c8 if mes=$1 then lcdout "Ene" if mes=$2 then lcdout "Feb" if mes=$3 then lcdout "Mar" if mes=$4 then lcdout "Abr" if mes=$5 then lcdout "May" if mes=$6 then lcdout "Jun" FISEI Octavo Electrónica 2009 – 2010 FISEI .cpin.%11010000.cpin.%11010000.hex2 diaf.cpin.cpin.cpin.%11010000.6 segu var byte minu var byte hora var byte diaS var byte diaF var byte mes var byte anio var byte dato var byte actualizado var bit eeprom 0.cpin. actualizado if actualizado = 0 then grabarRTC inicio: i2cread dpin.[minu] i2cread dpin.2.[mes] i2cread dpin. hex2 anio lcdout $fe.$c5.$C0 if dias =$1 then lcdout "Dom" if dias =$2 then lcdout "Lun" if dias =$3 then lcdout "Mar" if dias =$4 then lcdout "Mie" if dias =$5 then lcdout "Jue" if dias =$6 then lcdout "Vie" if dias =$7 then lcdout "Sab" lcdout $fe.$cb.%11010000.7 dpin var portb.define i2c_sclout 1 cpin var portb.[diaf] i2cread dpin.hex2 hora.UTA 101 .%11010000.cpin.0.1.hex2 minu.[hora] i2cread dpin.5.1.":".[dias] i2cread dpin."/" lcdout $fe.[0] read 0.3.hex2 segu lcdout $fe."/20".":".%11010000.4.6.[anio] lcdout $fe.%11010000.[segu] i2cread dpin.

%11010000.4. Para mejorar este programa podemos utilizar una interrupción por cambio de estado en el pin B. año .%11010000. sigue corriendo el tiempo pero continua en el segundo que se quedo en el instante que se le cortó la alimentación.if mes=$7 then lcdout "Jul" if mes=$8 then lcdout "Ago" if mes=$9 then lcdout "Sep" if mes=$10 then lcdout "Oct" if mes=$11 then lcdout "Nov" if mes=$12 then lcdout "Dic" pause 500 goto inicio grabarRTC: i2cwrite dpin.cpin.1 goto inicio end .[$01] pause 10 i2cwrite dpin.%11010000.[$4] pause 10 i2cwrite dpin.cpin. Dia del mes .0. pero si retiramos la batería.[$10] pause 10 i2cwrite dpin.[$13] pause 10 i2cwrite dpin.cpin. aquí conectamos la señal SQW del RTC Octavo Electrónica 2009 – 2010 FISEI .cpin.%11010000.cpin.[$09] pause 10 i2cwrite dpin. segundos . y luego lo volvemos a prender.2.cpin. minutos . Mes . cotrol para encender el led cada 1 segundo FISEI Como podrán observar la batería es la que mantiene en funcionamiento al RTC cuando no hay alimentación DC. El transistor sirve para encender el led con la fuente que alimenta el circuito y se apaga cuando deja de alimentarse el circuito.[$10] pause 10 write 0.3. por tal razón cuando apagamos todo el circuito.[$00] pause 10 i2cwrite dpin.%11010000. el reloj se detiene cuando lo cortamos la alimentación del circuito.7.%11010000.5 segundos. por lo que la batería solo alimenta al CI DS1307 mientras no hay alimentación en el pin VCC. dias Miercoles D=1.UTA 102 . notamos que el reloj no se ha desigualado.cpin. cuando en realidad debería leer cada segundo.1.%11010000. y cuando se lo vuelve a conectar.cpin.6. horas . Se debe entender que el PIC esta leyendo los datos del RTC cada 0.5.[$1] pause 10 i2cwrite dpin.%11010000.0. L=2 .

7. haremos un parpadeo de un led rojo cada 200mls. Como practica para poder entender la interrupción en el cambio de estado del Portb. UTILIZANDO LA INTERRUPCIÓN DEL PUERTO B.0 Existen aplicaciones en donde un evento es muy importante atenderlo. LAS DECLARACIONES ON INTERRUPT.UTA 103 . FISEI Octavo Electrónica 2009 – 2010 FISEI . los TIMER0. ON INTERRUPT GOTO prog2.0. ENABLE: quiere decir habilitar nuevemente la interrupción. con esto tenemos al PIC disponible para otras aplicaciones y no se quedaría esclavizado al RTC leyendo datos 2 veces por segundo. Nota: También existen otras fuentes de interrupción a mas del puerto B. por lo que recomienda leer las hojas de datos del PIC16F628A. deja de ejecutarse el programa y atiende un Handler (subrutina) el cual contiene un programa en donde se enciende un led verde por 1 segundo. RESUME: equivale al RETURN de un GOSUB. son atendidas. retorna al programa principal en el lugar mismo donde ocurrió la interrupción. en caso ded que no deseemos que atienda la interrupción. quiere decir en caso de darse una interrupción suspender el programa actual e ir a prog2.4 al B. en un sistema de seguridad en donde una zona es mas importante que las demás zonas. una vez terminado el programa de interrupción. como el cambio de estado del puerto B. en donde retorna a la línea del programa en donde ocurrió la interrupción. después de esto todas las interrupciones. DISABLE: sirve para deshabilitar la interrupción.para que el PIC ejecute una subrutina de interrupción y lea los datos del RTC exactamente cuando el RTC le diga que transcurrido un segundo. y cuando exista una interrupción externa (pulsador). RESUME Y ENABLE: todas estas declaraciones sirve para ejecutar un handler de interrupción. por ejemplo cuando algún dispositivo intenta comunicarse con el PIC. DISABLE.0. 1.

habilita la interrupcion B.2 . en caso de existir una interrupcion ai a verde on interrupt goto verde intcon = %10010000 prog: high led pause 200 low led pause 200 goto prog disable verde: high led2 pause 2000 low led2 . interrupcion por el puerto B.UTA 104 .FISEI . habilita las interrupciones enable end Octavo Electrónica 2009 – 2010 FISEI . programa para manejar una .0 led var portb.0 intcon =%10010000 .1 led2 var portb. retorna al programa principal resume .

no se debe dejar sueltos estos pines ya que produce errores y salta al handler de interrupción en cualquier momento.0. si se da la interrupción en la mitad del pause (5 segundos). para que la interrupción se genere en el flanco de bajada. no debemos poner PAUSES muy largos como por ejemplo PAUSE 10000.4 al B. automáticamente sale del programa y atiende el handler de interrupción llamado verde. equivalente a 10 segundos. es decir 5 segundos restantes.0. Modifica el bit 6 del registro OPTION. esta vez va a la subrutina prog3 e ignora el retorno al lugar de la interrupción. Cabe también indicar que en esta practica la interrupción se da solo cuando existe un cambio de estado de 0 a 1 en el puerto B.7 Para trabajar con la interrupción por cambio de estado del puerto B. otra recomendación importante es que si queremos atender rápidamente una interrupción.7. que quiere decir habilitar la interrupción de los puertos B. la siguiente línea para modificar el bit INTEDG del registro OPTION.6 = 0 bajada a B. para mayor información revise en los data sheets el registro INTCON.4 al B. OPTION_REG. FISEI Octavo Electrónica 2009 – 2010 FISEI .como pudieron observar. no se genera la interrupción.0 . sin embargo se puede poner RESUME prog3. por lo que se habrá dado cuenta que si se mantiene pulsado la tecla.UTA 105 . Se puede desconectar el pulsador del puerto B.7.7. finalizado esto el RESUME lo retorna al lugar en donde ocurrió la interrupción. debemos adicionar después de INTCON =%10010000. de la siguiente manera: FOR x=1 TO 100 PAUSE 100 NEXT Por lo que la atención al handler de interrupción será en 100mls después de la interrupción.4 AL B. deberá esperar a que termine el pause para ir al handler de interrupción. podemos utilizar el programa anterior. activa en flanco de UTILIZANDO LA INTERRUPCIÓN DEL PUERTO B. en el momento que se presiona el pulsador. sino cuando soltamos.4 al B. ya que no se está atendiendo esta interrupción. lo mejor para estos casos es encerrar el pause en lazos FOR…NEXT. solamente cambiando las 2 lineas que dicen INTCON =%10010000 por INTCON =%10001000. es decir cambio de estado de 1 a 0. Para el diagrama de conexión debemos colocar 4 pulsadores en los puertos B.

consiguiendo acercarnos mas al tiempo de 1 segundo (32256 Us x 31 = 999936 Us). Cuando el conteo del temporizador TMR0. asignando al TMR0 y ciclo de Para poder entender mejor estos registros y sus funciones tenga a la mano la hoja de datos. luego de esto se incrementa la variable según = según + 1 y se actualiza el LCD. aquí se puede seleccionar si el incremento es con flanco de subida o de bajada y si la fuente es externa (PIN A4/TOCK1) o interna (Oscilador). en nuestro caso será interna. los TMR0 y TMR2. llega a 256. 1 de 16 bits (TMR1) y 2 de 8 bits.UTA 106 . cada que el contador del TMR0. la gran desventaja de este proyecto es que si se corta la alimentación del circuito. se resetea la hora (12:00:00). se debe poner: OPTION_REG =%01010110 reloj interno. por lo que el tiempo seria 128 x 252 = 32256 Us y esto repito 31 veces. se dan en el registro OPTION. quedando así: INTCON =%10100000 En el registro OPTION se debe definir la rata del preescalador. La practica a realizarse consiste en ejecutar una interrupción. pero no empieza desde 0 ya que se le asigno un valor inicial de 4. lo que no sucede con un RTC. la calibración para estos contadores. se genera una interrupción. FISEI Octavo Electrónica 2009 – 2010 FISEI .RELOJ DIGITAL UTILIZANDO LA INTERRUPCIÓN DEL TMR0 El TMR0. es una valiosa herramienta que disponen los PIC. para el caso del PIC16F628A. El proyecto dispone de dos pulsadores para poder igualar la hora. dispone de 3 TIMERS. . preescalador 1:128. llega a 256 y pasa a 0. para que esto suceda se debe habilitar el registro INTCON bit 7 (GIE = 1). y también el bit 5 (TOIE = 1). uno aumenta los minutos y otro aumenta las horas.

6 = 0 then inchr actualiza : if actual = 1 then lcdout $FE. dec2 hora. ":" . ":". uso cristal externo @ device XT_OSC hora var byte minut var byte segun var byte cuenta var byte actual var byte x var byte hora = 12 minut = 0 segun = 0 cuenta = 0 actual = 1 option_reg =%1010110 intcon =%10100000 on interrupt goto interrup inicio: if portb.UTA 107 . dec2 minut.dec2 segun actual = 0 endif Octavo Electrónica 2009 – 2010 FISEI . " ".FISEI .7 = 0 then incmin if portb.1.

2 = 0 resume end FISEI Octavo Electrónica 2009 – 2010 FISEI .goto inicio .UTA 108 . resetea la bandera de interrupción del TMR0 intcon.**** Handler de interrupciones para incrementar contador **** disable interrup: cuenta = cuenta + 1 tmr0 = 4 if cuenta < 31 then reset cuenta = 0 segun = segun + 1 if segun >= 60 then segun = 0 minut = minut + 1 if minut >=60 then minut = 0 hora = hora + 1 if hora >=24 then hora = 0 endif endif endif actual = 1 reset: .**************** para igualar la hora ************* incmin : minut = minut + 1 if minut >=60 then minut = 0 goto pausa inchr : hora = hora + 1 if hora >=24 then hora = 0 goto pausa pausa: for x = 1 to 20 pause 10 next x actual = 1 goto actualiza .

cabe recalcar que este PIC necesita oscilador externo. por ejemplo: si utilizamos un conversor A/D de 8 bits. este PIC se caracteriza por tener 40 pines. Esta practica nos servirá para poder familiarizarnos con PIC´S de mayor capacidad.6mlV.CONVERSOR ANÁLOGO DIGITAL DEL PIC 16F87X Para poder empezar a practicar con este nuevo PIC. de los cuales 33 son puertos de entrada/salida. su funcionamiento es muy simple. En esta practica utilizaremos 3 conversores A/D de los 8 que dispone el PIC16F877A. y así tenemos: 0V ADCIN = 0 2. Octavo Electrónica 2009 – 2010 FISEI . por lo que este PIC está destinado para proyectos grandes. quiere decir que entre los volatjes de referencia. digamos Vref= 0V y Vref+= 5V. noten que ADCON1 = 7 convierte el pines digitales todos los pines del puerto A y puerto E.6 mlV). entonces si a la entrada del pin A/D ingresan 19.49V ADCIN =127 5V ADCIN =255 En definitiva nos dice que voltaje esta entrando por un pin pero en valores de una variable de 255.UTA 109 . también debemos utilizar en el MCLR una resistencia Pull-Up. una RAM de 368 bytes y una EEPROM de 256 bytes. los 5V los dividirá en 255 segmentos. ya que no hay forma de deshabilitar como sucede con el PIC16F62X. el registro ADCIN nos entregara un valor de 1. (19. PCFG3: PCFG0 0000 0001 0010 0011 0100 0101 011X 1000 1001 1010 1011 1100 1101 1110 1111 AN7 RE2 A A D D D D D A D D D D D D D AN6 RE1 A A D D D D D A D D D D D D D AN5 RE0 A A D D D D D A A A A D D D D AN4 RA5 A A A A D D D A A A A A D D D AN3 RA3 A VREF+ A VREF+ A VREF D VREF+ A VREF+ VREF+ VREF+ VREF+ D VREF+ AN2 RA2 A A A A D D D VREFA A VREFVREFVREFD VREFAN1 RA1 A A A A A A D A A A A A A D D AN0 RA0 A A A A A A D A A A A A A A A VREF+ VDD RA3 VDD RA3 VDD RA3 VDD RA3 VDD RA3 RA3 RA3 RA3 VDD RA3 VREFVSS VSS VSS VSS VSS VSS VSS RA2 VSS VSS RA2 RA2 RA2 VSS RA2 CHAN/ Refs 8/0 7/1 5/0 4/1 3/0 2/1 0/0 6/2 6/0 5/1 4/2 3/2 2/2 1/0 1/2 FISEI Tabla de configuración para el registro ADCON1 del PIC16F877A. ya que no posee oscilador interno. una memoria FLASH de 8192 palabras. haremos un ejercicio de lectura de tres conversores A/D del PIC16F877. algunos pines del PIC son capaces de detectar el nivel de voltaje que ingresa a un pin.

INICIAR CONVERSIÓN pauseus 50 RETURN END Octavo Electrónica 2009 – 2010 FISEI . activa canal 1 a Fosc/8 adcon0 =%1001001 gosub medir p2 = adresh poten3: .2 = 1 ."Pot1 Pot2 Pot3" lcdout $fe.$c6.Esquema de conexión de un PIC16F877A para medir los 3 voltajes que ingresan por el divisor de voltaje de cada potenciómetro.$cb. convierte porta. activa canal 3 a Fosc/8 adcon0 =%1011001 gosub medir p3 = adresh lcdout $fe. activa canal 0 a Fosc/8 adcon0 =%1000001 gosub medir p1 = adresh poten2: .3 en conversores A/D adcon1 =%100 inicio: pause 300 poten1: . activa canal 1 a Fosc/8 adcon0 =%1001001 gosub medir p1 = adresh poten2: .#p1 lcdout $fe.$c1.#p2 lcdout $fe.1. FISEI define lcd_dreg portb define lcd_dbit 0 define lcd_rsreg portb define lcd_rsbit 5 define lcd_ereg portb define lcd_ebit 4 p1 var byte p2 var byte p3 var byte .UTA 110 .0.1.#p3 goto inicio medir: pauseus 50 adcon0.

se activa el relé que le corresponde. Su funcionamiento es muy simple. primero el voltaje del pin OUT dedl LM35. el cual esta configurado como conversor A/D a 8 bits. y una vez que estemos de acuerdo presionamos la tecla E nuevemente. ningún de los relés se activan. procedemos igual que el caso anterior y cuando presionamos la tecla E. luego nos pide programar la temperatura máxima. si la temperatura no se encuentra entre estos 2 rangos. el cual lo dividimos para 2. el cual esta configurado como amplificador no inversor.0. y su rango de temperatura a censar entre -5 grados centígrados hasta 150 grados centígrados. con los otros 2 botones aumentamos o disminuimos la temperatura mínima a comparar. lo vamos a duplicar a través de un juego de amplificadores operacionales (LM358).UTA 111 . este dato se almacena en la variable dato.. si deseamos modificar los rangos de temperatura. FISEI Octavo Electrónica 2009 – 2010 FISEI . este dispositivo presenta en su pin OUT una variación de 10 mV por grado centígrado. presionamos el pulsador E. parpadeara tres veces el led. indicando que los nuevos valores ya fueron guardados en la memoria no volátil. sea para calentar o enfriar el ambiente. lo conectamos al puerto A.TERMÓMETRO DIGITAL CON EL PIC 16F877A Para esta practica necesitaremos el sensor de temperatura LM35. Si la temperatura permanece entre 22 y 26 grados centígrados. la salida del A. su alimentación puede ser de 4 a 30 voltios. con la finalidad de estabilizar la señal que ingresa del pin OUT del LM35.O LM358.

FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 112 .

fije numero de bits del resulta define ADC_BITS 8 .3 led var portd.$c6.7 eeprom 0.dec tempba pause 100 if bbajar = 0 then restar1 if bsubir = 0 then sumar1 if enter = 0 then grabarA goto grabar1 restar1: gosub soltar if tempbaj < 1 then grabar1 tempbaj = tempbaj . dato lcdout $fe.dec tempbaj. tempbaj grabar2: lcdout $fe.dec dato.actu T.$cc.6 bbajar var portd.1."Programar Temp" lcdout $fe.dec tempal pause 100 if bbajar = 0 then restar2 if bsubir = 0 then sumar2 if enter = 0 then grabarB goto grabar2 restar2: gosub soltar if tempbaj < 5 then grabar2 tempbaj = tempbaj + 1 Octavo Electrónica 2009 – 2010 FISEI .1 goto grabar1 sumar1: gosub soltar if tempbaj > 40 then grabar1 tempbaj = tempbaj + 1 goto grabar1 grabarA: gosub soltar write 0. "oC" lcdout $fe.$c0.FISEI define lcd_dreg portb define lcd_dbit 0 define lcd_rsreg portb define lcd_rsbit 5 define lcd_ereg portb define lcd_ebit 4 . "oC" for x = 1 to 50 if enter = 0 then grabar1a pause 10 next next if dato < tempbaj then calentar if dato > tempalt then enfriar low relec : low relef goto sensar calentar: high relec : low relef goto sensar enfriar: high relef : low relec goto sensar grabar1a: gosub soltar grabar1: lcdout $fe.1."alta=".1."baja=".$c0.dec tempalt. fije el tiempo de muestreo en U define ADC_SAMPLEUS 60 trisa = %1 adcon1 =%00001110 dato var byte tempbaj var byte tempalt var byte x var byte releF var portd. leer el canal 0 (A0) y guardar adcin 0.26] inicio: for x = 1 to 3 high led pause 200 low led pause 200 next read 0.mi T.UTA 113 . tempalt sensar: ."Programar Temp" lcdout $fe.ma" dato = dato/2 lcdout $fe. fije el CLOCK (rc = 3) define ADC_CLOCK 3 .4 enter var portd.[22.2 releC var portd."T. tempbaj read 1. "oC" lcdout $fe.5 bsubir var portd.$c0.

goto grabar2 q sumar2: gosub soltar if tempbaj > 50 then grabar2 tempalt = tempalt + 1 goto grabar2 grabarB: gosub soltar write 1, tempalt goto inicio soltar: high led pause 150 low led soltar2: if bbajar = 0 then soltar2 if bsubir = 0 then soltar2 if enter = 0 then soltar2 pause 100 return end

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

114

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

PROGRAMADOR DE PIC SERIAL
A continuación les proponemos un programador muy económico y eficaz para que puedan grabar sus archivos (*.Hex) compilados hacia el pic Lista de materiales ---------------------------------------------------------------------Microcontroladores PIC Programación en BASIC ---------------------------------------------------------------------Por Carlos A. Reyes telf. 2 611 447 09 6136564 Quito - Ecuador Programador puerto serial versión 7 -----NOTA: -----Este programador tiene implementado 2 diodos zener uno de 5,1V. y otro de 8,2 V. con esto logra regular a 13,3 V. para el VPP (Voltaje de programación) esto puede ser una solución para ciertos modelos de PIC´S que pudieran tener problemas con la programación con el grabador que se incluye en el libro, como la serie PIC16F87X, pero tiene problemas para programar el PIC16F628A que es el que se necesita para los proyectos de este libro, por tal razón no se le incluyó como programador principal. ------------------Lista de materiales. ------------------Nota: este programador no puede grabar el PIC16F628A (serie A) y no olvide la resistencia de 2,2K soldado en el conector db9 y no olvide soldar el jumper. 1 placa de baquelita o fibra de vidrio de 69 mm x 50 mm 1 zócalo 18 pines 1 zócalo de 8 pines 1 zócalo de 28 pines 1 zócalo de 40 pines cortado ver fotografía 2 leds de 5mm 1 rojo y 1 verde 4 diodos 1N4148

FISEI

Octavo Electrónica 2009 – 2010

FISEI - UTA

115

Impreso Pictórico FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 116 . 1 resistencia de 470 ohm a ¼ w 1 resistencia de 10K a ¼ w 1 resistencia de 1K a ¼ w 1 resistencia de 2.1 voltios 1 vatio 1 diodo zener de 8.2K a ¼ w para el conector db9 (ver diagrama db9 serial res) Opcional para el ICSP (programación serial en circuito) 5 pines de espadines para placa 8ver fotografía).1 diodo zener de 5.2 voltios 1 vatio 2 transistores 2N3904 1 metro cable de 4 hilos multifilar 1 conector db9 hembra con su respectivo cajetín 2 capacitores de 100 uF a 25 v.

UTA 117 .Diseño del cable Proyecto final ya armado FISEI Octavo Electrónica 2009 – 2010 FISEI .

puesto que trabaja con voltajes óptimos. Reyes telf.UTA 118 .PROGRAMADOR DE PIC PARALELO Lista de materiales ---------------------------------------------------------------------Microcontroladores PIC Programación en BASIC ---------------------------------------------------------------------Por Carlos A. 5 V.Ecuador Programador puerto paralelo -----NOTA: -----Este el mejor programador en comparación de todos los modelos que se incluyen en este CD. para la señal de reloj y datos. es decir 13 V. 2 611 447 09 6136564 Quito . 5 Voltios para la alimentación del PIC. ------------------Lista de materiales. ------------------1 placa de baquelita o fibra de vidrio de 71 mm x 66 mm 1 zócalo 14 pines 2 zócalos de 40 pines cortados ver fotografía ( programmer v6) 1 buffer 74LS07 1 conector para adaptador 12 v. 1 conector db9 macho para placa 3 leds 5mm 1 rojo y 2 verdes 2 pines extraídos de un zócalo maquinado ver figura (pin de un zócalo maquinado) 1 diodo 1N4007 1 diodo zener de 5.1 voltios 1 vatio 1 diodo zener de 13 voltios 1 vatio 3 transistores 2N3906 FISEI Octavo Electrónica 2009 – 2010 FISEI . para el VPP (Voltaje de programación).

Impreso El impreso no esta en tamaño real FISEI Octavo Electrónica 2009 – 2010 FISEI .7K a ¼ w 1 adaptador de 14 a 18 voltios (medir con voltímetro) y mínimo de 500 mA.1 metro cable de 7 hilos multifilar 1 conector db9 hembra con su respectivo cajetín 1 conector db25 macho con su respectivo cajetín 1 resistencia de 220 Ohm a ½ w 1 resistencia de 470 Ohm a ½ w 1 resistencia de 470 ohm a ¼ w 2 resistencias de 1K a ¼ w 9 resistencias de 4.UTA 119 .

Pictórico Diseño del cable FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 120 .

Zócalos Proyecto final FISEI Octavo Electrónica 2009 – 2010 FISEI .UTA 121 .

Luego abra sus archivos .05D. Seleccione el programador PROPIC 2 (Figura 2).exe. En la primera vez le pedirá que ajuste el grabador. Icprog 1. tendrá un archivo icprog. después de que los 2 LEDS indicadores se apaguen. este software funciona muy bien con este tipo de grabadores y dispone además de una gran variedad de microcontroladores. y marque MCLR y VCC invertidos. únicamente coloque el conector DB25 en un puerto paralelo disponible del computador. el cual se debe mover dentro de la carpeta Icprog105D. una vez descomprimido el archivo.driver. NOTA:Si usted es usuario de Windows XP. ahora que ya se tiene el driver se lo debe activar en Settings/Options. PARALELO Para instalar este grabador de PIC´S. es necesario habilitar un driver para su correcto funcionamiento.COM el archivo IC-prog NT/2000. para esto es necesario descargar de la página WWW.hex y programe sus PIC´S.sys. Una vez conseguido el programa descomprímalo y ejecute icprog. marque el puerto disponible LPT1 o LPT2. FISEI Figura 1 Figura 2 Octavo Electrónica 2009 – 2010 FISEI .exe.IC-PROG.ICPROG.COM (Figura 1) se puede descargar gratuitamente el software programador de PIC´S. (ver Figura 3 y 4). ya está grabado el microcontrolador.PROGRAMADOR DE PIC´S P.UTA 122 . junto al archivo ejecutable icprog. INSTALACIÓN DEL SOFTWARE: En la página de internet WWW. alimente el circuito con una fuente de 14 a 18 voltios DC.

bien ahora vuelvan a abrir Ajustes (antes llamado Settings) y luego den un clic en Opciones.es o llamar a los telfs. Figura 3 Figura 4 UBICACIONES: Más información escribir a: automasis@yahoo.Ecuador 09613 6564 FISEI Octavo Electrónica 2009 – 2010 FISEI . luego se presiona OK. lo cual es aconsejable realizarlo. esta vez de un clic en miscelánea para habilitar el driver de Windows NT/2000/XP. y en ese mismo instante observarán que todo cambia a español (Figura 3). se puede cambiar el lenguaje.UTA 123 . 2611 447 Quito . una vez que se marque el casillero se presiona OK y listo.En esta nueva pantalla.

UTA .FISEI Octavo Electrónica 2009 – 2010 FISEI .

ya planto un arbolito y colaboro con el conocimiento de aquellos que somos electrónicos o de muchos que por hobby realizan proyectos con microcontroladores PIC. Este pequeño manual al igual que el manual de AVR. por ende el material no es de nuestra tutoría. dos o tres veces estuve en contacto con usted cuando me iniciaba en el mundo de los PIC. que como dice en su libro. “Un ingeniero no es una copia. los puedo decir que funcionan súper bien. es original y se atreve a cambiar una realidad. todo el intelecto es del señor antes mencionado. Todos los proyectos fueron probados por el autor principal y también nosotros hemos armado y probado estos circuitos.AGRADECIMIENTOS Este manual.UTA . con mi curso vamos a formar el primer club de robótica de la Facultad de Ingeniería en Sistemas Electrónica e Industrial de la Universidad Técnica de Ambato. esta basado en el libro del SEÑOR CARLOS REYES. esto no seria posible sin la enseñanza de este gran MAESTRO. gracias al libro he aprendido mucho. Muchas gracias señor Carlos Reyes por dar a los estudiantes este gran libro. todo es posible mientras crea que es así… “ Anonimo FISEI Octavo Electrónica 2009 – 2010 FISEI . no importa el tiempo o el espacio. una gran persona. se realizo para cumplir un deber de una materia.

UTA .FISEI Octavo Electrónica 2009 – 2010 FISEI .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->