CICLO FORMATIVO D.P.E.

Autor: Jorge Luis Alba Ramas

Profesor de apoyo: Juan Muñoz




MOSTRACIÓN DE NUMEROS ALEATORIOS


INTRODUCCIÓN


PIC16F84A


COMPONENTES


LISTADO DE COMPONENTES


ESQUEMATICOS



Esquematico




Board




PROGRAMACION


BIBLIOGRAFIA


CREDITOS












INTRODUCCIÓN





MUESTREO DE NUMEROS



El proyecto consiste en como nuestro ya conocido Pic16F84  realiza una muestra de números aleatorios mostrándolos durante un tiempo determinado en ocho displays de Cátodo Común.

En este proyecto deberemos utilizar el Pic de tal forma que al realizar el programa en el entorno ensamblador no tengamos que realizar ninguna pulsación en los pulsadores, de tal forma que en la placa a realizar no introduzcamos ningún pulsador.

El procedimiento que seguiría seria:

El Pic16f84 envía la información en forma de numero, el cual se ve reflejado en los displays correspondientes, dependiendo del numero a mostrar, dicho numero deberá permanecer mostrado durante un tiempo determinado o durante el retardo que al Pic se le haya determinado. El numero desaparecerá dejando apagados los displays y esperando la aparición del siguiente numero, el cual funcionara del mismo modo, es decir,  aparecerá el numero aguantara el tiempo determinado y desaparecerá, y así sucesivamente para todos los demás números que tengan que aparecer del mismo modo.

















PIC16F84A



PIC16F84



1.1-. Breves antecedentes relacionados.

Inicialmente cuando no existían los microprocesadores las personas se ingeniaban en diseñar sus circuitos electrónicos y los resultados estaban expresados en diseños que implicaban muchos componentes electrónicos y cálculos matemáticos. Un circuito lógico básico requería de muchos elementos electrónicos basados en transistores, resistencias, etc; pero en el año 1971 apareció el primer microprocesador el cual originó un cambio decisivo en las técnicas de diseño de la mayoría de los equipos. Al principio se creía que el manejo de un microprocesador era para aquellas personas con un coeficiente intelectual muy alto; por lo contrario con la aparición de este circuito integrado todo sería mucho mas fácil de entender y los diseños electrónicos serian mucho mas pequeños y simplificados. Entre los microprocesadores mas conocidos tenemos el popular Z-80 y el 8085. Los diseñadores de equipos electrónicos ahora tenían equipos que podían realizar mayor cantidad de tareas en menos tiempo y su tamaño se redujo considerablemente; sin embargo, después de cierto tiempo aparece una nueva tecnología llamada microcontrolador que simplifica aun mas el diseño electrónico.



1.2-. Diferencias entre un Microprocesador y un Microcontrolador.

Si usted tuvo la oportunidad de realizar un diseño con un microprocesador pudo observar que dependiendo del circuito se requerían algunos circuitos integrados adicionales ademas del microprocesador como por ejemplo: memorias RAM para almacenar los datos temporalmente y memorias ROM para almacenar el programa que se encargaría del proceso del equipo, un circuito integrado para los puertos de entrada y salida y finalmente un decodificador de direcciones.

Un microcontrolador es un solo circuito integrado que contiene todos los elementos electrónicos que se utilizaban para hacer funcionar un sistema basado con un microprocesador; es decir contiene en un solo integrado la Unidad de Proceso, la memoria RAM, memoria ROM, puertos de entrada, salidas y otros periféricos.



1.3-. Ventajas de un Microcontrolador Vs. un Microprocesador.

Estas ventajas son reconocidas inmediatamente para aquellas personas que han trabajado con los microprocesadores y después pasaron a trabajar con los microcontroladores. Estas son las diferencias mas importantes:

Por ejemplo la configuración mínima básica de un microprocesador estaba constituida por un Micro de 40 Pines, Una memoria RAM de 28 Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines; pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores: En el ciruito impreso por su amplia simplificación de circuiteria, el costo para un sistema basado en microcontrolador es mucho menor y, lo mejor de todo, el tiempo de desarrollo de su proyecto electrónico se disminuye considerablemente.

Existen unos microcontroladores mas avanzados que otros por los componentes especiales que estos incluyen. Algunos solamente contienen puertos de entrada y de salida, otros incluyen pines hasta de 12 Bits para conversiones analógicas digitales entre otros. Podemos mencionar algunas características especiales que poseen los microcontroladores actuales: Modulación por ancho de pulso, Comunicación Serial Sincrona, Comunicacion Serial Asincrona, Temporizadores, Contadores, etc.

1.4-. Los Microcontroladores, aspecto básico general.

En la actualidad existen muchos microcontroladores de diferentes empresas reconocidas mundialmente, pero nuestra meta especifica es tratar el microcontrolador de la empresa Microchip Tecnologies modelo PIC16F84.

1.5-. Que es un Microcontrolador ?.

Un microcontrolador es un circuito integrado programable que contiene internamente todos los componentes de un computador. Este se utiliza para controlar el funcionamiento de una tarea determinada. Sus pines de entradas y salidas se utilizan para conectar motores, relays, actuadores, etc. Una vez que el microcontrolador esta programado, se encargara de ejecutar al pie de la letra la tarea encomendada.

1.6-. Conociendo al Microcontrolador PIC16F84.

El microcontrolador PIC16F84 es un circuito integrado fabricado por la empresa Microchip Tecnologies y es actualmente uno de los mas utilizados a nivel mundial, la razón de esto es por que son sencillos, rápidos, modernos y principalmente baratos, se podrán escribir los programas y borrarlos muchísimas veces, poseen gran documentación a nivel mundial en la Red de Internet y esta accesible para la mayoría de los bolsillos. Existen microcontroladores que una vez programados con el programa de control estos tienen que ser borrados con luz ultra violeta en el caso de requerir borrar el programa. Para el caso del PIC16F84, este podrá ser programado Eléctricamente con una circuiteria que proporciona la empresa Microchip Tecnologies. Este programador es sumamente sencillo y debe ser conectado al puerto paralelo de su computador.

1.7-. Características Básicas del PIC16F84.

El Microcontrolador PIC16F84 es un circuito integrado de 18 pines fabricado con tecnología CMOS, existen en diferentes versiones de encapsulado como por ejemplo el DIP (Version convensional ) y el SOIC ( Montaje superficial ). La frecuencia de trabajo esta entre 4 Mhz y 20 Mhz. Las versiones que se estipulan en una frecuencia de trabajo de 4 Mhz podrán trabajar sin ningún problema hasta los 10 Mhz, prueba que hemos realizado muchas veces en nuestros diseños. Observemos la siguiente imagen que muestra como están organizados los pines del microcontrolador PIC16F84:

1.8-. Identificación de los Pines utilizados para los puertos de entrada y salidas.

En la imagen anterior se podrá observar claramente que el microcontrolador tiene dos puertos denominados "A" y "B". El puerto "A" tiene 5 lineas disponibles (RA0, RA1, RA2, RA3, RA4 ) y el puerto "B" tiene 8 lineas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7 ). Ambos Puertos suman un total de 13 lineas que podrá ser programadas independientemente como entradas o como salidas. Estas son las lineas que estarán destinadas para comunicar el microcontrolador con el mundo exterior, como por ejemplo: Un motor Paso a Paso, Diodos Luminosos "Leds", Módulos LCD, Teclados Matriciales, etc. También observe que el Pin No. 3 perteneciente al puerto "A" = RA4 también tiene otra nomenclatura denominada "TOCKI" lo cual quiere decir que esta linea podrá ser programada como entrada, salida y temporizador/contador.

1.9-. Identificación de los pines de alimentación del Microcontrolador.

El microcontrolador trabaja con una tensión de 5 Vlts. DC y los pines para ello son el Pin No. 14 (+) y el Pin No. 5 (-).

















COMPONENTES




74LS373.PDF

74LS42N.PDF

BC549.PDF

BC559.PDF











LISTADO DE COMPONENTES





CANTIDAD

TIPO

DENOMINACION

Precio Unitario PTS

1

26 Pines

Conector Bus

150

1

SN74LS373

Integrado

100

1

SN74LS42

Integrado

250

8

BC549B

Transistor

25

8

BC559B

Transistor

25

8

SC52-11HWA

Display de Cátodo Común

230

1

PIC16F84

Integrado

500

2

18 Pines

Zocalo

36

1

16 Pines

Zocalo

35

TOTAL PROYECTO


1 . 357 Pts
















ESQUEMATICOS



Esquematico

Este es el esquematico realizado para mi proyecto:




Esquematico.sch


























Board

Esta seria la placa o board que tendria mi proyecto:

































PROGRAMACION






Este seria mi programa en lenguaje ensamblador.

(El programa no funciona de forma correcta pues contiene ciertos fallos).






; Fichero : 8Disp.asm

;  Autor   : Jorge Luis Alba

;  Fecha: Diciembre 2001.

;  Version: 0.0

;  Sistema RAD-MICROS.

;  Placa Microcontroladora: micro-p1684.

;  Placa de Aplicaciones: apli-mostrador.

;  Placa de programaci¢n: Programador Universal Superpro II/P.(XELTEK)

;  Bus: bus-26.

;  Codigo para: PIC16C84A y PIC16F84

;  Clock: 4MHz , XT. -> Ciclo = 1 uS.

;  Reset: Power On Reset.

;  Watch dog: Inhabilitado.

;  Proteccion de codigo: Inhabilitado.

;  Ficheros requeridos: H16f84a.inc

;  Funcion :Muestra numeros en displays de 7 segmentos       

;#############################################################################

                 LIST     p=PIC16F84A    ;Directiva para definir micro

                 #include <H16f84a.inc>  ;Fichero standar de cabezera


                 __CONFIG   _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC


;############################# DEFINICIONES #####################################

    w_temp              EQU     0x0C ;Variable para guardar W

    status_temp       EQU     0x0D ; Variable para guardar STATUS

    con0                    EQU     0x0E ;Variable de temporizacion

    con1                    EQU     0x0F ; Variable de temporizacion

    con2                    EQU     0x10 ;Variable de temporizacion

    uno_d                 EQU     0x11 ;display 1

    dos_d                  EQU     0x12 ;display 2

    tres_d                 EQU     0x13 ;display 3

    cuatro_d            EQU     0x14 ;display 4

    cinco_d               EQU     0x15 ;display 5

    seis_d                 EQU     0x16 ;display 6

    siete_d                EQU     0x17 ;display 7

    ocho_d                EQU     0x18 ;display 8


;################### Comienzo de programa ######################################

        ORG               0x00 ;Vector de Reset

        GOTO            inicio ;Programa Principal

;####################### Tratamiento de interrupciones ###############################

        ORG               0x04 ;Vector de interrupcion

        MOVWF        w_temp ;Guarda W

        MOVF           STATUS,W

        MOVWF        status_temp ;Guarda STATUS


        BCF                INTCON,GIE

        DECFSZ        con0,F ;salta si tiempo =1 seg

        MOVLW        0x3D ;Variable para temporizar

        MOVWF        con0 ;con0 x divisor x TMR0 = 1 segundo

        BCF                INTCON,T0IF

        BSF                INTCON,GIE


        ;Tratamos el primer display

        INCF              uno_d,F

        MOVF           uno_d,W

        SUBLW          0x0A ;10 – (uno_d) --> W

        BTFSS            STATUS,Z ; Si Z=1=> (uno_d)=10

        MOVLW        0X00

        MOVWF        uno_d ;0 --> uno_d


        ;Tratamos el segundo display

        INCF              dos_d,F

        MOVF           dos_d,W

        SUBLW          0x0A

        BTFSS            STATUS,Z

        MOVLW        0X00

        MOVWF        dos_d

      

        ;Tratamos el tercer display

        INCF              tres_d,F

        MOVF           tres_d,W

        MOVLW        0x0A

        BTFSS            STATUS,Z

        MOVLW        0X00

        MOVWF        tres_d


        ;Tratamos el cuarto display

        INCF              cuatro_d,F

        MOVF           cuatro_d,W

        MOVLW        0x0A

        BTFSS            STATUS,Z

        MOVLW        0X00

        MOVWF        cuatro_d


        ;Tratamos el quinto display

        INCF              cinco_d,F

        MOVF           cinco_d,W

        MOVLW        0x0A

        BTFSS            STATUS,Z

        MOVLW        0X00

        MOVWF        cinco_d


        ;Tratamos el sexto display

        INCF              seis_d,F

        MOVF           seis_d,W

        MOVLW        0x0A

        BTFSS            STATUS,Z

        MOVLW        0X00

        MOVWF        seis_d


        ;Tratamos el septimo display

        INCF              siete_d,F

        MOVF           siete_d,W

        MOVLW        0x0A

        BTFSS            STATUS,Z

        MOVLW        0X00

        MOVWF        siete_d


        ;Tratamos el octavo display

        INCF              ocho_d,F

        MOVF           ocho_d,W

        MOVLW        0x0A

        BTFSS            STATUS,Z

        MOVLW        0X00

        MOVWF        ocho_d


;####################### PROGRAMA PRINCIPAL ################################

inicio       BSF                        STATUS,RP0 ;banco 1

                MOVWF                TRISB ;Configuracion PORTB

                CLRF                     TRISA

                BCF                        STATUS,RP0 ;banco 0

                CLRF                     INTCON

                MOVLW                0x3F ;Variable para temporizar

                CLRF                     uno_d ;uno_d=0

                CLRF                     dos_d ; dos_d=0

                CLRF                     tres_d ;tres_d=0

                CLRF                     cuatro_d ;cuatro_d=0

                CLRF                     cinco_d ;cinco_d=0

          CLRF                     seis_d ;seis_d=0

                CLRF                     siete_d ;siete_d=0

                CLRF                     ocho_d ;ocho_d=0

                MOVLW                B'10100000' ;Habilitamos interrupciones T0IE

                MOVWF                INTCON


bucle       CALL                    display

                GOTO                    bucle


#########################################################################

;Rutina: display

;Funcion: Muestra informacion en displays 7 segmentos

;Entrada: uno _ d, dos _ d, tres _ d, cuatro _ d, cinco _ d, seis _ d, siete _ d, ocho _ d

;Salida: nada

;Variables utilizadas: nada

;##########################################################################


display                   MOVF                  uno_d,W ; Visualizo display 1

                               MOVWF                PORTA

                               BSF                        PORTB,0

                               CALL                    delay

                              BCF                        PORTB,0


                               MOVF                    dos_d,W ;Visualizo display 2

                               MOVWF                PORTA

                               BSF                        PORTB,1

                               CALL                     delay

                               BCF                        PORTB,1


                               MOVF                     tres_d,W ;Visualizo display 3

                               MOVWF                PORTA

                               BSF                        PORTB,2

                               CALL                     delay

                               BCF                        PORTB,2


                               MOVF                    cuatro_d,W ;Visualizo display 4

                               MOVWF                PORTA

                               BSF                        PORTB,3

                               CALL                     delay

                               BCF                        PORTB,3


                               MOVF                    cinco_d,W ;Visualizo display 5

                               MOVWF                PORTA

                               BSF                        PORTB,4

                               CALL                     delay

                               BCF                        PORTB,4


                              MOVF                      seis_d,W ;Visualizo display 6

                               MOVWF                PORTA

                               BSF                        PORTB,5

                               CALL                     delay

                               BCF                        PORTB,5


                               MOVF                    siete_d,W ;Visualizo display 7

                               MOVWF                PORTA

                               BSF                        PORTB,6

                               CALL                     delay

                               BCF                        PORTB,6


                               MOVF                    ocho_d,W ;Visualizo display 8

                               MOVWF                PORTA

                               BSF                        PORTB,7

                               CALL                     delay

                               BCF                        PORTB,7


                               RETURN

;###########################################################################

;Rutina: delay

;Funcion: Produce un retardo

;Entrada: nada

;Salida: nada

;Variables utilizadas: con1, con2

;##########################################################################

delay                       CLRF                     con1

                               MOVLW                0x05

                               MOVWF                con2


loop                        DECFSZ                con1,F

                               GOTO                      loop

                               DECFSZ                con2,F

                               GOTO                     loop

                               RETURN          

               

;########################### FIN DE PROGRAMA #####################


                          END ;Fin de Programa



a8disp2.asm





















BIBLIOGRAFIA






Para realizar el proyecto he consultado las siguientes fuentes de datos:

Principalmente he seguido un fichero patron realizado por el profesor para la toma de referencia de como debia ser la forma de este proyecto.

Tambien utilice las distintas paginas de internet, como:

-Google: Utilizado como buscador en toda la cuestion grafica, como gifs, y demas imagenes.

Otros programas de interes:

Eagle, programa para la realizacion de Esquematicos, con este programa he realizado el esquematico y la board que se pueden ver en mi proyecto.

Entorno ASM, utilizado en la realizacion del programa.

Libros de consulta:

->Curso de microcontroladores Pic, utilizado como modelo en la realizacion de programa en ensamblador.

->PIC 16F8X, libro informativo acerca de todo lo relativo al funcionamiento del PIC16F84A

->Manuales de Lenguaje Ensamblador.











CREDITOS

Este proyecto ha sido realizado por el alumno del Segundo curso del Modulo de Grado Superior de Desarrollo de Productos Electronicos, para la clase de Desarrollo de Proyectos de Productos Electronicos JORGE LUIS ALBA RAMAS.

















FIN