Thông báo

Collapse
No announcement yet.

Màn hình GLCD của NOKIA 1100 ,ai có máu nghịch thì vào chơi

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Màn hình GLCD của NOKIA 1100 ,ai có máu nghịch thì vào chơi

    trước có ông bạn vứt cho con lcd của NOKIA nghịch. thấy hay hay,ai có máu nghịch giống mình thì vào chơi.

    đầu tiên phải kiếm con lcd về đã.
    em nó đây rồi



    tiếp theo là đấu nối cho em nó :
    sơ đồ đấu nối như sau
    sclk PORTD.7
    sda PORTC.0
    cs PORTC.1
    rst PORTC.2
    và cuối cùng là code cho nó

    với thằng này mình chỉ cần khởi tạo cho nó giống như CLCD ấy là chạy bình thường ,có khi còn dễ hơn cả CLCD ấy chứ
    ở đây mình viết những hàm cơ bản giống như viết cho CLCD thôi
    void lcd_clear(void);
    void lcd_init(void);
    void lcd_write(char MODE,unsigned char c);
    void lcd_gotoxy(char x,char y);
    void lcd_putchar(char c);
    void lcd_putsf(flash char * str);
    hàm void lcd_init(void);
    chức năng : dùng để khởi tạo cho lcd. Giống với CLCD
    để tiết kiệm và tận dụng chân ngoại vi IO của VDK. Nên mình đã viết 1 hàm tạo cổng SPI ảo sử dụng các chân vào ra bình thường để điều khiển. mọi thay đổi về chân được sửa trong phần đầu của hàm lcd_init() và phần #define

    hàm void lcd_clear(void);
    chức năng : dùng để xóa cả màn hình lcd. Khi xóa xong thì vị trí con trỏ sẽ không được xác định luôn mà sau hàm này thì ta phải tự đưa con trỏ về vị trí mong muốn. con trỏ lúc này đã nằm ở ngoài màn hình rồi

    hàm void lcd_write(char MODE,unsigned char c);
    chức năng : hàm để tạo cổng SPI ảo. hàm này dùng để tạo cổng spi ảo và đưa vào lcd.
    Do cấu trúc màn hình.khi 1 byte đưa vào nó sẽ xác định xem đó là lệnh hay là dữ liệu .
    Nếu là dữ liệu nó sẽ ghi ra màn hình tại vị trí con trỏ. Sau khi ghi xong thì con trỏ sẽ tự động tăng lên 1 vị trí. ở đây là 96 cột
    Nếu là lệnh. Bit đầu tiên sẽ là 0
    Nếu là dữ liệu, bit đầu tiên sẽ là 1

    Hàm void lcd_gotoxy(char x,char y);
    Chức năng : đưa con trỏ đến 1 vị trí được xác định. ở đây là số cột(x) và số hàng(y)
    - cột tương ứng 0-95 ( 96 cột)
    - hàng tương ứng 0 – 7 (64 hàng = 8 dòng x 8 bit)

    hàm void lcd_putchar(char c);
    Chức năng : ghi 1 kí tự lên lcd theo bảng mã SACII.

    Hàm void lcd_putsf(flash char * str);
    Chức năng : ghi 1 chuỗi kí tự lên màn hình lcd.
    Do cấu trúc màn hình là 1 chip điều khiển cho cả màn hình .nên khi đưa dữ liệu vào màn hình. Nếu hết dòng mà vẫn xuất dữ liệu cho nó . nó sẽ tự động đẩy xuống dòng kế tiếp.

    và cuối cùng là code

    #define led_debug PORTB.1
    #define sclk PORTD.7
    #define sda PORTC.0
    #define cs PORTC.1
    #define rst PORTC.2
    //--------------
    #define sclk_IO DDRD.7
    #define sda_IO DDRC.0
    #define cs_IO DDRC.1
    #define rst_IO DDRC.2
    //===============================
    #define CMD 0
    #define DATA 1

    void lcd_clear(void);
    void lcd_init(void);
    void lcd_write(char MODE,unsigned char c);
    void lcd_gotoxy(char x,char y);
    void lcd_putchar(char c);
    void lcd_putsf(flash char * str);
    //================================================== =========================
    flash unsigned char font[96][5]=
    {
    {0x00, 0x00, 0x00, 0x00, 0x00},// (space)
    {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 main(void)
    {
    lcd_init();
    lcd_clear();
    lcd_gotoxy(10,1);
    lcd_putsf("Hello m(_ _)m I'm NgThang !!");
    lcd_gotoxy(5,4);
    lcd_putsf("It's me (^_6)b");
    while(1);
    }
    //================================================== ======================================
    //################################################## ######################################
    void lcd_gotoxy(char x,char y)
    {
    lcd_write(CMD,(0xB0|(y&0x0F))); // Y axis initialisation: 0100 yyyy
    lcd_write(CMD,(0x00|(x&0x0F))); // X axis initialisation: 0000 xxxx ( x3 x2 x1 x0)
    lcd_write(CMD,(0x10|((x>>4)&0x07))); // X axis initialisation: 0010 0xxx ( x6 x5 x4)
    }

    //================================================== ======================================
    //################################################## ######################################
    // clear LCD
    void lcd_clear(void)
    {
    unsigned int i;
    lcd_write(CMD,0x40); // Y = 0
    lcd_write(CMD,0xb0);
    lcd_write(CMD,0x10); // X = 0
    lcd_write(CMD,0x00);
    lcd_write(CMD,0xae);
    for(i=0 ; i<864 ; i++)
    {
    lcd_write(DATA,0x00);
    }
    lcd_write(CMD,0xaf);
    }

    //================================================== ======================================
    //################################################## ######################################
    // init LCD
    void lcd_init(void)
    {
    sclk_IO = 1;
    sda_IO = 1;
    cs_IO = 1;
    rst_IO = 1;
    //-------------------
    cs = 0;
    rst = 0;
    delay_ms(10); // 5mS so says the stop watch(less than 5ms will not work)
    rst = 1;
    lcd_write(CMD,0x20); // write VOP register
    lcd_write(CMD,0x90);
    lcd_write(CMD,0xA4); // all on/normal display
    lcd_write(CMD,0x2F); // Power control set(charge pump on/off)
    lcd_write(CMD,0x40); // set start row address = 0
    lcd_write(CMD,0xb0); // set Y-address = 0
    lcd_write(CMD,0x10); // set X-address, upper 3 bits
    lcd_write(CMD,0x00); // set X-address, lower 4 bits
    lcd_write(CMD,0xC8); // mirror Y axis (about X axis)
    lcd_write(CMD,0xa1); // Invert screen in horizontal axis
    lcd_write(CMD,0xac); // set initial row (R0) of the display
    lcd_write(CMD,0x07);

    lcd_write(CMD,0xaf); // display ON
    }

    //================================================== ===
    //************************************************** ***
    void lcd_write(char MODE,unsigned char c)
    {
    char i;
    cs = 0;
    sclk = 0;
    sda = MODE;
    sclk = 1;

    for(i=0;i<8;i++)
    {
    sclk = 0;
    if(c & 0x80) sda = 1;
    else sda = 0;
    sclk = 1;
    c <<= 1;
    }
    cs = 1;
    }
    //************************************************** *
    //************************************************** *
    void lcd_putchar(unsigned char c)
    {
    int i;
    for ( i = 0; i < 5; i++ )
    {
    lcd_write(DATA,font[c - 32][i] << 1);
    }
    lcd_write(DATA,0x00);
    }

    //************************************************** *
    //************************************************** *

    void lcd_putsf(flash char *str)
    {
    lcd_write(CMD,0xae);
    while (*str)
    {
    lcd_putchar(*str++);
    }
    lcd_write(CMD,0xaf);
    }

  • #2
    dùng cái này làm máy hiện sóng được không anh??? em thấy có cái trang gì gì nó làm có cả video

    Comment


    • #3
      Mình có cái LCD của 8210 thôi, nhưng nó không dưa ra các pin đồng mà chỉ là "miếng thủy tinh", nên không biết phải làm sao kết nối được, ai có kinh nghiệm hay ý kiến gì giúp mình với.
      Mình cũng thích món này lắm.
      Thanks all!

      Comment


      • #4
        Bài viết rất rõ ràng, dễ hiểu. Thank bạn "rongconn2t"

        Mình sẽ thử xem thế nào.

        Comment


        • #5
          Có ai biết mấy trang chỉ pinout của mấy cái LCD điện thoại không? Mình có con ZTE UT106, tháo ra thấy nó có 8 pin nhưng không biết tên từng chân.
          Ai giúp với.

          Comment


          • #6
            Nguyên văn bởi congtri1991 Xem bài viết
            dùng cái này làm máy hiện sóng được không anh??? em thấy có cái trang gì gì nó làm có cả video
            oạch.làm máy hiện sóng thì mình cũng chưa làm bao giờ.nhưng mà nó là màn GLCD rồi thì bạn muốn hiển thị gì là do bạn mà
            cái màn mà làm máy hiện sóng đó mình cũng xem qua rùi.đó là mà GLCD nokia 3310. con đó cũng giao tiếp SPI nhưng độ phân giải chỉ là 48x84 pixel thôi

            Mình có cái LCD của 8210 thôi, nhưng nó không dưa ra các pin đồng mà chỉ là "miếng thủy tinh", nên không biết phải làm sao kết nối được, ai có kinh nghiệm hay ý kiến gì giúp mình với.
            cái đó bọn nó dùng miếng cao su dẫn điện (thường thấy của mấy cái lcd tàu)
            cái đó hơi đặc chủng , phải có cả vỏ mới nghiền đc. mình thì không chơi với nó

            Có ai biết mấy trang chỉ pinout của mấy cái LCD điện thoại không? Mình có con ZTE UT106, tháo ra thấy nó có 8 pin nhưng không biết tên từng chân.
            mình cũng chịu
            nhưng làm thế nào để biết được tên của 1 cái màn hình nokia nhỉ ??? mình cũng chỉ tình cờ có được cái schematice của con màn này thôi.cũng không biết cách nào để có thể lấy được cái tên của con màn.như con màn máy 1200 mình tìm datasheet cũng không biết tên.
            bạn biết share cho mình luôn nhé .

            Comment


            • #7
              Thank bạn rongconn2t, mình sẽ mua 1 cái LCD của 1100 về thử xem sao, nhưng mình định dùng với PIC, không biết bạn đã làm chưa. Có gì giúp mìn với nhé.

              Comment


              • #8
                hì.pic thì bạn cứ thay đổi chân thui
                cái này nó không phải là sử dụng hẳn module SPI của chip nên dễ lắm
                cứ phang đi,không lên hỏi mình.mình sẽ giúp

                Comment


                • #9
                  Hi bạn rongconn2t, mình đi mua cái màn hình N1100 rồi nhưng như hình bạn đưa thì nó chỉ có 9 chân thôi, còn cái người ta đưa cho mình có 11 chân lận nên chưa dám lấy về vì không biết kết nối sao. Bạn có thể chụp hình cái màn hình của bạn và cách kết nối mạch được không?
                  Thank bạn nhiều!

                  Comment


                  • #10
                    Nguyên văn bởi designer Xem bài viết
                    Hi bạn rongconn2t, mình đi mua cái màn hình N1100 rồi nhưng như hình bạn đưa thì nó chỉ có 9 chân thôi, còn cái người ta đưa cho mình có 11 chân lận nên chưa dám lấy về vì không biết kết nối sao. Bạn có thể chụp hình cái màn hình của bạn và cách kết nối mạch được không?
                    Thank bạn nhiều!
                    oại. hình mình đưa lên giống hệt khi mình đi mua mà. chẳng khác gì hết ấy. kể cả vị trí led.
                    bạn xem kĩ lại nhé. mình mua ở chợ trời thôi , con này cũng khá phổ biến mà
                    chúc vui.

                    Comment


                    • #11
                      Nguyên văn bởi rongconn2t Xem bài viết
                      oại. hình mình đưa lên giống hệt khi mình đi mua mà. chẳng khác gì hết ấy. kể cả vị trí led.
                      bạn xem kĩ lại nhé. mình mua ở chợ trời thôi , con này cũng khá phổ biến mà
                      chúc vui.
                      Màn hình này mua ở đâu, giá khoảng nhiêu bạn ?

                      Comment


                      • #12
                        em có 2 con màn hình ,nokia 5030c và 1650
                        bác nào có sơ đồ chân cho em xin với , em tìm không thấy Click image for larger version

Name:	DSCF0185.jpg
Views:	1
Size:	46.8 KB
ID:	1358019
                        nó có 12 chân thank các pác

                        Comment

                        Về tác giả

                        Collapse

                        rongconn2t Tìm hiểu thêm về rongconn2t

                        Bài viết mới nhất

                        Collapse

                        Đang tải...
                        X