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
VIDEO FUNCIONANDO
Buenas noches el código lo programaron en que!?
ResponderEliminar