Académique Documents
Professionnel Documents
Culture Documents
VISUALIZACIÓN DE TEMPERATURA Y
GENERACIÓN DE TONOS PIC18F4550
Carlos A. Marin Y. 20151005124, Yeison E. Gutierrez, 201510050121, Paula A. Ferreira 20132005989
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)
# 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
v o i d main ( v o i d ) {
OSCCON= 0 b01110010 ;
Se configura el oscilador Primero se presenta la imagen de
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
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
case 733:
TMR1H = 0xFA ; 1
t= (P RE)(65536 − X) (4)
TMR1L = 0 xF6 ; Fosc
break ;
[1]
Fig. 8: Diagrama para visualizar en la LCD
PROYECTO N3-TERMÓMETRO ZUMBADOR 9