Professional Documents
Culture Documents
VI XỬ LÝ TRONG ĐO
LƯỜNG VÀ ĐIỀU KHIỂN 2
GIẢNG VIÊN: TS. ĐOÀN THỊ HƯƠNG GIANG
MOBIL: 0372630593
EMAIL: giangdth@epu.edu.vn
1
26/04/2022
2
26/04/2022
Chương 1
1.1. Ghép nối và ứng dụng hiển thị
1. Ghép nối và ứng dụng LED đơn, LED 7 thanh đơn&kép
3
26/04/2022
Chúng có nhiều hình dạng và kích cỡ, điều này cho phép các nhà thiết kế
có thể điều chỉnh tùy theo từng sản phẩm.
Led trong nhà (Led indoor): Cường độ sáng yếu, góc nhìn hẹp …
Led ngoài trời (Led outdoor): Cường độ sáng mạnh, góc nhìn rộng…
4
26/04/2022
5
26/04/2022
• LED là một biến thể trên diode (điốt) cơ bản, sự khác biệt ở
đây là nó tạo ra ánh sáng khi dòng điện đi qua (Diode là một
thành phần điện tử chỉ dẫn điện theo một hướng)
• Điều khiển LED bằng cách tạo ra độ chênh điện áp nhỏ nhất
giữa Anode (+) và Cathode (-).
6
26/04/2022
7
26/04/2022
• Trong đó:
Ví dụ:
Muốn dòng chạy qua Led là 6mA thì giá trị điện trở hạn dòng khi đó là?
- Trong cách mắc 1: Có thể tùy chọn cường độ sáng của Led thông qua
tính điện trở hạn dòng.
- Với những Led siêu sáng, cường độ dòng điện chạy qua Led lớn, khi đó
nên dùng mạch khuếch đại như hình dưới.
DÙNG VI MẠCH
DÙNG BJT
8
26/04/2022
org 200H
main:
Chương trình chính
ljmp main
org 0000H
ljmp main
org 200H
main:
mov P2,#0000 0010B
lcall wait1s
mov P2,#0000 0000B
lcall wait1s
ljmp main
wait1s:
mov R1,#200
Here1:
mov R2,#200
Here2:
nop
nop
nop
djnz R2,Here2
djnz R1,Here1
ret
end Giang
TS. Đoàn Thị Hương 18
9
26/04/2022
Sơ đồ mạch
10
26/04/2022
Yêu cầu:
- Vẽ sơ đồ kết nối VĐK 8051 với 08 LED đơn
- Viết chương trình điều khiển LED sáng từ D0 đến D7 mỗi LED sáng cách nhau 1s
org 0000H
ljmp main
org 200H
main:
mov P2,#0000 0001B
lcall wait1s
mov P2,#0000 0010B
lcall wait1s
……
ljmp main
Delay1s:
???
Ret
wait1s:
mov R1,#200 end
Here1:
mov R2,#200
Here2:
nop
nop
nop
djnz R2,Here2
djnz R1,Here1
ret TS. Đoàn Thị Hương Giang 21
Bài 2:
- Vẽ sơ đồ kết nối VĐK 8051 với 08 LED đơn
- Viết chương trình điều khiển LED sáng từ D0 đến D7 mỗi LED sáng cách nhau 1s
quá trình lặp lại 150 lần thì các LED nhấp nháy
Bài 3:
- Vẽ sơ đồ kết nối VĐK 8051 với 04 LED đơn trong đó P0 nối với hai LED D0 và D1; P2
nối với D2, D3 và các LED sử dụng nguồn ngoài (VĐK tác động vào chân cathode)
- Viết chương trình điều khiển LED sáng từ D0 đến D3 mỗi LED sáng cách nhau 1s.
Quá trình lặp lại 10 lần thì LED nhấp nháy?
11
26/04/2022
org 0000H
ljmp main
org 200H
main:
mov R1, #150
Label1:
mov P2,#0000 0010B
lcall wait1s
mov P2,#0000 0000B
lcall wait1s
djnz R1,Label1
Label2:
mov P2,#0000 0000B
sjmp Label2
org 0000H
ljmp main
org 200H
main:
mov P2,#0000 0001B
lcall wait1s
mov P2,#0000 0010B
lcall wait1s
mov P2,#0000 0100B
lcall wait1s
mov P2,#0000 1000B
lcall wait1s
mov P2,#0001 0000B
lcall wait1s
mov P2,#0010 0000B
lcall wait1s
mov P2,#0100 0000B
lcall wait1s
mov P2,#1000 0000B
lcall wait1s
ljmp main
12
26/04/2022
Bài 3:
- Vẽ sơ đồ kết nối VĐK 8051 với 04 LED đơn trong đó P0 nối với hai LED D0 và D1; P2
nối với D2, D3 và các LED sử dụng nguồn ngoài (VĐK tác động vào chân cathode)
- Viết chương trình điều khiển LED sáng từ D0 đến D3 mỗi LED sáng cách nhau 1s.
Quá trình lặp lại 10 lần thì LED nhấp nháy?
org 0000H
ljmp main
org 200h
main:
mov P2,#00000010B
lcall wait1s Chương trình chính
mov P2,#00000000B
lcall wait1s
ljmp main
wait1s:
mov R1,#200
here1:
mov R2,#200
here2:
nop Chương trình con
nop
nop
nop
djnz R2,here2
djnz R1,here1
ret
end
13
26/04/2022
Ví dụ
• Sơ đồ ghép nối LED đơn với VĐK 8051
org 0000h
ljmp main
org 200h
main:
CT Chính
ljmp main
Xuoi:
……
ret
Nguoc:
……
ret
wait1s:
mov R1,#200 Chương trình con - CTC
here1:
mov R2,#50
here2:
nop
nop
nop
djnz R2,here2
djnz R1,here1
ret
end TS. Đoàn Thị Hương Giang 28
14
26/04/2022
15
26/04/2022
Các ký tự hiện số
• Tùy theo các thanh ghi được điều khiển sáng
mà LED sẽ hiển thị các số theo yêu cầu:
16
26/04/2022
Nếu là led Anot chung thì 8 chân dương của led (chân Anot) sẽ
được nối chung với nhau (chân COM), các chân Katot sẽ được
đưa ra làm các chân dữ liệu A,B,C,D,E,F,G,DP.
Để điều khiển led anot chung, cấp nguồn dương vào chân anot
chung (chân COM) và xuất dữ liệu tích cực mức 0 ra 8 chân dữ
liệu để hiển thị theo ý muốn.
Lưu ý: phải nối các điện trở hạn dòng tránh hỏng LED và điều
khiển độ sáng/tối của LED
TS. Đoàn Thị Hương Giang 33
a b c d e f g
Số 0 0 0 0 0 0 0 1
Số 1 1 0 0 1 1 1 1
Số 2 0 0 1 0 0 1 0
Số 9 ….
17
26/04/2022
• Nếu là led Katot chung thì 8 chân âm của led (chân Katot) sẽ
được nối chung với nhau (chân COM), các chân Anot sẽ được
đưa ra làm các chân dữ liệu A,B,C,D,E,F,G,DP.
• Để điều khiển led Katot chung, cấp nguồn âm vào chân katot
chung (chân COM) và xuất dữ liệu tích cực mức 1 ra 8 chân
dữ liệu để hiển thị theo ý muốn.
• Lưu ý: phải nối các điện trở hạn dòng tránh hỏng LED và điều
khiển độ sáng/tối của LED
TS. Đoàn Thị Hương Giang 36
18
26/04/2022
19
26/04/2022
Anode chung
Số tương ứng P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
g f e d c b a
Số 0
Số 1
Số 2
…
…
Số 9
Yêu cầu (1): Viết chương trình hiển thị các số từ 0->1->2….->9
Yêu cầu (2): Viết chương trình hiển thị các số từ 0->1->2….->9
– quá trình lặp lại 05 lần sau đó LED nháy số 8.
Yêu cầu (3): Tạo thành 02 CTC xuôi (hiển thị 0->9) ngược (hiển
thị từ 9->0). Gọi hiển thị xuôi 2 lần, gọi hiển thị ngược 3 lần
sau đó LED nháy số 2.
TS. Đoàn Thị Hương Giang 40
20
26/04/2022
Cathode chung
Số tương ứng P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
0 g f e d c b a
Số 0 0 0 1 1 1 1 1 1
Số 1 0 0 0 0 0 1 1 0
Số 2 0 1 0 1 1 0 1 1
… 0
… 0
Số 9 0 1 1 0 1 1 1 1
Yêu cầu (1): Viết chương trình hiển thị các số từ 0->1->2….->9
Yêu cầu (2): Viết chương trình hiển thị các số từ 0->1->2….->9
– quá trình lặp lại 05 lần sau đó LED nháy số 8.
Yêu cầu (3): Tạo thành 02 CTC xuôi (hiển thị 0->9) ngược (hiển
thị từ 9->0). Gọi hiển thị xuôi 2 lần, gọi hiển thị ngược 3 lần
sau đó LED nháy số 2.
TS. Đoàn Thị Hương Giang 41
a
b
c
Cathode chung
Bài 4:
a)Vẽ sơ đồ kết nối LED 7 thanh cathode chung với VĐK,
b)Lập trình đk hiển thị các số lần lượt từ 0 đến 9 mỗi số sáng cách nhau 1 giây?
c) Lập trình đk hiển thị các số lần lượt từ 0 đến 9 mỗi số sáng cách nhau 1 giây quá
trình lặp lại 100 lần sau đó LED tắt?
21
26/04/2022
Cathode chung
Bài 4:
a)Vẽ sơ đồ kết nối LED 7 thanh cathode chung với VĐK,
b)Lập trình đk hiển thị các số lần lượt từ 0 đến 9 mỗi số sáng cách nhau 1 giây?
c) Lập trình đk hiển thị các số lần lượt từ 0 đến 9 mỗi số sáng cách nhau 1 giây quá
trình lặp lại 100 lần sau đó LED tắt?
a
cb
Bài 5:
a)Vẽ sơ đồ kết nối LED 7 thanh anode chung với VĐK
b)Lập trình đk hiển thị các số lần lượt từ 0,3,6,8,9 mỗi số sáng cách nhau 1 giây?
Quá trình lặp lại liên tục?
c)Lập trình đk hiển thị các số lần lượt từ 0,3,6,8,9 mỗi số sáng cách nhau 1 giây?
Quá trình trên lặp lại 100 lần sau đó LED tắt?
22
26/04/2022
Lưu ý:
Binary Hex
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
….. …..
0 0 0 0
23 22 21 2 0
23
26/04/2022
b)Lập trình đk hiển thị các số lần lượt từ 0,3,6,8,9 mỗi số sáng cách nhau 1 giây? Quá trình
lặp lại liên tục?
Org 0000H
ljmp main 0,3,6,8,9
Org 200H
main:
mov P2,#40H ; Số 0 P2
lcall wait1s
40H
mov P2,#30H ;Số 3
lcall wait1s 79H
mov P2,#02H ;Số 6
lcall wait1s 24H
mov P2,#00H ;Số 8 30H
lcall wait1s 19H
mov P2,#10H ;Số 9
lcall wait1s 12H
ajmp main 02H
wait1s: 78H
…..
ret 00H
end 10H
c)Lập trình đk hiển thị các số lần lượt từ 0,3,6,8,9 mỗi số sáng cách nhau 1 giây? Quá trình
trên lặp lại 100 lần sau đó LED tắt?
Org 0000H
ljmp main
Org 200H 0,3,6,8,9
main:
mov R0,#100 Tắt LED:
P2
Label1: P2 = 0111 1111B = 7FH
mov P2,#40H ; Số 0 40H
lcall wait1s
mov P2,#30H ;Số 3 79H
lcall wait1s
mov P2,#02H ;Số 6 24H
lcall wait1s 30H
mov P2,#00H ;Số 8
lcall wait1s 19H
mov P2,#10H ;Số 9 12H
lcall wait1s
djnz R0,Label1 02H
Label2: 78H
mov P2,#7FH; Tắt LED
sjmp Label2 00H
10H
wait1s:
…..
ret TS. Đoàn Thị Hương Giang 48
end
24
26/04/2022
b c
a
Bài 5:
a)Vẽ sơ đồ kết nối LED 7 thanh anode chung với VĐK
b)Lập trình đk hiển thị các số lần lượt từ 0,3,6,8,9 mỗi số sáng cách nhau 1 giây?
Quá trình lặp lại liên tục?
c)Lập trình đk hiển thị các số lần lượt từ 0,3,6,8,9 mỗi số sáng cách nhau 1 giây?
Quá trình trên lặp lại 100 lần sau đó LED tắt?
25
26/04/2022
Cathode chung
org 0000h
ljmp main P2.7
main:
mov R1,#100
label1: P2.0
Hiển thị 0->9
djzn R1,label1
Label2:
mov P2,#00000000B
sjmp label2 P2.0->P2.6
Wait1s:….
ret
END
Ví dụ:
• Điều khiển 02 LED
26
26/04/2022
7447
27
26/04/2022
𝑉𝑐𝑐 − 𝑈đ𝑚𝐿𝐸𝐷
𝑅𝐿𝐸𝐷 =
𝐼đ𝑚𝐿𝐸𝐷
• Điện áp nguồn cấp cho vi mạch là 𝑉𝑐𝑐 = 5𝑉 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
• Chọn LED có thông số do nhà sản xuất đưa ra là 𝑈đ𝑚𝐿𝐸𝐷 = 400mV = 0.4V và 𝐼đ𝑚𝐿𝐸𝐷 =
20mA = 0.02A
5𝑉−0.4
RLED = = 2,3*10+2 = 230Ω chọn RLED = 220 Ω
0.02
PhD. Huong-Giang Doan
28
26/04/2022
Nornal mode
29
26/04/2022
Bài tập:
• A) Viết chương trình hiển thị các số thừ 0->9
mỗi số cách nhau 1 giây QUÁ TRÌNH LẶP LẠI
LIÊN TỤC
• B) Viết chương trình hiển thị các số từ
0;2;4;6;8 lặp lại 100 lần; sau đó nháy số 0?
30
26/04/2022
main:
Chương trình câu b)
mov R1,#100
Label1:
mov P2,#0011 0000B ; So 0
Viết chương trình hiển thị
lcall wai1s
các số từ 0;2;4;6;8 lặp lại
mov P2, #0011 0010B; So 2 100 lần; sau đó nháy số 0?
lcall wai1s
mov P2, #0011 0100B; So 4
lcall wai1s
mov P2, #0011 0110B; So 6 Có Không
lcall wai1s điều điều
mov P2, #0011 1000B; So 8 kiện kiện
lcall wai1s
djnz R1,Label1
Label2:
mov P2,#0011 0000B; Hiển thị số 0
Label:
lcall wait1s
• Hiển thị số 0
mov P2,#0000 0000B; Tắt LED
lcall wait1s
• Trễ
sjmp Label2
• Tắt số 0
wait1s: • Trễ
…. Sjmp Label
ret
end
Lưu ý: LT và BI phải nối với P2.4 và P2.5 để thực hiện tắt LED
TS. Đoàn Thị Hương Giang 61
31
26/04/2022
Tắt
LED
64
32
26/04/2022
33
26/04/2022
LT P2.5
mov R1,#100 BI P2.4
Label1:
mov P2,#0011 0001B; Số 1
lcall wait1s
mov P2,#0011 0011B; Số 3
lcall wait1s
…..
djnz R1,Label1
Label2:
mov P2,#0011 0000B ; Hiển thị số 0
lcall wait1s
mov P2,#0010 0000B ; Tắt LED
lcall wait1s
sjmp Label2
…..
Ví dụ (tt)
Chương trình thực hiện hiển thị số 0 ra Led 1 và số 1 ra Led 2
• Chân g của Led nối với P0.6
• Chân a nối với P0.0
• Led anode chung nên dữ liệu cho số 0 và 1 lần lượt là:
– 0C0h và 0F9h.
• Dùng Timer tạo thời gian trì hoãn giữa 2 lần quét (200 µs)
34
26/04/2022
74LS374
35
26/04/2022
Ví dụ (tt)
Chương trình thực hiện hiển thị số 2 ra Led 3 và số 3 ra
Led 4
• Theo sơ đồ kết nối Led 3 nối với IC chốt 74LS374
điều khiển bằng chân P1.0 nên để hiển thị trên Led3
cần phải
• Xuất dữ liệu ra P0
• Kích xung tại chân P1.0 để chốt dữ liệu
• Làm tương tự với Led 4.
LED 7 thanh:
- Công suất trung bình và
lớn
- A nốt chung
36
26/04/2022
37
26/04/2022
Cathode chung
anode chung
38
26/04/2022
Ví dụ
• Yêu cầu hiển thị các số từ 00 99.
• Chia các nhóm:
– 0-> 9: hàng chục là 0, đơn vị chạy từ 0-> 9
– 10-> 19: hàng chục là 1, đơn vị 0->9
– ….
– 90->99: hàng chục là 9, đơn vị 0->9
39
26/04/2022
1 0
1 1
1 2
1 9
Bài 1:
• A) Vẽ sơ đồ kết nối LED đôi kép loại Anode chung với
VĐK 8051.
• B) Viết chương trình hiển thị các số từ 20->29
• C) Viết chương trình hiển thị các số từ 20->29 và quá
trình lặp lại 200 lần, sau đó cả hai LED nháy số 55?
Bài 2:
• A) Vẽ sơ đồ kết nối LED đôi kép loại Cathode chung với
VĐK 8051.
• B) Viết chương trình hiển thị các số từ 40-->49
• C) Viết chương trình hiển thị các số từ 40->49 và quá
trình lặp lại 200 lần, sau đó cả hai LED nháy số 66?
40
26/04/2022
1-LED1 2-LED2 g f e d c b a
1 1 1 0 0 0 0 0 0 0
1 1 1 1 1 1 0 0 1 1
1 1 0 1 0 0 1 0 0 2
1 1 0 1 1 0 0 0 0 3
……. ……. ……. ……. ……. ……. ……. ……. ……. …..
1 1 0 0 1 0 0 0 0 9
41
26/04/2022
Main: 20->29
setb P1.0
clr P1.1
mov P2,#0010 0100B ; LED1 sáng số 2
lcall wait1s
clr P1.0
setb P1.1
mov P2,#0100 0000B ; LED2 sáng số 0
lcall wait1s
setb P1.0
clr P1.1
mov P2,#0010 0100B ; LED1 sáng số 2
lcall wait1s
clr P1.0
setb P1.1
mov P2,#0111 1001B ; LED2 sáng số 1
lcall wait1s
Chương trình
• org 0000H
• lcall main
• org 200H
• main:
• lcall display0x
• lcall display1x
• lcall display2x
• lcall display3x
• lcall display4x
• lcall display5x
• lcall display6x
• lcall display7x
• lcall display8x
• lcall display9x
• jmp main
42
26/04/2022
• clr p1.0
• setb p1.1
• mov p2,#3FH; So 0
• lcall wait2s
• setb p1.0
• clr p1.1
• mov p2,#06H; so1
• ………
TS. Đoàn Thị Hương Giang 85
43
26/04/2022
LED ma trận
• Ma trận Led bao gồm nhiều Led đơn đóng gói chung trong
một khối liền, chia thành nhiều hàng và nhiều cột.
• Giao điểm của mỗi hàng và cột là một điểm sáng.
• LED ma trận có nhiều loại với các kích thước khác nhau. Để
LED hiển thị số được mịn thì phụ thuộc vào độ phân giải của
LED- Tinh theo đơn vị pixel (số lượng mắt led).
• Ví dụ: module ma trận 16×32 tức là 16 hàng led x 32 cột led.
44
26/04/2022
Phân loại
Theo kích thước/độ phân giải:
45
26/04/2022
anode nối với hàng, cathode nối với cột anode nối với cột, cathode nối với hàng
46
26/04/2022
47
26/04/2022
Hàng = 0100 0001B = 41H; Cột = 0001 0000B = 10H mov P0,#3EH
mov P1,#04H
lcall waitms
mov P0,#3EH
mov P1,#08H
lcall waitms
mov P0,#41H
mov P1,#10H
Hàng nối P0; Cột nối P1 lcall waitms
TS. Đoàn Thị Hương Giang
RET 96
48
26/04/2022
mov P0,#00H
mov P1,#04H
lcall waitms
RET
org 0000H
lcall main
org 200H a) Hiển thị các số 0,1,2 mỗi số cách nhau 1 giây.
main: Quá trình lặp lại liên tục?
lcall So0
lcall wait1s
lcall So1
lcall wait1s
lcall So2
lcall wait1s
ajmp main
So0:
…..
RET
So1:
…..
RET
So2:
…..
RET
Waitms:
….
RET
Wait1s:
Ret
END
49
26/04/2022
org 0000H
lcall main
org 200H a) Hiển thị các số 0,1,2 mỗi số cách nhau 1 giây.
main: Quá trình lặp lại liên tục trong 150 lần sau đó
MOV R0,#150
LED nháy số 0?
Label1:
lcall So0 LED nháy số 0
lcall wait1s
lcall So1
lcall wait1s
lcall So2
lcall wait1s
Hiển thị số 0 Tắt LED
djnz R0,Label1
Label2:
lcall So0
P1= 0; P0 = 1
lcall wait1s
mov P1,#0000 0000B Ngược với trường hợp bật LED
mov P0,#1111 1111B
lcall wait1s Cột Anot chung thì mức logic sáng là 1 Cột nối P1
sjmp Label2 Hàng Katot chung thì mức logic sáng là 0 Hàng nối P0;
So0:
…..
Bài tập1: Hãy vẽ sơ đồ kết nối VĐK 8051 với LED ma trận 5x7 trong
RET
So1: đó Cột nối với anot và Hàng nối với Ka tốt? (Không dùng P0)
….. Bài tập2: Hãy vẽ sơ đồ kết nối VĐK 8051 với LED ma trận 5x7 trong
RET đó Cột nối với Ka tốtvà Hàng nối với Anốt?
So2:
…..
RET TS. Đoàn Thị Hương Giang 99
Waitms:
….
RET
Wait1s:
Ret
END
50
26/04/2022
Chương trình
• Yêu cầu: Sáng số 0 trên ma trân Led
51
26/04/2022
52
26/04/2022
chuV:
mov P3,#01111111B
mov P2,#11000011B
lcall waits
mov P3,#10111111B
mov P2,#11000011B
lcall waits
mov P3,#11011111B
mov P2,#11000011B
lcall waits
mov P3,#11101111B
mov P2,#11000011B
lcall waits
mov P3,#11110111B
mov P2,#11000011B
lcall waits
mov P3,#11111011B
mov P2,#11100111B
lcall waits
mov P3,#11111101B
mov P2,#01111110B
lcall waits
mov P3,#11111110B
mov P2,#00111100B
lcall waits
mov p3,#11111111B
lcall waits
ret
53
26/04/2022
chuV:
mov P3,#01111111B
mov P2,#11000011B
lcall waits
mov P3,#10111111B
mov P2,#11000011B
lcall waits
mov P3,#11011111B
mov P2,#11000011B
lcall waits
mov P3,#11101111B
mov P2,#11000011B
lcall waits
mov P3,#11110111B
mov P2,#11000011B
lcall waits
mov P3,#11111011B
mov P2,#11100111B
lcall waits
mov P3,#11111101B
mov P2,#01111110B
lcall waits
mov P3,#11111110B
mov P2,#00111100B
lcall waits
mov p3,#11111111B
lcall waits
ret
54
26/04/2022
LCD
55
26/04/2022
Phân loại
Có thể chia các modul LCD thành 2 loại chính:
• Loại hiển thị ký tự (character LCD): 16x1 (16 ký tự x 1 dòng) , 16x2, 16x4,
20x1, 20x2 (20 ký tự x 2 dòng), 20x4, 40x1, 40x2, 40x4 (40 ký tj x 4
dòng). Mỗi ký tự được tạo bởi một ma trận các điểm sáng kích thước 5x7
hoặc 5x10 điểm ảnh.
• Loại hiển thị đồ họa (graphic LCD): đen trắng hoặc màu gồm có các kích
cỡ: 1.8 inch (128x160 điểm ảnh), 2.4 inch (240x320 điểm ảnh), 3.5 inch
(320x240 điểm ảnh), 7 inch (800x480 điểm ảnh)…
56
26/04/2022
GND
D0
D1
D2
D3
D4
D5
D6
D7
57
26/04/2022
• Chế độ điều khiển 4 bit: Chỉ sử dụng 4 bit từ D4 ÷ D7 để gửi thông tin
lên LCD hoặc đọc nội dung các thanh ghi trong LCD. Khi đó 1 byte
giao tiếp với LCD được truyền thành 2 lần theo quy tắc byte thấp
trước, byte cao sau
58
26/04/2022
Nguyên tắc hiển thị trên LCD: Một chương trình hiển thị ký tự trên LCD
sẽ đi theo bốn bước sau
3. Đặt vị trí con trỏ (nơi bắt đầu của ký tự hiện thị).
Chú ý:
• Các bước 3,4 có thể lặp lại nhiều lần nếu cần hiển thị nhiều ký tự.
• Mỗi khi thực hiện ghi lệnh hoặc ghi dữ liệu hiển thị lên LCD đều phải
kiểm tra cờ bận (busy_flag).
• Chế độ hiển thị mặc định sẽ là 8 bit data, hiển thị dịch, vị trí con trỏ là
đầu dòng thứ nhất.
59
26/04/2022
Display:
lcall Ready
mov P2,a
setb P3.0 ;RS=1 de gui data dang van ban
clr P3.1 ;RW=0 de ghi data vao LCD
setb P3.2
clr P3.2
ret
Ready:
setb P2.7
clr P3.0
setb P3.1
Back:
clr P3.2
setb P3.2
jb P2.7,Back
ret
60
26/04/2022
main:
mov a,#38H ; khoi tao LCD 2 dong 5x7 YC1: Hãy viết chương
lcall Command trình trên LCD
lcall Delay a) Hiển thị tên trên dòng
mov a,#0EH ;Hien thi vi tri con tro
1?
lcall Command
lcall Delay VD: DUONG, HUNG….
mov a,#01H ;Xoa man hinh b) Dòng 2 hiển thị tên
lcall Command lớp?
lcall Delay VD: D13TDH1
DSP_EPU:
mov a,#01H
lcall Command
lcall Delay
mov a,#80H ;dua con tro ve dau man hinh dong 1
lcall Command
lcall Delay YC2: Hãy viết chương trình trên LCD
mov a,#“D"
a) Hiển thị tên trên dòng 1 tại vị trí
lcall Display
lcall Delay
số 3?
mov a,#06H ;dich con tro phải VD: DUONG, HUNG….
lcall Command b) Dòng 2 hiển thị tên lớp ở vị trí
lcall Delay thứ 5?
mov a,#“1" VD: D13TDH1
lcall Display
……
TS. Đoàn Thị Hương Giang 121
61
26/04/2022
62
26/04/2022
Upper 4 bits
Lower 4 bits
Upper
4 bits
11011111B = DFH
Lower TS. Đoàn Thị Hương Giang 126
4 bits
63
26/04/2022
KEY/SWITCH
64
26/04/2022
R3
10k
P1.1
C7
10uF
C6
10uF
R8
10k
1. Tốt 2. Kém
Phím chưa nhấn
65
26/04/2022
DIP Switch
MOV A, P1
66
26/04/2022
ORG 0000H
Chương trình quét 02 phím ljmp main1
org 200H
main1:
P1.7 P1.1 P1.0 mov P2,#00H
nop
a=P1
main:
000
0 0 00
0 0 00
0 1 01 mov a,P1
anl a,#00000011b
cjne a,# 00000011b,checkey
a 0 0 0 0 0 0 jmp main
P1.1 P1.0 checkey:
cjne a,#00000010B,check2
Giữ lại trạng thái hai cổng P1.0
setb P2.0
và P1.1 để kiểm tra trạng thái
clr P2.1
phím có tác động không
jmp main
check2:
Nếu phím không nhấn thì = 11; có phím cjne a,#00000001B,the_end
nhấn thì khác 11 nhảy đến checkey setb P2.1
clr P2.0
the_end:
Nếu phím 1 nhấn thì = 10 jmp main
end
67
26/04/2022
Bài tập
Bài 1:
a) Vẽ sơ đồ kết nối VĐK với 03 phím đơn tích
cực mức thấp có chống rung phần cứng với
LED 7 thanh loại Anode chung?
b) Viết chương trình theo yêu cầu sau:
- Phím 1 bấm Led hiển thị các số chẵn 0,2,4,6,8
- Phím 2 bấm LED hiển thị các số lẻ: 1,3,5,7,9
- Phím 3 bấm Led hiển thị số 0 nhấp nháy 100 lần
thì dừng
Bài tập
Bài 1:
a) Vẽ sơ đồ kết nối VĐK với 08 LED đơn?
b) Viết chương trình điều khiển sáng từ LED 1 đến LED 8 mỗi led
sáng cách nhau 1s
Bài 2:
a) Vẽ sơ đồ kết nối VĐK với 03 phím đơn tích cực mức thấp có chống
rung phần cứng với LED 7 thanh loại Anode chung?
b) Viết chương trình theo yêu cầu sau:
- Phím 1 bấm Led hiển thị các số chẵn 0,2,4,6,8
- Phím 2 bấm LED hiển thị các số lẻ: 1,3,5,7,9
- Phím 3 bấm Led hiển thị số 0 nhấp nháy 100 lần thì dừng
Bài 3:
a) Vẽ sơ đồ kết nối VĐK với LCD ?
b) Viết chương trình hiển thị tên trên dòng 1 và lớp trên dòng 2?
68
26/04/2022
69
26/04/2022
70
26/04/2022
Main:
mov a,P1 Đọc cổng và kiểm tra
anl a,#00001111b trạng thái có phím nào
cjne a,#00001111B,checkey được bấm hay không?
jmp Main
checkey:
cjne a,#00001110B,check2 ; có phải phím 1 không?
jmp dsp1
check2:
cjne a,#00001101B,check3 ; có phải phím 2 không?
jmp dsp2
check3:
cjne a,#00001011B,check4 ; có phải phím 3 không?
jmp dsp3
check4:
cjne a,#00000111B,The_end; ; có phải phím 4 không?
jmp dsp4
The_end: Chương trình quét phím không có
jmp Main chống rung bằng phần mềm
• mov a,P1
• anl a,#00001111b
• cjne a,#00001111B,checkeyfezzz
• checkeyfezzz:
• lcall wait1s
• lcall wait1s
•
•
lcall
lcall
wait1s
wait1s Chống rung bằng phần mềm
• lcall wait1s
• mov a,P1
• anl a,#00001111b
• cjne a,#00001111B,checkey
• jmp main
• checkey:
• cjne a,#00001110B,check2
• jmp dsp1
• check2:
• cjne a,#00001101B,check3
• jmp dsp2
• check3:
• cjne a,#00001011B,check4
• jmp dsp3
• check4:
•
•
cjne
jmp
a,#00000111B,check5
dsp4 Chương trình quét phím có chống
• check5:
• cjne a,#00000011B,check6 rung bằng phần mềm
• jmp dsp5
• check6:
• cjne a,#00001100B,check7
• jmp dsp6
• check7:
• cjne a,#00000101B,check8
• jmp dsp7
• check8:
• cjne a,#00001010B,check9
• jmp dsp8
• check9:
• cjne a,#00000110B,check10
• jmp dsp9
• check10:
• jmp main
71
26/04/2022
org 0000H
ljmp main1
org 200H
main1: HTChan:
mov R4,#1 mov P2,#So0
main:
lcall wait1s
mov a,P1
……
anl a,#00001111b (1) jmp main
cjne a,#00001111b,check_key
jmp check_mode
HTLe:
check_key: mov P2,#So1
cjne a,#00001110B,check2 lcall wait1s
mov R4,#2 ……
ljmp main jmp main
check2:
cjne a,#00001101B,check3 HTChan_Le:
mov R4,#3 mov P2,#So0
ljmp main lcall wait1s
check3: mov P2,#So1
cjne a,#00001011B,check4 lcall wait1s
mov R4,#4 ……
ljmp main jmp main
check4:
cjne a,#00000111B,check_mode TAT:
mov R4,#5 mov P2,#0FFH ; Nếu Anot chung
check_mode: jmp main
cjne R4,#2,mode2
ljmp HTChan
;-------------------------
mode2:
cjne R4,#3,mode3
ljmp HTLe
mode3: (2)
cjne R4,#4,mode4
ljmp HTChan_Le
mode4:
cjne R4,#5,the_end
ljmp TAT
the_end:
ljmp main
TS. Đoàn Thị Hương Giang 143
72
26/04/2022
73
26/04/2022
74
26/04/2022
75
26/04/2022
76
26/04/2022
org 0000H
ljmp main Ép hàng 1 = 0
org 200H (P3.3 = 0) Cột 1 (P3.0)
main:
mov P3,#00010111B
mov a,P3 Cột 2 (P3.1) Ép hàng 2 = 0
ANL A,#00011111b ;---------------------------------------- (P3.4 =0)
cjne a,#00010110B,CHECK_11
MOV p2,#00000001B CHECK_2:
JMP MAIN mov P3,#00001111B
mov a,P3
CHECK_11:
ANL A,#00011111b
cjne a,#00010101B, CHECK_12 cjne a,#00001110B,CHECK_21
MOV p2,#00000010B MOV p2,#00000100B
JMP MAIN JMP MAIN
CHECK_12: CHECK_21:
cjne a,#00001101B,CHECK_22
cjne a,#00010011B,CHECK_2
MOV p2,#00000101B
MOV p2,#00000011B JMP MAIN
JMP MAIN CHECK_22:
cjne a,#00001011B,END2
MOV p2,#00000110B
JMP MAIN
END2:
Cột 3 (P3.2) jmp main
end
;----------------------------------------
TS. Đoàn Thị Hương Giang 153
77
26/04/2022
• org 0000H
• ljmp main
• org 200H
• main:
• mov P3,#00010111B
• mov a,P3
• ANL A,#00011111b
• cjne a,#00010110B,CHECK_1
• MOV p2,A
• JMP MAIN
• CHECK_1:
• cjne a,#00010101B,CHECK_2
• MOV p2,A
• JMP MAIN
• CHECK_2:
• cjne a,#0010011B,CHECK_MAIN2
• MOV p2,A
• JMP MAIN
• ;----------------------------------------
• CHECK_MAIN2:
• mov P3,#00001111B
• mov a,P3
• ANL A,#00011111b
• cjne a,#00001110B,CHECK_3
• MOV p2,A
• JMP MAIN
• CHECK_3:
• cjne a,#00001101B,CHECK_4
• MOV p2,A
• JMP MAIN
• CHECK_4:
• cjne a,#00001011B,END2
• MOV p2,A
• JMP MAIN
• END2:
• jmp main
bảng kê dưới.
78
26/04/2022
- Để đọc toàn bộ bàn phím, mỗi hàng lần lượt được đặt như sau:
+/ Dữ liệu 0111 được ghi ra các bit cổng xuất.
+/ Các bit cổng nhập được đọc vào, 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 ra cổng xuất bằng cách dịch bit 0 vào cột
kế tiếp và giá trị cổng nhập được đọc vào.
+/ Dữ liệu 1101 được ghi ra cổng xuất bằng cách dịch bit 0 vào cột
kế tiếp và giá trị cổng nhập được đọc vào.
+/ Dữ liệu 1110 được ghi ra cổng xuất bằng cách dịch bit 0 vào cột
kế tiếp và giá trị cổng nhập được đọc vào.
+/ Chu kỳ này được lặp lại vô tận bằng cách quay về bit 1.
79
26/04/2022
…To continuous
80