Professional Documents
Culture Documents
Electrnica I y II
ALUMNOS: ULISES
TERAN JURADO
DAVID HERNANDEZ ZARAGOZA JUAN
CARLOS PANTOJA HERNANDEZ
CUAUHTEMOC DANIEL FUENTES PEA
NDICE
1.
Objetivos e Introduccin. .. . . . . . . . . . . . . . . . . . . . . . .
...........................4
1.1
Objetivos Generales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................4
1.2
Objetivos Particulares. . . . . . . . . . . . . . . . . . . . . . . . . . .
...........................4
1.3
Introduccin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .4
2.
Antecedentes Tericos. . . . . . . . . . . . . . . . . . . . . . . . . .
...........................5
2.1
Microcontroladores PIC.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .5
2.2
Familias de microcontroladores PIC. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .5
2.3
Microcontroladores de gama baja. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .5
2.4
Microcontroladores de gama media. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .6
2.5
Microcontroladores de gama alta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .6
2.6
Unidad aritmtica y lgica y el registro W. . . . . . . . . . . . . . . . . . . . . . .
...............7
3.0
Seales de entradas y salidas analgicas. . . . . . . . . . . . . . . . . . .
...................7
3.1
Funciones bsicas en los sistemas de medida y control. . . . . . . . . . .
...... .... . ...7
3.2
Mdulo de conversin A/D de 10 bits. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .8
3.3
Arquitectura del mdulo de conversin A/D. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .9
4.0
El Sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .11
4.1
Tipos de sensores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 11
4.2
Caractersticas y manipulacin de la seal enviada por el sensor. . . .
. . . . . . . . . . . . . . .12
4.3
El sensor de temperatura LM35DZ. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .12
5.0
Etapa de potencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .13
5.1
Optoacopladores y funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .13
5.2
Tipos de Optoacopladores. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.3
El Triac y su funcionamiento. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.4
Control mediante el optoacoplador MOC 3031. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .14
5.5
Funcionamiento etapa de potencia. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .15
6.0
Pantalla de cristal lquido LCD 16 x 2. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 16
6.1
Caractersticas generales de un LCD. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .16
6.2
Modos de operacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 17
6.3
Comandos de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 18
7.0
Microcontrolador PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .22
7.1
Caractersticas del PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 23
7.2
Arquitectura del PIC 16F877A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 25
7.3
Arquitectura Interna del PIC 16F877A . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 27
7.4
Organizacin de la memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 29
8.0
Desarrollo del proyecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 31
8.1
Implementacin fsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 31
8.2
Cdigo generado en MPLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .33
8.3
Esquema del circuito de diseo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .40
9.0
Conclusiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 40
10.0
Bibliografa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 41
1.3 Introduccin
Hoy en da, la electrnica ha avanzado a pasos agigantados, en su
mayora los sistemas que se desarrollan son digitales. Existen muchos
dispositivos que permiten realizar diversos diseos de cualquier clase,
existen dos dispositivos muy utilizados: Los microprocesadores y los
microcontroladores.
Los microprocesadores son dispositivos los cuales se pueden
confgurar como el usuario lo desee, posee ms instrucciones y ms
capacidad que los microcontroladores, generalmente estos dispositivos se
utilizan para disear proyectos donde se requiere mucho procesamiento de
los datos. La marca lder en microprocesadores es Intel.
Los microcontroladores son dispositivos de menor capacidad pero
estos son ideales para el diseo y sus instrucciones son ms fciles de
manipular y son econmicos. Los ms comercializados son los AVR y los PIC.
En nuestro caso decidimos trabajar con los PIC, ya que son los
dispositivos ms utilizados hoy en da. Existe una gran variedad de estos
dispositivos, elegimos uno de gama media el PIC16F877A, este dispositivo
cumple con nuestras especifcaciones de diseo. Ya elegido el PIC,
diseamos nuestra etapa de potencia, aqu utilizamos un SCR un dispositivo
semiconductor de cuatro etapas y por ltimo buscamos el sensor.
Los PIC16X5xx
Los PIC12X5xx
Los PIC10
Los PIC17
Los PIC18
procesamiento hay una accin con un actuador, que convierte una seal
elctrica en la accin
fsica deseada, por ejemplo activar un motor para poner en marcha un
calefactor.
Proyecto de Ingeniera
Electrnica I y II
Este mdulo puede tener hasta ocho entradas analgicas que estn
disponibles como funciones alternativas de las terminales de los puertos
paralelos. El nmero de entradas analgicas o canales de entrada depende
del PIC en particular.
El amplifcador de muestreo y retencin est compuesto bsicamente
por un condensador (sin amplifcadores de entrada ni de salida), que
empiezan a cargarse en cuanto se selecciona en el multiplexor el canal
deseado. La tensin en el condensador sigue la evolucin de entrada
(modo track), y cuando se da una orden el condensador se desconecta de
la entrada analgica y empieza la conversin.
El resultado de la conversin se deposita en los registros ADRESH Y
ADRESL. Dentro del espacio de 16 bits conformado por este par de registros,
los 10 bits resultantes de una conversin se pueden depositar justifcados a
la izquierda o a la derecha como se muestra en la fgura. La opcin de
depositar el resultado justificado a la izquierda resulta muy apropiada para
operar el CAD como convertidor de 8 bits, con el resultado de la conversin
en el registro ADRESH.
Proyecto de Ingeniera
Electrnica I y II
reloj y se programa el divisor de frecuencia si la fuente es el oscilador
principal del microcontrolador.
4.0 El sensor
Es un dispositivo diseado para poder captar informacin de alguna
magnitud como: Qumica, Fsica y transformarla en magnitud elctrica lo
cual nos facilita para poder manipular y cuantifcar la informacin recabada.
4.3
Sensor
temperatura LM35DZ
de
5.0 Etapa de
potencia
Comnmente utilizamos voltajes de alta tensin (CA). Estos voltajes no
podemos aplicar directamente al microcontrolador pues lo daara; por lo
que es necesario aislarlo elctricamente mediante un dispositivo
denominado optoacoplador.
Figura 7. Smbolo de
Triac.
No es necesario que estn presentes las dos ambas polaridades en la
compuerta ya que el Triac puede ser activado por una seal positiva o una
seal negativa de compuerta. En la prctica la sensibilidad vara de un
cuadrante a otro, normalmente el Triac opera en el primer cuadrante I
(voltaje y corriente de compuerta positivos) o en el tercer cuadrante III
(voltaje y corriente negativos) como se muestra en la Figura 8.
de sistemas lgicos con equipos que tienen alimentarse con los 120V de
AC. Su caracterstica ms importante es:
que
de
LCD,
Circuito de Reset.
DB0 a DB7 (Data bus, bus de datos) Por estas lneas transitan las
rdenes y los datos en ambas direcciones.
6.2 Modos de
operacin
El LCD tiene 3 modos de funcionamiento principales:
Modo Comando
Modo Carcter o Dato
Modo de lectura del Busy Flag o LCD Ocupada
LCD
:
CLEAR DISPLAY
Borra el mdulo LCD y coloca el cursor en la primera posicin
(direccin 0). Pone el bit
I/D en
" 1" por defecto.
Cdigo:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
Tiempo de ejecucin: 40 s
1 1/D
Tiempo de ejecucin: 40 s
CURSOR OR DISPLAY SHIFT
Mueve el cursor y desplaza el display sin cambiar el contenido de la
memoria de datos de visualizacin DD RAM.
Cdigo:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
S/C R/L
Tiempo de ejecucin: 40 s
FUNCTION SET
Establece el tamao de interface con el bus de datos (DL), nmero de
lneas del display
(N) y tipo de carcter (F).
Cdigo:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
DL
Tiempo de ejecucin: 40 s
SET THE CG RAM ADDRESS
El mdulo LCD adems de tener defnidos todo el conjunto de
caracteres ASCII, permite al usuario defnir 4 u 8 caracteres grficos. La
composicin de estos caracteres se va guardando en una memoria llamada
CG RAM con capacidad para 64 bytes. Cada carcter grfico defnido por el
usuario se compone de 16 u 8 bytes que se almacenan en sucesivas
posiciones de la CGRAM.
Direccin de la CG RAM
Tiempo de ejecucin: 40 s
Direccin de la DD RAM
Tiempo de ejecucin: 40 s
READ BUSY FLAG ET ADDRESS
Cuando el mdulo LCD est ejecutando cualquiera de estas
instrucciones, tarda un cierto tiempo de ejecucin en el que no se le debe
mandar ninguna otra instruccin. Para ello dispone de un flag llamado BUSY
(BF) que indica que se est ejecutando una instruccin previa. Esta
instruccin de lectura informa del estado de dicho flag adems de
proporcionar el valor del contador de direcciones de la CG RAM o de la
DDRAM segn la ltima que se haya empleado.
Cdigo:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
BF
Tiempo de ejecucin: 40 s
WRITE DATA TO CG OR DD RAM
Mediante este comando se escribe en la memoria DD RAM los datos
que se quieren presentar en pantalla y que sern los diferentes cdigos
ASCII de los caracteres a visualizar. Igualmente se escribe en la memoria CG
RAM los diferentes bytes que permiten confeccionar caracteres grficos a
gusto del usuario. El escribir en uno u otro tipo de memoria depende de si se
ha empleado previamente la instruccin de direccionamiento DD RAM o la de
direccionamiento CG RAM.
Cdigo:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0
Tiempo de ejecucin: 40 s
READ DATA FROM CG OR DD RAM
Mediante este comando se lee de la memoria DD RAM los datos que
haya almacenados y que sern los cdigos ASCII de los caracteres
visualizados. Igualmente se lee de la memoria CG RAM los diferentes bytes
con los que se ha confeccionado un determinado carcter grfico. El leer de
uno u otro tipo de memoria depende de si se ha empleado
previamente la instruccin de direccionamiento de la DD RAM o la de
direccionamiento CG RAM.
Cdigo:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1
Tiempo de ejecucin: 40 s
Abreviaturas
Se listan a continuacin las abreviaturas empleadas en los cdigos
anteriores y su significado:
S = 1 Desplaza la visualizacin cada vez que se escribe un dato
S = 0 Modo normal
21
22
Mdulo
DL = 1 Bus de datos
de 8 bits DL = 0 Bus
de datos de 4 bits N =
1 LCD de 2 lneas
N = 0 LCD de 1
lnea
F = 1 Carcter de 5x10
puntos
F = 0 Carcter de 5x7
puntos B = 1 Parpadeo
de cursor ON C = 1
Cursor ON
D = 1 Display
ON
X
=
Indeterminado
Frecuencia de 20 Mhz.
Proyecto de Ingeniera
Electrnica I y II
PIN
DESCRIPCION
OSC1/CLKIN (9)
OSC2/CLKOUT (10)
MCLR/VPP/THV (1)
RA0/AN0 (2)
RA1/AN1 (3)
RB1 (22)
RB2 (23)
RB3/PGM (24)
RA2/AN2/VREF- (4)
RA3/AN3/VREF+ (5)
RA4/T0CKI (6)
RA5/SS#/AN4 (7)
RB0/INT (21)
RB4 (25)
RB5 (26)
RB6/PGC( 27)
RB7/PGD (28)
24
Proyecto de Ingeniera
Electrnica I y II
como entrada de datos.
RC0/T1OSO/T1CK1 (11)
RC1/T1OSI/CCP2 (12)
RC2/CCP1(13)
RC3/SCK/SCL (14)
RC4/SDI/SDA (15)
RC5/SDO (16)
VSS(8,19)
VDD(20,32)
Fuente (5V).
RC6/TX/CK (17)
RC7/RX/DT (18)
RE0/RD#/AN5 (8)
RE1/WR#/AN6 (9)
RE2/CS#/AN7
Proyecto de Ingeniera
Electrnica I y II
datos en forma separada. En la Figura 12 se muestra la arquitectura Von
Neumann frente a la
Harvard:
Arquitectura de Von Neumann:
Bus de direcciones
UCP
(PROCESAD
OR)
Bus de
datos
INSTRUCCIONES
DATOS
Arquitectura Harvard:
Bus de direcciones
Bus de direcciones
UCP (PROCESADOR)
INSTRUCCIONES
DATOS
Bus de datos
us de datos
Proyecto de Ingeniera
Electrnica I y II
direccin, a diferencia del bus de datos que tiene la caracterstica de
ser bidireccional.
30
Proyecto de Ingeniera
Electrnica I y II
Proyecto de Ingeniera
Electrnica I y II
Figura 15. El sistema registra una temperatura de 15 C.
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
0x21
0x22
0x22
0x23
0x24
0x25
0x26
0x27
0x28
33
ASCII_L
HEXADECIMAL
Key_var
EQU
EQU
EQU
0x29
0x2A
0x2B
ORG 0x00
GOTO
EMPEZAR ORG
0x05
EMPEZAR
BSF STATUS,RP0
;banco 1
BSF TRISA,0
;entrada de sensor
BSF
TRISA,3
;voltaje Ref=5.1
CLRF
TRISB
MOVLW
b'11111100'
MOVWF
TRISC
;salidas para LEDs
CLRF
TRISD
BSF
ADCON1,0
;para permitir
ingreso de Vref=5.1V BCF
OPTION_REG,7
;resistencias Pull Up activada
BCF
STATUS,RP0
;banco_0
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;CONFIGURACION DEL CONVERTIDOR A/D
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MOVLW
B'01000001'
;RA0=entrada de sensor
MOVWF
ADCON0
CLRF
PORTC
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INICIO
BSF
ADCON0,GO
;INICIAR
CONVERSION BTFSC
ADCON0,GO
GOTO $-1
; MOSTRAR EN LCD
CALL
RETARDO
;
MOVF
ADRESH,0
;W=Temperatura
MOVLW
'-'
CALL
inicio_LCD
; inicio de LCD
CALL
EnviaCarLCD
MOVF
ADRESH,0
MOVLW
'I'
CALL
Hex_Ascii
CALL
EnviaCarLCD;conversin de HEXADECIMAL a ASCII
MOVLW
'T'
MOVLW
'='
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'.'
MOVLW
' '
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'A'
MOVF
ASCII_H,0
; enva las centenas de temp.
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'.'
MOVF
ASCII_M,0
; enva las decenas de temp.
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'U'
MOVF
ASCII_L,0
; enva las unidades de temp.
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'A'
MOVLW
0xDF
; smbolo de grados celsius
CALL
EnviaCarLCD
CALL
EnviaCarLCD
MOVLW
'M'
MOVLW
'C'
CALL
EnviaCarLCD
CALL
EnviaCarLCD
34
MOVLW
DISP_ON_NOCURSOR; apaga el cursor del
LCD CALL
EnviaCmdLCD
CALL
COMPARAR
;checa el rango de
temperatura CALL
RETARDO
;retardo de 20ms
para el ADC CALL
RETARDO
CALL
RETARDO
MOVLW
.22
;TEMP. INICIAL DEL S.POINT
BAJO MOVWF
TEMPERATURA_L
MOVLW
.28
;TEMP. INICIAL DEL S.POINT
ALTO MOVWF
TEMPERATURA_H
CALL
MUESTRA.S.POINT GOTO
PRINCIPAL
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;"TEMPERATURA S.POINT": MUESTRA LA TEMPERATURA S.POINT Y LA
;TEMPERATURA ACTUAL GUARDADO EN TEMPERATURA Y TEMP_ACTUAL
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MUESTRA.S.POINT
MOVLW
DISP_LINEA2
; establece el cursor en 2a fila
CALL
EnviaCmdLCD MOVLW
'L'
CALL
EnviaCarLCD MOVLW
'='
CALL
EnviaCarLCD
MOVLW
.50
SUBWF
TEMPERATURA_L,W BTFSS
STATUS, Z
GOTO
FINAL2
MOVLW
.99
GOTO
IMPRIME2
FINAL2
MOVF
TEMPERATURA_L,W IMPRIME2
35
CALL
MOVF
ADDLW
CALL
MOVF
ADDLW
CALL
MOVF
ADDLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
CALL
MOVLW
SUBWF
BTFSS
GOTO
MOVLW
GOTO
FINAL1
MOVF
IMPRIME1
CALL
MOVF
ADDLW
CALL
MOVF
ADDLW
CALL
MOVF
ADDLW
CALL
MOVLW
CALL
MOVLW
CALL
RETURN
PRINCIPAL
BTFSC
GOTO
GOTO
BIN_A_BCD
CENTENAS,W
'0'
EnviaCarLCD
DECENAS,W
'0'
EnviaCarLCD
UNIDADES,W
'0'
EnviaCarLCD
0XDF
EnviaCarLCD
'C'
EnviaCarLCD
0X20
EnviaCarLCD
0X20
EnviaCarLCD
'H'
EnviaCarLCD
'='
EnviaCarLCD
.50
TEMPERATURA_H,W
STATUS,Z
FINAL1
.99
IMPRIME1
TEMPERATURA_H,W
; ESTA FUNC IMPRIME LA TEMP ACTUAL
BIN_A_BCD
CENTENAS,0
'0'
EnviaCarLCD
DECENAS,0
'0'
EnviaCarLCD
UNIDADES,0
'0'
EnviaCarLCD
0XDF
EnviaCarLCD
'C'
EnviaCarLCD
PORTB,2
S.POINT
INICIO
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;RUTINA PARA GENERAR EL RETARDO DE 20ms.
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
RETARDO ; 20ms
MOVLW
.10
MOVWF
20H
LAZO DECFSZ
20H,1
GOTO
LAZO
RETURN
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;RUTINA PARA HACER LA COMPARACION ENTRE LAS TEMP. INF Y SUP
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
COMPARAR
MOVF
TEMPERATURA_L,0
DECF
TEMPERATURA_L,0
MOVWF
T_1
MOVF
ADRESH,0
;W=TEMPERATURA ACTUAL
SUBWF
T_1,0
;W=T_1-TEMPERATURA
BTFSC
STATUS,C
;C=0? (TEMP>T_1)
GOTO
LED_1
;NO
GOTO
SIGUIENTE
;SI
LED_1 MOVLW
B'00000001'
MOVWF
PORTC
RETURN
SIGUIENTE
MOVF
TEMPERATURA_H,0
MOVWF
T_2
MOVWF
TEMPERATURA_H
MOVF
ADRESH,0
;W=TEMPERATURA ACTUAL
SUBWF
T_2,0
;W=T_2-TEMPERATURA
BTFSC
STATUS,C
;C=0? (TEMP>T_2)
GOTO
LED_2
; NO
GOTO
LED_3
; SI
LED_2 MOVLW
B'00000000'
MOVWF
PORTC
RETURN
B'00000010'
LED_3 MOVLW
MOVWF
PORTC
RETURN
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;RUTINA PARA CONVERTIR DE HEXADECIMAL A ASCII
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Hex_Ascii
;cargar en W el dato hex.
MOVWF
HEXADECIMAL
CLRF
ASCII_H
;Para BCD D'0'
CLRF
ASCII_M
;Para BCD D'0'
CLRF
ASCII_L
;Para BCD D'0'
Centenas
MOVLW
d'100'
;D'100' --> W
SUBWF
HEXADECIMAL,W
;HEXADECIMAL - D'100' --> W
BTFSS
STATUS,C
;es menor que D'100' ?
GOTO
Decenas
;Si
MOVWF
HEXADECIMAL
;Salva el resto
INCF
ASCII_H,F
;Inc. el cont. de centenas BCD
GOTO
Centenas
;Vuelve por otros D'100'
Decenas
MOVLW
d'10'
;D'10' --> W
SUBWF
HEXADECIMAL,W
;HEXADECIMAL - D'10' --> W
BTFSS
STATUS,C
; es menor que D'10' ?
GOTO
Unidades
;Si
MOVWF
HEXADECIMAL
;Salva el resto
INCF
ASCII_M,F
;Inc. el cont. de decenas BCD
GOTO
Decenas
;Vuelve por otros D'10'
Unidades
MOVF
HEXADECIMAL,W
;El resto pertenece
MOVWF
ASCII_L
;a las unidades BCD
CLRF
HEXADECIMAL
;en cero el registro HEXADECIMAL
Bcd_A_Ascii
MOVLW
H'30'
;H'30' --> W
IORWF
ASCII_L,F
;Convierte de BCD a ASCII
IORWF
ASCII_M,F
;Convierte de BCD a ASCII
MOVF
ASCII_H,F
;ASCII_H --> F
BTFSC
STATUS,Z
;? ASCII_H es D'00' ?
GOTO
Espacio
;Si
MOVLW
H'30'
;H'30' --> W
IORWF
ASCII_H,F
;Convierte de BCD a ASCII
RETURN
;
Espacio
MOVLW
'0'
;A' ' --> W
MOVWF
ASCII_H
;A' ' --> ASCII_H
RETURN
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;ESTA RUTINA SOLO GENERA LA VARIANZA DEL S.POINT
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S.POINT
CALL
RETARDO
BTFSC
PORTB,2
GOTO
$-1
SALTO BTFSC
PORTB,0
GOTO
MENOS
BTFSC
PORTB,1
GOTO
MAS
BTFSC
PORTB,2
GOTO
FIN.S.POINT
MENOS
MAS
G
O
T
O
S
A
L
T
O
CALL
DECF
CALL
BTFSC
GOTO
GOTO
CALL
INCF
CALL
BTFSC
GOTO
GOTO
FIN.S.POINT
CALL
BTFSS
GOTO
GOTO
RETURN
RETARDO
TEMPERATURA_L,F
MUESTRA.S.POINT
PORTB,0
$-1
SALTO
RETARDO
TEMPERATURA_L,F
MUESTRA.S.POINT
PORTB,1
$-1
SALTO
RETARDO
PORTB,2
PRINCIPAL
FIN.S.POINT
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;PROGRAMA QUE CONVIERTE UN NUMERO DECIMAL A BCD
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BIN_A_BCD
CLRF
CENTENAS
CLRF
DECENAS
MOVWF
UNIDADES
BCD_RESTA
MOVLW
.10
SUBWF
UNIDADES,W
BTFSS
STATUS,C
GOTO
BIN_BCD_FIN
BCD_DECENA
MOVWF
UNIDADES
INCF
DECENAS,F
MOVLW
.10
SUBWF
DECENAS,W
BTFSS
STATUS,C
GOTO
BCD_RESTA
RETURN
BIN_BCD_FIN
SWAPF
DECENAS,W ;En el nibble alto estan las decenas.
ADDWF
UNIDADES,W ;En el nibble bajo estan las unidades
MOVWF
PORTB
;Se visualiza en el puerto de salida.
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INCLUDE <LCD.ASM>
INCLUDE <RETARDO.ASM>
END
9 8 7 D1 D0
54
RS RW E
21
VSS VDD VEE
LM016L
RV2
10k
U2(+VS)
U2
U1
13
14
1
10.0
VOUT
2
3
4
5
6
7
LM35
8
9
10
OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV
RB0/INT
RB1
RB2
RB3/PGM
RA0/AN0
RB4
RA1/AN1
RB5
RA2/AN2/VREFRB6/PGC
RA3/AN3/VREF+
RB7/PGD
RC0/T1OSO/T1CKI
RA4/T0CKI
RA5/AN4/SS
RE0/AN5/RD
RE1/AN6/W R
RE2/AN7/CS
B1
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
2.55
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
R1
CALENTADOR
330
R2
330
LED-BLUE
VENTILADOR
LED-BLUE
PIC16F877
9.0 Conclusiones
Como se pudo observar los objetivos del proyecto se cumplieron pues
logramos desarrollar un sistema digital capaz de monitorear y controlar los
niveles de temperatura en un invernadero. Cabe mencionar que cuando
estuvimos llevando a cabo el diseo nos encontramos con detalles
lgicos que no estaban contemplados o que a simple vista no se detectaron
pero que gracias al trabajo en equipo pudimos resolver estos detalles sin
demorar
10.0
Bibliografa