Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2010 UNIVERSIDAD
POLITECNICA
FERNANDO ITAS SALESIANA
2010-05-18 PRACTICA #6
SISTEMAS MICROPROCESADOS I
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
OBJETIVO
• UTILIZAR LOS CONVERSORES A/D Y D/A DEL MICROCONTROLADOR
PIC
Ejercicio Nº 1:
A LGO R IT M O
Entradas:
• Señal análoga
Salidas:
• Escribir en el LCD
• Señales de datos
Proceso:
DIGRAMA DE FLUJO
CÓDIGO
program Voltaje
DIM voltaje as word
dim valor as string [10]
sub procedure init
Siste m a s Microproc e sa d osI
29
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)
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
LCD_OUT(1,1,valor)
delay_ms(300)
WEND
end.
SIMULACION
Ejercicio Nº 2
ALGORITMO
Entradas:
• Señal análoga
Salidas:
• Escribir en el LCD
• Señales de datos
Proceso:
• Dimensiono la variable voltaje como float.
• Dimensiono la variable valor como String con un array de diez elementos.
• Inicializó un sub procedimiento.
• Configuro el option_reg
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
DIAGRAMA DE FLUJO
CÓDIGO
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
program Conversor
DIM voltaje as float
dim valor as string [10]
sub procedure init
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)
Siste m a s Microproc e sa d osI
32
voltaje=(voltaje*5)/1024
FLOATTOSTR(voltaje,valor)
lcd_cmd(lcd_clear)
LCD_OUT(1,1,valor)
delay_ms(300)
WEND
end.
SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
Ejercicio Nº 3:
Medición de temperatura con LM35
ALGORITMO
Entradas:
• Señal análoga del lm35
Salidas:
• Escribir en el LCD
• Señales de datos
Proceso:
• Dimensiono la variable temp_res y resultado como palabra.
• Dimensiono la variable outtxt como byte de 5.
• Configuro entrada análoga y voltaje de referencia.
• Configuro el puerto A como entradas
• Configuro el puerto b como salidas
• Configuro los registros internos del LCD
• Apago el cursor
• Limpiamos el lcd
• Mostramos “temp” en el lcd
• Guardo en la variable temp_res los datos de entrada analogica
• Guardo en una variable resultado la conversión ADC a temperatura
• Cambio la variable resultado a string
• Presento el resultado en el LCD
• Retardo de 1000ms
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)
Siste m a s Microproc e sa d osI
35
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])
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
Lcd_Chr(1,16,OutTxt[4])
delay_ms(1000)
wend
end
DIAGRAMA DE FLUJO
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
SIMULACION
Ejercicio Nº 4:
ALGORITMO
Entradas:
• Señal de entrada
Salidas:
• Señal Triangula (Osciloscopio)
Proceso:
• Inicio sub procedimiento init
• Puerto D como salidas
• Dimensiono la variable i, a como byte
• Lazo
• Condición for 1<j<255 ,
• Sumo uno a la variable
• Escribo el valor de la Variable en el Puerto D
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
CODIGO
program DAC
sub procedure init
trisd=0
end sub
dim i as byte
dim a as byte
main:
init
while true
a=0
i=0
for i=1 to 255
a=a+1
portd=a
next i
wend
end.
DIAGRAMA DE FLUJO
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
Ejercicio Nº 5:
MCP 3202
El conversor A/D 12 bits MCP320X soporta 100K muestras por segundo, consume
400mA en modo funcionamiento y 500 nA en modo espera, alimentado de 2.7V a 5.5
V y un rango de temperatura de -40C a 85C.
Otras características son ± 1 LSB DNL y ±1 LSB INL a 100k muestras/s, si pérdida de
código y una interface de salida serie para SPI. Estos nuevos dispositivos están
disponibles de 1, 2,4, 8 canales y una gran variedad de encapsulados y números de
pines.
ALGORITMO
Entradas:
• no hay entradas
Salidas:
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
CÓDIGO.
program conversor_12
dim i as byte
dim j as byte
dim k as word
dim l as float
sub procedure tx
k=i <<8
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
k=k+j
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.
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
DIAGRAMA DE FLUJO
SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
CONCLUSIONES
BIBLIOGRAFÍA