HD44780U có 2 thanh ghi 8 bits là INSTRUCTION REGISTER (IR) và DATA
REGISTER (DR). Thanh ghi IR chứa mã lệnh điều khiển LCD và là thanh ghi “chi ghi” (chỉ có thê ghi vào thanh ghi này ma không đọc được nó). Thanh ghi DR chứa các các loại dữ liệu như ký tự cần hiển thị hoặc dir liệu đọc ra từ bộ nhớ LCD...Ca 2 thanh ghi đều được nói với các đường dữ liệu D0:7 của Text LCD va được lựa chọn tùy theo các chân điều khiến RS, RW. Thực tế dé điều khién Text LCD chúng ta không can
22
quan tâm đến cách thức hoạt động của 2 thanh ghi nay, vì thé cũng không can khảo sát chi tiết chúng.
HD44780U có 3 loại bộ nhớ. đó là bộ nhớ RAM dữ liệu cần hiện thị DDRAM
(Didplay Data RAM), bộ nhớ chứa ROM chứa bộ font tạo ra ký tự CGROM (Character Generator ROM) và bộ nhớ RAM chúa bộ font tạo ra các symbol tùy chọn
CGRAM (Character Generator RAM). Đề điều khién hiện thị Text LCD chúng ta can hiéu tô chức và cách thức hoạt động của các bộ nhớ này.
2.3.3.1 DDRA.M
DDRAM là bộ nhớ tạm chứa các ký tự cần hién thị lên LCD, bộ nhớ này gdm có 80 ô được chia thành 2 hang, mỗi ô có độ rong 8 bit và được đánh số từ 0 đến 39 cho dòng 1; từ 64 đến 103 cho dòng 2. Mỗi ô nhớ tương ứng với 1 6 trên man hình LCD. Như chúng ta biết LCD loại 16x2 có thé hiển thị tối đa 32 ký tự (có 32 6 hiển
thi), vì thế có một số 6 nhớ của DDRAM không được sử dụng làm các ô hiển thị. Dé
hiệu rõ hơn chúng ta tham khảo hình bên dưới.
LCD DDRAM
Ăủ=B11533155351B5B51B51
1ù 11 MOO MO SMMC oC SSE El
Hình 2.5: Thứ tự các 6 nhớ trên DDRAM.
Chỉ có 16 ô nhớ có địa chỉ từ 0 đến 15 và 16 6 địa chỉ từ 64 đến 79 là được hiển
thị trên LCD. Vì thế muốn hiên thị một ký tự nao đó trên LCD chúng ta cần viết ký tự đó vào DDRAM ở | trong 32 địa chỉ trên. Các ký tự nằm ngoài 32 ô nhớ trên sẽ không được hiển thị, tuy nhiên vẫn không bị mất đi, chúng có thể được dùng cho các mục
đích khác nếu cần thiết.
2.3.3.2 CGROM
CGROM là vùng nhớ cố định chứa định nghĩa font cho các ký tự. Chúng ta không trực tiếp truy xuất vùng nhớ này mà chip HD44780U sẽ tự thực hiện khi có yêu cau đọc font dé hiện thị. Một điều đáng lưu ý là địa chỉ font của mỗi ký tự vùng nhớ
CGROM chính là mã ASCII của ký tự đó. Ví dụ ký tự 'a` có mã ASCH là 97, tham
23
khảo tổ chức của vùng nhớ CGROM trong hình 4 bạn sẽ nhận thấy địa chỉ font của ‘a’
có 4 bit thấp là 0001 và 4 bit cao là 0110, địa chỉ tống hợp là 01100001 = 97.
CGROM và DDRAM được tự động phối hợp trong quá trình hiện thị của LCD.
Giả sử chúng ta muốn hiển thị ký tự ‘a’ tại vị trí đầu tiên, đòng thứ 2 của LCD thì các bước thực hiện sẽ như sau: trước hết chúng ta biết rằng vị trí đầu tiên của dòng 2 có địa chỉ là 64 trong bộ nhớ DDRAM, vì thế chúng ta sé ghi vào 6 nhớ có địa chỉ 64 một giá trị là 97 (ma ASCII của ký tự ‘a’). Tiếp theo, chip HD44780U đọc giá trị 97 này và coi như là địa chỉ của vùng nhớ CGROM, nó sẽ tìm đến vùng nhớ CGROM có địa chỉ 97 và đọc bang font đã được định nghĩa sẵn ở đây, sau đó xuất bản font này ra các
“cham” trên màn hình LCD tai vị trí đầu tiên của dòng 2 trên LCD. Đây chính là cách mà 2 bộ nhớ DDRAM và CGROM phối hợp với nhau để hiển thị các ký tự. Như mô tả, công việc của người lập trình điều khiển LCD tương đối đơn giản, đó là viết mã ASCII vào bộ nhớ DDRAM tại đúng vị trí được yêu cầu, bước tiếp theo sẽ do
HD44780U đảm nhiệm.
2.3.3.3 CGRAM
CGRAM là vùng nhớ chửa các symbol do người dùng tự định nghĩa, mỗi
symbol được có kích thước 5x8 và được đành cho 8 6 nhớ 8 bit. Các symbol thường
được định nghĩa trước va được gọi hiển thị khi can thiết. Vùng này có tất cả 64 ô nhớ nên có tối đa 8 symbol có thé được định nghĩa.
2.3.4 Tập lệnh của LCD
Đề có thé giao tiếp dé dang với LCD ta phải năm rõ được tập lệnh và ý nghĩa của nó. Mã lệnh của LCD được biểu diễn trong bảng 2.3.
Mã lệnh Thời
gian
thi hành Xóa màn
a hinh, dua con
— 0/0|0|0/0|0|0|0|0|1. trửvềvitớ =
dau (address "
0).
Thiết lập chế độ
Bậưtắt
hiện thị
Dịch con trỏ/ hiện
thị
Thiết lập
chức
năng
Read
“BUSY”
flag
1
24
S/ | R/
CGRAM address
DDRAM address
CGRAM/DDRAM address
Write data
Read data
Dua con tro
vé vj tri dau
(address 0).
Thiét lập hướng dich con trỏ (I/D),
dich hiện thị
(S).
Bat/Tat hién thi con trỏ;
Bat/tat chế độ nhập nháy
của con trỏ.
Thiệt lập
chiều dịch chuyền của
con trỏ và
hiện thị.
Thiết lập độ dai của dir
liệu, số dong
và font chữ.
Thiết lập địa
chỉ CGRAM.
Thiết lập địa
chỉ DDRAM.
Đọc cờ báo bận và địa chỉ
của CGRAM hay DDRAM
(tùy vào lệnh trước đó).
Ghi dữ liệu
vào CGRAM hay DDRAM.
Đọc dữ liệu
vào CGRAM hay DDRAM.
_— — = <= = % 2 ⁄
25
Các bit viết tắt trong mã lệnh được nêu rõ trong bảng 2.4.
Bảng 2.4: Các bit viết tắt và mô tả.
SiC 0 = Di chuyền con tro. 1 = Dịch chuyên hiền thị.
R/L 0= Dịch trái. | = Dịch phải.
an lheffad-maim—— 1 = Chế độ 8 — bit dữ liệu.
N 1 dong. 2 dòng.
BF 0 = Không bận. 1 = Dang bận.
2.3.5 Giao tiếp và nguyên tắc hién thị ký tự trên LCD
LCD có hai mode giao tiếp là 4 bit và 8 bit. Ta sẽ lần lượt tìm hiểu về cách sử dụng cũng như ưu - nhược điểm của hai mode này.
- Mode 8 bit: Dé sử dung mode 8 bit, tat cả các lines dữ liệu của LCD từ DO
đến D7 (từ chân 7 đến chân 14) phái được nối với một PORT (gồm 8 chân) của vi điều
khiển bên ngoài. Ưu điểm của phương pháp giao tiếp này là dữ liệu được ghi và đọc rat nhanh và đơn gián vì chip điều khiến chi cần xuất hoặc nhận dữ liệu trên 1 PORT.
Tuy nhiên, phương pháp này có nhược điểm là tông số chân dành cho giao tiếp LCD quá nhiều, nếu tính luôn cả 3 chân điều khiến thì cần đến 11 đường cho giao tiếp LCD.
- Mode 4 bit: LCD cho phép giao tiếp với bộ điều khiên ngoài theo chế độ 4 bit. Trong chế độ này, các chân DO, D1, D2 và D3 của LCD không được sử dụng (đẻ trông), chỉ có 4 chân từ D4 đến D7 được kết nỗi với vi điều khiển bên ngoài. Các instruction va data 8 bit sẽ được ghi và đọc bằng cách chia thành 2 phần, gọi là các nibbles, mỗi nibble gồm 4 bit và được giao tiếp thông qua 4 chân D7:4, nibble cao được xử lí trước và nibble thấp sau. Ưu điểm lớn nhất của phương pháp nảy tối thiểu số lines dùng cho giao tiếp LCD, nếu tính luôn cả 3 chân điều khiển thi chỉ cần 7
26
đường cho giao tiếp LCD. Tuy nhiên, việc đọc và ghi từng nibble tương đối khó khăn
hơn đọc và ghi đữ liệu 8 bit.
Hình 2.6 là hình ảnh cách mắc LCD theo mode giao tiếp 4 bit. Trong đó, các chân từ D4 đến D7 được mắc vào 4 chân thuộc | PORT của vi điều khiển. Chan VSS nói đất, VDD nối với nguồn 5V, VEE nỗi chân chạy của biến trở hạn dong nhằm điều
chính độ tương phản của LCD.
Hình 2.6: Cách mắc LCD theo kiểu giao tiếp 4 bit.
Trinh tự giao tiếp với LCD mode 4 bit được mô tả bằng sơ đồ hình 2.7.
“
START a’
¢
“
“
“
“
“
“
“
K*jrgLCD |“
(ứ LCD)
`
| ``
*
Câu LCD (pexter_LOD
Mi LOD)
27
Đề sử dụng LCD chúng ta cần khởi động LCD, sau khi được khởi động LCD đã sẵn sảng để hiến thị. Quá trình khởi động chỉ cần thực hiện một lần ở đầu chương trình. Trong code giao tiếp với LCD. quá trình khởi động được viết trong một chương trình con tên LCD_Init, khởi động LCD thường bao gồm xác lập cách giao tiếp, kích thước font, số dòng LCD (Function set), cho phép hiển thị LCD, Cursor
home...(Display control), chế độ hiển thị tăng/giảm, shift (Entry mode set). Các thủ tục khác như xóa LCD, viết ký tự lên LCD, di chuyên con trỏ...được sử dụng liên tục
trong quá trình hiện thị LCD và sẽ được trình bày trong các đoạn chương trình con
riéng.
Chú ý: Mỗi khi thực hiện ghi lệnh hay dữ liệu hiện thị lên LCD đều phải kiểm tra cờ bận. Sở di xuất hiện vấn dé này là đo trong một khoảng thời gian LCD chỉ có thé thực hiện được một nhiệm vụ như xóa hay ghi dữ liệu.. Tuy nhiên. có một s6 loai LCD không cho phép kiểm tra cờ bận. vì thé nên ta phải chủ động trong việc lập trình trong
việc phân phối thời gian khi ra lệnh cho LCD. Ví dụ như khi thực hiện lệnh xóa màn hình thì phải chờ 2 ms rồi mới thực hiện lệnh mới vì thời gian thực hiện lệnh xóa màn
hình là 1,64 ms.