Autor Tema: ñ mediante la instruccion lcd_putc en LCD  (Leído 7770 veces)

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

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
ñ mediante la instruccion lcd_putc en LCD
« en: 15 de Julio de 2006, 15:51:48 »

Hola

Podria alguien ayudarme por que no puedo imprimir el caracter "ñ" en el LCD mediante la instruccion lcd_putc del compilador CCS, PCW.

por ejemplo niño :s

   lcd_gotoxy(1,2);
   printf(lcd_putc,"ni%co ",0X9B);





La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado djpalas

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 595
    • Microtronic
Re: ñ mediante la instruccion lcd_putc en LCD
« Respuesta #1 en: 15 de Julio de 2006, 16:44:17 »
Hola compañero Pantera

Supongo que estarias usando la libreria lcd.h que viene con el CSS, no??
Si es asi fi te fijas en la función definida por los creadores del CSS es la siguiente
Código: C
  1. void lcd_putc( char c) {
  2.    switch (c) {
  3.      case '\f'   : lcd_send_byte(0,1);
  4.                       delay_ms(2);
  5.                       break;
  6.      case '\n'   : lcd_gotoxy(1,2);
  7.                       break;
  8.      case '\b'   : lcd_send_byte(0,0x10);
  9.                       break;
  10.      default     : lcd_send_byte(1,c);
  11.                       break;
  12.    }
  13. }

Siendo:
\f = Borrar el LCD
\n = Retorno de Carro
\b = Retroceso una posicion

no esta definido nada para el caracter especial ñ, con lo que envia el codigo ASCII de la ñ. El cual si usas un LCD HD44780U de Hitachi o un LCD 2x16 compatible con el, puedes observar el codigo al que equivale la ñ en los patrones de dicho LCD no coinciden.

Código: [Seleccionar]
ascii
==========
ñ (1010 0100)
Ñ (1010 0101)

LCD HD44780U
==========
ñ (1111 0001)
Ñ (1101 0001)

Por lo que si lo usas a diario te aconsejaria q modificaras el lcd.h

podrias modificarlo asi:
Código: C
  1. void lcd_putc( char c) {
  2.    if(c=='ñ')
  3.      c=0b11110001;
  4.    else if(c=='Ñ')
  5.      c=0b11010001;
  6.    switch (c) {
  7.      case '\f'   : lcd_send_byte(0,1);
  8.                       delay_ms(2);
  9.                       break;
  10.      case '\n'   : lcd_gotoxy(1,2);
  11.                       break;
  12.      case '\b'   : lcd_send_byte(0,0x10);
  13.                       break;
  14.      default     : lcd_send_byte(1,c);
  15.                       break;
  16.    }
  17. }

Con esta pequeña modificación no te olvidas de problemas futuros ;)

PD: Te adjunto el PDF de LCD que me refería y aparte aquí puedes ver la tabla ascii http://www.lookuptables.com/
« Última modificación: 15 de Julio de 2006, 16:48:13 por djpalas »

Saludos desde Cádiz, España
Web personal: http://www.microtronic.es

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: ñ mediante la instruccion lcd_putc en LCD
« Respuesta #2 en: 15 de Julio de 2006, 20:54:18 »
 jeeee ya esta  :-)


Pues para encontrar el caracter que queria un amigo, Teddy, me sugirio que leyera toda la LCD

Código: Matlab M
  1. While (True){
  2.       lcd_gotoxy(1,1);
  3.       printf(lcd_putc,"%u   %c",i,i);            
  4.       i++;
  5.       delay_ms(1000)    ;
  6.       }

Ya despues pude ver los caracteres, Ñ mayuscula no la encontre, pero pues con la ñ tengo.

Finalmente hice sigo tu consejo djpalas

Código: Matlab M
  1. void lcd_putc( char c) {
  2.    if(c=='ñ')     c=238;
  3.    
  4.    switch (c) {
  5.      case '\f'   : lcd_send_byte(0,1);
  6.                    delay_ms(2);
  7.                                            break;
  8.      case '\n'   : lcd_gotoxy(1,2);        break;
  9.      case '\b'   : lcd_send_byte(0,0x10);  break;
  10.      default     : lcd_send_byte(1,c);     break;
  11.    }
  12. }


El Rock es cultura :-)
« Última modificación: 15 de Julio de 2006, 20:55:56 por pantera »
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: ñ mediante la instruccion lcd_putc en LCD
« Respuesta #3 en: 16 de Julio de 2006, 15:36:34 »
Como aún tengo fresco el tema del LCD os pongo esto por si os ayuda ....

Mapa de caracteres del LCD sacado de la página número 18 del Datasheet del LCD

la "ñ" por ejemplo es en binario según la tabla: 1110 1110 = 0xee = 238



Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Arkaedus

  • PIC10
  • *
  • Mensajes: 25
Re: ñ mediante la instruccion lcd_putc en LCD
« Respuesta #4 en: 25 de Junio de 2015, 05:22:49 »
Hoal Redpic coy nuevo en este mundo y me gustaría saber como se realiza la conversion que has hecho aqui para llegar al 238 y comos e llama el codigo 0xEE ( o sea binario natural, etc para saber más sobre él):

Como aún tengo fresco el tema del LCD os pongo esto por si os ayuda ....

Mapa de caracteres del LCD sacado de la página número 18 del Datasheet del LCD

la "ñ" por ejemplo es en binario según la tabla: 1110 1110 = 0xee = 238





Esta página encontre sobre la tabla de caracteres http://electronic-engineering.ch/microchip/datasheets/lcd/lcd_data_sheets.html#rom_code_a00

Yo he utilizado esto para imprimir la ñ y el simbolo del grado(pero me gustaría saber hacerlo para poder poner otros caracteres):

lcd_putc((char)223); //Para poner el caracter º (Lo busque tambien por internet que era 223, pero no se comos e saca como ya dije, lo que queiro es aprender a sacar el codigo 223 , 238 , etc de cada caracter)

lcd_putc((char)238); //Para poner el caracter ñ


Un saludo y gracias porque llegue aqui buscando el codigo para poder poner la ñ.
« Última modificación: 25 de Junio de 2015, 05:27:42 por Arkaedus »