Vous êtes sur la page 1sur 10

PROYECTO N3-TERMÓMETRO ZUMBADOR 1

VISUALIZACIÓN DE TEMPERATURA Y
GENERACIÓN DE TONOS PIC18F4550
Carlos A. Marin Y. 20151005124, Yeison E. Gutierrez, 201510050121, Paula A. Ferreira 20132005989

Abstract—In this project the design of a buzzer thermometer


is made using the LCD HD44780U of 16x2, a temperature
sensor LM35, and a buzzer (buzzer) to emit tones of different
frequency depending on the temperature that is being visualized
by means of the LCD . The project is carried out by means
of the PIC18F4550 microcontroller. It was learned to use the
digital analog converter (ADC) of the A pin RA0 port and a
square signal is generated to control the frequency ranges in
the B pin RB0 port, this variable frequency AC signal feeds the
buzzer that generates the tones for each temperature.

Resumen—En este proyecto se realiza el diseño de un


termómetro-zumbador utilizando la LCD HD44780U de 16x2,
un sensor de temperatura LM35, y un buzzer (zumbador)
para emitir tonos de diferente frecuencia dependiendo de la Fig. 1: Diagrama Circuital Implementado
temperatura que esta siendo visualizada por medio de la LCD. El
proyecto se realiza por medio del microcontrolador PIC18F4550.
Se aprendió a usar el conversor analógico digital (ADC) del
puerto A pin RA0 y se genera una señal cuadrada para controlar 2) Realizar un programa en lenguaje C para implementar
los rangos de frecuencia en el puerto B pin RB0, ésta señal AC
con frecuencia variable alimenta al buzzer que genera los tonos un termómetro-zumbador digital y que este en capacidad
para cada temperatura. de:
Index Terms—Visualización de temperatura, LM35, LCD, a) Registrar temperaturas desde 0◦ C hasta 100◦ C en
Tonos de frecuencia. pasos de 1◦ C usando el sensor de temperatura
LM35.
Nota: Tenga en cuenta que debido a limitaciones
del operacional, es posible que no se puedan reg-
I. I NTRODUCCI ÓN
istrar las temperaturas cercanas a 0◦ C y a 100◦ C.

E L convertidor analógico digital es capaz de convertir


una señal de voltaje variable en valores digitales a
una resolución de 8 o 10 bits.[1] En este sentido en este
b) Emitir 13 tonos desde 440 Hz hasta 880 Hz de-
pendiendo de la temperatura registrada de acuerdo
a la siguiente tabla1.
proyecto el objetivo principal consiste en aprender a manejar
el conversor analógico-digital por medio de interrupciones
para muestrear una señal analógica generada por el sensor
LM35 en el pin RA0/AN0 para poder emitir ciertos tonos
a través de un buzzer pasivo en determinados rangos de
temperatura.

II. OBJETIVOS
A. OBJETIVO GENERAL
• Diseñar un termómetro-zumbador por medio de interrup-
ciones para visualizar en una LCD de 16x2 la temperatura
registrada por un sensor analógico y el tono producido por
un zumbador (buzzer)

III. EXPERIMENTACI ÓN Fig. 2: Tabla de frecuencias con respecto a la temperatura


A. Requerimientos
c) Visualizar en la primera linea de la LCD la tem-
1) Calcular los valores de los elementos del circuito de la peratura registrada. Deberá visualizarla de la forma
Fig. 1.
T emp : xyz ◦ C
PROYECTO N3-TERMÓMETRO ZUMBADOR 2

donde xyz representa el valor de la temperatura.


Nota: en caso que la temperatura necesite sola-
mente 1 o 2 dı́gitos, no se deben agregar ceros
para completar los tres dıgitos pero si reservar sus
espacios. Por ejemplo, si la temperatura es 8◦ C, la
LCD mostrara en su primera lınea
Fig. 3: Imagen tomada del Datasheet del sensor
T emp : 8 ◦ C
LM325,página 14
y las palabras “Temp” y “◦ C” deberán permanecer
fijas en una posición de la LCD.
d) Visualizar en la segunda lınea de la LCD el tono VI. C ÓDIGO IMPLEMENTADO
emitido por el zumbador BUZ1. Debera visu- A continuación, se presenta la descripción del código
alizarla de la forma utilizado para programar el PIC18F4550 a través de la
herramienta MPLAB en lenguaje C:
T ono : xyz Hz
donde xyz representa el valor de la frecuencia
fundamental. Carpeta Header Files:
Nota: Aplica la misma nota dada para la primera
#ifndef flex lcd H
linea de la LCD.
# define flex lcd H
# define XTAL FREQ 8000000
IV. MATERIALES
ifndef es muy usada para evitar que un archivo de cabecera
• PIC18F4550
sea incluido dos veces en un programa al momento de
• Pickit-3
compilarlo.
• Oscilador de cristal de 8 MHz
De esta forma, si cabecera-h no está definido antes de
• 2- Condensadores de 33µf, 1µf
incluir este archivo, se define cabecera-h y se incluyen las
• Resistencias de 2,5 kΩ, 10 kΩ, 75 Ω
declaraciones y código.
• 1 LCD 16x2 HDHD44780U
• 1 sensor de temperatura LM35
• Transistor # d e f i n e LCD RD7 PORTDbits . RD7
• Amplificador Operacional LM324 # d e f i n e TRISRD7 T R I S D b i t s . TRISD7
• 1 buzzer pasivo
# d e f i n e LCD RD6 PORTDbits . RD6
V. C ÁLCULOS # d e f i n e TRISRD6 T R I S D b i t s . TRISD6
Cálculo de las resistencias para la ganancia del ampli-
ficador LM324 # d e f i n e LCD RD5 PORTDbits . RD5
  # d e f i n e TRISRD5 T R I S D b i t s . TRISD5
RF
Vo = + 1 V1 (1)
R1 # d e f i n e LCD RD4 PORTDbits . RD4
# d e f i n e TRISRD4 T R I S D b i t s . TRISD4

• Asumiendo RF =10kΩ y V1 = 5v se obtiene: # d e f i n e LCD EN PORTDbits . RD3


RF # d e f i n e TRISEN T R I S D b i t s . TRISD3
+1 =5 (2)
R1
# d e f i n e LCD RS PORTDbits . RD2
# d e f i n e TRISRS T R I S D b i t s . TRISD2
R1 = 2.5kΩ (3) Esta parte del código relaciona los puertos del PIC18F4550
con los pines de la LDC, en este caso se configuraron
dependiendo del circuito de la figura1.
Resistencias para el sensor LM35

• la resistencia R3 y el condensador C6 conectados al # define 128


sensor LM35 se escogieron del datasheet: # define 19
# define 148
1) Diagramas de flujo del programa implementado con el
# define 212
PIC18F4550 [Ver anexo]
# define 1
# define 2
# define 12
PROYECTO N3-TERMÓMETRO ZUMBADOR 3

# define 14 TRISEN = 0 ;
# define 15 TRISRS = 0 ;
# define 16 LCD RD7 = 0 ;
# define 20 LCD RD6 = 0 ;
# define 0 LCD RD5 = 0 ;
# define 8 LCD RD4 = 0 ;
# define 24 LCD EN = 0 ;
# define 28 LCD RS = 0 ;
delay us (5500);
Este código nos define todas los comandos a las cuales se
delay us (5500);
puede recurrir como: ubicar el cursor en el primer renglón,
delay us (5500);
ubicar el cursor en el segundo renglón, ubicar el cursor
delay us (5500);
en el tercer renglón, ubicar el cursor en el cuarto renglón,
delay us (5500);
Limpiar la pantalla, Regreso del cursor al inicio, apagar el
delay us (5500);
cursor, Selección de subrayado, parpadeo del cursor, cursor se
f o r ( d a t a = 1 ; d a t a < 4 ; d a t a ++)
mueve a la izquierda, cursor se mueve a la derecha, apagar
{
el LCD, encender la LCD, Desplazamiento a la izquierda,
LCD RD7 = 0 ; LCD RD6 = 0 ;
Desplazamiento a la derecha. Se les asigna un numero según
LCD RD5 = 1 ; LCD RD4 = 1 ;
diga la configuración en el dathaseet. Si se quiere mayor
LCD EN = 0 ;
información ir a la pagina 40 del datasheet se deja una imagen
LCD RS = 0 ; LCD RD7 = 0 ;
de unos pocos comandos.
LCD RD6 = 0 ; LCD RD5 = 1 ;
LCD RD4 = 1 ;
LCD EN = 1 ; LCD RS = 0 ;
delay us ( 5 ) ;
LCD RD7 = 0 ; LCD RD6 = 0 ;
LCD RD5 = 1 ; LCD RD4 = 1 ;
LCD EN = 0 ;
LCD RS = 0 ;
delay us (5500);
}
LCD RD7 = 0 ; LCD RD6 = 0 ; LCD RD5= 1;
LCD RD4 = 0 ; LCD EN = 0 ; LCD RS = 0;
LCD RD7 = 0 ; LCD RD6 = 0 ; LCD RD5= 1;
LCD RD4 = 0 ; LCD EN = 1 ; LCD RS = 0;
delay us ( 5 ) ;
LCD RD7 = 0 ; LCD RD6 = 0 ; LCD RD5= 1;
LCD RD4 = 0 ; LCD EN = 0 ; LCD RS = 0;
Fig. 4: ejemplo de configuración en bit para el comando delay us (5500);
d a t a = 4 0 ; Lcd Cmd ( d a t a ) ;
d a t a = 1 6 ; Lcd Cmd ( d a t a ) ;
void Lcd Init ( void ) ; d a t a = 1 ; Lcd Cmd ( d a t a ) ;
v o i d Lcd Out ( u n s i g n e d c h a r y , d a t a = 1 5 ; Lcd Cmd ( d a t a ) ;
unsigned char x , const char ∗ buffer ) ; }
Se declaran las instrucciones que se van a realizar en la
v o i d Lcd Out2 ( u n s i g n e d c h a r y ,
función Lcd-Init. Esta función se realiza para inicializar la
unsigned char x , char ∗ buffer ) ;
LCD y se va a llamar dentro de nuestro main. Esta función
es tipo void por tanto se considerarı́a como un método que
v o i d Lcd Chr CP ( c h a r d a t a ) ;
no retorna nada.
v o i d Lcd Cmd ( u n s i g n e d c h a r d a t a ) ;
Prototipo de las funciones que se van a crear y utilizar.
v o i d Lcd Out ( u n s i g n e d c h a r y ,
unsigned char x , const char ∗ buffer )
void Lcd Init ( void ){ {
unsigned char data ; unsigned char data ;
TRISRD7 = 0 ; switch ( y)
TRISRD6 = 0 ; {
TRISRD5 = 0 ; c a s e 1 : d a t a = 128 + x ; b r e a k ;
TRISRD4 = 0 ; c a s e 2 : d a t a = 192 + x ; b r e a k ;
PROYECTO N3-TERMÓMETRO ZUMBADOR 4

c a s e 3 : d a t a = 148 + x ; b r e a k ; LCD EN = 1 ; d e l a y u s ( 5 ) ; LCD EN = 0 ;


c a s e 4 : d a t a = 212 + x ; b r e a k ; delay us ( 5 ) ; delay us (5500);
d e f a u l t : break ; }
}
Esta función escribe el resultado en formato ASCII.
Lcd Cmd ( d a t a ) ;
while (∗ b u f f e r )
{ v o i d Lcd Cmd ( u n s i g n e d c h a r d a t a ) {
Lcd Chr CP ( ∗ b u f f e r ) ; LCD EN = 0 ; LCD RS = 0 ;
b u f f e r ++; LCD RD7 = ( d a t a & 0 b10000000 )>>7;
} LCD RD6 = ( d a t a & 0 b01000000 )>>6;
return ; LCD RD5 = ( d a t a & 0 b00100000 )>>5;
} LCD RD4 = ( d a t a & 0 b00010000 )>>4;
delay ( 1 0 ) ;
La función Lcd-Out: esta función requiere de tres parámetros LCD EN = 1 ; d e l a y u s ( 5 ) ; LCD EN = 0 ;
para su funcionamiento Y y X que son las coordenadas LCD RD7 = ( d a t a & 0 b00001000 )>>3;
dentro de la LCD filas columnas, por ultimo un puntero. Esta LCD RD6 = ( d a t a & 0 b00000100 )>>2;
función se utiliza para visualizar en la LCD. LCD RD5 = ( d a t a & 0 b00000010 )>>1;
LCD RD4 = ( d a t a & 0 b00000001 ) ;
v o i d Lcd Out2 ( u n s i g n e d c h a r y , delay ( 1 0 ) ;
unsigned char x , char ∗ buffer ) LCD EN = 1 ; d e l a y u s ( 5 ) ; LCD EN = 0 ;
{ delay us ( 5 5 0 0 ) ; / / Delay 5us ( ) ;
unsigned char data ; }
switch ( y) # endif
{ Ésta función me limpia dependiendo del parámetro que se le
c a s e 1 : d a t a = 128 + x ; b r e a k ; pase, puede limpiar la LCD o apagar el cursor.
c a s e 2 : d a t a = 192 + x ; b r e a k ;
c a s e 3 : d a t a = 148 + x ; b r e a k ;
c a s e 4 : d a t a = 212 + x ; b r e a k ; Código del archivo.c:
d e f a u l t : break ;
} # include <xc . h>
Lcd Cmd ( d a t a ) ; # include ” f l e x l c d . h”
while (∗ b u f f e r ) # include <p i c 1 8 f 4 5 5 0 . h>
{ # include < s t d i o . h>
Lcd Chr CP ( ∗ b u f f e r ) ; # define XTAL FREQ 8000000
b u f f e r ++; Se incluyen las librerı́as a utilizar en el proyecto,
} la librerı́a flex lcd.h es la que se utiliza para la
return ; inicialización y manejo de la LCD, esta fue extraı́da
} del link ”https://github.com/c3turotime/Microcontroladores
La función Lcd-Out2; esta función requiere de tres parámetros /blob/master/CAD.X/flex lcd.h” de autorı́a del señor
para su funcionamiento los 2 primeros que se refieren a la HECTOR RAMOS.
posición dentro de la LCD y el ultimo una variable char, la
diferencia entre esta función y la anterior es que el tercer Se crea una función:
parámetro no es puntero. s h o r t getCad ( char c a n a l ){
switch ( canal ){
v o i d Lcd Chr CP ( c h a r d a t a ) { case 0:
LCD EN = 0 ; LCD RS = 1 ; ADCON0=0 b00000010 ;
LCD RD7 = ( d a t a & 0 b10000000 )>>7; break ;
LCD RD6 = ( d a t a & 0 b01000000 )>>6; }
LCD RD5 = ( d a t a & 0 b00100000 )>>5; ADON= 1 ;
LCD RD4 = ( d a t a & 0 b00010000 )>>4; GO DONE= 1 ;
delay ( 1 0 ) ; r e t u r n ADRESH ;
LCD EN = 1 ; d e l a y u s ( 5 ) ; LCD EN = 0 ; }
LCD RD7 = ( d a t a & 0 b00001000 )>>3; Esta función es la que me permite retornar el ADRESH el
LCD RD6 = ( d a t a & 0 b00000100 )>>2; valor que esta saliendo del termómetro pero no real, además
LCD RD5 = ( d a t a & 0 b00000010 )>>1; habilita y deshabilita el bit ADON.
LCD RD4 = ( d a t a & 0 b00000001 ) ;
delay ( 1 0 ) ; Se crea el Main y se procede con las instrucciones:
PROYECTO N3-TERMÓMETRO ZUMBADOR 5

v o i d main ( v o i d ) {
OSCCON= 0 b01110010 ;
Se configura el oscilador Primero se presenta la imagen de

Fig. 7: bits del ADCON2 para su programación

Fig. 5: bits del ADCON0 para su programación


ADCON2 = 0 b00010001 ;

pines del ADCON0 sacada del datasheet para su correcta Tiempo de Adquisición 4 Tad,Tiempo de Conversión Fosc/8,
configuración: Justificación derecha (modo-8 bits).
Se procede con la configuración del Timer1:
ADCON0 = 0 b00000011 ;
Selecciona el Canal Analógico y Habilita el Módulo AD
T1CON = 0 b10000001 ;
(ADON)y el GO DONE.
En ésta linea de código se pone en Modo 16 bits, Reloj
derivado de otra fuente, Preescaler=1,Oscilador del TMR1
encendido, Sincroniza con el reloj externo, El bit 2 es
ignorado en modo contador, Reloj externo, Contador y por
ultimo Habilita TMR1

TMR1H = 0 xF8 ; / / 1 . 9 4 ms / 1 0 63596


TMR1L = 0x6C ;
Éstas 2 lineas de código inicializan el timer para que se
desborde cada 1.94ms

INTCON = 0 b10000000 ;
Ésta linea de código Habilitar interrupciones globales
GIE, Deshabilita interrupciones periféricas, Deshabilita el
desbordamiento del TMR0, Deshabilita la interrupción externa
y Deshabilita la interrupción por cambio del puerto B.
Fig. 6: bits del ADCON1 para su programación
INTCON3 = 0 ;
Imagen de pines del ADCON1 sacada del datasheet para su PIR1 = 0 ;
correcta configuración: P I E 1 b i t s . TMR1IE = 1 ;
RCONbits . IPEN = 1 ;
ADCON1 = 0 b00001110 ; I P R 1 b i t s . TMR1IP = 1 ;
Configura el Puerto AN0 como Entrada Analógica y los Éstas lineas de código me permiten Borrar bandera de
demás como Digitales, Selecciona Voltajes de Referencia TIMER1, Habilitar interrupción TIMER1, Habilita los niveles
(5v-0v). de prioridad, Alta prioridad.

float temperatura ;
Imagen de pines del ADCON2 sacada del datasheet para su c h a r temp [ 2 0 ] ;
correcta configuración: TRISA= 0 x f f ;
PROYECTO N3-TERMÓMETRO ZUMBADOR 6

TRISD= 0 ; Lcd Out ( 2 , 1 , ” Tono : 697Hz ” ) ;


f r =697;
Lcd Init ( ) ; }
Lcd Cmd (LCD CLEAR ) ; e l s e i f ( 6 1 < T && T < 68){
Lcd Cmd ( LCD CURSOR OFF ) ; Lcd Out ( 2 , 1 , ” Tono : 733Hz ” ) ;
f r =733;
Se crean dos variables locales, una tipo float que se va a
}
utilizar para realizar un calculo y ası́ dar el valor en grados de
e l s e i f ( 6 8 < T && T < 76){
nuestro sensor y la otra en forma de arreglo de 20 posiciones
Lcd Out ( 2 , 1 , ” Tono : 770Hz ” ) ;
que se va utilizar para la visualización, se configuran los
f r =770;
puertos A Y D, como entradas y salidas respectivamente. se
}
inicializa y limpia la LCD.
e l s e i f ( 7 6 < T && T < 84){
Lcd Out ( 2 , 1 , ” Tono : 807Hz ” ) ;
while (1){ f r =807;
t e m p e r a t u r a =( getCad ( 0 ) ∗ 5 ∗ 1 0 0 / 2 5 6 ) ; }
s p r i n t f ( temp , ”Temp : %2.2 f C” , e l s e i f ( 8 4 < T && T < 91){
temperatura ); Lcd Out ( 2 , 1 , ” Tono : 843Hz ” ) ;
Lcd Out2 ( 1 , 1 , temp ) ; f r =843;
delay ms ( 2 0 0 ) ; }
} e l s e i f ( 9 1 < T && T < 100){
return ; Lcd Out ( 2 , 1 , ” Tono : 880Hz ” ) ;
f r =880;
La primera linea es un ciclo infinito, la segunda es la que
}
nos permite convertir los voltios del LM35 a grados ◦ C, la
}
tercera es la que da formato a lo que se va a escribir en la
LCD, la cuarta es la que me visualiza en la LCD. En la función Tono, solo se realiza la una serie de
condicionales para indicar que debe aparecer en la LCD
A continuación se describen las funciones realizadas: dependiendo del valor de la temperatura y aparte se asigna
un valor a la variable ”fr”, qué va a ser utilizada en las
v o i d Tono ( f l o a t T ) {
interrupciones.
i f ( T <= 7 ) {
Lcd Out ( 2 , 1 , ” Tono : 440Hz ” ) ;
A continuación se va a declarar la función del bloque
f r =440;
de interrupciones:
}
e l s e i f ( 7 < T && T < 1 4 ) { void h i g h p r i o r i t y i n t e r r u p t
Lcd Out ( 2 , 1 , ” Tono : 477Hz ” ) ; InterrupcionTimer1 ( void ){
f r =477;
} P I R 1 b i t s . TMR1IF = 0 ;
e l s e i f ( 1 4 < T && T < 2 2 ) { switch ( f r ){
Lcd Out ( 2 , 1 , ” Tono : 513Hz ” ) ; case 440:
f r =513; TMR1H = 0 xF7 ;
} TMR1L = 0 x54 ;
e l s e i f ( 2 2 < T && T < 3 0 ) { break ;
Lcd Out ( 2 , 1 , ” Tono : 550Hz ” ) ;
f r =550; case 477:
} TMR1H = 0 xF8 ;
e l s e i f ( 3 0 < T && T< 3 7 ) { TMR1L = 0 x08 ;
Lcd Out ( 2 , 1 , ” Tono : 587Hz ” ) ; break ;
f r =587;
} case 513:
e l s e i f ( 3 7 < T && T< 4 5 ) { TMR1H = 0 xF8 ;
Lcd Out ( 2 , 1 , ” Tono : 623Hz ” ) ; TMR1L = 0x9E ;
f r =623; break ;
}
e l s e i f ( 4 5 < T && T < 5 3 ) { case 550:
Lcd Out ( 2 , 1 , ” Tono : 660Hz ” ) ; TMR1H = 0 xF9 ;
f r =660; TMR1L = 0x2A ;
} break ;
e l s e i f ( 5 3 < T && T < 6 1 ) {
PROYECTO N3-TERMÓMETRO ZUMBADOR 7

case 587: ”Tono” descrita anteriormente, lo único que esta hace es


TMR1H = 0 xF9 ; cambiar el valor de inicialización del timer1 para ası́ cambiar
TMR1L = 0 x98 ; el valor del tiempo de interrupción y generar unos(1) y
break ; ceros(0) cada determinando tiempo generando una onda
cuadrada por decirse de alguna manera y ası́ generar la
case 623: frecuencia determinada, para saber cuál es el valor que se
TMR1H = 0 xF9 ; debe tomar se realiza el siguiente procedimiento con cada
TMR1L = 0xFC ; frecuencia:
break ;
F: Es la frecuencia deseada.
case 660:
TMR1H = 0xFA ; T: Es el perı́odo de la señal cuadrada, el inverso de la
TMR1L = 0 x60 ; frecuencia. Como se desea generar una señal con ciclo útil
break ; de 50 %, se divide el perı́odo en 2, éste será el valor t.

case 697: t: Tiempo que el pin RBO se matendrá en estado ”1”


TMR1H = 0xFA ; lógico o en estado ”0” lógico, es decir, el tiempo que tardará
TMR1L = 0xA6 ; el TMR1 en desbordarse. Éste tiempo se calcula usando la la
break ; fórmula (4):

case 733:  
TMR1H = 0xFA ; 1
t= (P RE)(65536 − X) (4)
TMR1L = 0 xF6 ; Fosc
break ;

case 770: El valor que necesitamos hallar es la incógnita X, por lo


TMR1H = 0xFB ; que la despejamos de la fórmula (4).
TMR1L = 0 x28 ;
break ; Focs: Es la frecuencia del osicilador externo elegido
arbitrariamente de 10MHz.
case 807:
TMR1H = 0xFB ; PRE: Es el valor de Pre-escaler que fue elegido como
TMR1L = 0 x64 ; 1 para evitar retardos acumulativos posteriores.
break ;
El número X se convierte a formato hexadecimal y se
case 843: separa en dos partes, la parte superior es almacenada en
TMR1H = 0xFB ; TMR1H y la parte inferior en TRM1L, ese valor será el
TMR1L = 0xA0 ; nuevo tiempo que demore el microcontrolador en interrumpir.
break ; VII. C ONCLUSIONES
case 880: • Con el desarrollo de este proyecto se aprendió a
TMR1H = 0xFB ; configurar por medio de interrupciones el conversor
TMR1L = 0xD2 ; analógico/Digital en el pin RA0/ANO.
break ; • Se aprendió a configurar y usar correctamente una LCD
} de 16X2
LATBbits . LB0 = ! LATBbits . LB0 ; • Se aprendió a usar un buzzer pasivo para generar tonos
return ; en un rango determinado de temperaturas,esto a través de
} una señal cuadrada y la configuración del TMR1.
• Se aprendió a generar interrupciones con diferentes fre-
En esta función de interrupciones lo primero que se debe ver cuencias.
es la forma de su declaración ya que es la única que lleva la
preposición ”void high priority interrupt” antes del nombre, R EFERENCIAS
que la identifica como el bloque de interrupciones, ya sean [1] https://www.makerelectronico.com/convertidor-analogo-digital-adc-
por timer o por hardware (este bloque siempre se va ejecutar pic18f4550/
[2] http://nitehack.blogspot.com/2013/03/termometro-digital-con-pic.html
cuando el timer se desborde). [3] http://microcontroladores-mrelberni.com/pantallas-lcd/
[4] http://www.electronicwings.com/pic/lm35-temperature-sensor-
En ésa función se apaga la bandera y un ”swicht case” interfacing-with-pic18f4550
[5] https://docplayer.es/8151939-Usando-un-pic-para-la-generacion-de-
que recibe el valor de ”fr” que es definido en la función tonos-de-audio.html
PROYECTO N3-TERMÓMETRO ZUMBADOR 8

[1]
Fig. 8: Diagrama para visualizar en la LCD
PROYECTO N3-TERMÓMETRO ZUMBADOR 9

Fig. 9: Diagrama para la función Tono


PROYECTO N3-TERMÓMETRO ZUMBADOR 10

Fig. 10: Diagrama de interrupciones por TMR1

Vous aimerez peut-être aussi