20/10/10

Dado Electronico


                                                                           Autor:
Jonathan Navas


PROGRAMACION II

Se desea diseñar un Dado Electronico capaz de arrojar numeros aleatorios los cuales seran representados por una Matrix de led del tipo 5x8 y a su vez por un display de 7 segmentos, a este circuito tambien se le suma la funcion de una alarmar para cuando nuestro numero arrojado sea par, dicha alarma es representada por un buzzer. Este circuito se realiza con un PIC 16F877, en el cual utilizaremos 3 de sus 5 puertos, Puerto A, Puerto B y Puetyo D.

Circuito
            Esquema de conexiones y representacion grafica del circuito utilizado para este proyecto.


Lista De Componentes
Materiales utilizados para la ejecución de este circuito


Componente
Cantidad
PIC 16F877
1
Cristal 4 Mhz
1
Condensador  Cerámico  22pf
2
Resistencias  220 Ohm
1
Display
1
Matrix  Led 5x8
1
Buzzer
1
Pulsador
1
Fuente Regulada 5VDC
1




Declaración de Puertos
I/O Del puerto A
El puerto A es un registro de 6 Bits, en este caso declaramos 5 pines a utilizar, RA0, RA1, RA2, RA3 Y RA5.


0
1
0
0
0
0



I/O Del puerto B
El puerto B es un registro de 8 Bits, todos los pines de este puerto serán utilizados RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7.


0
0
0
0
0
0
0
0

I/O Del puerto D
El puerto D es un registro de 8 Bits, todos los pines de este puerto serán utilizados RD0, RD1, RD2, RD3, RD4, RD5, RD6, RD7


0
0
0
0
0
0
0
0


1= Entrada;   Tris  en “1” se comporta como una entrada
0= Salida;      Tris en “0” se comporta como una salida
; (% Expresa configuración Binaria)
TRISA= %010000
TRISB= 000000
TRISD= 000000
PORTA= 0
PORTB= 0
PORTD= 0

Formación De Los Números
            Los números se van formando de una columna por vez, de izquierda a derecha, Como la Matrix a utilizar es con Columnas con catado común se utiliza 0 para activarlas y como las Filas son ánodo común se utiliza 1 para activarlas, A son las Columnas y B las Filas


Sintaxis De Las Instrucciones

Se Utiliza la opción Port  para poner varios pines en un mismo estado “1” o “0”

'****************************************************************
'*  Name    : DADO ELECTRONICO.BAS                         *
'*  Author  : [JONATHAN NAVAS]                                     *
'*  Date    : 18/10/2010                                                       *
'*  Version : 1.                                                                     *
'*  Notes   : DIFICIL                                                            *
'****************************************************************
DEFINE OSC 4                                 ;OSCILADOR DE 4 MHZ
TRISA= 0000                             ;CONFIGURACION DEL PUERTO A
TRISB= 000000
TRISD= 000000                         ;CONFIGURACION DEL PUERTO D
PORTA= 0
PORTB= 0
PORTD= 0
X VAR BYTE                                     ;DEFINICION DE (X) COMO VARIABLE

INICIO:
FOR X = 1 TO 140                                                               ; CONTADOR
PORTA= %111110: PORTB= %10000111: PAUSE 1       ;NUMERO 5 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110001: PAUSE 1
PORTD= 010010: PAUSE 5                                         ;NUMERO 5 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000100: PAUSE 1       ;NUMERO 1 EN MATRIX
PORTA= %111101: PORTB= %10000010: PAUSE 1
PORTA= %111011: PORTB= %11111111: PAUSE 1
PORTA= %110111: PORTB= %10000000: PAUSE 1
PORTA= %011111: PORTB= %10000000: PAUSE 1
PORTD= %01111001: PAUSE 5                                         ;NUMERO 1 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= 001000: PAUSE 1       ;NUMERO 4 EN MATRIX
PORTA= %111101: PORTB= 001100: PAUSE 1
PORTA= %111011: PORTB= 001010: PAUSE 1
PORTA= %110111: PORTB= %11111111: PAUSE 1
PORTA= %011111: PORTB= 001000: PAUSE 1
PORTD= %10011001: PAUSE 5                                         ;NUMERO 4 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %01111110: PAUSE 1       ;NUMERO 6 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110010: PAUSE 1
PORTD= %10000010: PAUSE 5                                         ;NUMERO 6 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000001: PAUSE 1       ;NUMERO 3 EN MATRIX
PORTA= %111101: PORTB= %10000001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001101: PAUSE 1
PORTA= %011111: PORTB= %01110011: PAUSE 1
PORTD= 110000: PAUSE 5                                         ;NUMERO 3 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %11000110: PAUSE 1        ;NUMERO 2 EN MATRIX
PORTA= %111101: PORTB= %10100001: PAUSE 1
PORTA= %111011: PORTB= %10010001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %10000110: PAUSE 1
PORTD= %10100100: PAUSE 5                                         ;NUMERO 2 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000001: PAUSE 1       ;NUMERO 3 EN MATRIX
PORTA= %111101: PORTB= %10000001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001101: PAUSE 1
PORTA= %011111: PORTB= %01110011: PAUSE 1
PORTD= 110000: PAUSE 5                                         ;NUMERO 3 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %01111110: PAUSE 1        ;NUMERO 6 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110010: PAUSE 1
PORTD= %10000010: PAUSE 5                                         ;NUMERO 6 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000100: PAUSE 1       ;NUMERO 1 EN MATRIX
PORTA= %111101: PORTB= %10000010: PAUSE 1
PORTA= %111011: PORTB= %11111111: PAUSE 1
PORTA= %110111: PORTB= %10000000: PAUSE 1
PORTA= %011111: PORTB= %10000000: PAUSE 1
PORTD= %01111001: PAUSE 5                                         ;NUMERO 1 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %11000110: PAUSE 1       ;NUMERO 2 EN MATRIX
PORTA= %111101: PORTB= %10100001: PAUSE 1
PORTA= %111011: PORTB= %10010001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %10000110: PAUSE 1
PORTD= %10100100: PAUSE 5                                         ;NUMERO 2 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000111: PAUSE 1       ;NUMERO 5 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110001: PAUSE 1
PORTD= 010010: PAUSE 5                                         ;NUMERO 5 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= 001000: PAUSE 1       ;NUMERO 4 EN MATRIX
PORTA= %111101: PORTB= 001100: PAUSE 1
PORTA= %111011: PORTB= 001010: PAUSE 1
PORTA= %110111: PORTB= %11111111: PAUSE 1
PORTA= %011111: PORTB= 001000: PAUSE 1
PORTD= %10011001: PAUSE 5                                        ;NUMERO 4 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000100: PAUSE 1       ;NUMERO 1 EN MATRIX
PORTA= %111101: PORTB= %10000010: PAUSE 1
PORTA= %111011: PORTB= %11111111: PAUSE 1
PORTA= %110111: PORTB= %10000000: PAUSE 1
PORTA= %011111: PORTB= %10000000: PAUSE 1
PORTD= %01111001: PAUSE 5                                         ;NUMERO 1 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000111: PAUSE 1       ;NUMERO 5 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110001: PAUSE 1
PORTD= 010010: PAUSE 5                                         ;NUMERO 5 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %11000110: PAUSE 1       ;NUMERO 2 EN MATRIX
PORTA= %111101: PORTB= %10100001: PAUSE 1
PORTA= %111011: PORTB= %10010001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %10000110: PAUSE 1
PORTD= %10100100: PAUSE 5                                         ;NUMERO 2 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %01111110: PAUSE 1       ;NUMERO 6 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110010: PAUSE 1
PORTD= %10000010: PAUSE 5                                         ;NUMERO 6 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= 001000: PAUSE 1        ;NUMERO 4 EN MATRIX
PORTA= %111101: PORTB= 001100: PAUSE 1
PORTA= %111011: PORTB= 001010: PAUSE 1
PORTA= %110111: PORTB= %11111111: PAUSE 1
PORTA= %011111: PORTB= 001000: PAUSE 1
PORTD= %10011001: PAUSE 5                                         ;NUMERO 4 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000001: PAUSE 1       ;NUMERO 3 EN MATRIX
PORTA= %111101: PORTB= %10000001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001101: PAUSE 1
PORTA= %011111: PORTB= %01110011: PAUSE 1
PORTD= 110000: PAUSE 5                                         ;NUMERO 3 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000111: PAUSE 1        ;NUMERO 5 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110001: PAUSE 1
PORTD= 010010: PAUSE 5                                         ;NUMERO 5 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %11000110: PAUSE 1       ;NUMERO 2 EN MATRIX
PORTA= %111101: PORTB= %10100001: PAUSE 1
PORTA= %111011: PORTB= %10010001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %10000110: PAUSE 1
PORTD= %10100100: PAUSE 5                                         ;NUMERO 2 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000100: PAUSE 1       ;NUMERO 1 EN MATRIX
PORTA= %111101: PORTB= %10000010: PAUSE 1
PORTA= %111011: PORTB= %11111111: PAUSE 1
PORTA= %110111: PORTB= %10000000: PAUSE 1
PORTA= %011111: PORTB= %10000000: PAUSE 1
PORTD= %01111001: PAUSE 5                                         ;NUMERO 1 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %10000001: PAUSE 1       ;NUMERO 3 EN MATRIX
PORTA= %111101: PORTB= %10000001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001101: PAUSE 1
PORTA= %011111: PORTB= %01110011: PAUSE 1
PORTD= 110000: PAUSE 5                                         ;NUMERO 3 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= %01111110: PAUSE 1       ;NUMERO 6 EN MATRIX
PORTA= %111101: PORTB= %10001001: PAUSE 1
PORTA= %111011: PORTB= %10001001: PAUSE 1
PORTA= %110111: PORTB= %10001001: PAUSE 1
PORTA= %011111: PORTB= %01110010: PAUSE 1
PORTD= %10000010: PAUSE 5                                         ;NUMERO 6 EN DISPLAY
NEXT
FOR X = 1 TO 140
PORTA= %111110: PORTB= 001000: PAUSE 1       ;NUMERO 4 EN MATRIX
PORTA= %111101: PORTB= 001100: PAUSE 1
PORTA= %111011: PORTB= 001010: PAUSE 1
PORTA= %110111: PORTB= %11111111: PAUSE 1
PORTA= %011111: PORTB= 001000: PAUSE 1
PORTD= %10011001: PAUSE 5                                         ;NUMERO 4 EN DISPLAY
NEXT
GOTO INICIO
END







 VIDEO FUNCIONANDO


Semaforo acustico





Imagenes de Semaforo Acustico, Diseñado para el paso de peatones, este semaforo cambiara de Rojo (PARE) a Verde, esta configurado para que dure 15 Sg en Verde y unos 10 Sg en rojo. Este timpo puede ser modificado. Cuando el semaforo Esta en Verde se activa una Alarma la cual indica de forma sonora que se puede circular. Cuando el semaforo esta en rojo la alrma se detiene. Muy util para personas con problemas Visuales.

Diagrama de Conexion


VIDEO FUNCIONANDO

Secuencia Binaria de 4 Bits

Para aquellos que están iniciándose en el mundo de la programación de pic's este es buen proyecto para comenzar, acá encontraras bien detallado todo lo que necesitas para su elaboración, es bastante sencillo.


REPÚBLICA BOLIVARIANA DE VENEZUELA
INSTITUTO UNIVERSITARIO POLITÉCNICO
“SANTIAGO MARIÑO”
EXTENSIÓN MARACAY







                           SECUENCIA  DE 4 BITS
                           BINARIA          
                                     
                     







                             Autor:    Hector Robles 19.554.414
                                                                                                        Sección: “EA”

Maracay, Octubre 2010


-Introducción:
En el siguiente proyecto se quiso realizar una secuencia de números binarios donde se mostrara el número de cédula de un individuo, usando un microcontrolador económico e ideal para este proyecto como lo es el PIC16F84A. Para dicha representación se implementaron cuatro (4) leds los cuales ubicados uno por cada salida del puerto (En este caso, puerto A), los cuales forman la estructura del número binario a expresar, uno por vez, en un tiempo determinado por la programación.
-Secuencia:
            La secuencia a utilizar en este proyecto es mi número de cédula la cual se debe representar en números binarios quedando de la siguiente manera:
Decimal
Binario
1
0
0
0
1
9
1
0
0
1
5
0
1
0
1
5
0
1
0
1
4
0
1
0
0
4
0
1
0
0
1
0
0
0
1
4
0
1
0
0

-Esquema:
A continuación se muestra el esquema del proyecto donde se aprecia las diferentes conexiones realizadas entre los componentes y el microcontrolador PIC16F84A.



-Lista de Componentes:
            Luego de la visualización del esquema del proyecto continuamos con la lista de componentes a obtener para su realización, la cual está disponible en la imagen de abajo.
Componentes
Cantidad
PIC16F84A
1
Cristal 4Mhz
1
Condensador Cerámico 22P
2
Resistencia 220 Ohm
4
Fuente Regulada 5V
1
LED
4


-Registro de Configuración de I/O del PtoA:
            Antes de comenzar la programación se debe tener en cuenta declarar cuáles de los puertos y cuáles de los pines de los puertos del microcontrolador serán las salidas y las entradas según la estructura de la programación.
            Como en este proyecto utilizaremos cuatro (4) leds, uno (1) por salida, se determinó conveniente usar el Puerto A, ya que este posee cinco (5) de entradas/salidas, lo cual lo hace ideal para este proyecto.
            Luego de determinar el puerto a usar, en este caso el puerto A, pasamos a identificar cuáles de sus pines serán entradas y cuales salidas; para lo cual debemos tener en cuenta que:
-          El número 1 en el registro se comporta como una entrada, y
-          El número 0 en el registro se comporta como una salida.
Y que el registro está estructurado por 8 bits, de los cuales tres (3) de los mas significativos no se implementan y están ubicados de izquierda a derecha.
A partir de esto, definimos los pines RB0, RB1, RB2 y RB3 como salidas y el pin RB4 como entrada, ya que solo usaremos cuatro (4) leds.
Una mejor representación se muestra en la figura de abajo.

/
/
/
RB4
RB3
RB2
RB1
RB0
/
/
/
1
0
0
0
0

            La expresión final del registro de I/O del puerto A quedaría de la siguiente manera:
TrisA= %10000
            Donde TrisA es la expresión del registro; % es el símbolo de configuración binaria; y 10000 es la configuración del puerto.
-Sintaxis:
            Procedemos ahora a la programación del microcontrolador PIC16F84A, y para esto hay que tomar en cuenta el significado de las instrucciones que utilizaran en el programa.
            PortA= %xxxxx; esta instrucción indicará al puerto el numero binario a mostrar.
            PAUSE; esta instrucción hará una pausa en un tiempo determinado de la instrucción anterior a ella.
            Goto inicio; esta instrucción indicará la continuación del programa (ciclos).
            Definido esto procedemos a la realización del programa a ejecutar.

-Programación:

'****************************************************************
'*  Name    : Secuencia de mi CI                                                                                      *
'*  Author  : Héctor Robles                                                                                               *
'*  Notice  : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS]                             *
'*          : All Rights Reserved                                                                                            *
'*  Date    : 07/10/2010                                                                                                      *
'*  Version : 1.0                                                                                                                  *
'*  Notes   :                                                                                                                         *
'*          :                                                                                                                               *
'****************************************************************
    Define osc 4'define cristal para 4mhz
    trisA= %10000 ; configuracion del pto A
    portA= 0 'inicializa el pto A, se ponen todos los pines en cero
Inicio:
    portA= 001 'marca el numero 1
    pause 2000 'pausa 2 seg
    portA= %01001 'marca el numero 9
    pause 2000 'pasusa 2 seg
    portA= 101 'marca el numero 5
    pause 2000 'pausa 2 seg
    portA= 101 'marca el numero 5
    pause 2000 'pausa 2 seg
    portA= 100 'marca el numero 4
    pause 2000 'pausa 2 seg
    portA= 100 'marca el numero 4
    pause 2000 'pausa 2 seg
    portA= 001 'marca el numero 1
    pause 2000 'pausa 2 seg
    portA= 100 'marca el numero 4
    Goto Inicio 'continua el ciclo
    End







-Aspecto Final:
            Acá anexo dos imágenes de la apariencia de acabado del proyecto montado en un tablero de pruebas (Protoboard).