Graphic LCD được sử dụng trên mạch BKIT PIC là loại LCD chấm, không màu, có độ phân giải 128x64 tức 8192 chấm.
14.1 Giới thiệu GLCD 128x64 Graphic LCD được sử dụng trên mạch BKIT PIC là loại LCD chấm, không màu, có độ phân giải 128x64 tức 8192 chấm. GLCD được thiết kế để điều khiển được từng chấm, nên có thể dùng để hiển thị bất kỳ ký tự hay hình ảnh nào. Với mỗi chấm tương ứng một bit dữ liệu, GLCD 128x64 cần 8192 bits RAM hay 1024 bytes RAM để hiển thị toàn màn hình.
Loại GLCD YM12864J sử dụng 2 chip điều khiển KS0108 rất phổ biến của Samsung, mỗi chip có 512 bytes RAM. Do đó, nó tương tự như 2 LCD 64x64 ghép lại với nhau.
Loại GLCD YM12864J sử dụng 2 chip điều khiển KS0108 rất phổ biến của Samsung, mỗi chip có 512 bytes RAM. Do đó, nó tương tự như 2 LCD 64x64 ghép lại với nhau.
14.1.1 Chức năng các chân của GLCD 128x64 Chức năng các chân:
Chân EN Khi thực hiện một quá trình giao tiếp với GLCD, ban đầu, chân EN được kéo xuống thấp. Trong khi đó, các chân điều khiển khác được thiết lập. Sau khi thiết lập xong, chân EN được kích lên mức cao để cho phép tín hiệu. Sau khoảng thời gian cần thiết cho quá trình hoàn tất, chân EN lại được kéo xuống thấp để sẵn sàng cho một quá trình khác. Chân RS và RW Hai chân này được kết hợp để thiết lập cho các thanh ghi của GLCD theo bảng sau:
Sơ đồ bố trí RAM:
Hình 15 2 Sơ đồ bố trí RAM của GLCD 128x64
Minh họa hiển thị ký tự “a” trên GLCD:
Hình 15.3 Ký tự "a" trên GLCD
Hình 15.4 Dữ liệu RAM cho ký tự "a"
Lập trình:
• RW = 0
• RS = 0
• Opcode = 0x3E + D (D = 0:1) 2. Hiển thị Start Line Chọn một dòng nào đó của RAM để làm dòng đầu tiên được hiển thị lên, nghĩa là “cuộn” hình ảnh trong RAM lên một khoảng LOffset, với LOffset có giá trị từ 0 đến 63. Phần bị che khuất khi cuộn sẽ được hiển thị tiếp ngay bên dưới. Ví dụ với LOffset = 20:
Hình 15.5 Cuộn lên 20 dòng
• RS = 0
• RW = 0
• Opcode = 0xC0 + LOffset 3. Thiết lập trang (địa chỉ X) Thiết lập địa chỉ X để truy xuất RAM.
Lập trình:
• RS = 0
• RW = 0
• Opcode = 0xB8 + X 4. Thiết lập địa chỉ Y Thiết lập địa chỉ Y để truy xuất RAM.
Lập trình:
• RS = 0
• RW = 0
• Opcode = 0x40 + Y 5. Đọc trạng thái Đọc trạng thái của GLCD, chủ yếu kiểm tra bit BUSY (bit 7).
Lập trình:
• RS = 0
• RW = 1 6. Ghi dữ liệu hiển thị Ghi dữ liệu vào RAM tại địa chỉ X, Y. Sau khi ghi xong, giá trị Y sẽ tự động được tăng lên 1 đơn vị, chuyển sang cột tiếp theo hoặc trở về cột đầu tiên, tức Y = 0.
Lập trình:
• RS = 1
• RW = 0 7. Đọc dữ liệu hiển thị Đọc dữ liệu từ RAM tại địa chỉ X, Y. Sau khi đọc xong, giá trị Y sẽ tự động được tăng lên 1 đơn vị, chuyển sang cột tiếp theo hoặc trở về cột đầu tiên, tức Y = 0.
Lập trình:
• RS = 1
• RW = 1
14.2 Xây dựng chương trình14.2.1 Khởi tạo graphic LCD Quá trình khởi tạo được thực hiện như sau:
- Khởi tạo các chân liên kết với glcd(thiết lập input/output).
- Chọn chip điều khiển thứ nhất.
- Thiết lập chân RS ở chế độ ghi lệnh.
- Gửi lệnh bât màn hình (0x3F).
- Gửi lệnh để thiết lập địa chỉ Y (0x40 + Y).
- Gửi lệnh để thiết lập địa chỉ X (địa chỉ trang) (0xB8 + X).
- Gửi lênh chọn dòng nào trong RAM để hiển thị lên.
- Làm tương từ bước thứ 2 cho chip thứ 2.
Code:
glcd_write_byte(GLCD_ON_DISPLAY); glcd_write_byte(GLCD_SET_Y_ADDR); glcd_write_byte(GLCD_SET_PAGE); glcd_write_byte(GLCD_START_LINE);
Code:
#define GLCD_ON_DISPLAY 0x3F // DB0: turn display on #define GLCD_START_LINE 0xC0 // 11XXXXXX: set lcd start line #define GLCD_SET_PAGE 0xB8 // 10111XXX: set lcd page (X) address #define GLCD_SET_Y_ADDR 0x40 // 01YYYYYY: set lcd Y address
Code:
GLCD_CTRL_PORTbits.GLCD_CTRL_RW = 0;// chế độ ghi GLCD_DATA_PORT = abyte; // ghi dữ liệu GLCD_CTRL_PORTbits.GLCD_CTRL_E = 1;// sau khi ghi bật chân EN lên 1 để cho phép tín hiệu _nop();_nop();_nop(); GLCD_CTRL_PORTbits.GLCD_CTRL_E = 0;// cho chân EN xuống 0 lại để chuẩn bị cho lần thiết lập tiếp theo _nop();_nop();_nop();
EmoticonEmoticon