Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas...

136
 Octavo Electrónica 2009   2010 FISEI - UTA         F         I         S         E         I  Octavo Electrónica 2009    2010 Universidad Técnica de Ambato Facultad de Ingeniería en Sistemas Electrónica e Industrial

Transcript of Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas...

Page 1: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 1/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Octavo Electrónica 2009 –  2010

Universidad Técnica de Ambato

Facultad de Ingeniería en

Sistemas Electrónica e Industrial

Page 2: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 2/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

TABLA DE CONTENIDOS

INSTALACIÓN

Descarga de programa microcode studio ……………………………………... 1 

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

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 ………………………....…. 30Un contador decimal de un digito con el ci 7447 y un pulsador ………….…....... 31

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

Page 3: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 3/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

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

Un conversor d/a con el ci lm358 ……..…………………………………………. 75

¿Qué es un motor paso a paso? …………………………………………………. 76

Page 4: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 4/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Motores paso a paso bipolares ….…………………………………………….… 77

Motores paso a paso unipolares ………………………………………………… 79

Secuencia del circuito de control ………………………………………………... 81

Manejo de un motor paso a paso en secuencia wave drive ………..….………. 82

Manejo de un motor paso a paso en secuencia full step ……………...……….. 83

Manejo de un motor paso a paso en secuencia half step …….………………… 83

COMUNICACIÓN

Que es la comunicación serial? ………………………………………………..… 84

Modos de transmisión de datos ……………………………………................... 84

Comunicación serial rs232 ……………………………………………………… 85

Comunicación serial pi a pc ………………….…………………………..…...... 86

Comunicación serial pc a pic …………………….………………………… ..…. 90

Comunicación serial con el max 232 …………………………………………… 92

Comunicación serial pic a pic ………………………………………………….. 94

Comunicación i²c ……………..………………………………………..….……... 96Comunicación i²c con una memoria serial 24l04b …………………..….…….. 96

La declaración i2cwrite e i2cread …………………………………………… .… 97

Comunicación i2c con el reloj calendario ds1307 …………………………..…. 100

Utilizando la interrupción del puerto b.0 …………………………………….... 103

Utilizando la interrupción del puerto b.4 al b.7 ……………………............….  105

Reloj digital utilizando la interrupción del tmr0 .……………….……….….... 106

Conversor análogo digital del pic 16f87x …………………………………..….. 109

Termómetro digital con el pic 16f877a ……………………………………….... 111

Page 5: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 5/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Circuito programador Pic serial …………………………………….……..… 115

Circuito programador Pic paralelo……………………………………………….. 118

Page 6: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 6/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Page 7: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 7/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Page 8: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 8/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

En este manual se enseñara a descargar el software necesario para poder diseñar, editar ycompilar proyectos con micro controladores PIC.

Este es el primer software que vamos a descargar desde Internet, primero accedemos ala magina www.mecanique.co.uk  y realizamos los siguientes pasos:

a)  Ya abierta la pagina web, nos deslizamos a la pestaña “Microcode Studio”, y

acedemos dando un clic. Ver figura siguiente. b)  Se ejecutara una nueva pagina, deslizamos la barra de desplazamiento que se

encuentra a la derecha de la pantalla, hasta visualizar el siguiente grafico.c)  En esta pantalla damos un clip en “USA versión 2.1.0.6”, y esperamos un

instante hasta que se ejecute la descarga.d)  Se presentara una pantalla similar, en donde seleccionamos “Guardar este

programa en disco”, damos un clic en aceptar. El mensaje varia dependiendo del

explorador que usamos.

e)  En pequeños instantes, se presenta una pantalla similar al siguiente grafico,indicándonos la dirección en la que deseamos guardar el archivo descargado. 

f) 

En seguida veremos una pantalla de descarga, aquí podemos “Cancelar” la

descarga u otras opciones que depende del explorador de internet usado. 

Este es el compilador que nos facilitara la programación, ya que se dispone del editor detexto “MicroCode Studio”, solo nos falta un programa compilador que nos genere los

archivos (.Hex) necesarios para poder grabar en un micro controlador PIC. Para ello

necesitamos adquirir el programa mencionado.En internet se nos facilita la versión Demo de este software en la paginawww.mecanique.co.uk   haciendo un clic en “Compilers”, y luego en “PicBasic

Professional”, a continuación proceda a descargarlo como se aprendió en los casosanteriores.

DESCARGA E INSTALACION DE LOS SOFTWARE PARA PROGRAMARMICROCONTROLADORES PIC

DESCARGA DE PROGRAMA MICROCODE STUDIO

DESCARGA DE pbp2.44 (PicBasic Pro versión 2.44)

1

Page 9: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 9/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

El archivo a descargar se llama “PBP_demo_install.exe”, este archivo ejecutable contiene

en una carpeta “mcs” otro instalador de Microcode Studio versión 2.1.0.7, el cual ya nohace falta porque ya descargo anteriormente la ultima versión del mismo, esto se explicaramas adelante en la instalación.

Para instalar nuestro edito debemos buscar el archivo “mcstudio.exe” que terminamos de

descargar y lo ejecutamos, veremos una nueva pantalla en la que presionamos “next”,

luego “yes”. 

INSTALACION DEL SOFTWARE MicroCode Studio

2

Page 10: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 10/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

A continuación nos indicara la carpeta en donde se instalar “C:\Archivos dePrograma\Mecanique” si deseamos lo dejamos ahí o cambiamos la dirección,

 presionamos “Next” 

3

Page 11: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 11/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

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” 

4

Page 12: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 12/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Inmediatamente preguntara si quiere crear esta nueva ubicación, presionamos “Si”.

Luego tendremos la pantalla destino de la instalación y presionamos un clic en “Next”. 

5

Page 13: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 13/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Al cabo de unos segundos la instalación habrá terminado, entonces presionamos “Finish”

Page 14: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 14/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Para instalar nuestro compelador debemos buscar el archivo “pbp244” que ya lodescargamos y lo ejecutamos, veremos una nueva pantalla en la que presionamos “Next”.

Instantemente aparecerá una pantalla definiendo la ubicación donde se instalara elcompilador, para mayor comodidad, se recomienda instalar en la misma carpeta en la cualse instala el editor MicroCode estudió , y presionamos “Next”. La carpeta pbp se debe crear

manualmente.

La extracción del compilador se ejecutara en breves instantes y presionamos “Finish”.

INSTALACION DE pbp244 (PicBasic Pro)

Page 15: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 15/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Como se recomendó anteriormente, el compilador y el editor de texto deberían estar dentrode la misma carpeta.

Ejecute el programa MicroCode Studio, la primera vez el programa buscara el compiladordisponible, en este caso el Pbp, y aparecerá una pantalla similar al siguiente grafico:

En esta pantalla acceda a View  y haga clic en Editor Options…, luego Show linenumbers in left gutter, que sirve para que aparezca el número de línea que esta programando, esto es muy útil al momento de determinar errores de compilación.

CONFIGURACIÓN DE MicroCode Studio

7

Page 16: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 16/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Si desea también puede indicar la carpeta predefinida en los que desee guardar los archivos“.pbp”, luego de personalizar presione “Ok ”. 

Ahora aparecen números al lado izquierdo del editor de texto, esto será muy útil en lo posterior.

8

Page 17: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 17/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

En esta pantalla, nuevemente acceda a View y haga clic en Compile and Program Option.

Aparecerá una nueva pantalla mas pequeña, en donde se vera que ya esta predefinido laubicación del compilador en el disco duro.

En la pestaña “Programmer”, se puede añadir el software del programador de losmicrocontroladores Pic. Para añadir un programador damos un clic en “Add NewProgrammer…” 

9

Page 18: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 18/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Inmediatamente aparece otra pantalla, en donde debemos marcar “create a custonprogrammer entry”, luego presionamos “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”. 

En esta pantalla se pedirá que se ponga el nombre del archivo ejecutable, escriba el nombredel software programador “en mi caso usb110a1.exe” y luego presione “Next”. Se

mostrara otra pantalla con dos botones, el uno localiza automáticamente la carpeta quecontiene al ejecutable, y el otro es para localizar manualmente, si esta seguro que es elúnico archivo “usb110a1.exe” puede presionar la tecla “Find Automatically”.

10

Page 19: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 19/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

En esta pantalla le pedirá parámetros de programación, como para usb110a1 no hace falta,no escriba nada y solo presione la tecla “Finished”, luego desaparece esta pantalla y solo

queda la pantalla del “PICbasic Options”, en donde debe asegurarse de los cambios

 presionado “Ok ”. 

1

Page 20: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 20/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

MicroCode Studio es un programa editor de texto como Bloc de notas de Windows, perocon la diferencia de que este esta hecho exclusivamente para facilitar la programación delos microcontroladores PIC, los procedimientos para programar son muy sencillos, primeroseleccionamos el modelos del PIC 16F628A, PIC16F877 entre otros, escriba el programa yguárdelo bajo un nombre, de preferencia relacionado con la aplicación y presione el botón“Compile” que se encuentre dentro de la pestaña “Project”, la tecla “F9” realiza la misma

función. Si el programa esta bien hecho y sin fallas compilara y mostrara en la parteinferior izquierda el espacio requerido en el PIC, en seguida se creara automáticamente tresarchivos con el mismo nombre pero diferentes extensiones (*.mac, *.asm, *.hex), esteultimo es el mas importante para nosotros, por que es este el que se debe grabar en el PIC.

A continuación las partes mas importantes de la pantalla de MicroCode Studio.

MANEJO DE MicroCode Studio

12

Page 21: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 21/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Modelo de MicroPIC.-

Es lo primero que se debe seleccionar antes de empezar a programar, seleccionamos deacuerdo al modelo de Pic que vamos a programar.

Compilador.-

Estos dos botones sirven básicamente para compilar nuestros programas y crear losarchivos .ASM, .MAC, :HEX. El archivo .HEX sirve para grabar en el micro, el .MAC solosirve para el PicBasic y el .ASM para los interesados en ver como lo hizo el compilador enassembler ya que podemos abrirlo en MPLAB.

Compile Only  –   F9  Este primer botón sirve para compilar, es decir nuestro programa lo cambia a assembler y crea el .HEX.

Compile and Program –  F10  Este botón tiene doble función, a parte de hacer lomismo que el botón anterior, también puede llamar al programador, con la finalidad deahorrarnos tiempo y no tener que abrir por separado.

Buscador de Códigos.-

Aquí se van adicionando cada que se crea un variable, incluimos un define, o creamosalgunos nombres de línea, sirve para saber que componentes incluyen ene el programa y

también como buscador de líneas, para esto basta con dar un clic en el nombre de la líneaque deseamos encontrar, y automáticamente nos indicara donde esta dicha línea.

Número de línea del programa.- 

Esto por defecto se encuentra deshabilitado, debemos habilitarlo previamente, y es muy útila la hora de encontrar errores, porque nos dice el número de la línea en donde se halla unerror.

Espacio que ocupa el PIC.-

Este es el espacio de memoria que requiere el programa en el PIC y aparece una vez que secopila el programa, debemos fijarnos si alcanza en el PIC que disponemos o debemosremplazar por otro de mayor capacidad.

Nota: Para saber la capacidad de información que soporta los Pic, debemos verificar en lashojas de datos del dispositivo.

1

Page 22: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 22/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Programa del microcontrolador.-

En esta parte es donde empezamos a escribir nuestro programa, Microcode reconoce varias palabras claves como VAR, LOW, HIGH…, y los pinta con mayúsculas y negrillas, por loque no debemos utilizar estas palabras como nombre de subrutinas o variables.

Nota:

1.  Los variables, etiquetas de línea, constantes.., no deben empezar con números ytampoco debe contener espacios:

2.  Los PAUSE que podemos utilizar es de 1 a 65535, es decir que PAUSE 65535,equivale a mas de 1 minuto y 5.5 segundos, y PAUSE 1 equivale a 0.001 segundos.

Comentarios.-

Es recomendable usar comentarios todo el tiempo, aunque sea obvio para usted, alguien

 podría necesitarlo, y porque no para usted mismo, dentro de un tiempo no recordara nicomo lo hizo ni como funciona, ni para que serbia tal instrucción.

Nota:  Los comentarios se crean anteponiendo un punto y como (;), noten que el textocambia de color de negro a azul y de tipo cursiva.

Encabezado del programa:

 No son nada mas que comentarios en los que podemos incluir nombre, fecha, autor y una

explicación en breves palabras de cómo y para que sirve el programa. También podemoshacerlo modificando en View  –   Editor Option  –   Program header, aquí colocamos elautor y la empresa para que se coloque automáticamente cada que abrimos una paginanueva.

Barra de tareas.-

En este segmento del la pantalla principal de nuestro editor de texto paramicrocontroladores PIC, podemos acceder a varias funciones que nos permite el editor.

Varias funciones ya se detallaron anteriormente durante la configuración de nuestro editor,compilador y programador de PIC.

14

Page 23: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 23/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Page 24: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 24/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

PROYECTOS CON MICROCONTROLADORES PIC

PROYECTOS DE APLICACIÓN

Este capitulo es el más extenso y el mas importante de este libro, los microcontroladores seaprende desarrollando prácticas reales, no hay nada más emocionante y satisfactorio quever funcionando un proyecto realizado por uno mismo. Al igual que otras carreras la práctica es lo que nos hace mejores.

Es importante seguir en orden el avance de los proyectos ya que existen proyectos querequieren de una secuencia de aprendizaje.

Como materiales básicos necesitamos un PIC16F62X, un protoboard preferible de 4regletas, un regulador de voltaje 7805, una fuente de energía y por supuesto tener un

grabador de PIC‟S como el que se incluirá mas adelante, este es un grabador tipo JMD(Jens Dyekjaer Madesn), muy fácil de utilizar ya que solo requiere la energía del puertoCOM. Para construir este grabador será necesario que primero lea el capitulo dedicado aesto.

Si desea utilizar otro modelo de PIC que no sea el PIC16F62X, debe considerar loscambios necesarios para su correcto funcionamiento.

PROGRAMA BÁSICO PARA HACER PARPADEAR UN LEDCON INTERVALOS DE 1 SEGUNDO.

Este proyecto genera un tren de pulsos visible por medio de un LED con intervalos detiempo de 1 segundo.

led var portb.0 ' etiqueta para el puerto B.0octavio: ' nombre sub rutina

high led ' enciendo led pause 1000 ' espero 1 segundolow led ' apago led pause 1000

goto octavio ' ir a octavioend

15

Page 25: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 25/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Una vez escrito el programa compilamos y grabamos el PIC

Una vez realizado este proyecto siga intentando con diferentes tiempos de Pause, recuerdeque son en milisegundos y sus valores son desde 1 hasta 65535, pruebe Pause 3 verá queel parpadeo es mas lento, así mismo ponga diferentes valores entre los 2 Pause, veradiferentes efectos. Si desea tiempos mas pequeños debe usar Pauseus, este se mide enmicrosegundos.

UN SEMÁFORO DE DOS INTERSECCIONES.

Este es el ejemplo ideal para entender como asignar nombres a los diferentes bits de los puertos, para ello usaremos un grupo de leds y manejaremos todo el puerto, existe otraforma de realizar este proyecto, es controlando el puerto como un todo, para que entiendanlo que digo, voy a realizar de las dos formas el programa.

16

Page 26: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 26/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Bien es momento de escribir el programa, empecemos de la forma que se maneja el puertocompleto, para esto debemos entender como trabaja los semáforos. Primero nunca seencienden las luces del mismo color, es decir no puede estar en el un semáforo verde y enel otro verde también existe un cambio de verde a amarillo mientras en el otro semáforosigue en rojo, en el momento que se pone en rojo el primer semáforo el segundo salta derojo a verde.

Por considerar que esta es una practica, pondremos tiempos estimados de cambio de color,de verde a amarillo durante 9 segundos, de amarillo a rojo solo 3 segundos

Trisb = 0semaf:

 portb =%100001 'encender rojo del 1er semáforo y verde del 2do semáforo pause 9000 'esperar 9 segundos portb =%100010 'cambiar el 2do semáforo de verde a amarillo pause 3000 'esperar 3 segundos portb =%001100 'cambiar a verde el 1er semáforo y rojo el 2do semáforo pause 9000 'esperar 9 segundos

 portb =%010100 'cambiar el 1er semáforo de verdee a amarillo pause 3000 'esperar 3 segundosgoto semaf 'ir a semáforoend

17

Page 27: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 27/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

El siguiente es otra forma de escribir el programa, el semáforo funciona igual

En esta otra manera de escribir el programa, noten que es mas largo que el primer programa, y además no escribimos trisb = 0  al inicio, porque HIGH ya los convierte ensalida, también aquí se ve algo nuevo los 2 puntos (:), estos sirven para declaraciones

múltiples en una sola línea, para ambos casos el tamaño de código generado es el mismo.

Ejemplo, 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, debemos utilizar periféricos de salidacomo los relés, el siguiente es el diagrama de conexión de un relé.

Rojo1 var portb.5

Amarillo1 var portb.4Verde1 var portb.3Rojo2 var portb.2Amarillo2 var portb.1Verde2 var portb.0semaf:high rojo1 : high verde2

 pause 9000low verde2 : high amarillo2

 pause 3000low amarillo2 : low rojo1high verde1 : high rojo2

 pause 9000low verde1 : high amarillo1

 pause 3000goto semafend

18

Page 28: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 28/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

JUEGO DE LUCES PARA DISCOTECA

Este proyecto propone familiarizar aún más con el manejo de los puertos, esta vez vamos autilizar las 8 salidas del puerto B, se trata de una secuencia de luces que deben encender deizquierda a derecha una tras otra con un intervalo de 200 mili segundos. En la figurasiguiente se muestra como conectar cada uno de los leds.

19

Page 29: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 29/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

A continuación, en el siguiente programa veremos una declaración nueva el GOSUB y elRETURN, estos sirven para cuando tenemos muchas repeticiones de una línea o grupo delíneas de programa, en nuestro caso el PAUSE, en vez de poner en cada cambio de estadode las luces, lo agrupamos en una sola subrutina y lo llamaremos las veces que queramos, ladeclaración RETURN  lo envía de regreso a continuar después del GOSUB que lo envió.

Una de las ventajas mas importantes que tenemos es que ahorra espacio en el PIC, y otraque si queremos cambiar el PAUSE por el de otro valor, basta con cambiar una sola vez yel cambio se ejecuta para todos, lo que al contrario si no lo utilizaremos el GOSUB yescribiríamos 30 PAUSE, deberíamos cambiarlo a los 30 PAUSE por el de otro valor, unejemplo sería

trisb = 0 prueba1: portb =%00000001

 pause 1000 portb =%00000010 pause 1000 portb =%00000100 pause 1000goto prueba1end

trisb = 0 prueba2: portb =%00000001gosub esperar portb =%00000010gosub esperar portb =%00000100gosub esperargoto prueba2esperar:

 pause 1000returnend

2

Page 30: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 30/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Nota: La ubicación de la subrutina Pause, es importante, fíjense que se encuentra después y fuera

de las líneas principales de programación, 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.

EJERCICIO CON LA INSTRUCCIÓN FOR NEXT

Este proyecto es muy importante encenderlo, ya que el siguiente proyecto de luces de autofantástico utilizando la declaración FOR NEXT. 

Esa declaración sirve para ejecutar un número n de veces una línea de programa o grupo delíneas de programa, el siguiente proyecto pretende encender un led en el puerto B.0 5 vecescon intervalo de medio segundo segundo, después debe detenerse por 2 segundos y luego

 parpadear 3 veces mas, detenerse por 3 segundos y luego repetir nuevamente el proceso, 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, FOR NEXT se utilizade la siguiente manera:

trisb = %00000000 ' convioerte todos los pines del puerto B en salidadiscoteca:

 portb = %00000001 ' enciende el puerto B.0 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURN

 portb = %00000010 ' enciende el puerto B.1 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURN

 portb = %00000100 ' enciende el puerto B.2 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURN

 portb = %00001000 ' enciende el puerto B.3 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURN

 portb = %00010000 ' enciende el puerto B.4 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURN

 portb = %00100000 ' enciende el puerto B.5 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURN

 portb = %01000000 ' enciende el puerto B.6 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURN

 portb = %10000000 ' enciende el puerto B.7 y los demas los apagagosub tiempo ' ir a sub rutina tiempo y volver cuando diga RETURNgoto discotecatiempo:

 pause 200return

21

Page 31: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 31/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Peter Var Byte ; Primero se crea y asigna un tamaño para la variable peterFOR Peter = 1 to 5 ; Ejecuta las siguientes instrucciones 5 veces hasta donde dice NEXT……..  ; una vez concluido las repeticiones continúa con la declaración queestá……..  ; después del NEXT, peter debe ser creado como variable, es decir

 NEXT ; asignarle un espacio en la memoria en este caso para 5 

LAS VARIABLES BIT, BYTE Y WORD.

Estas son creadas para guardar datos en la memoria RAM (Random Access Memory) omemoria de acceso casual, esta memoria trabaja únicamente mientras esté alimentado elPIC, una vez que el AV R es desconectado, los datos de la memoria RAM se borran.Repe VAR Bit ; crea una variable y asigna un tamaño de un bit, es decir 0 o 1

Repe VAR Byte  ; crea una variable y asigna un tamaño de 8 bits, es decir 0 a 255

Repe VAR Word  ; crea una variable y asigna un tamaño de 2 bytes, es decir 0 a 65535

Para nuestro caso como queremos hacer 5 repeticiones, nos corresponde crear un BYTEque nos permite almacenar un número hasta 255.

repe var byteled var portb.0

 programa:for repe = 1 to 5 ' para repeticiones de 1 a 5

high led pause 500low led

 pause 500next

 pause 2000for repe = 1 to 3 ' para repeticiones de 1 a 3high led

 pause 500low led

 pause 500next

 pause 3000goto programaend

22

Page 32: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 32/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

LUCES DEL AUTO FANTÁSTICO (DESPLAZAMIENTOS)

Este proyecto es muy similar al de las luces para discoteca, con la diferencia de que este se

enciende de izquierda a derecha y luego de derecha a izquierda, pensaríamos que el programa será el doble del tamaño que el que hicimos paira las luces de discoteca, pero noes así, recuerde que existen varios caminos para llegar a un mismo objetivo, y este es unode ellos, esta vez utilizaremos los desplazamientos, que no son nada más que recorrer ununo lógico a la izquierda o - Derecha de la salida de los puertos.

Los desplazamientos utiliza la multiplicación y la división, como sabemos el PIC trabajacon el sistema binario, si tenemos una variable X con un valor inicial de 1 (%00000001) ylo Multiplicáramos por 2 . el resultado sería 2 (%00000010),y este a su vez lo volveríamosa multiplicar por 2 el resultado sería 4 (%00000100), y así sucesivamente hasta llegar a

128, en le en binario sería (% 10000000), veríamos que los leds se enciende de la mismaforma que las luces para discoteca, para hacer que las luces se regresen hasta el puerto B.0debemos dividir para 2, entonces 128 / 2 es igual a 64 (%01000000), como podemos verahora está regresando a su lugar de origen, los desplazamientos se escribe de la siguientemanera:

LEDS = LEDS << 1  Equivale a multiplicar por 2 y se desplaza uno a uno, 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 byteleds var portbtrisb = 0 'hacemos salida todo el puerto Bleds = 1 'cargamos la variable LEDS con 1 (%00000001)

 prog:for x = 1 to 7leds = leds << 1 'desplazamos uno a uno a la izquierda

 pause 200next

23

Page 33: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 33/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

 Nota: No olviden cargar a LEDS = 1, porque si no lo hace significa que vale cero (0) y estomultiplicado por 2 siempre dará cero, en consecuencia nunca veríamos el desplazamiento.

EJERCICIOS CON PULSADORES 

Para esta practica debemos entender como funciona los pulsadores con el PIC, existe básicamente 2 tipos de conexión para los pulsadores, el que siempre está en 1 lógico (5V) ycuando es pulsado cambia a cero lógico (0V), y el que está en cero lógico y cuando pulsamos para a uno lógico, los siguientes son los diagramas de conexión.

Diagrama de conexión de dos pulsadores, el primero es 1 Lógico, es decir siempre permiteel ingreso de 5V al PIC, cuando es presionado, el voltaje se desvía a tierra y en este caso elPIC detecta un cambio de estado de 1L a 0L, el funcionamiento del segundo pulsador estotalmente lo contrario.

for x = 1 to 7leds = leds >> 1 'desplazamos uno a uno a la derecha

 pause 200nextgoto progend

24

Page 34: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 34/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

El siguiente es el diagrama de conexión para esta práctica del pulsador

IF porb.0 = 0 THEN Michu ; ir a Michu si la entrada Portb.0 es cero lógico

IF porb.0 = 1 THEN Gato ; ir a Gato si la entrada Portb.0 es uno lógico

IF porb.0 = 0 THEN ; Si la comparación es verdadera ejecuta todo el

Porta.0 = 1 ; contenido que se encuentra entre el THEN y elWait 1 ; END IF

Porta.0 = 0

ENDIF

IF porb.0 = 0 THEN ; Si la comparación es verdadera ejecuta todo el……….  ; contenido que se encuentra entre el THEN y el

ELSE ; ELSE y si es falsa ejecuta el contenido entre……….  ; ELSE y END IF

ENDIF

IF pato > 10 THEN Majo ; si la variable pato es mayor que 35 ejecuta Majo

25

Page 35: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 35/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Diagrama de conexión de un pulsador conectado en el puerto B0, de estado 1 lógico, en elmomento que es presionado este desvía la tensión hacia tierra, por lo que el PIC detecta uncambio de estado a cero lógico, en ese instante se enciende el led.

A continuación el programa en Basic para leer el estado de un pulsador

CONTADOR BINARIO CON PULSADOR ANTIRREBOTE

En esta práctica haremos un contador binario, el resultado lo veremos en código binario através de 8 leds conectados al puerto B. Para esta practica necesita poner un antirrobote al pulsador, ya que si presiona por un instante, dada la velocidad que procesa el PIC el programa se ejecutara varias veces hasta que suelte el pulsador, para aprender de los errores

haga el programa sin antirrobote y luego con antirrobote

cmcon = 7 'convierte todo el puerto A en digital prog:if portb.3 = 0 then encen ' si portb.3 = 0 ir a encengoto progencen:high porta.1

 pause 1000low porta.1goto prog

end

26

Page 36: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 36/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Si tuvo la oportunidad de ver funcionando este proyecto, se dará cuenta que cada que se

 pulsa el botón el contador aumenta demasiado, esto es como se dijo antes por el PIC trabajaa gran velocidad cada instrucción y cuando una persona presione el botón, por lo menosnecesita de 100ms de tiempo para soltarlo, en este tiempo el PIC ya sumo alrededor de25000 veces. Para solucionar este problema proponemos hacer un programa de antirrobotede tecla, en el cual si presionamos el botón, este envía a un programa que lo mantieneencerrado, únicamente sale de esta subrutina en el momento que el pulsador deja de ser presionado, a continuación incluimos un PAUSE 200, que es necesario para que en elmomento de soltar la tecla se estabilice la señal

cmcon = 7 'convierte todo el puerto A en digitaltrisb = 0

 boton var porta.1num var bytenum = 0

 pulsar:

 portb = num 'indica sacar el valor de num a través del puerto Bif boton = 0 then contargoto pulsarcontar:num = num + 1 'suma 1 a la variable numgoto pulsarend

cmcon = 7 'convierte todo el puerto A en digitaltrisb = 0

 boton var porta.1num var bytenum = 0

 pulsar: portb = num 'indica sacar el valor de num a través del puerto Bif boton = 0 then contargoto pulsarcontar:IF boton = 0 then contarPause 200num = num + 1 'suma 1 a la variable numgoto pulsarend

2

Page 37: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 37/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Para conocer más sobre los operadores matemáticos disponibles como: resta,multiplicación, división, etc., existentes en el compilador PICBasic PRO, recomendamosver la ayuda de microcode en Help Topics/math operators/introducción o visite las webswww.frino.com.ar , www.todopic.com.ar  y descargue un manual de pbp en español.

LED INTERMITENTE DE VELOCIDAD VARIABLE 

Este proyecto se basa en dos pulsadores, el primero para aumentar la frecuencia del parpadeo del led, y el segundo para disminuir la frecuencia de parpadeo. Para estoutilizaremos dos operadores matemáticos, la suma y la resta, la suma incrementa lasrepeticiones de una instrucción FOR…NEXT, que contiene un PAUSE 5, mientras que laresta disminuirá las repeticiones del mismo PAUSE. Debemos tener en cuenta que una

variable BYTE no puede exceder su contenido a mas de 255. ni tampoco pasar a valoresnegativos al ser restado consecutivamente, si excediera el valor a mas de 255, el mismo secarga con valor de cero, y viceversa si el resultado de la resta pasara a negativo, la variablese carga con 255.

IF veces < 10 THEN RETURNIF veces > 150 THEN RETURN 

La primera se encarga de no permitir que siga restando, 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, este ejecuta enRETURN, con esto el tiempo máximo de pause sería de 750 milisegundos (150 x PAUSE5).

28

Page 38: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 38/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

UTILIZANDO EL MCLR (RESET EXTERNO) 

Este es un reset externo que le PIC posee, aparte del reset al encendido que dispone, lautilización del MCLR es muy sencillo, solo debemos instalar un pulsador 1 lógico(pull_up) en el puerto A.5, cuyo pin es especifico para el MCLR, el proyecto debefuncionar de la siguiente manera:Hacemos un programa para que parpadee un led cada 200 milisegundos (PAUSE 200), para

siempre, y al pulsar el botón de MCLR, este parpadeo debe detenerse y al soltarlo debecontinuar 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.

Pbaja var portb.5 ' el portb.5 se llama PbajaPsube var portb.4led var portb.3xy var byteveces var byteveces = 100

inicio:high ledgosub timerlow ledgosub timergoto iniciotimer:if psube = 0 then gosub restarif pbaja = 0 then gosub sumarfor xy = 1 to veces

 pause 5next

returnsumar:if veces > 150 then returnveces = veces + 5returnrestar:if veces < 10 then returnveces = veces - 5returnend

29

Page 39: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 39/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

PROYECTO CON DISPLAYS

MANEJO DE UN DISPLAY DE 7 SEGMENTOS CON ELCI.7447

Los display son muy utilizados para visualizar datos. Para esta práctica se utiliza como periférico de salida un display tipo ánodo común, para lo cual se facilita el diagrama en lafigura siguiente. El proyecto consiste en hacer un contador decimal (0,…,9), con intervalos

de 0.5 segundos.El programa es muy similar al contador binario, con la diferencia que solo se necesita 4 bitsdel puerto, el decodificador binario a 7 segmentos (7447), es encargado de transformar elnúmero binario que ingresa al número decimal.

@ device mclr_on 'activo MCLRiniciar:high portb.4

 pause 200low portb.4

 pause 200goto iniciar

30

Page 40: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 40/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Diagrama de conexión de un display ánodo común con el BCD 7447

UN CONTADOR DECIMAL DE UN DIGITO CON EL CI 7447Y 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, por el caso expuesto anteriormente.

El diagrama de este proyecto es el mismo de la figura anterior, pero adicionando un pulsador de estado uno lógico en el puerto B.0.

@ device mclr_off 'apago MCLRtrisb = %11110000 ' hace salidas solo los bits mas bajosnúmero var byteencerar:número = 0display:

 portb = número pause 500if número = 9 then encerarnúmero = número + 1

goto displayend

31

Page 41: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 41/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Ustedes se preguntaran como hacer para que el número se incremente apenas pulsamos latecla y no cuando soltamos como actualmente sucede, pues bien para esto utilizamos banderas que no son nada más que una variable de 1 bit, esta nos indica cuando ha sido pulsada. El siguiente es un ejercicio adicional aplicando la bandera.

@ device mclr_off 'apago MCLRtrisb = %11110000 ' hace salidas sololos bits mas bajosnúmero var byte

 bot var portb.4

encerar:número = 0display:

 portb = númeroif bot = 0 then aumentargoto displayaumentar:if bot = 0 then aumentar

 pause 200if número = 0 then encerarnúmero = número + 1goto display

end

@ device mclr_off 'apago MCLR

trisb = %11110000 ' hace salidas sololos bits mas bajosnúmero var byte

 bot var portb.4flag var bitencerar:número = 0display:

 portb = númeroif bot = 0 then aumentar

 pause 80flag = 0

goto displayaumentar:if flag = 1 then goto displayflag = 1if número = 0 then encerarnúmero = número + 1goto displayend

32

Page 42: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 42/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MANEJO DE UN DISPLAY DE 7 SEGMENTOS SIN EL

CI.7447

Como se sabemos, al PIC se le puede programar para reemplazar a casi cualquier circuitointegrado, en esta ocasión haremos que le propio PIC sea como el CI.7447, para estodebemos saber que para sacar el número 3 por ejemplo, debemos calcular el númerodecimal que hace que se enciendan los segmentos correctos del display, esto se hace de lasiguiente forma.

Como debemos encender los segmentos a, b, c, d y g. revisamos los pintes del PIC que lescorresponde y estos son: B0, B1, B2, B3 y B6, respectivamente, estos debemos ponerlos encero lógicos para que los segmentos se enciendan (recuerde que el display es ánodocomún), y los demás 1 lógico para que permanezcan apagados

DECLARACIÓN LOOKUP

Sirve para obtener un valor constante de una tabla, esto lo hace según el número de vecesque repita el FOR…NEXT, por ejemplo la primera vez toma el dato que se encuentra en ellugar 0, la segunda vez, toma el dato del lugar 1 y así sucesivamente

3

Page 43: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 43/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

MANEJO DE 4 DISPLAY DE 7 SEGMENTOS CON ELCI.7447

El siguiente proyecto debe encender 4 display para poder mostrar cualquier número de 0hasta el 9999, esto lo conseguimos gracias al transistor tipo PNP, que nos ayudara amultiplexar cada uno de los displays, el funcionamiento es bastante sencillo, debemosconectar los 4 bits mas altos a cada transistor y los cuatro bits mas bajos al CI 7447, si porejemplo queremos sacar el número 6874, primero habilitamos el cuarto transistor, el de laderecha y enviamos el número 4, el CI 7447 se encargara de formar el número 4 en el

display, luego pasamos a cero lógico el segundo transistor y los demás los mantenemos ennivel alto, al mismo tiempo sacamos el número 7 por los bits menos significativos del puerto B, y así consecutivamente, el tiempo que debemos mantener activado cada transistorno puede ser mayor que 5 mili segundos, es decir que los cambios son tan rápidos que elojo humano ve todos los display encendidos al mismo tiempo, cuando en realidad solo seencienden uno a la vez.

Ejemplo:  para sacar el número 8 en las centenas debemos sacar (176 + 8), es decir elnúmero 184 porque si analizamos en código binario, tenemos que los bits mas bajos entran

al CI 7447, y los bits mas altos, son los encargados de encender el display que lecorresponden a las centenas.

@ device mclr_off 'apago MCLRdi var bytedat var bytetrisb = 0

 prog:for di = 0 to 15

lookup di,[64,121,36,48,25,18,2,120,0,120,16,8,3,70,33,6,4],dat'toma uno por uno cada valor de la tabla contante y lo guarda en'la variable dat

 portb = dat pause 500next digoto progend

3

Page 44: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 44/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

@ device mclr_off 'apago MCLRtrisb = 0display:

 portb = 224 + 8 '%11100000, activa eltransistor de las unidades y presenta el8

 pause 5 portb = 208 + 7 '%11100000, activa eltransistor de las decenas y presenta el 7

 pause 5 portb = 176 + 6 '%11100000, activa el

transistor de las centenas y presenta el 6 pause 5 portb = 112 + 5 '%11100000, activa eltransistor de los miles y presenta el 5

 pause 5goto displayend

35

Page 45: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 45/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

CONTADOR DECIMAL DE 4 DÍGITOS CON EL CI.7447

Es hora de hacer un proyecto de considerable tamaño, una vez entendido como multiplexar4 displays, y entendido el ejercicio del contador, pues el siguiente proyecto consta en hacerun contador decimal que incremente su valor cada vez que se pulsa el botón A, si pulsamosel botón B se encera y se apaga la chicharra, y si pulsamos la tecla C, presenta el número alcual va a comparar, si el número a contar es igual a 24, activa un aviso auditivo, este buzzertrabaja a 12 Voltios, lo que diferencia de los parlantes comunes es que no necesita seractivado con una frecuencia, sino basta con alimentarle con 12 voltios para que suene

El siguiente es el programa para controlar los 4 displays, contar, encerar, comparar yvisualizar el número almacenado en la memoria.

3

Page 46: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 46/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

  @ device mclr_off 'apago MCLRUnid vAr ByteDece vAr ByteCent vAr ByteMile vAr Byte

Setunid vAr ByteSetdece vAr ByteSetcent vAr ByteSetmile vAr Byte

Setunid = 4Setdece = 2Setcent = 0Setmile = 0chicha vAr Porta.0Contar vAr Porta.1

Encera vAr Porta.2visual vAr Porta.3activar var bittrisb = 0cmcon = 7

high chicha pause 200Encerar:Unid = 0Dece = 0Cent = 0

Mile = 0low chicha

display:Portb = 224 + Unid

 pause 5Portb = 208 + Dece

 pause 5Portb = 176 + Cent

 pause 5Portb = 112 + Mile

 pause 5'Gosub TeclasGoto display

Teclas:If contar = 0 Then Gosub SumarIf encera = 0 Then Gosub EncerarIf visual = 0 Then Gosub VisualizarActivar = 1Return

Sumar:If Activar = 0 Then ReturnActivar = 0Unid = Unid + 1If Unid < 10 Then CompararUnid = 0Dece = Dece + 1If Dece < 10 Then CompararDece = 0Cent = Cent + 1If Cent < 10 Then Comparar

Cent = 0Mile = Mile + 1If Mile < 10 Then CompararMile = 0Return

Visualizar:Portb = 224 + Setunid

 pause 5Portb = 208 + Setdece

 pause 5Portb = 176 + Setcent

 pause 5Portb = 112 + Setmile

 pause 5ReturnComparar:If unid != setunid then returnIf dece != setdece then returnIf cent != setcent then returnIf mile != setmile then returnhigh chichareturnend

3

Page 47: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 47/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MANEJO DE 4 DISPLAYS DE 7 SEGMENTOS SIN ELCI.7447 (ROTULACIÓN)

Es posible hacer un contador decimal igual que el del proyecto anterior y sin ayuda del CI,

7447, pero en esta ocasión haremos mas que eso, como vieron la ventaja de conectar eldisplay directamente al PIC es la de poder sacar casi la mayoría de las letras del alfabeto, pues bien este proyecto consiste en sacar la palabra HOLA a través de los 4 displays.

Esquema de conexión para manejar 4 displays directamente desde el PIC y multiplexado por el puerto A.

3

Page 48: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 48/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

MANEJO DE 4 DISPLAYS CON ROTULO ENMOVIMIENTO 

Para hacerlo mas interesante el proyecto anterior, le añadiremos movimiento, con esto

 podemos ingresar frases completas como “HOLA LUIS”, pero para no alargar mucho el programa solo utilizaremos la palabra HOLA, moviéndose continuamente de derecha aizquierda y con un espacio por palabra.La variable x es la que regula la velocidad con que se desplazan las letras, paracomprobarlo modifique el valor de todas las repeticiones de 1 TO 20 al doble 1 TO 40, yvera como se desplaza las letras mas lentamente

@ device mclr_off 'apago MCLRcmcon = 7 'convierte todo el puerto A en digitaltrisb = 0 'convierte todos los pines del puerto B en salidastrisa = 0 'convierte todos los pines del puerto A en salidastexto:

 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 5goto textoend

3

Page 49: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 49/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 @ device mclr_off 'apago MCLRcmcon = 7 'convierte todo el puerto Aen digitaltrisb = 0 'convierte todos los pines del

 puerto B en salidastrisa = 0 'convierte todos los pines del

 puerto A en salidasx 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 5next

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 5next

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 5next

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 5next

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 5nextgoto textoend

4

Page 50: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 50/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MANEJO DE UN MODULO LCD 

Los módulos LCD (Display de Cristal Líquidos), son utilizados para mostrar mensajes queindican al operario es estado de la maquina, o para dar instrucciones de manejo, Mostarvalores, etc. El LCD permite la comunicación entre las maquinas y los humanos, este puedemostrar cualquier carácter ASCII, y consume mucho menos que los display de 7segmentos, existe de varias presentaciones por ejemplo de 2 líneas por 8 caracteres, 2x16,2x20, 4x20, 4x40, etc. Sin backlight (14 pines) o con backlight (16 pines, iluminado de pantalla), el LCD más popular es el 2x16, 2 líneas de 16 caracteres cada una.Fotografía de un LCD 2x16

Pin Simb Descripción

1 Vss Tierra de alimentación GND

2 Vdd Alimentación de +5V CC3 Vo Ajuste de contraste del cristal liquido (0 a +5V)4 RS Selección del registro control/datos RS=0 reg. Control RS=1 reg. Datos5 R/W Lectura/Escritura en LCD R/W = 0 escritura (write) R/W = 1 lectura (read)

6 E Habilitación E = 0 módulo desconectado E = 1 módulo conectado7 D0 Bit menos significativo (bus de datos bidireccional)8 D19 D2

10 D3

11 D412 D513 D614 D7 Bit menos significativo (bus de datos bidireccional)

15 A Alimentación del backlight +3.5V o +5 Vcc (según especificaciones técnicas)16 K Tierra GND del backlight

4

Page 51: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 51/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

LA DECLARACIÓN LCDOUT: sirve para mostrar ítems en una pantalla de

cristal líquido, se utiliza escribiendo: LCDOUT, luego escribiendo $FE, y seguido por elcomando a utilizar, el siguiente cuadro muestra los comandos mas utilizados:

Comando Operación$FE, 1 Limpia el visor LCD$FE, 2 Vuelve al inicio (comienzo de la primera línea)

$FE, $0C Apagar el cursor$FE, $0E Subrayado el cursor activo (-)$FE, $0F Parpadeo del cursor activo$FE, $10 Mover el cursor una posición a la izquierda$FE, $14 Mover el cursor una posición a la derecha$FE, $80 Mueve el cursor al comienzo de la primera línea$FE, $C0 Mueve el cursor al comienzo de la segunda línea$FE, $94 Mueve el cursor al comienzo de la tercera línea

$FE, $D4 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, la diferencia está en eltiempo que se demora, pues la comunicación a 4 bits, primero envía los 4 bits más altos yluego los 4 bits mas bajos, mientras que la de 8 bits envía todo al mismo tiempo, esto no esun inconveniente si consideramos que el LCD trabaja en microsegundos. Pero la granventaja de hacer conexión a 4 bits, son los pocos cables que se deben conectar, como podemos ver en la figura siguiente solo debemos conectar el bit de Registro, el Enable y los4 bits más altos del LCD, con esto es suficiente para enviar mensajes.El compilador PBP soporta módulos LCD‟S con controlador Hitachi 44780 o equivalentes

y por defecto, asume que se conecto en el pin A4 el bit de registro, en el pin B3 el bitEnable y en el puerto A empezando desde A0 hasta A3, los bits más altos del LCD. Estaconfiguración predefinida, se lo puede cambiar de acuerdo a la necesidad, como lo veremosmas adelante.

4

Page 52: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 52/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Nota: algunos LCD no requieren de ninguna PAUSE al inicio, pero existen otros modelosque necesita unos pocos milisegundos para estar listos, por eso colocamos un PAUSE 200al comienzo del programa.

Bien una vez listo el texto notaremos que las dos palabras están al lado izquierdo, siqueremos que salgan centrados en nuestro LCD, tenemos 2 maneras de hacerlo, la primera

es dando espacio antes de cada palabra, ejemplo:

LCDOUT $FE,1,” Hola” y LCDOUT $FE, $C0, “ Micro PIC” 

@ device mclr_off 'apago MCLR pause 200lcdout $FE, 1, "Hola" 'limpiar pantalla y sacar el tecto holalcdout $FE, $C0, "micro PIC" 'pasar al comienzo ded la segunda linea

'y escribir micro PICend

43

Page 53: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 53/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Lo cual es sencillo pero no es muy recomendable porque ocupa mas espacio en el PIC, lasegunda manera es asignando el lugar donde se requiere que aparezca cada palabra.

Se debe entender que existe un cursor que aunque no lo vemos, pues este es el que indicadonde aparecerá la siguiente letra, para poder entender haremos un ejercicio completo, así podrán aprender más de LCD y las funciones de cada uno de los comandos. Primero quenada haremos visible el cursor y luego pondremos PAUSE para poder ver elfuncionamiento.

LCDOUT $FE, 1

LCDOUT $FE, $86, "Hola" 'pasar el cursor a la 7ma casilla de 1ra línea y escribeLCDOUT $FE, $C4, "micro PIC" 'pasar a la casilla 5ta de la 2da línea y escribe micro PIC

@ device mclr_off 'apago MCLRx var byte pepa con $FE pause 2000lcdout pepa, 1 pause 2000lcdout pepa, $0F 'muestra el cursor en casilla negra pause 2000lcdout pepa, $0E 'subraya el cursor pause 2000lcdout pepa, $14 'desplaza el cursor una casilla a la derecha pause 2000lcdout, "TABIN" pause 2000for x = 1 to 3lcdout pepa, $10 'desplaza el cursos una casilla a la izquierda pause 1000next

lcdout, "V" 'enviar caracter ASCII "V" para corregir TAVIN pause 2000lcdout pepa, $C0+12, "8Vo" pause 2000lcdout pepa,2,"1" 'vuelve al inicio de la 1era fila y escribe 1end

4

Page 54: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 54/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Observen que la constante $FE se le cambio por pepa, así mismo si se les dificultamemorizar como pasar a la segunda línea, puede definir la constante: lin2 CON  $C0, ycuando desee escribir en la segunda línea pondrían: LCDOUT pepa, lin2, “Hola”, o lo quees lo mismo utilizando números decimales: LCDOUT  254, 192, “Hola”. También cave

recalcar que el LCD tiene una memoria RAM (Random Access Memory) que lo

explicaremos más adelante, por lo que una vez que se envía el texto, este permanecerá ahí yel PIC se lo puede utilizar para otras tareas o podemos desconectarlo si lo deseamos.En ocasiones especiales se debe cambiar la configuración de los pines del PIC hacia elLCD, por ejemplo para utilizar los comparadores de voltaje que se encuentran en el puertoA, necesitamos dejar disponibles estos pines, esto se logra adicionando al principio losiguiente:

Una vez que se define la nueva configuración de pines para el LCD, programamos de lamisma forma que las ocasiones anteriores, es importante además saber que los 4 bits dedatos solo se pueden configurar en los 4 bits más bajos (B.0 al B.3) o los 4 bits más altos(B.4 al B.7) de un puerto del PIC, y si deseamos hacer una comunicación a 8 bits con elLCD, estos deben estar en un solo puerto, además debemos definir en el PBP que vamos autilizar un bus de 8 bits, 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, también debemos definirlo de la siguiente forma

DEFINE LCD_BITS 4 „ Define comunicación 4 8 bits con el LCD 

DEFINE LCD_DREG PORTB „define pines del LCD B4 a B7 

DEFINE LCD_DBIT 4 „empezando desde el puerto B4 hasta el B7  

DEFINE LCD_RSREG PORTB „define pin para conectar el bit RS

DEFINE LCD_RSBIT 3 „en el puerto B3 

DEFINE LCD_EREG PORTB „define el pin par conectar el bit Enable 

DEFINE LCD_EBIT 2 „en el puerto B2 

4

Page 55: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 55/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Nunca debes olvidarte de colocar el potenciómetro en el display y las alimentaciones,en nuestras simulaciones vamos a obviar esto.

Configuración de un LCD a 4 bits con una configuración diferente a la predefinida por el PBP, esta vez utilizando el

 puerto B.3 para el bit R/S al B2 pare el Enable y desde el B.4 al B.7 para los bits de comunicación.

PRESENTACIÓN DE CARÁCTER POR CARÁCTER ENLCD

En las practicas anteriores se presentaron mensajes completos en un instante, en esta nueva

 práctica incluimos la declaración LOOKUP, que nos servirá para enviar carácter porcarácter con un intervalo de 400 mls, dando como resultado un efecto especial en lavisualización. Como conexión para esta practica utilizaremos la nueva configuraciónaprendida.

46

Page 56: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 56/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

DESPLAZAMIENTO DE UN TEXTO LCD

El LCD dispone en cada una de las líneas 40 posiciones de memoria, de los cualesúnicamente 16 son visibles, en el siguiente ejercicio escribiremos un mensaje desde elcasillero 17 ($90), el cual no es visible y luego iremos desplazando a la izquierda, comoresultado tendremos un texto que se mantiene en movimiento, una vez que este terminarecorrerá 16 posiciones en blanco y luego volverá a parecer los 24 caracteres del texto.

@ device mclr_off 'apago MCLRDEFINE LCD_DREG PORTBDEFINE LCD_DBIT 4DEFINE LCD_RSREG PORTBDEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTBDEFINE LCD_EBIT 2x var byteabc var byte pause 200ini:lcdout $FE,1for x = 0 to 15lookup x,["Microcontrolador"],abc

lcdout ,abc pause 400next pause 2000goto iniend

4

Page 57: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 57/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

CONTADOR DE PULSOS CON LCD

Este proyecto, consiste en contar el número de pulsos que ingresan por un pin en un

determinado periodo, este a su vez visualiza en un LCD, si la cantidad de este supera a los120 pulsos por segundo es decir 120Hz, se encenderá una alarma visual (un led rojo), y si lacantidad de pulsos baja a menos de 100Hz, este encenderá un led Verde, si la frecuencia semantiene entre estos 2 rangos, no se encenderá ningún led.Para esta practica utilizaremos el C.I 555 que nos ayuda a generar un tren de pulsosvariable, el cual lo conectamos al PIC para su posterior conteo.

DECLARACIÓN PULSEIN. Sirve para contar el número de pulsos que ingresan por un pin en un determinado tiempo, este a su vez lo guarda en una variable para su posterior

 procesamiento, la manera de utilizarlo es la siguiente.

COUNT portb.0, 1000, abc

@ device mclr_off 'apago MCLRDEFINE LCD_DREG PORTBDEFINE LCD_DBIT 4DEFINE LCD_RSREG PORTBDEFINE LCD_RSBIT 3

DEFINE LCD_EREG PORTBDEFINE LCD_EBIT 2x var byteabc var bytelcdout $FE, $7lcdout $FE, 1

 pause 200ini:lcdout $FE,$90for x = 0 to 23lookup x,["Microcontroladores-PIC-"],abclcdout ,abc

 pause 400nextgoto iniend

4

Page 58: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 58/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

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

LA PALABRA DEC. Sirve para mostrar el número de la variable en decimal, también selo puede representar por el signo (#), además existe las palabras BIN y HEX, el siguientees 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

Y si queremos verlo en binarioLCDOUT $FE,$C5, BIN  puls, “Hz”  ;muestra en el LCD así: 1101001Hz

@ device mclr_off 'apago MCLRcmcon = 7ledred var portb.2ledver var portb.1

 puls var word prog:count portb.0, 1000, puls ' contar pulsos en el puerto B.0lcdout $FE,1LCDOut $FE,$82,"Frecuencia"lcdout $FE,$C5, dec puls, "Hz"if puls > 120 then alarmahif puls < 100 then alarmallow ledred : low ledvergoto progalarmah:high ledred : low ledvergoto progalarmal:low ledred : high ledvergoto progend

49

Page 59: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 59/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

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 nosdará un valor alto u si giramos el potenciómetro a la mínima resistencia, el capacitor secargara más rápido y la variable nos dará cero, en definitiva estaremos leyendo el estado deun potenciómetro.

Conexión de un potenciómetro para leerlo.

50

Page 60: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 60/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

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 delmicro, estas pueden ser de 0 a 32767 Hz, su utilización es de la siguiente forma.

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 pormedio de un parlante

@ device mclr_off 'apago MCLRDEFINE LCD_DREG PORTBDEFINE LCD_DBIT 4DEFINE LCD_RSREG PORTBDEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTB

DEFINE LCD_EBIT 2dato var bytemedir

 pot portb.0,255,dato 'leer el potenciometro y guardar en datolcdout $FE,1," Rango= "lcdout ,#dato

 pause 100goto medirend

FREQOUT pin, duración, pulsos 

FREQOUT Portb.0 ,2000 , 1000

51

Page 61: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 61/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

UNA SIRENA POLICIAL

Esta practica consiste en sacar por un parlante el sonido característico de una sirena policial, para esto emplearemos la ayuda de la declaración SOUND. 

LA DECLARACIÓN SOUND. Sirve para generar tonos y/o ruido blanco en un pin delPIC, y es posible combinar hasta dos frecuencias desde 1 a 127 que son tonos y 128 a 255ruido blanco, 0 es silencio, 1 equivale a 78,74 Hz y 127 a 10000 Hz, esto se lo utiliza de la

siguiente manera:SOUND portB.0, [100, 10, 50, 10]

Esto quiere decir sacra dos tonos por el puerto B.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 unaduración de 10 milisegundos también.En cuanto a los materiales y diagrama de conexión son los mismos de la practica anterior.

freqout portb.0, 2000,7200 ;dacar una frecuencia dee 7.2KHz;durante 2 segundos por el puerto B.0

end

52

Page 62: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 62/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

UTILIZANDO UN CRISTAL DE MAYOR VELOCIDAD

Como sabemos el PIC esta trabajando actualmente a una velocidad de 4MHz, utilizando unoscilador interno (RC), pero el PIC puede operar también con osciladores externos de hasta20MHz. Este es el momento de aprender a utilizar un oscilador de mayor frecuencia (8, 10,12, 16, 20 MHz), en este caso notaremos una considerable diferencia en cuanto a la nitidezdel sonido respecto al programa anterior, esto se logra adicionando un DEFINE al iniciodel programa de la siguiente manera:

DEFINE OSC 20 ; Especifica al PBP que se va a utilizar un cristal de 20MHz

Con un oscilador de 20MHz, el micro trabaja 5 veces más rápido que antes, es decir con unoscilador interno de 4Mhz, el PIC ejecutaba cada instrucción en 1uS, con un oscilador de20MHz lo hará en 0.2 uS (0.0000002 S).Para esta práctica necesitaremos estos elementos

1 cristal de 20MHz u otro de menor velocidad.

2 capacitores de 22pF

 programa:sound portb.0, [100, 10, 50,10] ; genera tonos por el puerto B.0goto programaend

53

Page 63: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 63/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Para que este proyecto funcione se debe especificar al compilador que usaremos un cristalexterno, para ello debemos aumentar la siguiente línea de código al inicio del programa.

@ DEVICE HS_OSC 

Frecuencia OSC1/C1 OSC1/C1  Tipo4 MHz ------------- ------------ IntRC I/O32 KHz 68 –  100 pF 68 –  100 pF LP

200 KHz 15 –  30 pF 15 –  30 pF LP

100 KHz 68 –  150 pF 68 –  150 pF XT2 MHz 15 –  30 pF 15 –  30 Pf XT4 MHz 15 –  30 pF 15 –  30 pF XT8 MHz 15 –  30 pF 15 –  30 pF HS10 MHz 15 –  30 pF 15 –  30 pF HS12 MHz 15 –  30 pF 15 –  30 pF HS16 MHz 15 –  30 pF 15 –  30 pF HS20 MHz 15 –  30 pF 15 –  30 pF 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éfonocelular, para esto emplearemos la ayuda de la declaración SOUND. En cuando al diagrama de conexión y materiales, podemos utilizar el mismo de la práctica

anterior

define OSC 20 ;especifica que se va a utilizar un oscilador de 20MHz programa:sound portb.0, [100, 10, 50,10] ; genera tonos por el puerto B.0goto programaend

54

Page 64: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 64/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Pruebe con algunas combinaciones de tonos, así como también con diferentes tiempos yverá que bien pude componer una melodía.

LLAMADA TELEFÓNICA DTMF

Esta practica tiene como objetivo generar tonos DTMF (Dual tono Multifrecuency) a travésde un PIC, como los que genera cualquier teléfono fijo o celular, estos tonos no son nadamas que el envió de dos frecuencias especificas asignadas a cada tecla, estas frecuencias podemos ver en la figura siguiente, lo que sucede cuando pulsamos una tecla, es que envíauna frecuencia baja y luego una segunda frecuencia del grupo alto, esto podríamos hacerlocon la declaración FREQOUT 

Esto deberíamos hacerlo por cada tecla que desearemos que marque, pero para facilitarnoslas cosas el compilador PBP tiene una declaración específica para este trabajo.

@ device HS_OSC ;cambiar a oscilador de alta velocidad HSdefine OSC 20 ;especifica que se va a utilizar un oscilador de 20MHzx var byte

 prog:for x = 1 to 15sound portb.0, [125,4,123,5]

 pause 2500nextgoto progend

@ device HS_OSC ;cambiar a oscilador de alta velocidad HSdefine OSC 20 ;especifica que se va a utilizar un oscilador de 20MHzinicio:freqout portb.0,200,941,1336 ;equivale a presionar la tecla 0 de DTMF

 pause 50freqout portb.0,200,852,1477 ;equivale a presionar la tecla 9 de DTMF

 pause 50goto inicio

55

Page 65: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 65/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

LA DECLARACIÓN DTMFOUT

Esta genera automáticamente los tonos duales correspondientes a cada tecla y los envíacada una con intervalos de 50 milisegundos, aunque estos los podemos cambiar si lodeseamos, su manera de utilizar es la siguiente:

DTMFOUT portb.0, [0,9,8,7,6,7,2,5,1] ; equivale a presionar las teclas 098767251

En la figura siguiente se muestra el diagrama básico de conexión para poder hacer una llamadatelefónica, debido a que el oscilador interno que posee el PIC es un RC, esto no es muy preciso, por lo que experimentalmente no es muy confiable el marcado.Para que los tonos DTMF que generan el PIC sean validos al 100%, es necesario utilizar uncristal externo, sea este desde 4 a 20 MHz, con sus debidos capacitores.La resistencia de 560Ohm a 1 vatio paralela a la red telefónica, sirve para simular la carga

de un teléfono normal, y con esto podremos tener el tono de marcado necesario para hacerla llamada, además notarán que esta resistencia empieza a disipar calor en el momentoque se une a la red telefónica, esto debido a la cantidad de voltaje que circula (60 voltios).

5

Page 66: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 66/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

El relé hace la conexión y desconexión de la red telefónica, que en este caso sería como elauricular que cuelga y descuelga el teléfono.

El filtro de 1 uF a 100 voltios, sirve para poder mejorar la onda que sale del PIC y ademáscomo protección para el PIC. Es importante indicar que la red telefónica suministra

alrededor de 60 voltios en DC, por lo que el capacitor debe pasar de 60 voltios y ademásel lado positivo de la red telefónica debe ir a tierra del PIC y el negativo hacía el pin delPIC, por lo que necesitaremos la ayuda de un voltímetro para poder identificar la polaridad de la red.

Para solucionar este inconveniente se propone el diagrama de la figura, este es un diagramamás completo en el que la polaridad de la línea no es un problema, puesto que dispone un puente de diodos en donde el lado positivo ya está unido a tierra y el lado negativo va através del filtro hacia el PIC

57

Page 67: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 67/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Este proyecto es muy utilizado en sistemas de seguridad, se puede hacer una alarma, la cualen el momento de violar su seguridad, este realice automáticamente una llamada al propietario, el propietario en el momento de contestar escuchará una sirena, señal suficiente para saber que alguien ha act ivado la alarma, este mismo principio utilizan las centrales demonitoreo, con la diferencia que en vez de generar un sonido de sirena, se envía datos enforma serial como: Zona de apertura, hora, estado de batería, etc.

@ device HS_OSC ;cambiar aoscilador de alta velocidad HSdefine OSC 20 ;especifica que se va autilizar un oscilador de 20MHzrele var portb.1x var byteiniciar:

 pause 2000high rele

 pause 1000dtmfout portb.0,[0,9,8,7,6,7,2,5,1]

'número al cual el PIC va a llamar pause 3000for x = 1 to 25sound portb.0,[100,10,50,10]nextlow releend

58

Page 68: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 68/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

PROYECTOS CON TECLADOS

LECTURA DE UN TECLADO DE 16 PULSADORES CON

DISPLAY DE 7 SEGMENTOS

Los teclados matriciales son muy útiles para ingresar datos, un ejemplo del computador, elteclado de una alarma que nos permite armar y desarmar un sistema de seguridad, el tecladode una caja fuerte, el de una cerradura eléctrica, etc. Para introducirnos en el manejo de unteclado, haremos un proyecto para aprender a identificar filas y columnas que lo componenun teclado hexadecimal de 16 pulsadores, y su correspondiente barrido de teclas, luego sevisualizará en un display de 7 segmentos el número de la tecla presionada.

59

Page 69: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 69/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Debe considerarse que el lugar de las teclas no se pueden cambiar, puesto que este sistemade programación, utiliza operaciones matemáticas para calcular la tecla pulsada, perodebemos reconocer lo que es el programa, por eso se propone otro modo de programar, endonde los valores se le puede asignar en cualquier lugar, así como también se le puede poner letras.

@ device INTRC_OSC ;cambiar a oscilador internocmcon = 7fila var bytecolu var bytetecla var bytetrisa = 0

 prog1:

 portb = 0trisb = %11110000' si la tecla es presionada manténgalo en prog1if ((portb >> 4)!=%1111) then prog1

 prog2:for fila = 0 to 3

 portb = 0trisb = (dcd fila)^%11111111 ' setea una fila a una y los' invierte a todos los demascolu = portb >> 4 'desplaza los 4 bits altos al inicioif colu !=%1111 then numtecla 'si una tecla es pulsada ir numteclanext fila

goto prog2numtecla:'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, deebemos cambiar (fila*3)tecla = (fila*4) + (NCD (colu^%1111))

 porta = teclagoto prog1end

6

Page 70: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 70/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

@ device INTRC_OSCcmcon = 7TRISA = 0A var portb.0B var portb.1C var portb.2D var portb.3uno var portb.4dos var portb.5tres var portb.6cuatro var portb.7

 barrido:low aif uno = 0 then porta = 1if dos = 0 then porta = 2if tres = 0 then porta = 3if cuatro = 0 then porta = 10high alow Bif uno = 0 then porta = 4if dos = 0 then porta = 5

if tres = 0 then porta = 6if cuatro = 0 then porta = 11high Blow c

if uno = 0 then porta =7if dos = 0 then porta = 8if tres = 0 then porta = 9if cuatro = 0 then porta = 12high clow Dif uno = 0 then porta = 14if dos = 0 then porta = 0if tres = 0 then porta = 15if cuatro = 0 then porta = 13high D

 pause 10goto barridoend

61

Page 71: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 71/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Como se puede ver este programa es un poco más largo, pero ocupa menos espacio en lamemoria del PIC que el ejercicio anterior, además tiene la ventaja de poder en cualquierlugar el valor de las teclas y es más fácil de entender, así que este será la forma queutilizaremos en adelante. Su funcionamiento es sencillo solo debemos fijarnos cual fila es laque está en LOW y esta es la fila que se está barriendo, si una de las condiciones encuentra

la igualdad, pues esta es la tecla pulsada.

Ejemplo: Si pulsamos la tecla 6, en algún momento se pondrá en bajo la fila B y detectaraun cambio de estado de 1 a 0 en la columna 3, por lo que:

LOW BIf Tres = 0 Then Porta = 6HIGH B

Debemos considerar que una persona requiere como mínimo 100 milisegundos para presionar una tecla, en este tiempo el PIC realiza 10 barridos, por lo que de seguro detectarainmediatamente la tecla pulsada.Para el caso de utilizar un teclado de 12 pulsadores, debemos eliminar una columna, las quecorresponden a la tecla A, B, C y D, es decir eliminar las siguientes líneas de programa.

If Cuatro = 0 Then Portc = 10If Cuatro = 0 Then Portc = 11If Cuatro = 0 Then Portc = 12If Cuatro = 0 Then Portc = 13

En este caso quedaría un teclado con pulsadores del 0 al 9 y dos teclas de propósitoespecial, la tecla asterisco (*) y la tecla numeral (#).

62

Page 72: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 72/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIAFLASH

Este es un proyecto aplicable en seguridad, se trata de una cerradura electrónica en la cualal ingresar los 4 dígitos correctamente en su teclado, el PIC energiza un relé, pero si laclave es incorrecta el PIC emite 3 pitos indicando que ingreso una clave errónea y porsupuesto que el relé no se conectara, para hacerlo mas interesante se le agregado sonido alas teclas en el momento de ser pulsadas, esto sirve para que el usuario sepa que el PICreconoció la pulsación, también tiene un programa antirrebote de tecla para asegurarse queingrese una sola tecla a la vez.

El único inconveniente es que la clave no puede ser cambiada, ya que el número de lacombinación (1, 2, 3, 4) se la grabó en el programa del PIC por lo que reside en la memoria

FLASH, mas adelante en los próximos proyectos la memoria podrá ser cambiada a gustodel usuario, en tal caso este proyecto sirve para poder identificar y diferenciar las 3memorias que dispone el PIC.

63

Page 73: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 73/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

  @ device INTRC_OSC Número var ByteR var ByteBIP var porta.0LED var porta.1

DOOR var porta.2A var Portb.0B var Portb.1C var Portb.2D var Portb.3Uno var Portb.4Dos var Portb.5Tres var Portb.6Cuatro var Portb.7

Iniciando:high Led : high Bip

 pause 500low Led : low BipGoto Teclauno

Barrido:low aIf Uno = 0 Then Número = 1 : ReturnIf Dos = 0 Then Número = 2 : ReturnIf Tres = 0 Then Número = 3 : ReturnIf Cuatro = 0 Then Número = 10 : Returnhigh alow bIf Uno = 0 Then Número = 4 : ReturnIf Dos = 0 Then Número = 5 : ReturnIf Tres = 0 Then Número = 6 : ReturnIf Cuatro = 0 Then Número = 11 : Returnhigh blow cIf Uno = 0 Then Número = 7 : ReturnIf Dos = 0 Then Número = 8 : ReturnIf Tres = 0 Then Número = 9 : ReturnIf Cuatro = 0 Then Número = 12 : Returnhigh c

low dIf Uno = 0 Then Número = 14 : ReturnIf Dos = 0 Then Número = 0 : ReturnIf Tres = 0 Then Número = 15 : ReturnIf Cuatro = 0 Then Número = 13 : Return

high d pause 10Goto Barrido

Ptecla:

high Led : high Bip pause 100low Led : low Bip

Espacio:If Uno = 0 Then EspacioIf Dos = 0 Then EspacioIf Tres = 0 Then EspacioIf Cuatro = 0 Then Espacio

 pause 25Return

Teclauno:Gosub BarridoGosub PteclaIf Número = 1 Then TecladosGoto Falso

Teclados:Gosub Barrido : Gosub PteclaIf Número = 2 Then TeclatresGoto Falso1

Teclatres:Gosub Barrido : Gosub PteclaIf Número = 3 Then TeclacuatroGoto Falso2

Teclacuatro:Gosub Barrido : Gosub PteclaIf Número = 4 Then OpengeGoto Falso3

Openge:For R = 1 To 2

 pause 100high Led : high Bip

 pause 100low Led : low Bip

 Next

64

Page 74: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 74/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 high Door

 pause 1000low DoorGoto Teclauno

Falso:Gosub Barrido : Gosub PteclaFalso1:Gosub Barrido : Gosub PteclaFalso2:Gosub Barrido : Gosub PteclaFalso3:For R = 1 To 3

 pause 1000high Led : high Bip

 pause 100low Led : low Bip

 NextGoto TeclaunoEnd

65

Page 75: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 75/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIARAM Y CAMBIO DE CLAVE

Este proyecto es muy similar al anterior con la diferencia que este se le puede cambiar laclave predefinida (1, 2, 3, 4) por cualquier otra combinación de teclas, la clave original serácargada en cuatro variables y existirá una manera de cambiar los valores de estas variableslo cual se lo hace de la siguiente manera: después de haber colocado la clave original,debemos mantener presionado la tecla D durante 2 segundos, para ser más exactos en elmomento que el relé se conecta después de 1 segundo hay una pregunta si la tecla D es presionada ir a grabar, si no presionamos la tecla D a tiempo, perderemos la oportunidad decambiar la clave y tendremos que volver a repetir el proceso, en el momento que ingresa al programa de cambio de clave se encenderá el led y permanecerá encendido esperando a queingresemos los 4 nuevos dígitos.

Es importante saber que la nueva clave se almacenara en las variables SETPRIME,SETSEGUN, SETERCER y SETCUART, estas variables ocupan espacio de 224 BYTES, por lo tanto solo están activadas mientras el PIC se encuentra alimentado, una vez que secorta la alimentación al PIC esta memoria de borra, por consiguiente al momento de volvera prender el micro PIC, la nueva clave se nos habrá perdido y en su lugar se encontrara laclave original (1, 2, 3, 4), esto debido a que esta clave se encuentra en la memoria FLASHy en el momento de correr el programa lo carga nuevamente en la memoria RAM paradesde aquí poder ser modificada.

En cuanto a los materiales y el diagrama de conexión, son los mismos que se utilizaron enel ejercicio anterior.

66

Page 76: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 76/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 @ device INTRC_OSC

 Número var ByteR var ByteBIP var porta.0LED var porta.1DOOR var porta.2A var Portb.0

B var Portb.1C var Portb.2D var Portb.3Uno var Portb.4Dos var Portb.5Tres var Portb.6Cuatro var Portb.7setprime var bytesetsegu var bytesetercer var bytesetcuart var byte

setprime = 1setsegu = 2setercer = 3setcuart = 4

Iniciando:high Led : high Bip

 pause 500low Led : low BipGoto Teclauno

grabauno:

gosub ptecla : high ledgosub barrido : gosub pteclahigh ledsetprime = númerograbados:gosub barrido : gosub pteclahigh ledsetsegu = númerograbatres:gosub barrido : gosub pteclahigh led

setercer = númerograbacuatro:gosub barrido : gosub pteclahigh ledsetcuart = númerogoto iniciando

Barrido:low aIf Uno = 0 Then Número = 1 : ReturnIf Dos = 0 Then Número = 2 : ReturnIf Tres = 0 Then Número = 3 : ReturnIf Cuatro = 0 Then Número = 10 :Return

high alow bIf Uno = 0 Then Número = 4 : ReturnIf Dos = 0 Then Número = 5 : ReturnIf Tres = 0 Then Número = 6 : ReturnIf Cuatro = 0 Then Número = 11 :Returnhigh blow cIf Uno = 0 Then Número = 7 : ReturnIf Dos = 0 Then Número = 8 : Return

If Tres = 0 Then Número = 9 : ReturnIf Cuatro = 0 Then Número = 12 :Returnhigh clow dIf Uno = 0 Then Número = 14 : ReturnIf Dos = 0 Then Número = 0 : ReturnIf Tres = 0 Then Número = 15 : ReturnIf Cuatro = 0 Then Número = 13 :Returnhigh d

 pause 10

Goto Barrido

Ptecla:high Led : high Bip

 pause 100low Led : low Bip

Espacio:If Uno = 0 Then EspacioIf Dos = 0 Then EspacioIf Tres = 0 Then Espacio

If Cuatro = 0 Then Espacio pause 25Return

6

Page 77: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 77/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 Teclauno:Gosub BarridoGosub PteclaIf Número = 1 Then TecladosGoto Falso

Teclados:Gosub Barrido : Gosub PteclaIf Número = 2 Then TeclatresGoto Falso1

Teclatres:Gosub Barrido : Gosub PteclaIf Número = 3 Then TeclacuatroGoto Falso2

Teclacuatro:Gosub Barrido : Gosub Ptecla

If Número = 4 Then OpengeGoto Falso3

Openge:For R = 1 To 2

 pause 100high Led : high Bip

 pause 100low Led : low Bip

 Nexthigh Door

 pause 1000low DoorGoto Teclauno

Falso:Gosub Barrido : Gosub PteclaFalso1:Gosub Barrido : Gosub PteclaFalso2:Gosub Barrido : Gosub PteclaFalso3:For R = 1 To 3

 pause 1000high Led : high Bip

 pause 100low Led : low Bip

 NextGoto TeclaunoEnd

68

Page 78: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 78/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

CERRADURA ELECTRÓNICA CON CLAVE EN MEMORIAEEPROM Y CAMBIO DE CLAVE

Una vez aprendido acerca de las 2 memoria anteriores, es el momento de aprender a utilizarla memoria EEPROM (Electrical Erasable Programable Read Only Memory), o memoriade lectura de programación y borrado eléctrico, que a diferencia de la memoria RAM, estano es volátil y tiene capacidad para 128 Bytes, lo que quiere decir que si al PIC se le cortala alimentación, los datos almacenados en la memoria EEPROM, permanecen según sufabricante por un periodo de 40 años a 100 años.

Este proyecto cumple todas las expectativas de un estudiante de micros, tiene la posibilidadde 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 esleyendo 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 enel 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 elnúmero 3, en la dirección 6 el carácter ASCII de K, es decir el número 75, en la dirección 7se guardara el número 9 y así sucesivamente, recuerde que el PIC16F628 tiene 128espacios de memoria EEPROM de 1 BYTE cada una lo que quiere decir que el número másalto 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 elnúmero 137, el dato anterior en este caso el 12 automáticamente se borra y se escribe elnúmero 137.

 Nota: Estas declaraciones ya incluyen las pausas necesarias para realizar la grabación.

69

Page 79: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 79/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

  @ device INTRC_OSC Numero var ByteR var ByteBIP var porta.0LED var porta.1

DOOR var porta.2A var Portb.0B var Portb.1C var Portb.2D var Portb.3Uno var Portb.4Dos var Portb.5Tres var Portb.6Cuatro var Portb.7setprime var bytesetsegu var bytesetercer var byte

setcuart var bytesetprime = 1setsegu = 2setercer = 3setcuart = 4

Iniciando:for r = 1 to 2high Led : high Bip

 pause 1000low Led : low Bipnext; cargar la memoria EEPROM desde ladirección 0 en adelanteeeprom 0,[1,2,3,4]reset:for r = 1 to 3high Led : high Bip

 pause 50low Led : low Bip

 pause 50if (cuatro = 0) and (uno = 0) then resetnext

read 0, setprimeread 1, setseguread 2, setercerread 3, setcuartgoto teclauno

grabauno:gosub ptecla : high ledgosub barrido : gosub pteclahigh ledwrite 0, numero

grabados:gosub barrido : gosub pteclahigh ledwrite 1, numerograbatres:gosub barrido : gosub pteclahigh ledwrite 2, numerograbacuatro:gosub barrido : gosub pteclahigh ledwrite 3, numero

goto resetBarrido:low aIf Uno = 0 Then Numero = 1 : ReturnIf Dos = 0 Then Numero = 2 : ReturnIf Tres = 0 Then Numero = 3 : ReturnIf Cuatro = 0 Then Numero = 10 : Returnhigh alow bIf Uno = 0 Then Numero = 4 : ReturnIf Dos = 0 Then Numero = 5 : ReturnIf Tres = 0 Then Numero = 6 : ReturnIf Cuatro = 0 Then Numero = 11 : Returnhigh blow cIf Uno = 0 Then Numero = 7 : ReturnIf Dos = 0 Then Numero = 8 : ReturnIf Tres = 0 Then Numero = 9 : ReturnIf Cuatro = 0 Then Numero = 12 : Returnhigh clow dIf Uno = 0 Then Numero = 14 : ReturnIf Dos = 0 Then Numero = 0 : Return

If Tres = 0 Then Numero = 15 : ReturnIf Cuatro = 0 Then Numero = 13 : Returnhigh d

 pause 10Goto Barrido

7

Page 80: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 80/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

  Ptecla:high Led : high Bip

 pause 100low Led : low Bip

Espacio:If Uno = 0 Then EspacioIf Dos = 0 Then EspacioIf Tres = 0 Then EspacioIf Cuatro = 0 Then Espacio

 pause 25Return

Teclauno:Gosub BarridoGosub PteclaIf Numero = 1 Then Teclados

Goto Falso

Teclados:Gosub Barrido : Gosub PteclaIf Numero = 2 Then TeclatresGoto Falso1

Teclatres:Gosub Barrido : Gosub PteclaIf Numero = 3 Then TeclacuatroGoto Falso2

Teclacuatro:Gosub Barrido : Gosub PteclaIf Numero = 4 Then OpengeGoto Falso3

Openge:For R = 1 To 2

 pause 100high Led : high Bip

 pause 100low Led : low Bip

 Nexthigh Door pause 1000low Doorhigh a : high b : high c : high Dif cuatro = 0 then grabaunoGoto Teclauno

Falso:Gosub Barrido : Gosub PteclaFalso1:Gosub Barrido : Gosub PteclaFalso2:Gosub Barrido : Gosub PteclaFalso3:For R = 1 To 30

 pause 150high Led : high Bip

 pause 150low Led : low Biphigh a : high b : high c : high Dif (cuatro = 0) and (uno = 0) then reset

 Next

 panico:

high led pause 500low led

 pause 500if (cuatro = 0) and (uno = 0) then resetgoto panicoEnd 

7

Page 81: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 81/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

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, tiene muchasaplicaciones, por ejemplo para atenuar la iluminación de un led, la iluminaciónBACKLIGHT de un LCD, para variar la velocidad de un motor DC, que es lo que veremosen este caso.El presente proyecto es un variador de velocidad de un motor DC que se alimenta a 5voltios, su funcionamiento es de la siguiente manera:

Al momento de alimentar el circuito, el motor parte desde una velocidad media, es decir(FREC = 125), al pulsar el botón (S) incrementa la variable en múltiplos de 25 y lavelocidad del motor sube hasta legar a (FREC = 250), si seguimos pulsando la mismo tecla,el LED permanecerá encendido, esto nos indica que ya llego al limite, entonces pulsamos el botón (B), el cual hace que disminuya la velocidad del motor hasta legar a (FREC = 25), deigual manera si seguimos pulsando el botón (B) el LED permanecerá encendido. Si ustedno dispone de un motor puede conectar a un LED directamente con una resistencia de 330Ohm, igualmente podrá observar como baja o sube la intensidad del LED, la forma deutilizar el PWM es de la siguiente manera:

PWM portb.0, 127, 60 ; quiere decir sacar 60 pulsos PWM por el puerto B.0 al 50%; 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, el motor trabaja a alta velocidad

72

Page 82: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 82/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Genera 3 ciclos al 50% alto y 50% bajo, 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, el largo de cadaciclo para un oscilador de 5 milisegundos y para un oscilador de 20MHz es de 1milisegundos.

73

Page 83: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 83/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

  @ device INTRC_OSC botsubir var portb.1 botbajar var portb.2Led var portb.3Frec var byte

Bandera var bitfrec = 125high led

 pause 500low ledProg:

 pwm portb.0, frec, 30 ' sacar PWM 30 ciclos de 125 señal útillow ledif botsubir = 0 then subirif botbajar = 0 then bajar

 bandera = 0goto prog

Subir:if frec > 249 then avisoif bandera = 1 then proghigh led

 bandera = 1frec = frec + 25goto progBajar:if frec < 26 then Avisoif bandera = 1 then Proghigh led

 bandera = 1frec = frec - 25goto progAviso:high ledgoto progend

74

Page 84: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 84/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

UN CONVERSOR D/A CON EL CI LM358

Se puede hacer un pequeño convertidor de digital a analógico para el PWM con unaresistencia y un capacitor, peo vamos a proponer realizarlo con el LM358 por sus mejores

 prestaciones, ya que lograremos mayor rango de voltaje (hasta 32V), pero en nuestro caso por motivos experimentales solo lo conectamos a los 5 voltios de la misma fuente que estáalimentado el PIC, en el caso de un PWM de 255, el LM358 tendrá en su salida 5V, sisacamos un PWM de 127, tendremos 2.5V, en definitiva los pulsos que ingresan al LM358se convierten en salida análoga, desde 0 hasta 5V.

Conexión de un LM358 como conversor D/A para convertir el PWM en señal análoga de 0 a 5V.

Se necesita un voltímetro para medir los niveles de voltaje en la salida, en cuanto al programa podemos utilizar el mismo del ejercicio anterior. A la salida del LM358 podemoscolocar un LED con su resistencia de 330 Ohm para poder observar su atenuación, también podemos colocar el circuito del motor DC, con su capacitor y diodo de protección.

75

Page 85: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 85/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MOTORES PASO A PASO

¿QUÉ ES UN MOTOR PASO A PASO?

Como todo motor, es en esencia un conversor electromecánico, que transforma la energíaeléctrica en mecánica; pero de un modo tan peculiar que constituye en la actualidad unacategoría aparte. En efecto, mientras que un motor convencional gira libremente al aplicaruna tensión comprendida dentro de ciertos límites (que se corresponden de un lado al parmínimo capaz de vencer su propia inercia mecánica, y de otro a sus propias limitaciones de

 potencia); 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, 6, etc.). La posibilidad de controlar en todo momento esta codificación permite realizardesplazamientos angulares lo suficientemente precisos, dependiendo el ángulo de paso (oresolución angular) del tipo de motor (puede ser tan pequeño como 1,80º hasta unos 15º).De este modo, si por ejemplo el número de grados por paso es de 1,80º, para completar unavuelta serán necesarios 200 pasos.De la misma manera que se puede posicionar el eje del motor, es posible controlar lavelocidad del mismo, la cual será función directa de la frecuencia de variación de lascodificaciones en las entradas. De ello se deduce que el motor paso a paso presenta una precisión y repetitividad que lo habilita para trabajar en sistemas abiertos sinrealimentación.

76

Page 86: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 86/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MOTORES PASO A PASO BIPOLARES

En el esquema de la figura 4 aparece uno de estos motores con dos estatores, sobre cadauno de los cuales se ha devanado una bobina (1 y U), las cuales se encuentran conectadasdirectamente a unos conmutadores de control que, como se verá más adelante, podrán ser

sustituidos por las líneas de entrada y salida de nuestro ordenador debidamente programadas. Como las bobinas se encuentran distribuidas simétricamente en torno alestator, el campo magnético creado dependerá en magnitud de la intensidad de corriente porcada fase, y en polaridad magnética, del sentido de la corriente que circule por cada bobina.De este modo el estator adquiere la magnetización correspondiente, orientándose el rotorsegún ella (fig. 4a). Si el interruptor 1.1 se conmuta a su segunda posición (fig. 4b), seinvierte el sentido de la corriente que circula por T y por tanto la polaridad magnética,volviéndose a reorientar el rotor (el campo ha sufrido una rotación de 90º en sentidoantihorario, haciendo girar el rotor 90º en ese mismo sentido). Con esto se llega a la

conclusión de que para dar una vuelta completa serían necesarios cuatro pasos de 90º cadauno (el ciclo completo se puede seguir en la figura 4a,b,c,d).Ahora bien, este tipo demotores también puede funcionar de un modo menos "ortodoxo", pero que nos va a permitir doblar el número de pasos, si bien a costa de la regularidad del par. Esto seconsigue de la siguiente manera: en principio, al igual que en el anterior fondo defuncionamiento, por los devanados T y U se hace circular una corriente, de tal modo que elestator adquiere la magnetización correspondiente y por lo tanto el rotor se orienta segúnella. Ahora bien, al contrario que en el caso anterior, antes de conmutar el interruptor I.1 asu segunda posición, se desconectará el devanado T, reorientándose por consiguiente elrotor, pero la mitad de un paso (45º).

77

Page 87: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 87/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

78

Page 88: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 88/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MOTORES PASO A PASO UNIPOLARES

Los motores paso a paso unipolares, en cuanto a construcción son muy similares a losanteriormente descritos excepto en el devanado de su estator (fig. 5). En efecto, cada bobina del estator se encuentra dividida en dos mediante una derivación central conectada aun terminal de alimentación. De este modo, el sentido de la corriente que circula a través dela bobina y por consiguiente la polaridad magnética del estator viene determinada por elterminal al que se conecta la otra línea de la alimentación, a través de un dispositivo deconmutación. Por consiguiente las medias bobinas de conmutación hacen que se inviertanlos polos magnéticos del estator, en la forma apropiada. Nótese que en vez de invertir la

 polaridad de la corriente como se hacía en los M.P.P. bipolares se conmuta la bobina pordonde circula dicha co-rriente.

79

Page 89: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 89/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Al igual que los M.P.P. bipolares, es posible tener resoluciones de giro correspondientes aun semipaso. Ahora bien, dado que las características constructivas de estos motoresunipolares son idénticas a las de los bipolares, se puede deducir que los devanados tanto enuno como otro caso ocuparán el mismo espacio, y por tanto es evidente que por cada fasetendremos menos vueltas o bien el hilo de cobre será de una sección menor. En cualquierade los dos casos se deduce la disminución de la relación de amperios/vuelta. Por tanto, aigualdad de tamaño los motores bipolares ofrecen un mayor par.

80

Page 90: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 90/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

SECUENCIA DEL CIRCUITO DE CONTROL

Existen dos formas básicas de hacer funcional los motores paso a paso atendiendo al avancedel rotor bajo cada impulso de excitación:

Paso completo (fu ll 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, para unmotor como el de la Figura 2, y que se presentada de forma resumida en la Tabla 1 paraambos sentidos de giro, las X indican los interruptores que deben estar cerrados(interruptores en ON), mientras que la ausencia de X indica interruptor abierto(interruptores en OFF).

Medio paso (Half step ): Con este modo de funcionamiento el rotor avanza medio paso porcada pulso de excitación, 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). Para

conseguir tal cometido, el modo de excitación consiste en hacerlo alternativamente sobredos bobinas y sobre una sola de ellas, según se muestra en la Tabla siguiente para ambossentidos de giro.

81

Page 91: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 91/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MANEJO DE UN MOTOR PASO A PASO EN SECUENCIAWAVE DRIVE

@ device INTRC_OSCtrisb = 0X var byteantihorario:for x = 1 to 12

 portb =%0001gosub timer

 portb =%0010gosub timer

 portb =%0100gosub timer

 portb =%1000gosub timernext

 pause 1000

for x = 1 to 12 portb =%1000gosub timer

 portb =%0100gosub timer

 portb =%0010gosub timer

 portb =%0001gosub timernext

 pause 1000

goto antihorariotimer:

 pause 5returnend 

82

Page 92: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 92/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

MANEJO DE UN MOTOR PASO A PASO EN SECUENCIAFULL STEP 

MANEJO DE UN MOTOR PASO A PASO EN SECUENCIAHALF STEP 

@ device INTRC_OSCtrisb = 0antihorario:

 portb =%0011gosub timer

 portb =%0110gosub timer

 portb =%1100gosub timer

 portb =%1001gosub timergoto antihorariotimer:

 pause 5returnend

@ device INTRC_OSCtrisb = 0Rept var bytefor Rept = 1 to 12

 portb =%0001gosub timer

 portb =%0011gosub timer

 portb =%0010gosub timer

 portb =%0110gosub timer portb =%0100gosub timer

 portb =%1100gosub timer

 portb =%1000gosub timer

 portb =%1001gosub timernexttimer:

 pause 5return

end

83

Page 93: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 93/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

COMUNICACIÓN 

QUE ES LA COMUNICACIÓN SERIAL? 

Existen dos formas de realizar una comunicación binaria, la paralela y la serial. La

comunicación paralela como por ejemplo la comunicación del PIC con el CI. 7447 de losejercicios anteriores, en donde los datos viajan simultáneamente a través de los 4 hilos, tiene laventaja de que la transferencia de datos es más rápida, pero el inconveniente es quenecesitamos un cable por cada bit de dato, lo que encarece y dificulta el diseño de las placas,otro inconveniente es la capacitancia que genera los conductores por lo que la transmisión sevuelve defectuosa a partir de unos pocos metros.

La comunicación serial en cambio es mucho más lenta debido a que transmite bit por bit perotiene la  ventaja de necesitar menor cantidad de hilos, y además se puede extender lacomunicación a mayor distancia, por ejemplo; en la norma RS232 a 15 mts., en la norma

RS422/485 a 1200 mts y utilizando un MODEM, pues a cualquier parte del mundo.

Existen dos formas de realizar la comunicación serial: la sincrónica y la asincrónica, ladiferencia entre estas dos formas de comunicación es que la comunicación sincrónica ademásde la línea para la transmisión de datos, necesita otra línea que contenga los pulsos de reloj,estos a su vez indican cuando un dato es válido. Por otra parte la comunicación serialasincrónica no necesita pulsos de reloj, en su lugar utiliza mecanismo como referencia tierra(RS232) o voltajes diferenciales (RS422/485), en donde la duración de cada bit esdeterminada por la velocidad de transmisión de datos que se debe definir previamente entreambos equipos.

MODOS DE TRANSMISIÓN DE DATOS

Se incluye este literal para poder entender mejor las practicas que más adelanterealizaremos, pues mencionaremos algunas palabras que podría encontrar su significado eneste literal.

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, sea sólo para recibiro sólo para transmitir. Una ubicación pude ser un transmisor o un receptor, pero no ambos a

la vez, un ejemplo claro es la radiodifusión, en donde la estación es el transmisor y losradios son los receptores.

Half-duplex:  se refiere a la transmisión que puede ocurrir en ambos sentidos, pero no almismo tiempo, en donde una ubicación puede ser transmisor o un receptor, pero no los dosal mismo tiempo, un ejemplo son los llamados radios WALKING TALKING, en donde unoperador presiona el botón y habla, luego suelta el botón y el otro usuario presiona el botón para contestar.

84

Page 94: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 94/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Full-duplex:  se dice a la transmisión que puede ocurrir en ambos sentidos y al mismotiempo, también se lo conoce con el nombre de líneas simultaneas de doble sentido, unaubicación puede transmitir y recibir simultáneamente, siempre y cuando la estación a la queestá transmitiendo también sea la estación de la cual está recibiendo, un ejemplo es latelefonía móvil.

Full/full-duplex: con este modo de transmisión es posible transmitir y recibirsimultáneamente, pero no necesariamente entre las dos ubicaciones, es decir una estación puede transmitir a una segunda estación y recibir de una tercera estación al mismo tiempo.Esta transmisión se utiliza exclusivamente con circuitos de comunicación de datos.

COMUNICACIÓN SERIAL RS232

La norma RS232 se incluye actualmente en los computadores, conocido como puerto serial

y sirve para comunicarse con otras computadoras además del mouse, programadores,impresoras, stc. A continuación veremos un gráfico que muestra la forma de comunicaciónserial.

Estructura de un dato que se envía serialmente a 2400,8N1, (2400bits/seg, sin paridad. 8 bits de dato y 1 bit de parada), correspondiente al

número 68 carácter ASCII de "D" (%01000100), al tiempo de u n bit es de 416 us. , por lo que el receptor revisa el bit de arranque después de208 us., y luego cada 416 us

Como podemos ver la señal permanece en un nivel lógico alto mientras no realiza

ninguna transferencia de datos. Para empezar a transmitir datos el transmisor coloca lalínea en nivel bajo durante el tiempo de un bit (416 us para 2400bits/s), este se llamael bit de arranque, a continuación empieza a transmitir con el mismo intervalo de tiempolos bits de datos, que pueden ser de 7 u 8 bits, comenzando por los bits menossignificativos y terminando por los más significativos. Al final de la transmisión de datosse envía el bit de paridad, si estuviera activa esta opción y por último los bits de parada,

85

Page 95: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 95/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

que pueden ser 1 o 2, después de esto la linea vuelve a un estado lógico alto, y eltransmisor está listo para enviar el siguiente dato.

Como el receptor no está sincronizado con el transmisor desconoce el momento en queempieza la transmisión, por lo que siempre debe estar en espera del cambio de estado o

sea el bit de arranque, una vez que se da este bit, medio bit después vuelve a verificar siestá en bajo, si no lo está no lo recibe ya que pudo ser ocasionado por un ruido en la línea,caso contrario si el estado sigue siendo bajo, empieza a recibir la transmisión hasta el bitde parada.

Para que la lectura de los datos sea correcta, ambos equipos deben estar configurados a lamisma velocidad y demás parámetros y no exceder más allá de los 2 metros, pasado estadistancia los datos recibidos pueden no ser los correctos debido a la pérdida de voltaje enel cable, ruido, etc. Para distancias mayores existe el protocolo RS232, cuyos nivelesde 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, para señal O lógica (+5V a +15 V) en eltransmisor y (+3V a +25V) en el receptor, es decir una lógica inversa.

Comunicación serial con la norma RS232, el dato enviado es el mismo que el de la figura anterior, con la diferencia que la lógica esinversa, 1 equivale a -10 y 0 a +10.

COMUNICACIÓN SERIAL PÍC.A PC.

Una vez comprendido la teoría de la comunicación serial y su protocolo RS232, haremos unejercicio de comunicación serial asincrónica modo simplex, que consiste en enviar datos, másespecíficamente los caracteres ASCII de la palabra "DOG", a través de un cable y directamentedesde el PIC al PC, a 2400 bits/seg., a 8 bits de datos, sin paridad, y 1 bit de parada.

86

Page 96: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 96/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Como sabemos el computador tiene al menos un puerto serial, con la norma RS232, por lotanto debemos simular esos voltajes desde el PIC, esto lo conseguimos enviando O pararepresentar el 1 lógico y 5V, para representar el 0 lógico, para esto existe la declaraciónSEROUT. 

LA DECLARACIÓN SEROUT. Esta declaración sirve para enviar datos seriales en unformato standard asincrónico usando 8 bits de dato, sin paridad y 1 stop bit, (8N1), y para poder utilizarlo

SEROUT puerto B.l, N2400,["D"] ;enviar el carácter ASCII "D"por el puerto Bl a

24008N1, en dato invertido.

Esquema del dato enviado por el PIC simulando la norma RS232, noten que es muy similar al esquema anterior, pero con diferentesniveles de voltaje.

Debemos incluir al comienzo del programa la siguiente línea:

INCLUDE “Modedefs.bas”  ; incluir el programa modedefs.bas (modos de comunicación)

Esto significa incluir el programa modedefs.bas en esta línea, aquí se encuentran algunos delos parámetros para las comunicaciones, por ejemplo en nuestro caso la velocidad detransmisión que son: para dato invertido N300, N1200, N2400, N9600 y para datoverdadero: T300, T1200, T2400, T9600. Los datos invertidos por ejemplo el N2400, quieredecir que 1 lógico vale 0V, y un 0 lógico vale 5V, 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 paramanejar con el CI. MAX232, el cual ya se vara mas adelante.

Este comando INCLUDE podemos utilizarlo para nuestros propios programas por ejemplosi ponemos INCLUDE  “electronica.bas”, se incluirá el sonido para un parlante por el   puerto B.0 que durara 2 segundos.

87

Page 97: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 97/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Diagrama de conexión del PIC para enviar datos al PC

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, para esto presionamos en la ventana de microcode F4 y configuramos los parámetros quenecesitamos.

include "modedefs.bas" ; incluyo los modos de comunicacióninicio:high portb.2

 pause 1000low portb.2

 pause 500serout portb.1,N2400,["DOG"] ;envia serialmente a 2400N1 los caracteres "DOG"goto inicioend

88

Page 98: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 98/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Para este ejercicio debemos primero seleccionar el puerto con que vamos a utilizar, luego lavelocidad que se transmite el dato, en este caso a 2400 baud, luego paridad ninguna, 8 bitsde datos y 1 stop bit, una vez que estemos listos para iniciar la comunicación presionamosel botón connect, notaran en la parte inferior izquierda que decía disconnected  cambiarácomo lo demuestra la siguiente figura.

89

Page 99: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 99/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Cuando la ventana esta activa sale un mensaje en la parte inferior izquierda connected, elcom que se esta utilizando y los parámetros de comunicación (2400N81), encienda el microPIC y después de apagarse el Led del puerto B.2 deberá salir el texto enviado en el cuadroque dice Receive, como el programa esta en un lazo sin fin el texto DOG seguirá saliendocontinuamente, si deseamos limpiar el texto presionamos la hoja en blanco que esta justo

encima la palabra Receive.

Nota: Es importante dejar cerrado esta ventana presionando donde dice Disconnect, ya quesi se la deja abierto este com no se puede utilizar para grabar micros o cualquier otraaplicación.

COMUNICACIÓN SERIAL PC A PIC

Si usted tubo problemas con el envió de datos del PIC al PC, este proyecto de seguro lefuncionara, se trata de enviar datos desde el PC al PIC, por lo que es de suponerse losvoltajes serán desde -10V hasta +10V y la distancia podemos extenderlo hasta 15 metrossin ningún problema, como la conexión es directamente al PIC debemos colocar unaresistencia de 22K para no dañar el puerto del PIC. En este caso el PIC es un receptor por loque debemos permanecer en espera del bit de inicio, para esto tenemos la declaraciónSERIN.

DECLARACIÓN SERIN: esta declaración sirve para recibir datos seriales en un formatoestándar asíncrono usando 8 bits de dato, sin paridad y 1 stop bit, (8N1), y poder utilizarlo,debemos incluirlo igualmente que para el SEROUT la línea INCLUDE “modedefs.bas” al

inicio del programa, su forma de utilizar es la siguiente:

SERIN port.0, N2400, letra ; Esperar un dato serial y guardarlo en la

; variable previamente creada llamada letra.

Es importante saber que esta declaración detiene el programa esperando a que ingrese undato, y solamente cuando haya recibido un dato, continua con la siguiente línea de programa, para hacer que solo espere un determinado tiempo y luego continúe con la

siguiente línea debe utilizar TIMEOUT.

Nota: El PIC16F628A, obligadamente necesita oscilador externo de 4MHz a 16Mhz para poder comunicarse en forma serial.

El presente proyecto consiste en enviar un texto desde la ventana de comunicación serial demicrocode hacia el PIC y este a su vez mostrara el texto en un LCD 2x16.

90

Page 100: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 100/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Una vez que arranca el PIC saldrá un texto que dice LCD listo, un segundo después se

 borrara y quedara en un lazo de espera del dato serial, si el texto inicial no sale, revise lasconexiones al LCD, caso contrario si todo esta bien, abrimos la ventana de comunicaciónserial de microcode de la forma que aprendimos anteriormente y escribimos en la ventanaque dice Send: micro PIC, luego pulsamos la tecla Send Text, inmediatamente dedbemosver el mismo en el LCD.

include "modedefs.bas" ; incluir modos de comunicación

dat var bytelcdout $FE, 1, "LCD listo" pause 1000lcdout $FE, 1inicio:serin portb.0, N2400, dat ; esperar dato y guardarlo en datlcdout, datgoto inicioend

91

Page 101: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 101/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

COMUNICACIÓN SERIAL CON EL MAX 232

El CI MAX 232 es la solución para transmitir a mayor distancia, ya que incrementa losniveles de voltaje de 5V a un voltaje simétrico de 10V, gracias a un juego de capacitoresque le ayuda a doblar os voltajes, por lo que para su alimentación solo requiere una fuentede 5V que puede ser la misma que utiliza el PIC. El MAX232 dispone de dos juegos detransmisores y receptores, de los cuales solo ocupamos un par de ellos.El MAX232 en este caso nos ayudara a convertir los voltajes TTL del PIC en voltajes de lanorma RS232, quiere decir que si enviamos un estado lógico alto (5V), a la salida del Toutdel CI MAX232 tendremos -10V, y si enviamos un 0 lógico desde el PIC (0V), el MAX232

enviara +10V, por lo tanto debemos invertir el dato de salida del PIC y esto lo conseguimosutilizando T2400 de la siguiente manera:

SEROUT  portb.1, T2400, [“Y”]  ; quiere decir enviar el dato serial D por el pin B.1 a; 2400 bits/s 8N1 en dato verdadero.

92

Page 102: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 102/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

El presente proyecto trabaja de la siguiente manera, una vez listo y conectado todo, cuandoel Pic arranca debe encender el led y luego apagarlo, esto para asegurarnos que todo estafuncionando bien, ahora desde el computador enviaremos una letra cualquiera que no sea laC, observaran que el led parpadea cada que se le envié una letra, ahora si enviamos la Cmayú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 hastael 255, como podemos observar esto es un ejemplo de la transmisión half-duplex.

include "modedefs.bas" ; incluir modos de comunicaciónled var portb.7dat var bytenum var bytegosub ledrinicio:serin portb.0, T2400, datif dat = "C" then contar

gosub ledrgoto iniciocontar:high led

serout portb.1, T2400, [#num,"-"]num = num + 1

 pause 1000goto contarledr:high led

 pause 200low led

returnend

9

Page 103: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 103/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

COMUNICACIÓN SERIAL PIC A PIC

Este proyecto consiste en hacer una transmisión simplex entre un PIC transmisor y un PICreceptor, el primer dispone de tres botones, el botón A envía la letra “A” el cual el PIC

receptor lo detecta y enciende un LED rojo por un segundo, desde el transmisor presionamos el botón B y transmite la letra “B”, el receptor encenderá un led amarillo,

igualmente después de 1 segundo lo apagara y por ultimo desde el transmisor presionamosla tecla C y el receptor encenderá un led verde. Por tratarse de un practica y nocomplicarnos con el MAX232, ya que necesitamos 2, solo realizaremos a una distancia de 2metros conectando directamente de PIC a PIC utilizando dato invertido.

94

Page 104: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 104/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Para este proyecto podemos utilizar una o dos fuentes de 5 voltios, pero seria recomendableutilizar dos fuentes para que la comunicación se vea mas real, como es de suponerse senecesitará de 2 programas diferentes una para cada microcontrolador, por lo queempezaremos con el programa del transmisor.

Una vez que concluya con esta practica pruebe con el MAX232 a mayor distancia o elreceptor cambie los leds por un LCD y escriba desde el transmisor agregando un teclado de16 pulsadores.

;TRANSMISORinclude "modedefs.bas

 botonA var portb.1 botonB var portb.2 botonC var portb.3transmitir:if botona = 0 then envio1if botonb = 0 then envio2if botonc = 0 then envio3goto transmitir

envio1:serout portb.0, N2400,["A"]

 pause 500goto transmitirenvio2:serout portb.0, N2400,["B"]

 pause 500goto transmitirenvio3:serout portb.0, N2400,["C"]

 pause 500goto transmitir

end

;RECEPTORinclude "modedefs.bas"ledr var portb.1leda var portb.2ledv var portb.3datos var bytehigh ledr

 pause 500low ledrrecibir:

serin portb.0, N2400, datosif datos = "A" then high ledr : pause1000if datos = "B" then high leda : pause1000if datos = "C" then high ledv : pause1000low ledr : low leda : low ledvgoto recibirend

95

Page 105: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 105/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

COMUNICACIÓN SERIAL SINCRÓNICA I2C

Muchos de los dispositivos electrónicos que se encuentran comúnmente en una tarjeta

electrónica, incluye circuitos integrados con el bus I2C, como por ejemplo las memorias24CXX, los procesadores de señal, codificadores de video, sensores de temperatura, RTC(reloj en tiempo real), etc.El bus I2C (Inter Integrated Circuit), necesita solo 2 líneas para transmitir y recibir datos,estos son: para datos (SDA) y para la señal de reloj (SCL), esta forma de comunicaciónutiliza una sincronía con un tren de pulsos que viaja en la línea SCL, de tal manera que enlos flancos negativos se revisan los datos RX o TX, su velocidad de transmisión pueden serde 100Kbps en el modo estándar, 400Kbps en el modo rápido y 3.4Mbps en alta velocidad.Cada dispositivo conectado al bus tiene un código de dirección seleccionable mediantesoftware, por lo que existe un relación permanente Master/Slave. El master es el dispositivo

que inicia la transferencia en el bus y genera la señal de reloj (SCL), y el Slave es eldispositivo direccionado, sin embargo cada dispositivo reconocido por su código(dirección), puede operar como transmisor o receptor de datos, ya que la línea (SDA) es bidireccional.

COMUNICACIÓN I²C CON UNA MEMORIA SERIAL 24L04B

Esta es una practica muy básica para aprender sobre la interfaz I²C, consiste en guardardatos es las cuatro primeras direcciones de la memoria serial, estas son utilizadas para elalmacenamiento de datos que pueden ser necesitados más adelante. Para el caso de la

memoria 24LC04B tiene un espacio de memoria de 4Kbytes, luego de almacenarlos losvolveremos a leer y mostrar en la pantalla LCD.

Referencia Capacidad

Ciclos deE/W

BloquesInternos

Dirección Cantidaddedisposit.En el bus

Voltaje deoperaciónA0 A1 A2

24LC01B 1K bits 1000000 1 1-0 1-0 1-0 8 2.5-5.5V

24LC02B 2 K bits 1000000 1 1-0 1-0 1-0 8 2.5-5.5V

24LC04B 4 K bits 1000000 2 x 1-0 1-0 4 2.5-5.5V

24LC08B 8 K bits 1000000 4 x x 1-0 2 2.5-5.5V

24LC016B 16 K bits 1000000 8 x x x 1 2.5-5.5V

96

Page 106: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 106/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

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, la primera palabra transferida debecontener la dirección del esclavo seleccionado, en este caso se envía el código de lamemoria 1010 (este dato lo suministra el fabricante), luego la dirección del dispositivo (A2,A1, A0), y un bit 0 indicando que se debe escribir en la memoria (1 = lectura), luego de

todo esto la memoria, debe enviar un reconocimiento para informar al microcontroladorque recibió la información, este acuse de recibo se denomina ACK (acknowledge).

Luego el master lee el ACK, si vale 0 (enviado por el esclavo), el proceso de transferenciacontinúa. Si vale 1, esto indica que el circuito direccionado no valida la comunicación,entonces es Master genera un bit de stop para liberar el bus I²C, en la cual las líneas SDA ySCL pasan a un estado alto, vamos a suponer que el ACK es 0, entonces elmicrocontrolador envía los 8 bits correspondientes a la posición de memoria que se deseaescribir a leer, nuevamente la memoria envía un reconocimiento, finalmente se envía eldato a ser almacenado y se espera la respuesta de la memoria indicando que el dato llegó

correctamente, finalmente se debe enviar el bit de parada.

LA DECLARACIÓN I2CWRITE E I2CREAD

Estas declaraciones sirven para escribir y leer datos en un chip EEPROM serial usandointerfaz I2C de 2 hilos, funcionan en modo I2C Master y también puede ser utilizado para

comunicarse con otros dispositivos de interfaz I2C como sensores de temperatura, relojcalendarios, conversores A/D, etc.Los 7 hilos de control contienen el código de fabrica del chip y la selección del chip A2,A1, A0, el ultimo bit es una bandera interna que indica que si es un comando de lectura oescritura y no se debe usar. 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, estasdeben ir conectadas con resistencias de 4,7K Ohm pull-up, sin embargo existe una línea decomando que hace que no se necesite la resistencia Pull-up del SCL, esta se debe agregar alcomienzo del programa:

DEFINE I2C_SCLOUT 1 ; No es necesario resistencia pull-up en SCL (RELOJ)

También cabe indicar que existe algunas memorias que necesitan de un periodo de tiempo para poder ser grabadas, por lo que se adiciona un PAUSE 10 después de cada grabación.

97

Page 107: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 107/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Su escritura es de la siguiente manera

I2CWRITE portb.6, portb.7, %10100000, 0, [65] ; almacenar en la dirección 0 el dato 65PAUSE 10 ; pausa necesaria para completar la grabación

En nuestro caso vamos a escribir y leer en la memoria, por lo que el pin WP debe estarcolocado en estado bajo, una vez que se haya grabado se podrá colocar este pin en estadoalta para proteger la memoria de futuras escrituras, los datos almacenados en esta memoria permanecen aún si se le corta la alimentación al CI, el acceso a estos datos se lo realiza lasveces deseadas, recuerde que la memoria serial soporta 1000000 de ciclos de borrado yescritura, por lo tanto se debe tener cuidado de no ejecutar un programa que almacene una yotra vez el mismo dato.

98

Page 108: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 108/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

  define I2C_SCLOUT 1contro con %10100000 ; contro contiene valor constantePinSCL var portb.7PinSDA var portb.6dato var byte

inicio:lcdout $FE,1,"Grabando..." pause 1000i2cwrite pinsda, pinscl, contro, 0, ["H"]

 pause 10i2cwrite pinsda, pinscl, contro, 1, ["O"]

 pause 10i2cwrite pinsda, pinscl, contro, 2, ["L"]

 pause 10i2cwrite pinsda, pinscl, contro, 3, ["A"]

 pause 10lcdout $FE,1, "Leer memoria"

 pause 1000lcdout $FE,1leer:i2cread pinsda, pinscl, contro, 0, [dato]lcdout dato

 pause 10i2cread pinsda, pinscl, contro, 1, [dato]lcdout dato

 pause 10i2cread pinsda, pinscl, contro, 2, [dato]lcdout dato

 pause 10i2cread pinsda, pinscl, contro, 3, [dato]lcdout dato

 pause 10end

99

Page 109: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 109/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

COMUNICACIÓN I2C CON EL RELOJ CALENDARIODS1307

Como habíamos dicho anteriormente el bus I2C, permite l comunicación con algunosdispositivos como las memorias 24CXX, los procesadores de señal, codificadores de video,sensores de temperatura, RTC, etc. Haremos un proyecto ded lectura y escritura de un RTC(Real Time Clock), este proyecto es muy similar al anterior, pero con la diferencia que el byte de control es %11010000, (propio de fabrica), y su modo de grabación de datos es ensistema hexadecimal.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, pudiendo ser cambiado a gusto dellector. Estos datos serán grabados una sola vez, ya que se utilizara una condición de

 bandera, esta será almacenada en la memoria EEPROM del mismo PIC y se llamara(actualizado = 1), significa que ya corrió una vez el programa, por consiguiente si se lovuelve a prender el PIC, no guardara nuevamente los datos, esto tienen la finalidad de queos datos fecha y hora sean una sola vez igualados, para que cuando usted vuelva a encenderel PIC, muestre la hora actual.

10

Page 110: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 110/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

define i2c_sclout 1

cpin var portb.7dpin var portb.6segu var byteminu var bytehora var byte

diaS var bytediaF var bytemes var byteanio var bytedato var byteactualizado var biteeprom 0,[0]read 0, actualizadoif actualizado = 0 then grabarRTC

inicio:i2cread dpin,cpin,%11010000,0,[segu]

i2cread dpin,cpin,%11010000,1,[minu]i2cread dpin,cpin,%11010000,2,[hora]i2cread dpin,cpin,%11010000,3,[dias]i2cread dpin,cpin,%11010000,4,[diaf]i2cread dpin,cpin,%11010000,5,[mes]i2cread dpin,cpin,%11010000,6,[anio]lcdout $fe,1,hex2 hora,":",hex2 minu,":",hex2 segu

lcdout $fe,$C0if 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,$c5,hex2 diaf,"/"lcdout $fe,$cb,"/20", hex2 anio

lcdout $fe,$c8if 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"

10

Page 111: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 111/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Como podrán observar la batería es la que mantiene en funcionamiento al RTC cuando nohay alimentación DC, por tal razón cuando apagamos todo el circuito, y luego lo volvemosa prender, notamos que el reloj no se ha desigualado, pero si retiramos la batería, el reloj sedetiene cuando lo cortamos la alimentación del circuito, y cuando se lo vuelve a conectar,sigue corriendo el tiempo pero continua en el segundo que se quedo en el instante que se lecortó la alimentación.El transistor sirve para encender el led con la fuente que alimenta el circuito y se apagacuando deja de alimentarse el circuito, por lo que la batería solo alimenta al CI DS1307mientras no hay alimentación en el pin VCC.Se debe entender que el PIC esta leyendo los datos del RTC cada 0,5 segundos, cuando enrealidad debería leer cada segundo. Para mejorar este programa podemos utilizar unainterrupción por cambio de estado en el pin B.0, aquí conectamos la señal SQW del RTC

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 500goto inicio

grabarRTC:i2cwrite dpin,cpin,%11010000,0,[$00] ; segundos

 pause 10i2cwrite dpin,cpin,%11010000,1,[$01] ; minutos

 pause 10i2cwrite dpin,cpin,%11010000,2,[$09] ; horas

 pause 10i2cwrite dpin,cpin,%11010000,3,[$4] ; dias Miercoles D=1, L=2

 pause 10i2cwrite dpin,cpin,%11010000,4,[$13] ; Dia del mes

 pause 10i2cwrite dpin,cpin,%11010000,5,[$1] ; Mes

 pause 10i2cwrite dpin,cpin,%11010000,6,[$10] ; año

 pause 10i2cwrite dpin,cpin,%11010000,7,[$10] ; cotrol para encender el led cada 1 segundo

 pause 10write 0,1goto inicioend

102

Page 112: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 112/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 para que el PIC ejecute una subrutina de interrupción y lea los datos del RTC exactamentecuando el RTC le diga que transcurrido un segundo, con esto tenemos al PIC disponible para otras aplicaciones y no se quedaría esclavizado al RTC leyendo datos 2 veces porsegundo.

UTILIZANDO LA INTERRUPCIÓN DEL PUERTO B.0

Existen aplicaciones en donde un evento es muy importante atenderlo, por ejemplo cuandoalgún dispositivo intenta comunicarse con el PIC, en un sistema de seguridad en donde unazona es mas importante que las demás zonas.Como practica para poder entender la interrupción en el cambio de estado del Portb.0,haremos un parpadeo de un led rojo cada 200mls, y cuando exista una interrupción externa

(pulsador), deja de ejecutarse el programa y atiende un Handler (subrutina) el cual contieneun programa en donde se enciende un led verde por 1 segundo, una vez terminado el programa de interrupción, retorna al programa principal en el lugar mismo donde ocurrió lainterrupción.

Nota: También existen otras fuentes de interrupción a mas del puerto B.0, como el cambiode estado del puerto B.4 al B.7, los TIMER0, 1, por lo que recomienda leer las hojas dedatos del PIC16F628A.

LAS DECLARACIONES ON INTERRUPT, DISABLE, RESUME Y ENABLE: todas

estas declaraciones sirve para ejecutar un handler de interrupción.

ON INTERRUPT GOTO prog2; quiere decir en caso de darse una interrupción suspenderel programa actual e ir a prog2.

DISABLE:  sirve para deshabilitar la interrupción, en caso ded que no deseemos queatienda la interrupción.

RESUME: equivale al RETURN de un GOSUB, en donde retorna a la línea del programa

en donde ocurrió la interrupción.

ENABLE:  quiere decir habilitar nuevemente la interrupción, después de esto todas lasinterrupciones, son atendidas.

10

Page 113: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 113/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

; programa para manejar una; interrupcion por el puerto B.0led var portb.1led2 var portb.2; en caso de existir una interrupcion ai averdeon interrupt goto verdeintcon = %10010000

 prog:high led

 pause 200low led

 pause 200goto progdisableverde:high led2

 pause 2000low led2; habilita la interrupcion B.0intcon =%10010000; retorna al programa principalresume; habilita las interrupcionesenableend

104

Page 114: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 114/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

como pudieron observar, en el momento que se presiona el pulsador, automáticamente saledel programa y atiende el handler de interrupción llamado verde, finalizado esto elRESUME lo retorna al lugar en donde ocurrió la interrupción, sin embargo se puede ponerRESUME  prog3, esta vez va a la subrutina prog3 e ignora el retorno al lugar de lainterrupción, otra recomendación importante es que si queremos atender rápidamente una

interrupción, no debemos poner PAUSES muy largos como por ejemplo PAUSE 10000,equivalente a 10 segundos, si se da la interrupción en la mitad del pause (5 segundos),deberá esperar a que termine el pause para ir al handler de interrupción, es decir 5 segundosrestantes, lo mejor para estos casos es encerrar el pause en lazos FOR…NEXT, de lasiguiente manera:

FOR x=1 TO 100PAUSE 100NEXT

Por lo que la atención al handler de interrupción será en 100mls después de la interrupción.Cabe también indicar que en esta practica la interrupción se da solo cuando existe uncambio de estado de 0 a 1 en el puerto B.0, por lo que se habrá dado cuenta que si semantiene pulsado la tecla, no se genera la interrupción, sino cuando soltamos, para que lainterrupción se genere en el flanco de bajada, es decir cambio de estado de 1 a 0, debemosadicionar después de INTCON =%10010000, la siguiente línea para modificar el bitINTEDG del registro OPTION.

OPTION_REG.6 = 0  ; Modifica el bit 6 del registro OPTION, activa en flanco de

 bajada a B.0

UTILIZANDO LA INTERRUPCIÓN DEL PUERTO B.4 AL B.7

Para trabajar con la interrupción por cambio de estado del puerto B.4 al B.7, podemosutilizar el programa anterior, solamente cambiando las 2 lineas que dicen INTCON=%10010000 por  INTCON =%10001000, que quiere decir habilitar la interrupción de los puertos B.4 al B.7, para mayor información revise en los data sheets el registro INTCON.Para el diagrama de conexión debemos colocar 4 pulsadores en los puertos B.4 al B.7, no sedebe dejar sueltos estos pines ya que produce errores y salta al handler de interrupción encualquier momento. Se puede desconectar el pulsador del puerto B.0, ya que no se estáatendiendo esta interrupción.

105

Page 115: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 115/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

RELOJ DIGITAL UTILIZANDO LA INTERRUPCIÓN DEL TMR0

El TMR0, es una valiosa herramienta que disponen los PIC, para el caso del PIC16F628A,dispone de 3 TIMERS, 1 de 16 bits (TMR1) y 2 de 8 bits, los TMR0 y TMR2, lacalibración para estos contadores, se dan en el registro OPTION, aquí se puede seleccionar

si el incremento es con flanco de subida o de bajada y si la fuente es externa (PINA4/TOCK1) o interna (Oscilador), en nuestro caso será interna. Cuando el conteo deltemporizador TMR0, llega a 256 y pasa a 0, se genera una interrupción, para que estosuceda se debe habilitar el registro INTCON bit 7 (GIE = 1), y también el bit 5 (TOIE =1), quedando así:

INTCON =%10100000 

En el registro OPTION se debe definir la rata del preescalador, se debe poner:

OPTION_REG =%01010110  ; preescalador 1:128, asignando al TMR0 y ciclo dereloj interno.

Para poder entender mejor estos registros y sus funciones tenga a la mano la hoja de datos.

La practica a realizarse consiste en ejecutar una interrupción, cada que el contador delTMR0, llega a 256, pero no empieza desde 0 ya que se le asigno un valor inicial de 4, porlo que el tiempo seria 128 x 252 = 32256 Us y esto repito 31 veces, consiguiendoacercarnos mas al tiempo de 1 segundo (32256 Us x 31 = 999936 Us), luego de esto se

incrementa la variable según = según + 1 y se actualiza el LCD.El proyecto dispone de dos pulsadores para poder igualar la hora, uno aumenta los minutosy otro aumenta las horas, la gran desventaja de este proyecto es que si se corta laalimentación del circuito, se resetea la hora (12:00:00), lo que no sucede con un RTC.

106

Page 116: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 116/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

; uso cristal externo@ device XT_OSChora var byteminut var bytesegun var bytecuenta var byteactual var byte

x var bytehora = 12minut = 0segun = 0cuenta = 0actual = 1option_reg =%1010110intcon =%10100000on interrupt goto interrupinicio:if portb.7 = 0 then incminif portb.6 = 0 then inchr

actualiza : if actual = 1 thenlcdout $FE,1, " ", dec2 hora, ":", dec2minut, ":" ,dec2 segunactual = 0endif

107

Page 117: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 117/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

  goto inicio;**************** para igualar lahora *************incmin : minut = minut + 1if minut >=60 then minut = 0goto pausainchr : hora = hora + 1if hora >=24 then hora = 0goto pausa

 pausa: for x = 1 to 20 pause 10next xactual = 1goto actualiza;**** Handler de interrupciones paraincrementar contador ****disable

interrup:cuenta = cuenta + 1tmr0 = 4if cuenta < 31 then resetcuenta = 0segun = segun + 1if segun >= 60 thensegun = 0minut = minut + 1if minut >=60 thenminut = 0hora = hora + 1if hora >=24 thenhora = 0endifendifendifactual = 1reset:; resetea la bandera de interrupción delTMR0intcon.2 = 0resume

end 

108

Page 118: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 118/136

Page 119: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 119/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Esquema de conexión de un PIC16F877A para medir los 3 voltajes que ingresan por el divisor de voltaje de cada potenciómetro.

define lcd_dreg portbdefine lcd_dbit 0define lcd_rsreg portb

define lcd_rsbit 5define lcd_ereg portbdefine lcd_ebit 4

 p1 var byte p2 var byte p3 var byte; convierte porta.0,1,3 en conversores A/Dadcon1 =%100inicio:

 pause 300 poten1:; activa canal 0 a Fosc/8

adcon0 =%1000001gosub medir

 p1 = adresh poten2:; activa canal 1 a Fosc/8adcon0 =%1001001gosub medir

 p1 = adresh poten2:; activa canal 1 a Fosc/8

adcon0 =%1001001gosub medir p2 = adresh poten3:; activa canal 3 a Fosc/8adcon0 =%1011001gosub medir

 p3 = adreshlcdout $fe,1,"Pot1 Pot2 Pot3"lcdout $fe,$c1,#p1lcdout $fe,$c6,#p2lcdout $fe,$cb,#p3

goto iniciomedir:

 pauseus 50adcon0.2 = 1 ; INICIAR CONVERSIÓN

 pauseus 50RETURNEND

110

Page 120: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 120/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

TERMÓMETRO DIGITAL CON EL PIC 16F877A

Para esta practica necesitaremos el sensor de temperatura LM35, este dispositivo presentaen su pin OUT una variación de 10 mV por grado centígrado, su alimentación puede ser de

4 a 30 voltios, y su rango de temperatura a censar entre -5 grados centígrados hasta 150grados centígrados.Su funcionamiento es muy simple, primero el voltaje del pin OUT dedl LM35, lo vamos aduplicar a través de un juego de amplificadores operacionales (LM358), el cual estaconfigurado como amplificador no inversor, la salida del A.O LM358, lo conectamos al puerto A.0, el cual esta configurado como conversor A/D a 8 bits, este dato se almacena enla variable dato, el cual lo dividimos para 2, con la finalidad de estabilizar la señal queingresa del pin OUT del LM35.

Si la temperatura permanece entre 22 y 26 grados centígrados., ningún de los relés se

activan, si la temperatura no se encuentra entre estos 2 rangos, se activa el relé que lecorresponde, sea para calentar o enfriar el ambiente, si deseamos modificar los rangos detemperatura, presionamos el pulsador E, con los otros 2 botones aumentamos odisminuimos la temperatura mínima a comparar, y una vez que estemos de acuerdo presionamos la tecla E nuevemente, luego nos pide programar la temperatura máxima, procedemos igual que el caso anterior y cuando presionamos la tecla E, parpadeara tresveces el led, indicando que los nuevos valores ya fueron guardados en la memoria novolátil.

111

Page 121: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 121/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

112

Page 122: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 122/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 define lcd_dreg portbdefine lcd_dbit 0define lcd_rsreg portbdefine lcd_rsbit 5define lcd_ereg portbdefine lcd_ebit 4

; fije numero de bits del resultadefine ADC_BITS 8; fije el CLOCK (rc = 3)define ADC_CLOCK 3; fije el tiempo de muestreo en Udefine ADC_SAMPLEUS 60trisa = %1adcon1 =%00001110dato var bytetempbaj var bytetempalt var bytex var byte

releF var portd.2releC var portd.3led var portd.4enter var portd.5

 bsubir var portd.6 bbajar var portd.7eeprom 0,[22,26]inicio:for x = 1 to 3high led

 pause 200low led

 pause 200nextread 0, tempbajread 1, tempaltsensar:; leer el canal 0 (A0) y guardaradcin 0, datolcdout $fe,1,"T.mi T.actu T.ma"dato = dato/2lcdout $fe,$c6,dec dato, "oC"lcdout $fe,$c0,dec tempbaj, "oC"

lcdout $fe,$cc,dec tempalt, "oC"for x = 1 to 50if enter = 0 then grabar1a

 pause 10next

nextif dato < tempbaj then calentarif dato > tempalt then enfriarlow relec : low relefgoto sensarcalentar:

high relec : low relefgoto sensarenfriar:high relef : low relecgoto sensargrabar1a:gosub soltargrabar1:lcdout $fe,1,"Programar Temp"lcdout $fe,$c0,"baja=",dec tempba

 pause 100if bbajar = 0 then restar1

if bsubir = 0 then sumar1if enter = 0 then grabarAgoto grabar1restar1:gosub soltarif tempbaj < 1 then grabar1tempbaj = tempbaj - 1goto grabar1sumar1:gosub soltarif tempbaj > 40 then grabar1tempbaj = tempbaj + 1goto grabar1grabarA:gosub soltarwrite 0, tempbajgrabar2:lcdout $fe,1,"Programar Temp"lcdout $fe,$c0,"alta=",dec tempal

 pause 100if bbajar = 0 then restar2if bsubir = 0 then sumar2if enter = 0 then grabarB

goto grabar2restar2:gosub soltarif tempbaj < 5 then grabar2tempbaj = tempbaj + 1

113

Page 123: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 123/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

qgoto grabar2sumar2:gosub soltarif tempbaj > 50 then grabar2tempalt = tempalt + 1goto grabar2

grabarB:gosub soltarwrite 1, tempaltgoto iniciosoltar:high led

 pause 150low ledsoltar2:if bbajar = 0 then soltar2if bsubir = 0 then soltar2if enter = 0 then soltar2

 pause 100returnend

114

Page 124: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 124/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Page 125: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 125/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

PROGRAMADOR DE PIC SERIAL

A continuación les proponemos un programador muy económico y eficaz para que puedangrabar sus archivos (*.Hex) compilados hacia el pic

Lista de materiales ----------------------------------------------------------------------

Microcontroladores PICProgramació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 otrode 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 elque 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 laresistencia 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 mm1 zócalo 18 pines1 zócalo de 8 pines1 zócalo de 28 pines1 zócalo de 40 pines cortado ver fotografía2 leds de 5mm 1 rojo y 1 verde4 diodos 1N4148

11

Page 126: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 126/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

1 diodo zener de 5.1 voltios 1 vatio1 diodo zener de 8,2 voltios 1 vatio2 transistores 2N39041 metro cable de 4 hilos multifilar1 conector db9 hembra con su respectivo cajetín

2 capacitores de 100 uF a 25 v.1 resistencia de 470 ohm a ¼ w1 resistencia de 10K a ¼ w1 resistencia de 1K a ¼ w1 resistencia de 2,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).

Impreso

Pictórico

11

Page 127: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 127/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

Diseño del cable

Proyecto final ya armado

11

Page 128: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 128/136

Page 129: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 129/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

1 metro cable de 7 hilos multifilar1 conector db9 hembra con su respectivo cajetín1 conector db25 macho con su respectivo cajetín1 resistencia de 220 Ohm a ½ w1 resistencia de 470 Ohm a ½ w

1 resistencia de 470 ohm a ¼ w2 resistencias de 1K a ¼ w9 resistencias de 4,7K a ¼ w1 adaptador de 14 a 18 voltios (medir con voltímetro) y mínimo de 500 mA.

Impreso

El impreso no esta en tamaño real

11

Page 130: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 130/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Pictórico

Diseño del cable

120

Page 131: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 131/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 Zócalos

Proyecto final

12

Page 132: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 132/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 PROGRAMADOR DE PIC´S P. PARALELO

Para instalar este grabador de PIC´S, únicamente coloque el conector DB25 en un puerto paralelo disponible del computador, alimente el circuito con una fuente de 14 a 18 voltios

DC.

INSTALACIÓN DEL SOFTWARE:

En la página de internet WWW.IC-PROG.COM  (Figura 1) se puede descargargratuitamente el software programador de PIC´S, Icprog 1.05D, este software funcionamuy bien con este tipo de grabadores y dispone además de una gran variedad demicrocontroladores.

Una vez conseguido el programa descomprímalo y ejecute icprog.exe. En la primera vez le pedirá que ajuste el grabador, Seleccione el programador PROPIC 2 (Figura 2), y marqueMCLR y VCC invertidos, marque el puerto disponible LPT1 o LPT2. Luego abra susarchivos .hex y programe sus PIC´S, después de que los 2 LEDS indicadores se apaguen,ya está grabado el microcontrolador.NOTA:Si usted es usuario de Windows XP, es necesario habilitar un driver para sucorrecto funcionamiento, para esto es necesario descargar de la página WWW.IC-PROG.COM  el archivo IC-prog NT/2000.driver, una vez descomprimido el archivo,tendrá un archivo icprog.sys, el cual se debe mover dentro de la carpeta Icprog105D, juntoal archivo ejecutable icprog.exe, ahora que ya se tiene el driver se lo debe activar enSettings/Options, (ver Figura 3 y 4).

Figura 1 Figura 2

122

Page 133: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 133/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

En esta nueva pantalla, se puede cambiar el lenguaje, lo cual es aconsejable realizarlo,luego se presiona OK , y en ese mismo instante observarán que todo cambia a español(Figura 3), bien ahora vuelvan a abrir Ajustes (antes llamado Settings) y luego den un clicen Opciones, esta vez de un clic en miscelánea  para habilitar el driver de WindowsNT/2000/XP, una vez que se marque el casillero se presiona OK y listo.

Figura 3 Figura 4

UBICACIONES: 

Más información escribir a: [email protected]  o llamar a los telfs. 2611 447 09613 6564Quito - Ecuador

12

Page 134: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 134/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

 

Page 135: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 135/136

Octavo Electrónica 2009 – 2010 FISEI - UTA 

        F

        I        S

        E

        I

AGRADECIMIENTOS

Este manual, esta basado en el libro del SEÑOR CARLOS REYES, una gran persona, quecomo dice en su libro, ya planto un arbolito y colaboro con el conocimiento de aquellos que

somos electrónicos o de muchos que por hobby realizan proyectos con microcontroladoresPIC.Todos los proyectos fueron probados por el autor principal y también nosotros hemosarmado y probado estos circuitos, los puedo decir que funcionan súper bien.Muchas gracias señor Carlos Reyes por dar a los estudiantes este gran libro, dos o tresveces estuve en contacto con usted cuando me iniciaba en el mundo de los PIC, gracias allibro he aprendido mucho, con mi curso vamos a formar el primer club de robótica de laFacultad de Ingeniería en Sistemas Electrónica e Industrial de la Universidad Técnicade Ambato, esto no seria posible sin la enseñanza de este gran MAESTRO.

Este pequeño manual al igual que el manual de AVR, se realizo para cumplir un deber deuna materia, por ende el material no es de nuestra tutoría, todo el intelecto es del señorantes mencionado.

“Un ingeniero no es una copia, es original y se atreve a cambiar una realidad, no

importa el tiempo o el espacio, todo es posible mientras crea que es así… “ Anonimo 

Page 136: Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e Industrial F I S E I

8/16/2019 Octavo Electrónica 2009 2010. Universidad Técnica de Ambato. Facultad de Ingeniería en. Sistemas Electrónica e I…

http://slidepdf.com/reader/full/octavo-electronica-2009-2010-universidad-tecnica-de-ambato-facultad-de 136/136