Có thể tổng kết đờng đi của ánh sáng nh sau: Để có 1 điểm tối trên LCD: ánh sáng phát ra từ bên trong LCD sẽ điqua bề mặt rãnh thứ nhất lớp lọc đơn cực, sau đó ánh sáng đi qua lớpLiqui
Trang 1Chơng 4 Giới thiệu về thiết bị hiển thị (LCD),cỏch
ghộp nối với vi xử lý (Hunghe`o)
Màn hình tinh thể lỏng LCD (liquid Crystal Display)
I/ Kiến thức chung về LCD (Liquid Crystals Display).
1.Màn hình tinh thể lỏng (LCD) là gì và phạm vi ứng dụng?
_ Ngày nay trong lĩnh vực thông tin và giải trí, việc dùng màn hình ống tia ca tốt truyền thống (CRT) đang dần đợc thay thế bằng việc sử dụng màn hình tinh thể lỏng (LCD) Vì LCD có nhiều u điểm vợt trội nh : Độ
dày màn hình nhỏ hơn rất nhiều , Kích thớc đa dạng từ loại màn hình nhỏ tới màn hình cực lớn, Tiêu thụ ít năng lợng và không nguy hiểm bằng CRT
LCD dùng trong lĩnh vực điều khiển
LCD dùng trong thông tin giải trí(Màn hình Tivi, máy vi tính)
LCD dùng trong truyền thông (Màn hình điện thoại, hiển thị của hệ thống
chuyên dụng)
Trang 22 Cơ sở vật lý của LCD.
_ Đúng nh tên gọi của nó, LCD (Liquid Crystals Display ) - Màn hình tinh thể lỏng - , cơ sở vật lý để LCD có thể hiển thị đợc thông tin , hình ảnh chính là do đặc tính của vật liệu chế tạo nên LCD, tức là Liquid Crystals (thạch anh lỏng).
_ Đặc tính của Liquid Crystals :
Thứ nhất:
Liquid Crystals là vật liệu trong suốt vừa có tính chất của chấ rắn,lại vừa
có tính chất của chất lỏng (chính điệu này đã lam nên sự khác biệt):
+ ánh sáng truyền qua Liquid Crystals theo góc nghiêng của các phân
tử , và ánh sáng bị phản xạ trở lại Đây chính là tính chất của chất rắn.
+ Khi Liquid Crystals đợc tích điện, nó sẽ bị thay đổi góc nghiêng của
các phần tử, và kết quả là ánh sáng có thể truyền xuyên qua Đây chính là
tính chất của chất lỏng
Bây giờ nói về đặc tính của lớp Liquid Cristal (ở giữa) : ánh sáng truyền
qua lớp này theo góc của các phần tử, và vì thế ánh sáng bị xoắn 90 độ khixuyên qua lớp Liquid Cristal này Nhng khi phân cực cho lớp LiquidCristal, các phân tử đợc sắp xếp lại theo phơng ngang, và vì thế mà ánhsáng có thể truyền qua lớp Liquid Cristal mà không bị xoắn (Hình 2)
Thứ ba :
Về tính chất của lớp lọc ánh sáng đơn cực Chúng ta đều biết rằng ánhsáng là sóng truyền theo nhiều phơng khác nhau Lớp lọc đơn cực thực rachỉ là tập hợp các đờng thẳng trong suốt song song – Chính là 2 bề mặtrãnh của LCD đã nói ở trên- Sau khi đi qua lớp lọc đơn cực, ánh sáng chỉcòn thành phần sóng có phơng trùng với phơng các đờng thẳng trên lớp lọccực LCD có 2 lớp lọc đơn cực có phơng lọc vuông góc nhau Vì vậy, saukhi ra khỏi cả 2 lớp lọc đơn cực ánh sáng bị chặn lại hoàn toàn ánh sángchỉ có thể truyền qua cả 2 lớp lọc đơn cực nếu sau khi qua lớp lọc thứ nhất
ánh sáng đợc xoắn 1 góc 90 độ rồi mới đi qua lớp lọc thứ 2 Thật may, việcxoắn ánh sáng hoàn toàn có thể thực hiện đợc theo tính chất lớp LiquidCristal đã nói ở trên
Có thể tổng kết đờng đi của ánh sáng nh sau:
Để có 1 điểm tối trên LCD: ánh sáng phát ra từ bên trong LCD sẽ điqua bề mặt rãnh thứ nhất (lớp lọc đơn cực), sau đó ánh sáng đi qua lớpLiquid Cristal (lớp này đợc phân cực nên ánh sáng qua nó mà không bịxoắn), sau đó ánh sáng qua bề mặt rãnh thứ 2lớp phân cực thứ 2 (lớp lọc
đơn cực), ánh sáng không ló ra đợc khỏi lớp này(bị chặn lại hoàn toàn)
ta thấy 1 điểm tối trên màn hình LCD (Hình 3)
Để có 1 điểm sáng trên LCD: quá trình đi tơng tự nhng khác ở chỗ ánhsáng qua lớp Liquid Cristal không đợc phân cực nên ánh sáng bị xoắn 90
độ, nhờ thế mà đi qua đợc bề mặt rãnh thứ 2 (lớp lọc đơn cực) Ta thấy 1
điểm sáng trên LCD (Hình 3)
Trang 3H×nh 2 H×nh 3
Trang 4II/ Xét LCD cụ thể Hitachi HD44780
LCD hiển thị đợc 2 hàng mỗi hàng hiển thị đợc 16 ký tự (LCD có 14 chân)
Nhóm 1: (3 chân) Cấp nguồn VDD, VSS : cấp 5V, 0V
VEE: thay đổi điện áp để thay đổi độ tơng phảnNhóm 2: (8 chân) Vào ra thông tin với VĐK : Từ chân D0-D7
Nhóm 3 : (3 chân) Điều khiển việc vào ra thông tin : E,RS,R/W
E :(bật /tắt ) (cho phép/ không cho phép trao đổi thông tin với VĐK )
RS :(loại thông tin trao đổi)Thông tin trao đổi là lệnh điều khiển hay à
dữ liệu để hiển thị R/W : (hớng truyền của thông tin) đọc trạng thái từ LCD hay thông
tin do VĐK gửi vào LCD để hiển thị
Cụ thể tên gọi và mô tả chức năng các chân đợc tổng kết trong bảng sau:
Trang 5Interface Pin Connections
2 VDD Cấp nguồn Nối với dơng nguồn (+4.5V~+5.5V)
3 VEE Contrast điều chỉnh điện áp chân này sẽ tăng giảm độ tơng phản
của LCD cho nên nó thờng đợc nối với biến trở.
4 RS Chọn thanh ghi Nếu RS=0 : LCD nhận lệnh từ VĐKNếu RS=1: LCD nhận dữ liệu từ VĐK để hiển thị
5 RW Read/Write Chọn chức năng ghi/ đọc
RS=1 : chọn chức năng đọc dữ liệu từ LCD vào VĐK RS=0 : chọn chức năng ghi dữ liệu từ VĐKvào LCD để hiểnt thị
6 E Read Write enable
Cho phép/ ko cho phép LCD trao đổi thông tin với VĐK Chỉ khi E chuyển từ 10 thì tín hiệu ở các chân D0-D7 mới đợc đa vào LCD.
_ Từ những đặc điểm và chức năng đã đợc đề cập ở trên ta có thể đi tới
việc hình thành việc ghép nối của LCD với vi điều khiển nh sau:
Trang 6Nh trên hình minh hoạ ta có thể thấy các chân D0-D3 là đờng tín hiệu 2 chiều (để trao đổi thông tin Vi điều khiển và LCD) 3 chân điều khiển RS, R/W, E là chân đa tín hiệu điều khiển từ Vi điều khiển tới LCD nên nó chỉ
là đờng tín hiệu 1 chiều thôi
Vì chân Contrast (VEE) điều chỉnh độ tơng
phản của LCD nên ta cấp nguồn cho nó
thông qua biến trở (nh hình vẽ)
Trang 7có tới 96 mã ký tự ASCII, 64 mã ký tự tiếng Nhật, 32 ký tự đặc biệt khác Trong bộ điều khiển LCD cũng có một bộ RAM gọi là
CGRAM(character generator ram) trong bộ nhớ này lu 8 ký tự do ngời
dùng định nghĩa, các ký tự đầu tiên phải viết vào CGRAM trớc rồi sau đó mới hiển thị ra màn hiển thị đợc
2 Tập lệnh của LCD.
2a Khả năng hiển thị của LCD.
LCD có khả năng hiển thị rất linh hoạt
_ Thiết lập chế độ hiển thị :
Hiển thị trên 1 dòng hay cả 2 dòng
Chọn cỡ chữ hiển thị (5x7 hay5x10)
Chọn kiểu con trỏ màn hình (có/không gạch chân , có/không nhấp nháy)
_ Thiết lập kiểu trao đổi thông tin :
Trao đổi thông tin với Vi điều khiển dùng 4 bit hay 8 bít
_ Trình bày nội dung hiển thị
Trang 8Command
D7 D6 D5
Binary D4 D3 D2 D1 D0
1 / D:
S: 1=Increment*, 0=Decrement 1=Display shift on, 0=Off* R / L: 8 / 4: 1=Right shift, 0=Left shift 1=8-bit interface*, 0=4-bit interface D: 1=Display on, 0=Off* 2 / 1: 1=2 line mode, 0=1 line mode*
U: B: 1=Cursor underline on, 0=Off* 1=Cursor blink on, 0=Off* 10 / 7: 1=5x10 dot format, 0=5x7 dot format*
D / C: 1=Display shift, 0=Cursor move x = Don't care * = Initialization settings
Chú thích bảng lệnh:
1/D Địa chỉ con trỏ 1= tự động tăng; 0= tự động giảm
S Dịch con trỏ sau khi hiển thị Có (1); Không (0)
U Con trỏ đợc gạch chân Có (1); Không (0)
B Con trỏ nhấp nháy Có (1); Không (0)
R/L Chiều dịch chuyển Sang phải (1); Sang trái (0)
8/4 Chế độ trao đổi thông tin 8 bít (1); 4 bít (0)
Nhóm 2: Các lệnh điều khiển quá trình hiển thị (con trỏ và màn hình):
Display & Cursor Home , Display On/Off & Cursor , Display/Cursor Shift, Set CGRAM Address,
Nhóm 3: Lệnh kiểm tra trạng thái của LCD : Set Display Address
_ Trên đây là tập lệnh của LCD, các mã lệnh này sẽ đợc đa từ Vi điều
khiển vào LCD qua 8 đờng D0-D7 Muốn LCD nhận và hiểu các tín hiều
đ-a vào này là lệnh thì phải sử dụng đúng Nhóm 3 chân Điều khiển việc vào
Trang 9ra thông tin : E,RS,R/W Khi nào LCD hiểu tín hiệu đa vào là dữ liệu, khi nào là lệnh là do sự kết hợp của 3 chân này quyết định
Các chế độ vào ra thông tin của LCD (kết hợp các chân E, RS, R/W)
Có 2 chế độ đa thông tin vào LCD (từ vi điều khiển): thông tin đa vào làlệnh; Thông tin đa vào là dữ liệu để hiển thị
Có 1 chế độ đa thông tin ra khỏi LCD (vào vi điều khiển) : đọc trạngthái hiện hành của LCD cho Vi điều khiển biết
Điều khiển LCD là phải sử dụng linh hoạt các chế độ này Việc quyết
định dùng chế độ vào ra thông tin nào là do 3 chân E, RS,R/W của LCDquyết định
+ Chân E: quyết định việc khi nào chấp nhận thông tin ở các chân cònlại : đó là khi tín hiệu ở chân E chuyển mức từ 1 0
+ Chân RS quyết định việc nhận lệnh hay dữ liệu Lệnh (RS=0 ); Dữliệu (RS=1)
+ Chân R/W quyết định chiều truyền dữ liệu Vào LCD(R/W=0); Rakhỏi LCD (R/W=0)
Tổng hợp theo bảng sau:
Các chế độ vào/ra thông tin do RS, R/W quyết định
0 0 Lệnh gửi từ Vi điều khiển vào LCD
0 1 Đọc cờ bận (D7) và vị trí con trỏ (D0-D6) của LCD
1 0 Dữ liệu gửi từ Vi điều khiển vào LCD
Ví dụ muốn hiển thị 1 chữ cái A trên LCD ta phải lần lợt qua các chế độsau: Cấp nguồn Đọc trạng thái của LCD xem LCD đã sẵn sàng cha
Gửi lệnh từ Vi điều khiển vào LCD để thiết lập chế độ hiển thị Gửimã của ký tự cần hiển thị vào LCD
Trang 103 Các ứng dụng hiển thị trên LCD.
Phần này sẽ sử dụng tập lệnh của LCD đợc xét ở mục 2 để đạt đợc mục
đích hiển thị trên LCD kết hợp với sử dụng linh hoạt Nhóm các chân điều khiển vào ra thông tin E, RS, R/W
3a Thiết lập chế độ hiển thị cho LCD.
_ Phần này sẽ ứng dụng các lệnh :
Command
D7 D6 D5
Binary D4 D3 D2 D1 D0
_ Lệnh Display On/Of and Cursor khi đợc gửi tới LCD sẽ bật chế độ hiển thị của LCD và đồng thời cũng xác định kiểu con trỏ hiển thị Nếu
bít D =1 sẽ bật LCD (ngợc lại sẽ tắt LCD) Nếu bít U=1 con trỏ màn hình
sẽ đợc gạch chân (và ngợc lại ) Nếu bít B=1 thì con trỏ sẽ nhấp nháy (vàngợc lại)
Tốt nhất nên chọn kiểu con trỏ hiển thị là con trỏ nhấp nháy và có gạchchân để tiện quan sát Muốn vậy , ta sẽ gửi tới LCD mã lệnh sau :00001111($0F)
Cụ thể các thao tác nh sau :
RS để ở mức logic 0 (LCD hoạt động ở chế độ nhận lệnh), R/W = 0 (truyềndữ liệu từ vi điều khiểu vào LCD) các đờng vào D0-D7 đợc đặt là:
00001111 ($0F)) Sau cùng để chân E có 1 chuyển mức “1”về “0” ởmức cao (cho phép LCD nhận dữ liệu) Sau khi các thao tác này đợc thựchiện, 1 con trỏ nhấp nháy, có gạch chân sẽ xuất hiên ở góc bên trái mànhình LCD
_ Lệnh Function Set: Nếu muốn LCD hiển thị cả 2 dòng Ta có thể
dùng câu lệnh Function Set.Lệnh này còn xác định LCD trao đổi thông tinvới bên ngoài bằng 4 đờng hay 8 đờng dữ liệu, độ phân giải 5x10 hay 5x7.Nếu bít 8/4 =1 thì LCD sẽ dùng 8 bít D0-D7 để trao đổi thông tin với Vi
điều khiển (nếu =0 thì chỉ dùng 4 bit thôi) Nếu bít 2/1=1 thì LCD sẽ hiểnthị trên cả 2 dòng (nếu =0 thì chỉ hiển thị trên 1 dòng ) Nếu bít 10/7=1 mỗi
ký tự sẽ đợc hiển thị với cỡ chữ 5x10 (nếu =0 thì cỡ chữ 5x7)
Ví dụ : dùng 8 đờng dữ liệu, hiển thị 2 dòng, phân giải 5x7 thì ta sẽ gửitới LCD mã lệnh sau: 00111000 ($38)
Trang 11Thao tác cụ thể:
để RS =0, R/W=0 các đờng vào D0-D7 đợc đặt là: 00111000 ($38) chân E có 1 chuyển mức “1”về “0” ở mức cao (cho phép LCD nhận dữliệu)
_ Tăng độ tơng phản lên 1 chút vì hiện giờ ta đang hiển thị bằng cả 2dòng của LCD Tiếp theo đây , ta đã có thể hiển thị chữ trên LCD theo từngbớc sau: để chân RS =1 (ở mức cao) (Chuyển LCD từ chế độ nhận lệnhsang chế độ nhận ký tự ,ký hiệu), R/W=0 Sau đó ta chỉ việc đa tín hiệumã hoá của ký tự cần hiển thị vào đờng dữ liệu của LCD Cho chân E 1chuyển mức “1” về “0” Ví dụ : để hiển thị chữ A , ta truyền giá trị
01000001 ($47) (chính là mã ASCII của ký tự A) vào 8 đờng dữ liệu củaLCD Thậm chí ta có thê hiển thị 1 dãy ký tự nh sẽ xét ở phần sau đây
Kết luận thiết lập chế độ hiển thị ban đầu cho LCD bằng lệnh :
Display On/Of and Cursor : 00001111($0F)
3b Hiển thị ký tự trên LCD.
_ Đặt vấn đề:
Sau khi đã thiết lập cho LCD chế đọ hiển thị nh trên, ta sẽ hiển thị 1 vài
ký tự trên LCD Vậy LCD có thể hiển thị những ký tự nào và đa các ký tự
đó vào LCD nh thế nào? Phần này sẽ giải đáp câu hỏi đó
_ LCD có bộ nhớ ROM mã hoá các ký tự mà nó có thể hiển thị Tổng số
có 192 ký tự, khi cần chọn những ký tự này thì chỉ cần đặt mã nhị phân của
nó ở đầu vào, có tới 96 mã ký tự ASCII, 64 mã ký tự tiếng Nhật, 32 ký tự
đặc biệt khác
Mô tả bảng mã hoá ký tự chuẩn: 16 mã đầu tiên trong bảng (từ $00
-$0F) còn để trống để chứa các ký tự , biểu tợng do ngời dùng tự định nghĩa
16 ký tự tiếp theo (từ $10 - $1F) hiển thị các ký tự trống Các vị trí tiếp theohiển thị ký tự nh trên hình minh hoạ Từ $80 - $9F không sử dụng
_Chú ý rằng để hiển thị ký tự thì khi đa mã hoá của ký tự vào D0-D7 thìLCD phải để ở chế độ nhận dữ liệu (tứclà RS=1 R/W=0) Sau đó đặt mãnhị phân của ký tự đó vào D0-D7 tạo ra 1 chuyển mức “1” về “0 ” ởchân E Ngay sau đó ta sẽ thấy ký tự đó đợc hiển thị trên màn hình
Trang 133c Hiển thị ký tự tại 1 vị trí bất kỳ trên LCD.
_Phần này sẽ ứng dụng các lệnh:
Command
D7 D6 D5
Binary D4 D3 D2 D1 D0 Hex Set Display Address 1 A A A A A A A 80 to FF
_ Đặt vấn đề:
Khi LCD bắt đầu đợc hoạt động, sau khi đợc thiết lập kiểu hiển thị, ta sẽthấy trên LCD có 1 con trỏ ở đầu dòng đầu tiên (đây gọilà địa chỉ $00) Mỗikhi 1 ký tự, biểu tợng đợc hiển thị, con trỏ đó lại dịch sang phải 1 vị trí (tức
là sang địa chỉ tiếp theo $01, $02…) Sự tự động tăng địa chỉ của con trỏ nhvậy đã tạo sự thuận tiện trong hiển thị 1 chuỗi ký tự trên LCD vì ta khôngcần phải định địa chỉ hiển thị cho từng ký tự
Nhng nếu ta không muốn hiển thị chuỗi ký tự ở vị trí đầu của dòng đầutiên nữa, mà muốn hiển thị từ 1 vị trí bất kỳ , thì lúc này ta phải cho LCD
biết địa chỉ hiển thị thông qua lệnh Set Display Address
_ Lệnh Set Display Address : Lệnh này sẽ đặt con trỏ màn hình ở vị trí
(có toạ độ xác định bởi 0AAAAAAA) trên màn hình Sau đó ta có thể chohiển thị chữ tại vị trí mới của con trỏ
_ Các định địa chỉ trên màn hình LCD Ta biết rằng địa chỉ đặt con trỏ
có thể nhận giá trị trong khoảng $00-$7F tức là 128 địa chỉ Nhng trên thực
tế (do kích thờc của LCD )chỉ có 80 địa chỉ đợc xác định, 40 địa chỉ cho
dòng trên và 40 địa chỉ còn lại cho dòng dới Chỉ có LCD loại 40x2 hàng
mới dùng hết 80 địa chỉ đó, còn loại LCD nhỏ hơn (nh của ta đang xét )
cũng không dùng hết 80 địa chỉ đó Cách định địa chỉ hiển thị trên LCD
đ-ợc minh hoạ theo hình sau:
_ Vì Set Display Address là lệnh nên LCD phải làm việc ở chế độ lệnh
từ Vi điều khiển gửi vào LCD
_ Ví dụ : muốn hiển thị chữ A trên LCD tại vị trí số 10 của dòng trên
($0A hay 00001010) ta làm nh sau:
Đặt chân RS=0 , R/W=0 Đặt mã 10001010 vào chân D0-D7 Tạo cho chân E 1 chuyển mức “1” về “0” Sau bớc này, con trỏ sẽ ơ vị trí $0A Giờ hết chế độ nhận lệnh, ta thiết lập chế độ nhân dữ liệu : RS=1, R/W=0
Đặt mã hoá của ký tự A (00010100) vào D0-D7 Tạo cho E 1 chuyển trang thai “1” – “0” Ngay sau đó, ta sẽ thấy chữ A hiện tại vị trí số 10 của
dòng trên
Trang 14Tuỳ vào kích thớc của LCD mà số lợng ký tự hiển thị trên LDC bị hạn
chế Nhng hầu hết các LCD đều có chức năng dịch chuyển khối ký tự đợc
hiển thị sang trái hoặc sang phải Điều này giúp ích rất nhiều nếu nội dung
cần hiển thị lớn hơn cửa số LCD, và cũng làm cho hiển thị của LCD trở nên
sinh động hơn Muốn vậy , ta dùng lệnh Cursor/Display Shift
_ Lệnh Cursor/Display Shift Nếu D/C=1 LCD sẽ dịch chuyển màn hình
(nếu =0 LCD dịch chuyển con trỏ) Nếu R/L=1 LCD dịch chuyển sang phải
(nếu =0 thì dịch sang trái)
Trang 15_ Ví dụ: Sau đây ta xét cụ thể 1 ví dụ dịch chuyển 1 khối ký tự trênLCD:
Nhập lệnh vào LCD để thiết lập trạng thái ban đầu (hiển thị 1 dòng, con trỏnhấp nháp có gạch chân ) (lệnh Function Set, Display On/Off and Cursor), sau
đó truyền dữ liệu vào LCD , ở đây ta truyền cho LCD 26 ký tự từ A-Z(truyền mã từ 01000001 – 01011010 tức là từ $41-$5A)
Tuy nhiên trên LCD ta chỉ quan sát đợc 16 ký tự ở dòng trên , từ A-P.Những ký tự còn lại và con trỏ đều bị khuất về bên phải nên ta không quansát đợc
Giờ ta sẽ dùng lệnh Cursor/Display Shift để dịch khối 26 ký tự đó sangtrái để có thể nhìn đợc các ký tự còn lại và con trỏ Mỗi lần lệnh
Cursor/Display Shift đợc nhập vào LCD, khối 26 ký tự đó sẽ dịch đi 1 vị trí
Cứ liên tục nhập lệnh vào LCD, sau 1 thời gian ta sẽ nhìn đợc ký tự Z, sau
đó là cả con trỏ cũng đợc hiển thị Vẫn tiếp tục nhập lệnh dịch chuyển vào
ta lại thấy các ký tự đầu (A,B ) đợc hiển thị nh thể cả khối 26 ký tự đợcquay vòng quanh - đây chính là cách LCD thực hiên lệnh Cursor/Display Shift-
Vì khi nhận lệnh này LCD không thay đổi địa chỉ của từng ký tự , màdịch chuyển cả khối địa chỉ của LCD sang trái hay sang phải
_ Lệnh Cursor/Display Shiftngoài có tác dụng đối dịch chuyển đối với ký
tự nh đã trình bày ở trên , nó còn đợc dùng để dịch chuyển con trỏ hiển thị.Dùng lệnh này đối với con trỏ sẽ giúp ta chỉnh sửa nội dung tại 1 địa chỉbất kỳ trong của sổ hiển thị
Hex
Display & Cursor Home 0 0 0 0 0 0 1 x 02 or 03
_Đặt vấn đề: Sau khi thực hiện chữ chạy trên LCD, ta thấy rằng cả hệ
thống địa chỉ của màn hình LCD đã bị dịch chuyển Có cách nào nhanh
nhất để đa hệ thống địa chỉ đó trở về dạng chuẩn nh ban đầu không? Đây là
lúc ta dùng lệnh Display and Cursor Home, Clear Display
_ Lệnh Cursor Home : vừa có tác dụng đa con trỏ về địa chỉ đầu tiên
($00), vừa có tác dụng kéo địa chỉ 0 của khối địa chỉ của LCD về vị trígóctrái của dòng đàu tiên
_ Lệnh Clear Display cũng có 2 tác dụng trên của lệnh Cursor Home ,