Autor Tema: custom caracteres en un lcd alfanumerico  (Leído 1916 veces)

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

Desconectado CSA

  • PIC10
  • *
  • Mensajes: 1
custom caracteres en un lcd alfanumerico
« en: 04 de Octubre de 2012, 14:21:43 »
Hola a todos!

es mi primer post y soy un asiduo programador en lenguaje basic para PIC micros mas especialmente de mikrobasic. Pues bien en esta oportunidad les dejo un ejemplo de como mostrar caracteres propios(CUSTOM) en la pantalla de un display lcd de 2x16 caracteres.El hardware utilizado es un PIC16F873-04P controlando un display LCD 2x16 alfanumerico con controlador clasico.

Aqui va:El programa esta realizado con MIKROBASIC v7.2 y permite mostrar hasta 8 caracteres propios  en la

           pantalla del LCD(que es el maximo de caracteres que pueden mostrarse en la pantalla al mismo tiempo)

*******************************************************************************************************  
           program LCD_CUSTOM_v1

'uP:PIC16F873,XTAL 4MHZ


 const cpropio_0 as byte[8]= (0,0,0,0,0,0,0,0)
 const cpropio_1 as byte[8]= (0,0,0,0,0,0,0,0)
 const cpropio_2 as byte[8]= (0,0,0,0,0,0,0,0)
 const cpropio_3 as byte[8]= (0,0,1,0,0,0,0,0)
 const cpropio_4 as byte[8]= (0,0,0,0,0,0,0,0)
 const cpropio_5 as byte[8]= (0,0,0,0,0,0,0,0)
 const cpropio_6 as byte[8]= (0,0,0,0,0,0,0,0)
 const cpropio_7 as byte[8]= (0,0,0,0,0,0,0,0)

 dim i,dchar as byte

'*******************************************************************************

 sub procedure LCD_LOAD()    'Carga 8 caracteres propios en la CG-RAM
 
 for dchar=0 to 7

 Lcd_cmd(64 + (dchar*8))    'Apunta a la direccion de la ram de los caracteres
                            'propios CG-RAM.
'-------------------------------------------------------------------------------
 for i=0 to 7
'*******************************************************************************
 select case dchar
 
 case 0
 Lcd_Chr_Cp(CPROPIO_0)
 case 1
 Lcd_Chr_Cp(CPROPIO_1)
 case 2
 Lcd_Chr_Cp(CPROPIO_2)
 case 3
 Lcd_Chr_Cp(CPROPIO_3)
 case 4
 Lcd_Chr_Cp(CPROPIO_4)
 case 5
 Lcd_Chr_Cp(CPROPIO_5)
 case 6
 Lcd_Chr_Cp(CPROPIO_6)
 case 7
 Lcd_Chr_Cp(CPROPIO_7)
 end select
 
 next i
 next dchar
 end sub
'*******************************************************************************
 
 main:

   INTCON=0   'PROHIBO TODAS LAS INTERRUPCIONES

  'Configuro pines del puerto A y B.

   TRISA.0=1 'PIN RA0 COMO ENTRADA
   TRISA.1=1 'PIN RA1 COMO ENTRADA
   TRISA.2=1 'PIN RA2 COMO ENTRADA
   TRISA.3=1 'PIN RA3 COMO ENTRADA
   TRISA.4=1 'PIN RA4/TOCKI COMO ENTRADA

   TRISB.0=1 'PIN RB0 COMO ENTRADA
   TRISB.1=1 'PIN RB1 COMO ENTRADA
   TRISB.2=0 'PIN RB2 COMO SALIDA(RS)
   TRISB.3=0 'PIN RB3 COMO SALIDA(ENABLE)
   TRISB.4=0 'PIN RB4 COMO SALIDA(d4)
   TRISB.5=0 'PIN RB5 COMO SALIDA(d5)
   TRISB.6=0 'PIN RB6 COMO SALIDA(d6)
   TRISB.7=0 'PIN RB7 COMO SALIDA(d7)
  
   Lcd_Init(PORTB) 'Configura al puerto B para manejar el display LCD

   Lcd_cmd(cursor_off)
   Lcd_cmd(lcd_clear) 'Borra la DDRAM (produce que la pantalla aparezca limpia)

   LCD_LOAD()      'Carga los 8 caracteres propios en la CGRAM del LCD

 '------------------------------------------------------------------------------
   'Para visualizar cada caracter propio simplemente accedemos a la CG-RAM y
   'volcamos dicho contenido en ALGUNA COLUMNA DEL LCD ALFANUMERICO.

   'Ejemplo:
  
   Lcd_Chr(1,1,0)
   Lcd_Chr(1,2,1)
   Lcd_Chr(1,3,2)
   Lcd_Chr(1,4,3)
   Lcd_Chr(1,5,4)
   Lcd_Chr(1,6,5)
   Lcd_Chr(1,7,6)
   Lcd_Chr(1,8,7)

   end.
  

Nota:Aqui todos los caracteres tienensus 8 bytes que lo forman en cero,simplemente deben editarse cada uno de ellos con otro
        valor para mostar el caracter prooio necesitado

Un ejemlo de lo que puede hacerse con un lcd alfanumerico convencional(no OLED) de 2x16 caracteres se los muestro en un video de you tube que subi el link es:

      

O busquenlo como:STAND BY-MINI PINBALL T2 en youtube

En ese video presento la primera fase de la construccion de un mini pinball T2 JUDGMENT DAY utilizando un LCD de 2x16 caracteres,dado que ningun LCD(ni siquiera un OLED)posee control de intensidad de cada pixel de la pantalla como si lo hace la DMD(dot matrix display) en el pinball T2 JUDGMENT DAY real de williams electronics.    
« Última modificación: 04 de Octubre de 2012, 14:24:24 por CSA »


 

anything