Académique Documents
Professionnel Documents
Culture Documents
SALESIANA
SISTEMAS MICROPROCESADOS I
PRACTICA Nº6
ERIKA ABRIL
VINICIO DAVILA
REMIN ZAMBRANO
SEXTO SEMESTRE
OBJETIVO:
Utilizar los conversores A/D y D/A del Microcontrolador PIC
TEMA:
Conversión Análoga Digital y Digital Análoga.
1:
Conversor A/D con el Microcontrolador PIC 16F877
Se adquiere la señal de un potenciómetro entre 0 y 5 voltios y se observa en el LCD un
1
valor entre 0 y 1024.
Esquemático
CÓDIGO :
program Voltaje
DIM voltaje as word
dim valor as string [10]
sub procedure init
ADCON1=$80
TRISA=$FF
Lcd_config(portb,7,6,5,4,portb,0,1,2)
lcd_cmd(lcd_cursor_off)
end sub
main:
init
WHIlE TRUE
voltaje=Adc_read(0)
WORDTOSTR(voltaje,valor)
lcd_cmd(lcd_clear)
LCD_OUT(1,1,valor)
delay_ms(300)
WEND
end.
ADCON1=$80
TRISA=$FF
Lcd_config(portb,7,6,5,4,portb,0,1,2)
lcd_cmd(lcd_cursor_off)
end sub
main:
init
WHIlE TRUE
voltaje=Adc_read(0)
WORDTOSTR(voltaje,valor)
2
lcd_cmd(lcd_clear)
LCD_OUT(1,1,valor)
delay_ms(300)
WEND
end.
2:
CÓDIGO :
program Conversor
DIM voltaje as float
dim valor as string [10]
sub procedure init
OPTION_REG = $80
ADCON1=$80
3
TRISA=$FF
lcd_config(portb,7,6,5,4,portb,0,1,2)
lcd_cmd(lcd_cursor_off)
end sub
main:
init
WHILE TRUE
voltaje=Adc_read(0)
voltaje=(voltaje*5)/1024
FLOATTOSTR(voltaje,valor)
lcd_cmd(lcd_clear)
LCD_OUT(1,1,valor)
delay_ms(300)
WEND
end.
Entradas:
1. Señal análoga
Salidas:
1. Escribir en el LCD
2. Señales de datos
Proceso:
1. Dimensiono la variable voltaje como float.
2. Dimensiono la variable valor como String con un array de diez elementos.
3. Inicializó un sub procedimiento.
4. Configuro el option_reg
5. Configuro entrada análoga y voltaje de referencia.
6. Configuro el puerto A como entrada
7. Configuro los registros internos del LCD
8. Apago el cursor
9. Termino el sub proceso
10. Guardo en la variable voltaje los datos de entrada
11. Realizo una conversión para obtener el voltaje en voltios
12. Cambio la variable voltaje a string
13. Presento el resultado en el LCD
14. Retardo de 300ms
3:
Medición de temperatura con LM35
Esquemático
4
CÓDIGO :
program temperatura
dim temp_res as word
Resultado as word
OutTxt as byte[5]
main:
ADCON1=%10001110
TRISA= %00000001
trisb=0
lcd_config(portb,7,6,5,4,portb,0,1,2)
LCD_Cmd(Lcd_CURSOR_OFF)
Lcd_Cmd(Lcd_Clear)
Lcd_Out(1,1,"Temperat:")
WHILE TRUE
temp_res=Adc_Read(0)
Resultado=temp_res*48
wordtostr(Resultado,OutTxt)
Lcd_Chr(1,11,OutTxt[0])
Lcd_Chr(1,12,OutTxt[1])
Lcd_Chr(1,13,OutTxt[2])
Lcd_Chr(1,14,".")
Lcd_Chr(1,15,OutTxt[3])
Lcd_Chr(1,16,OutTxt[4])
delay_ms(1000)
wend
end.
Entradas:
1. Señal análoga del lm35
Salidas:
1. Escribir en el LCD
2. Señales de datos
Proceso:
1. Dimensiono la variable temp_res y resultado como palabra.
2. Dimensiono la variable outtxt como byte de 5.
3. Configuro entrada análoga y voltaje de referencia.
4. Configuro el puerto A como entradas
5. Configuro el puerto b como salidas
5
6. Configuro los registros internos del LCD
7. Apago el cursor
8. Limpiamos el lcd
9. Mostramos “temp” en el lcd
10. Guardo en la variable temp_res los datos de entrada analogica
11. Guardo en una variable resultado la conversión ADC a temperatura
12. Cambio la variable resultado a string
13. Presento el resultado
6
7
8