Un dados de LED con un PIC 16F84 (o 16F88) (5 / 12 paso)

Paso 5: El software de diseño

Es el diseño de hardware, ahora tenemos que diseñar el software que permitirá que nuestro hardware se convierten en un dado.

Una cosa que usted probablemente ha notado fue que la aplicación de hardware se hizo de una manera estructurada, de bloque de edificio. Necesitamos a nuestro software de diseño de la misma manera.

En el diseño de nuestro software, permite empezar por dividir el sistema en bloques funcionales. Una división fácil es dividir el problema en una entrada (el botón), algunos proceso (realmente los dados del balanceo) y una salida (los LEDs).

Permite empezar por construir primero la parte de salida de nuestro código. Es el componente más visual, y que nos permite 'poner algunos funcionamientos en el tablero' temprano. Antes de empezar aunque, permite hablar un poco sobre el conjunto de instrucciones del microprocesador y la arquitectura.

La gama PIC de microprocesadores implementan un reducido instrucción Set Computer (RISC). Tener un núcleo RISC es un factor que hace que estos CPU tan rápido. Una desventaja de tener un núcleo RISC es que la gama PIC de microprocesadores sólo implementar aproximadamente 37 instrucciones, así que de vez en cuando tarda más instrucciones para hacer las cosas, y a menudo las soluciones no siempre parecen ser tan intuitivo como en, por ejemplo, un Z80 o 6502.

En la foto, el registro principal del trabajo es el registro 'W'. La mayoría de nuestras operaciones utilizan el registro 'W' de alguna manera. Tomemos, por ejemplo, un conjunto de comandos que es la salida de un patrón binario '10101010' al puerto B.

MOVLW B '10101010'

MOVWF PortB

En primer lugar, la palabra que queremos escribir es cargada en el registro 'W', entonces el registro 'W' se escribe en el puerto B.

Podemos utilizar esta secuencia de operaciones para generar el patrón de bits para mostrar un rodillo de dados de 6. Desde el diagrama esquematico, podemos ver que la primera matriz está conectada al puerto A, bits 0 a 3 de la siguiente manera;

Puerto A(0) - centro de LED

A.1 - el puerto de la esquina de LEDs (1) y (3).

Puerto A(2) - esquina de LEDs (2) y (4).

Puerto A(3) - LED media (5) y (6).

Para mostrar el patrón para un 6, los LED de la esquina y todos los LEDs mediados en, pero el centro LED está apagado. Esto equivale a patrón de bits de b '00001110'. Por lo tanto, para mostrar un 6, simplemente ejecutamos las instrucciones;

MOVLW B '00001110'

MOVWF PortA

Asimismo, para mostrar un 1 (el LED del centro), utilizaríamos;

MOVLW B '00000001'

MOVWF PortA

Nos hemos estado refiriendo a 6 como 00001110 y 1 como 00000001. Puede ser confuso utilizar números como este, sobre todo cuando realmente no son números, son simplemente patrones. Para facilitar la confusión, la mayoría de los ensambladores permiten el uso de 'Constantes' para proporcionar una asignación entre un nombre de texto y un número. En el caso de nuestra exhibición de dados, podemos utilizar la palabra Die6 en lugar 00001110 o Die1 en lugar de 00000001.

Sería una lista de constantes que podríamos usar en nuestra pantalla;

Die1 B '00000001'

Die2 B '00000100'

Die3 B '00000101'

Die4 B '00000110'

Die5 B '00000111'

Die6 B '00001110'

DieOff B '00000000'

DieTest B '00001111'

Las 2 últimas entradas (DieOff y DieTest) son útiles para apagar la pantalla, o verificar que todos los LEDs son operativos en el arranque al encender todos los LEDs.

Ahora que sabemos cómo mostrar un número, se debe producir el bloque de construcción que nos permite proporcionar un número, y el patrón de bit correspondiente se carga en la pantalla.

Antes de que discutimos esta rutina de exhibición, cabe mencionar que software es mejor escrito de manera modular, una rutina a la vez. Esto permite funcionalidad para agregar componente por componente. Entonces podemos centrarnos en escribir cada componente individualmente, permitiendo software complejo que se construirá la capa por capa.

A nuestro bloque de edificio para la visualización de un rollo de dados. Una rutina para implementar la funcionalidad de pantalla podría verse así;

; En primer lugar, definir las constantes necesarias...

Die1 EQU B '00000001'; se definen algunas constantes

Die2 EQU B '00000100'; para los varios dados del LED

Die3 EQU B '00000101'; patrones

Die4 EQU B '00000110'

Die5 EQU B '00000111'

Die6 EQU B '00001110'

DieOff EQU B '00000000'; TODOS los LEDs apagados

DieTest EQU B '00001111'; TODOS los LEDs en

; Disp_Dice1 - hace que un número aparezca en una cara del dado

; Entrada: Registro W

; Salida: Un patrón de LED en los dados.

; Comentario: para los valores del registro 'W'; 0 = todos los LEDs de

; 1 – 6 = mostrar el patrón de 1 – 6

; 7 = todos LED ON (modo de prueba)

;

DISP_DICEA LLAMADA DIE_LOOKUP

MOVWF PortA

VOLVER

; Se trata de una ramificación tabla de búsqueda. Básicamente, cualquier valor se pasa a través del registro W es

; añadirá al contador de programa (PCL). Este entonces resulta en el valor adecuado para el

; resultado de búsqueda se cargan en el registro W y control se devuelve a la llamada

; Sub rutina.

; es decir; Si un 2 se pasa a través del registro W, el ADDWF PCL, f operación hace 2 a

; añadido al contador de programa actual causando la instrucción RETLW Die2 a ejecutarse.

; Esto se traduce en la constante Die2 (B '00000100') en el registro W, y

; control se devuelve al programa que llama.

DIE_LOOKUP ADDWF PCL, f

RETLW DieOff

RETLW Die1

RETLW Die2

RETLW Die3

RETLW Die4

RETLW Die5

RETLW Die6

RETLW DieTest

La mayor parte de la lista anterior es comentarios (líneas precedidas por el carácter ';'), por lo que deben ser capaces de seguir.

La rutina de display se puede utilizar al ejecutar el siguiente código;

MOVLW 4

LLAMAR AL DISP_DICEA


Artículos Relacionados

Pantalla de 7 segmentos LED con controlador PIC y Flowcode V5

Pantalla de 7 segmentos LED con controlador PIC y Flowcode V5

En primer lugar, si usted tiene cualesquiera preguntas, sienta libre de comentar! Estaría más que feliz de contestar tu pregunta lo mejor posible!!Materiales utilizados:-PIC 18F452 microcontrolador (hará cualquier microcontrolador PIC con suficientes
Parpadear un LED con lenguaje ensamblador y un PIC

Parpadear un LED con lenguaje ensamblador y un PIC

para decir lo tan obvio, hay muchos sabores de microcontroladores en el mundo.  Existen innumerables aplicaciones para ellos.  Este Instructable cubrirá los pasos necesarios a parpadear un LED usando un microcontrolador PIC y el lenguaje de ensamblad
Tarjetas de Navidad de LED con PIC 10F200

Tarjetas de Navidad de LED con PIC 10F200

este es un instructivo sobre cómo crear una tarjeta de Navidad del LED con el microcontrolador PIC 10F200.Este PIC tiene seis pernos y es del tamaño de un transistor SMD, es ideal para aplicaciones de bajo perfil y puede fácilmente introducirse cuand
Situado o apagar un led con un celular motorola c261 y el pic 16f84a mediantes comandos en

Situado o apagar un led con un celular motorola c261 y el pic 16f84a mediantes comandos en

En este proyecto vamos a situado y apagar un led a través de comandos en con el Motorola C261 y el famoso microcontrolador 16F84A.Paso 1: En este proyecto vamos a situado y apagar un led a través de comandos en con el Motorola C261 y el famoso microc
Batería DIY: Energía una linterna de LED con cambio de bolsillo!

Batería DIY: Energía una linterna de LED con cambio de bolsillo!

En este artículo, le mostraré cómo reemplazar la típica 3 AAA batería común baratos linternas de LED con cambio de bolsillo de accionar la linterna en una pizca. La batería creada incluso cabrá derecho interior donde debe ir la batería normal! Todos
Bola que destella LED con agua salina

Bola que destella LED con agua salina

La bola de LED es un proyecto basado en la propiedad eléctrica de agua salina. Primero poner el cátodo del LED en una taza con agua salada, conecta el ánodo al polo positivo de una batería y también conectar un cable al polo negativo de la batería. S
3 x 3 x 3 cubo de LED con control opcional de pc

3 x 3 x 3 cubo de LED con control opcional de pc

este es mi 3 x 3 x 3 cubo led. Original es que controlaba con un pic16f628a. Tiene 27 leds y cada uno de ellos puede ser controlado por el pic. Puedes ver un video de mi cubo con el pic.Tengo un archivo, voorbeeldprogramma.hex, también subido por lo
Multivibrador astable (intermitencia LED) con circuito escriba

Multivibrador astable (intermitencia LED) con circuito escriba

Un multivibrador astable es un circuito oscilante entre dos circuitos de resistencia-condensador en el que el estado de encendido de dos circuitos de RC no es estable.Es decir, dos circuitos de encender y apagar con el uso de transistores. En este ci
Activado por voz de LEDs con Arduino

Activado por voz de LEDs con Arduino

Este proyecto es una extensión para el reconocimiento de voz con Arduino (leandro4b). Sin embargo, en lugar de usar 3 LEDs de color separados, usé un multicolor RGBW LED emisor de 4 canales. Tuve la oportunidad de trabajar en LED Engin el verano pasa
Soldadura del árbol del LED con forma libre

Soldadura del árbol del LED con forma libre

Este es un divertido proyecto soldadura forma libre para las fiestas. Utiliza dos circuitos flip-flop a 16 LED, y usted puede organizar cualquier forma como. Este Instructable le mostrará un (especie de) forma del árbol.Forma libre de soldadura no ut
Iluminación LED con Arduino

Iluminación LED con Arduino

Este es el último tutorial de LED. Esto le dará los bloques de construcción básicos necesitados para hacer cualquier cosa con LED. En la foto son todas las cosas que necesitas para este tutorial entero, que consiste en un par de proyectos de mini. La
4 x 4 x 4 interactivo-cubo del LED con Arduino

4 x 4 x 4 interactivo-cubo del LED con Arduino

para explicar mi 4 x 4 x 4 cubo del LED interactivo publicado antes, un poco más claro, voy a intentar hacer mi primer paso por paso instructable.Este 4 x 4 x 4 cube es interactivo usando la esquina de cuatro LEDs LEDs y sensores que reaccionan a la
Control de tira de LED con atenuador y circuitos de pulsos Audio

Control de tira de LED con atenuador y circuitos de pulsos Audio

Este es un circuito realmente pongo juntos basado en otro Instructable para el pulso a la música: Este Instructable me puso a pensar que es un poco una basura para tener tira LED sentado en el ferrocarril de imagen que puede ser utilizado cuando está
Cómo limpiar un centavo con salsa picante

Cómo limpiar un centavo con salsa picante

me encanta salsa (algunas personas me llaman "Baws de sierras") pero por alguna razón mi boca no puede manejar el calor de la salsa caliente. Algo sucede cuando salsa caliente golpea mi paladar que envía mi boca en un frenesí, me da un sudor frí