Autor Tema: GIRO PLAY... Reloj y Mensaje...  (Leído 3877 veces)

0 Usuarios y 6 Visitantes están viendo este tema.

Desconectado Fapes

  • PIC10
  • *
  • Mensajes: 10
GIRO PLAY... Reloj y Mensaje...
« en: 21 de Mayo de 2010, 21:03:20 »
Bueno... Como lo habia comentado anteriormente, me he propuesto a llevar este proyecto a cabo...

Es un propeller o giroplay compuesto por 15 LEDS, que al girar a altas velocidades, y aprovechando la persistencia del ojo humano, logra crear el efecto de una matriz de leds...
En este proyecto quiero implementar dos cosas... La linea de leds esta compuesta por 8 leds rojos y 7 leds azules como lo podemos ver en el siguiente diseño improvisado (pido disculpas por lo feo):



Uploaded with ImageShack.us

7 leds rojos van a mostrar la hora en formato hh : mm : ss... cada numero se formara de 7x5 pixeles y 1 pixel de espacio entre cada numero (Llamo pixel a cada led)... La hora es obtenida por medio del puerto serial usando el DS1307 RTC...

7 leds azules mostraran un mensaje que sera introducido desde el PC por el puerto serial... cada letra se formara de 7x5 pixeles y 1 pixel de espacio entre cada letra...

La alimentacion del circuito la hare por medio de una bateria de 12V por lo que usare el 7805 que me baja de 12V a 5V... (Recibo ideas para la alimentacion)

Bueno... despues de esta introduccion voy a mostrar los calculos que realice (Porfa... si ando loco con los calculos avisenme):

Primero que todo los leds que usare son de 0.5cm cada uno... Voy a implementar una linea de 15 leds, lo que me da 15*0.5=7.5cm... Por la acomodacion de los leds en la placa voy a dejar 0.5cm de margen de error, asi que voy a trabajar con un radio R=8cm...

Ahora decimos que el perimetro P = 2*pi*R = 2*pi*8cm = 50cm aprox. Como cada pixel es un led--> 50/0.5 = 100pixeles... Cada palabra ocupa 6 pixeles horizontales (5 iluminados y 1 del espacio entre palabras) lo que nos daria--> 100/6 = 16 palabras max aprox en la matriz (Por ahora estoy hablando de los leds azules que cubren el perimetro de 8cm y son para los mensajes)...

Para el motor voy a utilizar un taladro... este tiene una velocidad de 2500RPM lo que nos da una frecuencia de giro de 41.67 (2500/60 = 41.67)... Como sabemos T = 1/F = 1/41.67 = 24ms Tiempo que dura en dar una vuelta... Lo que nos dice que en 24ms debo encender y apagar 100pixeles--> 0.024/100 = 240us por pixel...

Para estar un poco sobrados en tiempo escojo un cristal de 10MHZ lo que da (si no me equivoco) 0.4us por instruccion... mas que suficiente para implementar el proyecto...

Quiero darle un punto de referencia para que siempre inicie en la misma parte, y las letras no se corran... Esta parte no la se como hacerla aun (si con un optoacoplador o un foto diodo...) pero en el circuito de proteus lo tengo implementado como un pusador conectado al puerto A0, cada vez que de un giro, nos coloca un 0 en ese bit... Si alguien sabe como hacer esto le agradeceria la ayuda...

Bn finalmente ya he realizado el codigo, en teoria funciona bien, nos muestra el mensaje introducido desde el PC y la hora que se obtuvo por el RTC...

Código: [Seleccionar]
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=10000000)
#use RS232(BAUD=9600, BITS=8, PARITY=N, XMIT=PIN_C6, RCV=PIN_C7)
#include "ds1307.c"  //Codigo implementado para obtener la hora por el RTC uzando el protocolo i2c...


#bit  sensor=0x5.0  //Este va a ser el sensor del angulo de inicio..
#byte portb=0x06  //Controlara los leds externos... Mensajes
#byte portd=0x08  //Controlan los leds internos... Reloj
#bit  trisa=0x85.0
#byte trisb=0x86
#byte trisd=0x88



const unsigned char tabla[91][6] = {  //Tabla que genera las visualizaciones en los leds //Tabla ASCII para los mensajes. Solo MAYUSCULAS...


                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 00   
                                    {0x00,0x00,0x00,0x00,0x00,0xff  },  // 01                                                                                 
                                    {0x00,0x00,0x00,0x00,0x00,0xf0  },  // 02   
                                    {0x00,0x00,0x00,0x00,0x00,0x01  },  // 03   
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 04
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 05
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 06
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 07
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 08
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 09

                                   
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 10
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 11
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 12
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 13
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 14
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 15
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 16
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 17
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 18
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 19

                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 20
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 21
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 22
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 23
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 24
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 25
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 26
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 27
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 28
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 29

                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 30
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 31
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 32
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 33
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 34
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 35
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 36
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 37
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 38
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 39
                                   
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 40
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 41
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 42
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 43
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 44
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 45
                                    {0x00,0x03,0x03,0x00,0x00,0x00  },  // 46 .
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 47
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00  },  // 48 0
                                    {0x44,0x42,0x7F,0x40,0x40,0x00  },  // 49 1

                                    {0x42,0x61,0x51,0x49,0x46,0x00  },  // 50 2
                                    {0x22,0x41,0x49,0x49,0x36,0x00  },  // 51 3
                                    {0x38,0x24,0x22,0x7F,0x20,0x00  },  // 52 4
                                    {0x27,0x49,0x49,0x49,0x31,0x00  },  // 53 5
                                    {0x3E,0x49,0x49,0x49,0x32,0x00  },  // 54 6
                                    {0x01,0x01,0x71,0x09,0x07,0x00  },  // 55 7
                                    {0x36,0x49,0x49,0x49,0x36,0x00  },  // 56 8
                                    {0x26,0x49,0x49,0x49,0x36,0x00  },  // 57 9
                                    {0x00,0x36,0x36,0x00,0x00,0x00  },  // 58 :
                                    {0x00,0x36,0x36,0x00,0x00,0x00  },   // 59

                                    {0x38,0x38,0xfe,0x7b,0x38,0x10  },  // 60   flecha
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 61
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 62
                                    {0x00,0x00,0x00,0x00,0x00,0x00  },  // 63
                                    {0x32,0x49,0x79,0x41,0x3e,0x00  },  // 64 @
                                    {0x7e,0x11,0x11,0x11,0x7e,0x00  },  // 65 A
                                    {0x7f,0x49,0x49,0x49,0x36,0x00  },   // 66 B
                                    {0x3e,0x41,0x41,0x41,0x22,0x00  },   // 67 C
                                    {0x7f,0x41,0x41,0x22,0x1c,0x00  },   // 68 D
                                    {0x7f,0x49,0x49,0x49,0x41,0x00  },   // 69 E
                                   
                                    {0x7f,0x09,0x09,0x09,0x01,0x00  },   // 70 F
                                    {0x3e,0x41,0x49,0x49,0x7a,0x00  },   // 71 G
                                    {0x7f,0x08,0x08,0x08,0x7f,0x00  },   // 72 H
                                    {0x00,0x41,0x7f,0x41,0x00,0x00  },   // 73 I
                                    {0x20,0x40,0x41,0x3f,0x01,0x00  },   // 74 J
                                    {0x7f,0x08,0x14,0x22,0x41,0x00  },   // 75 K
                                    {0x7f,0x40,0x40,0x40,0x40,0x00  },   // 76 L
                                    {0x7f,0x02,0x0c,0x02,0x7f,0x00  },   // 77 M
                                    {0x7f,0x04,0x08,0x10,0x7f,0x00  },   // 78 N
                                    {0x3e,0x41,0x41,0x41,0x3e,0x00  },   // 79 O

                                    {0x7f,0x09,0x09,0x09,0x06,0x00  },   // 80 P
                                    {0x3e,0x41,0x51,0x21,0x5e,0x00  },   // 81 Q
                                    {0x7f,0x09,0x19,0x29,0x46,0x00  },   // 82 R
                                    {0x46,0x49,0x49,0x49,0x31,0x00  },   // 83 S
                                    {0x01,0x01,0x7f,0x01,0x01,0x00  },   // 84 T
                                    {0x3f,0x40,0x40,0x40,0x3f,0x00  },   // 85 U
                                    {0x1f,0x20,0x40,0x20,0x1f,0x00  },   // 86 V
                                    {0x3f,0x40,0x38,0x40,0x3f,0x00  },   // 87 W
                                    {0x63,0x14,0x08,0x14,0x63,0x00  },   // 88 X
                                    {0x07,0x08,0x70,0x08,0x07,0x00  },   // 89 Y
                                   
                                    {0x61,0x51,0x49,0x45,0x43,0x00  },   // 90 Z
                                    };

const int tabla2[90][12] = {  //Tabla ASCII para el reloj...
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x3E,0x45,0x49,0x51,0x3E,0x00 },  // 00   
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x44,0x42,0x7F,0x40,0x40,0x00 },  // 01                                                                             
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x42,0x61,0x51,0x49,0x46,0x00 },  // 02   
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x22,0x41,0x49,0x49,0x36,0x00 },  // 03   
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x38,0x24,0x22,0x7F,0x20,0x00 },  // 04
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x27,0x49,0x49,0x49,0x31,0x00 },  // 05
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x3E,0x49,0x49,0x49,0x32,0x00 },  // 06
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x01,0x01,0x71,0x09,0x07,0x00 },  // 07
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x36,0x49,0x49,0x49,0x36,0x00 },  // 08
                                    {0x3E,0x45,0x49,0x51,0x3E,0x00 , 0x26,0x49,0x49,0x49,0x36,0x00 },  // 09
                                   
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                   
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x3E,0x45,0x49,0x51,0x3E,0x00 },  // 10
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x44,0x42,0x7F,0x40,0x40,0x00 },  // 11
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x42,0x61,0x51,0x49,0x46,0x00 },  // 12
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x22,0x41,0x49,0x49,0x36,0x00 },  // 13
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x38,0x24,0x22,0x7F,0x20,0x00 },  // 14
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x27,0x49,0x49,0x49,0x31,0x00 },  // 15
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x3E,0x49,0x49,0x49,0x32,0x00 },  // 16
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x01,0x01,0x71,0x09,0x07,0x00 },  // 17
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x36,0x49,0x49,0x49,0x36,0x00 },  // 18
                                    {0x44,0x42,0x7F,0x40,0x40,0x00 , 0x26,0x49,0x49,0x49,0x36,0x00 },  // 19
                                   
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...

                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x3E,0x45,0x49,0x51,0x3E,0x00 },  // 20
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x44,0x42,0x7F,0x40,0x40,0x00 },  // 21
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x42,0x61,0x51,0x49,0x46,0x00 },  // 22
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x22,0x41,0x49,0x49,0x36,0x00 },  // 23
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x38,0x24,0x22,0x7F,0x20,0x00 },  // 24
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x27,0x49,0x49,0x49,0x31,0x00 },  // 25
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x3E,0x49,0x49,0x49,0x32,0x00 },  // 26
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x01,0x01,0x71,0x09,0x07,0x00 },  // 27
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x36,0x49,0x49,0x49,0x36,0x00 },  // 28
                                    {0x42,0x61,0x51,0x49,0x46,0x00 , 0x26,0x49,0x49,0x49,0x36,0x00 },  // 29
                                   
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...

                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x3E,0x45,0x49,0x51,0x3E,0x00 },  // 30
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x44,0x42,0x7F,0x40,0x40,0x00 },  // 31
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x42,0x61,0x51,0x49,0x46,0x00 },  // 32
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x22,0x41,0x49,0x49,0x36,0x00 },  // 33
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x38,0x24,0x22,0x7F,0x20,0x00 },  // 34
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x27,0x49,0x49,0x49,0x31,0x00 },  // 35
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x3E,0x49,0x49,0x49,0x32,0x00 },  // 36
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x01,0x01,0x71,0x09,0x07,0x00 },  // 37
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x36,0x49,0x49,0x49,0x36,0x00 },  // 38
                                    {0x22,0x41,0x49,0x49,0x36,0x00 , 0x26,0x49,0x49,0x49,0x36,0x00 },  // 39
                                   
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                   
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x3E,0x45,0x49,0x51,0x3E,0x00 },  // 40
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x44,0x42,0x7F,0x40,0x40,0x00 },  // 41
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x42,0x61,0x51,0x49,0x46,0x00 },  // 42
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x22,0x41,0x49,0x49,0x36,0x00 },  // 43
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x38,0x24,0x22,0x7F,0x20,0x00 },  // 44
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x27,0x49,0x49,0x49,0x31,0x00 },  // 45
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x3E,0x49,0x49,0x49,0x32,0x00 },  // 46
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x01,0x01,0x71,0x09,0x07,0x00 },  // 47
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x36,0x49,0x49,0x49,0x36,0x00 },  // 48
                                    {0x38,0x24,0x22,0x7F,0x20,0x00 , 0x26,0x49,0x49,0x49,0x36,0x00 },  // 49
                                   
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...
                                    {0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x00,0x00,0x00,0x00,0x00 },  // Sin uso...

                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x3E,0x45,0x49,0x51,0x3E,0x00 },  // 50
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x44,0x42,0x7F,0x40,0x40,0x00 },  // 51
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x42,0x61,0x51,0x49,0x46,0x00 },  // 52
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x22,0x41,0x49,0x49,0x36,0x00 },  // 53
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x38,0x24,0x22,0x7F,0x20,0x00 },  // 54
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x27,0x49,0x49,0x49,0x31,0x00 },  // 55
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x3E,0x49,0x49,0x49,0x32,0x00 },  // 56
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x01,0x01,0x71,0x09,0x07,0x00 },  // 57
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x36,0x49,0x49,0x49,0x36,0x00 },  // 58
                                    {0x27,0x49,0x49,0x49,0x31,0x00 , 0x26,0x49,0x49,0x49,0x36,0x00 },  // 59
};

unsigned char sec,min,hour;  //Variables para el reloj
unsigned long u,q;  //Variables para recorrer los vectores...
char mns[15];  //Almacena la cadena de caracteres introducida por el pto Serial...
char mensa[15];  //Almacenamos el vector mns en mensa para su respectiva lectura...


void print() {  //Enciende los leds externos para el mensaje...
   for(u=0;u<15;u++){  //Recorre los caracteres...
         for (q=0;q<6;q++) {  //Recorremos todo el vector de la tabla para encender los pixeles correspondientes al caracter...
            portb=tabla[mensa[u]][q];  //Introducimos el binario correspondiente al puerto b, para iluminar los leds...
            printf("led: %x\r",tabla[mensa[u]][q]);  //Esto es para comprobar el funcionamiento mediante los hex visualizados...
            delay_us(240); // 240us  A 2500RPM de nuestro motor, 240us es el tiempo que tarda en recorrer un pixel de 0.5cm...
         }
   }
}

void print_hora(char hh, mm, ss) {  //Enciende los leds internos para la hora

   for (q=0;q<12;q++) {  //Recorremos todo el vector de la tabla2 para encender los pixeles horizontales...
      portd=tabla2[hh][q];  //Encendemos los pixeles para la hora
      printf("hour: %x\r",tabla2[hh][q]);
      delay_us(240); // 240us
   }
   
   for (q=0;q<6;q++) {  //Colocamos los dos puntos
      portd=tabla[58][q]; //Encendemos los pixeles para los dos puntos
      printf("min: %x\r",tabla[58][q]);
      delay_us(240); // 240us
   }

   for (q=0;q<12;q++) {
      portd=tabla2[mm][q]; //Encendemos los pixeles para los minutos
      printf("min: %x\r",tabla2[mm][q]);
      delay_us(240); // 240us
   }

   for (q=0;q<6;q++) {  //Colocamos los dos puntos
      portd=tabla[58][q]; //Encendemos los pixeles para los dos puntos
      printf("min: %x\r",tabla[58][q]);
      delay_us(240); // 240us
   }
   
   for (q=0;q<12;q++) {
      portd=tabla2[ss][q];  //Encendemos los pixeles para los segundos
      printf("sec: %x\r",tabla2[ss][q]);
      delay_us(240); // 240us
   }
}

void CLOCK_SENSOR(){  //Funcion para almacenar en las variables la hora completa del RTC...
   sec=read_ds1307(0);   // leemos los segundos del ds1307...
   min=read_ds1307(1);   // leemos los minutos del ds1307...
   hour=read_ds1307(2);  // leemos la hora del ds1307...
   printf("Hora : %02X:%02X:%02X\r\n",hour,min,sec); //Corroborar si esta bien la hora...
}

void main(){

   init_ds1307();  //iniciamos el codigo ds1307
   sec=read_ds1307(0);  //
   write_ds1307(0,sec & 0x7F); // oscilador habilitado

   trisa = 0x00; //Parametros iniciales
   sensor = 1;   //para los puertos
   trisb = 0x00; //
   portb = 0x00; //
   trisd = 0x00; //
   portd = 0x00; //

   gets(mns);  //Obtenemos el mensaje y lo almacenamos en la varianle mns...
   printf("Mostrar: %s\r",mns);  //Para comprobar que se obtuvo el mensaje...

   for(q=0;q<15;q++)  //recorremos todo el mensaje...
      mensa[q]=mns[q];//y lo almacenamos en mensa...
   

   for(;;){  //Ciclo infinito...
      if(sensor==0){  //Este codigo lo ejecutara cada vez que el motor de una vuelta para iniciar en el angulo 0 y evitar corrimientos...
         print();  //Llamamos la funcion para visualizar el mensaje...
         CLOCK_SENSOR();  //Llamamos la funcion para obtener la hora completa...
         print_hora(hour, min, sec);  //Llamamos la funcion para visualizar la hora...
      }
   }
}

Bn... pero analizando un poco y segun lo que he leido la implementacion de los delays no es muy recomendable, ya que necesito visualizar la hora y los mensajes a la vez... y creo que como esta planteado no me tranajaria lo deseado... Por eso decidi implementar un analisis a fondo para saber en que tiempo estaba colocando cada pixel del mensaje y de la hora... Realize un analisis digital en proteus de cada bit del puertoa y el puertod y el resultado fue el siguiente:



Uploaded with ImageShack.us

Como pueden ver en la imagen, se demora alrededor de 9ms en cada pixel (muchisimo mas que los deseados 240us)... Y la verdad no se porque... fue una gran sorpresa... entonces pense en uzar los TIMERS para realizar esto, y me he encontrado practicamente con el mismo problema, solo que ahora se me demora como 110us por cada pixel...

Aca coloco el codigo implementado con el TIMER1:

Código: [Seleccionar]
.
.
.
.
TIMER1_isr() //function interrupción TMR0
{
   if(sensor==0){  //Este codigo lo ejecutara cada vez que el motor de una vuelta para iniciar en el angulo 0 y evitar corrimientos...
      for(u=0;u<15;u++){  //Para recorrer todo str...
         for (q=0;q<6;q++) {  //Recorremos todo el vector de la tabla para encender los pixeles verticales...
            portb=tabla[mensa[u]][q];  //Introducimos el binario correspondiente al puerto b, para iluminar los leds...
            pixel=0;
            //printf("led: %x\r",portb);  //Esto es para comprobar el funcionamiento mediante los hex visualizados...
            set_timer1(65461); //Carga del TMR1
         }
         //set_timer1(0x0FFB5); // 240us  A 2500RPM de nuestro motor, 240us es el tiempo que tarda en recorrer un pixel de 0.5cm...
   
      }
        /* CLOCK_SENSOR();  //Llamamos la funcion para obtener la hora completa...
         print_hora(hour, min, sec);  //Llamamos la funcion para visualizar la hora...
         set_timer1(0x0FFB5); //inicializa el timer0*/
 
  }
}

void main(){

  // delay_ms(50);
   init_ds1307();  //iniciamos el codigo ds1307
   sec=read_ds1307(0);  //
   write_ds1307(0,sec & 0x7F); // oscilador habilitado

   
   trisb = 0x00; //
   portb = 0x00; //
   trisd = 0x00; //
   portd = 0x00; //

   /*gets(mns);  //Obtenemos el mensaje y lo almacenamos en la varianle mns...
   printf("Mostrar: %s\r",mns);  //Para comprobar que se obtuvo el mensaje... */

   mns="HOLA";
   for(q=0;q<15;q++)  //recorremos todo el mensaje...
      mensa[q]=TOUPPER(mns[q]);//y lo almacenamos en mensa...
     
   trisa=0;
   sensor=1;//Inicializo SENSOR
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);//Setup timer: Reloj interno, preescaler= 8
   
   
   while(true){
      TIMER1_isr();
   }
 
}


Lo que quiero en si del programa es que me encienda cada pixel (linea de leds vertical) en 240us tanto en la parte de los mensajes como en la del reloj, y que lo haga simultaneamente en estos dos... Requiero de su colaboracion y mayor experiencia en el uso de los TIMER en los PIC... GRACIAS...

Adjunto los archivos para que puedan simularlos...

Desconectado yomejoe

  • PIC10
  • *
  • Mensajes: 3
Re: GIRO PLAY... Reloj y Mensaje...
« Respuesta #1 en: 27 de Octubre de 2010, 16:45:01 »
parcero disculpa es que yo quisiera hacer ese giroplay y pasa es que el documento de proteus abre y se me cierra y ps quisiera la ayuda tuya para elavorarlo y pues si puedes ayudarme te lo agradesco y pues mi correo es felobolo@hotmail.com

gracias

Desconectado Fapes

  • PIC10
  • *
  • Mensajes: 10
Re: GIRO PLAY... Reloj y Mensaje...
« Respuesta #2 en: 27 de Octubre de 2010, 22:40:23 »
parcero disculpa es que yo quisiera hacer ese giroplay y pasa es que el documento de proteus abre y se me cierra y ps quisiera la ayuda tuya para elavorarlo y pues si puedes ayudarme te lo agradesco y pues mi correo es felobolo@hotmail.com

gracias

Si se le cierra el archivo del proteus, intente abrirlo borrando el archivo con extension .PWI que se encuentra en la carpeta.. Animo con el proyecto y cualquier duda me la comunica.. XD

Desconectado yomejoe

  • PIC10
  • *
  • Mensajes: 3
Re: GIRO PLAY... Reloj y Mensaje...
« Respuesta #3 en: 01 de Noviembre de 2010, 12:38:03 »
parcero disculpa es que yo quisiera hacer ese giroplay y pasa es que el documento de proteus abre y se me cierra y ps quisiera la ayuda tuya para elavorarlo y pues si puedes ayudarme te lo agradesco y pues mi correo es felobolo@hotmail.com

gracias

Si se le cierra el archivo del proteus, intente abrirlo borrando el archivo con extension .PWI que se encuentra en la carpeta.. Animo con el proyecto y cualquier duda me la comunica.. XD


gracias parcero hice lo q me dijiste y funciono y creame que si tengo alguna otra duda no dudo en preguntarle  y mil gracias parcero

Desconectado yomejoe

  • PIC10
  • *
  • Mensajes: 3
Re: GIRO PLAY... Reloj y Mensaje...
« Respuesta #4 en: 04 de Noviembre de 2010, 18:12:53 »
parcero disculpa es que yo quisiera hacer ese giroplay y pasa es que el documento de proteus abre y se me cierra y ps quisiera la ayuda tuya para elavorarlo y pues si puedes ayudarme te lo agradesco y pues mi correo es felobolo@hotmail.com

gracias

Si se le cierra el archivo del proteus, intente abrirlo borrando el archivo con extension .PWI que se encuentra en la carpeta.. Animo con el proyecto y cualquier duda me la comunica.. XD


gracias parcero hice lo q me dijiste y funciono y creame que si tengo alguna otra duda no dudo en preguntarle  y mil gracias parcero

parcero tengo duda aserca del crcuito y esta en que es es DS1307 y en el cristal que tinene es de 12khz  y como hahago para desplegar un mensaje

y gracias por la ayuda


 

anything