Giao tiếp MCU với LCD1202

Thảo luận trong 'Sản Phẩm Mới' bắt đầu bởi an.dxuan, 5 Tháng mười một 2014.

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

Lượt xem: 664

  1. an.dxuan

    an.dxuan Admin

    Chào các bạn!
    Hôm nay mình xin giới thiệu đến các bạn một loại màn hình cực kì quen thuộc với chúng ta - với những người dùng cục gạch 1202 như mình :( .Màn hình LCD1202
    Mặc dù rất quen thuộc nhưng mình nghĩ ít bạn biết được giao tiếp để hiển thị lên nó như thế nào vì mình thấy cũng nhiều bạn hỏi về lcd này .Vậy nên hôm nay mình viết bài này để các bạn có thể tham khảo và hiểu hơn về nó để có thể dùng nó giải quyết các bài toán của mình :D

    1 - Hình ảnh về sản phẩm

    [​IMG]

    LCD1202 dùng chip STE2007 để điều khiển

    2 - Sơ đồ chân và chức năng
    Như hình trên mình cũng đã giới thiệu cho các bạn về các chân của lcd
    Sau đây là chức năng của từng chân
    Chân 1 : Chân này không sử dụng :D
    Chân 2 : RST : Đây là chân Reset dữ đầu vào
    Chân 3 : CS : Chân này là chân Chip Select Input .Tích cực mức thấp .Khi CS = 0 thì cho phép giao tiếp với LCD
    Chân 4,9 : GND : Chân nối đất
    Chân 5: SDA : Chân dữ liệu
    Chân 6: SCLK: Chân tạo xung clock
    Chân 7,8 : Chân cấp nguồn 3.3V
    Chân 10 : Chân đất cho LED
    Chân 11 : Chân cấp nguồn cho LED (3.3V)
    Chân 12 : Không sử dụng

    3- Kết nối với VĐK

    [​IMG]
    4- Giao tiếp
    LCD 1202 có thể giao tiếp với MCU theo 3 chuẩn khác nhau
    - 3-lines Serial Interface (read and write)
    - I2C (read and write)
    - 4-Line Serial (read and write)
    Trong phạm vi bài này mình chỉ giới thiệu đến các bạn chuẩn giao tiếp 3-lines Serial Interface (read and write) ở chế độ Write .Các bạn có thể tham khảo thêm chế độ Read Status trong Datasheet


    [​IMG]
    Như trên cho thấy
    Mỗi lần ghi dữ liệu vào LCD chúng ta cần ghi 9 bít trong đó gồm 1 bít chọn dữ liệu cần ghi D/C và 8 bit dữ liệu
    Bit D/C là bit chọn loại dữ liệu ghi vào D/C = 0 là thì dữ liệu ghi vào là Command còn D/C = 1 thì sữ liệu ghi vào là dữ liệu hiển thị trên RAM
    Trước khi ghi dữ liệu cần kéo chân CS xuống mức thấp và mỗi bit được ghi vào khi có 1 cạnh xuống trên chân SCLK
    Ở Write còn có 2 chế độ khác như -Data/Command Transfer break ,Data/Command Transfer break
    Các bạn có thể tìm hiểu thêm trong datasheet STE2007 mà mình đính kèm
    #Code
    Mã:
    void LCD1202_Write(uint8_t Select_Data,uint8_t Data)
    {
        uint8_t i;
        if(Select_Data) LCD1202_SDA = 1;
        else LCD1202_SDA = 0;
        LCD1202_CS = 0;
        LCD1202_SCLK = 1;
        LCD1202_SCLK = 0;
        for(i = 0; i < 8; i++)
        {
            if((Data<<i) & 0x80) LCD1202_SDA = 1;  
            else LCD1202_SDA = 0;
            LCD1202_SCLK = 1;
            LCD1202_SCLK = 0;
        }
        LCD1202_CS = 1;
    }

    5 . RAM hiển thị

    Vung Display RAM của LCD1202 có kích thước 68x96 bit .Gồm 68 hàng và 96 cột .68 hàng được phân ra làm 8 page + 4 hàng
    Các bit trong Ram điều khiển hiển thị lên LCD . bit = 0 không hiển thị ,bit = 1 : hiển thị lên màn hình
    [​IMG]

    Sơ đồ quản lí RAM
    [​IMG]

    6 - Các command sử dụng
    Các command mình sử dụng cơ bản trong giao tiếp như Display ON/OFF ,Page address set ,
    Column address set upper 3–bit address ;Column address set lower 4–bit address để cài đặt vị trí hiển thị .Các bạn có thể tham khảo thêm các command khác trong datasheet để phục vụ cho bài toán của mình

    Dưới đây là Code demo và datasheet của LCD .Các bạn có thể dow về để tham khảo thêm
    Cảm ơn ! Chúc các bạn thành công!

    Các file đính kèm:

  2. zodzeus

    zodzeus New Member

    Cho hỏi nối LCD này vào mạch in mình dùng header tên gì vậy bạn :D .... nhìn cái cáp mỏng mỏng đó không biết gắn sao :(
  3. lovedt

    lovedt New Member

    Ad có thể hướng dẫn chuyển code qua dòng STM32f1 được không ạ.
  4. kutyace

    kutyace New Member

    chào AD!
    sao nếu dùng mấy lệnh ghi chữ lên rồi phải refeshram mới hiện, nhưng khi refeshram rồi lại dùng clear() không đc. clear xong refesh no lai hien lại. có cách nào xóa mà hình rồi ghi dữ liệu mới mà dữ liệu trước đó mất đi k refesh lại không? cảm ơn

Chia sẻ trang này

Lên trên