Display de nokia 1100

Saludos a todos, yo uso pantallas del 1100 para mis proyectos, pero he tenido problemas con el contraste de estas, resulta que si uso displays con la referencia CTT0032NA1 me funcionan bien, pero si uso otro cualquiera el contraste es muy bajo, casi no se ve...si alguien tiene alguna idea del porque de este problema le agradeceria mucho.
Pregunta: es necesario que el voltaje de alimentacion del PIC sea el mismo del LCD?
Gracias.
 
increíble lo tuyo Alberto Casatti.

Muy buen proyecto. Está muy interesante esto...

Saludos!
Tavo10
 
hola... excelente post y al ingeniero alberto cassati muchas gracias por compartir toda esta informacion.... me pregunto si ya alguien habra creado las librerias para simular en proteus la lcd del nokia 1100 y que las pueda compartir
 
No no va a funcionar con 5 volt, fíjate que alberto publico los voltajes máximos y nimimos vas a tener que usar un pic de la serie lf o sino algún bufer, hay unos de microchip que transforman de 5 a 3.3 en este momento no me acuerdo cual era pero después te lo paso
Amigo, te cuento ke pude hacer funcionar el display de un nokia 1100, a 5v y funciona perfectamente, solo le puse una resistencia de 1.5k ohms para encender los leds blancos ke iluminarian el fondo de la pantalla, el resto de pines van conectados directamente a 5v. de todos modos gracias por responderme.
 
felicito al ingeniero alberto cassati por este proyecto, esta muy intersante. me gustaria saber que posibilidades hay de hacer funcionar el display utilizando el comando SHIFTOUT de picbasic, ¿se podra?
saludosss
 
Hola,
No tuve exito con el LCD del Kyocera, estoy probado con uno de un Nokia 1108, alguien tiene el pinout del LCD?
No tengo clara la secuencia y los tiempos para la inicializacion, alguien tendrá esto también?
Gracias de antemano
 
Hola gente como estan?
ante todo quería agradecer por la info que compartieron.. muy buena... hace rato tenía ganas de desarrollar algo como esto...

pero.. me encontre con unos problemas... más de uno me va a mandar leer algún libro antes de preguntar pero... bueno, les cuento que programo en pbp y en asm y recién me estoy metiendo en el mundo del CSS.
La cuestión es que me baje los códigos que publicaron en este hilo y baje un zip en el que estan 3 archivos lcd.c, lcd.h, mainlcd.c. Hasta ahí todo bien pero la cosa se me complica cuando quiero cargar en algún programa y luego lo quiero compilar...
alguien me podría dar una mano y decirme con que programa lo tengo que compilar?
estuve intentando con el CSS que lo tengo montado en el mplab pero me arroja errores... debe ser algún otro compilador C, o es mi falta de conocimientos...

también me descargue un código de la página micropic (este es el hilo http://www.micropic.es/index.php?option=com_remository&Itemid=77&func=startdown&id=146), me instale el mikroC pero sin éxitos...

Pero también sin éxitos... creo que tendría que crear un proyecto y luego cargar los archivos pero.. no se como van los archivos... la cosa es que hice un proyecto y agregue los archivos pero cuando compilo me tiran varios errores... hace unas horas que estoy con esto.

Me voy a descansar se me hicieron las 6:19 AM jaja, hace unas 12 horas que estoy con esto... jajaja

Bueno espero me tiren algo de info como para lograr generar el proyecto y compilarlo... despues veré de migrarlo a otro lenguaje o investigar más este...

Gracias.

Un abrazo Ramón!!
 
Hola, gente como estan?

yo acá trabajando con el código para ver si puedo escribir algo en la pantalla del nokia

ahora estoy trabajando para migrar el código para CSS pero... lo llevo a la práctica y no me funciona... les comento que con CSS recién me estoy iniciando...

el código lo único que hace es limpiarme toda la pantalla no logré que dibuje nada.

las conexiones del display son, visto de frente con el terminal de concciones hacia arriba de izquierda a derecha:

1: alimentación de led's de la pantalla, lo tengo desconectado, para bajar consumo
2: 4 volts
3: 2.5 volts (coloque un divisor resistivo)
4: portb.0 (coloque un divisor resistivo para lograr 2.5 volts)
5: portb.1 (coloque un divisor resistivo para lograr 2.5 volts)
6: masa
7: portb.2 (coloque un divisor resistivo para lograr 2.5 volts)
8: portb.3 (coloque un divisor resistivo para lograr 2.5 volts)

Código:
#include <16F877.h>
#fuses HS,NOWDT
#use delay(clock= 20000000)

/*
    // Esta es la matríz que intento dibujar en el display
    // La puse como comentario porque me tira error

const char icono[9][96] = 
{0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
*/


// --------------- Constantes
#define CMD 0        // Defino una constante
#define DTA 1

// --------------- Configuro los registros de los puertos
#byte trisb = 0x05
#byte portb = 0x06

// --------------- Renombro los pines del micro
//            Pin uC         Pin pantalla
#bit sclk = portb.0        // Clock
#bit sda = portb.1        // Datos
#bit scs = portb.2        // Chip select
#bit rst = portb.3        // Reset

// --------------- Variables
char x = 0;
char y = 0;
char bitaddr;



void Write_lcd(char dc,unsigned char c){
    char i;


    scs = 0;
    sclk = 0;
    sda = dc;
    sclk = 1;
            
    // enviar byte de control/dato
    for(i=0;i<8;i++){    
        sclk = 0;
        if(c & 0x80)
            sda = 1;
        else
            sda = 0;

        sclk = 1;
        c <<= 1;
    }    
}


void Init_lcd(void){
    
    scs = 0;
    rst = 0;    
    Delay_ms(200);    
    rst = 1;
    Delay_ms(200);    
        
    Write_lcd(CMD,0x25);    // VOP
    Write_lcd(CMD,0x90);    // EV
    Write_lcd(CMD,0xA4);    // Display en modo normal
    Write_lcd(CMD,0x2F);    // power control set


//    Write_lcd(CMD,0xd1);    // MUX
    Write_lcd(CMD,0x40);
    Write_lcd(CMD,0xb0);
    Write_lcd(CMD,0x1);
    Write_lcd(CMD,0x0); 
    Write_lcd(CMD,0xC8);    // invertir filas
    Write_lcd(CMD,0xa1);    // invertir columnas
    
    Write_lcd(CMD,0xac);
    Write_lcd(CMD,0x07);
    
    Write_lcd(CMD,0xf9);    // activar modo icono (acelera encendido)
    Write_lcd(CMD,0xac);    // ubicacion de imagen
    Write_lcd(CMD,0x07);
    

    
    Write_lcd(CMD,0xaf);
    


}



void Init(void){
// Esta configuración es para un 16F873
/*    GIE = 0;
    OPTION = 0x00;
    TRISB = 0;
    TRISC = 0;
    
    
    
    // configuracion del conversor
    ADCS0 = 0;
    ADCS1 = 1;
    CHS0 = 0;
    CHS1 = 0;
    ADIE = 1;
    ADFM = 0;
    PCFG0 = 0;
    PCFG1 = 1;
    PCFG2 = 1;
    PCFG3 = 1;
*/
}

void SetX(char x){
    Write_lcd(CMD,0x10 | ((x>>4)&0x7));
    Write_lcd(CMD,x & 0x0f);
}

void SetY(char y){
    char aux = 0;
    while(y>7){
        y -=8;
        aux ++;
    }
    bitaddr = y-1;
    Write_lcd(CMD,0xB0 | (aux & 0x0f));
}

void Gotoxy(char x,char y){
    SetY(y);
    SetX(x);
}

void Clear(void){
    int16 i;
    
    Gotoxy(0,0);
    for(i=0;i<864;i++)
        Write_lcd(DTA,0x00);
    }    



void main(){
    int16 i;
    set_tris_b(0x00);
    portb = 0;
    
    Init();
    Init_lcd();        // Inicio la pantalla
    Clear();


// --------------- Pinto toda la pantalla con puntos negros    
    Gotoxy(0,0);
    for(i=0;i<864;i++)
        Write_lcd(DTA,0x01);
// --------------------------------------------------------

/*
    // Este es el código que debería leer la matríz al principio y dibujar la imagen en el display
    // pero como la matríz no la puedo cargar intente lo anterior de pintar toda la pantalla.
        Gotoxy(0,0);
        for(y=0;y<9;y++)
            for(x=0;x<96;x++)
                Write_lcd(DTA,icono[y][x]);
*/
        while (true){

        }        
}
Un abrazo Ramón!!
 
Ramón, lo unico raro que veo en el codigo es que usas el chipselect, el cual no es necesario salvo que tengas algo mas conectado en el bus del display, yo lo sacaría....

lo otro que noté es que estas usando 4V y 2.5V, lo que deberias probar es todas en 3.3V como subí en el diagrama, creo que es mas un problema electrico que de programacion.

cualquier cosas queda a tu disposicion.

un abrazo.
 
Hola albertocasatti gracias por tu respuesta... y ya probé conectar el pinc chipselect del display a masa. Que si mal no leí lo pone en modo de recibir señal nada más.
Pruebo con la alimentación de 3.3 volts y te cuento!!

Gracias y un abrazo
 
Por cierto alberto no tenes un hex para un 877? se que es mucho pedir pero... bueno... mientras voy a seguir trabajando con el código!! Hasta dentro de un rato.

Un abrazo Ramón!!

probe y no alberto...
 
Última edición:
hola,

no tengo en donde probarlo, pero en teoria deberias ver una linea vertical que barre la pantalla,

esta configurador para usar:

#define sclk PORTB.F1
#define sda PORTB.F2
#define rst PORTB.F3

un abrazo
 

Adjuntos

  • MyLcd.zip
    976 bytes · Visitas: 88
Hola,

les adjunto la libreria del display para el nokia 1100 en CCS FUNCIONANDO!, para un pic18f2550, de ahi la podrian adaptar a sus necesidades.



Hola, gente como estan?

yo acá trabajando con el código para ver si puedo escribir algo en la pantalla del nokia

ahora estoy trabajando para migrar el código para CSS pero... lo llevo a la práctica y no me funciona... les comento que con CSS recién me estoy iniciando...

el código lo único que hace es limpiarme toda la pantalla no logré que dibuje nada.

las conexiones del display son, visto de frente con el terminal de concciones hacia arriba de izquierda a derecha:

1: alimentación de led's de la pantalla, lo tengo desconectado, para bajar consumo
2: 4 volts
3: 2.5 volts (coloque un divisor resistivo)
4: portb.0 (coloque un divisor resistivo para lograr 2.5 volts)
5: portb.1 (coloque un divisor resistivo para lograr 2.5 volts)
6: masa
7: portb.2 (coloque un divisor resistivo para lograr 2.5 volts)
8: portb.3 (coloque un divisor resistivo para lograr 2.5 volts)

Código:
#include <16F877.h>
#fuses HS,NOWDT
#use delay(clock= 20000000)

/*
    // Esta es la matríz que intento dibujar en el display
    // La puse como comentario porque me tira error

const char icono[9][96] = 
{0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x01,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
 0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
*/


// --------------- Constantes
#define CMD 0        // Defino una constante
#define DTA 1

// --------------- Configuro los registros de los puertos
#byte trisb = 0x05
#byte portb = 0x06

// --------------- Renombro los pines del micro
//            Pin uC         Pin pantalla
#bit sclk = portb.0        // Clock
#bit sda = portb.1        // Datos
#bit scs = portb.2        // Chip select
#bit rst = portb.3        // Reset

// --------------- Variables
char x = 0;
char y = 0;
char bitaddr;



void Write_lcd(char dc,unsigned char c){
    char i;


    scs = 0;
    sclk = 0;
    sda = dc;
    sclk = 1;
            
    // enviar byte de control/dato
    for(i=0;i<8;i++){    
        sclk = 0;
        if(c & 0x80)
            sda = 1;
        else
            sda = 0;

        sclk = 1;
        c <<= 1;
    }    
}


void Init_lcd(void){
    
    scs = 0;
    rst = 0;    
    Delay_ms(200);    
    rst = 1;
    Delay_ms(200);    
        
    Write_lcd(CMD,0x25);    // VOP
    Write_lcd(CMD,0x90);    // EV
    Write_lcd(CMD,0xA4);    // Display en modo normal
    Write_lcd(CMD,0x2F);    // power control set


//    Write_lcd(CMD,0xd1);    // MUX
    Write_lcd(CMD,0x40);
    Write_lcd(CMD,0xb0);
    Write_lcd(CMD,0x1);
    Write_lcd(CMD,0x0); 
    Write_lcd(CMD,0xC8);    // invertir filas
    Write_lcd(CMD,0xa1);    // invertir columnas
    
    Write_lcd(CMD,0xac);
    Write_lcd(CMD,0x07);
    
    Write_lcd(CMD,0xf9);    // activar modo icono (acelera encendido)
    Write_lcd(CMD,0xac);    // ubicacion de imagen
    Write_lcd(CMD,0x07);
    

    
    Write_lcd(CMD,0xaf);
    


}



void Init(void){
// Esta configuración es para un 16F873
/*    GIE = 0;
    OPTION = 0x00;
    TRISB = 0;
    TRISC = 0;
    
    
    
    // configuracion del conversor
    ADCS0 = 0;
    ADCS1 = 1;
    CHS0 = 0;
    CHS1 = 0;
    ADIE = 1;
    ADFM = 0;
    PCFG0 = 0;
    PCFG1 = 1;
    PCFG2 = 1;
    PCFG3 = 1;
*/
}

void SetX(char x){
    Write_lcd(CMD,0x10 | ((x>>4)&0x7));
    Write_lcd(CMD,x & 0x0f);
}

void SetY(char y){
    char aux = 0;
    while(y>7){
        y -=8;
        aux ++;
    }
    bitaddr = y-1;
    Write_lcd(CMD,0xB0 | (aux & 0x0f));
}

void Gotoxy(char x,char y){
    SetY(y);
    SetX(x);
}

void Clear(void){
    int16 i;
    
    Gotoxy(0,0);
    for(i=0;i<864;i++)
        Write_lcd(DTA,0x00);
    }    



void main(){
    int16 i;
    set_tris_b(0x00);
    portb = 0;
    
    Init();
    Init_lcd();        // Inicio la pantalla
    Clear();


// --------------- Pinto toda la pantalla con puntos negros    
    Gotoxy(0,0);
    for(i=0;i<864;i++)
        Write_lcd(DTA,0x01);
// --------------------------------------------------------

/*
    // Este es el código que debería leer la matríz al principio y dibujar la imagen en el display
    // pero como la matríz no la puedo cargar intente lo anterior de pintar toda la pantalla.
        Gotoxy(0,0);
        for(y=0;y<9;y++)
            for(x=0;x<96;x++)
                Write_lcd(DTA,icono[y][x]);
*/
        while (true){

        }        
}
Un abrazo Ramón!!
 

Adjuntos

  • LCD Nokia 1100.rar
    25.3 KB · Visitas: 128
hola alberto queria pedirte si me harias el favor de facilitar una imagen o un esquema, que me explique como conectar el lcd del nokia 1100 con el puerto paralelo de la pc! yo tengo el esquema de como conectar el lcd pero del nokia 3310 noc si se podria adaptar ese esquema al 1100. desde ya muchas gracias y si me ayudas sos muy capo porque me canse de buscar y no hay nada por ningun lado! un abrazo
 
El fin de conectar el lcd por puerto parlelo es usarlo con unos de esos programitas que te permite mostrar informacion de la cpu en el lcd. Hay espquemas de como hacerlo pero con un lcd de nokia 3310 (aqui te dejo el link de esto http://www.yoreparo.com/nav/?url=http://www.hardcore-modding.com/ftopict-12245.html&sid=9ebed9f7e6d3d9ed296a9d1e5e50b337) capas que se lo pueda adaptar al del nokia 1100 que tengo yo; aunque si estos programitas tambien funcionan por puerto serie tambien me sirve la idea que decis vos..

desde ya muchas gracias ...saludos

si me podrias mandar el esquema o imagen de esto que te explique me harias un gran favor...
saludos
 
Última edición:
hola,

con esto debería andar, solo que el lcd del nokia no necesita el D/C ya que se hace por software, en ese punto creo que te va a fallar el circuito (no vas a poder escribir comandos y datos).

el 1100 necesita un "byte" de 9 bits no de 8, donde el mas significativo es el indicador de comando/dato, en el caso del lcd que te sugieren ellos lo hace por hard.

igualmente te adjunto el esquema electrico para que lo puedas hacer "andar" con el puerto paralelo.

suerte.
 

Adjuntos

  • Tensiones nokia_paralelo.zip
    353.5 KB · Visitas: 74
Un saludo para todos los amigos del foro.

Les comento que estoy haciendo un proyecto para la universidad, el cual consiste en obtener una señal de ECG (electrocardiografía) y mostrarlo en la pantalla del Nokia 1100. La parte de adquisición de la señal ya está lista, en un oscilocopio puedo verla claramente, y el paso a seguir es el de llevarla a la pantalla del Celular.
He estado leyendo en foros durante las 2 ultimas semanas y he tratado de adaptar un código fuente que encontré para usarlo con el PIC16f877a, pero la verdad no he logrado nada diferente a ver montones de puntos sin sentido. El primer problema al tratar de cambiar el codigo es que no me deja usar la matriz de 9x96, lo máximo que puedo hacer es una de 9x25 ... no entiendo a que se debe esto. No tengo claro el funcionamiento de la pantalla, no sé como podria enviar los datos que mi pic obtiene a cierta posicion del lcd, mi idea radica en hacer una lectura con el conversor analogico digital del MCU , guardar estos valores en un vector de varias posiciones, y a la hora de mostrarlos, ubicar punto a punto ese valor leído teniendo una posicion en x y en Y, espero que entiendan lo que quiero hacer y me puedan asesorar acerca de mis inconvenientes con el proyecto.

Aqui pongo el codigo el cual estoy adaptando estoy usando

Código:
// Programa para probar el display del NOKIA 1100.

#include <16F877A.h> //
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)

// Definimos las librerías utilizadas:
#include <LCD_NOKIA1100.h> // Librería de la pantalla.


const char icono[9][24] = {
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1},
{1,1,1,1,1,1,255,1,1,1,1,1,1,1,1,1,1,1,255,1,1,1,1,1}
};


/*    

[COLOR="Red"]El error aparece en esta parte, dice q el dato es muy grande!, por lo tanto lo tengo desactivado y estoy enviando el dato de arriba, con el cual no estoy logrando nada.[/COLOR]

const char icono[9][96]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,24,24,24,24,24,24,248,248,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,240,240,0,0,0,0,255,255,0,0,0,248,248,0,0,0,0,248,248,0,224,240,240,24,24,24,24,24,240,248,248,0,0,248,248,112,56,24,24,56,248,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,3,7,14,28,28,30,15,7,0,0,0,7,15,28,28,28,28,15,7,0,7,15,31,28,28,28,28,28,7,31,31,0,0,31,31,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
*/

// Variables globales:

int x = 0;
int y = 0;
int draw = 0;
int pulso = 0;
int delay = 2;

// Cuerpo principal del programa:

void main(void){
   init_lcd(); // Inicializa el hardware del display.
   Write_lcd(CMD,0xb0);
   Write_lcd(CMD,0x10);
   Write_lcd(CMD,0x00);
   while(true) {
      gotoxy(0,0);
      for(y=0;y<9;y++) {
         for(x=0;x<24;x++) {
            write_lcd(DTA,icono[y][x]);
         }
      }
   }
   
}

Tambien adjunto un archivo rar con los codigos usados , ademas una simulacion en proteus con la pantalla del 1100( y sus librerias) y el pic16f877a
 

Adjuntos

  • prueba.rar
    32.5 KB · Visitas: 94
  • Nokia LCD's - proteus VSM models.rar
    287.8 KB · Visitas: 122
Atrás
Arriba