MỤC LỤC .
CHƯƠNG I : Tìm hiểu yêu cầu đề tài
chương 1.1: Giới thiệu về at89c51
chương 1.1.1: Giới thiệu họ msc-51
chương 1.1.2: Sơ đồ chân của at89c51
chương 1.1.3: Sơ đồ khối của at89c51
chương 1.1.4: Chức năng các chân của at89c51
chương 1.1.5: Tổ chức của chip 8051
chương 1.1.6: Bộ nhớ chương trình (rom)
chương 1.2: Giới thiệu về lcd (text lcd)
chương 1.2.1: Hình ảnh lcd
chương 1.2.2: Giới thiệu sơ lược về lcd
chương 1.2.3: Sơ đồ, chức năng liên kết các chân
của lcd
chương 1.2.4: Giới thiệu sơ lược về hd44780u
chương 1.3: Giới thiệu về bàn phím giao tiếp 4×4
chương 1.3.1: Hình ảnh bàn phím
chương 1.3.2: Thuật toán quét phím
CHƯƠNG II : Thực hiện mô hình đồ án
chương 2.1: Sơ đồ mạch nguyên lý
chương 2.2: Mạch layout
chương 2.3: Lưu đồ giải thuật
CHÚ THÍCH : TÀI LIỆU TRÊN GỒM FILE PDF + FILE WORD
88 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 6089 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Giao tiếp bàn phím hiển thị LCD dùng 89C51, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của
các bus dữ liệu và bus địa chỉ.
a/ port 0: Port 0 (P0.0 – P0.7) là port có hai chức năng ở các chân 32-39 của
89C51. trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng, nó có chức năng như
các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa
bus địa chỉ và bus dữ liệu
Lưu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các điện
trở kéo lên bên ngoài.
- Khi lập trình cho ROM trong chip thì Port 0 đóng vai trò là ngõ vào của dữ
liệu (D0 – D7).
b/.Port 1: (P1.0 – P1.7) Port 1 là port IO trên các chân 1-8. các chân được kí hiệu
p1.0, p1.1, p1.2, có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. port 1
không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị
bên ngoài.
c/.Port 2: (P2.0 – P2.7) Port 2 là 1 port có tác dụng kép trên các chân 21-28 được
dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị
10
ĐỒ ÁN 1
ùng bộ nhớ mở rộng.
dù
TRẦN NGỌC L
LÝ_070642D_07DD2D
d//.Port 3: (P
P3.0 – P3.7
7) Port 3 làà port có táác dụng kép
p trên các cchân 10-17
7. các chân
của port này
y có nhiều c
chức năng
- Các tín
biệt.
n hiệu điều khiển _ có
ó sử dụng b ộ nhớ ngo
oài hoặc cáác chức năn
đặc
- Khi lập
hi ệu điều khhiển
ROM tron
ng chip thì Port 3 đón
ng vai trò làà ngõ vào của các tín
- các cônng dụng ch
bản sau:
huyển đổi ccó liên hệ với các đặc tính đặt biệt của 89C
C51 như ở
- Chức năng của các
c chân Portt 3:
11
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
R Cácc ngõ tín hiệu điều kh
a/ Ngõ tínn hiệu PSEEN:
hiển:
TRẦN NGỌC L
LÝ_070642D_07DD2D
PSEN là tíín hiêu ngõ
- P
õ ra ở chân 29 có tác d ụng cho p
phép đọc bộ nhớ chươ ng trình
mở rộng thư ng được nói đén ch
hân OE của
ho phép đọc các byte mở rộng .
PSEN ở mức thấp tro
- P
ong thời giaan Microco
ontroller 8951 lấy lệnnh. Các mã
ã lệnh của
chương trình
h được đọc ừ Eprom
m qua bus d ữ liệu và đ
c chốt t ừ thanh gh
hi lệnh
bêên trong 89
951 để giải
ệnh. K
Khi 8951 tthi hành ch ương trìnhh trong ROM nội
SEN sẽ ở mức logic 1.
PS
b/ Ngõ tínn hiệu điều khiển ALE
E(Address latch Enab
ble):
Khi 89C51
- K
1 truy xuất bộ nhớ bêên ngoài, po
ort 0 có chức năng làà bus địa chỉ và bus
dữ liệu do đó phải tách
h các đườn
ng dữ liệu v
và địa chỉ. T
Tín hiệu raa ALE ở ch
hân thứ 30
ùng làm tínn hiệu điều
dù
húng với ICC chốt.
ch
ển để g ải đa hợp
đường địa chỉ v
và dữ liệu k
khi kết nối
Tín hiệu raa ở chân AL
- T
LE là một xung trong
g khoảng th ời gian po
ort 0 đóng vai trò là
địa chỉ thấp nên chốt đ a chỉ hoàn
n toàn tự đ ng.
- Bộ dao độn được tícch hợp bên
n trong 89C
C51, khi sử dụng 89C
C51 người tthiết kế
chỉ cần kết nối thêm th ạch anh vàà các tụ như hình vẽ ttrong sơ đồ. Tần số thạch anh
thường sử dụng cho 89
9C51 là 12
2Mhz.
f
OSC
c.
Lưu ý: fAL
LE =6
vn
→ có thể dùng làm
m xung cloc
ck cho các mạch khác
12
htttp://www.eebook.edu.v
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
- Khi lệnh lấy dữ liệu từ RAM ngoài (MOVX) được thực hiện thì 1 xung
ALE bị bỏ qua.
c/ Chân 40 (vcc) được nối lên nguồn.các xung tín hiệu ALE có tốc độ bằng 1/6
lần tần số dao động trên chíp và có thể được dùng làm tín hiệu clock cho các phần
khác của hệ thống. chân ALE được dùng làm ngõ vào xung lập trình cho Eprom
trong 89C51.
- GND (chân 20)
- Chức năng:
• Cung cấp nguồn điện cho chip 8051 hoạt động.
• Vcc = +5V ± 10%.
• GND = 0V
d/ Ngõ tín hiệu EA\(External Access):
- Tín hiệu vào EA\ ở chân 31 thường được mất lên mức 1 hoặc mức 0. nếu ở mức 1,
89C51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8KB. Nếu ở
mức 0, AT89c51 sẽ thi hành chương trình từ bộ nhớ mở rộng. chân EA\ được lấy
làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89c51.
EA\ = 0 → Chip 8051 sử dụng chương trình của ROM ngoài.
EA\ = 1 →Chip 8051 sử dụng chương trình của ROM trong.
- Khi lập trình cho ROM trong chip thì chân EA đóng vai trò là ngõ vào của
điện áp lập trình (Vpp = 12V/89xx, 21V/80xx,87xx).
Lưu ý: Chân EA\ luôn luôn phải được nối lên Vcc (sử dụng chương trình của ROM
trong) hoặc xuống Vss (sử dụng chương trình của ROM ngoài)
e/ Ngõ tín hiệu RST (Reset):
- Ngõ vào RST ở chân 9 là ngõ vào reset của 89C51. khi ngõ vào tín hiệu này đưa
lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích
hợp để khởi động hệ thống. khi cấp điện mạch tự động Reset.
RST = 0 → Chip 8051 hoạt động bình thường.
RST = 1 → Chip 8051 được thiết lặp lại trạng thái ban đầu.
Lưu ý:
13
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
tR
: thời g
gian reset
TO
: chu kỳ dao động
TM
: ch
hu kỳ máy
f/Các
c ngõ vào bộ dao động
g X1, X2 ((Chân XTA
AL1, XTAL
L2): nguồn
- XTA
AL (Crystaal): tinh thể thạch anh
h, chân số 18-19.
- Chức năng:
• Dùnng để nối v ới thạch an
nh hoặc mạch dao độ ng tạo xunng clock bê
ên ngoài,
ung cấp tín
cu
n hiệu xung
g clock cho
o chip hoạt động.
• XTA
AL1 → ng
gõ vào mạcch tạo xung
g clock tron
ng chip.
• XTA
Lưu ý:
AL2 → ng
gõ ra mạch tạo xung cclock trong
g chip.
fT: tần số d
danh định
fOSC: tần số mạch dao động trên
n chip
fC
: tần số mạch dao động bên n
ngoài
1.1.5.
TỔ CHỨC CỦA C
CHIP 8051:
- Bộ vi xử lý có
ó không giaan nhớ chu
ung cho cả chương trìình và dữ liệu
14
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
→ chương ttrình và dữ liệu nằm cchung trên RAM.
- Bộ vii điều khiển có không
g gian nhớ riêng cho dữ liệu và chương trìình.
→chương trrình và dữ liệu nằm riiêng trên R
R Tổ c ức bộ nhớ của chipp 8051:
vn
htttp://www.eebook.edu.v
ROM và RA
AM.
15
ĐỒ ÁN 1
htttp://www.eebook.edu.vvn
TRẦN NGỌC LLÝ_070642D_07DD2D
16
ĐỒ ÁN 1
R Tổ c ức nhớ trrong chip 8
8051:
TRẦN NGỌC L
LÝ_070642D_07DD2D
1.1.6.
BỘ NHỚ CHƯƠN
NG TRÌNH
H (ROM)
- Dùn
ng để lưu tr ữ chương trình điều khiển cho chip 8051 hoạt động
- Chiip 8051 có 4 KB ROM
R Bộ n ớ dữ liệu
M trong, địa chỉ truy xuất: 000H
H – FFFH.
- Dùn
ng để lưu tr ữ các dữ lliệu.
.
- Chiip 8051 có 128 byte R
RAM trong
g, địa chỉ trruy xuất: 000H – 7FH.
- RAM
M trong của chip 805
51 được ch
hia ra:
• RAM đa chức năng:
• RAM định địa
vn
htttp://www.eebook.edu.v
ỉ bit:
17
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
→ cho phép
p xử lý từng
g bit dữ liệu riêng lẻ m
mà không ảnh hưởng
g đến các b
bit khác
trong cả bytte.
• Cácc dãy thanh
h ghi:
.
→ cho phép
p truy xuất dữ liệu nhaanh, lệnh ttruy xuất đơ n giản vàà ngắn gọn.
+ Lưu ý: Ở cchế độ mặc định thì d
dãy thanh g
ghi tích cực (đang đư
ược sử
dụng) là dãy
y 0 và các tthanh ghi ttrong dãy lần lượt có tên là R0 -- R7. Có
thể thay đổi dãy tích cực (xem phần thanh g
ghi PSW).
A
ột số tthanh ghi c
R Thaanh ghi A:
R Thaanh ghi B:
chức năng đ c biệt:
18
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
- Phéép nhân 2 số 8 bit khô
TRẦN NGỌC L
ông dấu _ kết quả là s ố 16 bit
LÝ_070642D_07DD2D
• Bytte cao _ chứa vào than
nh ghi B
• Bytte thấp _ chứa vào thaanh ghi A
- Phé
ép chia 2 số 8 bit _ thư
ương số vàà số dư là số 8 bit
A
• Thư ng số _ c
chứa vào th
hanh ghi A
• Số dư _ chứa vào thanh ghi B
vn
htttp://www.eebook.edu.v
19
ĐỒ ÁN 1
R Thaanh ghi định
h thời:
TRẦN NGỌC LLÝ_070642D_07DD2D
R Sơ lược về hoạt động củaa bộ định tthời:
vn
htttp://www.eebook.edu.v
20
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
• Tần
ố: tần số xung ngõ ra bằng tần
ố xung n
ngõ vào ch
hia cho 2N.
• Giá
á trị: giá trị nhị phân ttrong các F
FF của bộ đ nh thời làà số đếm của các
ung clock ttại ngõ vào
xu
o từ khi bộ định thời b ắt đầu đếm
• Tràn
n: xảy ra h ện tượng tràn (cờ trà
àn = 1) khii số đếm chhuyển từ giiá trị lớn
nh ất xuống g
giá trị nhỏ nhất của bộ định thời.
V
ụ: Bộ định thời 16
6 bit (chứa 16 FF bên
n trong).
*T ần số:
Giá trị: số đếm nằm ttrong khoản
*G
ng 0 (0000
).
0H) _ 65535 (FFFFH)
Tràn: cờ tràn bằng 1 k
*T
khi số đếm
m từ FFFFH
H chuyển x
xuống 00000H.
H
họa đơn giản hoạt độ
vn
ộng của bộ định thời 3
3 bit:
21
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
• Ứng
g dụng định thời gian
n (TIMER)): Bộ định tthời được lập trình sa
ao cho nó
sẽ tràn sau m ột khoảng
bằng 1.
g thời gian
n đã qui địn
đó
ờ tràn của bộ định
h thời sẽ
• Ứng
g dụng đếm
ự kiện ((COUNTER): để xác định số lần
n xuất hiện
ủa một
kíích thích từ bên ngoà
xu ống 0).
ài tới 1 chân
n của chip 8051 (kích
D):
h thích chu
uyển trạng tthái từ 1
R Thaanh ghi chế độ định thời (TMOD
• Tha
anh ghi TM
MOD (Timeer Mode R
Register) ch ứa các bit dùng để th ết lập
chế độ hoạt động cho b ộ định thời 0 và bộ đ nh thời 1
• Thaanh ghi TMMOD được nạp giá trị một lần tại thời điểm
m bắt đầu của
chương trình
h để qui định chế độ h
hoạt động của các bộ định thời..
• Cấu
h ghi TMO
vn
OD:
22
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
R Thaanh ghi điều
ển địn
ời (TC
CON):
• Thaanh ghi TC
CON (Time
er Control R
Register) chứa các bit
it dùng để điều khiển
vàà báo trạng
g thái của bộ định thời 0 và bộ đ nh thời 1.
N:
• Cấu
h ghi TCON
vn
23
htttp://www.eebook.edu.v
ĐỒ ÁN 1
R Chế độ định th ời 13bit (C
C ế độ 0 (MMode 0):
• Chế độ định th ời 13 bit.
Chế độ 0):
TRẦN NGỌC L
LÝ_070642D_07DD2D
• Sử dụng 8 bit của thanh ghi THx v
bộ định thời
và 5 bit thấp
ủa thanh
h ghi TLx để tạo ra
• Số đ m: 0000H → 1FFF
FH nghĩa là
à từ 0 → 8191. Thời g
gian định tthời: từ
0 → (213–1))TTimer nghĩa là từ 0 → 8191TTim
mer.
• Tha
anh ghi TH
Hx và TLx cchứa giá trrị của bộ định thời.
24
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
• Khii có xung c
Hx/TLx.
TH
clock, bộ định thời bắt đầu đếm lên từ giá trị chứa tro
ong
• Xảy
ờ tràn TFx
x=1) khi số đếm chuy ển từ 1FFF
FH sang 00
000H và
vi ệc đếm sẽ tiếp tục đế m lên từ g
giá trị 0000
0H.
Chế đ
định thời 16bit (Chhế độ 1):
C ế độ 1 (M
Mode 1):
• Chế độ định th ời 16 bit.
• Sử dụng thanh
h ghi THx và TLx để tạo ra bộ đ nh thời.
• Số đ m: 0000H → FFFF
FH nghĩa là
à từ 0 → 65
5535. Thờii gian định
h thời:
từ 0 → (216– Timer ng
ghĩa là từ 0 → 65535
5TTimer.
• Thaanh ghi TH
Hx và TLx cchứa giá trrị của bộ định thời.
• Khii có xung c
Hx/TLx.
TH
clock, bộ định thời bắt đầu đếm lên từ giá trị chứa tro
ong
• Xảy
ờ tràn TFx
x=1) khi số đếm chuy ển từ FFFF
FH sang 00
000H và
vi ệc đếm sẽ tiếp tục đế m lên từ g
giá trị 0000
0H.
R Chế độ định th ời 8bit tự nạp lại (Ch ế độ 2):
C ế độ 2 (M
Mode 2):
• Chế độ định th ời 8 bit tự nạp lại.
• Sử dụng thanh
h ghi TLx đ
để tạo ra bộ định thời
• Số đ m: 00H → FFH ng
ghĩa là từ 0 → 255. Thời gian địịnh thời:
từ 0 → (28–1)TTimer ng
ghĩa là từ 0 → 255TTiimer.
25
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
• Tha
anh ghi TLx chứa giáá trị của bộ định thời v
và thanh gh
hi THx chứa giá trị
sẽ được dùn
ng để nạp lại cho bộ đ
định thời.
• Khii có xung c
clock, bộ định thời bắt đầu đếm lên từ giá trị chứa tro
ong TLx.
• Xảy
ờ tràn TFx
x=1) khi số đếm chuy ển từ FFH
H sang 00H và việc
đếm sẽ tiếp tục đếm lê
ên từ giá trị chứa tron
ng thanh gh
hi THx.
R Chế độ định th ời chia sẻ (Chế độ 3):
C ế độ 3 (M
Mode 3) là:
• Chế độ định th ời chia sẻ.
R Bộ đ nh thời 0 được chiaa ra:
+/ Bộ định
+
h thời 8 bit thứ I:
→ Sử dụng than
nh ghi TL0
0 để tạo ra bộ định thời.
→ Số đếm: 00H → FFH n
nghĩa là từ 0 → 255. Thời gian đ
định thời:
từ 0 → (28–1)TTimer ng
ghĩa là từ 0 → 255TTiimer .
→ Th
hanh ghi T
TL0 chứa giiá trị của bộ định thời.
.
→ Kh
hi có xung
g clock, bộ định thời b ắt đầu đếm
ừ giiá trị chứa ttrong TL0.
→ Xảy ra tràn ((cờ tràn TF
F0=1) khi ssố đếm chu
uyển từ FFH
H sang 00H
H và việc
đếm sẽ tiếp tục đếm lê
ên từ giá trị 00H.
+// Bộ định tthời 8 bit th ứ II:
→ Sử dụng thannh ghi TH0
0 để tạo ra bộ định th ời.
→ Số đếm: 00H → FFH ng
ghĩa là từ 0 → 255. T ời gian đ
định thời: t ừ 0 →
(28–1)TTimernghĩa là từ 0 → 255TTimer.
→ Th
hanh ghi T
TH0 chứa g
giá trị của bộ định thời.
26
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
H0.
TH
→ Kh
hi có xung
g clock, bộ định thời b ắt đầu đếm
ừ giiá trị chứa ttrong
→ Xảy ra tràn ((cờ tràn TF
F1=1) khi ssố đếm chu
uyển từ FFH
H sang 00H
H và việc
đếm sẽ tiếp tục đếm lê
+// Bộ định tthời 1:
ên từ giá trị 00H.
- Là b ộ định thời 16 bit.
- Khôông hoạt độ ng ở chế đ
độ 0, 1, 2).
độ 3 nhưng
g có thể hoạt động cáác chế độ k
khác (chế
- Khôông có cờ b
báo tràn như các bộ đ nh thời kh
hác.
a từ:
ra
R Ngu ồn xung clock cho bộ định thời: Nguồn x
xung cho bộ định thời được tạo
n.
• Mạch dao động trên chip → dù
ùng cho tính
h năng định thời gian
Xung kích
• X
h thích bên ngoài → d
dùng cho tíính năng đế m sự kiện
R Trường hợp định thời giaan:
Nếu C/T=0 thì:
• Bộ định th ời được dùùng để địnhh thời gian
n (Timer).
Nguồn xun
• N
Lưu ý:
ng clock định thời đư
ược lấy từ mạch dao đ ng trên cchip.
- Tần số xun
ng clock cu
ung cấp cho
o bộ định tthời bằng 1
1/12 tần số của mạch dao động
rên chip 80
tr
051.
- T ời gian đ nh thời là
à khoảng th ời gian tín
nh từ lúc b ộ định thời bắt đầu đ m cho
đến lúc bộ đ nh thời bắt đầu tràn (thời gian này phụ th ộc vào ggiá trị ban đ u được
nạp cho các thanh ghi THx và TL
vn
htttp://www.eebook.edu.v
Lx).
27
ĐỒ ÁN 1
R Trường hợp đếm sự kiện
Nếu C/T=1 thì:
TRẦN NGỌC L
LÝ_070642D_07DD2D
• Bộ định th ời được dù
ùng để đếm
m sự kiện (C
Counter).
Nguồn xun
• N
ng clock định thời đư
ược lấy từ x
xung kích tthích bên n
ngoài tại ha
ai chân T0
vàà T1 của ch
Lưu ý:
hip 8051.
- Tần số kích
h thích tối đa cho phéép tại chân
n T0 và T1 là 500KHz
Hz (trong trư ng hợp
hip 8051 dù
ch
ùng thạch anh 12MH
Hz).
- Số lượng sự kiện (số xung) mà bộ định thời đếm đượ
hanh ghi THHx và TLx.
th
ợc sẽ được chứa trong
g các
- Một kích thhích được gọi là một sự kiện kh
0 ở ngõ vào T0 và T1.
vn
htttp://www.eebook.edu.v
hi xảy ra sự chuyển trạng thái từ 1 xuống
28
ĐỒ ÁN 1
1.2. GIỚI
1.2.1.
1.2.2.
TRẦN NGỌC L
ỆU V Ề LCD ((TEXT LCCD)
HÌNH ẢNH LCD
U7
D
LCD
CD
LC
LCD 116×2
GIỚI TH ỆU SƠ LƯỢC VỀ LCD
LÝ_070642D_07DD2D
+/ Trrong những
g năm gần đây LCD đang ngày càng đượcc sử dụng rộng rãi
hay thế dần
th
đèn L
Led.
+/ Te
ext LCD là các loại m
màn hình tin
nh thể lỏng
g nhỏ dùng
g để hiển thị các
òng chữ hoặc số trong bảng mã
dò
ã ASCII. Kh
hông giống
g các loại L
LCD lớn, T
Text LCD
ược chia sẵn thành từng ô và ứn
đư
ng với mỗi ô chỉ có thể hiển thị một ký tự ASCII.
Cũng vì lý d
do chỉ hiện thị được kký tự ASCIII nên loại LCD này đ
được gọi là
à Text
LCD (để ph
hân biệt với
LCD có thể hiển thị h
hình ảnh). Mỗi ô của Text LCD
baao gồm các
c “chấm” tinh thể lỏn
vn
ệc kết
ợp “ẩn” và “hiện” các chấm n
này sẽ tạo
29
htttp://www.eebook.edu.v
1
2
VSS
3
4
5
6
VD
D
VEE
RS
RW
6
7
8
9
RW
E
D0
D1
10
11
12
13
D
2
D3
D4
D
5
13
14
15
16
5
D6
D7
A
K
K
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
thành một ký tự cần hiển thị. Trong các Text LCD, các mẫu ký tự được định nghĩa
sẵn. Kích thước của Text LCD được định nghĩa bằng số ký tự có thể hiển thị trên 1
dòng và tổng số dòng mà LCD có. Ví dụ LCD 16x2 là loại có 2 dòng và mỗi dòng
có thể hiển thị tối đa 16 ký tự. Một số kích thước Text LCD thông thường gồm
16x1, 16x2, 16x4, 20x2, 20x4…
R Mô tả các chân, loại 16 chân.
+/ VDD (chân 2): cấp nguồn dương 5v
+/ VSS (chân 1): cấp nguồn âm(GND)
+/ VEE (chân 3): điều khiển độ tương phản của LCD ( contrast), chân này cần được
nối với 1 biến trở 10k để chia áp. Trong khi hoạt động, chỉnh để thay đổi giá trị biến
trở để đạt được độ tương phản cần thiết, sau đó giữ mức biến trở này. Các chân điều
khiển RS, R/W, EN và các đường dữ liệu được nối trực tiếp với vi điều khiển. Tùy
theo chế độ hoạt động 4 bit hay 8 bit mà các chân từ D0 đến D3 có thể bỏ qua hoặc
nối với vi điều khiển
+/ Trong một số LCD, 2 chân LED nền được đánh số 15 và 16 nhưng trong một số
trường hợp 2 chân này được ghi là A (Anode) và K (Cathode), gọi là 2 chân nguồn
cho “đèn LED nền”.
+/ Chân chọn thanh ghi RS( chân 4_Register Select)
Có hai thanh ghi rất quan trọng trong LCD, 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, thanh ghi mà lệnh được chọn để cho phép người dùng gửi một lệnh
chẳng hạn như xóa màn hình và nếu RS=1 thanh ghi DR được chọn, thanh ghi dữ
liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD. 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ả:
30
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
- Tha
anh ghi IR : Để điều k
khiển LCD
D, người dù
ùng phải “rra lệnh” thô
ông qua
ám đường b
tá
bus DB0-D
DB7. Mỗi lệnh được n
nhà sản xuất LCD đánnh địa chỉ rõ ràng.
N ười dùng
g chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào th
hanh ghi IR
R. Nghĩa
à, khi ta nạp
là
h ghi IR m ột chuỗi 8 bit, chíp H
HD44780 ssẽ tra bảng mã lệnh
tại địa chỉ m
mà IR cung cấp và thực hiện lệnh đó.
V ệnh “
“hiển thị m
màn hình” ccó địa chỉ lệnh là 00001100 (DB
B7…DB0)
Lệnh “hiển tthị màn hìn
nh và con ttrỏ” có mã lệnh là 00001110
- Tha
anh ghi DR : Thanh g
ghi DR dùn
ng để chứa dữ liệu 8 b
bit để ghi v
vào vùng
R
AM hoặc C
CGRAM (ở chế độ gh
hi) hoặc dù
ùng để chứa dữ liệu từ 2 vùng
R
ởi ra cho M
MPU (ở chế độ đọc). Nghĩa là, k
khi MPU g
ghi thông tiin vào DR,
mạch nội bê
ên trong ch
híp sẽ tự độ ng ghi thông tin này vào DDRA
AM hoặc C
CGRAM.
H ặc khi thô
ông tin về địa chỉ đượ
ợc ghi vào IR, dữ liệu ở địa chỉ này trong vùng
R
ội của HD4478
80 sẽ được chuyển ra DR để tru
uyền cho M
MPU. Bằng cách điều
kh ển chân R
RS và R/W
W chúng ta có thể chu
uyển qua lại giữ 2 than
nh ghi này
y khi giao
tiếp. Xem bảng thiết lập đối với h
M
+// Chân đọc/ghi R/W (chân 5)
hai chân R
RS và R/W theo mục đích giao tiếp với
C
ựa chọn giữa việc đọc và gghi. Nếu R
R/W=0 thì d ữ liệu sẽ đ
được ghi từ bộ điều
kh ển ngoài (vi điều kh ển AVR chẳng hạn
D. Nếu R/W
W=1 thì dữ liệu sẽ
ược đọc từ LCD ra nggoài. Tuy nnhiên, chỉ c
đư
có duy nhất 1 trường hợp mà dữ liệu có
thể đọc từ L
LCD ra, đó là đọc trạn
ng thái LCD
D để biết L
LCD có đan
ng bận hay
y không
(cờ Busy Fla
ag - BF). D
Do LCD là một thiết bị hoạt độn
ương đối chậm (so với vi
31
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
đ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. Tóm tắt bảng chức năng sau:
0
0
1
1
RS
R/W
0
1
0
1
Khi cần
Ghi vào thanh ghi IR để ra lệnh cho LCD (VD: cần display
clear,…)
Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6
Ghi vào thanh ghi DR
Đọc dữ liệu từ DR
+/ Chân cho phép E (chân 6_Enable)
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, nói
cách khác chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữu trên
32
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
chân dữ liệu của nó. Khi dữ liệu được cung cấp đến chân dữ liệu thì một xung mức
cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ
liệu. Xung này phải rộng tối thiểu là 450ns.
+/ Chân D0÷D7: Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin trên LCD
hoặc đọc nội dung của các thanh ghi trong LCD.
Để hiển thị các chữ cái và các con số, chúng ta gửi các mã ASCII của các chữ cái
từ A đến Z, a đến f và các con số từ 0~9 đến các chân này khi bật RS=1
Cũng như các mã lệnh mà có thể được gửi đến LCD để xóa màn hình hoặc đưa con
trỏ về vị trí đầu dòng hoặc nhấp nháy con trỏ.Chúng ta cũng sử dụng RS=0 để kiểm
tra bit cờ bận để xem LCD có sẵn sàng nhận thông tin. Cờ bận là D7 và có thể được
đọc khi R/W=1 và RS=0 như sau: Nếu R/W=1, RS=0 khi D7=1(cờ bận 1) thì LCD
bận bởi các công việc bên trong và sẽ không nhận bất kì thông tin mới nào. Khi D7
thì LCD sẵn sàng nhận thông tin mới. Lưu ý chúng ta nên kiểm tra cờ bận trước khi
ghi bất khì dữ liệu nào lên LCD
R 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ờ BF lại mức 0.
R Bộ đếm địa chỉ AC : (Address Counter)
Như 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
và R/W=1 (xem bảng tóm tắt RS - R/W).
33
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
Lưu ý: Thời gian cập n
nhật AC kh
hông được
hời gian thhực thi lệnh
h mà được
cập nhật sauu khi cờ BF
F lên mức ccao (not bu
usy), cho nên khi lập trình hiển thị, bạn
phải delay m ột khoảng
g tADD kh
hoảng 4uS-5uS (ngay sau khi BF
F=1) trước
ạp
dữ liệu mới.. Xem thêm
m hình Giản đồ xung cập nhật A
AC.
Tóm tắt cácc lệnh có thể ghi vào
o LCD
Danh sáách lệnh trê
ên được tô 2 màu khá
ác nhau, cá
ác lệnh màuu đỏ sẽ đượ
ợc dùng
thường xuyêên trong lú
úc hiển thị L
LCD và cá
ác lệnh màu
u xanh thườ ng chỉ đư
ược dùng 1
lần trong lúc
c khởi động
g LCD, riêêng lệnh Re
ead BF có thể được ddùng hoặc k
không tùy
heo cách viiết chương trình wait_
th
_LCD. Phần tiếp theo
o giải thíchh ý nghĩa của các
lệnh và tham
m số kèm th
.
heo chúng.
+// Trước kh
LCD :
hi tìm hiểu tập lệnh của LCD, sa
au đây là m ột vài chúú ý khi giao
o tiếp với
* T
Tuy trong sơ đồ khối của LCD c
có nhiều khối khác nh
hau, nhưng
g khi lập
R
trìình điều kh
hiển LCD tta chỉ có thể tác động
g trực tiếp đ
c vào 22 thanh ghii DR và IR
hông qua cáác chân DB
th
Bx, và ta phải thiết lập chân RS, R/W phù
ù hợp để ch
huyển qua
lại giữ 2 thaanh ghi này
y. (xem bản
ng giới thiệu 2 thanh ghi này)
* Với mỗi lện
ần một kho ảng thời gian để hoàn
a
n tất, thời g
gian này
ó thể khá lâ
có
âu đối với tốc độ của
M
a cần kiểm
ờ BF hoặc đợi ((delay) cho
o.
o LCD thựcc thi xong llệnh hiện
hàành mới có
ó thể ra lện
vn
ếp theo
34
htttp://www.eebook.edu.v
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
* Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, 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ị (1 hàng / 2 hàng),
chiều dài dữ liệu (8 bit / 4 bit), …
• Chỉ định địa chỉ RAM nội.
• Nhóm lệnh truyền dữ liệu trong RAM nội.
• Các lệnh còn lại . (!!!)
Trước hết là nhóm lệnh đỏ:
+/ 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).
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 0 0 0 0 1
Lệnh Clear Display (xóa hiển thị) sẽ ghi một khoảng trống-blank (mã hiển thị kí tự
20H) vào tất cả ô nhớ trong DDRAM, sau đó trả bộ đếm địa AC=0, trả lại kiểu hiện
thị gốc nếu nó bị thay đổi. Nghĩa là : Tắt hiển thị, con trỏ dời về góc trái (hàng đầu
tiên), chế độ tăng AC
+/ 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 (texe(max)=37uS): Mã lệnh : DBx = DB7 DB6 DB5
DB4 DB3 DB2 DB1 DB0. DBx = 1 [AD] [AD] [AD] [AD] [AD] [AD] [AD]
Lệnh này ghi vào AC địa chỉ của DDRAM, dùng khi cần thiết lập tọa độ hiển thị
mong muốn. Ngay sau lệnh này là lệnh đọc/ghi dữ liệu từ DDRAM tại địa chỉ đã
35
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
được chỉ định. Khi ở chế độ hiển thị 1 hàng: địa chỉ có thể từ 00H đến 4FH. Khi ở
chế độ hiển thị 2 hàng, địa chỉ từ 00h đến 27H cho hàng thứ nhất, và từ 40h đến 67h
cho hàng thứ 2. Đị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.
+/ Read BF fand address(texe(max)=0uS): Mã lệnh : DBx = DB7 DB6 DB5
DB4 DB3 DB2 DB1 DB0. DBx = [BF] [AC] [AC] [AC] [AC] [AC] [AC] [AC]
(RS=0, R/W=1). Như đã đề cập trước đây, khi cờ BF bật, LCD đang làm việc và
lệnh tiếp theo (nếu có) sẽ bị bỏ qua nếu cờ BF chưa về mức thấp. Cho nên, khi lập
trình điều khiển, bạn phải kiểm tra cờ BF trước khi ghi dữ liệu vào LCD. Khi đọc
cờ BF, giá trị của AC cũng được xuất ra các bit [AC]. Nó là địa chỉ của CG hay
DDRAM là tùy thuộc vào lệnh trước đó.
+/ Write to CGRAM or DDRAM(texe(max)=37uS, tadd=4uS) : Mã lệnh : DBx
= DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0. DBx = [Write data] (RS=1, R/W=0).
Khi thiết lập RS=1, R/W=0, dữ liệu cần ghi được đưa vào các chân DBx từ mạch
ngoài sẽ được LCD chuyển vào trong LCD tại địa chỉ được xác định từ lệnh ghi địa
chỉ trước đó (lệnh ghi địa chỉ cũng xác định luôn vùng RAM cần ghi). Sau khi ghi,
bộ đếm địa chỉ AC tự động tăng/giảm 1 tùy theo thiết lập Entry mode.
Lưu ý là thời gian cập nhật AC không tính vào thời gian thực thi lệnh. 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.
Kế đến là nhóm lệnh màu xanh: nhóm lệnh này thường chỉ thực hiện 1 lần (ít
nhất là trong bài học này) và thường được viết chung trong 1 chương trình con khởi
36
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
động LCD (chúng ta gọi là init_LCD trong bài học này).
+/ Entry mode set(texe(max)=37uS) : Mã lệnh : DBx = DB7 DB6 DB5 DB4
DB3 DB2 DB1 DB0. DBx = 0 0 0 0 0 1 [I/D] [S]. 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 (cách 2 trong ví dụ)
+ D7:0 = 0x05 (00000101) : hiển thị giảm và shift (cách 4 trong ví dụ)
+ D7:0 = 0x06 (00000110) : hiển thị tăng và không shift (cách 1, khuyến
khích)
+ D7:0 = 0x07 (00000111) : hiển thị tăng và shift (cách 3 trong ví dụ)
37
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
+/ Disp
play on/offf control (teexe(max)=
=37uS): Mã
ã lệnh : DB
Bx = DB7 D
DB6 DB5
DB4 DBB3 DB2 DB
B1 DB0. D
DBx = 0 0 0
0 0 1 [D] [C
C] [B]
D
Hiển thị màn hình k
khi D=1 vàà ngược lại
ắt hiển thị, nộii dung DDRAM
hông thay đ i.
kh
C Hiển thị con trỏ khii C=1 và n
ngược lại. V ị trí và hìn
nh dạng co
on trỏ, xem
m hình 8
B Nhấp nhááy kí tự tại
ị trí con trỏ khi B=
=1 và ngược ại. Chu kkì nhấp nháy khoảng
09,6ms khii mạch dao động nội LCD là 25
40
50kHz.
X ập cáchh hiện thị c
cho LCD: llệnh này ba
ao gồm các
c thông số cho phép L
LCD hiển
thị, cho phépp hiển thị c
cursor và m ở/tắt blink
king. Đây cũng là một lệnh ghi
nstrcution n
In
nên RS phải bằng 0. M
Mã lệnh ch
ho lệnh này
y có dạng 00001DCB
B trong đó
D
cho phép h ển thị LC
CD nếu ma
ang giá trị 1, C (Curso
or) bằng 1 thì cursor
sẽ được hiển
ị và B llà blinking
g cho cursor tại vị trí h ển thị (bllinking là d
dạng 1 ô
đe
ấp nh
háy tại vị trrí ký tự đan
ng hiển thị)
ệnh được dùng
g phổ biến cho lệnh
nàày là 0x0E (00001110
0 - hiển thị cursor nh ưng không
g hiển thị b
blinking).
38
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
+/ Funcction set(tex
xe(max)=3
37uS): Mã lệnh : DBx = DB7 D
DB6 DB5 D
DB4 DB3
D
DB0. DBx =
= 0 0 1 [DL
L] [N] [F] * *
X
ập chức năng cho
o LCD: đây
y là lệnh th ết lập phư ng thức ggiao tiếp với LCD,
kíích thước ffont chữ vàà số lượng line của LC
CD. RS cũng phải bằng 0 khi sử dụng
lệnh này. M
Mã lệnh func
ction set có
ó dạng 001
1D¬¬LNFx
xx. Trong đó nếu DL=1 (DL:
D
h) thì mode
e giao tiếp 8 bit sẽ đư
ược dùng, lú
úc này tất cả các chân
n từ D0
đến D7 phải được kết nối với bộ điều khiển
ếu DL=0 th
hì mode 4 b
bit được
à
ùng, trong trường hợp ỉ ccó 4 chân D
dù
D4:7 được dùng để tru
uyền nhận dữ liệu và
kết nối với b ộ điều khiiển ngoài, ccác chân D
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
cho
trư ng hợp L
LCD 1 dòn
ng). F là kíích thước ffont chữ hiển thị, do L
LCD có 2 b ộ font
chữ có sẵn ttrong CGR
ROM nên ch
húng ta cần ựa chọn thông quaa bit F, nếu F=1 bộ
ont 5x10 đư
fo
ược sử dụn
ếu F
F=0 thì fon
nt 5x8 được
ển thị. 2
2 bit thấp ttrong mã
lệnh này có thể được g
gán giá trị ttùy ý. Mã llệnh được d
dùng phổ b ến cho lệnh
unction set là 0x38 (0
fu
00111000 –
– giao tiếp 8 bit, 2 dòn
ng với fontt 5x8 ) hoặc 0x28
00101000 –
(0
* Chú ý:
– giao tiếp 4 bit, 2 dò
òng với fon
nt 5x8 ).
• Chỉ tthực hiện tthay đổi F
Function se
et ở đầu chương trình
h. Và sau k
khi được
thực thi 1 lần, lệnh th
hay đổi Fun
nction set không đượ
ợc LCD chấp nhận nữa ngoại
39
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
trừ thiết lập chuyển đổi giao thức giao tiếp.
• Không thể hiển thị kiểu kí tự 5x10 điểm ảnh ở kiểu hiển thị 2 hàng
R 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. Trong bài học này, tôi sẽ trình bày 2
chương trình con được viết riêng để ghi và đọc các nibbles gọi là Read2Nib và
Write2Nib.
1.2.3.
SƠ ĐỒ, CHỨC NĂNG LIÊN KẾT CÁC CHÂN CỦA LCD
40
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
Chân
1
2
Kí hiệu
VSS
VCC
I/O
-
-
Mô tả
Đất
Chân c ấp nguồn c
cho LCD, k
khi thiết kế mạch
ta nối c
khiển
chân này với VCC=5V
V của mạc
điều
3
VEE
-
Cấp ng
guồn điều k
khiển độ tư
ương phản
4
RS
I
Chân c
chọn thanh ghi (Regisster select). Nối
chân R
RS với logic
c “0” (GND
D) hoặc log
gic
“1” (VC
hi.
CC) để chọn thanh gh
+ Logicc “0”: Bus DB0-DB77 sẽ nối với thanh
ghi lệnh IR của LLCD (ở chế độ “ghi” --
write) h
hoặc nối với bộ đếm địa chỉ của
vn
htttp://www.eebook.edu.v
(ở chế độ “đọc” - read)
+ Logicc “1”: Bus DB0-DB77 sẽ nối với thanh
41
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
ghi dữ liệu DR bên trong LCD
5
6
R/W
E
I
Chân ế độ đọc/ghi (Read/Write).
Nối chân R/W với logic “0” để LCD hoạt
động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc
I/O Chân cho phép (Enable). Sau khi các tín
hiệu được đặt lên bus DB0-DB7, các lệnh
chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD
chuyển vào(chấp nhận) thanh ghi bên
trong nó khi phát hiện một xung (high-to-
low transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất
ra DB0-DB7 khi phát hiện cạnh lên (lowto-
high transition) ở chân E và được LCD giữ
ở bus đến khi nào chân E xuống mức thấp
7÷14
DB0÷DB14 I/O
Tám ng của bus dữ liệu dùng để trao đổi
thông tin với MPU. Có 2 chế độ sử
dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả
8 đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4
đường từ DB4 tới DB7, bit MSB là DB7
R Các mã lệnh của LCD
Mã
Hex
1
Lệnh đến thanh ghi của LCD
Xóa màn hình hiển thị
42
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
2
4
5
6
7
8
A
C
E
F
10
14
18
1C
80
C0
38
Trở về đầu dòng
Giảm con trỏ (dịch con trỏ sang trái)
Tăng con rỏ (dịch con trỏ sang phải)
Dịch hiển thị sang phải
Dịch hiển thị sang trái
Tắt con trỏ, tắt hiển thị
Tắt hiển thị, bật con trỏ
Bật hiển thị, tắt con trỏ
Bật hiển thị, nhấp nháy con trỏ
Tắt hiển thị, nhấp nháy con trỏ
Dịch vị trí con trỏ sang trái
Dịch vị trí con trỏ sang phải
Dịch toàn bộ hiển thị sang trái
Dịch toàn bộ hiển thị sang phải
Ép con trỏ Vũ đầu dòng thứ nhất
Ép con trỏ Vũ đầu dòng thứ hai
Hai dòng ma trận
1.2.4. GIỚI THIỆU SƠ LƯỢC VỀ HD44780U
+/ Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển HD44780U bên
trong lớp vỏ và chỉ đưa ra các chân giao tiếp cần thiết
+/ HD44780U là bộ điều khiển cho các Text LCD dạng ma trận điểm (dot-matrix),
chip này có thể được dùng cho các LCD có 1 hoặc 2 dòng hiển thị. HD44780U có 2
mode giao tiếp là 4 bit và 8 bit. Nó chứa sẵn 208 ký tự mẫu kích thước font 5x8 và
32 ký tự mẫu font 5x10 (tổng cộng là 240 ký tự mẫu khác nhau)
R 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 “chỉ ghi” (chỉ có thể ghi vào thanh ghi này mà 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 dữ liệu đọc ra từ bộ nhớ
43
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
LCD…Cả 2
2 thanh ghi đều được nối với các đường dữ liệu D0:7
7 của Text LCD và
ược lựa chọn tùy theo
đư
o các chân điều khiển
Thực tế để điều khiển Text
LCD chúng ta không cần quan tâ
âm đến các
ch thức hoạt động củaa 2 thanh g
ghi này, vì
thế cũng khô
.
ông cần kh ảo sát chi tiết chúng.
R HD4
44780U có
ó 3 loại bộ nhớ, đó là bộ nhớ RA
AM dữ liệu
u cần hiển thị
D
Didplay Da
ata RAM), b
bộ nhớ chứa ROM ch ứa bộ fon
nt tạo ra ký tự
C
Character G
Generator R
ROM) và bộ nhớ RAM
M chứa bộ font tạo ra
a các
ymbol tùy c
sy
chọn CGR
RAM (Charracter Geneerator RAM
M). Để điều
u khiển hiển thị Text
LCD chúng ta cần hiểu ổ chức vvà cách thức hoạt độn
DDRAM.
D
ủa các bộ nhớ này
DDRAM
M là bộ nhớ tạm chứaa các ký tự cần hiển tthị lên LCD
D, bộ nhớ n
này gồm
ó 80 ô đượ
có
ợc chia thàn
nh 2 hàng, mỗi ô có đ rộng 8 b
bit và được đánh số từ 0 đến 39
ho dòng 1; từ 64 đến 103 cho dò
ch
òng 2. Mỗi
ớ tươ ng ứng vớ i 1 ô trên m
màn hình
LCD. Như cchúng ta biiết LCD loại 16x2 có thể hiển th ị tối đa 32
2 ký tự (có 32 ô hiển
thị), vì thế c
có một số ô
ô nhớ của D
DDRAM k
không được
ử dụng lààm các ô h ển thị.
Đ hiểu rõ hơn chúng ta tham kh
Tổ chức của M.
hảo hình bê
ên dưới
Chỉ có 1
16 ô nhớ có địa chỉ từ 0 đến 15 và 16 ô địa chỉ từ 64 đến 79 là được hiển
thị trên LCD
D. Vì thế m ốn hiển tthị một ký tự nào đó ttrên LCD cchúng ta cần viết ký
tự đó vào DD
DRAM ở 1
1 trong 32 địa chỉ trên
n. Các ký t ự nằm ngo
oài 32 ô nh ớ trên sẽ
hông được hiển thị, tu
kh
ác mục đích khác nếu
cá
uy nhiên v
ần thiết
vẫn không b ị mất đi, c
chúng có thể được dù
ùng cho
44
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
CGROM.
C
TRẦN NGỌC L
LÝ_070642D_07DD2D
CGROM
M là vùng n
nhớ cố địn
nh chứa địn
ĩa fo
ont cho cácc ký tự. Chú
úng ta
hông trực ttiếp truy xu ất vùng nh ớ này mà chip HD44780U sẽ tự thực hiện khi có
kh
yêêu cầu đọc font để hiện thị. Mộtt điều đáng
g lưu ý là đ a chỉ fontt của mỗi k
ký tự vùng
nh ớ CGROM
M chính là mã ASCIII của ký tự đó. Ví dụ ký tự ‘a’ ccó mã ASC
CII là 97,
ham khảo tổ chức của
th
ớ CGROM trong hình
h 4 bạn sẽ n
nhận thấy đ a chỉ
ont của ‘a’ có 4 bit thấp là 0001 và 4 bit ca
fo
= 97.
ao là 0110,, địa chỉ tổn
ng hợp là 0
01100001
CGROMM và DDR
RAM được tự động ph ối hợp trong quá trìnnh hiển thị của LCD.
G ả sử chún
ng ta muốn hiển thị ký
ý tự ‘a’ tại vị trí đầu ttiên, dòng tthứ 2 của L
LCD thì
ác bước thực hiện sẽ như sau: trrước hết ch
cá
húng ta biết rằng vị trrí đầu tiên của dòng
2 có địa chỉ là 64 trong
g bộ nhớ D
DDRAM (x
xem hình 3), vì thế ch
húng ta sẽ g
ghi vào ô
nh ớ có địa cchỉ 64 một giá trị là 97 (mã ASC
CII của ký tự ‘a’). Tiếp theo, ch
hip
H
đọc giá trị 97 này vàà coi như là
à địa chỉ của vùng nhhớ CGROM
M, nó sẽ
tìm đến vùn
ng nhớ CGR
ROM có địa chỉ 97 và
à đọc bảng
g font đã đư
ược định nghĩa sẵn ở
đâ
đó xuất bản fo
ont này ra các “chấm
n hình LCD
D tại vị trí đ u tiên
45
vn
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
của dòng 2 ttrên LCD. Đây chính
h là cách mà 2 bộ nhớ DDRAM và CGROM phối
hợp với nha
au để hiển tthị các ký t ự. Như mô
ô tả, công v ệc của người lập trìình điều
kh ển LCD t ương đối đ n giản, đó là viết m
mã ASCII v
vào bộ nhớ DDRAM
M tại đúng
vị trí được y
yêu cầu, bư c tiếp theeo sẽ do HD
D44780U đ m nhiệm
Mối liên hệ giữa địa c
chỉ của RO
OM và dữ lliệu tạo mẫu kí tự
g
N ư vậy, để có thể ghii vào vị trí thứ x trên màn hình một kí tự y
y nào đó, n
người dùng
phải ghi vào
o vùng DDRAM tại đ a chỉ x (x
xem bảng m ối liên hệ giữa DDR
RAM và vị
tríí hiển thị) m ột chuỗi mã kí tự 8
8 bit trên CGROM. Ch
hú ý là tron
ng bảng m
mã kí tự
trong CGRO
OM ở hình bên dưới ccó mã ROM
vn
M A00.
46
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
V
ụ : Ghi vào DDRA
AM tại địaa chỉ “01” m ột chuỗi 8
8 bit “0110
00010” thì trên LCD
tại ô thứ 2 từ
trái sang (dòòng trên) sẽ hiển thị k
Bảng mã kíí tự (ROM code A00)
vn
htttp://www.eebook.edu.v
kí tự “b”
47
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
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 dành cho 8 ô nhớ 8 bit. Các symbol thường
được định nghĩa trước và được gọi hiển thị khi cần 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
Như trên bảng mã kí tự, nhà sản xuất dành vùng có địa chỉ byte cao là 0000 để
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
rất hạn chế: Ta chỉ có thể tạo 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
Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu của CGRAM, và mã kí tự
48
ĐỒ ÁN 1
R SƠ ĐỒ KHỐI CỦA HDD44780U
vn
htttp://www.eebook.edu.v
TRẦN NGỌC LLÝ_070642D_07DD2D
49
ĐỒ ÁN 1
R Điều
ển hi ển thị Texxt LCD
vn
TRẦN NGỌC LLÝ_070642D_07DD2D
50
htttp://www.eebook.edu.v
ĐỒ ÁN 1
TRẦN NGỌC L
LÝ_070642D_07DD2D
1.3. GIỚI
1.3.1.
ỆU V Ề BÀN P
HÌNH ẢNH
PHÍM GIA
AO TIẾP 4×4
1.3.2.
THUẬT
Hình miinh họa
QUÉT PHÍÍM
R Một
ột được đặt ở mức cao (ngõ rra)
vn
51
htttp://www.eebook.edu.v
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
R Các hàng lần lượt được đặt ở mức thấp (ngõ vào) và sau đó các cột được
đọc
R Nếu 1 hay nhiều cột (thuộc hàng đang ở mức thấp), ở mức thấp thì các
phím của các cột tương ứng tích cực và các giá trị tương ứng của chúng sẽ hiện ra
màn hình
R Để đọc toàn bộ bàn phím, mỗi hàng lần lượt được đặt vào như nhau:
+/ Dữ liệu 0111 được ghi ra các bit cổng xuất
+/ Các bit cổng nhập được ghi vào, nếu không có phím nào được nhấn
trên hàng đó thì giá trị đọc vào sẽ là 1111, nếu có bất cứ phím nào được nhấn thì
trên hàng đó sẽ có 0 bit tương ứng
+/ Dữ liệu 1011 được ghi vào cổng xuất bằng cách dịch bit 0 vào cột kế
tiếp và cổng nhập được ghi vào
+/ Dữ liệu 1101 được ghi vào cổng xuất bằng cách dịch bit 0 vào cột kế
tiếp và cổng nhập được ghi vào
+/ Dữ liệu 1110 được ghi vào cổng xuất bằng cách dịch bit 0 vào cột kế
tiếp và cổng nhập được ghi vào
+/ Chu kỳ này được lập lại vô tận bằng cách quay về bit 1
5vVCC
R3
10k
8
1
4
7
*
R4
10k
2
5
8
0
7
R5
10k
3
6
9
#
6
R6
10k
A
B
C
D
5
1
2
3
4
52
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
- Phím bấm được nối thành ma trận 4 hàng x 4cột, các hàng và cột được nối với
các chân cổng vào ra của vi điều khiển Psoc. Khi một phím được bấm, nó sẽ nối
một hàng và một cột tương ứng. Như vậy ta sẽ có 16 nút nhấn mà chỉ mất có 8 chân
vi điều khiển. Khi nút 0 được nhấn thì nó nối giữa cột 1 hàng 1. Còn nút 1 được
nhấn thì cột 2 và hàng 1 được nối hay nút 2 được nhấn thì nối giữa cột 3 và hàng 1...
cứ như vậy đến nút thứ 15
- Sự kết nối theo ma trận tiết kiệm số kết nối và số chân của vi điều khiển. Ví dụ
1 bàn phím có 4 hàng 4 cột đòi hỏi 17 kết nối( 16+1 nối đất) nếu mỗi phím được kết
nối 1 cách riêng biệt vào port của vi điều khiển. Sử dụng kiểu kết nối ma trận và
dùng phần mềm để quét sẽ giảm được số kết nối và số chân vi điều khiển cần thiết
bây giờ chỉ là 8(4 hàng, 4 cột)
- Khi 1 phím được nhấn, hàng và cột chứa phím đó sẽ được kết nối với nhau. Do
đó ngõ vào nối với cột chứa phím bị nhấn sẽ có mức logic của ngõ ra nối với hàng
chứa phím đó
- Bây giờ các cột(ngõ vào) luôn ở mức logic cao do chúng được nối với các điện
trở kéo lên, cách duy nhất để đưa các cột về mức logic thấp là nhấn phím và đặt
hàng nối với phím đó ở mức thấp. Bằng cách đưa mỗi hàng về mức thấp một cách
tuần tự kế tiếp nhau, và đọc mức logic ở ngõ vào nối với cột trong mỗi lần đưa hàng
về mức thấp đó, ta sẽ xác định được phím nào đã bị nhấn. Trong mặt nạ hàng, hàng
1 là bit có trọng số lớn nhất và hàng 4 là bit có trọng số nhỏ nhất. Tương tự trong
mặt nạ cột, cột 1 là bit có trọng số lớn nhất, và cột 4 là bit có trọng số nhỏ nhất
Micro-controller Port Pin
Keypad Connector Pin#
P2.0 1
P2.1 2
P2.2 3
P2.3 4
P2.4 5
P2.5 6
P2.6 7
53
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
P2.7 8
GND
VCC
Tác động
Không phím nào được nhấn
Phím ở hàng 1 cột 1 được nhấn
Phím ở hàng 1 cột 2 được nhấn
Phím ở hàng 1 cột 3 được nhấn
Phím ở hàng 1 cột 4 được nhấn
Phím ở hàng 2 cột 1 được nhấn
Phím ở hàng 2 cột 2 được nhấn
Phím ở hàng 2 cột 3 được nhấn
Phím ở hàng 2 cột 4 được nhấn
Phím ở hàng 3 cột 1 được nhấn
Phím ở hàng 3 cột 2 được nhấn
Phím ở hàng 3 cột 3 được nhấn
Phím ở hàng 3 cột 4 được nhấn
Phím ở hàng 4 cột 1 được nhấn
Phím ở hàng 4 cột 2 được nhấn
Phím ở hàng 4 cột 3 được nhấn
Mặt nạ hàng(Row
Mask)
XXXX
0111
0111
0111
0111
1011
1011
1011
1011
1101
1101
1101
1101
1110
1110
1110
9
10
Mặt nạ cột(column
Mask)
1111
0111
1011
1101
1110
0111
1011
1101
1110
0111
1011
1101
1110
0111
1011
1101
54
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
Phím ở hàng 4 cột 4 được nhấn
1110
1110
sau:
R Port2 được nối với jack cắm bàn phím với cấu hình được cho trong bảng
Port Hàng/ cột Đặc tính
Port2.0
Port2.1
Port2.2
Port2.3
Port2.4
Port2.5
Port2.6
Port2.7
Hàng 1
Hàng 2
Hàng 3
Hàng 4
Cột 1
Cột 2
Cột 3
Cột 4
Ngõ ra
Ngõ ra
Ngõ ra
Ngõ ra
Ngõ vào
Ngõ vào
Ngõ vào
Ngõ vào
- Trong thanh ghi điều khiển chiều xuất nhập của port, các chân port nối với
các hàng được định nghĩa như là các ngõ ra và các chân port nối với các cột được
định nghĩa như là các ngõ vào. Mỗi phím trên bàn phím được gán cho một giá trị
cho trước bởi người lập trình trước khi thao tác.
55
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
CHƯƠNG 2. THỰC HIỆN MÔ HÌNH ĐỒ ÁN
2.1. SƠ ĐỒ NGUYÊN LÝ
VCC
VCC
J1
CON16 KHOI HIEN THI
RESISTOR DIP 8
10K
J3
2
1
KHOI NGUON
-
~
D4
+
R1
10R
1
U3
LM7805
IN OUT
3
VCC
VCC
J2
CON8
1
2
CON2
39
38
U1
P0.0/AD0
P0.1/AD1
~
P2.0/A8
P2.1/A9
21
22
C1
470uF/25V
R2
10R
3
4
5
6
7
8
KHOI GIAO TIEP
37
36
35
34
33
32
1
2
P0.2/AD2 P2.2/A10
P0.3/AD3 P2.3/A11
P0.4/AD4 P2.4/A12
P0.5/AD5 P2.5/A13
P0.6/AD6 P2.6/A14
P0.7/AD7 P2.7/A15
P1.0 P3.0/RXD
P1.1
23
24
25
26
27
28
10
11
3
P3.1/TXD 12
4
P1.2
P3.2/INT0
13
E
5 P1.3
P3.3/INT1
14
RW
6 P1.4
P3.4/T0 15
RS
7
P1.5
P3.5/T1
16
VCC
8 P1.6
P1.7
31
P3.6/WR 17
P3.7/RD
30
C2
C3
R3
330
VCC
SW1
RESET
10uF C4
R4
100R
R5
9
EA/VPP ALE/PROG
PSEN
RST
AT89C51 Y1
12MHz
29
KHOI DIEU KHIEN
104
100uF
D2
LED
KHOI RESET
8K2
33P
C5
C6
33P
KHOI DAO DONG
56
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
2
GN
D
RW
RS
1
2 3 4 5 6 7 8 9
18
19
XT
A
L2
XT
A
L1
E
ĐỒ ÁN 1
2.2. MẠC
OUT
TRẦN NGỌC LLÝ_070642D_07DD2D
57
htttp://www.eebook.edu.vvn
ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
2.3. LƯU ĐỒ GIẢI THUẬT
RESET
KHAI BÁO QUÉT
PHÍM
CHƯƠNG TRÌNH
CHO PHÍM
BẮT ĐẦU
KHỞI TẠO CÁC
PORT VÀO RA
CHO AT89C51
CHƯƠNG TRÌNH
CHÍNH
XỬ LÝ DỮ LIỆU
HIỂN THỊ LÊN LCD
KẾT THÚC
END!
CHƯƠNG
TRÌNH DELAY
THIẾT LẬP CÁC
LỆNH KẾT NỐI
CHO LCD
CHƯƠNG TRÌNH
CHO LCD
NHẤN
PHÍM
58