Modulo LCD 16x2
Modulo LCD 16x2
Modulo LCD 16x2
Los mdulos LCD (Display de Cristal Lquidos), son utilizados para mostrar mensajes que indican
al operario es estado de la maquina, o para dar instrucciones de manejo, Mostar valores, etc. El LCD
permite la comunicacin entre las maquinas y los humanos, este puede mostrar cualquier carcter
ASCII, y consume mucho menos que los display de 7 segmentos, existe de varias presentaciones
por ejemplo de 2 lneas por 8 caracteres, 2x16, 2x20, 4x20, 4x40, etc. Sin backlight (14 pines) o con
backlight (16 pines, iluminado de pantalla), el LCD ms popular es el 2x16, 2 lneas de 16 caracteres
cada una.
Fotografa de un LCD 2x16
Los LCD se puede conectar con el PIC con un bus de 4 u 8 bits, la diferencia est en el tiempo
que se demora, pues la comunicacin a 4 bits, primero enva los 4 bits ms altos y luego los 4 bits
mas bajos, mientras que la de 8 bits enva todo al mismo tiempo, esto no es un inconveniente si
consideramos que el LCD trabaja en microsegundos. Pero la gran ventaja de hacer conexin a 4
bits, son los pocos cables que se deben conectar, como podemos ver en la figura siguiente solo
debemos conectar el bit de Registro, el Enable y los 4 bits ms altos del LCD, con esto es suficiente
para enviar mensajes.
El compilador PBP soporta mdulos LCD S con controlador Hitachi 44780 o equivalentes y por
defecto, asume que se conecto en el pin A4 el bit de registro, en el pin B3 el bit Enable y en el puerto
A empezando desde A0 hasta A3, los bits ms altos del LCD. Esta configuracin predefinida, se lo
puede cambiar de acuerdo a la necesidad, como lo veremos mas adelante.
Nota: algunos LCD no requieren de ninguna PAUSE al inicio, pero existen otros modelos que
necesita unos pocos milisegundos para estar listos, por eso colocamos un PAUSE 200 al comienzo
del programa.
Bien una vez listo el texto notaremos que las dos palabras estn al lado izquierdo, si queremos
que salgan centrados en nuestro LCD, tenemos 2 maneras de hacerlo, la primera es dando espacio
antes de cada palabra, ejemplo:
LCDOUT $FE,1, Hola y LCDOUT $FE, $C0, Micro PIC
Lo cual es sencillo pero no es muy recomendable porque ocupa mas espacio en el PIC, la
segunda manera es asignando el lugar donde se requiere que aparezca cada palabra.
LCDOUT $FE, 1
; limpiar pantalla
LCDOUT $FE, $86, "Hola"
'pasar el cursor a la 7ma casilla de 1ra lnea y escribe
LCDOUT $FE, $C4, "micro PIC"
'pasar a la casilla 5ta de la 2da lnea y escribe micro PIC
Se debe entender que existe un cursor que aunque no lo vemos, pues este es el que indica donde
aparecer la siguiente letra, para poder entender haremos un ejercicio completo, as podrn
aprender ms de LCD y las funciones de cada uno de los comandos. Primero que nada haremos
visible el cursor y luego pondremos PAUSE para poder ver el funcionamiento.
Programa de manejo del cursor:
Observen que la constante $FE se le cambio por pepa, as mismo si se les dificulta memorizar
como pasar a la segunda lnea, puede definir la constante: lin2 CON $C0, y cuando desee escribir en
la segunda lnea pondran: LCDOUT pepa, lin2, Hola, o lo que es lo mismo utilizando nmeros
decimales: LCDOUT 254, 192, Hola. Tambin cabe recalcar que el LCD tiene una memoria RAM
(Random Access Memory) que lo explicaremos ms adelante, por lo que una vez que se enva el
texto, este permanecer ah y el PIC se lo puede utilizar para otras tareas o podemos desconectarlo
si lo deseamos.
En ocasiones especiales se debe cambiar la configuracin de los pines del PIC hacia el LCD, por
ejemplo para utilizar los comparadores de voltaje que se encuentran en el puerto A, necesitamos
dejar disponibles estos pines, esto se logra adicionando al principio lo siguiente:
DEFINE LCD_DREG PORTB define pines del LCD B4 a B7
DEFINE LCD_DBIT 4 empezando desde el puerto B4 hasta el B7
DEFINE LCD_RSREG PORTB define pin para conectar el bit RS
DEFINE LCD_RSBIT 3 en el puerto B3
DEFINE LCD_EREG PORTB define el pin par conectar el bit Enable
DEFINE LCD_EBIT 2 en el puerto B2
Una vez que se define la nueva configuracin de pines para el LCD, programamos de la misma
forma que las ocasiones anteriores, es importante adems saber que los 4 bits de datos solo se
pueden configurar en los 4 bits ms bajos (B.0 al B.3) o los 4 bits ms altos (B.4 al B.7) de un puerto
del PIC, y si deseamos hacer una comunicacin a 8 bits con el LCD, estos deben estar en un solo
puerto, adems debemos definir en el PBP que vamos a utilizar un bus de 8 bits, esto es de la
siguiente manera:
DEFINE LCD_BITS 8 ; Define comunicacin a 8 bits con el LCD y si nuestro LCD posee 4 lneas,
tambin debemos definirlo de la siguiente forma:
DEFINE LCD_BITS 4 ;Define comunicacin 4 8 bits con el LCD
Nunca debes olvidarte de colocar el potencimetro en el display y las alimentaciones,
en nuestras simulaciones vamos a obviar esto.
Configuracin de un LCD a 4 bits con una configuracin diferente a la predefinida por el PBP, esta vez utilizando el
puerto B.3 para el bit R/S al B2 pare el Enable y desde el B.4 al B.7 para los bits de comunicacin.
LA PALABRA DEC. Sirve para mostrar el nmero de la variable en decimal, tambin se lo puede
representar por el signo (#), adems existe las palabras BIN y HEX, el siguiente es un ejemplo de
cmo mostrara el LCD si puls = 105:
LCDOUT $FE,$C5, DEC puls, Hz ;muestra en el LCD as: 105Hz
Tambin se lo puede utilizar el signo # que equivale a DEC
LCDOUT $FE,$C5, # puls, Hz ;muestra en el LCD as: 105Hz
Si deseamos ver la variable en hexadecimal pondramos as:
LCDOUT $FE,$C5, HEX puls, Hz ;muestra en el LCD as: 69Hz
Y si queremos verlo en binario
LCDOUT $FE,$C5, BIN puls, Hz ;muestra en el LCD as: 1101001Hz
BARRA: 'spanish
IF MARCA1 = 1 THEN 'Si es verdadero
LINEA = $2 '1 Linea LCD, muestra canal L
ADCIN 7, CANAL
MARCA1 = 0
ELSE 'Si no lo es
LINEA = $c0 '2 Linea LCD, muestra canal R
ADCIN 6, CANAL
MARCA1 = 1
ENDIF
BAR : 'english
IF Mark1 = 1 THEN
LINE = $2: ADCIN 7, CHANNEL: Mark1 = 0
ELSE
LINE = $c0: ADCIN 6, CHANNEL: Mark1 = 1
'
'
'
'
If true
1st line LCD shows L channel
If it is not
2nd Line LCD shows R channel
PROGRAMA EN CODE
17. '*******************************************************************************
18. '* Archivo : VUMETER.PBP
*
19. '* Autor
: Sal (Alias Zaxione)
*
20. '* Fecha
: 08/11/2009
*
21. '* Versin : 1.0
*
22. '* Nota
: VU Meter Estreo con varias visualizaciones.
*
23. '* Web
: http://www.zaxione.com
*
24. '*******************************************************************************
25. #CONFIG
26. __config _HS_OSC & _WDT_OFF & _CP_OFF & _BOREN_OFF
27.
28. #ENDCONFIG
29.
DEFINE OSC 20
'Oscilador de 20 MHz
30.
31. '*******************************************************************************
32. ' LCD I/O DEFINITIONS
33. DEFINE LCD_DREG PORTB 'LCD PORT para envo de datos B
34. DEFINE LCD_DBIT 4
'LCD utiliza los Bit inferior 0 o superior 4
35. DEFINE LCD_RSREG PORTB 'LCD RS en el PORTB
36. DEFINE LCD_RSBIT 0
'LCD RS PORTB.0
37. DEFINE LCD_EREG PORTB 'LCD E en el PORTB
38. DEFINE LCD_EBIT 1
'LCD E PORTB.1
39. DEFINE LCD_BITS 4
'LCD se utilizan 4 o 8 bits para datos
40. DEFINE LCD_LINES 2
'Numero de lineas del lcd
41.
42. '*******************************************************************************
43. ' LCD DEFINITIONS
44. DEFINE ADC_BITS 8
'Resultado del ADC 8 o 10 bits
45. DEFINE ADC_CLOCK 3
'Ajuste del reloj
46. DEFINE ADC_SAMPLEUS 50 'Ajuste del tiempo de muestreo en microsegundos
47.
48. '*******************************************************************************
49. ' VARIABLES
50. CANAL
var BYTE
'Nombre de la variable
51. LINEA
VAR BYTE
'Nombre de la variable
52. CONTADOR VAR BYTE
'Nombre de la variable
53. RESTO
VAR BYTE
'Nombre de la variable
54. MARCA1
VAR BIT
'Nombre de la variable
55. MARCA2
var BYTE
'Nombre de la variable
56. PULSADOR var PORTB.2
'Pulsador en el PORTB.2
57.
58. '*******************************************************************************
127.
PAUSE 300
128.
GOTO BARRA
129.
130.
'*******************************************************************************
131.
' VU Line style 5 (graphic bitmaps)
132. GRAF5:
133.
MARCA2 = 5
134.
LCDOUT 254,64, 0 ,0 ,0, 4 ,0 ,0 ,0 ,0
'cgram posicin 0
135.
LCDOUT 254,72, 0 ,0 ,4, 14 ,4 ,0 ,0 ,0
'cgram posicin 1
136.
LCDOUT 254,80, 0 ,0 ,14, 14 ,14 ,0 ,0 ,0
'cgram posicin 2
137.
LCDOUT 254,88, 0 ,4 ,14, 31 ,14 ,4 ,0 ,0
'cgram posicin 3
138.
LCDOUT 254,96, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0
'cgram posicin 4
139.
PAUSE 300
140.
GOTO BARRA
141.
142.
'*******************************************************************************
143.
' VU Line style 5 (graphic bitmaps)
144. GRAF6:
145.
MARCA2 = 6
146.
LCDOUT 254,64, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0
'cgram posicin 0
147.
LCDOUT 254,72, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0
'cgram posicin 1
148.
LCDOUT 254,80, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0
'cgram posicin 2
149.
LCDOUT 254,88, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0
'cgram posicin 3
150.
LCDOUT 254,96, 0 ,0 ,0, 31 ,0 ,0 ,0 ,0
'cgram posicin 4
151.
PAUSE 300
152.
153.
'*******************************************************************************
154.
' Read ADC input
155. BARRA:
156.
IF MARCA1 = 1 THEN
'Si es verdadero
157.
LINEA = $2
'1Linea LCD, muestra canal L
158.
ADCIN 7, CANAL
159.
MARCA1 = 0
160.
ELSE
'Si no lo es
161.
LINEA = $c0
'2Linea LCD, muestra canal R
162.
ADCIN 6, CANAL
163.
MARCA1 = 1
164.
ENDIF
'Fin de la comparacin
165.
166.
'*******************************************************************************
167.
' Remainder of DIV5 --> nro of pixels columns of last char in VU graph
168.
RESTO = (CANAL // 5)
'Operacin rest de la divisin
169.
LCDOUT $FE, LINEA
'Inicia la escritura en el LCD
170.
FOR CONTADOR = 1 TO (CANAL / 5)
'Cuenta hacia delante
171.
LCDOUT 4
'Imprime cgram posicin 4
172.
NEXT CONTADOR
'Regresa a CONTADOR
173.
174.
' Select last character in VU graph depending on the remainder value
175.
IF RESTO = 1 THEN LCDOUT 0
'Imprime cgram posicin 0
176.
IF RESTO = 2 THEN LCDOUT 1
'Imprime cgram posicin 1
177.
IF RESTO = 3 THEN LCDOUT 2
'Imprime cgram posicin 2
178.
IF RESTO = 4 THEN LCDOUT 3
'Imprime cgram posicin 3
179.
' ??? Erase 3 full chars after VU indicator
180.
LCDOUT 20, 20, 20
'Borrado de 3 caracteres
181.
182.
'*******************************************************************************
183.
' Select graphic style (progress with push-button presses
184.
IF (PULSADOR = 1) and (MARCA2 = 6) THEN GRAF1 '1 Visualizacin
185.
IF (PULSADOR = 1) and (MARCA2 = 1) THEN GRAF2 '2 Visualizacin
186.
IF (PULSADOR = 1) and (MARCA2 = 2) THEN GRAF3 '3 Visualizacin
187.
IF (PULSADOR = 1) and (MARCA2 = 3) THEN GRAF4 '4 Visualizacin
188.
IF (PULSADOR = 1) and (MARCA2 = 4) THEN GRAF5 '5 Visualizacin
189.
190.
191.
192.
193.
Changes TO PROGRAM:
1. added "ADCON1 = %00000001"
2. added "CANAL = CANAL * 4" in two places
you could also use 10 bit mode
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
'*******************************************************************************
'* Archivo : VUMETER.PBP
*
'* Autor
: Sal (Alias Zaxione)
*
'* Fecha
: 08/11/2009
*
'* Versin : 1.0
*
'* Nota
: VuMeter Estreo con varias visualizaciones.
*
'* Web
: http://www.zaxione.com
*
'*******************************************************************************
DEFINE OSC 20
'Oscilador de 20 MHz
'*******************************************************************************
ADCON0 = %00000000
'Definir todos los PORTA y PORTE como analgicos
ADCON1 = %00000001
'Definir todos los PORTA y PORTE como analgicos
PAUSE 500
'Tiempo necesario para la iniciacin del LCD
DEFINE LCD_DREG PORTB 'LCD PORT para envo 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 posicin 0
LCDOUT 254, 72, 24 ,4 ,26, 2 ,2 ,26 ,4 ,24
'cgram posicin 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
'*******************************************************************************
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
GRAF1:
MARCA2 = 1
lcdout 254,64, 0 ,16 ,16, 16 ,16 ,16 ,16 ,0 'cgram posicin 0
lcdout 254,72, 0 ,24 ,24, 24 ,24 ,24 ,24 ,0 'cgram posicin 1
lcdout 254,80, 0 ,28 ,28, 28 ,28 ,28 ,28 ,0 'cgram posicin 2
lcdout 254,88, 0 ,30 ,30, 30 ,30 ,30 ,30 ,0 'cgram posicin 3
lcdout 254,96, 0 ,31 ,31, 31 ,31 ,31 ,31 ,0 'cgram posicin 4
pause 300
goto barrA
'*******************************************************************************
GRAF2:
MARCA2 = 2
lcdout 254,64, 0 ,24 ,24, 24 ,24 ,24 ,24 ,0 'cgram posicin 0
lcdout 254,72, 0 ,24 ,24, 24 ,24 ,24 ,24 ,0 'cgram posicin 1
lcdout 254,80, 0 ,27 ,27, 27 ,27 ,27 ,27 ,0 'cgram posicin 2
lcdout 254,88, 0 ,27 ,27, 27 ,27 ,27 ,27 ,0 'cgram posicin 3
lcdout 254,96, 0 ,27 ,27, 27 ,27 ,27 ,27 ,0 'cgram posicin 4
pause 300
goto BARRA
'*******************************************************************************
GRAF3:
MARCA2 = 3
lcdout 254,64, 0 ,0 ,0, 16 ,16 ,0 ,0 ,0
'cgram posicin 0
lcdout 254,72, 0 ,0 ,0, 24 ,24 ,0 ,0 ,0
'cgram posicin 1
lcdout 254,80, 0 ,0 ,0, 28 ,28 ,0 ,0 ,0
'cgram posicin 2
lcdout 254,88, 0 ,0 ,0, 30 ,30 ,0 ,0 ,0
'cgram posicin 3
lcdout 254,96, 0 ,0 ,0, 31 ,31 ,0 ,0 ,0
'cgram posicin 4
pause 300
goto BARRA
'*******************************************************************************
GRAF4:
MARCA2 = 4
lcdout 254,64, 0 ,16 ,16, 16 ,16 ,16 ,16 ,0 'cgram posicin 0
lcdout 254,72, 0 ,16 ,16, 16 ,16 ,16 ,16 ,0 'cgram posicin 1
lcdout 254,80, 0 ,20 ,20, 20 ,20 ,20 ,20 ,0 'cgram posicin 2
lcdout 254,88, 0 ,20 ,20, 20 ,20 ,20 ,20 ,0 'cgram posicin 3
lcdout 254,96, 0 ,21 ,21, 21 ,21 ,21 ,21 ,0 'cgram posicin 4
pause 300
GOTO BARRA
'*******************************************************************************
GRAF5:
MARCA2 = 5
lcdout 254,64, 0 ,0 ,0, 4 ,0 ,0 ,0 ,0
'cgram posicin 0
lcdout 254,72, 0 ,0 ,4, 14 ,4 ,0 ,0 ,0
'cgram posicin 1
lcdout 254,80, 0 ,0 ,14, 14 ,14 ,0 ,0 ,0
'cgram posicin 2
lcdout 254,88, 0 ,4 ,14, 31 ,14 ,4 ,0 ,0
'cgram posicin 3
lcdout 254,96, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0 'cgram posicin 4
pause 300
GOTO BARRA
'*******************************************************************************
GRAF6:
MARCA2 = 6
lcdout 254,64, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0 'cgram posicin 0
lcdout 254,72, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0 'cgram posicin 1
lcdout 254,80, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0 'cgram posicin 2
lcdout 254,88, 0 ,14 ,31, 31 ,31 ,14 ,0 ,0 'cgram posicin 3
lcdout 254,96, 0 ,0 ,0, 31 ,0 ,0 ,0 ,0
'cgram posicin 4
pause 300
'*******************************************************************************
BARRA:
IF MARCA1 = 1 THEN
'Si es verdadero
LINEA = $2
ADCIN 7, CANAL
CANAL = CANAL * 4
MARCA1 = 0
'1Linea LCD, muestra canal L
ELSE
'Si no lo es
LINEA = $c0
ADCIN 6, CANAL
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
CANAL = CANAL * 4
MARCA1 = 1
'2Linea LCD, muestra canal R
ENDIF
'Fin de la comparacin
'*******************************************************************************
RESTO = (CANAL // 5)
'Operacin rest de la divisin
LCDOUT $FE, LINEA
'Inicia la escritura en el LCD
FOR CONTADOR = 1 TO (CANAL / 5)
'Cuenta hacia delante
LCDOUT 4
'Imprime cgram posicin 4
NEXT CONTADOR
'Regresa a CONTADOR
IF RESTO = 1 THEN LCDOUT 0
'Imprime cgram posicin 0
IF RESTO = 2 THEN LCDOUT 1
'Imprime cgram posicin 1
IF RESTO = 3 THEN LCDOUT 2
'Imprime cgram posicin 2
IF RESTO = 4 THEN LCDOUT 3
'Imprime cgram posicin 3
LCDOUT 20, 20, 20
'Borrado de 3 caracteres
'*******************************************************************************
IF (PULSADOR = 1) and (MARCA2 = 6) THEN GRAF1 '1 Visualizacin
IF (PULSADOR = 1) and (MARCA2 = 1) THEN GRAF2 '2 Visualizacin
IF (PULSADOR = 1) and (MARCA2 = 2) THEN GRAF3 '3 Visualizacin
IF (PULSADOR = 1) and (MARCA2 = 3) THEN GRAF4 '4 Visualizacin
IF (PULSADOR = 1) and (MARCA2 = 4) THEN GRAF5 '5 Visualizacin
IF (PULSADOR = 1) and (MARCA2 = 5) THEN GRAF6 '6 Visualizacin
'*******************************************************************************
GOTO BARRA
END
'Programa 7_2.bsp
'Programa Principal:
Inicio:
GOSUB IniLcd
Menu:
LCDCMD LCDpin,LCDON 'Configuracin Inicial
LCDOUT LCDpin,MoverCrsr,["PROGRAMA 7_2.bsp"]
LCDOUT LCDpin,Linea2,["PB1 = CONTINUAR"]
NPS1:
BUTTON S1,0,255,0,pulset1,0,NPS1 'Espera hasta que PB1 sea presionado
PAUSE 100
LCDCMD LCDpin,BorrarLCD 'Limpiar la pantalla
LCDOUT LCDpin,MoverCrsr,["1-SCur 2-CCur"] 'Permite desplegar el
LCDOUT LCDpin,Linea2,["3-SCurB 4-CCurB"] 'siguiente men de opciones
DO
BUTTON S1,0,255,0,pulset1,1,SinCrsr 'Si PB1 fue presionado => Sin Cursor
BUTTON S2,0,255,0,pulset2,1,ConCrsr 'Si PB2 fue presionado => Con Cursor
BUTTON S3,0,255,0,pulset3,1,SinCrsrPar 'Si PB3 fue presionado => Con Parpadeo
BUTTON S4,0,255,0,pulset3,1,ConCrsrPar 'Si PB4 fue presionado => Sin Parpadeo
LOOP
SinCrsr:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDON 'Encender la pantalla sin cursor
GOSUB Efectos 'Llamar a la subrutina Efectos
GOTO Menu
ConCrsr:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDONCrsr 'Encender pantalla con cursor
GOSUB Efectos 'Llamar a la subrutina Efectos
GOTO Menu
SinCrsrPar:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDONParp 'Encender pantalla con parpadeo activo,
GOSUB Efectos 'sin cursor
GOTO Menu
ConCrsrPar:
LCDCMD LCDpin,LCDOFF 'Apagar pantalla
LCDCMD LCDpin,LCDONCrsrParp 'Encender pantalla con parpadeo activo,
'Programa 7_3.bsp
'Este programa tiene por objetivo mostrar:
'1) El uso de los comandos LCDCMD y LCDOUT para enviar comandos y
mensajes al LCD
'2) El uso del comando LCDIN para leer informacin de la memoria
DDRAM
'2) El uso de los comandos LOOKUP Y LOOKDOWN
'=======================================================================
============
'{$STAMP BS2p}
'{$PBASIC 2.5}
'________________________________________________________________________________
___
'Declaracin de Variables y Constantes
BorrarLCD CON %00000001 'Limpiar pantalla, $FE,1
MoverCrsr CON %10000000 'Posicionar el cursor, $FE,$80
Despertar CON %00110000 'Despertar,$FE,$30
Modo4bits CON %00100000 'Modo de 4 bits de datos, $FE,$20
Modo2linea CON %00101000 'Modo de 2 lneas, tamao de 5x8, $FE,$28
LCDOFF CON %00001000 'Apagar la pantalla, $FE, $08
LCDON CON %00001100 'Encender, con cursor la pantalla,$FE,$1C
IncrCrsr CON %00000110 'Auto-incremento del cursor,$FE,$06
InicioLCD CON %00000010 'Posicin inicial del LCD,$FE,$02
LCDONCrsr CON %00001110 'Encender, con cursor la pantalla,$FE,$0E