Tutorial PROTON Manejo de Led y Display
PICELECTRONICA :: Inicio :: Microcontroladores :: Microchip :: Basic :: Proton
Página 1 de 1.
Tutorial PROTON Manejo de Led y Display
En ocasiones es necesario saber la temperatura ambiente que hay en una determinada área y casi siempre se deja de trabajo en los cursos de microcontroladores, por ello expongo aquí un termómetro simple con un sensor LM35 y un pic 16F88, el cual creo que es de los mejores o el mejor de 18 terminales, pues bien, manos a la obra, para empezar hay que mencionar que el LM35 incrementa en 1 mV por cada grado centrigrado, de ahí la conversión que se muestra en el código.
Como visto que este PIC es muy poderoso!! por el tamaño y prestaciones que posee asi como también a ganado popularidad entre otros, les dejo esta aplicación, como se dan cuenta usa un comando llamado ANSEL, el cual indica, según su hoja de datos el pin que se usará, sin mas aquí es código.
Como visto que este PIC es muy poderoso!! por el tamaño y prestaciones que posee asi como también a ganado popularidad entre otros, les dejo esta aplicación, como se dan cuenta usa un comando llamado ANSEL, el cual indica, según su hoja de datos el pin que se usará, sin mas aquí es código.
- Código:
Device = 16F88
Xtal = 4
Declare Adin_Tad = FRC
Declare Adin_Res 10 ‘ resolucin de 10 bits
Declare Adin_Stime 50 ‘ tiempo de muestreo 50ms
Declare LCD_Type 0 ‘ Tipo LCD Alpha numérico
Declare LCD_DTPin PORTB.4 ‘ El control B4,B5,B6,B7
Declare LCD_RSPin PORTB.2 ‘ RS pin B2
Declare LCD_ENPin PORTB.3 ‘ E pin B3
Declare LCD_Interface 4 ‘ Interface modo 4 bit
ANSEL = 1 ‘ ADC en RA0
ADCON1 = %10000000
TRISA.0= 1 ‘ RA0 de entrada
Dim Vadc As Word
Dim Temp As Float
Inicio:
Vadc = ADIn 0 ‘ Obtener lectura
Temp = Vadc * 500/1024 ‘ Calcular lectura 1°C=1mV
Print At 1,1,”Temp= “,Dec2 Temp
DelayMS 200
GoTo Inicio
End
Ejemplos con LED
Continuando con los ejemplos bàsicos hoy les traigo algunos con LED, display y otros, para este caso se utiliza el pic 16F84A.
Ahora se usara el puerto b para lo cual se usara un ciclo de repeticiòn.
Ahora un ejemplo básico de botones conectados al puerto A, en este ejemplo se ve una nueva instrucción la condición IF y ENDIF.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
PORTB=0 ‘Se limpia el puerto
INICIO:
PORTB.0=1 ‘Encender bit menos significativo
DelayMS 200
PORTB.0=0 ‘Apagar bit menos significativo
DelayMS 200
GoTo INICIO
End
Ahora se usara el puerto b para lo cual se usara un ciclo de repeticiòn.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
PORTB=0 ‘Se limpia el puerto
Dim i As Byte ‘Variable para usar el ciclo for
INICIO:
For i=0 To 10 ‘inicia el ciclo repetitivo 0 a 10
PORTB=0
DelayMS 200
PORTB=255
DelayMS 200
Next i ‘Cierra el ciclo
GoTo INICIO ‘Ir a inicio para hacerlo infinito
End
Ahora un ejemplo básico de botones conectados al puerto A, en este ejemplo se ve una nueva instrucción la condición IF y ENDIF.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
TRISA=15 ‘Todo el puerto A como entrada
Dim I As Byte ‘Variable para usar el ciclo for
Symbol LED1 = PORTB.0 ‘LED1 va a ser PORTB.0
Symbol LED2 = PORTB.1 ‘LED1 va a ser PORTB.1
Symbol BOTON1 = PORTA.0 ‘BOTON1 va a ser PORTB.0
Symbol BOTON2 = PORTA.1 ‘BOTON1 va a ser PORTB.1
PORTB=0
INICIO:
If BOTON1 = 0 Then ‘Se usarán condiciones IF para seleccionar
LED1 = 1
Else ‘Cuando se presiona el boton se apaga el led
LED1=0
EndIf
If BOTON2 = 0 Then
LED2 = 1
Else
LED2=0
EndIf
GoTo INICIO ‘Ir a inicio para hacerlo infinito
End
Ejemplos con display de siete segmentos
Los DISPLAY de 7 segmentos son muy útiles para representar números, frases y hasta símbolos, por lo cual se cree importante utilizarlos, para ello les dejo una serie de ejemplos básicos que fácilmente pueden crecer con su imaginación.
Primero un contador usando el decodificador, para este ejemplo se utilizó un Display cátodo común y su respectivo CI 7448. La instrucción LookUpL toma un valor de acuerdo al ciclo for que se muestra y lo escribe en PORTB
Para hacer un contador ascendente con un botón se platea el siguiente código con las instrucciones antes vistas.
Ya que estamos en esto de los contadores también se agrega un ascendente/descendente, con dos botones para el control sobre el puerto A.
Primero un contador usando el decodificador, para este ejemplo se utilizó un Display cátodo común y su respectivo CI 7448. La instrucción LookUpL toma un valor de acuerdo al ciclo for que se muestra y lo escribe en PORTB
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
Dim i As Byte ‘Variable para usar el ciclo for
PORTB=0
INICIO:
For i = 0 To 9
PORTB = LookUpL i,[0,1,2,3,4,5,6,7,8,9]
DelayMS 200
Next i
GoTo INICIO ‘Ir a inicio para hacerlo infinito
End
Para hacer un contador ascendente con un botón se platea el siguiente código con las instrucciones antes vistas.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
TRISA=15 ‘Todo el puerto A como entrada
Dim CONTADOR As Byte ‘Variable para usar el ciclo for
Symbol BOTON1 = PORTA.0 ‘BOTON1 va a ser PORTB.0
PORTB=0
INICIO:
If BOTON1 = 1 Then ‘Se usarán condiciones IF para seleccionar
DelayMS 100
CONTADOR = CONTADOR + 1
If CONTADOR > 9 Then CONTADOR=0
EndIf
PORTB=CONTADOR
GoTo INICIO ‘Ir a inicio para hacerlo infinito
End
Ya que estamos en esto de los contadores también se agrega un ascendente/descendente, con dos botones para el control sobre el puerto A.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
TRISA=15 ‘Todo el puerto A como entrada
Dim CONTADOR As Byte ‘Variable para usar el ciclo for
Symbol BOTON1 = PORTA.0 ‘BOTON1 va a ser PORTB.0
Symbol BOTON2 = PORTA.1 ‘BOTON1 va a ser PORTB.1
PORTB=0
INICIO:
If BOTON1 = 1 Then ‘Se usarán condiciones IF para seleccionar
DelayMS 100
CONTADOR = CONTADOR + 1
If CONTADOR > 9 Then CONTADOR=0
EndIf
If BOTON2 = 1 Then ‘Se usarán condiciones IF para seleccionar
DelayMS 100
CONTADOR = CONTADOR – 1
If CONTADOR < 0 Then CONTADOR = 9
EndIf
PORTB=CONTADOR
GoTo INICIO ‘Ir a inicio para hacerlo infinito
End
Ya se estudiaron ejemplos con decodificador de BCD, pero ahora se usará un display y para obtener los valores se usará un software ” Display Char” , solo basta con seleccionar el segmento a utilizar y este mandara un valor decimal a una caja de texto, según sea el display a usar, cuenta con datos de salida para Ánodo y Cátodo común, en el ejemplo que se muestra es para un display cátodo común.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
Dim i As Byte ‘Variable para usar el ciclo for
PORTB=0
INICIO:
For i = 0 To 9
PORTB = LookUpL i,[63,6,91,79,102,109,125,7,127,103]
DelayMS 200
Next i
GoTo INICIO ‘Ir a inicio para hacerlo infinito
End
Multiplexado de display de siete segmentos
Ahora un ejemplo de multiplexado de display, 4 tipo cátodo común, con un decodificador, en la imagen no se ve bien debido al barrido que realiza el PIC para que parezca que esta fijo pero en realidad se mueve a milisegundos por lo cual es imposible ver por la vista humana, para ello se usa una nueva instrucción DIG la cual toma el valor de un dígito y lo muestra en el puerto o variable que se disponga, por ejemplo:
si se tiene 1234, entonces dig 0=4, dig 1=3, dig 2=2 y dig 3=1
ahora les dejo el código para que comenten, es mismo contador de ascendente/descendente pero hasta 1000.
si se tiene 1234, entonces dig 0=4, dig 1=3, dig 2=2 y dig 3=1
ahora les dejo el código para que comenten, es mismo contador de ascendente/descendente pero hasta 1000.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
TRISA=15 ‘Todo el puerto A como entrada
Dim CONTADOR As Word
Symbol BOTON1 = PORTA.0 ‘BOTON1 va a ser PORTB.0
Symbol BOTON2 = PORTA.1 ‘BOTON1 va a ser PORTB.1
Symbol Q3 = PORTB.4
Symbol Q2 = PORTB.5
Symbol Q1 = PORTB.6
Symbol Q0 = PORTB.7
Dim UNIDAD As Byte
Dim DECENA As Byte
Dim CENTENA As Byte
Dim MILLAR As Byte
PORTB=0
INICIO:
If BOTON1 = 1 Then
DelayMS 100
CONTADOR = CONTADOR + 1
If CONTADOR >9999 Then CONTADOR=0
EndIf
If BOTON2 = 1 Then
DelayMS 100
CONTADOR = CONTADOR – 1
If CONTADOR < 0 Then CONTADOR = 9999
EndIf
DelayMS 5
PORTB= 16 + Dig 0, CONTADOR
DelayMS 5
PORTB= 32 + Dig 1, CONTADOR
DelayMS 5
PORTB= 64 + Dig 1, CONTADOR
DelayMS 5
PORTB= 128 + Dig 2, CONTADOR
DelayMS 5
PORTB=0
DelayMS 5
GoTo INICIO
End
Un ejemplo mas, este es aun mas sencillo que el anterior, se trata de formar la palabra “HOLA” en 4 display, para lo cual necesitaresmos ayuda del “Display Char” (ver descargas) formaremos las letras correspondientes y tomaremos los valores para mandarlos al puerto B, ya que los transistores que activarán los display están en el A.
- Código:
Device = 16F84A ‘PIC a usar
Xtal 4 ‘Frecuencia de reloj
TRISB=0 ‘Puerto B como salida
TRISA=0
PORTB=0
PORTA=0
INICIO:
PORTB=118 ‘Letra H
PORTA=1 ‘Activa su transistor correspondiente
DelayMS 1
PORTB= 63 ‘Letra O
PORTA=2
DelayMS 1
PORTB= 56 ‘Letra L
PORTA=4
DelayMS 1
PORTB= 119 ‘Letra A
PORTA=8
DelayMS 1
GoTo INICIO
End
Temas similares
» Tutorial de PROTON manejo de LCD
» Tutorial de PROTON manejo de teclado matricial
» Tutorial de PROTON manejo de GLCD 128x64 pixeles
» Manejo del Display de 7 Segmentos en CCS
» MANEJO DEL C.I. 74HC164 Y DISPLAY
» Tutorial de PROTON manejo de teclado matricial
» Tutorial de PROTON manejo de GLCD 128x64 pixeles
» Manejo del Display de 7 Segmentos en CCS
» MANEJO DEL C.I. 74HC164 Y DISPLAY
PICELECTRONICA :: Inicio :: Microcontroladores :: Microchip :: Basic :: Proton
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.