Code:
'*******************************************************************************
'*  Archivo : VUMETER.PBP                                                      *
'*  Autor   : Saúl (Alias Zaxione)                                             *
'*  Fecha   : 08/11/2009                                                       *
'*  Versión : 1.0                                                              *
'*  Nota    : VuMeter Estéreo con varias visualizaciones.                      *
'*  Web     : http://www.zaxione.com                                           *
'*******************************************************************************
DEFINE OSC 20          'Oscilador de 20 MHz
'*******************************************************************************
ADCON0 = %00000000      'Definir todos los PORTA y PORTE como analógicos
ADCON1 = %00000001      'Definir todos los PORTA y PORTE como analógicos
PAUSE 500              'Tiempo necesario para la iniciación del LCD
DEFINE LCD_DREG PORTB  'LCD PORT para envío de datos B 
DEFINE LCD_DBIT 4      'LCD utiliza los Bit inferior 0 o superior 4 
DEFINE LCD_RSREG PORTB 'LCD RS en el PORTB 
DEFINE LCD_RSBIT 0     'LCD RS PORTB.0 
DEFINE LCD_EREG PORTB  'LCD E en el PORTB 
DEFINE LCD_EBIT 1      'LCD E PORTB.1 
DEFINE LCD_BITS 4      'LCD se utilizan 4 o 8 bits para datos 
DEFINE LCD_LINES 2     'Numero de lineas del lcd 
'*******************************************************************************
DEFINE ADC_BITS 8      'Resultado del ADC 8 o 10 bits
DEFINE ADC_CLOCK 3     'Ajuste del reloj
DEFINE ADC_SAMPLEUS 50 'Ajuste del tiempo de muestreo en microsegundos
'*******************************************************************************
CANAL    var byte                             'Nombre de la variable
LINEA    VAR BYTE                             'Nombre de la variable
CONTADOR VAR BYTE                             'Nombre de la variable
RESTO    VAR BYTE                             'Nombre de la variable
MARCA1   VAR BIT                              'Nombre de la variable
MARCA2   var byte                             'Nombre de la variable
PULSADOR var PORTB.2                          'Pulsador en el PORTB.2
'*******************************************************************************
LCDOUT 254, 64, 1 ,2 ,5, 5 ,5 ,5 ,2 ,1        'cgram posición 0
LCDOUT 254, 72, 24 ,4 ,26, 2 ,2 ,26 ,4 ,24    'cgram posición 1
LCDOUT $FE, 1                                 'Borrado de la pantalla
FOR CONTADOR = 144 TO 130 STEP -1             'Cuenta atras     
LCDOUT $FE, CONTADOR, 20, 0, 1, "Zaxione "    'Imprimir en pantalla
PAUSE 150                                     'Pausa de 0,15 segundos
NEXT CONTADOR                                 'Regresa a CONTADOR
PAUSE 2000                                    'Pausa de 2 segundos
FOR CONTADOR = 130 TO 144                     'Cuenta hacia delante
LCDOUT $FE, CONTADOR, 20, 0, 1, "Zaxione "    'Imprimir en pantalla
PAUSE 150                                     'Pausa de 0,15 segundos
NEXT CONTADOR                                 'Regresa a CONTADOR
LCDOUT $FE, 1                                 'Borrado de la pantalla
'*******************************************************************************
GRAF1:
  MARCA2 = 1
  lcdout 254,64, 0 ,16 ,16, 16 ,16 ,16 ,16 ,0 'cgram posición 0   
  lcdout 254,72, 0 ,24 ,24, 24 ,24 ,24 ,24 ,0 'cgram posición 1
  lcdout 254,80, 0 ,28 ,28, 28 ,28 ,28 ,28 ,0 'cgram posición 2 
  lcdout 254,88, 0 ,30 ,30, 30 ,30 ,30 ,30 ,0 'cgram posición 3
  lcdout 254,96, 0 ,31 ,31, 31 ,31 ,31 ,31 ,0 'cgram posición 4 
  pause 300
goto barrA
'*******************************************************************************
GRAF2:
  MARCA2 = 2
  lcdout 254,64, 0 ,24 ,24, 24 ,24 ,24 ,24 ,0 'cgram posición 0   
  lcdout 254,72, 0 ,24 ,24, 24 ,24 ,24 ,24 ,0 'cgram posición 1
  lcdout 254,80, 0 ,27 ,27, 27 ,27 ,27 ,27 ,0 'cgram posición 2 
  lcdout 254,88, 0 ,27 ,27, 27 ,27 ,27 ,27 ,0 'cgram posición 3
  lcdout 254,96, 0 ,27 ,27, 27 ,27 ,27 ,27 ,0 'cgram posición 4 
  pause 300
goto BARRA
'*******************************************************************************
GRAF3:
  MARCA2 = 3
  lcdout 254,64, 0 ,0 ,0, 16 ,16 ,0 ,0 ,0     'cgram posición 0   
  lcdout 254,72, 0 ,0 ,0, 24 ,24 ,0 ,0 ,0     'cgram posición 1
  lcdout 254,80, 0 ,0 ,0, 28 ,28 ,0 ,0 ,0     'cgram posición 2 
  lcdout 254,88, 0 ,0 ,0, 30 ,30 ,0 ,0 ,0     'cgram posición 3
  lcdout 254,96, 0 ,0 ,0, 31 ,31 ,0 ,0 ,0     'cgram posición 4 
  pause 300
goto BARRA
'*******************************************************************************
GRAF4:
  MARCA2 = 4
  lcdout 254,64, 0 ,16 ,16, 16 ,16 ,16 ,16 ,0 'cgram posición 0   
  lcdout 254,72, 0 ,16 ,16, 16 ,16 ,16 ,16 ,0 'cgram posición 1
  lcdout 254,80, 0 ,20 ,20, 20 ,20 ,20 ,20 ,0 'cgram posición 2 
  lcdout 254,88, 0 ,20 ,20, 20 ,20 ,20 ,20 ,0 'cgram posición 3
  lcdout 254,96, 0 ,21 ,21, 21 ,21 ,21 ,21 ,0 'cgram posición 4 
  pause 300
GOTO BARRA
'*******************************************************************************
GRAF5:
  MARCA2 = 5
  lcdout 254,64, 0 ,0 ,0, 4 ,0 ,0 ,0 ,0       'cgram posición 0   
  lcdout 254,72, 0 ,0 ,4, 14 ,4 ,0 ,0 ,0      'cgram posición 1
  lcdout 254,80, 0 ,0 ,14, 14 ,14 ,0 ,0 ,0    'cgram posición 2 
  lcdout 254,88, 0 ,4 ,14, 31 ,14 ,4 ,0 ,0    'cgram posición 3
  lcdout 254,96, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0  'cgram posición 4 
  pause 300
GOTO BARRA
'*******************************************************************************
GRAF6:
  MARCA2 = 6
  lcdout 254,64, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0  'cgram posición 0   
  lcdout 254,72, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0  'cgram posición 1
  lcdout 254,80, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0  'cgram posición 2 
  lcdout 254,88, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0  'cgram posición 3
  lcdout 254,96, 0 ,0 ,0, 31 ,0 ,0 ,0 ,0      'cgram posición 4 
  pause 300
'******************************************************************************* 
BARRA:
IF MARCA1 = 1 THEN                            'Si es verdadero
LINEA = $2
ADCIN 7, CANAL
CANAL = CANAL * 4
MARCA1 = 0                                    '1ºLinea LCD, muestra canal L
ELSE                                          'Si no lo es
LINEA = $c0
ADCIN 6, CANAL
CANAL = CANAL * 4
MARCA1 = 1                                    '2ºLinea LCD, muestra canal R
ENDIF                                         'Fin de la comparación
'*******************************************************************************  
RESTO = (CANAL // 5)                          'Operación restó de la división
LCDOUT $FE, LINEA                             'Inicia la escritura en el LCD
FOR CONTADOR = 1 TO (CANAL / 5)               'Cuenta hacia delante
LCDOUT 4                                      'Imprime cgram posición 4
NEXT CONTADOR                                 'Regresa a CONTADOR
IF RESTO = 1 THEN LCDOUT 0                    'Imprime cgram posición 0
IF RESTO = 2 THEN LCDOUT 1                    'Imprime cgram posición 1
IF RESTO = 3 THEN LCDOUT 2                    'Imprime cgram posición 2
IF RESTO = 4 THEN LCDOUT 3                    'Imprime cgram posición 3
LCDOUT 20, 20, 20                             'Borrado de 3 caracteres 
'*******************************************************************************
IF (PULSADOR = 1) and (MARCA2 = 6) THEN GRAF1 '1º Visualización
IF (PULSADOR = 1) and (MARCA2 = 1) THEN GRAF2 '2º Visualización
IF (PULSADOR = 1) and (MARCA2 = 2) THEN GRAF3 '3º Visualización
IF (PULSADOR = 1) and (MARCA2 = 3) THEN GRAF4 '4º Visualización
IF (PULSADOR = 1) and (MARCA2 = 4) THEN GRAF5 '5º Visualización
IF (PULSADOR = 1) and (MARCA2 = 5) THEN GRAF6 '6º Visualización
'*******************************************************************************
GOTO BARRA
END
changes

1. added "ADCON1 = %00000001"
2. added "CANAL = CANAL * 4" in two places

you could also use 10 bit mode


Name:  Image 2.png
Views: 8206
Size:  32.3 KB
George