Conversores DAC y ADC Con PIC16F877A
Conversores DAC y ADC Con PIC16F877A
Conversores DAC y ADC Con PIC16F877A
UNIVERSIDAD POLITÉCNICA
SALESIANA
SISTEMAS MICROPROCESADOS 1
DAVID ESPIN
ANDRÉS MOGRO
QUITO - ECUADOR
PRÁCTICA 05
Entradas:
Procesos:
Salidas:
CÓDIGO.
program AnalogoDigital
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.
DIAGRAMA DE FLUJOS.
INICIO
Configuro el puerto A
como entrada y el
puerto B como salida
Realizo subrutina
Configuro el LCD
Muestro la conversión
el LCD
ESQUEMÁTICO.
FOTOS.
2. Conversión A/D con el microcontrolador pic 16f877A
Se requiere un valor entre 0 y 5 voltios y se observa en el LCD el
valor entre 0 y 5 voltios.
Entradas:
Procesos:
Salidas:
CÓDIGO.
program analogdig1
option_reg=$80
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)
voltaje=(voltaje*5)/1024
floattostr(voltaje, valor)
lcd_cmd(lcd_clear)
lcd_out(1,1,valor)
delay_ms(300)
wend
end.
DIAGRAMA DE FLUJOS.
INICIO
Configuro el puerto A
como entrada y el
puerto B como salida
Realizo subrutina
Configuro el LCD
Muestro el voltaje en el
LCD
Retardo de 300 ms
ESQUEMÁTICO.
FOTOS.
3. Medición de temperatura con LM35
Entradas:
Procesos:
Salidas:
CÓDIGO.
program LM35
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,"temperatura: ")
while true
temp_res = adc_read(0)
resultado = temp_res*48
wordtostr(resultado, outtxt)
lcd_chr(1,6,outtxt[0])
lcd_chr(1,7,outtxt[1])
lcd_chr(1,8,outtxt[2])
lcd_chr(1,9,".")
lcd_chr(1,10,outtxt[3])
lcd_chr(1,11,outtxt[4])
wend
end.
DIAGRAMA DE FLUJOS.
INICIO
Configuro el puerto A
como entrada y el
puerto B como salida.
Mostramos “Temp
en el LCD”
Leo la entrada
analógica
Realizamos la conversión
ADC/temperatura
Muestro la conversión
en el LCD
Retardo de 100 ms
ESQUEMÁTICO.
FOTOS.
4. Conversión digital análoga
Entradas:
Procesos:
Salidas:
La salida del puerto D hacia el DAC 0808 y del DCA 0808 hacia el LM 741
para observar la conversión.
CÓDIGO.
program DAC
trisd=0
end sub
dim i as byte
dim a as byte
main:
init
while true
a=0
i=0
portd=a
next i
wend
end.
ESQUEMÁTICO Y SIMULACIÓN.
FOTOS.
Procesos:
• Declaro variables.
• Configuro puerto B como salida
• Configuro el LCD para el puerto B
• Configuro puerto C (portc.2)
• Leo el valor de la conversión
Salidas:
CÓDIGO.
program conversor12
dim i as byte
dim j as byte
dim k as word
dim l as float
sub procedure tx
k=i <<8
k=k+j
k=k and %1111111111111000
k=k>>3
wordtostr(k,txt1)
l=k
floattostr(l,txt1)
end sub
main:
TRISB=0
Lcd_Config(PORTb,3,2,1,0,PORTB,5,6,4)
portc.2=1
while true
portc.2=0
Spi_Write(%1011)
i = Spi_Read(i)
j = Spi_Read(j)
portc.2=1
tx
ret1
Lcd_Out(2,7, txt1)
wend
end.
DIAGRAMA DE FLUJOS.
INICIO
Configuro el puerto B
como salida
Defino variables
Configuro el LCD
Muestro el voltaje en el
LCD
ESQUEMÁTICO.
FOTOS.
CONCLUSIONES.
BIBLIOGRAFÍA