Autor Tema: Audio y simbolos en lcd  (Leído 2023 veces)

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

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Audio y simbolos en lcd
« en: 03 de Julio de 2009, 23:26:09 »
Hola a todos, bueno he tratado de buscar como hacer que la librería flex_lcd me deje enviar caracteres que yo manipule, es decir algo asi como este video en youtube:

Yo hice ya un VU pero a mi manera, y como no se enviar este tipo de caracteres me toco dividir el volumen en varias partes iguales, y mandar el simbolo ">" cuando correspondia al nivel de audio. Pero la verdad se ve algo raro y la variación no se ve tan real... me gsutaria saber como hago para enviar simbolos de esa manera.

y aca va la ultima pregunta, estoy leyendo el nivel del audio gracias al integrado LM3914, pero me he dado cuenta que esto lo hacen sin necesidad de esto, de que forma podria intoducir audio por un canal analogo sin la ayuda de algun integrado extra?

desde ya gracias!!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Audio y simbolos en lcd
« Respuesta #1 en: 04 de Julio de 2009, 01:06:04 »
Aquí tienes un programita realizado por Palitroquez que genera los datos necesarios para escribir en la memoria CGRAM del LCD.
Lo que veo que guarda la dirección de cada registro en una matriz, y eso consume rom:


Te dejo también un ejemplo que hice yo en algún momento:  :mrgreen:

Código: C
  1. #include <16F648A.h>
  2.  
  3. #FUSES NOWDT                    //No Watch Dog Timer
  4. #FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
  5. #FUSES PUT                      //Power Up Timer
  6. #FUSES NOPROTECT                //Code not protected from reading
  7. #FUSES NOBROWNOUT               //No brownout reset
  8. #FUSES NOMCLR                   //Master Clear pin used for I/O
  9. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  10. #FUSES NOCPD                    //No EE protection
  11.  
  12. #use delay(clock=20000000)
  13. #include <flex_lcd.c>
  14.  
  15.  
  16. // En este vector se puede almacenar los 8 caracteres en formato 5x7.-
  17. char const CaracteresCGRAM[64]={0x05,0x0D,0x1D,0x1D,0x1D,0x0D,0x05,0x00,
  18.                           0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00,
  19.                           0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x00,
  20.                           0x14,0x16,0x17,0x17,0x17,0x16,0x14,0x00,
  21.                           0x00,0x0E,0x0E,0x0E,0x0E,0x0E,0x00,0x00};
  22.  
  23. // Guarda en la CGRAM el caracter en el banco seleccionado.-
  24. // <Caracter> es la dirección de la primer fila del caracter a enviar.-
  25. void lcd_write_cgram(int Banco,int Caracter){
  26. int Dire_Banco,i;
  27.  
  28.    Dire_Banco=0x40 + 0x08*Banco;
  29.    lcd_send_byte(0,Dire_Banco);
  30.    // Cargamos los 8 registros.-
  31.    for(i=0;i<8;i++){
  32.       lcd_send_byte(1,CaracteresCGRAM[Caracter + i]);
  33.    }
  34.    lcd_send_byte(0,0x80); // Se da por terminada la escritura.-
  35. }
  36.  
  37. // Incializa Memoria CGRAM.-
  38. void lcd_init_cgram(void){
  39. int j;
  40.    for(j=0;j<8;j++){
  41.    lcd_write_cgram(j,j*8);  
  42.    }
  43. }
  44.  
  45. void main()
  46. {
  47. lcd_init();
  48.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  49.    setup_timer_1(T1_DISABLED);
  50.    setup_timer_2(T2_DISABLED,0,1);
  51.    setup_comparator(NC_NC_NC_NC);
  52.    setup_vref(FALSE);
  53.    
  54.    lcd_init_cgram();
  55.    
  56.    lcd_putc("LCD CGRAM:\n");
  57.    
  58.    lcd_putc(0);
  59.    lcd_putc(1);
  60.    lcd_putc(2);
  61.    lcd_putc(3);
  62.    lcd_putc(4);
  63.    
  64.    while(1){}
  65. }
No contesto mensajes privados, las consultas en el foro


 

anything