PIc luces
LUCES TIPO AUTO FANTÁSTICO CON PIC16F84A
Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Micro controladores PIC, en esta ocasión un circuito es muy fácil de realizar además con una gran armonía visual, su sombre es luces tipo auto fantástico ya que con unos sencillos componentes se puede tener distintos efectosvisualizados en los LEDs. A demás es una pequeña demostración de la gran cantidad de formas en las cuales podemos utilizar el ya conocido PIC16F84A.
En este caso tenemos en el puerto B del PIC conectamos LEDs con sus debidas resistencias de 330Ω, los cuales se encienden de distintas formas y cada sentencia o efecto es activado mediante pulsadores en arreglo pull-up conectados en el puerto A denuestro PIC16F84A. El circuito también cuenta con su botón de RESET conectado al pin designado paro ello en el PIC que en este caso es el pin número 4, también tiene un cristal de cuarzo de 4MHz y sus debidos capacitores de 22pF para establecer la frecuencia de trabajo del PIC. Todo el circuito se alimenta a 5 volts.
El circuito se muestra a continuación:
El código en Basic para este circuito es elsiguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
AllDigital
TRISA = 1
TRISB = 0
digito var Byte
veces var Byte
inicio:
If PORTA.0 = 1 Then
For veces = 0 To 255
For digito = 0 To 33 LookUp digito, [$00, $01, $03, $07, $0f, $1f, $3f, $7f, $ff, $fe, $fc, $f8, $f0, $e0, $c0, $80, $00, $80, $c0, $e0, $f0, $f8, $fc, $fe, $ff, $7f, $3f, $1f, $0f, $07, $03, $01, $00], PORTB
pause 75
Next digito
Next veces
Endif
If PORTA.1 = 1 Then
For veces = 0 To 255
For digito = 0 To 8
LookUp digito, [$00, $81, $42,$24, $18, $24, $42, $81], PORTB
pause 75
Next digito
Next veces
Endif
If PORTA.2 = 1 Then
For veces = 0 To 255
For digito = 0 To 17
LookUp digito, [$01, $03, $07, $0f, $1f, $3f, $7f, $ff, $80, $c0, $e0, $f0, $f8, $fc, $fe, $ff], PORTB
pause 75
Next digito
Next veces Endif
If PORTA.3 = 1 Then
For veces = 0 To 255
For digito = 0 To 13
LookUp digito, [$03, $06, $0c, $18, $30, $60, $c0, $60, $30, $18, $0c, $06, $03], PORTB
pause 75
Next digito
Next veces
Endif
If PORTA.4 = 1 Then
For veces = 0 To 255
For digito = 0 To 71
LookUp DIGITO,[$00, $01, $02, $04, $08, $10, $20, $40, $80, $03, $06, $0c, $18, $30, $60, $c0, $81, $03, $07, $0e, $1c, $38, $70, $e0, $c1, $83, $07, $0f, $1e, $3c, $78, $f0, $e1, $c3, $87, $0f, $1f, $3e, $7c, $f8, $f1, $e3, $c7, $8f, $1f, $3f, $7e, $fc, $f9, $f3, $e7, $cf, $9f, $3f, $7f, $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f, $ff, $fe, $fc, $f8, $f0, $e0, $c0, $80], PORTB
pause 75 Next digito
Next veces
Endif
PORTB = 0
Goto inicio
Explicación del código:
Parte de lo que se tiene en el código ya se ha visto anteriormente así que eso doy por hecho que se tiene comprendido como lo son la inicialización de puertos, el uso de las variables, la instrucción GOTO, entre otros puedes revisar publicaciones anteriores para darse una mejor idea y poder comprender esteejemplo. Pero parte del código tiene instrucciones que hasta el momento no se habían utilizado como lo son el uso de las condicionales IF y FOR, además del uso del LOOKUP.
Al utilizar la condicional IF viene acompañado de la instrucción THEN y ENDIF. En este ejemplo se utiliza para revisar el estado de los pulsadores por ejemplo tenemos lo siguiente:
IF PORTA.0 = 1 THEN...
Regístrate para leer el documento completo.