1. Trang chủ
  2. » Giáo án - Bài giảng

tìm hiểu về cách điều khiển LCD 2x16

16 548 1
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 16,39 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tổng quát về LCD sơ đồ khối của HD44780 tập lệnh của LCD

Trang 1

— ~eg—3== 34 0 = a

DAI HOC DA NANG TRUONG DAI HOC BACH KHOA KHOA CONG NGHE THONG TIN

-=-C * 5) an

sử

BAO CAO THUC TAP

NHAN THUC

|

/

3

\

:

i

/

V

A

\

|

}

GVHD : TRUONG MINH HUY SVTH : NGUYEN ANH DUC -

LOP :09T1

ở T2 eas 4 - ` S ] att „Sỹ

Trang 2

Báo cáo thực tập nhận thức Đề tài 56

Đề tài sô 56: Tìm hiệu về cách điêu khiên LCD 2x16 Viêt chương trình đêm từ 1 đên 9 trên LCD bang vi

điêu khiên 8051

I Tống Quát Về LCD HD44780 o.s so 5c co csss se ssseseseseseesesesee 2

3) Sơ đồ khối của HD4478): -o 5-55 5s cssEsESSs 2S 2s esEsEsessesssesee 3

II — Chương trình đếm từ 0 đến 9 sử dụng VDK 8051: 10

Trang 3

Báo cáo thực tập nhận thức Dé tai 56

I Tổng Quát Về LCD HD44780

Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên hình

1 là loại LCD thông dụng

TIH=HHF:F

nee OM | ee) od

Hinh 1: Hinh dang cua loai LCD thong dung

Khi san xuat LCD, nha san xuat da tich hop chip diéu khién (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiêp cân thiệt Các chân này được đánh sô thứ tự

và đặt tên như hình 2 :

VSS VOD VEE RS RW EN DO D1 D2 D3 D4 DS DE D7 AK

TIHSHHREP

=s2lharacterLeht

Hình 2: Sơ đô chân của LCD

Trang 4

Báo cáo thực tập nhận thức Dé tai 56

Chan Ký hiệu VO Mô tả

2 Vec - Dương nguồn 5v

3 Ver 3 Cập nguôn điêu khiên phản

thanh dữ liệu

6 E lO Cho phép

9 DB2 lO Các bít dữ liệu

II DB4 L/O Các bít dữ liệu

12 DB5 VO Các bít dữ liệu

Hình 3 : Chic nang các chân của LCD

3) Sơ đồ khôi của HD44780:

Chíp HD447&0 có 2 thanh ghi § bịt quan trọng : Thanh ghi lệnh IR (Instructor Register) va thanh ghi di ligu DR (Data Register)

- Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám

đường bus DB0-DB7 Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR Nghĩa

là, khi ta nạp vào thanh ghi IR một chuỗi 8 bít, chíp HD44780 sẽ tra bảng mã lệnh

tại địa chỉ mà IR cung cấp và thực hiện lệnh đó

VD : Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7 DB0) Lệnh “hiên thị màn hình và con trỏ” có mã lệnh là 00001110

- Thanh ghi DR : Thanh ghi DR dùng để chứa đữ liệu 8 bit để ghi vào vùng RAM

DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa đữ liệu từ 2 vùng RAM

này gởi ra cho MPU (ở chế độ đọc) Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội bên trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng

RAM nội của HD44780 sẽ được chuyên ra DR để truyền cho MPU

=> Bằng cách điều khiến chân RS và R/W chúng ta có thể chuyển qua lại giữ 2 thanh ghi này khi giao tiêp với MPU Bảng sau đây tóm tắt lại các thiệt lập đôi với hai chân RS và R/W theo mục đích giao tiêp

Trang 5

Báo cáo thực tập nhận thức Dé tai 56

0 0 Ghi vào thanh ghi IR để ra lệnh cho LCD

0 1 Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6

b, — Cờ báo bận BF: (Busy Flag)

Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng thời gian để hoàn tất Khi đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có

thiết lập RS=0, R/W=1) lên để báo cho MPU biết nó đang “bận” Dĩ nhiên, khi xong

việc, nó sẽ đặt cờ BE lại mức 0

Nhu trong sơ đồ khối, thanh ghi IR không trực tiếp kết nỗi với vùng RAM (DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC Bộ đếm này lại nối với 2

vùng RAM theo kiểu rẽ nhánh Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông

tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã

được bao hàm trong mã lệnh

Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị

và nội dung của AC được xuât ra cho MPU thông qua DB0-DB6 khi có thiệt lập RS=0 va R/W=1 (xem bang tom tat RS - R/W)

Lưu ý: Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh mà

được cập nhật sau khi cờ BF lên mức cao (not busy), cho nên khi lập trình hiên thị,

bạn phải delay một khoảng tADD khoảng 4uS-5uS (ngay sau khi BF=1) trước khi nap

dữ liệu mới

d, Vung RAM hién thi DDRAM : (Display Data RAM)

Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM 1a một ô kí tự trên màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sé hiển thị tại vị trí tương ứng trên màn hình một kí tự có mã 8 bit mà bạn đã cung cấp

Hình sau đây sẽ trình bày rõ hơn mỗi liên hệ này :

Trang 6

Báo cáo thực tập nhận thức Dé tai 56

Display position

(hexadecimal)

Display

position 12 3 4 5 aot Gi

address lise "II =lÍ —~

(hexadecimail | 40 | 41 | 42 | 43| 44 |: -:- ri: | 66,67

Hinh 4: Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD

Vung RAM nay có 80x8§ bịt nhớ, nghĩa là chứa được 80 kí tự mã 8 bịt Những vùng RAM còn lại không dùng cho hiên thị có thê dùng như vùng RAM đa mục đích Lưu ý là để truy cập vào DDRAM, ta phải cung cấp địa chỉ cho AC theo mã

HEX

Vung ROM nay dung dé chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí

tự, và định địa chi bang 8 bit Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mau kí tự

kiêu 5x10 (tông cộng là 240 thay vì 2^8 = 256 mâu kí tự) Người dùng không thê thay

đôi vùng ROM này

Table 2 Example of Corrnespendence between EPROM Address Data and Character Potters

(5š - % [hota)

La

1 { úũ

+——

1 1 1 1 Ể 1

0 [Tlo o off

Dl

E

Hinh 5: Mối liên hệ giữa địa chỉ của ROM và đữ liệu tạo mau ki tu

Trang 7

Báo cáo thực tập nhận thức Đề tài 56

Như vậy, dé co thé ghi vao vi tri thir x trén man hinh một kí tự y nào đó, người dùng phải ghi vào vùng DDRAM tại địa chỉ x (xem bảng môi liên hệ giữa DDRAM

và vị trí hiên thị) một chuôi mã kí tự 8 bit trên CGROM Chú ý là trong bảng mã kí tự trong CGROM ở hình bên dưới có mã ROM A00

Như trên bảng mã kí tự, nhà sản xuất dành vùng cé dia chi byte cao 14 0000 dé

người dùng có thê tạo các mâu kí tự đô họa riêng Tuy nhiên dung lượng vùng này Tât

hạn chê: Ta chỉ có thê tao 8 kí tự loại 5x8 điềm ảnh, hoặc 4 kí tự loại 5x10 điềm ảnh

Đề ghi vào CGRAM, hãy xem hình 6 bên dưới

Table 5 Relationship between COLRAM Addresses, Character Codes (DDRAM) and Characte

Patterns (CC; RAS Data)

For 5 « 8 dot character patterns

Character Codes — | : il Character Patterns

' 86543210 5B 4 3 2 1 Ũ 7 6 B54 3210

[ 1ï 1 1 TẠO

[ 1 ) OF

[ I1 1 3 | g a et f1

f ‡ :o|lilo[Tflo

ee T1 |

id

1

Notes: 1 Character code bits 0 to 2 correspond to CGRAM address bits 3 lo 5 (3 bits: 8 types

GRAM address bits 0 lo 2 designate the character pattem ling position The fh line is the

cursin position and its Gispay is formed by ñä kKx]ieäil í{ YR with ihe cursor

Maintain the Sih line dala, conresponding to the cursor display position, al 0 as the cursor display

It the Bin line data is 1, 1 Bits will bght up the 81h line regardless of the cursor presence

Character pattern row positions correspond to CGRAM data bits 0 to 4 (bit 4 being at the len)

4 As shown Table 5, CORAM character pattiens are selected when character code iets 4 to 7 are

sedtocled by either character code ODH or OSH

5 1 for CGRAM data corresponds to display selection and 0 to nan-selection

= indicates no affect

Hinh 6: Mỗi liên hệ giữa địa chỉ của CGRAM, đữ liệu của CGRAM, và mã kí tự

4) — Tập lệnh của LCD:

Trước khi tìm hiểu tập lệnh của LCD, sau đây là một vài chú ý khi giao tiếp

voi LCD:

Trang 8

Báo cáo thực tập nhận thức Đề tài 56

— Tuy trong sơ đồ khối của LCD có nhiều khối khác nhau, nhưng khi lập trình

điêu khiên LCD ta chỉ có thê tác động trực tiệp được vào 2 thanh ghi DR và IR thông qua các chân DBx, và ta phải thiệt lập chân RS, R/W phù hợp đề chuyên qua lại giữ 2 thanh ghi này (xem bảng 2)

- Với mỗi lệnh, LCD cần một khoảng thời gian để hoàn tất, thời gian này có thể khá lâu đôi với tôc độ của MPU, nên ta cần kiêm tra cờ BE hoặc đợi (delay) cho LCD thực thi xong lệnh hiện hành mới có thê ra lệnh tiêp theo

— Địa chỉ của RAM (AC) sẽ tự động táng (giảm) | don vi, mỗi khi có lệnh ghi vào RAM (Điêu này giúp chương trình gọn hơn)

- Các lệnh của LCD có thể chia thành 4 nhóm như sau :

* Các lệnh về kiểu hiển thị VD : Kiểu hiển thị (I hàng /2 hàng), chiêu dài

* Chi dinh dia chi RAM nội

* Nhóm lệnh truyền đữ liệu trong RAM nội

Mã lệnh (HEX) Chức năng của lệnh

1 Xóa mản hình hiển thị

2 Trở về đầu dòng

6 Dịch con trỏ sang phải

C Bật hiền thị, tắt con trỏ

E Bật hiền thị, nhập nháy con trõ

14 Dịch vị trí con trõ sang phải

18 Dịch toàn bộ hiên thị sang trải 1C Dịch toàn bộ hiền thị sang phải

co Đưa con trỏ vê đầu dòng thứ 2

Hình 7: Tập lệnh của LCD

3) Cách gửi dữ liệu và thực thi lệnh từ VDK:

Ở đây chúng ta sử dụng chế độ giao tiếp mặc định của LCD là 8 bit

Ta nối mạch như trong hình sau:

- Chân D0 D7 nối voi Port!

- Chân E nỗi với P2.2

- Chân RS ni với P2.I

- Chân R/W nối với P2.0

Trang 9

Báo cáo thực tập nhận thức Dé tai 56

Hinh8: Sơ đồ mạch

=

80) On) a) rr] Ny) Cy ST 25 812

FH Cy a oe EH

VDD Œ

XI | + Al TTT U4

[| + 138 3 x Tal P0.0/aDd

3g

12MHz F0.2/aba |_S“

18 | xTAlz P0.3japa |_#E

P0.5iaDs +24

P0.8/epg | #5

_ ea P0.7/aD7 |“

P2.0„a |_—21 P2140 |-22 P2.2/ain |—2Š

245 _| BSEN P2.3/a11 24

20! ale Fz.4ialz | #5

21 ea P2.8/aA13 2E

P2.7/Ad5 2S

1 lpịn P3.0/Rxp |1

2 pas P3.1/Tzp | J1 2) p42 P32/NTn |_—12

3 P13 P3 3/NTT | TS P14 P3.4T10 |_12 8_ P12 P3.8/T1 | 15

2 pig P3.8/WR | 1S

&_| paz p3.z/RD [12

ATBBEEI

Bước đầu tiên chúng ta phải thiết lập trạng thái ban đầu cho LCD tức là phải báo cho nó là ta dang dùng chê độ 4 chân, dot 8*5 rôi sau đó mới gủi dữ liệu hiên thị hay lệnh điêu khiên lên lcd

_ Trước khi đề cập đến cách thiết lập trạng thái ban đầu cho LCD chúng ta dé cap dén cach doc va ghi lén LCD Nhin vao bang 1 thay muc dich giao tiép cua chan

RS va RW Khi ghi thi ta CLR RW (RW=0) con khi doc thi SET RW (RW=1)

MOV PILA ; CHEP THANH GHIA DEN PORTI : CLR RS : DAT RS = 0 DE GUI LENH

| CLR RW -DAT RW =0 DE GUI LENH

Trang 10

Bao cao thực ap nhan thức _Đè dài 56

SEIB EN ;EN=1=>0CHOXUNGCAO _

;NHAN LENH TIEP THEO DUOC CHUA?

RET

b, — Gbi giá trị vào thanh ghi DR dé hién thi lén LCD:

Code:

(GHILDLIEU:

MOV A,RO MOV P1,A; XUAT DU LIEU SETB RS ; DAT RS=1 CHO XUAT DU LIEU CLR RW ; DAT RW=0 GHI DU LIEU RA LCD SETB EN ; EN = 1 => 0 CHO XUNG CAO CLR EN _ ;XUONG THAP => CHE DO GHI

ACALL WAIT_LCD _ ; KIEM TRA CO BAN DE XEM LCD DA | SAN ;SANG HIEN THI CHUA?

RET

Ở 2 chương trình trên có dùng chương trình con WAIT_LCD Vì khi thực hiện các hoạt động bên trong chip mạch nội bên trong cần một khoảng thời gian để hoàn tất Khi đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có thiết lập RS=0, R/W=1) lên

để báo cho MPU biết nó đang “bận” và cần khoảng 4uS-5uS để có thể nạp dữ liệu

mới Do đó có 2 cách đề kiểm tra xem LCD có thê nhận dữ liệu mới tiếp hay chưa, đó

là ta cho delay khoảng 4uS-5uS giữa các lần nạp dữ liệu và kiểm tra cờ bận D7 Ở

trong chương trình ta đi kiểm tra cờ bận D7:

Code:

SETB P1.7 ; LAY P1.7 LAM CONG VAO CLR RS_ ; DAT RS=0 DE TRUY CAP THANH GHI LENH SETB RW ; DAT RW=1] DE DOC THANH GHI LENH BACK:

CLR EN;

SETB EN;

Trang 11

Báo cáo thực tập nhận thức Dé tai 56

JB P1.7,BACK; CHO DEN KHI BUSY FLAG=O _

| RET

H Chương trình đếm từ 0 đến 9 sử dụng VDK 8051:

Ta có sơ đồ thuật toán như sau:

Delay giữa các lần hiển thị ta sử dụng bộ định thời timer0 chế độ 1

Khởi tạo LCD

——

ee

=

R0 =4§h

L“ HIEN THI RO (DELAY 1S)

XOA MAN HINH

VA GIU NGUYEN

VỊ TRÍ CON TRO

RO==57H?

Trang 12

Báo cáo thực tập nhận thức Đề tài 56

TH ?Ÿ =—<“—s———— ®

RETI

RETI

ORG IBH ;timer I interrupt

RETI

KHOL TAO: ;set up control registers

MOV TCON,#00H

Trang 13

Báo cáo thực tập nhận thức Dé tai 56

MOV TMOD,#00000001B _ ;timer 0 che do 1 MOV PSW,#00H

RET

START:

GHI

SJMP $

KHOI_TAO_LCD:

ACALL GHI_LENH

RET

Trang 14

Báo cáo thực tập nhận thức Dé tai 56

; CT CON CHAY TU 0 DEN 9 VA HIEN THI RA LCD

DEM 10:

LOOPI0:

LOOP_XUAT:

;THI RA LCD

DE HIEN THI SO TIEP THEO

TANG_RO:

0

RET

;CT GHI LENH

;PORTI1

Trang 15

Báo cáo thực tập nhận thức Đề tài 56

LCALL WAITICD @Ð; KIEM TRA CO BAN DE

-LCD CO THE NHAN LENH TIEP THEO DUOCCHUA?

WAIT_LCD:

GHI LENH BACK:

RET

GHI_DLIEU:

MOV A,RO MOV PIA : XUAT DU LIEU SETB RS : DAT RS=1 CHO XUAT DU LIEU

CLR RW ; DAT RW=0 GHI DU LIEU RA LCD

CLR EN

ACALL WAIT_LCD ; KIEM TRA CO BAN DE -XEM LCD DA SAN SANG HIEN THI CHUA?

Ngày đăng: 11/03/2014, 12:54

TỪ KHÓA LIÊN QUAN

w