Điều khiển hiển thị Text LCD

Một phần của tài liệu Thiết kế mạch khống chế nhiệt độ cho vườn ươm cây giống (Trang 55 - 59)

III/ TỔNG QUAN VỀ IC CẢM BIẾN NHIỆT LM35.

4. Điều khiển hiển thị Text LCD

4.1 Cỏc chõn điu khin LCD.

Cỏc chõn điều khiển việc đọc và ghi LCD bao gồm RS, R/W và EN.

RS (chõn số 3): Chõn lựa chọn thanh ghi (Select Register), chõn này cho phộp lựa chọn 1 trong 2 thanh ghi IR hoặc DR để làm việc. Vỡ cả 2 thanh ghi này đều được kết nối với cỏc chõn Data của LCD nờn cần 1 bit để lựa chọn giữa chỳng. Nếu RS=0, thanh ghi IR được chọn và nếu RS=1 thanh ghi DR được chọn. Chỳng ta đều biết thanh ghi IR là thanh ghi chứa mó lệnh cho LCD, vỡ thế nếu muốn gởi 1 mó lệnh đến LCD thỡ chõn RS phải được reset về 0. Ngược lại, khi muốn ghi mó ASCII của ký tự cần hiển thị lờn LCD thỡ chỳng ta sẽ set RS=1 để chọn thanh ghi DR. Hoạt động của chõn RS được mụ tả trong hỡnh 5.

Hoạt động của chõn RS.

R/W (chõn số 4): Chõn lựa chọn giữa việc đọc và ghi. Nếu R/W=0 thỡ dữ liệu sẽ được ghi từ bộ điều khiển ngoài (vi điều khiển AVR chẳng hạn) vào LCD. Nếu R/W=1 thỡ dữ liệu sẽ được đọc từ LCD ra ngoài. Tuy nhiờn, chỉ cú duy nhất 1 trường hợp mà dữ liệu cú thể đọc từ LCD ra, đú là đọc trạng thỏi LCD để biết LCD cú đang bận hay khụng (cờ Busy Flag - BF). Do LCD là một thiết bị hoạt động tương đối chậm (so với vi điều khiển), vỡ thế một cờ BF được dựng để bỏo LCD đang bận, nếu BF=1 thỡ chỳng ta phải chờ cho LCD xử lớ xong nhiệm vụ hiện tại, đến khi nào BF=0 một thao tỏc mới sẽ được gỏn cho LCD. Vỡ thế, khi làm việc với Text LCD chỳng ta nhất thiết phải cú một chương trỡnh con tạm gọi là wait_LCD để chờ cho đến khi LCD rảnh. Cú 2 cỏch để viết chương trỡnh wait_LCD. Cỏch 1 là đọc bit BF về kiểm tra và chờ BF=0, cỏch này đũi hỏi lệnh đọc từ LCD về bộ điều khiển ngoài, do đú chõn R/W cần được nối với bộ điều khiển ngoài. Cỏch 2 là viết một hàm delay một khoảng thời gian cố định nào đú (tốt nhất là trờn 1ms). Ưu điểm của cỏch 2 là sự đơn giản vỡ khụng cần đọc LCD, do đú chõn R/W khụng cần sử dụng và luụn được nối với GND. Tuy nhiờn, nhược điểm của cỏch 2 là khoảng thời gian delay cố định nếu quỏ lớn sẽ làm chậm quỏ trỡnh thao tỏc LCD, nếu quỏ nhỏ sẽ gõy ra lỗi hiển thị. Trong bài này tụi hướng dẫn bạn cỏch tổng quỏt là cỏch 1, để sử dụng

cỏch 2 bạn chỉ cần một thay đổi nhỏ trong chương trỡnh wait_LCD (sẽ trỡnh bày chi tiết sau) và kết nối chõn R/W của LCD xuống GND.

EN (chõn số 5): Chõn cho phộp LCD hoạt động (Enable), chõn này cần được kết nối với bộ điều khiển để cho phộp thao tỏc LCD. Để đọc và ghi data từ LCD chỳng ta cần tạo một “xung cạnh xuống” trờn chõn EN, núi theo cỏch khỏc, muốn ghi dữ liệu vào LCD trước hết cần đảm bảo rằng chõn EN=0, tiếp đến xuất dữ liệu đến cỏc chõn D0:7, sau đú set chõn EN lờn 1 và cuối cựng là xúa EN về 0 để tạo 1 xung cạnh xuống.

4.2 Tp lnh ca LCD.

Bảng 2 túm tắt cỏc lệnh cú thể ghi vào LCD

- Clear display – xúa LCD: lệnh này xúa toàn bộ nội dung DDRAM và vỡ thế xúa toàn bộ hiển thị trờn LCD. Vỡ đõy là 1 lệnh ghi Instruction nờn chõn RS phải được reset về 0 trước khi ghi lệnh này lờn LCD. Mó lệnh xúa LCD là 0x01(ghi vào D0:D7). - Cursor home – đưa con trỏ về vị trớ đầu, dũng 1 của LCD: lệnh này thực hiện việc đưa con trỏ về vị trớ đầu tiờn của bộ nhớ DDRAM, vỡ thế nếu sau lệnh này một biến được

ghi vào DDRAM thỡ biến này sẽ nằm ở vị trớ đầu tiờn (1;1). RS cũng phải bằng 0 trước khi ghi lệnh. Mó lệnh là 0x02 hoặc 0x03(chọn 1 trong 2 mó lệnh, tựy ý).

- Set DDRAM address – định vị trớ con trỏ cho DDRAM: di chuyển con trỏ đến một vị trớ tựy ý trong DDRAM và vỡ thế cú thể được dựng để chọn vị trớ cần hiển thị trờn LCD. Để thực hiện lệnh này cần reset RS=0. Bit MSB của mó lệnh (D7) phải bằng 1, 7 bit cũn lại của mó lệnh chớnh là địa chỉ DDRAM muốn di chuyển đến. Vớ dụ chỳng ta muốn di chuyển con trỏ đến vị trớ thứ 3 trờn dũng 2 của LCD (địa chỉ 42) chỳng ta cần ghi mó lệnh 0xAA vỡ 0xAA=10101010 (binary) trong đú bit MSB bằng 1, bảy bit cũn lại là 0101010=42, địa chỉ của ụ nhớ muốn đến.

- Write to CGRAM or DDRAM – ghi dữ liệu vào CGRAM hoặc DDRAM: vỡ đõy khụng phải là lệnh ghi instruction mà là 1 lệnh ghi dữ liệu nờn chõn RS cần được set lờn 1 trước khi ghi lệnh vào LCD. Lệnh này cho phộp ghi mó ASCII của một ký tự cần hiển thị vào thanh ghi DDRAM. Trường hợp ghi vào CGRAM khụng được khảo sỏt.

- Entry mode set – xỏc lập cỏc hiện thị liờn tiếp cho LCD: núi một cỏch dễ hiểu,

lệnh này chỉ ra cỏch mà bạn muốn hiển thị một ký tự tiếp theo 1 ký tự trước đú. Vớ dụ nếu bạn muốn hiện thị 2 ký tự liờn tiếp AB, trước hết bạn viết A tại vị trớ 5, dũng 1. Sau đú bạn ghi B vào LCD, lỳc này cú 4 cỏch mà LCD cú thể hiển thị B như sau: hiển thị B bờn phải A tại vị trớ số 6 (cỏch 1); B cũng cú thể được hiển thị bờn trỏi A, tại vị trớ số 4(cỏch 2); hoặc LCD cú thể tự dịch chuyển A về bờn trỏi đến vị trớ 4 sau đú hiển thị B bờn phải A, tại vị trớ 5(cỏch 3); và khả năng cuối cựng là LCD dịch chuyển A về bờn phải đến vị trớ 6 sau đú hiển thị B bờn trỏi A, tại vị trớ 5(cỏch 4). Chỳng ta cú thể chọn 1 trong 4 cỏch hiển thị trờn thụng qua lệnh Entry mode set. Đõy là lệnh ghi Instruction nờn RS=0, 5 bit cao D7:3=00000, bit D2=1, hai bit cũn lại D1:0 chứa mó lệnh để lựa chọn 1 trong 4 cỏch hiển thị. Xem lại bảng 2, bit D1 chứa giỏ trị I/D và D0 chứa S. Trong đú I/D nghĩa là tăng hoặc giảm (Increment or Decrement). I/D= 1 là hiển thị tăng tức ký tự sau sẽ hiển thị bờn phải ký tự trước, nếu I/D=0 thỡ hiển thị giảm, tức ký tự sau hiển thị bờn trỏi ký tự trước. S là giỏ trị Shift, nếu S=1 thỡ cỏc ký tự trước đú sẽ được “đẩy” đi, ký tự sau chiếm chỗ ký tự trước, ngược lại nếu S=0 thỡ vị trớ hiển thị của cỏc ký tự trước đú khụng thay đổi. Cú thể túm tắt 4 mode hiển thị ứng với 4 mó lệnh như sau:

+ D7:0 = 0x04 (00000100) : hiển thị giảm và khụng shift (như cỏch 2 trong vớ dụ). + D7:0 = 0x05 (00000101) : hiển thị giảm và shift (như cỏch 4 trong vớ dụ). + D7:0 = 0x06 (00000110) : hiển thị tăng và khụng shift (như cỏch 1, khuyến

khớch).

+ D7:0 = 0x07 (00000111) : hiển thị tăng và shift (như cỏch 3 trong vớ dụ). - Display on/off control – xỏc lập cỏch hiện thị cho LCD: lệnh này bao gồm cỏc thụng số cho phộp LCD hiển thị, cho phộp hiển thị cursor và mở/tắt blinking. Đõy cũng là một lệnh ghi Instrcution nờn RS phải bằng 0. Mó lệnh cho lệnh này cú dạng 00001DCB trong đú D (Display) cho phộp hiển thị LCD nếu mang giỏ trị 1, C (Cursor) bằng 1 thỡ cursor sẽ được hiển thị và B là blinking cho cursor tại vị trớ hiển thị (blinking là dạng 1 ụ đen nhấp nhỏy tại vị trớ ký tự đang hiển thị). Mó lệnh được dựng phổ biến cho lệnh này là 0x0E (00001110 - hiển thị cursor nhưng khụng hiển thị blinking).

- Function set – xỏc lập chức năng cho LCD: đõy là lệnh thiết lập phương thức giao tiếp với LCD, kớch thước font chữ và số lượng line của LCD. RS cũng phải bằng 0 khi sử dụng lệnh này. Mó lệnh function set cú dạng 001DơơLNFxx. Trong đú nếu DL=1 (DL: Data Length) thỡ mode giao tiếp 8 bit sẽ được dựng, lỳc này tất cả cỏc chõn từ D0 đến D7 phải được kết nối với bộ điều khiển ngoài. Nếu DL=0 thỡ mode 4 bit được dựng, trong trường hợp này chỉ cú 4 chõn D4:7 được dựng để truyền nhận dữ liệu và kết nối với bộ điều khiển ngoài, cỏc chõn D0:3 được để trống. N quy định số dũng của LCD, vỡ chỳng ta đang khảo sỏt LCD loại hiển thị 2 dũng nờn N=1 (N=0 cho trường hợp LCD 1 dũng). F là kớch thước font chữ hiển thị, do LCD cú 2 bộ font chữ cú sẵn trong CGROM nờn chỳng ta cần lựa chọn thụng qua bit F, nếu F=1 bộ font 5x10 được sử dụng và nếu F=0 thỡ font 5x8 được hiển thị. 2 bit thấp trong mó lệnh này cú thể được gỏn giỏ trị tựy ý. Mó lệnh được dựng phổ biến cho lệnh function set là 0x38 (00111000 – giao tiếp 8 bit, 2 dũng với font 5x8 ) hoặc 0x28 (00101000 – giao tiếp 4 bit, 2 dũng với font 5x8 ).

4.3 Giao tiếp 8 bit và 4 bit.

Như trỡnh bày trong lệnh function set, cú 2 mode để ghi và đọc dữ liệu vào LCD đú là mode 8 bit và mode 4 bit:

- Mode 8 bit: Nếu bit DL trong lệnh function set bằng 1 thỡ mode 8 bit được dựng. Để sử dụng mode 8 bit, tất cả cỏc lines dữ liệu của LCD từ D0 đến D7 (từ chõn 7 đến chõn 14) phải được nối với 1 PORT của chip điều khiển bờn ngoài (vớ dụ PORTC của ATmega32 trong vớ dụ của bài này) như trong hỡnh 3. Ưu điểm của phương phỏp giao tiếp này là dữ liệu được ghi và đọc rất nhanh và đơn giản vỡ chip điều khiển chỉ 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 D0, 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 chip bộ điều khiển ngoài. Cỏc instruction và 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. Tuy nhiờn, việc đọc và ghi từng nibble tương đối khú khăn hơn đọc và ghi dữ liệu 8 bit.

CHƯƠNG IV : PHÂN TÍCH VÀ THIẾT KẾ MẠCH.

Một phần của tài liệu Thiết kế mạch khống chế nhiệt độ cho vườn ươm cây giống (Trang 55 - 59)

Tải bản đầy đủ (DOC)

(72 trang)
w