Programación Específica > Microcontroladores

 Evaluacion De La Idea De Mi Proyecto

<< < (9/11) > >>

jgpeiro:
mmmm, nuevas subrutinas.
la memoria EEPROM externa lleva un banco con todos los caracteres en ASCII dijujados de tal manera que una l (en ASCII 81hex)seira:
81x5=285h
285$ 11111111
286$ 00000000
287$ 00000000
288$ 00000000
289$ 00000000
280$ 00000000
un total de 256 caracteres x 5bytes = 1280Bytes. (direcicon 500h)
De esta manera, leyendo un byte con un caracter en ASCII y multiplicandolo x 5 direccionamos rapidamente hasta las posiciones de memoria de la EEPROM que contienen el "dibujo" del caracter.

En las siguientes direcciones a partir de la 500h se encuentra toda la informacion de MENUS, con su NUMERO de MENU, MENU PC OK, MENU PC CANCEL, MENU NOMBRE, MENU CONTENIDOS.

A Menu Numero AB Menu PCOK BC Menu PCCANCEL CD Menu Nombre DE Menu Contenidos E

A: indica que los datos hasta nueva A van a indicar el Menu Numero
B: indica que los datos hasta nueva B van a indicar el Menu PCOK
idem con la C,D y E.

El Menu Numero tiene un tamaño fijo de 3 bytes
El Menu PCOK tiene un tamaño fijo de 2 bytes
El Menu PCCANCEL tiene un tamaño fijo de 2 bytes
El Menu Nombre puede cualquier tamaño
El Menu Contenidos puede cualquier tamaño


El Menu Numero esta estructurado en 6 datos de 4 bits que pueden ir del 0 al 11 lo que da un maximo de 14000 menus distintos(aunque no cabrian en la EEPROM)

El Menu PCOK son dos bytes con la direccion que habria que introducir en el program counter del micro si el usuraio hace un movimiento de OK y el cursor esta sobre ese menu)

El Menu PCCANCEL son dos bytes con la direccion que habria que introducir en el program counter del micro si el usuraio hace un movimiento de CANCEL y el cursor esta sobre ese menu)

El Menu Nombre son los caracteres que se muestran cuando un menu esta cerrado

El Menu contents son los caracteres que se muestran cuando un menu esta abierto


Cuando el dispositivo arranca va a la direccion de EEPROM 501h y busca A
INC EEADDR (la direccion EEPROM a leer)
mobemos los 3 bytes del Menu numbre a la RAM en Actual Menu y buscamos de nuevo A.
ahora buescamos la siguiente B
almacenamos en la RAM en ACTUAL Menu PCOK, con la C lo mismo
y ahora buscamos D...
EEDATA=D
MOV (84-ancho de la barra) to BFERC
label 1
 INC EEADDR
SAVE EEADR in CADDRP
READ EEPROM
EEDATA = D?   ---SI----> desde BFERC hasta final pintar 0. IR a Mostrar
Multip`licar EEDATA x 5, resultado en EEADDR
label2
MOV BFERC to FSR
READ EEPROM
MOV EEDATA to W
W=0? --------SI-------> "caracter terminado". Pintar espacio. IR a label 1
MOV W to INDF
INCFSZ BFERC ----0----->"Linea terminada". IR a Mostrar
DECFSZ CP----0----> "caracter terminado". Pintar espacio. IR a label 1
INC EEADDR
IR a label 2


Me queda explicar como pintar un cursor en la pantalla acorde con la posicion actual en funcion de los movimientos.
Me queda explicar como invertir el color (B/W) de un menu cuando el cursor esta encima de este
Me queda explicar como se pintauna barra a la izq. de la pantalla.

Me queda explicar un nuevo metodo para crear un buffer en la RAM con una fila entera de 84 bytes con los pixels que tienen que tienen que ser pintados en el LCD.
Me queda explicar como se hace un buffer para tranformar las 7 lineas de texto que aparecen en la pantalla a 6 lineas que caben en la pantalla.

Pero para explicar estos ultimos buffers asi como el aspecto del cursor are unos dibujitos

Tambien tengo un nuevo algoritmo para transformar los 7 caracteres a 6 lineas mas rapido que el que propuse en post anteriores....

en fin, si alguien comprende todo esto que pongo y me quiere sugerir algo...

Pegasux:
Pues gracias por explicarte, y no, no lo entiendo aunqe me esfuerzo por ello. XDDD. Yo voy a intentar hacer la version del boli a distancia. No tengo los datos exactos pero si se como hacerlo:

Con un temporizador 555 smd, 4 pulsadores mini, 5 resistencias smd, 1 condensador smd, 1 emisor infrarrojo y una pila de 3v de camara de fotos. Cabe todo perfectamente en la mitad de un boligrafo que tenga el diametro un poco ancho. cada pulsador conectado a traves de una de las 4 resistencias al 555, todas de distinto valor para generar pulsos de distinta frecuencia. La salida del 555 al emisor infrarrojo. con la otra resistencia y condensador se hace el tiempo de descarga del 555, con lo que este tiempo es igual para los 4 pulsadores, asi que nos fijamos solo en la anchura de los distintos pulsos. En el programa habra que hacer una rutina que al recibir los pulsos infrarrojos mida la anchura del pulso(habra que hacer unas pruebas con osciloscopio para los valores de muestreo del pic) y decodifique cual de los 4 pulsadores ha sido accionado. Tanto el pic como el 555, como el display led funcionan con 2v, asi que con 3v tanto en el reloj como el boligrafo deberian tener una pila de esas de 3v o dos de boton de 1,5.

jgpeiro:
lo dicho....
Me queda explicar un nuevo metodo para crear un buffer en la RAM con una fila entera de 84 bytes con los pixels que tienen que tienen que ser pintados en el LCD.
......Pero para explicar estos ultimos buffers asi como el aspecto del cursor are unos dibujitos

Tambien tengo un nuevo algoritmo para transformar los 7 caracteres a 6 lineas mas rapido que el que propuse en post anteriores....
...bueno, este es el dibujo...

jgpeiro:
lo dicho....
Me queda explicar un nuevo metodo para crear un buffer en la RAM con una fila entera de 84 bytes con los pixels que tienen que tienen que ser pintados en el LCD.
......Pero para explicar estos ultimos buffers asi como el aspecto del cursor are unos dibujitos

Tambien tengo un nuevo algoritmo para transformar los 7 caracteres a 6 lineas mas rapido que el que propuse en post anteriores....
...bueno, este es el dibujo...

Pegasux:
Estaria bien el poder incluir graficos, asi la chuleta seria mas completa.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa