Nokia 1100b LCD configurazione dei pin

N

narccizzo

Guest
Qualcuno sa come controllare lo schermo LCD DI QUESTO MOBILE

 
Forse questo sito può aiutare, ma non sono sicuro:

http://sandiding.tripod.com/Bertys.html

 
Non c'è questo modello di celphone, ma è una pagina abbastanza bene, grazie per la tua buona intenzione.

 
Cerca nel edaboard per Nokia 3310 si ottiene ciò che si vuole.

 
Ciao,

Sto cercando di visualizzare l'interfaccia grafica del 1100 (PCF8814 controller) 16.i con AT Mega hanno incollato il below.The programma LCD non work.Please dirmi se c'è qualcosa di sbagliato.

# include <avr/io.h>
# include <avr/interrupt.h>
# include <util/delay.h>
# include <string.h>

# define BIT (x) (1 <<(x))

# define CHECKBIT (x, b) x & b
# define SETBIT (x, b) x | = b;
# define CLEARBIT (x, b) x & = ~ b;
# define TOGGLEBIT (x, b) x ^ = b;

# define SCE 0x08
# define DC 0x04

volatile pixel_lookup char [8] = (0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80);

static const char unsigned font_lookup [96] [5] =
(
(0x00, 0x00, 0x00, 0x00, 0x00), / / (spazio)
(0x00, 0x00, 0x5F, 0x00, 0x00), / /!
(0x00, 0x07, 0x00, 0x07, 0x00), / / "
(0x14, 0x7F, 0x14, 0x7F, 0x14), / / #
(0x24, 0x2A, 0x7F, 0x2A, 0x12), / / $
(0x23, 0x13, 0x08, 0x64, 0x62) / /%
(0x36, 0x49, 0x55, 0x22, 0x50) / / &
(0x00, 0x05, 0x03, 0x00, 0x00), / / '
(0x00, 0x1C, 0x22, 0x41, 0x00), / / (
(0x00, 0x41, 0x22, 0x1C, 0x00), / /)
(0x08, 0x2A, 0x1C, 0x2A, 0x08), / / *
(0x08, 0x08, 0x3e, 0x08, 0x08), / /
(0x00, 0x50, 0x30, 0x00, 0x00), / /,
(0x08, 0x08, 0x08, 0x08, 0x08), / / --
(0x00, 0x30, 0x30, 0x00, 0x00), / /.
(0x20, 0x10, 0x08, 0x04, 0x02), / / /
(0x3e, 0x51, 0x49, 0x45, 0x3e), / / 0
(0x00, 0x42, 0x7F, 0x40, 0x00), / / 1
(0x42, 0x61, 0x51, 0x49, 0x46), / / 2
(0x21, 0x41, 0x45, 0x4B, 0x31), / / 3
(0x18, 0x14, 0x12, 0x7F, 0x10), / / 4
(0x27, 0x45, 0x45, 0x45, 0x39), / / 5
(0x3C, 0x4A, 0x49, 0x49, 0x30), / / 6
(0x01, 0x71, 0x09, 0x05, 0x03), / / 7
(0x36, 0x49, 0x49, 0x49, 0x36), / / 8
(0x06, 0x49, 0x49, 0x29, 0x1E), / / 9
(0x00, 0x36, 0x36, 0x00, 0x00), / /:
(0x00, 0x56, 0x36, 0x00, 0x00), / /;
(0x00, 0x08, 0x14, 0x22, 0x41), / / <
(0x14, 0x14, 0x14, 0x14, 0x14), / / =
(0x41, 0x22, 0x14, 0x08, 0x00), / />
(0x02, 0x01, 0x51, 0x09, 0x06), / /?
(0x32, 0x49, 0x79, 0x41, 0x3e), / / @
(0x7E, 0x11, 0x11, 0x11, 0x7E), / / A
(0x7F, 0x49, 0x49, 0x49, 0x36), / / B
(0x3e, 0x41, 0x41, 0x41, 0x22), / / C
(0x7F, 0x41, 0x41, 0x22, 0x1C), / / D
(0x7F, 0x49, 0x49, 0x49, 0x41), / / E
(0x7F, 0x09, 0x09, 0x01, 0x01), / / F
(0x3e, 0x41, 0x41, 0x51, 0x32) / / G
(0x7F, 0x08, 0x08, 0x08, 0x7F), / / H
(0x00, 0x41, 0x7F, 0x41, 0x00), / / I
(0x20, 0x40, 0x41, 0x3F, 0x01), / / J
(0x7F, 0x08, 0x14, 0x22, 0x41), / / K
(0x7F, 0x40, 0x40, 0x40, 0x40), / / L
(0x7F, 0x02, 0x04, 0x02, 0x7F), / / M
(0x7F, 0x04, 0x08, 0x10, 0x7F), / / N
(0x3e, 0x41, 0x41, 0x41, 0x3e), / / O
(0x7F, 0x09, 0x09, 0x09, 0x06), / / P
(0x3e, 0x41, 0x51, 0x21, 0x5E), / / Q
(0x7F, 0x09, 0x19, 0x29, 0x46), / / R
(0x46, 0x49, 0x49, 0x49, 0x31), / / S
(0x01, 0x01, 0x7F, 0x01, 0x01), / / T
(0x3F, 0x40, 0x40, 0x40, 0x3F), / / U
(0x1F, 0x20, 0x40, 0x20, 0x1F), / / V
(0x7F, 0x20, 0x18, 0x20, 0x7F), / / W
(0x63, 0x14, 0x08, 0x14, 0x63), / / X
(0x03, 0x04, 0x78, 0x04, 0x03), / / Y
(0x61, 0x51, 0x49, 0x45, 0x43), / / Z
(0x00, 0x00, 0x7F, 0x41, 0x41), / / [
(0x02, 0x04, 0x08, 0x10, 0x20), / / "\"
(0x41, 0x41, 0x7F, 0x00, 0x00), / /]
(0x04, 0x02, 0x01, 0x02, 0x04), / / ^
(0x40, 0x40, 0x40, 0x40, 0x40), / / _
(0x00, 0x01, 0x02, 0x04, 0x00), / / `
(0x20, 0x54, 0x54, 0x54, 0x78), / / a
(0x7F, 0x48, 0x44, 0x44, 0x38), / / b
(0x38, 0x44, 0x44, 0x44, 0x20), / / c
(0x38, 0x44, 0x44, 0x48, 0x7F), / / d
(0x38, 0x54, 0x54, 0x54, 0x18), / / e
(0x08, 0x7E, 0x09, 0x01, 0x02), / / f
(0x08, 0x14, 0x54, 0x54, 0x3C), / / g
(0x7F, 0x08, 0x04, 0x04, 0x78), / / h
(0x00, 0x44, 0x7D, 0x40, 0x00), / / i
(0x20, 0x40, 0x44, 0x3D, 0x00), / / j
(0x00, 0x7F, 0x10, 0x28, 0x44), / / k
(0x00, 0x41, 0x7F, 0x40, 0x00), / / l
(0x7C, 0x04, 0x18, 0x04, 0x78), / / m
(0x7C, 0x08, 0x04, 0x04, 0x78), / / n
(0x38, 0x44, 0x44, 0x44, 0x38), / / O
(0x7C, 0x14, 0x14, 0x14, 0x08) / / p
(0x08, 0x14, 0x14, 0x18, 0x7C), / / q
(0x7C, 0x08, 0x04, 0x04, 0x08) / / r
(0x48, 0x54, 0x54, 0x54, 0x20), / / s
(0x04, 0x3F, 0x44, 0x40, 0x20), / / t
(0x3C, 0x40, 0x40, 0x20, 0x7C), / / u
(0x1C, 0x20, 0x40, 0x20, 0x1C), / / V
(0x3C, 0x40, 0x30, 0x40, 0x3C), / / w
(0x44, 0x28, 0x10, 0x28, 0x44), / / x
(0x0C, 0x50, 0x50, 0x50, 0x3C), / / y
(0x44, 0x64, 0x54, 0x4C, 0x44), / / z
(0x00, 0x08, 0x36, 0x41, 0x00), / / (
(0x00, 0x00, 0x7F, 0x00, 0x00), / / |
(0x00, 0x41, 0x36, 0x08, 0x00), / /)
(0x08, 0x08, 0x2A, 0x1C, 0x08), / / ->
(0x08, 0x1C, 0x2A, 0x08, 0x08) / / <--
);

void lcd_cmd (unsigned char cmd);
lcd_data void (unsigned char cmd);

void lcd_goto_xy (char x, char y)
(
y = y | 0x40;
lcd_cmd (y);
x = (x * 6) | 0x80;
lcd_cmd (x);
)

void lcd_char (carattere unsigned char)
(
unsigned char j = 0;
for (j = 0; j <5; j )
lcd_data ((font_lookup [personaggio-32] [j] <<1));

)void lcd_string (font unsigned char, unsigned char * string)
(
if (carattere == 1)
(
unsigned char j;
lcd_cmd (0xAE);
while (* stringa! = '\ 0')
(
for (j = 0; j <5; j )
lcd_data ((font_lookup [* string-32] [j] <<1));
lcd_data (0x00);
string ;
)
)

lcd_cmd (0xAF);

)

void lcd_num_char (num unsigned char)
(
unsigned char H = 0, T = 0, O = 0, j = 0;
H = num/100;
T = (num - (H * 100)) / 10;
O = (num - (H * 100) - (T * 10));

for (j = 0; j <5; j )
lcd_data (font_lookup [H 16] [j]);
for (j = 0; j <5; j )
lcd_data (font_lookup [T 16] [j]);
for (j = 0; j <5; j )
lcd_data (font_lookup [O 16] [j]);

)

void lcd_num_int (unsigned int num)
(
unsigned char TT = 0, TH = 0, H = 0, T = 0, O = 0, j = 0;

TT = num/10000;
TH = (num-(TT * 10000)) / 1000;
H = (num-(TT * 10000) - (TH * 1000)) / 100;
T = (num - (TT * 10000) - (TH * 1000) - (H * 100)) / 10;
O = (num - (TT * 10000) - (TH * 1000) - (H * 100) - (T * 10));
for (j = 0; j <5; j )
lcd_data (font_lookup [TT 16] [j]);
for (j = 0; j <5; j )
lcd_data (font_lookup [TH 16] [j]);
for (j = 0; j <5; j )
lcd_data (font_lookup [H 16] [j]);
for (j = 0; j <5; j )
lcd_data (font_lookup [T 16] [j]);
for (j = 0; j <5; j )
lcd_data (font_lookup [O 16] [j]);
)
char x_line = 0, y_line = 0;

void gotoxy (char x, char y) (
lcd_cmd (0xB0 | (y & 0x0F)); / / inizializzazione asse Y: 0100 aaaa
lcd_cmd (0x00 | (x & 0x0F)); / / inizializzazione asse X: 0000 xxxx (x3 x2 x1 x0)
lcd_cmd (0x10 | ((x>> 4) & 0x07)); / / inizializzazione asse X: 0010 0xxx (x6 x5 x4)
lcd_data (pixel_lookup [y]);
)

void lcd_pixel (char x, char y) / / 40,36
(
unsigned char x_block = 0, y_block = 0;
/ / x_block = x/16;
y = y_block / 8;
y = y 8%;

y_block = y_block | 0x40;
lcd_cmd (y_block);
x = x | 0x80;
lcd_cmd (x);
lcd_data (pixel_lookup [y]);
)

void lcd_clear (void) (
unsigned int i;
lcd_cmd (0x40); / / Y = 0
lcd_cmd (0XB0);
lcd_cmd (0x10); / / X = 0
lcd_cmd (0x0);
lcd_cmd (0xAE); / / disattivare la visualizzazione;
for (i = 0; i <864; i )
lcd_data (0x00);
lcd_cmd (0xAF); / / abilitare la visualizzazione;
)
void lcd_init (void)
(

CLEARBIT (PORTA, SCE)
CLEARBIT (PORTA, DC)
_delay_ms (5); / / 5mS lo dice il cronometro (meno di 5 ms non funziona)
SETBIT (PORTA, DC)
lcd_cmd (0x20); / / write register VOP
lcd_cmd (0x90);
lcd_cmd (0xA4); / / all on / visualizzazione normale
lcd_cmd (0xAF); / / display
lcd_cmd (0x2F); / / controllo Power set (pompa di carica on / off)
lcd_cmd (0x40); / / impostare l'indirizzo row start = 0
lcd_cmd (0XB0); / / set Y-address = 0
lcd_cmd (0x10); / / set X-indirizzo, alto 3 bit
lcd_cmd (0x00); / / set X-indirizzo, inferiori 4 bit
lcd_cmd (0xC8); / / asse Y specchio (circa asse X)
lcd_cmd (0xad); / / A1 / / schermo Invert in asse orizzontale
lcd_cmd (0xac); / / set fila iniziali (R0) del display
lcd_cmd (0x07);
/ / lcd_cmd (0xF9); / /
lcd_cmd (0xAF); / / display ON / OFF
lcd_cmd (0xa9);
/ / lcd_cmd (0xE8);
lcd_clear (); / / Clear LCD
lcd_cmd (0xA7); / / display invertito
_delay_ms (500); / / 1 / 2 sec di ritardo
lcd_cmd (0xA6); / / visualizzazione normale (non invertita)
_delay_ms (1000); / / 1 delay Sec / / lcd_cmd (0x21);
/ / lcd_cmd (0xC8);
/ / lcd_cmd (0x06);
/ / Lcd_cmd (0x13);
/ / lcd_cmd (0x20);
/ / Lcd_cmd (0x0c);
)void lcd_cmd (unsigned char cmd)
(
CLEARBIT (PORTA, DC)
CLEARBIT (PORTA, SCE)
/ / SPDR = 0xFE;
/ / while (! (CHECKBIT (SPSR, BIT (7)))) ()

SPDR = cmd;
while (! (CHECKBIT (SPSR, BIT (7)))) ()

SETBIT (PORTA, SCE)

)
void lcd_cmd1 (unsigned char cmd)
(
CLEARBIT (PORTA, DC),
CLEARBIT (PORTA, SCE)
SPDR = 0xFF;
while (! (CHECKBIT (SPSR, BIT (7)))) ()

SPDR = cmd;
while (! (CHECKBIT (SPSR, BIT (7)))) ()

SETBIT (PORTA, SCE)

)void lcd_data (dat unsigned char)
(
SETBIT (PORTA, DC)
CLEARBIT (PORTA, SCE)

SPDR = dat;
while (! (CHECKBIT (SPSR, BIT (7)))) ()

SETBIT (PORTA, SCE)
)void spi_write (SendData unsigned char)
(

SPDR = SendData;
while (! (CHECKBIT (SPSR, BIT (7)))) ()

)

void lcd_circle (cx unsigned char, unsigned cy char, unsigned char raggio)
(
x, int y, radiusError xchange, ychange,;
x = raggio;
y = 0;
xchange = 1 - 2 * raggio;
ychange = 1;
radiusError = 0;
while (x> = y)
(
lcd_pixel (cx x, cy y);
lcd_pixel (cx-x, cy y);
lcd_pixel (cx-x, cy-y);
lcd_pixel (cx-x, cy y);
/ / lcd_pixel (cx-x, cy-y);
/ / lcd_pixel (cx x, cy-y);
lcd_pixel (cx y, cy x);
lcd_pixel (cx-y, cy x);
lcd_pixel (cx-y, cy-x);
lcd_pixel (cx y, cy-x);
y ;
radiusError = ychange;
ychange = 2;
if (2 * radiusError xchange> 0)
(
x -;
radiusError = xchange;
Xchange = 2;
)
)
)

int main ()
(
unsigned int i = 0;
DDRB = 0xff;
DDRA = 0xff;
PORTA = 0xff;
SETBIT (SPSR, 0)
SPCR = BIT (6) BIT (4) BIT (3) BIT (2) BIT (0);

lcd_init ();Gotoxy (10,20);
lcd_string (1, "vikky");

while (1) ()
return 0;
)Le connessioni hardware sono le seguenti:

XRES -----------> PA2
SCE -------------> PA3
SDIN -------------> PB5
SCK --------------> PB7
VDD e VDD1 sono indicati 3.1V di approvvigionamento
VSS è a terra.

Ti prego, aiutami a trovare il problema.

Con un grazie e saluti

Vikky

 
Salve,

In primo luogo la sua molto importante che fare in modo che il vostro schermo LCD è ancora funzionante, perché qualche ragione ho saltato la mia.

 

Welcome to EDABoard.com

Sponsor

Back
Top