<body> <p align="justify">Este libro introduce al lector en el dise&ntilde;o de proyectos de circuitos electr&oacute;nicos con el popular microcontrolador PIC16F84A. Para lograrlo se muestran un elevado n&uacute;mero de ejercicios resueltos que el lector podr&aacute; desarrollar f&aacute;cilmente.</p> <p align="justify"> Tanto los aficionados a la electr&oacute;nica con inquietud para montar proyectos con microcontroladores, como los estudiantes de Formaci&oacute;n Profesional de Electr&oacute;nica y los estudiantes de Ingenier&iacute;a Industrial, Telecomunicaciones o Inform&aacute;tica, encontrar&aacute;n de gran utilidad este libro para la realizaci&oacute;n de todo tipo de proyectos.</p> <p align="justify"> La obra es eminentemente pr&aacute;ctica ya que contiene m&aacute;s de 160 ejercicios resueltos integramente con programas y esquemas, siendo muchos de ellos proyectos cl&aacute;sicos, como term&oacute;metros, relojes, calendarios, cerraduras electr&oacute;nicas, control de displays, termostatos, temporizadores, alarmas, sirenas, comunicaci&oacute;n con el ordenador, juegos, control de motores, microrobots, etc.</p> <p align="justify"> El software utilizado es de libre distribuci&oacute;n y los circuitos emplean componentes que pueden adquirirse f&aacute;cilmente en cualquier tienda de componentes electr&oacute;nicos. Para el desarrollo de cualquiera de los proyectos planteados no se precisa de grandes medios materiales, por lo que realizarlo resulta sencillo, econ&oacute;mico y ameno. </p> <p> En esta Web puedes realizar consultas sobre el libro, descargar actualizaciones de los proyectos y apuntes de conocimientos previos necesarios.</p> <p>&Iacute;ndice</p> <p>El contenido del libro se distribuye en los siguientes:</p> <p>CAPÍTULOS:</p><p> 1.&nbsp; MICROCONTROLADOR PIC16F84<br> 2.&nbsp; PERIFÉRICOS BÁSICOS<br> 3.&nbsp; GRABACIÓN DE MICROCONTROLADORES PIC<br> 4.&nbsp; ORGANIZACIÓN DE LA MEMORIA<br> 5.&nbsp; ARQUITECTURA INTERNA<br> 6.&nbsp; ENSAMBLADOR<br> 7.&nbsp; MPLAB<br> 8.&nbsp; PROGRAMACIÓN ELEMENTAL<br> 9.&nbsp; SALTOS<br> 10. SUBRUTINAS<br> 11. MANEJO DE TABLAS<br> 12. SUBRUTINAS DE RETARDO<br> 13. LCD<br> 14. EEPROM DE DATOS<br> 15. TIMER 0<br> 16. OTROS RECURSOS<br> 17. INTERRUPCIONES. LECTURA DE ENTRADAS<br> 18. INTERRUPCIÓN POR DESBORDAMIENTO DEL TIMER 0<br> 19. TECLADO MATRICIAL<br> 20. COMUNICACIÓN CON ORDENADOR<br> 21. BUS I2C<br> 22. 24LC256, MEMORIA EEPROM EN BUS I2C<br> 23. DS1624, TERMÓMETRO EN BUS I2C<br> 24. DS1307, RELOJ CALENDARIO EN BUS I2C<br> 25. SAA1064, CONTROLADOR DE DISPLAY<br> 26. PCF8574, EXPANSOR DE BUS I2C<br> 27. PCF8591, ADC Y DAC EN BUS I2C<br> 28. BUS DE UNA LÍNEA<br> 29. MOTORES DE CORRIENTE CONTINUA<br> 30. MOTORES PASO A PASO<br> 31. SERVOMOTORES DE RADIOCONTROL<br> 32. SENSORES PARA MICROROBÓTICA<br> 33. CONSTRUCCIÓN DE UN MICROROBOT<br> </p> <p>APÉNDICES</p> <p> A. CARACTERÍSTICAS TÉCNICAS DEL PIC16F84A<br> B. REPERTORIO DE INSTRUCCIONES<br> C. CONSTANTES Y OPERADORES<br> D. PRINCIPALES DIRECTIVAS DEL ENSAMBLADOR MPASM<br> E. REGISTROS ESPECIALES<br> F. GRABADOR TE20-SE<br> G. CÓDIGO ASCII <br> H. DIRECCIONES DE INTERNET<br> I. CONTENIDO DEL CD-ROM<br></p> <p> El contenido por capítulo es el siguiente:</p> <p> Capítulo 1: MICROCONTROLADOR PIC16F84<br> 1.1 Microcontroladores PIC<br> 1.2 Alimentación de un PIC16F84<br> 1.3 Puertos de entrada/salida <br> 1.4 Oscilador<br> 1.5 Reset<br> 1.6 Montaje del entrenador<br> <br> Capítulo 2: PERIFÉRICOS BÁSICOS<br> 2.1 Diodo LED<br> 2.2 Interruptores y pulsadores<br> 2.3 Entradas digitales con optoacopladores 4N25<br> 2.4 Display de siete segmentos<br> 2.5 Controlando cargas a 230 V<br> 2.5.1 Control con rel&eacute;. Driver ULN2003<br> 2.5.2 Control con rel&eacute; miniatura DIL<br> 2.5.3 Control mediante fototriac MOC3041<br> 2.5.4 Control de potencia con Triac</font> 2.6 Zumbador<br> <br> Capítulo 3: GRABACIÓN DE MICROCONTROLADORES PIC<br> 3.1 Grabación de un microcontrolador<br> 3.2 Grabadores<br> 3.3 Software de grabación IC-Prog<br> 3.4 Grabación con medios reducidos<br> 3.5 Proceso de grabación<br> 3.6 Buffer de almacenamiento de programas<br> 3.7 IC-Prog trabajando bajo Windows 2000 o XP<br> 3.8 Errores frecuentes en la programación<br> 3.9 Prácticas de laboratorio<br> <br> Capítulo 4: ORGANIZACIÓN DE LA MEMORIA<br> 4.1 Arquitectura interna del PIC16F84<br> 4.2 Organización de la memoria<br> 4.3 Memoria de programa<br> 4.4 El contador de programa (PC)<br> 4.5 Memoria de datos<br> 4.6 Diferencias entre el PIC16F84A y el PIC16C84<br> 4.7 Registros del SFR<br> 4.8 Registros relacionados con los puertos<br> 4.9 Registro PCL y contador de programa<br> 4.10 Registro de trabajo W<br> 4.11 Registro de estado o STATUS<br> 4.12 Estado de los registros tras un reset<br> 4.13 Registro de configuración<br> <br> Capítulo 5: ARQUITECTURA INTERNA<br> 5.1 Microprocesador y Microcontrolador<br> 5.2 Arquitectura de Von Neumann<br> 5.3 Arquitectura Harvard<br> 5.4 Procesador segmentado<br> 5.5 Procesador RISC<br> 5.6 Arquitectura ortogonal<br> 5.7 Puertos<br> 5.8 Puerto A<br> 5.9 Puerto B<br> <br> Capítulo 6: ENSAMBLADOR<br> 6.1 Lenguaje máquina<br> 6.2 Lenguaje ensamblador<br> 6.3 Programa ensamblador<br> 6.4 Ficheros resultantes del ensamblado<br> 6.5 El código fuente<br> 6.6 Constantes numéricas y alfanuméricas<br> 6.7 Operadores aritméticos<br> 6.8 El repertorio de instrucciones<br> 6.9 Instrucciones de carga<br> 6.10 Instrucciones de bit<br> 6.11 Instrucción &#8220;goto k&#8221;<br> 6.12 Configurar las líneas de los puertos<br> 6.13 Directivas<br> <br> Capítulo 7: MPLAB<br> 7.1 Entorno MPLAB<br> 7.2 Primeros pasos con MPLAB IDE<br> 7.3 Ensamblado del programa<br> 7.4 Fichero hexadecimal resultante<br> 7.5 Ventanas de visualización<br> 7.6 Simulación básica<br> 7.7 Simulación mediante Breakpoints y Traza<br> 7.8 Simulación de entradas<br> 7.9 Grabación con el archivo hexadecimal<br> 7.10 Fichero listable<br> 7.11 Prácticas de laboratorio<br> <br> Capítulo 8: PROGRAMACIÓN ELEMENTAL<br> 8.2 Instrucciones de resta<br> 8.3 Incrementar y decrementar<br> 8.4 Instrucciones lógicas<br> 8.5 Instrucción &#8220;sleep&#8221;<br> 8.6 Algunas instrucciones útiles<br> 8.7 Herramientas<br> 8.8 Proyectos con medios reducidos<br> 8.9 Desarrollo de proyectos sencillos<br> 8.10 Prácticas de laboratorio<br> <br> Capítulo 9: SALTOS<br> 9.1 Saltos condicionales<br> 9.2 Saltos en función de un bit<br> 9.3 Saltos en función de un registro<br> 9.4 Comparación de registros<br> 9.5 Lazos o bucles<br> 9.6 Programación y algoritmo<br> 9.7 Diagramas de flujo<br> 9.8 Más directivas importantes<br> 9.9 Conversión de binario natural a BCD<br> 9.10 Salto indexado<br> 9.11 Salto indexado descontrolado<br> 9.12 Prácticas de laboratorio<br> <br> Capítulo 10: SUBRUTINAS<br> 10.1 Subrutinas<br> 10.2 Subrutinas anidadas<br> 10.3 La pila<br> 10.4 Instrucciones &#8220;call&#8221; y &#8220;return&#8221;<br> 10.5 Ejemplo de utilización de las subrutinas<br> 10.6 Ventajas de las subrutinas<br> 10.7 Librería de subrutinas<br> 10.8 Directiva &#8220;INCLUDE&#8221;<br> 10.9 Simulación de subrutinas en MPLAB<br> 10.10 Programación estructurada<br> 10.11 Prácticas de laboratorio<br> <br> Capítulo 11: MANEJO DE TABLAS<br> 11.1 Tablas de datos en memoria de programa<br> 11.2 Más directivas<br> 11.3 Gobierno de un display de 7 segmentos<br> 11.4 Prácticas de laboratorio<br> <br> Capítulo 12: SUBRUTINAS DE RETARDO<br> 12.1 Ciclo máquina<br> 12.2 Medir tiempos con MPLAB<br> 12.3 Instrucción &#8220;nop&#8221;<br> 12.4 Retardos mediante lazo simple<br> 12.5 Retardos mediante lazos anidados<br> 12.6 Librería con subrutinas de retardos<br> 12.7 Rebotes en los pulsadores<br> 12.8 Prácticas de laboratorio<br> <br> Capítulo 13: LCD<br> 13.1 Visualizador LCD<br> 13.2 Patillaje<br> 13.3 DDRAM<br> 13.4 Caracteres definidos en la CGROM<br> 13.5 Modos de funcionamiento<br> 13.6 Comandos de control<br> 13.7 Conexión de LCD mediante 4 bits<br> 13.8 Librería de subrutinas<br> 13.9 Visualización de caracteres<br> 13.10 Visualización de valores numéricos<br> 13.11 Conexión de LCD mediante 8 bits<br> 13.12 Visualización de mensajes fijos<br> 13.13 Visualización de mensajes en movimiento<br> 13.14 Prácticas de laboratorio<br> <br> Capítulo 14: EEPROM DE DATOS<br> 14.1 Memoria EEPROM de datos<br> 14.2 Registro EECON1<br> 14.3 Librería de subrutinas<br> 14.4 Lectura de la EEPROM de datos<br> 14.5 Escritura en la EEPROM de datos<br> 14.6 Directiva &#8220;DE&#8221;<br> 14.7 Ventana &#8220;EEPROM&#8221; en el MPLAB<br> 14.8 Programa ejemplo<br> 14.9 Bloquear un circuito<br> 14.10 Prácticas de laboratorio<br> <br> Capítulo 15: TIMER 0<br> 15.1 El Timer 0 (TMR0)<br> 15.2 TMR0 como contador<br> 15.3 TMR0 como temporizador<br> 15.4 El TMR0 es un registro del SFR<br> 15.5 Divisor de frecuencia (Prescaler)<br> 15.6 Bits de configuración del TMR0<br> 15.7 Ejemplo del TMR0 como contador<br> 15.8 Ejemplo del TMR0 como temporizador<br> 15.9 Prácticas de laboratorio<br> <br> Capítulo 16: OTROS RECURSOS<br> 16.1 El Watchdog (WDT)<br> 16.2 Modo de bajo consumo o &#8220;SLEEP&#8221;<br> 16.3 Direccionamiento indirecto<br> 16.4 Macros<br> 16.5 Resistencias de Pull-Up del Puerto B<br> 16.6 Prácticas de laboratorio<br> <br> Capítulo 17: INTERRUPCIONES. LECTURA DE ENTRADAS<br> 17.1 Técnica Polling<br> 17.2 Interrupciones<br> 17.3 Funcionamiento de una interrupción<br> 17.4 Flags relacionados con interrupciones<br> 17.5 Instrucción &#8220;retfie&#8221;<br> 17.6 Interrupción externa INT<br> 17.7 Registros alterados por la interrupción<br> 17.8 Averiguar la causa de la interrupción<br> 17.9 Fases de una interrupción<br> 17.10 Interrupción RBI<br> 17.11 Prácticas de laboratorio<br> <br> Capítulo 18: INTERRUPCIÓN POR DESBORDAMIENTO DEL TIMER 0<br> 18.1 Interrupción producida por el TMR0<br> 18.2 Temporizaciones exactas<br> 18.3 Temporizaciones largas<br> 18.4 Temporizador digital<br> 18.5 Prácticas de laboratorio<br> <br> Capítulo 19: TECLADO MATRICIAL<br> 19.1 Teclado hexadecimal<br> 19.2 Conexión de un teclado a un PIC16F84<br> 19.3 Algoritmo de programación<br> 19.4 Librería de subrutinas<br> 19.5 Ejemplo de aplicación<br> 19.6 Cerradura electrónica<br> 19.7 Prácticas de laboratorio<br> <br> Capítulo 20: COMUNICACIÓN CON ORDENADOR<br> 20.1 Puerto serie RS232<br> 20.2 El Baudio<br> 20.3 Niveles lógicos RS232<br> 20.4 Formato de un byte<br> 20.5 MAX232<br> 20.6 Conexión puerto RS232 y PIC16F84<br> 20.7 Librería de subrutinas para RS232<br> 20.8 El HyperTerminal<br> 20.9 Programa ejemplo<br> 20.10 Librería RS232_MEN.INC<br> 20.11 Sistema de monitorización<br> 20.12 Sistema de gobierno desde ordenador<br> 20.13 Prácticas de laboratorio<br> <br> Capítulo 21: BUS I2C<br> 21.1 El bus I2C<br> 21.2 Hardware del bus I2C<br> 21.3 Transferencia de un bit por la línea SDA<br> 21.4 Condiciones de START y STOP<br> 21.5 Transferencia de datos<br> 21.6 Formato de una transferencia de datos<br> 21.7 Tipos de formatos de transferencia<br> 21.8 Temporización<br> 21.9 Conexión de bus I2C a un PIC16F84<br> 21.10 Librería de subrutinas para bus I2C<br> 21.11 Dispositivos I2C<br> <br> Capítulo 22: 24LC256, MEMORIA EEPROM EN BUS I2C<br> 22.1 Memoria EEPROM serie 24LC256<br> 22.2 Paginación de la memoria 24LC256<br> 22.3 Direccionamiento como esclavo<br> 22.4 Conexión de una 24LC256 a un PIC16F84<br> 22.5 Escritura en la memoria 24LC256<br> 22.6 Lectura de la memoria 24LC256<br> 22.7 Librería de subrutinas<br> 22.8 Ejemplo típico de aplicación<br> 22.9 Grabación de datos mediante el IC-Prog<br> 22.10 Visualización de mensajes largos<br> 22.11 Control de muchos mensajes<br> <br> Capítulo 23: DS1624, TERMÓMETRO EN BUS I2C<br> 23.1 El sensor de temperatura DS1624<br> 23.2 Direccionamiento como esclavo<br> 23.3 Lectura de la temperatura<br> 23.4 Registro de control<br> 23.5 Comandos<br> 23.6 Librería de subrutinas<br> 23.7 Termómetro digital<br> <br> Capítulo 24: DS1307, RELOJ CALENDARIO EN BUS I2C<br> 24.1 El reloj-calendario DS1307<br> 24.2 Conexión de un DS1307 a un PIC16F84<br> 24.3 Registros del DS1307<br> 24.4 Registro de control<br> 24.5 Escritura en el DS1307<br> 24.6 Lectura del DS1307<br> 24.7 Librería de subrutinas<br> 24.8 Programa del reloj calendario digital<br> <br> Capítulo 25: SAA1064, CONTROLADOR DE DISPLAY<br> 25.1 SAA1064, controlador de display<br> 25.2 Circuito típico para modo estático<br> 25.3 Circuito típico para modo dinámico<br> 25.4 Direccionamiento como esclavo<br> 25.5 Registros internos<br> 25.6 Escritura en el SAA1064<br> 25.7 Programa ejemplo<br> 25.8 Termómetro de visualización en displays<br> <br> Capítulo 26: PCF8574, EXPANSOR DE BUS I2C<br> 26.1 El expansor de bus I2C PCF8574<br> 26.2 Direccionamiento como esclavo<br> 26.3 Escritura en el PCF8574<br> 26.4 Lectura del PCF8574<br> 26.5 Librería de subrutinas<br> 26.6 Interrupción<br> 26.7 Conexión entre PCF8574 y PIC16F84<br> 26.8 Ejemplo de programa<br> 26.9 Constitución interna del puerto<br> 26.10 Teclado hexadecimal en bus I2C<br> <br> Capítulo 27: PCF8591, ADC Y DAC EN BUS I2C<br> 27.1 PCF8591<br> 27.2 Direccionamiento como esclavo<br> 27.3 Registro de control<br> 27.4 El PCF8591 como DAC<br> 27.5 Resolución del DAC<br> 27.6 Ejemplos del PCF8591 como DAC<br> 27.7 El PCF8591 como ADC<br> 27.8 Ejemplo del PCF8591 como ADC<br> <br> Capítulo 28: BUS DE UNA LÍNEA<br> 28.1 Sensor de temperatura DS1820<br> 28.2 Diagrama en bloques del DS1820<br> 28.3 Lectura de la temperatura<br> 28.4 Bus de una línea<br> 28.5 Señales del bus de una línea<br> 28.6 Inicialización: Pulsos Reset y Presence<br> 28.7 Escritura de un bit sobre el DS1820<br> 28.8 Lectura de un bit procedente del DS1820<br> 28.9 Librería de subrutinas para bus de 1 línea<br> 28.10 Único DS1820 conectado al bus de 1 línea<br> 28.11 Termostato digital<br> <br> Capítulo 29: MOTORES DE CORRIENTE CONTINUA<br> 29.1 Puente en H<br> 29.2 Driver L293B<br> 29.3 Giro en un único sentido<br> 29.4 Giro en los dos sentidos<br> 29.5 Conexión de motor c.c. y PIC16F84<br> 29.6 Control de velocidad<br> <br> Capítulo 30: MOTORES PASO A PASO<br> 30.1 Motores paso a paso (PAP)<br> 30.2 Principio de funcionamiento<br> 30.3 Motores PAP bipolares<br> 30.4 Motores PAP unipolares<br> 30.5 Constitución interna de un motor PAP<br> 30.6 Disposición de las bobinas<br> 30.7 Parámetro de los motores PAP<br> 30.8 Control de los motores paso a paso<br> 30.9 Identificación de un motor PAP<br> 30.10 Conexión motor PAP bipolar y PIC16F84<br> 30.11 Conexión motor PAP Unipolar y PIC16F84<br> 30.12 Control de motor PAP en modo Full Step<br> 30.13 Realización de secuencias de movimientos<br> 30.14 Control de motor PAP en modo Half Step<br> 30.15 Control de velocidad<br> <br> Capítulo 31: SERVOMOTORES DE RADIOCONTROL<br> 31.1 Servomotores para microrobótica<br> 31.2 Funcionamiento del servomotor<br> 31.3 Terminales<br> 31.4 Conexión de un servomotor a un PIC16F84<br> <br> Capítulo 32: SENSORES PARA MICROROBÓTICA<br> 32.1 Sensores para microrobótica<br> 32.2 Inversor Trigger Schmitt 40106<br> 32.3 LDR<br> 32.4 Fotosensores activos<br> 32.4.1 Sensor &oacute;ptico CNY70<br> 32.4.2 Sensores OPB703/4/5<br> 32.4.3 Ejemplo de aplicaci&oacute;n<br> 32.4.4 Sensor &oacute;ptico de barrera H21A1</font><br> 32.5 Sensores infrarrojos GP2DXX<br> 32.5.2 GP2D05<br> 32.5.3 GP2D15<br> 32.5.4 GP2D12</font><br> 32.6 Receptor para control remoto SFH5110<br> 32.7 Sensor de proximidad IS471F<br> 32.8 Bumpers<br> 32.9 Detector por ultrasonido SRF04<br> <br> Capítulo 33: CONSTRUCCIÓN DE UN MICROROBOT<br> 33.1 Introducción a la Microbótica<br> 33.2 Nivel físico. Motores<br> 33.3 Nivel físico. Estructura<br> 33.4 Nivel físico. Ruedas<br> 33.5 Nivel físico. Movilidad<br> 33.6 Nivel de reacción<br> 33.7 Nivel de control<br> 33.7.1 Estrategia a seguir para un microbot rastreador<br> 33.7.2 Programa del rastreador<br> 33.7.3 Estrategia a seguir para un robot detector de baliza<br> 33.7.4 Programa de robot detector de baliza<br> Además en esta Web se resuelven todos los ejercicios del libro con PROTEUS VSM </p> </body>