Là 2 thanh ghi 8 bit trong bộ điều khiển HD44780. Thanh ghi chỉ thị lệnh (instruction register) chứa các lệnh được gửi từ vi điều khiển để điều khiển LCD như lệnh dịch LCD, xóa LCD, địa chỉ LCD.v.v.. Thanh ghi dữ liệu (data register) được sử dụng để lưu trữ dữ liệu để hiển thị trên LCD. Khi tín hiệu cho phép gửi của LCD được xác nhận, dữ liệu trên các chân sẽ được chốt tới thanh ghi dữ liệu và dữ liệu này sau đó sẽ được tự động chuyển tới DDRAM và sau đó sẽ hiển thị lên LCD.
Lệnh và chỉ thị:
Chỉ có thanh ghi chỉ thị (instruction register) và thanh ghi dữ liệu (data register) của LCD mới có thể điều khiển được bằng vi điều khiển. Sự hoạt động bên trong của LCD được xác định bằng các tín hiệu được gửi đến từ MCU. Những tín hiệu đó bao gồm: tín hiệu lựa chon thanh ghi, tín hiệu đọc/ghi, và dữ liệu trên bus (D0 tới D7), có 4 loại lệnh của LCD là:
• Chỉ rõ chức năng của LCD như định dạng hiển thị, độ dài dữ liệu… • Thiết lập địa chỉ RAM trong.
• Thực hiện truyền dữ liệu với RAM trong. • Thực hiện một số chức năng khác.
Bảng1.2. Danh sách các lệnh thường xuyên sử dụng khi làm việc với LCD.
Số thứ tự Chỉ thị Mã lệnh
(hex)
Mã lênh (decimal) 1 Thiết lập : 8 bit, 1 dòng, 5x7 điểm 0x30 48
2 Thiết lập : 8 bit, 2 dòng, 5x7 điểm 0x38 56 3 Thiết lập : 4 bit, 1 dòng, 5x7 điểm 0x20 32 4 Thiết lập : 4 bit, 2 dòng, 5x7 điểm 0x28 40
5 Tắt hiển thị, tắt con trỏ 0x08 8
6 Bật hiển thị, bật con trỏ 0x0E 14
7 Bật hiển thị, tắt con trỏ 0x0C 12
8 Bật hiển thị, nhấp nháy con trỏ 0x0F 15
9 Dịch hiển thị sang trái 0x18 24
10 Dịch hiển thị sang phải 0x1C 30
11 Di chuyển con trỏ sang trái 1 ký tự 0x10 16 12 Dich chuyển con trỏ sang phải 1 ký tự 0x14 20 13 Xóa hiểm thị đồng thời cũng xóa nội
14 Thiết lập địa chỉ DDRAM hoặc vị trí
con trỏ hiển thị 0x80 + add 128 + add
15 Thiết lập địa chỉ CGRAM hoặc cài đặt
con trỏ tới vùng CGRAM 0x40 + add 64 + add
.c, Chế độ giao tiếp với LCD16x2.
Có 2 chế độ giao tiếp là chế độ 8 bit và chế độ 4 bít. Với chế độ 8 bít chúng ta cần sử dụng 8 chân của vi điều khiển(ở cùng 1 PORT) để làm 8 chân dữ liệu và phải sử dụng thêm 3 chân của vi điều khiển nữa để làm các chân điều khiển. Như vậy ta cần tới 11 chân của vi điều khiển để giao tiếp với 1 LCD, mặt khác số lượng chân của vi điều khiển rất hạn chế do vậy chế độ giao tiếp 8 bít ít được sử dụng trong thực tế.
Với chế độ 4 bít ta chỉ cần 4 chân của vi điều khiển và 3 chân vi điều khiển để làm các chân đưa tín hiệu điều khiển tới LCD. Do vậy ta chỉ mất có 7 chân của vi điều khiển để giao tiếp với LCD. Ở chế độ này thì khi gửi 1byte tới LCD ta phải chia làm hai lần – đó là gửi 4bit cao trước sau đó gủi 4bit thấp sau.Tuy nhiên ở chế độ này sẽ tiết kiệm chân của vi điều khiển để giao tiếp với LCD do đó chế độ này hiện này được sử dụng rất rộng dãi.
.d, Một số hàm thao tác cơ bản với LCD
1. Hàm đọc cờ bận.
Busy Flag (BF): là cờ chỉ thị trạng thái cho LCD. Khi gửi 1 lệnh hoặc dữ liệu tới LCD để xử lý thì cờ này được bật (BF =1). Quá trình kết thúc cờ này được xóa về không (BF = 0). Để đọc được cờ BF thì điều kiện là chân RS = 0 và chân R/W = 1, bit MSB của dữ liệu LCD (D7) chứa giá trị nhận được của BF. Khi BF = 1 có nghĩa là LCD đang bận và sẽ không nhận bất cứ lệnh nào, còn khi BF = 0 cho biết LCD đã sẵn sàng nhận lệnh hoặc dữ liệu để xử lý.
Khi gửi lệnh thì BF hoặc D7 của LCD sẽ nhận giá trị 1 thông báo LCD đang bận xử lý, quá trình kết thúc BF = 0. Các bước sau chỉ ra quá trình đọc cờ bận.
Lựa chọn thanh ghi lệnh(RS = 0).
Lựa chọn thao tác đọc(R/W = 1).
Gửi tín hiệu cho phép(E = 0, E =1). .
Đọc cờ bận BF(đọc bit D7).
Tuy nhiên, ta có thể ta không phải đọc trực tiếp cờ bận(BF) mà ta có thể thay thế bằng một đoạn trễ để LCD xử lí xong các lệnh mà nó đã nhận từ thiết bị điều khiển.
Quá trình gửi lệnh thực hiện giống hệt như trong hàm khởi tạo có thể xây dựng hàm con với các bước sau:
Di chuyển dữ liệu(lệnh cần gửi) tới cổng của LCD.
Lựa chọn thanh ghi lệnh(RS = 0).
Lựa chọn thao tác ghi(R/W = 0).
Gửi tín hiệu cho phép(E = 0, E = 1)
Đợi cho LCD xử lý(tới khi cờ BF = 0). 3. Ghi dữ liệu tới LCD
Gửi dữ liệu đơn giản chỉ cần lựa chọn thanh ghi dữ liệu, các công việc khác hoàn toàn giống với thao tác gửi lệnh. Được mô tả bằng các bước sau:
Di chuyển dữ liệu(dữ liệu cần ghi) tới cổng LCD.
Lựa chọn thanh ghi dữ liệu(RS = 1).
Lựa chọn thao tác ghi(R/W = 0).
Gửi tín hiệu cho phép(E = 0, E = 1).
Đợi cho LCD xử lý. 4. Di chuyển vị trí của con trỏ
Để thiết lập vị trí con trỏ trên LCD, cần gửi tới địa chỉ DDRAM .
Bit 7 6 5 4 3 2 1 0
Giá trị 1 AD6 AD5 AD4 AD3 AD2 AD1 AD0
Bit thứ 7 luôn luôn là 1(D7 = 1), các bit từ 0 tới 7 là địa chỉ của DDRAM. Nếu muốn đặt con trỏ tại vị trí đầu tiên tức dòng 1 cột 1, thì địa chỉ sẽ phải ghi là
‘0b10000000’ hay 0x80.
Với LCD 2 dòng 16 cột, địa chỉ từ 0x80 tới 0x8F cho phép nhìn thấy trên dòng 1 và từ địa chỉ từ 0xC0 tới 0xCF nhìn thấy được trên dòng 2, vùng còn trống của DDRAM vẫn được dùng, tuy nhiên sẽ không nhìn thấy được trên LCD. Để kiểm tra điều này cách đơn giản là xuất 1 chuỗi ký tự lớn hơn 16 và dịch hiển thị thì những ký tự không được nhìn thấy sẽ trở lại từ phía sau.
Cách tính địa chỉ DDRAM(vị trí của con trỏ) như sau:
ADD = 128 + (x - 1) + 64(y - 1)
Với y là số hàng, y = 1 hoặc y = 2. x là số cột, x = 1- 16.
VD : Muốn di chuyển con trỏ tới vị trí hàng 2 cột 3(y = 2, x = 3) thì : ADD = 128 + (3-1) +64(2-1) = 194 hay 0xC2.