Autor Tema: Generador de Caracteres CG-RAM  (Leído 56679 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Generador de Caracteres CG-RAM
« Respuesta #15 en: 24 de Diciembre de 2007, 14:38:38 »
si Reinier ya Ariel me comentò, voy a arreglarle ese detalle y se lo envìo.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Generador de Caracteres CG-RAM
« Respuesta #16 en: 24 de Diciembre de 2007, 21:56:15 »
Gracias Pedro

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Generador de Caracteres CG-RAM
« Respuesta #17 en: 26 de Diciembre de 2007, 14:14:58 »
cambios recientes:

25-Dic-2007
- se quitó el control commdlg.ocx y mscommctl.ocx que aunque no se usa se cargaba en panel de proyectos. El código principal sigue sin modificaciones.

prueba ahora Mig. 

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Generador de Caracteres CG-RAM
« Respuesta #18 en: 26 de Diciembre de 2007, 22:41:00 »
erhemmm... ya no puedo probarlo, ya instalé el vb jejeje

pero muchas gracias de todas formas, me sirvió mucho el programa para hacer un regalo navideño al estilo de los pics

para mostrarte que hice puedes checar este adjunto...

http://www.4shared.com/file/33095394/bacc41/PIC_LCD_navidad.html

o ver esta foto :D


Desconectado IAO

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 702
Re: Generador de Caracteres CG-RAM
« Respuesta #19 en: 27 de Diciembre de 2007, 13:32:10 »
Holaaaaaa:


Yo solo puedo repetir lo que el sr. navaismo dijo un día al sr. picmouse.
Cuando yo sea grande, quiero ser como Palitroquez.  :-)

De verdad eres un Cerebro Pali....z, y dices que no es nada, pero es bastante.

Te felicito, y adelante.
Bye('_').
"No hay caminos para lograr la PAZ. La PAZ es el camino"... (Mahatma Gandhi).
Mentes Superiores discuten Ideas, Proyectos. Mentes Promedio discuten Acontecimientos y Sucesos. Mentes Pobres discuten sobre Personas.

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Generador de Caracteres CG-RAM
« Respuesta #20 en: 27 de Diciembre de 2007, 15:34:13 »
que bien Mig  :-/ :-/ :-/




IAO jeje no es para tanto, no hace falta que seas como yo, solo con un poquito de constancia se pueden hacer grandes cosas.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Blanca Sánchez

  • PIC16
  • ***
  • Mensajes: 108
    • PicsMexico: Programación con Microcontroladores
Re: Generador de Caracteres CG-RAM
« Respuesta #21 en: 18 de Febrero de 2008, 21:21:24 »
Hola:

Gracias a Migsantiago encontré este mensaje...

No merezco tanto   :D :D :D


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Generador de Caracteres CG-RAM
« Respuesta #22 en: 18 de Febrero de 2008, 23:56:30 »
jajaja ¿verdad que se lució Pali con esta aplicación?  :D

Desconectado Blanca Sánchez

  • PIC16
  • ***
  • Mensajes: 108
    • PicsMexico: Programación con Microcontroladores
Re: Generador de Caracteres CG-RAM
« Respuesta #23 en: 19 de Febrero de 2008, 06:53:56 »
Hey, Hey... Chicos!

Pues resulta que con modificar un poco el código ejemplo del C en CCS se saca fácilmente el código en C para C18!!!

doble WUAW para Palitroquez!!!

aquí un ejemplito:



código en CCS:
Código: C
  1. //*******************************************************************************
  2. //   CODIGO A NIVEL DE PIXEL con cristal a 4Mhz
  3. //   CON 5 X 7 DOTS (se pueden crear hasta 8 caracteres solamente)
  4. //   EN ESTE EJEMPLO SE PRUEBA COMO GRABAR NUEVOS CARACTERES
  5. //   EN LA CG-RAM-DATA DIRECCIONANDO CADA LINEA CON EL CG-RAM-ADDRESS
  6. //*******************************************************************************
  7.  
  8. #include <16F84A.h>
  9. #fuses XT,NOWDT,PUT
  10. #use delay(clock=4000000)
  11.  
  12. #byte porta =5
  13. #byte portb =6
  14. #define use_portb_lcd TRUE
  15. #include <LCD.c>
  16. int const caracter0_direccion[8]={0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
  17. int const caracter0_datos[8]={0b00000,0b01010,0b00000,0b00100,0b10001,0b10001,0b11111,0b0};
  18.  
  19.  
  20. void main() {
  21.         int contador;
  22.         set_tris_a(0x0);
  23.         set_tris_b(0x0);
  24.         lcd_init();
  25.         for(contador=0;contador<8;contador++){
  26.                 lcd_send_byte(0,caracter0_direccion[contador]);   //modo comando
  27.                 lcd_send_byte(1,caracter0_datos[contador]);        // modo dato
  28.                
  29.         }
  30.         lcd_send_byte(0,0x80);
  31.  
  32.         for(contador=0;contador<1;contador++){
  33.                 lcd_send_byte(1,contador); //modo dato
  34.         }
  35.         delay_cycles(1);
  36. }

código en C18:
Código: C
  1. #include <p18f452.h>    // librería del microcontrolador
  2. #include <delays.h>             // librería de retardos
  3. #include <lcdd.h>               // librería de LCD modificada para el Puerto D
  4. /************************************************************************************/
  5.  
  6. int const caracter0_direccion[8]={0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
  7. int const caracter0_datos[8]={0b00000,0b01010,0b00000,0b00100,0b10001,0b10001,0b11111,0b0};
  8.  
  9. #pragma config LVP = OFF
  10. #pragma config WDT = OFF
  11. #pragma config OSC = XT        
  12.  
  13. /************************************************************************************/
  14. //Programa Principal
  15. /************************************************************************************/
  16.  
  17. void main(void)
  18. {
  19.         int contador;
  20.         Inicializa_LCD();                                              
  21.         Comando_LCD(CURSOR_OFF & BLINK_OFF);
  22.         Delay10KTCYx(100);
  23.         Comando_LCD(CLEAR);
  24.         for(contador=0;contador<8;contador++)
  25.         {
  26.                 Comando_LCD(caracter0_direccion[contador]);
  27.                 Dato_LCD(caracter0_datos[contador]);
  28.         }
  29.         Comando_LCD(0x80);
  30.  
  31.         for(contador=0;contador<1;contador++)
  32.         {
  33.                 Dato_LCD(contador);
  34.         }
  35.         while(1);
  36. }
   

acá la librería del LCD (puerto D):
Código: C
  1. /******************************************************/
  2. /*
  3. /* Manejo de un Display de Cristal Liquido LCD 16X4   */
  4. /* de 16 caracteres por 4 lineas, el LCD se encuentra */
  5. /* conectado en el Puerto D del microcontrolador, con */
  6. /* una interface de 4 lineas:                         */
  7. /*
  8. /*      LCD             PIC
  9. /* ------------------------------------
  10. /*      D4  (11)                -->     RD0
  11. /*      D5  (12)                -->     RD1
  12. /*      D6  (13)                -->     RD2
  13. /*      D7  (14)                -->     RD3
  14. /*
  15. /*      RS  (4)                 -->     RD4
  16. /*      RW  (5)                 -->     RD5
  17. /*      E   (6)                 -->     RD6
  18. /*
  19. /******************************************************/
  20.  
  21. /* Conexiones del LCD al Microcontrolador */
  22. //#include <delays.h>
  23. #define RS      RD4
  24. #define RW      RD5
  25. #define E       RD6
  26.  
  27.  
  28. /* Configuracion del Display y cursor */
  29.  
  30. #define DON                             0b00001111  /* Display encendido   */
  31. #define DOFF                    0b00001011  /* Display apagado     */
  32. #define CURSOR_HOME             0b00000010  /* Cursor encendido    */
  33. #define CURSOR_ON               0b00001111  /* Cursor encendido    */
  34. #define CURSOR_OFF              0b00001101  /* Cursor apagado      */
  35. #define BLINK_ON                0b00001111  /* Cursor con parpadeo */
  36. #define BLINK_OFF               0b00001110  /* Cursor sin parpadeo */
  37. #define CLEAR                   0b00000001  /* Display encendido   */
  38.  
  39.  
  40. /* Modo de entrada */
  41.  
  42. #define INCREMENT               0b00000110  /* Incrementa la posicion del cursor */
  43. #define DECREMENT               0b00000100  /* Decrementa la posicion del cursor */
  44.  
  45.  
  46. /* Configuracion de los desplazamientos del cursor y del Display*/
  47.  
  48. #define SHIFT_CUR_LEFT          0b00010011  /* Corrimiento del cursor a la izquierda  */
  49. #define SHIFT_CUR_RIGHT         0b00010111  /* Corrimiento del cursor a la derecha    */
  50. #define SHIFT_DISP_LEFT         0b00011011  /* Corrimiento del display a la izquierda */
  51. #define SHIFT_DISP_RIGHT        0b00011111  /* Corrimiento del display a la derecha   */
  52.  
  53.  
  54. /* Funciones de inicializacion */
  55.  
  56. #define NIBLE                           0b00000010  /* interface a 4 bits */
  57. #define FOUR_BIT                        0b00101111  /* Interface a 4-bit  */
  58. #define EIGHT_BIT                       0b00111111  /* Interface a 8-bit  */
  59. #define LINE_5X7                        0b00110011  /* Una linea, caracter 5x7 */
  60. #define LINE_5X10                       0b00110111  /* Una linea, caracter 5x10 */
  61. #define LINES_5X7                       0b00111011  /* Dos lineas. character 5x7 */
  62.  
  63.  
  64. /* Lineas de trabajo */
  65.  
  66. #define DDRAM_LINEA_1           0b10000000      /* Linea 1 */
  67. #define DDRAM_LINEA_2           0b11000000      /* Linea 2 */
  68. #define DDRAM_LINEA_3           0b10010000      /* Linea 3 */
  69. #define DDRAM_LINEA_4           0b11010000      /* Linea 4 */
  70.  
  71.  
  72. /* Configuracion del puerto */
  73.  
  74. #define Config_Puerto           0b00000000      /* RC<0:6> como salidas */
  75. #define Mascara                         0b00001111      /* Parte baja del Byte  */
  76.  
  77.  
  78. /* Prototipos de funciones */
  79.  
  80. void Inicializa_LCD(void);              /* Inicializa LCD */
  81. void Comando_LCD(char);                 /* Indica al LCD un comando */
  82. void Dato_LCD(char);                    /* Indica al LCD un caracter */
  83. /* Inicializacion del LCD segun fabricante */
  84.  
  85. void Inicializa_LCD(void)
  86. {
  87.         int i;
  88.        
  89.         PORTD = 0;                                      /* Puerto D a utilizar E = RS = RW = 0 */
  90.         TRISD = Config_Puerto;
  91.         Delay10TCYx(110);                       /* Retardo mayor a 100 useg. */
  92.         PORTD = NIBLE;                          /* Interface de 4 bits RC<0:3> */
  93.         PORTDbits.RS = 0;                       /* RS = 0 */
  94.         PORTDbits.RW = 0;                       /* RW = 0 */
  95.         PORTDbits.E = 1;                        /* E = 1 */
  96.         Delay1KTCYx(5);                         /* Retardo de 5 mseg. */       
  97.         PORTDbits.E = 0;                        /* E = 0 */
  98.         Delay1KTCYx(15);                        /* Retardo de 15 mseg. */
  99.  
  100.  
  101.         /* Funcion set,  DL = 0, N = 1, F = 0 */
  102.         /* Dos lineas, caracter de 5X7 e interface a 4 bits */ 
  103.         Comando_LCD(LINES_5X7 & FOUR_BIT);
  104.  
  105.  
  106.         /* Display ON, D = 1, C = 1, B = 1 */
  107.         /* Display encendido, cursor encendido con parpadeo */
  108.         Comando_LCD(DON & CURSOR_ON & BLINK_ON);
  109.  
  110.  
  111.         /* limpia el display */
  112.         Comando_LCD(CLEAR);
  113.  
  114.  
  115.         /* Entry Mode Set */
  116.         /* Incremento del cursor */
  117.         Comando_LCD(INCREMENT);
  118. }
  119.  
  120.  
  121. /* Indica al LCD comandos */
  122. void Comando_LCD(char dato)
  123. {
  124.         char temp;                                              /* variable auxiliar */
  125.  
  126.         Delay1KTCYx(10);                                /* Retardo de 10 mseg. */
  127.         temp = dato;                                    /* Respaldo del dato original */
  128.         dato = dato >> 4;                               /* Corrimiento del nible alto */
  129.         PORTD = dato & Mascara;                 /* Manda parte alta del nible */
  130.         PORTDbits.RS = 0;                               /* Indica que es un comando */
  131.         PORTDbits.RW = 0;                               /* RW = 0 */
  132.         PORTDbits.E = 1;                                /* Pone a E = 1 */
  133.         Delay1KTCYx(5);                                 /* Retardo de 5 mseg. */       
  134.         PORTDbits.E = 0;                                /* Pone a E = 0 */
  135.         PORTD = temp & Mascara;                 /* Parte baja del Byte */
  136.         PORTDbits.RS = 0;                               /* Indica que es un comando */
  137.         PORTDbits.RW = 0;                               /* RW = 0 */
  138.         PORTDbits.E = 1;                                /* Pone a E = 1 */
  139.         Delay1KTCYx(5);                                 /* Retardo de 5 mseg. */       
  140.         PORTDbits.E = 0;                                /* Pone a E = 0 */
  141. }
  142.  
  143. /* Manda datos al LCD */
  144. void Dato_LCD(char dato)
  145. {
  146.         char temp;                                              /* variable auxiliar */
  147.  
  148.         Delay1KTCYx(10);                                /* Retardo de 10 mseg. */
  149.         temp = dato;                                    /* Respaldo del dato original */
  150.         dato = dato >> 4;                               /* Corrimiento del nible alto */
  151.         PORTD = dato & Mascara;                 /* Manda parte alta del nible */
  152.         PORTDbits.RS = 1;                               /* Indica que es un caracter */
  153.         PORTDbits.RW = 0;                               /* RW = 0 */
  154.         PORTDbits.E = 1;                                /* Pone a E = 1 */
  155.         Delay1KTCYx(5);                                 /* Retardo de 5 mseg. */       
  156.         PORTDbits.E = 0;                                /* Pone a E = 0 */
  157.         PORTD = temp & Mascara;                 /* Parte baja del Byte */
  158.         PORTDbits.RS = 1;                               /* RS = 0 */
  159.         PORTDbits.RW = 0;                               /* RW = 0 */
  160.         PORTDbits.E = 1;                                /* Pone a E = 1 */
  161.         Delay1KTCYx(5);                                 /* Retardo de 5 mseg. */       
  162.         PORTDbits.E = 0;                                /* Pone a E = 0 */
  163. }


jiji... solo falta que averigue como agregar esta opción a esta fantástica aplicación...  :D :D :D

P.D.1. En cuanto averigue como postear BIEN los códigos modifico este mensaje... porque se ve raro... :shock:
P.D.2. ya me falta menos...

MODIFICADO: esa opción de GeSHi no está en todas las "apariencias" del foro. Pero ahora se ve bien :-/
« Última modificación: 20 de Febrero de 2008, 06:38:27 por Blanca Sánchez »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Generador de Caracteres CG-RAM
« Respuesta #24 en: 19 de Febrero de 2008, 13:16:15 »
Puedes usar el botoncito . Luego entre los corchetes pones el código y se va a ver así...

Código: [Seleccionar]
int suma(int a, int b)
{
return a+b;
}

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Generador de Caracteres CG-RAM
« Respuesta #25 en: 19 de Febrero de 2008, 20:54:02 »
voy a tomar nota Blanquita  :mrgreen: veo ese ejemplo que servirá de plantilla para añadirlo al programita.

ya me dieron otra tarea a mi lista de trabajos por hacer.  :lol:





La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Blanca Sánchez

  • PIC16
  • ***
  • Mensajes: 108
    • PicsMexico: Programación con Microcontroladores
Re: Generador de Caracteres CG-RAM
« Respuesta #26 en: 20 de Febrero de 2008, 00:10:12 »
Hola PalitroqueZ:

pues sería genial ¡¡¡ :-/ !!!... hubiese querido hacerlo yo para aprender más sobre el Visual Basic, pero apenas ví el código que empleaste y me quedé vizca  :D :D :D y sinceramente me tardaría muuucho tiempo...

aunque admito que me he dado a la tarea de utilizar tu programa como guía de aprendizaje... quien sabe, a lo mejor dentro de varios meses lo logro.

Saludos!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Generador de Caracteres CG-RAM
« Respuesta #27 en: 20 de Febrero de 2008, 21:58:37 »
Hola PalitroqueZ:

pues sería genial ¡¡¡ :-/ !!!... hubiese querido hacerlo yo para aprender más sobre el Visual Basic, pero apenas ví el código que empleaste y me quedé vizca  :D :D :D

 :D :D :D

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Generador de Caracteres CG-RAM
« Respuesta #28 en: 21 de Febrero de 2008, 14:02:34 »
por si te sirve de guía, en el vb, con la tecla F8 ves el programa corriendo de linea en linea, se sombrean con unos rectangulos amarillos y abajo hay una ventana llamada inmediato, en esta ventana puedes ver la evolución de las variables, para ello basta colocar un

Código: Visual Basic
  1. Debug.print "nombre de la variable: " & nombre de la variable

en zonas claves que quieras indagar. También estan los breakpoints



clicando antes de la linea vertical en tiempo de diseño, bastante útil.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Generador de Caracteres CG-RAM
« Respuesta #29 en: 17 de Diciembre de 2008, 02:09:42 »
felicitaciones, no habia visto este hilo, gracias Palitroquez  :-/ :-/ :-/ :-/
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....


 

anything