Está en la página 1de 34

void main() { ADCON1=0x8D; TRISA=15; CMCON=0; INTCON=0; //codigo para 4 entradas analogas //usar 4 entradas //activar analogas"" // apagar

las interrupciones

TRISB=0b11000000; PORTB=0; while(1) { habitacion=ADC_Read(0); ambiente=ADC_Read(1); usuario(); if((habitacion>604 && habitacion<856)&& ambiente<habitacion) {

while (db!=10) { usuario(); PORTB.F0=1; PORTB.F1=0; db++; delay_ms(1000); } if(!(habitacion>438 && habitacion<456)) { while(!(habitacion>438 && habitacion<456)){ usuario(); PORTB.F0=0; PORTB.F1=1; PORTB.F2=0; habitacion=ADC_Read(0); } } else { usuario(); PORTB.F0=0; PORTB.F1=0;

} } else{ usuario(); PORTB.F0=0; PORTB.F1=0; }

if(habitacion>856 && ambiente<habitacion) { while (!(habitacion>604 && habitacion<622)){ usuario(); PORTB.F0=0; PORTB.F1=1; habitacion=ADC_Read(0); } } if((habitacion>604 && habitacion<622) && habitacion==ambiente) { usuario(); PORTB.F0=0; PORTB.F1=0; } } } unsigned int temp_res_1,temp_res_2;

void main() { ADCON1 =192; ADCON0 =128; TRISA TRISB TRISC =0xff; = 0; = 0x00; // PORTB is output // Pins RC7, RC6 are outputs

PORTB=0; PORTC=0;

do { temp_res_1 = ADC_Read(0); // Get 10-bit results of AD conversion

temp_res_2 = ADC_Read(1);

// Get 10-bit results of AD conversion

if(temp_res_1>temp_res_2){ PORTB.F0=1; PORTB.F1=0; PORTB.F2=0; } if(temp_res_1<temp_res_2){ PORTB.F0=0; PORTB.F1=1; PORTB.F2=0; } else if(temp_res_1==temp_res_2){ PORTB.F0=0; PORTB.F1=0; PORTB.F2=1; } } while(1); } Proyecto: Medicin de temperatura I2C * ; * Archivo de proyecto: i2c_temp * ; * Archivos fuente: i2c_temp.asm * ; * Herramientas MC: as, p2hex, debug51 * ; * Perfil: Perfil de usuario 80C535-AS * ; * Recursos MC: Unidad RTC TEMP. I2C, Unidad LCD I2C * ; * Encargado: tmaehr * ; ****************************************************************

; ----------------Descripcin de funcionamiento-------------------; ; ; ; ; ; ; ; ; ; ; ; ; ; ; El puerto 5.0 se conectar a SDA y el puerto 5.1 a SCL. Las resistencias Pull-up solamente deben estar activadas en una unidad I2C. __________ Pullup | 80C535 |-------p5.0 (SDA)----------------------------|_|-- VCC |__________|-------p5.1 (SCL)------|-----------------|---|_|-- VCC | | | | | | | | | | | -------------------------------|-------------p5.2(BL)--|Unidad LCD I2C| |Unidad RTC Temp I2C| -------------------------------Este programa permite la visualizacin de la temperatura actual. A ese fin primero se borra la indicacin de la unidad indicadora.

; A continuacin se inicializa el sensor de temperatura, a una temperatura ; superior a 29 grados, el LED se enciende permanentemente. ; Despus se introduce el valor de temperatura ; y se convierte mediante una tabla. La tabla se recorre en pasos de 2 valores ; y el valor de temperatura introducido se decrementa hasta que sea igual a "0". ; A continuacin se toman las posiciones de decenas y unidades de la tabla. ; Finalmente se procede a la visualizacin en la unidad LCD I2C.

; -------Acuerdos necesarios para el ensamblador-------

CPU 80515 INCLUDE stddef51 INCLUDE bitfuncs

; Seleccin de CPU ; Definicin SFR ; necesario para operaciones hi y lo

;----------------------------------------------------------------------segment code org 04e0h contenido1 db ? org 0500h Temperatura DB conversin db introducidos db db db db db db db aqu ORG 0000H ; Cdigo de programa empieza en 0000H "0000010203040506070809" "10111213141516171819" "20212223242526272829" "30313233343536373839" "40414243444546474849" "50515253545556575859" "60616263646566676869" "70717273747576777879" "80818283848586878899" ;Tabla, sirve para la ;de los valores ;del sensor de temp.

SEGMENT code

; Segmento de cdigo de programa empieza

; ---------------------------------------------------------SDA equ p5.0 ; Lnea de direccin del bus IIC en puerto 5.0 SCL equ p5.1 ; Lnea de reloj del bus IIC en puerto 5.1 BL equ p5.2 ; Luz trasera puerto 5.2 BIT_CTR equ 8h ; Variable contadora para un byte CT1 equ 2 ; Constante de tiempo 1 LCD_ADR equ 74h ; Direccin esclavo LCD_I2C LM75w equ 10011110b ; Direccin de sensor de temperatura para escribir LM75r equ 10011111b ; Direccin de sensor de temperatura para leer

;----------------------------------------------------------------------------

;***************************************************************** ; Programa principal ;*****************************************************************

call call loop: call call call cursor call call jmp

LCD_clear LM75_INIT leer conversion LCD1 output_to_Lcd wait4 loop

; Borrar unidad indicadora ; Iniciar sensor de temperatura ; Leer valor de temperatura ; y convertir ; Inicia unidad indicadora y pone ;

;***************************************************************** ; Subprogramas ;*****************************************************************

;-----------------------------------------------------------------------------; Leer temperatura actual de Lm75 ;-----------------------------------------------------------------------------leer: call I2C_INIT call I2C_START mov a,#lm75w call I2C_SEND mov a,#00h registro de temperatura call I2C_SEND call I2C_STOP call I2C_START mov a,#lm75r call I2C_SEND mov r4,#00h mov dptr,#contenido1 call I2C_Reci almacenar en Contenido1 call ACK call I2C_Reci en Contenido1 call wait setb SDA

; Poner indicador en

; ; ; Recibir datos del sensor y ; Recibir 2 byte y colgarlo ; Enviar Acknowledge

setb setb call clr call ret

SCL SDA wait SCL I2C_STOP

;-----------------------------------------------------------------------------; Conversin de los valores recibidos ;-----------------------------------------------------------------------------conversion: recibidos presentan el formato Hex, es divisin en decenas y unidades. mov dptr,#contenido1 ; Poner indicador al principio de Contenido1 mov a,#00h movc a,@a+dptr ; Cargar primer byte de temperatura en acumulador mov r7,a ; Copiar en R7 mov dptr,#temperatura ; Poner indicador de datos en tabla de temperatura inc r7 ; Tener en cuenta correccin en el valor 0 wef: inc dptr ; La tabla se recorre en pasos de 2 valores inc dptr ; y el valor de temp. se decrementa en 1 hasta que sea igual a 0 djnz r7,wef ; mov a,#00h ; movc a,@a+dptr ; mov r7,a ; Copiar la posicin de decenas en r7 mov a,#01h ; movc a,@a+dptr ; mov r6,a ; Copiar la posicin de unidades en r6 ret ;--------------------------------------------------------------------I2C_INIT: setb setb setb ret SDA SCL BL ; BUS idle ; BUS idle ; Luz trasera ; Puesto que los valores ; necesaria una conversin y

;--------------------------------------------------------------------I2C_START: setb call clr SCL unos 10us SCL wait SDA ; Poner SDA en LOW, ; si SCL en HIGH = condicin de inicio ; Temporizador para anchura de impulso

call wait clr SCL ret ;--------------------------------------------------------------------I2C_SEND: mov next_out: clr setb rlc izda jc wr_one clr wr_one: call setb call djnz saltar a next_out clr call setb call ret SDA wait SCL wait r1, next_out SCL wait SDA I2C_ACK ; sino SDA en LOW ; ; ; ; Retardo Generar reloj Retardo Todos los bits enviados? Si no, wr_one ; si bit a enviar HIGH saltar a r1,#BIT_CTR SCL SDA a ; Nmero de bits a enviar ; SCL en LOW ; SDA en HIGH ; Desplazar ACU una posicin a la

; Generar reloj ; Retardo ; SDA en HIGH

;--------------------------------------------------------------------I2C_ACK: setb call noack: jnb no jmp yack: call clr ret noack wait SCL SCL wait SDA, yack ; si ACK (0) ok saltar a ACK, si ;Comprobar Acknowledge

;--------------------------------------------------------------------I2C_STOP: clr call parada setb call setb ret SCL wait SDA SDA wait ; Cuando SCL HIGH ; Flanco 0-1 de SDA = condicin de

;--------------------------------------------------------------------wait: mov r0,#CT1 ; Retardo 1 para I2C

again: DJNZ ret

r0,again

;--------------------------------------------------------------------wait2: mov mov again2: DJNZ mov DJNZ ret r0,#200 r3,#255 r3,again2 r3,#255 r0,again2 ; Retardo 2 para I2C

;--------------------------------------------------------------------wait3: mov mov again3: DJNZ mov DJNZ ret r0,#55 r3,#255 r3,again2 r3,#255 r0,again2 ; Enviar retardo 3 para I2C

;------------------------------------------------------------------------wait4: call wait3 conversin del sensor de temp call wait3 call wait3 call wait3 call wait3 ret ; Retardo 4 a DA tiempo de

;---------------------------------------------------------------------I2C_Reci: mov r1,#BIT_CTR R1 next_input: setb SDA setb SCL call wait jnb SDA,null mov a,R6 setb acc.7 rl a posicin a la izda mov R6,a call wait clr scl call wait djnz r1,next_input sjmp readyig null: ; Variable contadora para byte en ; SDA = 1 ; SCL = 1 ; Consulta SDA 0 1 ? ; 7 bit en el acumulador =1 ; Desplazar acumulador una

; SCL = 0 ; Se enviaron 8 bits ?

mov a,R6 clr acc.7 ; 7 bit en el acumulador =0 rl a ; Desplazar acumulador una posicin a la izda mov R6,a call wait clr SCL ; SCL = 0 call wait djnz r1,next_input ; Se enviaron 8 bits ? readyig: cjne r4,#00h,plus sjmp wet plus: inc dptr wet: mov a,r6 movx @DPTR,a call wait inc r4 ret ;----------------------------------------------------------------------------ACK: setb todos los bits null0: sjmp eins1: setb call clr call clr ret SDA jb SDA,eins1 null0 clr SDA SCL wait SDA wait SCL ; Confirmacin que se han recibido

; SCL = 1 ; SDA = 0 ; SCL = 0

;----------------------------------------------------------------------------

LCD1: call call mov call mov call call mov call mov call mov call mov Cursor: mov la dcha call djnz mov I2C_SEND R4,Cursor a,#00000110b a,#00010100b I2C_INIT I2C_START a,#LCD_ADR I2C_SEND a,#0 wait2 I2C_SEND a,#00101110b I2C_SEND a,#00001100b I2C_SEND a,#00000010b I2C_SEND R4,#17h

;UNIDAD INDICADORA PONER CURSOR ;slave address ;control byte for function set ;Function set ;Display on/off Control ;Cusor Home ;2 lnea, 3 posicin ;Desplazar cursor una posicin a

;Entry mode set

call call ret

I2C_SEND I2C_STOP

;--------------------------------------------------------------------output_to_lcd: call wait2 call I2C_INIT call I2C_START mov a,#LCD_ADR call I2C_SEND mov a,#01000000b datos call I2C_SEND mov a,#10101011b setb acc.7 call I2C_SEND mov a,r7 setb acc.7 caracteres call I2C_SEND mov a,r6 setb acc.7 call I2C_SEND mov a,#10101100b setb acc.7 call I2C_SEND mov inc 1 un 0. mov a,#00h ; en otro caso x,0 movc a,@a+dptr ; anl a,#10000000b ; bits cjne a,#00h,five ; mov a,#10110000b ; setb acc.7 call I2C_SEND sjmp celsius five: mov a,#10110101b setb acc.7 call I2C_SEND celsius: mov a,#11000011b detrs ; setb acc.7 call I2C_SEND call I2C_STOP ret Si 0, entonces el valor es x,5 y enlace para ocultar los dems si no 0, saltar a cinco "0" dptr,#contenido1 dptr

; Byte de control para escribir ; "+"

; Decenas de grados(r7) ; Correccin para bloque de ; Unidades de grados(r6) ; ","

; Comprobar si el 2 byte recibido ; posee en la posicin 7 (MSB) un

; "5" ; escribir una "C" adicional

;---------------------------------------------------------------------------LM75_INIT: call call mov call I2C_INIT I2C_START a,#LM75w I2C_SEND

mov a,#01h call I2C_SEND mov a,#00010000b call I2C_SEND call I2C_STOP call I2C_INIT call I2C_START mov a,#LM75w ; escribir en LM75 call I2C_SEND mov a,#00000010b ; Indicador en registro T hyst call I2C_SEND mov a,#1Ch ; 28C call I2C_SEND mov a,#00h ; 2 byte = 0 call I2C_SEND call I2C_STOP call I2C_INIT call I2C_START mov a,#LM75w call I2C_SEND mov a,#00000011 ; Indicador en registro T os call I2C_SEND mov a,#1Dh ; 29C call I2C_SEND mov a,#00h ; 2 byte = 0 call I2C_SEND call I2C_STOP ret ;-----------------------------------------------------------------------------------------------------------------------------------------------------LCD_clear: call call mov call mov call call mov call mov call mov call call ret I2C_INIT I2C_START a,#LCD_ADR I2C_SEND a,#0 I2C_SEND wait2 a,#00101110b I2C_SEND a,#00001100b I2C_SEND a,#00000001b I2C_SEND wait2 ;Borrar unidad indicadora LCD ;slave address ;control byte for function set ;Function set ;Display on/off Control ;Borrar unidad indicadora

El circuito inicial En el circuito se observa (en la parte ms destacada) la conexin del 16F628A al LCD. Luego puedes encontrar ms abajo el rel que utilizars para programar un encendido y apagado de algn sistema de calefaccin (o refrigeracin). Tambin ubicars la conexin del sensor de temperatura y la aplicacin de resistores pull-up a ambas seales del bus I2C. Y arriba del microcontrolador, encontrars el cristal externo de 20Mhz que brindar la referencia de clock al sistema.

Podramos haber utilizado cmodamente el oscilador interno que posee el 16F628A, que es de 4Mhz, pero como en futuras ediciones queremos que utilices este mismo circuito en una conexin RS485 a 34800 bps, necesitars para ello un cristal de alta frecuencia. Por otra parte, el software que utilices para realizar el programa que har funcionar al PIC slo admite, en su versin gratuita, cristales de 4 o 20 Mhz.

Prcticas del libro en Proteus Prcticas del libro en PROTEUS:

Captulos 1 al 12. MICROCONTROLADOR PIC16F84. Diseo en PROTEUS del entrenador bsicos para aprendizaje del PIC16F84 con 64 ejercicios para analizar los fundamentos de la programacin del PIC16F84. Captulos 13 y 14. LCD y EEPROM DE DATOS. Diseo del circuito en PROTEUS y 22 ejercicios para estudiar el control del mdulo LCD y memoria EEPROM interna de datos del PIC16F84. Captulo 15. TIMER 0. Esquema en PROTEUS y 6 ejercicios para el estudio de Timer 0 del PIC16F84. Captulo 16. OTROS RECURSOS. Circuito en PROTEUS y 19 ejercicios para estudiar algunos recursos del PIC116F84: Direccionamiento Indirecto, Macros y Subrutinas Aritmticas. Captulo 17. INTERRUPCIONES. Diseo de 2 esquemas en PROTEUS y 13 ejercicios para analizar las interrupciones INT y RBI del PIC16F84. Captulo 18. INTERRUPCIONES POR DESBORDAMIENTO DEL TIMER

0. Diseo de 2 circuitos en PROTEUS y 16 ejercicios para estudiar la interrupcin por desbordamiento del Timer 0. Se incluye un reloj digital completo y un temporizador. Captulo 19. TECLADO HEXADECIMAL. Esquema en PROTEUS y 9 ejercicios para estudiar el control del teclado hexadecimal por parte de un PIC16F84. Se incluye una cerradura electrnica. Captulo 20. COMUNICACIN CON ORDENADOR. Diseo de 3 circuitos en PROTEUS con 11 ejercicios para estudiar la comunicacin entre un ordenador y un PIC16F84. Captulo 22. BUS I2C. MEMORIA EEPROM 24LC256. Anlisis del bus I2C aplicndolo a una memoria 24LC256 controlada por PIC16F84. Captulo 24. BUS I2C. RELOJ CALENDARIO DS1307. Captulo 25. BUS I2C. CONTROLADOR DE DISPLAY SAA1064. Captulo 26. BUS I2C. EXPANSOR DE BUS I2C CON PCF8574. Captulo 27. BUS I2C. ADC Y DAC CON PCF8591. Captulo 28. BUS 1-WIRE de Dallas. Anlisis del Bus de 1 lnea aplicndolo a una sensor de temperatura DS18B20 en un circuito utilizado como termmetro y termostato. Captul0 29. MOTOR DE CORRIENTE CONTINUA. Captulo 30. MOTOR PASO A PASO. Captulo 31. SERVOMOTOR DE RADIOCONTROL.

Entrenador para PIC16F84. Este entrenador completo diseado por Joaqun Lara, permite probar todos ejercicios del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma. Entrenador para PIC16F876. Este entrenador completo diseado por Joaqun Lara, permite estudiar el microcontrolador PIC16F876.

PRACTICAS del libro en PROTEUS Aqu se exponen los circuitos en PROTEUS y ficheros *.HEX necesarios para simular 181 ejercicios y prcticas del libro. Esto permite realizar de forma virtual las prcticas de Laboratorio, con la comodidad que ello conlleva y que es muy apreciada por los docentes. En todo caso es necesario el acompaamiento del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS. Editorial Ra-Ma" para poder estudiar los circuitos expuestos en esta Web. Tambin se ha incluido un entrenador para el aprendizaje del microcontrolador PIC16F876. Se puede utilizar la versin PROTEUS 6.7 SP3 o posterior que se puede adquirir en www.labcenter.co.uk o a travs de Proteus - Hubor. Para extraer los archivos *.zip hay que utilizar esta clave. Captulos 1 al 12. MICROCONTROLADOR PIC16F84. Figura 1-2: Estos captulos tratan sobre los principios bsicos de funcionamiento del PIC16F84A. Para su aprendizaje proponemos 64 ejercicios. Pulsando sobre

0102_EntrenadorBasico (38.17 kB) podr descargar el esquema del entrenador bsico y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de estos captulos (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. Se han incluido tambin nuevos ejemplos de ejercicios *.asm no incluidos en el CDROM que acompaa al libro.

Captulos 13 y 14. LCD Y EEPROM DE DATOS. Figura 14-3: Estos captulos tratan sobre el control de una pantalla LCD y de la EEPROM de datos internas del PIC16F84. Para su aprendizaje proponemos 21 ejercicios. Pulsando sobre 1403_EntrenadorLCD (34.76 kB) podr descargar el esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de estos captulos (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. Para poder simular la visualizacin de carcteres en el LCD dentro de PROTEUS, es necesario modificar la librera LCD_4BIT.INC tal como se explica en la Pregunta frecuente nmero 16. Se han incluido tambin nuevos ejemplos de ejercicios *.asm no incluidos en el CD-

ROM que acompaa al libro.

Capitulo 15. TIMER 0. Figuras 15-3 y 15-4: Este captulo trata sobre el manejo del Timer 0 PIC16F84. Para su aprendizaje proponemos 6 ejercicios. Pulsando sobre 1503_TMR0 (11.08 kB) podr descargar el esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas.

Captulo 16. OTROS RECURSOS DEL PIC16F84. Figura 14-3: Este captulo trata sobre manejo de algunos recursos del PIC16F84 tales como direccionamiento indirecto, macros y subrutinas aritmticas. Para su aprendizaje proponemos 19 ejercicios. Pulsando sobre 1600_Recursos (25.25 kB) podr descargar el esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. Se ha incluido varios programas aritmticos que vienen explicados en el capitulo 16 de la seccin Proyectos de esta Web.

Captulo 17. INTERRUPCIONES INT Y RBI. Este captulo trata sobre las interrupciones INT y RBI del PIC16F84. Para su aprendizaje proponemos 13 ejercicios. Pulsando sobre 1701_InterrupcionINT (12.9 kB)y 1704_InterrupcionRBI (12.21 kB) podr descargar los esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. FIGURA 17-01: Interrupcin INT. (Ejercicios Int_INT_01.asm al Int_INT_08.asm):

FIGURA 17-04: Interrupcin RBI. (Ejercicios Int_RBI_01.asm al Int_RBI_08.asm): Para probar las interrupciones RBI en el simulador PROTEUS hay que deshabilitar las resistencias de Pull-Up internas del PIC16F84 y conectar unas externas tal como se indica en el esquema. Sin embargo, en el montaje real esto no es necesario, utilizndose los circuitos explicados en el libro.

Captulo 18. INTERRUPCIN POR DESBORDAMIENTO DEL TIMER 0. Este captulo trata sobre la interrupcin T0I del PIC16F84. Para su aprendizaje proponemos 16 ejercicios. Pulsando sobre 1801_InterrupcionT0I (11.71 kB)y 1802_Cuadrada_y_otros (19.52 kB)podr descargar los esquema y los ficheros *.HEX necesario para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. FIGURA 18-01 ampliada: Interrupcin T01. (Ejercicios Int_T01.asm al Int_T06.asm):

FIGURA 18-02 reformada: Ondas cuadradas, reloj digital y temporizador. (Ejercicios Int_Cuadrada_01. asm a Int_Cuadrada_04.asm, Int_Reloj_01 a Int_Reloj_05.asm y adems el ejercicio Int_Temporizador.asm): Al utilizar las interrupciones RBI en el simulador PROTEUS hay que deshabilitar las resistencias de Pull-Up internas del PIC16F84 y conectar unas externas tal como se indica en el esquema. Sin embargo, en el montaje real esto no es necesario, utilizndose los circuitos explicados en el libro.

Captulo 19. TECLADO HEXADECIMAL. Figura 19-4:

Este captulo trata sobre el control del Teclado Hexadecimal por parte del PIC16F84. Para su aprendizaje proponemos 9 ejercicios. Pulsando sobre 1904_Teclado (17.85 kB) podr descargar el esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. La clave de la cerradura electrnica del ejercicio Teclado_09.HEX es : 456E78. Al utilizar las interrupciones RBI en el simulador PROTEUS hay que deshabilitar las resistencias de Pull-Up internas del PIC16F84 dentro de la librera TECLADO.INC, cambiando la instruccin "bcf OPTION_REG,NOT_RBPU" por esta otra "bsf OPTION_REG,NOT_RBPU". Adems hay que aadir un pequeo retardo en la subrutina "Teclado_LeeOrdenTecla" de la librera TECLADO.INC tal como se indica en la lnea roja que se expone a continuacin: ... ... Teclado_LeeOrdenTecla: clrf Tecl_TeclaOrden ; Todava no ha empezado a chequear el teclado. movlw b'11111110' ; Va a chequear primera fila. Tecl_ChequeaFila ; (Ver esquema de conexin). movwf PORTB ; Activa la fila correspondiente. call Retardo_1ms Tecl_Columna1 ... ... Adems hay que conectar unas resistencias de Pull-Up externas tal como se indica en el esquema. Sin embargo, en el montaje real, nada de esto es necesario, utilizndose tal como se explica en el libro. El teclado se ha simulado mediante un matriz de pulsadores ya que el teclado hexadecimal incluido con la libreria de PROTEUS no puede trabajar con interrupciones RBI.

Captulo 20 . COMUNICACIN CON ORDENADOR Este captulo trata sobre la comunicacin entre el ordenador y el PIC16F84. Para su aprendizaje proponemos 11 ejercicios. Pulsando sobre 2013_RS232_Ejercicios (14.41 kB), 2014_RS232_Monitor (7.82 kB) y 2015_RS232_Gobierno (10.35 kB) podr descargar los esquema y los ficheros *.HEX necesario para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. FIGURA 20-13. Ejercicios RS232_01 al RS232_08.asm:

FIGURA 20-14. Ejercicios RS232_09 y RS232_10.asm:

FIGURA 20-15 (Ejercicio RS232_11.asm):

Captulo 22. BUS I2C, MEMORIA EEPROM 24LC246. Figura 22-7: Este captulo trata sobre el Bus I2C aplicado a una memoria EEPROM 24LC256. Para su aprendizaje proponemos 3 ejercicios. Pulsando sobre 2207_I2C_M24LC256 (12.02 kB) podr descargar el esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. En los ficheros *.BIN se almacenan los datos a grabar en la memoria EEPROM. Estos

ficheros se pueden editar con el IC-Prog tal como se explica en el libro. Es importante resaltar que, en PROTEUS es necesario reemplazar la memoria cada que se vare el contenido de la misma. Es decir, hay que volver a insertar una memoria nueva cada vez que se cargue su contenido con un fichero *.BIN.

Captulo 24 . DS1307, RELOJ-CALENDARIO EN BUS I2C: Este captulo trata sobre el Bus I2C aplicado a un reloj calendario DS1307. Pulsando sobre 2403_I2C_DS1307 (12.11 kB) podr descargar el esquema y el fichero *.HEX necesario para la simulacin en PROTEUS del ejercicio de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas..

Al utilizar las interrupciones RBI en el simulador PROTEUS hay que deshabilitar las resistencias de Pull-Up internas del PIC16F84 y conectar unas externas tal como se indica en el esquema. Sin embargo, en el montaje real esto no es necesario, utilizndose los circuitos explicados en el libro. Captulo 25 . SAA1064 CONTROLADOR DE DISPLAY. Figura 25-3: Este captulo trata sobre el Bus I2C aplicado al controlador SAA1064. Pulsando sobre 2503_I2C_SAA1064 (24.54 kB) podr descargar el esquema, el archivo SAA1064.DLL y el fichero *.HEX necesario para la simulacin en PROTEUS (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. Para la correcta simulacin del circuito debe copiar el archivo SAA1064.DLL descargado en la carpeta C:\Archivos de programa\Labcenter Electronics\Proteus 6 Demonstration\MODELS de su ordenador. En la simulacin con PROTEUS VSM el mensaje parpadea, lo que no ocurre en el montaje real.

Captulo 26. PCF8574, EXPANSOR DE BUS I2C. Figura 26-6: Este captulo trata sobre la conversin de un bus paralelo a Bus I2C y viceversa, ampliando sus posibilidades mediante un expansor PCF8574 conectado al PIC16F84A. Pulsando sobre 2606_I2C_PCF8574 (11.3 kB) podr descargar el esquema y el fichero *.HEX necesario para la simulacin en PROTEUS (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas.

Captulo 27 . PCF8591, ADC Y DAC EN BUS I2C Este captulo trata sobre la realizacin de conversores DAC y ADC en bus I2C mediante un PCF8591 conectado al PIC16F84. Para su aprendizaje proponemos 3 ejercicios. Pulsando sobre 2709_I2C_PCF8591_DAC (12.79 kB)y 2710_I2C_PCF8591_ADC (12.06 kB)podr descargar los esquema y los ficheros *.HEX necesario para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. FIGURA 27-9. Ejercicios I2C_DAC_01.asm y I2C_DAC_02.asm:

FIGURA 27-10. Ejercicio I2C_ADC_01.asm:

Captulo 28 . DS18B20, TERMOSTATO EN BUS 1-WIRE En el captulo 28 del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma analizamos el funcionamiento del bus 1Wire de Dallas. Como aplicacin prctica explicamos como construir un termostato con el popular sensor de temperatura DS1820 conectado mediante bus 1-Wire de Dallas. El DS18B20 es otro sensor de temperatura de la misma familia, pero con un sensibilidad mejorada de hasta 0.0625 C. Aunque el funcionamiento es muy similar al DS1820, la tabla de conversin no es la misma y por tanto el programa que explicamos en el libro no es vlido para este. Haciendo click sobre 2808_DS18B20 (276.33 kB)podr descargar los archivos necesarios para adaptar el termostato de la figura 28-8 del libro al sensor DS18B20:

Hojas caractersticas del DS18B20: DS18B20.pdf Librera DS18B20.INC Programa DS18B20_Termostato.asm

Archivo DS18B20_Termostato.hex para cargarlo en el microcontrolador PIC16F84A. Archivo DS18B20.dll que es el modelo de este dispositivo para su simulacin en PROTEUS.

La clave para abrir estos archivos es la misma que la utilizada en toda esta Web. Para la correcta simulacin del circuito debe copiar el archivo DS18B20.DLL descargado en la carpeta C:\Archivos de programa\Labcenter Electronics\Proteus xx\MODELS de su ordenador.

Al utilizar las interrupciones RBI en el simulador PROTEUS hay que deshabilitar las resistencias de Pull-Up internas del PIC16F84 y conectar unas externas tal como se indica en el esquema. Sin embargo, en el montaje real esto no es necesario, utilizndose los circuitos explicados en el libro. Captulo 29. MOTORES DE CORRIENTE CONTINUA. Figura 29-9: Este captulo trata sobre el control de motores de corriente continua. Para su aprendizaje proponemos 3 ejercicios. Pulsando sobre 2909_MotorDC podr descargar el esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. Es importante resaltar que la librera de PROTEUS no incluye el driver L293B por lo

que ha sido sustituido por el buffer triestado 74126. De esta forma la simulacin es totalmente compatible.

Captulo 30. MOTOR PASO A PASO. Figura 30-13: Este captulo trata sobre el control de motores PAP. Para su aprendizaje proponemos 4 ejercicios. Pulsando sobre2909_MotorDC 3013_MotorPAP (9.97 kB)podr descargar el esquema y los ficheros *.HEX necesarios para la simulacin en PROTEUS de los ejercicios de este captulo (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas. Es importante resaltar que la librera de PROTEUS no incluye el driver L293B por lo que ha sido sustituido por el buffer triestado 74126. De esta forma la simulacin es totalmente compatible.

Captulo 31. SERVOMOTOR DE RADIOCONTROL. Figura 31-6: Este captulo trata sobre el control del servomotor de radiocontrol. Pulsando sobre 3106_Servomotor (7.76 kB) podr descargar el esquema y el fichero *.HEX necesario para la simulacin en PROTEUS, (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas.

ENTRENADOR PARA PIC16F84: Este entrenador completo diseado por Joaqun Lara, permite probar todos ejercicios del libro. Pulsando sobre LARA_PIC16F84 (147.1 kB) podr descargar el esquema

y los ficheros *.HEX necesarios para la simulacin en PROTEUS (esta es la clave para extraer los archivos). En el libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS" de la Editorial Ra-Ma encontrar ampliamente detallada la explicacin de estas prcticas.

ENTRENADOR PARA PIC16F876: Este entrenador completo diseado por Joaqun Lara, permite probar el microcontrolador PIC16F876. Pulsando sobre LARA_PIC16F876 (52.03 kB) podr descargar el esquema y los ficheros necesarios para la simulacin en PROTEUS (esta es la clave para extraer los archivos).

También podría gustarte