GRAPHIC LCD 128X64 QC12864B

Thảo luận trong 'Sản Phẩm Mới' bắt đầu bởi BanLinhKien.Vn, 26 Tháng tám 2014.

Users Viewing Thread (Users: 0, Guests: 0)

Lượt xem: 2,870

  1. BanLinhKien.Vn

    BanLinhKien.Vn Nhóm MCU

    Chào các bạn!
    Hôm nay, mình xin giới thiệu đến các bạn một Graphic LCD mới: QC12864B.
    Hình ảnh em nó đây :D
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    I. Một số thông số kỹ thuật:
    Điện áp hoạt động: 5v.
    Độ phân giải: 128x64 điểm ảnh.
    Các chuẩn giao tiếp: Song song 8 bit, song song 4 bit, và giao tiếp nối tiếp.
    IC Driver: ST7920.
    Bảng chức năng các chân.
    [​IMG]

    Lưu ý:
    GLCD QC12864B có thiết kế 2 vị trí hàn 2 điện trở có giá trị 0 ôm R9, R10 để chúng ta có thể tùy chọn chế độ giao tiếp song song (Hàn R9), hoặc giao tiếp nối tiếp (Hàn R10). Mặc định, nhà sản xuất đã hàn điện trở có giá trị 0 ôm vào vị trí R10 (xem hình sau). Do đó, mặc định GLCD 12864B ở chế độ giao tiếp nối tiếp.
    [​IMG]
    Để có thể lựa chọn các chế độ giao tiếp song song hoặc nối tiếp 1 cách linh động hơn, chúng ta có thể gỡ bỏ điện trở R10 và kết nối chân PSB của GLCD vào Vi điều khiển để chọn chế độ: 1 (giao tiếp song song), 0 giao tiếp nối tiếp.
    II. GIAO TIẾP GLCD12864B VỚI VI ĐIỀU KHIỂN.
    Như đã trình bày ở trên GLCD12864B có thể hoạt động ở 2 chế độ giao tiếp: Giao tiếp nối tiếp và giao tiếp song song (8bit hoặc 4bit). Mặc định, GLCD 12864B được thiết kế giao tiếp nối tiếp.
    1.Giao tiếp nối tiếp.

    Ở Chế độ giao tiếp nối tiếp, chân PSB của GLCD12864B được kéo xuống mức 0 bởi điện trở R10.
    Trong chế độ này có tất cả 6 chân của GLCD12864B được sử dụng bao gồm:
    1: Chân nối mass.
    2: Chân cấp nguồn.
    3: Chân chỉnh độ tương phản.
    4: CS: Cho phép (mức 1), hoặc không cho phép (mức 0) truyền dữ liệu.
    5: SID: Chân truyền dữ liệu (Serial Data Input).
    6: SCLK: Chân giữ xung nhịp: Khi có 1 xung từ cao(1)->thấp(0) trên chân số 6 thì 1 bit dữ liệu được ghi vào GLCD thông qua chân số 5 (SID).
    Trình tự ghi dữ liệu vào GLCD12864B ở chế độ giao tiếp nối tiếp được thực hiện như hình sau.
    [​IMG]
    Nhìn vào giản đồ xung ở trên, ta thấy quá trình ghi dữ liệu vào GLCD12864B được chia làm 3 phần.
    1: Ghi 1 chuối 8 bit có giá trị: 111110RS0 (với tùy chọn: RS=0: Lệnh, RS=1: Dữ liệu hiển thị), để báo cho GLCD biết dữ liệu ghi vào GLCD là lệnh hay là dữ liệu hiển thị.
    2: Ghi 1 chuỗi 8 bit có giá trị: D7D6D5D4 0000. (D7->D4: 4 bit cao của dữ liệu ghi vào GLCD ).
    3: Ghi 1 chuỗi 8 bit có giá trị: D3D2D1D0 0000. (D3->D0: 4 bit thấp của dữ liệu ghi vào GLCD).
    Để thực hiện việc ghi dữ liệu vào GLCD, chúng ta sẽ viết 3 chương trình con sử dụng cho việc ghi dữ liệu vào GLCD.
    *. Đầu tiên, chúng ta viết 1 chương trình dịch 8 bit dữ liệu của 1 byte cần ghi vào GLCD ra chân SID. Theo giản đồ ở trên thì bit cao được dịch trước.
    Mã:
    /**************************************/
    //gui 1 byte ra LCD
    /**************************************/
    void LCD_sendbyte(uchar byte)
    {
      uchar i;
      for(i=0;i<8;i++)
        {
      LCD_SCLK=0;             
      _nop_();
      LCD_SID=(bit)(byte&0x80);   
      LCD_SCLK=1;             
      byte=byte<<1;                 
    }
    }
    *. 2 chương trình con tiếp theo sử dụng chương trình con LCD_sendbyte(uchar byte) để ghi lệnh và ghi dữ liệu hiển thị ra GLCD.
    Mã:
    /****************************************/
    //gui 1 lenh ra lcd
    /****************************************/
    void LCD_write_com(uchar com)
    {
      LCD_CS=1;       
      LCD_sendbyte(0xf8);          //111110RS(0)0 (RS=0: ghi lenh)
      LCD_sendbyte(0xf0&com);    //ghi 4 bit cao 
                                   
      LCD_sendbyte(0xf0&(com<<4));  //ghi 4 bit thap   
        LCD_CS=0;     
      Delay_nms(10);           
    }
    Mã:
    /******************************************/
    //gui du lieu ra lcd
    /******************************************/
    void LCD_write_dat(uchar dat)
    {
        LCD_CS=1;       
      LCD_sendbyte(0xfa);        //111110RS(1),0 (RS=1: ghi du lieu hien thi)
      LCD_sendbyte(0xf0&dat);      //ghi 4 bit cao
      LCD_sendbyte(0xf0&(dat<<4));  //ghi 4 bit thap   
        LCD_CS=0;       
      Delay_nms(10);
    }
    Với 3 chương trình cơ bản trên, chúng ta có thể viết tiếp các chương trình con khởi tạo GLCD, hay các chương trình con hiển thị ký tự, chuỗi ký tự lên GLCD như đã làm với trường hợp giao tiếp GLCD ở chế độ giao tiếp song song.
    Chi tiết các chương trình con có trong file đính kèm ở phía dưới.
    2. Giao tiếp song song.
    Để GLCD QC12864B có thể giao tiếp song song được với Vi Điều Khiển, chúng ta cần đưa chân PSB lên mức cao bằng các hàn điện trỏ 0 ôm ở vị trí R10 sang R9, hoặc tháo điện trở 0 ôm ở chân R10 và kéo chân PSB lên cao bằng phần mềm.
    Ở chế độ này, chúng ta có thể chọn giao tiếp song song 4 bit, hoặc 8 bit.
    Các bước giao tiếp ghi, đọc hoàn toàn tương tự LCD1602. (Khác nhau ở hàm khởi tạo LCD.)
    Các bước khởi tạo cho GLCD QC12864B các bạn có thể tham khảo file đính kèm.

    Các file đính kèm:

    Last edited: 3 Tháng chín 2014
    tran hoan and dan.nvan like this.
  2. vakk

    vakk New Member

    Em chào anh, em đang làm sản phẩm liên quan tới màn hình này. Em có down project mẫu của anh về xem sơ đồ nguyên lý và thấy anh mắc chân Vout chân Vo và chân nguồn thông qua biến trở để chỉnh độ tương phản. Anh cho em hỏi đấy là cách mắc duy nhất hay em có thể mắc chân Vout với biến trở như ở màn hình 16x2 được không ạ.
    Cho em hỏi luôn em có thể dùng điện áp 3.3V được không ạ
  3. BanLinhKien.Vn

    BanLinhKien.Vn Nhóm MCU

    Chào bạn!
    Đối với màn hình GLCD sử dụng IC Driver KS0108 thì bạn mắc như sơ đồ bạn nói, còn đối với GLCD sử dụng IC driver ST7920, thì bạn mắc như LCD1602.
    GLCD ở bài viết trên sử dụng điện áp 5v bạn nhé!
    chienkd thích bài này.
  4. vakk

    vakk New Member

    Cảm ơn anh. Cái màn hình em dùng loại ST7920 và em thấy trong datasheet ghi là có thể hoạt động được từ 2.7-5.5V. Nếu buộc phải dùng điện áp 5V cho màn hình thì mức logic vào chân của nó em có thể dùng tín hiệu 3.3V có được không ạ
  5. BanLinhKien.Vn

    BanLinhKien.Vn Nhóm MCU

    Chào bạn!
    Bạn cấp nguồn 5V cho các chân nguồn, còn các chân dữ liệu bạn vẫn có thế giao tiếp với tín hiệu 3v3
    tran hoan thích bài này.
  6. vakk

    vakk New Member

    Vâng cảm ơn anh, em sẽ thử cho nó hoạt động ở mức 3.3V trước xem nó có chạy được không:)
  7. tran hoan

    tran hoan New Member

    Chào các bạn.
    Các bạn vui lòng chỉ giùm mình cách chuyển code của AVR từ sử dụng GLCD 12864BG (Chân CS1, CS2) sang code sử dụng GLCD 12864B (chân PSB). Mình cần thay đổi chỗ nào để có thể sử dụng được GLCD 12864B (c
  8. BanLinhKien.Vn

    BanLinhKien.Vn Nhóm MCU

    Chào bạn!
    2 LCD khác nhau về IC Driver. Với LCD có chân PSB, bạn vui lòng xem lại code ở trên.
    tran hoan thích bài này.
  9. tran hoan

    tran hoan New Member

    Mình xin cảm ơn!
    Đúng là 2 loại trên khác nhau về IC driver nhưng ý mình hỏi là có thể thay đổi code cũ (sử dụng 2 chân CS1,CS2 để chọn chip) sang code mới (sử dụng PSB để chọn chế độ) hay không vậy? Nếu được thì có thể chỉ mình là cần chỉnh chỗ nào không?
    Mình xin cảm ơn!
  10. thietkemach86

    thietkemach86 New Member

    Thay đổi toàn bộ nội dung code thì được bạn nhé.
  11. arxbmc

    arxbmc New Member

    Không phải đâu bạn ơi, chi cần thay chân PSB đóng vai trò là chân CS1, còn NC như chân CS2 nhưng bỏ không. và đấu như nhình vẽ này là Ok thôi,
  12. zodzeus

    zodzeus New Member

    Cho mình hỏi mình dùng PIC thì hàm LCD_Sentbyte mình dùng bằng hàm sent của SPI trên PIC được không . Mình thấy chế độ nối tiếp hoạt động giống chuẩn SPI
  13. luadinh

    luadinh New Member

    cho mình sơ đồ nối chân chế độ song song 4/8bit với.
  14. kidduck

    kidduck Member

    bạn chuyển điện trở 0 ôm từ vị trí R10 sang R9 và kết nối các chân dữ liệu D0-D7 vào vi điều khiển để giao tiếp song song 8 hoặc 4 bit thôi
  15. chienkd

    chienkd New Member

    Chào Admin, mình đang dùng KIT AVR V4 mua của cửa hàng mình.
    Hiện mình dùng màn hình QC12864B cũng mua của cửa hàng, đang hàn điện trở vào R9 để chạy chế độ song song.
    Mình đã điều khiển được GLCD để hiển thị 4 dòng text 16 chữ rồi. Nhưng sang đến phần hiển thị hình ảnh hoặc vẽ trên GLCD thì không biết viết như thế nào. Admin có thư viện hay ví dụ nào vẽ hình trên QC12864B sử dụng chíp ST7920 thì cho mình xin để tham khảo. Xin cảm ơn!
  16. vanthong

    vanthong New Member

    Admin làm trên stm32 chưa vậy? chỉ giúp mình với
  17. quang.dt7bk

    quang.dt7bk Admin

    Bạn đã thử thay Driver vào chạy trên STM chưa?
  18. chào các bạn ! mình muốn hiển thị 1 dòng chữ hoặc 1 hình ảnh nào đó lên Glcd .bạn nào có code mẫu của AVR dùng codevision cho mình với ! mình xin gửi lại 1 thẻ 50k để bày tỏ sụ cảm ơn bạn đa giúp đỡ .mình xin cảm ơn! gmail của mình là nguyentruongthe@gmail.com
  19. quang.dt7bk

    quang.dt7bk Admin

    Chào bạn!
    Bạn tham khảo Link hướng dẫn dưới này nhé, viết trên atmega16:
    P/S: Bạn gặp vấn đề khó khăn cứ trao đổi trên này, anh em giúp đỡ ha...anh em mình cùng là gia đình điện tử cả mà ^^
  20. ok- cảm ơn bạn trước - mình sẽ ngâm cứu - sau khi ra vấn đề sẽ trân trọng mời bạn đi uống nước ,và ko quên thẻ 50k .

Chia sẻ trang này

Lên trên