Giỏ hàng
DANH MỤC

LCD OLED Module OLED12864 0.96Inch SPI I2C

Thương hiệu: Khác
SKU: HN18-8
Giá: 100,000₫
Số lượng

Kiểm tra có hàng tại nơi bạn ở không?

VẬN CHUYỂN NHANH CHÓNG
THANH TOÁN ĐẢM BẢO
HỖ TRỢ 24/7
BẢO HÀNH DÀI HẠN

Thông số kĩ thuật:

- Điện áp hoạt động 3.3V
- Display RAM 128x64 bit
- Chuẩn giao tiếp : + SPI 4-wire
+ SPI 3-wire
+ I2C

 Sơ đồ chân và chức năng 
[​IMG]
 Sơ đồ đấu nối với MCU 
[​IMG]
 Giao tiếp

Ở bài viết này mình xin giới thiệu với các bạn giao tiếp với LED 128x64 bằng chuẩn SPI 3-wire 
Lưu ý : LED 128x64 trên đây chỉ hỗ chợ chân có thể ghi vào chứ không hỗ trợ cho đọc dữ liệu ra từ RAM
Ghi dữ liệu vào LED
[​IMG]
Nếu dữ liệu cần ghi là lệnh thì

- Kéo chân DC xuống 0
- Kéo chân CS xuống 0
- Ghi lệnh vào thông qua chân SDIN khi mỗi sườn lên trên chân SCLK
- Kéo chân DC và CS lên 1

Mã:
void LED128x64_SendCommand(uint8_t Command)
{
    uint8_t i;LED128x64_CS = 0;            // SlaveLED128x64_DC = 0;            // Data
    for(i=0;i<8;i++)
    {LED128x64_SCK = 0;LED128x64_DIN = (Command&0x80) != 0;LED128x64_SCK = 1;
      Command = Command << 1;
    }LED128x64_CS = 1;LED128x64_DC = 1;
}

Nếu dữ liệu cần ghi là Data

- Kéo chân DC lên 1
- Kéo chân CS xuống 0
- Ghi lệnh vào thông qua chân SDIN khi mỗi sườn lên trên chân SCLK
- Kéo chân DC và CS lên 1 

Mã:
//Code
void LED128x64_SendData(uint8_t Data)
{
    uint8_t i;LED128x64_CS = 0;            // SlaveLED128x64_DC = 1;            // Data
    for(i=0;i<8;i++)
    {LED128x64_SCK = 0;LED128x64_DIN = (Data&0x80) != 0;LED128x64_SCK = 1;
      Data = Data << 1;
    }LED128x64_CS = 1;LED128x64_DC = 1;
}

Các lệnh của LED 128x64
Để rõ hơn về các lệnh các bạn có thể tham khảo trong Datasheed đính kèm 

 Quản lí vùng nhớ Display RAM
Vùng Display RAM của LED 128x64 có kích thước 128x64 bit .Được chia làm 8 page được đánh số từ PAGE0 đến PAGE7 .Mỗi PAGE có kích thước 8x128 bit .Nói cách khác,mỗi PAGE gồm 128 cột ,mỗi cột gồm 8 bit được đánh số từ Bit0 đến Bit7 . Mô tả như hình sau 
[​IMG]
[​IMG]
 Một số hàm cơ bản sử dụng 

Như đã nói ở phần trên .Do LCD khác thì mình sẽ xử lí toàn bộ dữ liệu trên mảng này sau đó mới ghi vào RAM

a. Hàm ON/OFF một điểm ảnh

Muốn hiển thị một điểm ảnh có tọa độ bất kì
- Tìm Page chứa điểm ảnh đó PAGE = x/8 (x là tọa độ hàng)
- Tìm vị trí điểm ảnh trong PAGE Bit = x%8
Để ON điểm ảnh thì cho bit tương ứng lên 1
Để OFF điểm ảnh thì cho bit tương ứng về 0 

Mã:
// Code
void LED128x64_DrawPixel(uint8_t x ,uint8_t y ,uint8_t Color)
{
    if((x>LED128x64_WIDTH))return;
    else
    {
        if(Color==1)
        {
            OLED_RAM[x/8][y] |= (0x01 << (x%8));
        }
        else
        {
            OLED_RAM[x/8][y] &= ~(0x01 << (x%8));
        }
    }
}

b. Hàm ON/OFF toàn bộ màn hình
Để on toàn bộ khung hình thì cho tất cả các bít lên 1 .Ngược lại ,để OFF toàn bộ màn hình thì cho tất cả các bít xuống 0 

Mã:
//Code
void LED128x64_FillScreen(uint8_t Data)
{
    uint8_t i,j;
    for(i=0;i<8;i++)
    {LED128x64_StartPage(i);LED128x64_StartColumn(0x00);
        for(j=0;j<128;j++)
        {LED128x64_SendData(Data);
        } 
    }
}