You are on page 1of 11

Serie LCD monocromtica

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310

INTRODUCCIN.

LA PANTALLA LCD.

Seccin LCD-3310-01
Revisin: 03
Junio 2013

Serie LCD monocromtica


LCD's GRFICOS (PCD8544)
Utilidades con la plataforma
Arduino.LCD 3310

Sistema de coordenadas.

CARACTERSTICAS.

Seccin LCD-3310-01
Revisin: 03
Junio 2013

Serie LCD monocromtica


LCD's GRFICOS (PCD8544)
Utilidades con la plataforma
Arduino.LCD 3310

ASIGNACIN DE PINES ENTRE UN LCD 3310 Y UN LCD 5110.

Seccin LCD-3310-01
Revisin: 03
Junio 2013

Serie LCD monocromtica

Seccin LCD-3310-01
Revisin: 03
Junio 2013

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310
Equivalencia Interconexionados
CONECTOR
LCD-3310
LCD8PINES
Vista posterior
5110
(propio)
1
ROJO VCC
VCC ROJO
RST 1
2
NEGRO GND
SCLK AMARILLO
CE 2
3 AMARILLO SCLK SDIN BLANCO
D/C 3
4
BLANCO SDIN
D/C GRIS
SDIN 4
5
GRIS D/C
SCE VIOLETA
CLK 5
6 VIOLETA SCE
GND NEGRO
VCC 6
7
AZUL VOUT VOUT AZUL
LED 7
8
VERDE RST
RST VERDE
GND 8

Sencillo desplazador de nivel lgico.

Serie LCD monocromtica

Seccin LCD-3310-01
Revisin: 03
Junio 2013

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310

Una aplicacin sencilla.

Serie LCD monocromtica

Seccin LCD-3310-01
Revisin: 03
Junio 2013

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310

LCD test
CDIGO
/*
lcd_test.pde
Este cdigo tiene caractersticas adicionales
incluyendo una funcin de posicionamiento XY en la
pantalla
y una funcin Dibuja la linea de Nokia 3310 LCD
Se modific a partir del original
http://playground.arduino.cc/Code/PCD8544
*/
// Mods by V. Garca
// Funciona bien. 15/05/2013.
#define PIN_DC 2 // LCD Dat/Com. Pin 5
#define PIN_SCE 3 // LCD CS .... Pin 3
#define PIN_SDIN 4 // LCD SPIDat . Pin 6
#define PIN_RESET 5 // LCD RST .... Pin 1
#define PIN_SCLK 6 // LCD SPIClk . Pin 4
// LCD Gnd .... Pin 2
// LCD Vcc .... Pin 8
// LCD Vlcd ... Pin 7
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_X 84
#define LCD_Y 48
#define LCD_CMD 0
int a = 0;
static const byte ASCII[][5] =
{
{0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c

!
"
#
$
%
&
'
(
)
*
+
,

,{0x08,
,{0x00,
,{0x20,
,{0x3e,
,{0x00,
,{0x42,
,{0x21,
,{0x18,
,{0x27,
,{0x3c,
,{0x01,
,{0x36,
,{0x06,
,{0x00,
,{0x00,
,{0x08,
,{0x14,
,{0x00,
,{0x02,
,{0x32,
,{0x7e,
,{0x7f,
,{0x3e,
,{0x7f,
,{0x7f,
,{0x7f,
,{0x3e,
,{0x7f,
,{0x00,
,{0x20,
,{0x7f,
,{0x7f,
,{0x7f,
,{0x7f,
,{0x3e,
,{0x7f,
,{0x3e,
,{0x7f,
,{0x46,
,{0x01,
,{0x3f,
,{0x1f,
,{0x3f,
,{0x63,
,{0x07,

0x08,
0x60,
0x10,
0x51,
0x42,
0x61,
0x41,
0x14,
0x45,
0x4a,
0x71,
0x49,
0x49,
0x36,
0x56,
0x14,
0x14,
0x41,
0x01,
0x49,
0x11,
0x49,
0x41,
0x41,
0x49,
0x09,
0x41,
0x08,
0x41,
0x40,
0x08,
0x40,
0x02,
0x04,
0x41,
0x09,
0x41,
0x09,
0x49,
0x01,
0x40,
0x20,
0x40,
0x14,
0x08,

0x08,
0x60,
0x08,
0x49,
0x7f,
0x51,
0x45,
0x12,
0x45,
0x49,
0x09,
0x49,
0x49,
0x36,
0x36,
0x22,
0x14,
0x22,
0x51,
0x79,
0x11,
0x49,
0x41,
0x41,
0x49,
0x09,
0x49,
0x08,
0x7f,
0x41,
0x14,
0x40,
0x0c,
0x08,
0x41,
0x09,
0x51,
0x19,
0x49,
0x7f,
0x40,
0x40,
0x38,
0x08,
0x70,

0x08,
0x00,
0x04,
0x45,
0x40,
0x49,
0x4b,
0x7f,
0x45,
0x49,
0x05,
0x49,
0x29,
0x00,
0x00,
0x41,
0x14,
0x14,
0x09,
0x41,
0x11,
0x49,
0x41,
0x22,
0x49,
0x09,
0x49,
0x08,
0x41,
0x3f,
0x22,
0x40,
0x02,
0x10,
0x41,
0x09,
0x21,
0x29,
0x49,
0x01,
0x40,
0x20,
0x40,
0x14,
0x08,

0x08}
0x00}
0x02}
0x3e}
0x00}
0x46}
0x31}
0x10}
0x39}
0x30}
0x03}
0x36}
0x1e}
0x00}
0x00}
0x00}
0x14}
0x08}
0x06}
0x3e}
0x7e}
0x36}
0x22}
0x1c}
0x41}
0x01}
0x7a}
0x7f}
0x00}
0x01}
0x41}
0x40}
0x7f}
0x7f}
0x3e}
0x06}
0x5e}
0x46}
0x31}
0x01}
0x3f}
0x1f}
0x3f}
0x63}
0x07}

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

2d
2e
2f
30
31
32
33
34
35
36
37
38
39
3a
3b
3c
3d
3e
3f
40
41
42
43
44
45
46
47
48
49
4a
4b
4c
4d
4e
4f
50
51
52
53
54
55
56
57
58
59

.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y

Serie LCD monocromtica

Seccin LCD-3310-01
Revisin: 03
Junio 2013

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310
,{0x61,
,{0x00,
,{0x02,
,{0x00,
,{0x04,
,{0x40,
,{0x00,
,{0x20,
,{0x7f,
,{0x38,
,{0x38,
,{0x38,
,{0x08,
,{0x0c,
,{0x7f,
,{0x00,
,{0x20,
,{0x7f,
,{0x00,
,{0x7c,
,{0x7c,
,{0x38,
,{0x7c,
,{0x08,
,{0x7c,
,{0x48,
,{0x04,
,{0x3c,
,{0x1c,
,{0x3c,
,{0x44,
,{0x0c,
,{0x44,
,{0x00,
,{0x00,
,{0x00,
,{0x10,
,{0x00,
};

0x51,
0x7f,
0x04,
0x41,
0x02,
0x40,
0x01,
0x54,
0x48,
0x44,
0x44,
0x54,
0x7e,
0x52,
0x08,
0x44,
0x40,
0x10,
0x41,
0x04,
0x08,
0x44,
0x14,
0x14,
0x08,
0x54,
0x3f,
0x40,
0x20,
0x40,
0x28,
0x50,
0x64,
0x08,
0x00,
0x41,
0x08,
0x06,

0x49,
0x41,
0x08,
0x41,
0x01,
0x40,
0x02,
0x54,
0x44,
0x44,
0x44,
0x54,
0x09,
0x52,
0x04,
0x7d,
0x44,
0x28,
0x7f,
0x18,
0x04,
0x44,
0x14,
0x14,
0x04,
0x54,
0x44,
0x40,
0x40,
0x30,
0x10,
0x50,
0x54,
0x36,
0x7f,
0x36,
0x08,
0x09,

0x45,
0x41,
0x10,
0x7f,
0x02,
0x40,
0x04,
0x54,
0x44,
0x44,
0x48,
0x54,
0x01,
0x52,
0x04,
0x40,
0x3d,
0x44,
0x40,
0x04,
0x04,
0x44,
0x14,
0x18,
0x04,
0x54,
0x40,
0x20,
0x20,
0x40,
0x28,
0x50,
0x4c,
0x41,
0x00,
0x08,
0x10,
0x09,

0x43}
0x00}
0x20}
0x00}
0x04}
0x40}
0x00}
0x78}
0x38}
0x20}
0x7f}
0x18}
0x02}
0x3e}
0x78}
0x00}
0x00}
0x00}
0x00}
0x78}
0x78}
0x38}
0x08}
0x7c}
0x08}
0x20}
0x20}
0x7c}
0x1c}
0x3c}
0x44}
0x3c}
0x44}
0x00}
0x00}
0x00}
0x08}
0x06}

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

5a
5b
5c
5d
5e
5f
60
61
62
63
64
65
66
67
68
69
6a
6b
6c
6d
6e
6f
70
71
72
73
74
75
76
77
78
79
7a
7b
7c
7d
7e
7f

Z
[

]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}

void LcdCharacter(char character) {


LcdWrite(LCD_D, 0x00);
for (int index = 0; index < 5; index++) {
cdWrite(LCD_D, ASCII[character - 0x20][index]);
}
LcdWrite(LCD_D, 0x00);
}
void LcdClear(void) {
for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
{
LcdWrite(LCD_D, 0x00);
}
}
void LcdInitialise(void) {
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
// delay(1);
digitalWrite(PIN_RESET, HIGH);
LcdWrite( LCD_CMD, 0x21
LcdWrite( LCD_CMD, 0xBf
//B1
LcdWrite( LCD_CMD, 0x04
//0x04
LcdWrite( LCD_CMD, 0x14
LcdWrite( LCD_CMD, 0x0C
0x0d for inverse
LcdWrite(LCD_C, 0x20);
LcdWrite(LCD_C, 0x0C);

); // LCD Extended Commands.


); // Set LCD Vop (Contrast).
); // Set Temp coefficent.
); // LCD bias mode 1:48. //0x13
); // LCD in 0x0C normal mode.

}
void LcdString(char *characters) {
while (*characters) {
LcdCharacter(*characters++);
}
}
void LcdWrite(byte dc, byte data) {
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
// gotoXY routine to position cursor
// x - range: 0 to 84
// y - range: 0 to 5
void gotoXY(int x, int y) {
LcdWrite( 0, 0x80 | x); // Column.
LcdWrite( 0, 0x40 | y); // Row.
}
void drawLine(void) {
unsigned char j;
for(j=0; j< 84; j++) { // top
gotoXY (j,0);
LcdWrite (10,0x01); //
}
for(j=0; j< 84; j++) { //Bottom
gotoXY (j,5);
LcdWrite (10,0x80); //
}
for(j=0; j< 6; j++) { // Right
gotoXY (83,j);
LcdWrite (10,0xff); //
}
for(j=0; j< 6; j++) {// Left
gotoXY (0,j);
LcdWrite (10,0xff); //
}
}
void setup(void) {
LcdInitialise();
LcdClear();
}
void loop(void) {
// Muestra algunas animaciones sencillas de caracteres
//
int a,b;
char Str[20]; //15
/* // Dibujar un cuadro
for(b=1020; b>0; b--) {
drawLine();
for(a=0; a<=5 ; a++)
*/
{
gotoXY(8,2); //gotoXY(4,1);
// Poner el texto en el recuadro
LcdString ("TestDisplay");
gotoXY(7,3);
LcdString ("Este ejemplo");
gotoXY(3,4);
LcdString ("funciona bien");
gotoXY(0,5);
LcdString (" ");
gotoXY(0,6);
LcdString (" ");
gotoXY(24,1);

Serie LCD monocromtica

Seccin LCD-3310-01
Revisin: 03
Junio 2013

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310
LcdCharacter(' ');
LcdCharacter('H');
LcdCharacter('O');
LcdCharacter('L');
LcdCharacter('A'); LcdCharacter('!');
LcdCharacter(' ');
LcdCharacter('=');
//
gotoXY(10,6);
LcdCharacter('_');
// Dibujar + en esta posicin
gotoXY(10,1);
LcdCharacter('=');
delay(500);
gotoXY(24,1);
LcdCharacter(' ');
LcdCharacter('h');

LcdCharacter('o');
LcdCharacter('l');
LcdCharacter('a');
LcdCharacter('!');
LcdCharacter(' ');
LcdCharacter('-');
// Dibujar - en esta posicin
gotoXY(10,6);
LcdCharacter('_');
//
gotoXY(10,6);
LcdCharacter('=');
delay(500);
LcdClear();
}
}

LCD test2
CDIGO
/*
lcd_test2.pde
Este Cdigo tiene caractersticas adicionales
incluyendo una funcin de posicionamiento XY en la
pantalla
y una funcin Dibuja la linea de Nokia 3310 LCD
Se modific a partir del original
http://playground.arduino.cc/Code/PCD8544
*/
// Espero que le funcione a usted//

// Mods by V. Garca. 15/05/2013.


//
#define PIN_DC 2 // LCD Dat/Com. Pin 5
#define PIN_SCE 3 // LCD CS .... Pin 3
#define PIN_SDIN 4 // LCD SPIDat . Pin 6
#define PIN_RESET 5 // LCD RST .... Pin 1
#define PIN_SCLK 6 // LCD SPIClk . Pin 4
// LCD Gnd .... Pin 2
// LCD Vcc .... Pin 8

Serie LCD monocromtica

Seccin LCD-3310-01
Revisin: 03
Junio 2013

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310
// LCD Vlcd ... Pin 7
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_X 84
#define LCD_Y 48
#define LCD_CMD 0
int progress = 0;
int prev_prog = 0;
int pixels[85][6] = {{0}};
int a = 0;
static const byte ASCII[][5] ={
{0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c

!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[

,{0x00,
,{0x04,
,{0x40,
,{0x00,
,{0x20,
,{0x7f,
,{0x38,
,{0x38,
,{0x38,
,{0x08,
,{0x0c,
,{0x7f,
,{0x00,
,{0x20,
,{0x7f,
,{0x00,
,{0x7c,
,{0x7c,
,{0x38,
,{0x7c,
,{0x08,
,{0x7c,
,{0x48,
,{0x04,
,{0x3c,
,{0x1c,
,{0x3c,
,{0x44,
,{0x0c,
,{0x44,
,{0x00,
,{0x00,
,{0x00,
,{0x10,
,{0x00,
,{0x00,
};

0x41,
0x02,
0x40,
0x01,
0x54,
0x48,
0x44,
0x44,
0x54,
0x7e,
0x52,
0x08,
0x44,
0x40,
0x10,
0x41,
0x04,
0x08,
0x44,
0x14,
0x14,
0x08,
0x54,
0x3f,
0x40,
0x20,
0x40,
0x28,
0x50,
0x64,
0x08,
0x00,
0x41,
0x08,
0x06,
0x00,

0x41,
0x01,
0x40,
0x02,
0x54,
0x44,
0x44,
0x44,
0x54,
0x09,
0x52,
0x04,
0x7d,
0x44,
0x28,
0x7f,
0x18,
0x04,
0x44,
0x14,
0x14,
0x04,
0x54,
0x44,
0x40,
0x40,
0x30,
0x10,
0x50,
0x54,
0x36,
0x7f,
0x36,
0x08,
0x09,
0x7D,

0x7f,
0x02,
0x40,
0x04,
0x54,
0x44,
0x44,
0x48,
0x54,
0x01,
0x52,
0x04,
0x40,
0x3d,
0x44,
0x40,
0x04,
0x04,
0x44,
0x14,
0x18,
0x04,
0x54,
0x40,
0x20,
0x20,
0x40,
0x28,
0x50,
0x4c,
0x41,
0x00,
0x08,
0x10,
0x09,
0x00,

0x00}
0x04}
0x40}
0x00}
0x78}
0x38}
0x20}
0x7f}
0x18}
0x02}
0x3e}
0x78}
0x00}
0x00}
0x00}
0x00}
0x78}
0x78}
0x38}
0x08}
0x7c}
0x08}
0x20}
0x20}
0x7c}
0x1c}
0x3c}
0x44}
0x3c}
0x44}
0x00}
0x00}
0x00}
0x08}
0x06}
0x00}

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

5d
5e
5f
60
61
62
63
64
65
66
67
68
69
6a
6b
6c
6d
6e
6f
70
71
72
73
74
75
76
77
78
79
7a
7b
7c
7d
7e
7f
80

]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}

void LcdCharacter(char character) {


LcdWrite(LCD_D, 0x00);
for (int index = 0; index < 5; index++) {
LcdWrite(LCD_D, ASCII[character - 0x20][index]);
}
LcdWrite(LCD_D, 0x00);
}
void LcdClear(void) {
for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
{
LcdWrite(LCD_D, 0x00);
}
}
void LcdInitialise(void) {
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
delay(1);
digitalWrite(PIN_RESET, HIGH);
LcdWrite( LCD_CMD, 0x21
LcdWrite( LCD_CMD, 0xB9
//B1
LcdWrite( LCD_CMD, 0x04
//0x04
LcdWrite( LCD_CMD, 0x14
//0x13
LcdWrite( LCD_CMD, 0x0C
0x0d for inverse
LcdWrite(LCD_C, 0x20);
LcdWrite(LCD_C, 0x0C);
}

); // LCD Extended Commands.


); // Set LCD Vop (Contrast).
); // Set Temp coefficent.
); // LCD bias mode 1:48.
); // LCD in 0x0C normal mode.

Serie LCD monocromtica

Seccin LCD-3310-01
Revisin: 03
Junio 2013

LCD's GRFICOS (PCD8544)


Utilidades con la plataforma
Arduino.LCD 3310
void LcdString(char *characters) {
while (*characters) {
LcdCharacter(*characters++);
}
}
void LcdWrite(byte dc, byte data) {
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
// gotoXY routine to position cursor
// x - range: 0 to 84
// y - range: 0 to 5
void gotoXY(int x, int y) {
LcdWrite( 0, 0x80 | x); // Column.
LcdWrite( 0, 0x40 | y); // Row.
}
// ***************
// Enable or disable a specific pixel
// x: 0 to 84, y: 0 to 48
void setPixel(int x, int y, int d) {
if (x > 84 || y > 48) { return; }
// The LCD has 6 rows, with 8 pixels per row.
// 'y_mod' is the row that the pixel is in.
// 'y_pix' is the pixel in that row we want to
enable/disable
int y_mod = (int)(y >> 3); // >>3 divides by 8
int y_pix = (y-(y_mod << 3));// << 3 multiplies by 8
int val = 1 << y_pix;
/// We have to keep track of which pixels are on/off in
order to
// write the correct character out to the LCD.
if (d){
pixels[x][y_mod] |= val;
} else {
pixels[x][y_mod] &= ~val;
}
// Write the updated pixel out to the LCD
// TODO Check if the pixel is already in the state
requested,
// if so, don't write to LCD.
gotoXY(x,y_mod);
LcdWrite (1,pixels[x][y_mod]);
}
void drawLine(int x1, int y1, int x2, int y2) {
}
// Draw a horizontal line of width w from x,y
void drawHorizontalLine(int x, int y, int w){
drawHorizontalLineXY(x,x+w,y);
}
// Draw a horizontal line between x1 and x2 at row y
void drawHorizontalLineXY(int x1, int x2, int y){
for (int i=x1;i<=x2;i++) {
setPixel(i,y,1);
}
}
// Draw a vertical line of height h from x,y
void drawVerticalLine(int x, int y, int h){
drawVerticalLineXY(y,y+h,x);
}
// Draw a vertical line from y1 to y2 on column x
void drawVerticalLineXY(int y1, int y2, int x){
for (int i=y1;i<=y2;i++) {
setPixel(x,i,1);

}
}
void clearPixels() {
for (int x=0;x<83;x++) {
for(int y=0;y<47;y++) {
pixels[x][y] = 0;
}
}
}
// Draw a rectangle of width w and height h from x,y
void drawRect(int x, int y, int w, int h) {
drawHorizontalLineXY(x,x+w,y);
drawHorizontalLineXY(x,x+w,y+h);
drawVerticalLineXY(y,y+h,x);
drawVerticalLineXY(y,y+h,x+w);
}
void initProgressBar() {
LcdClear();
clearPixels();
drawRect(10,21, 64, 5);
}
void setProgressBar(int value) {
int startValue = ((float)prev_prog/100.0)*64;
int newValue = ((float)value/100.0)*64;
if (newValue < startValue) { startValue = 0; }
int pb_x = 10;
int pb_y = 21;
for (int i=startValue;i
drawVerticalLine(pb_x+i,pb_y,5);
}
prev_prog = value;
}
// ******** *****
void setup(void) {
LcdInitialise();
initProgressBar();
while (progress < 100) {
progress++;
setProgressBar(progress);
delay(25);
}
LcdClear();
clearPixels();
}
void loop(void) {
// Muestra algunas animaciones sencillas de caracteres
int a,b;
char Str[20]; //15
{
gotoXY(4,0); //gotoXY(4,1); // Poner el texto en el
recuadro
LcdString ("TestDisplay");
gotoXY(0,1);
LcdString ("Este ejemplo");
gotoXY(0,2);
LcdString ("LCDtest.pde");
gotoXY(0,3);
LcdString ("funciona ");
gotoXY(22,4);
LcdString (" bien ");
gotoXY(0,5);
LcdString ("0123456789AB");
}
}

Serie LCD monocromtica


LCD's GRFICOS (PCD8544)
Utilidades con la plataforma
Arduino.LCD 3310

Exencin de responsabilidad:

Seccin LCD-3310-01
Revisin: 03
Junio 2013

You might also like