Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit
Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần
cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại.
Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ
Bước 15.
o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành.
3.8.6. Bài tập thực hành.
3.8.6.1. Bài tập mẫu.
270 trang |
Chia sẻ: huongthu9 | Lượt xem: 470 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HI
PUSH 00H
PUSH 01H
MOV R0,#00H ;VI TRI CUA DU LIEU COT DAU TIEN
TRONG VUNG MA
MOV R1,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A,R0
MOVC A,@A+DPTR ;LAY MA HIEN THI TRONG
VUNG MA THEO VI TRI
MOV P2,A ;XUAT MA HIEN THI RA HANG
MOV P1,R1 ;XUAT MA QUET RA COT
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
INC R0 ;LAY DU LIEU KE TIEP
MOV A,R1 ;DICH MA QUET - MA QUET CHO COT KE
TIEP
RL A
MOV R1,A
234
CJNE R0,#08H,SCAN ;KIEM TRA QUET XONG CAC COT
(MA TRAN GOM 8 COT)
POP 01H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP 00H
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP:
DB 81H,7FH,87H,7FH,81H,0FFH ;CHU W
DB 01H,6DH,6DH,6DH,7DH,0FFH ;CHU E
DB 01H,7FH,7FH,7FH,7FH,0FFH ;CHU L
DB 83H,7DH,7DH,7DH,0BBH,0FFH ;CHU C
DB 83H,7DH,7DH,7DH,83H,0FFH ;CHU O
DB 01H,0FBH,0F7H,0FBH,01H,0FFH ;CHU M
DB 01H,6DH,6DH,6DH,7DH,0FFH ;CHU E
END
3.6.6.2. Bài tập ứng dụng.
Bài 1: Hãy viết chương trình điều khiển hiển thị chữ M màu đỏ trên
LED ma trận (COL-RED được nối với Port1, ROW được nối với Port2).
Bài 2: Hãy viết chương trình điều khiển hiển thị liên tục chữ A
sáng màu đỏ, sau đó là màu xanh và cuối cùng là màu vàng trên LED ma trận
(COL-RED được nối với Port 1, COL-GRE được nối với Port2, ROW được nối
với Port3).
Bài 3: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 0
lên 9 màu đỏ trên LED ma trận (COL-RED được nối với Port1, ROW được nối
với Port2).
Bài 4: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 0
đến 9 trên LED ma trận (COL-GRE được nối với Port1, ROW được nối với
235
Port2). Với điều kiện màu của các số sẽ thay đổi liên tục ĐỎ – XANH – VÀNG
mỗi khi con số trên LED ma trận thay đổi.
Bài 5: Hãy viết chương trình điều khiển hiển thị các ký tự từ A đến
Z trên LED ma trận (COL-GRE được nối với Port1, ROW được nối với Port2).
Với điều kiện màu của các ký tự sẽ thay đổi liên tục ĐỎ – XANH – VÀNG sau
mỗi một giây đồng hồ.
Bài 6: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự
“TRUONG DAI HOC CONG NGHIEP TP HO CHI MINH – KHOA DIEN
TU” màu đỏ dịch chuyển từ phải sang trái trên LED ma trận (COL-RED được
nối với Port1, ROW được nối với Port2).
3.7. Điều khiển và giao tiếp với LCD.
Mục đích:
Thực hành lập trình ứng dụng trên máy tính, biên dịch chương
trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng.
Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
Khảo sát nguyên lý hoạt động và nguyên lý điều khiển LCD.
Điều khiển để hiển thị các thông tin trên màn hình tinh thể lỏng
LCD (chuẩn công nghiệp, loại 2 hàng x 16 ký tự).
Yêu cầu:
Nắm vững tập lệnh của vi điều khiển MCS-51.
Biết cách viết các chương trình điều khiển LCD.
Nắm được sơ đồ và nguyên lý hoạt động của khối LCD trên mô
hình thí nghiệm.
Nắm được nguyên lý và kỹ thuật điều khiển để hiển thị các thông
tin trên LCD.
Biết cách viết các chương trình ứng dụng để hiển thị các dạng
thông tin khác nhau trên LCD tùy theo nhu cầu sử dụng.
3.7.1. Sơ đồ nguyên lý.
3.7.1.1. Sơ đồ nguyên lý.
236
D4
D7
D1
D6
D2
D0
D5
D3
CONTRAST
RS
ENA
LCD
16 Characters x 2 Lines
U4 YM1602C
G
N
D
1
V
C
C
2
V
E
E
3
R
S
4
R
/W
5
E
6
D
0
7
D
1
8
D
2
9
D
3
1
0
D
4
1
1
D
5
1
2
D
6
1
3
D
7
1
4
L
E
D
+
1
5
L
E
D
-
1
6
R13
10K
R/W
J15
POWER
1
2
3
J16
DATA LCD
1
2
3
4
5
6
7
8
J17
CTRL LCD
1
2
3
VCC
VCC
VCC
C9
104
VCC
GND
+5V
GND
R14
10
Hình 3.7.1: Sơ đồ nguyên lý khối LCD.
3.7.1.2. Sơ đồ bố trí linh kiện.
Hình 3.7.2: Khối LCD.
BÀI THỰC HÀNH
Viết chương trình, mô phỏng và lắp ráp mạch điều khiển LCD hiển thị hai
dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY: PQT.” đứng
yên trên hai dòng của màn hình LCD
3.7.2. Lưu đồ giải thuật.
Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển.
237
Hình 3.7.3: Lưu đồ giải thuật của chương trình.
3.7.3. Chương trình điều khiển.
238
Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình
và biên dịch, kiểm tra lỗi cú pháp của chương trình.
Bước 2: Khởi động phần mềm Topview Simulation.
Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên
tập tin chương trình là: E1.ASM
Bước 4: Viết chương trình điều khiển dưới đây vào máy tính.
;***************************************************
;CHUONG TRINH DIEU KHIEN LCD HIEN THI 2 DONG CHU DUNG YEN
;***************************************************
;RS -> P0.0, RW -> P0.1, E -> P0.2
;DATA BUS -> PORT 1
;***************************************************
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P1
;***************************************************
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
MP1:
ACALL DISP_FLINE ;HIEN THI DONG 1
ACALL DISP_SLINE ;HIEN THI DONG 2
SJMP $
;***************************************************
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
239
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN
THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI
HIEN THI, TAT DICH CHUYEN HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
RET
;***************************************************
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU
LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN
THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC
LCD GHI NHAN THONG TIN GUI DEN
;***********************************************************
**
;MOV TH0,#HIGH(-2000) ;LENH NAY DUOC THAY THE
CHO DOAN MA KIEM TRA DUOI DAY KHI
;MOV TL0,#LOW(-2000) ;CHAY CHUONG TRINH
NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;***********************************************************
**
MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE
DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
240
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC
HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE (THOAT CHE
DO READ, TRO VE CHE DO WRITE)
;***********************************************************
**
RET
;***************************************************
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU
LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI
BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
1 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU
LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM
DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
2 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU
KHI DU LIEU GUI DI LA 99H
MOV A,#0 ;OFFSET DAU TIEN TRONG VUNG DU
LIEU CUA DPTR
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU
LIEU
241
CJNE A,#99H,WRITE_CONT ;KIEM TRA LAY HET DU LIEU
TRONG VUNG DU LIEU - KET THUC LA 99H
RET
WRITE_CONT: ;KHONG PHAI LA DU LIEU KET
THUC - CHUA LAY HET DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA
PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP
SJMP WRITE ;QUAY TRO VE DE GUI DU LIEU KE
TIEP
;***************************************************
DELAY:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB 'MICRO-CONTROLLER'
DB 99H ;MA KET THUC DONG (TU CHON)
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB 'DESIGNEDBY:PQT'
DB 99H ;MA KET THUC DONG (TU CHON)
END
Bước 5: Lưu chương trình trên vào máy tính.
Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do cú pháp của
các lệnh không chính xác, cần phải được kiểm tra lại. Sau khi hoàn tất việc hiệu
chỉnh sai sót thì quay trở về thực hiện từ Bước 5.
o Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập
tin mã máy với tên là: E1.HEX và thực hiện tiếp theo các phần nội dung dưới
đây.
3.7.4. Mô phỏng hoạt động.
Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô
phỏng quá trình hoạt động của hệ thống vi điều khiển.
242
Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10).
Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển LCD như
Hình 3.7.4 dưới đây.
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D
7
A
D
2
A
D
0
A
D
1
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D1
D2
D3
D4
D5
D6
D7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+
5
V
MA ÏCH Ñ I EÀU K HI EÅN LCD
D
7
14
D
6
13
D
5
12
D
4
11
D
3
10
D
2
9
D
1
8
D
0
7
E
6
R
W
5
R
S
4
V
S
S
1
V
D
D
2
V
E
E
3
LCD1
ALPHANUMERIC LCD 16 CHAR x 2 LINE
Hình 3.7.4: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển.
Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập
tin là: E1,2,4.DSN. Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc
lấy mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học.
Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy
đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: E1.HEX
Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả
trên màn hình máy tính.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do giải thuật
chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần
phải được kiểm tra lại. Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về
thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8
(do mạch mô phỏng vẽ không chính xác).
243
o Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần
nội dung dưới đây.
3.7.5. Lắp mạch và nạp chương trình điều khiển.
Sử dụng các khối "Microcontroller Unit Slot", "LCD", và "Power Supply"
có sẵn trên mô hình thực hành vi điều khiển để lắp ráp mạch theo thiết kế bên
trên.
Bước 11: Kết nối các khối trên mô hình như Hình 3.7.5 để tạo
thành hệ thống mạch điều khiển như bên trên.
o Tắt nguồn AC cấp cho mô hình thực hành.
o Dùng dây bus 3 nối J63 (PORT0 / DATA) ở khối vi điều
khiển với J47 (CTRL LCD) ở khối LCD (chú ý là ta chỉ nối 3 bit thấp của J63
và J47 với nhau).
o Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với
J46 (DATA / CODE LCD) ở khối LCD.
o Dùng dây bus 3 nối J104 (POWER) ở khối LCD với nguồn
+5V ở khối nguồn.
Hình 3.7.5: Sơ đồ kết nối mạch trên mô hình.
Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi
điều khiển P89V51RB2 trên mô hình thực hành.
Bước 12: Bật nguồn AC cấp cho mô hình thực hành.
Bước 13: Khởi động phần mềm Flash Magic.
Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng
COM, tốc độ truyền, chuẩn giao tiếp,...)
244
Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã
được tạo ra từ Bước 6): E1.HEX
Bước 16: Nạp chương trình vào vi điều khiển.
Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit
Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần
cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại.
Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ
Bước 15.
o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành.
3.7.6. Bài tập thực hành.
3.7.6.1. Bài tập mẫu.
Bài tập số 1:
Nội dung:
"Chương trình điều khiển LCD hiển thị hai dòng chữ “WELLCOME
TO MICROCONTROLLER SYSTEM – 51” và “DESIGNED BY: PQT.”
trên hai dòng của màn hình LCD với yêu cầu: dòng chữ thứ nhất sẽ dịch
chuyển liên tục từ phải sang trái, dòng chữ thứ hai đứng yên"
Lưu đồ giải thuật:
245
Chương trình điều khiển:
;***************************************************
;CHUONG TRINH DIEU KHIEN LCD HIEN THI DONG CHU 1 DICH
CHUYEN, DONG CHU 2 DUNG YEN
;***************************************************
;RS -> P0.0, RW -> P0.1, E -> P0.2
;DATA BUS -> PORT 1
;***************************************************
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P1
;***************************************************
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
ACALL DISP_SLINE ;HIEN THI DONG 2
MP1: ;XU LY DICH CHUYEN DU LIEU HIEN THI CHO DONG 1
246
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
1 CUA LCD
SHIFT:
ACALL DISP_FLINE ;HIEN THI DONG 1
MOV R1,#50 ;DELAY 500MS
DEL500:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
ACALL DELAY
DJNZ R1,DEL500 ;THOI GIAN DUNG YEN CUA MOT TRANG
THAI MAN HINH LCD
INC DPTR ;TANG GIA TRI DPTR DE DICH CHUYEN
DONG CHU
MOV A,DPL ;KIEM TRA DA DICH XONG DONG
CHU RA MAN HINH LCD
CJNE A,#LOW(FLINE_DATA+55),SHIFT
MOV A,DPH
CJNE A,#HIGH(FLINE_DATA+55),SHIFT
SJMP MP1
;***************************************************
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN
THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
247
MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI
HIEN THI, TAT DICH CHUYEN HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
RET
;***************************************************
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU
LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN
THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC
LCD GHI NHAN THONG TIN GUI DEN
;***********************************************************
**
;MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE
CHO DOAN MA KIEM TRA DUOI DAY KHI
;MOV TL0,#LOW(-1000) ;CHAY CHUONG TRINH
NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;***********************************************************
**
MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE
DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC
HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
248
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE (THOAT CHE
DO READ, TRO VE CHE DO WRITE)
;***********************************************************
**
RET
;***************************************************
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU
LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI
BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU
LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM
DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
2 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU
KHI DU LIEU GUI DI LA 99H
MOV R0,#0 ;OFFSET DAU TIEN TRONG VUNG DU
LIEU CUA DPTR
WR1:
MOV A,R0 ;NAP OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU
LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA
PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#16,WR1 ;KIEM TRA NAP DAY DU DU LIEU
CHO MOT DONG MAN HINH - 16 CHU
RET
;***************************************************
DELAY:
249
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB ''
DB 'WELLCOMETOMICROCONTROLLERSYSTEM-51'
DB ''
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB 'DESIGNEDBY:PQT'
END
Bài tập số 2:
Nội dung:
"Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ”
và “DESIGNED BY PHAM QUANG TRI – ELECTRIC TRAINING
CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai dòng
của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân
P3.0 sẽ được hiển thị trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE
=”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang trái. Xung được tạo ra
bằng cách nhấn nút nhấn KEY0"
Lưu đồ giải thuật:
250
Chương trình điều khiển:
;***************************************************
;CHUONG TRINH DIEU KHIEN LCD HIEN THI DONG CHU 1 HIEN THI
XUNG, DONG CHU 2 DICH CHUYEN
;***************************************************
;RS -> P0.0, RW -> P0.1, E -> P0.2
;DATA BUS -> PORT 1
;MOMENTARY SW -> PORT 3 (P3.0 -> ACT = 0)
;***************************************************
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P1
;***************************************************
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
ACALL DISP_FLINE ;HIEN THI DONG 1
MOV R7,#0 ;SO XUNG BAN DAU
MP1:
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
2 CUA LCD
SHIFT:
251
ACALL DISP_SLINE ;HIEN THI DONG 2
ACALL DISP_PULSE ;HIEN THI SO XUNG
JB P3.0,DEL500 ;TIEP TUC CHUONG TRINH KHI
KHONG NHAN NUT NHAN
JNB P3.0,$ ;CHO NHA NUT NHAN
MOV A,R7 ;TANG GIA TRI KHI CO NHAN NUT NHAN
ADD A,#1
DA A
MOV R7,A
MOV R1,#100 ;DELAY 500MS
DEL500:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
ACALL DELAY
DJNZ R1,DEL500 ;THOI GIAN DUNG YEN CUA MOT TRANG
THAI MAN HINH LCD
INC DPTR ;TANG GIA TRI DPTR DE DICH CHUYEN
DONG CHU
MOV A,DPL ;KIEM TRA DA DICH XONG DONG
CHU RA MAN HINH LCD
CJNE A,#LOW(SLINE_DATA+106),SHIFT
MOV A,DPH
CJNE A,#HIGH(SLINE_DATA+106),SHIFT
SJMP MP1
;***************************************************
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
252
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN
THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI
HIEN THI, TAT DICH CHUYEN HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
RET
;***************************************************
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU
LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN
THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC
LCD GHI NHAN THONG TIN GUI DEN
;***********************************************************
**
;MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE
CHO DOAN MA KIEM TRA DUOI DAY KHI
;MOV TL0,#LOW(-1000) ;CHAY CHUONG TRINH
NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;***********************************************************
**
MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE
DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
253
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC
HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE (THOAT CHE
DO READ, TRO VE CHE DO WRITE)
;***********************************************************
**
RET
;***************************************************
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU
LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI
BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
1 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU
LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM
DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
DISP_PULSE: ;CTC HIEN THI SO XUNG TAI CHAN P3.0
MOV DATABUS,#88H ;CODE = 88H - DAT DDRAM DIA CHI
HIEN THI SO XUNG - 08H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL BCDTOASCII ;GOI CHUONG TRINH GIAI MA
BCD SANG ASCII
MOV DATABUS,7FH ;CHUYEN DU LIEU CAN GUI RA
PORT DEN LCD (HANG CHUC)
ACALL SENDDATA
MOV DATABUS,7EH ;CHUYEN DU LIEU CAN GUI RA
PORT DEN LCD (HANG DON VI)
254
ACALL SENDDATA
RET
;***************************************************
BCDTOASCII: ;CTC CHUYEN DOI TU SO BCD CHUA TRONG R7 (00 -
99) SANG MA ASCII (2 MA)
MOV A,R7 ;LAY GIA TRI BCD (R7) CAN CHUYEN DOI
ANL A,#0FH ;GIU LAI 4 BIT THAP (HANG DON VI)
ADD A,#30H ;DOI SANG ASCII (ASCII = BCD + 30H)
MOV 7EH,A ;CAT SO ASCII VAO VUNG NHO HANG
DON VI
MOV A,R7 ;LAY GIA TRI BCD (R7) CAN CHUYEN DOI
ANL A,#0F0H ;GIU LAI 4 BIT CAO (HANG CHUC)
SWAP A
ADD A,#30H ;DOI SANG ASCII (ASCII = BCD + 30H)
MOV 7FH,A ;CAT SO ASCII VAO VUNG NHO HANG
CHUC
RET
;***************************************************
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU
KHI DU LIEU GUI DI LA 99H
MOV R0,#0 ;OFFSET DAU TIEN TRONG VUNG DU
LIEU CUA DPTR
WR1:
MOV A,R0 ;NAP OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU
LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA
PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#16,WR1 ;KIEM TRA NAP DAY DU DU LIEU
CHO MOT DONG MAN HINH - 16 CHU
RET
;***************************************************
DELAY: ;CTC DELAY CO KET HOP KIEM TRA NUT NHAN P3.0
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB 'PULSE='
255
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB ''
DB 'DESIGNEDBYPHAMQUANGTRI'
DB '-ELECTRICTRAININGCENTER-'
DB 'HOCHIMINHUNIVERSITYOFINDUSTRY'
DB ''
END
Bài tập số 3:
Nội dung:
"Chương trình điều khiển LCD hiển thị dòng chữ “> KHOA DIEN
TU <” và 8 ký tự người dùng tạo ra (ký tự không được thiết kế sẵn trên
LCD) trên hai dòng của màn hình LCD"
Lưu đồ giải thuật:
Chương trình điều khiển:
;***************************************************
;CHUONG TRINH DIEU KHIEN LCD HIEN THI 2 DONG CHU DUNG YEN
;DONG THU NHAT HIEN THI "> KHOA DIEN TU <"
256
;DONG THU HAI HIEN THI CAC KY TU DO NGUOI SU DUNG TAO RA
(8 KY TU)
;***************************************************
;RS -> P0.0, RW -> P0.1, E -> P0.2
;DATA BUS -> PORT 1
;***************************************************
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P1
;***************************************************
ORG00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
ACALL CGRAM ;DINH NGHIA (THIET KE) CAC KIEU
KY TU NGUOI DUNG
ACALL DISP_FLINE ;HIEN THI DONG 1
ACALL DISP_SLINE ;HIEN THI DONG 2
SJMP $
;***************************************************
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE,
MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN
THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
257
MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI
HIEN THI, TAT DICH CHUYEN HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
RET
;***************************************************
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU
LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN
THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSYFLAG) DE DAM BAO HOAN TAT
VIEC LCD GHI NHAN THONG TIN GUI DEN
;***********************************************************
**
;MOV TH0,#HIGH(-1000) ;DOAN LENH NAY DUOC
THAY THE CHO DOAN LENH KIEM TRA DUOI DAY
;MOV TL0,#LOW(-1000) ;KHI CHAY CHUONG
TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;***********************************************************
**
MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE
DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC
HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSYFLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
258
JB ACC.7,BUSY2 ;KIEM TRA CO BUSYLAN 2
CLR RW ;RW = 0 - WRITE LCD MODE
;***********************************************************
**
RET
;***************************************************
CGRAM: ;CTC DAT DIA CHI BAT DAU CUA BO NHO CGRAM (VUNG
NHO CHUA CAC KY TU DO NGUOI SU DUNG TAO RA).
MOV DATABUS,#40H ;CODE = 40H - DAT CGRAM CO DIA CHI
BAT DAU LA 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#CGRAM_DATA ;NAP DIA CHI VUNG DU LIEU CUA
CAC KY TU DO NGUOI DUNG THIET KE RA.
ACALLWRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU
LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT
DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
1 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU
LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI
BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG
2 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG
LCD
RET
;***************************************************
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU
KHI DU LIEU GUI DI LA 99H
MOV A,#0 ;OFFSET DAU TIEN TRONG VUNG DU
LIEU CUA DPTR
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU
LIEU
259
CJNE A,#99H,WRITE_CONT ;KIEM TRA LAY HET DU LIEU
TRONG VUNG DU LIEU - 99H
RET
WRITE_CONT: ;KHONG PHAI LA DU LIEU KET
THUC - CHUA LAY HET DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA
PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP
SJMP WRITE ;QUAY TRO VE DE GUI DU LIEU KE
TIEP
;***************************************************
DELAY:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB'>KHOADIENTU<'
DB99H ;MA KET THUC DONG (TU CHON)
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB00H,01H,02H,03H,04H,05H,06H,07H
DB99H ;MA KET THUC DONG (TU CHON)
CGRAM_DATA: ;DU LIEU HIEN THI CAC KY TU DAC BIET (DO
NGUOI SU DUNG TU QUI DINH)
FONT1:
DB0AH,15H,11H,11H,0AH,04H,00H,00H ;HINH TRAI TIM XUOI.
FONT2:
DB04H,0AH,11H,11H,15H,0AH,00H,00H ;HINH TRAI TIM NGUOC.
FONT3:
DB04H,0EH,15H,04H,04H,04H,04H,00H ;HINH MUI TEN HUONG
LEN.
FONT4:
DB04H,04H,04H,04H,15H,0EH,04H,00H ;HINH MUI TEN HUONG
XUONG.
FONT5:
DB18H,18H,1FH,1FH,1FH,18H,18H,00H ;HINH CHU T NAM
NGANG.
FONT6:
DB1FH,1FH,03H,03H,03H,1FH,1FH,00H ;HINH CHU U NAM
NGANG.
260
FONT7:
DB0AH,15H,0AH,15H,0AH,15H,0AH,00H ;HINH CARO 1.
FONT8:
DB15H,0AH,15H,0AH,15H,0AH,15H,00H ;HINH CARÒ 2.
DB99H ;MA KET THUC (TU CHON)
END
3.7.6.2. Bài tập ứng dụng.
Bài 1: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ
“KHOA CONG NGHE” và “DIEN TU” đứng yên trên hai dòng của màn hình
LCD.
Bài 2: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ
“KHOA CONG NGHE DIEN TU – BO MON DIEN TU CONG NGHIEP” và
“DH CONG NGHIEP” trên hai dòng của màn hình LCD với yêu cầu: dòng chữ
thứ nhất dịch chuyển liên tục từ phải sang trái, dòng chữ thứ hai đứng yên.
Bài 3: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ
“TRUONG DAI HOC CONG NGHIEP THANH PHO HO CHI MINH” và
“KHOA CONG NGHE DIEN TU – BO MON DIEN TU CONG NGHIEP” trên
hai dòng của màn hình LCD với yêu cầu: hai dòng chữ đồng thời dịch chuyển
liên tục từ phải sang trái.
Bài 4: Hãy viết chương trình điều khiển LCD hiển thị một số ký tự
đặc biệt như: trên hai dòng của màn hình LCD.
Bài 5: Hãy viết chương trình điều khiển LCD hiển thị một số ký tự
đặc biệt như: á à ả ã ạ â ấ ầ ẩ ẫ ậ ắ ằ ẳ ẵ ặ đ é è ẻ ẽ ẹ ê ế ề ể ễ ệ í ì ỉ ĩ ị ó ò ỏ õ ọ ô
ố ồ ổ ỗ ộ ơ ớ ờ ở ỡ ợ ú ù ủ ũ ụ ư ứ ừ ử ữ ự ý ỳ ỷ ỹ ỵ trên hai dòng của màn hình
LCD.
Bài 6: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ
“HO CHI MINH UNIVERSITY OF INDUSTRY – ELECTRONIC
TRAINNING CENTER” và “IN 1 = IN 2 = ” trên hai dòng của màn hình
LCD với yêu cầu: dòng chữ thứ nhất sẽ dịch chuyển từ phải sang trái, số lượng
xung đếm được tại chân P3.0 (IN 1) và chân P3.1 (IN 2) sẽ được hiển thị trên
dòng thứ nhất tiếp phía sau dòng chữ “UP = DOWN= ”. Xung được tạo ra
bằng cách nhấn nút nhấn KEY0.
Bài 7: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ
tiếng Việt có dấu (tự chọn nội dung hiển thị) trên hai dòng của màn hình LCD.
3.8. Điều khiển và giao tiếp với nút nhấn – bàn phím.
Mục đích:
261
Thực hành lập trình ứng dụng trên máy tính, biên dịch chương
trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng.
Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
Điều khiển các thiết bị ngoại vi bằng bàn phím (bàn phím thiết kế
theo kiểu ma trận).
Trình bày kỹ thuật quét phím cho dạng bàn phím ma trận 16 phím
(4 hàng x 4 cột).
Trình bày một số ứng dụng trong kỹ thuật điều khiển bàn phím.
Yêu cầu:
Nắm vững tập lệnh của vi điều khiển MCS-51.
Biết cách viết các chương trình điều khiển bàn phím ma trận.
Nắm được sơ đồ và nguyên lý hoạt động của khối bàn phím ma trận
trên mô hình thí nghiệm.
Nắm được nguyên lý và kỹ thuật quét phím cho các dạng bàn phím
ma trận.
Biết cách viết các chương trình ứng dụng có sử dụng bàn phím ma
trận để điều khiển các thiết bị ngoại vi khác nhau.
3.8.1. Sơ đồ nguyên lý.
3.8.1.1. Sơ đồ nguyên lý.
SW43 0
C3
J223
POWER
1
2
3
VCC
GND
GND
+5V
C0
R2
R1
C1
R0
C3
C2
R3
R234 10K
1
2
3
4
5
6
7
8
9
VCC
R2
R1
R3
C1
C3
R0
C0
C2
R1
R2
C2
C1
R3
C3
C0
R0
SW37 F2
SW45 F4
C2
SW39 8
C1
SW30 1 SW33 F1
C3
C0
C2
SW44
ENTER
C0
C1
R2
R3
SW41 F3
R0
R1
R3
J222
KEYPAD
1
2
3
4
5
6
7
8
SW31 2
R2
SW34 4
SW42
ESC
R1
R0
SW36 6
SW40 9SW38 7
J224
KEY PAD
1
2
3
4
5
6
7
8
SW32 3
SW35 5
Hình 3.8.1: Sơ đồ nguyên lý khối bàn phím (Keypad).
3.8.1.2. Sơ đồ bố trí linh kiện.
262
Hình 3.8.2: Khối bàn phím (Keypad).
BÀI THỰC HÀNH
Viết chương trình, mô phỏng và lắp ráp mạch điều khiển bàn phím và hiển
thị mã của phím nhấn trên 8 LED dưới dạng số BIN (LED sáng = mức 1,
LED tắt = mức 0), không phím nào được nhấn thì mã phím là FFH
(KEYPAD được nối với Port0, LED được nối với Port1)
3.8.2. Lưu đồ giải thuật.
Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển.
263
Hình 3.8.3: Lưu đồ giải thuật của chương trình.
3.8.3. Chương trình điều khiển.
Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình
và biên dịch, kiểm tra lỗi cú pháp của chương trình.
Bước 2: Khởi động phần mềm Topview Simulation.
Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên
tập tin chương trình là: D1.ASM
Bước 4: Viết chương trình điều khiển dưới đây vào máy tính.
;***************************************************
;CHUONG TRINH DIEU KHIEN BAN PHIM MA TRAN 4 X 4.
;***************************************************
;KET NOI: LED ->PORT1 (CO DEM DAO), KEYPAD ->PORT0.
;***************************************************
ORG 00H
MAIN:
LCALL SCANKEYPAD ;QUET KEYPAD
JC MP1 ;KIEM TRA CO NHAN PHIM (C = 1)
MOV A,#0FFH ;KHONG NHAN PHIM A = FFH
MP1: ;CO NHAN PHIM A = MA PHIM
MOV P1,A ;XUAT MA PHIM RA LED HIEN THI DANG SO
BIN
LJMP MAIN ;QUAY LAI KIEM TRA KEYPAD TIEP
;***************************************************
SCANKEYPAD: ;CTC QUET BAN PHIM MA TRAN 4 X 4, CO CHONG
DOI.
PUSH 03H
264
MOV R3,#50 ;SO LAN LAP DE CHONG DOI
BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM
NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE
CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
RL A ;COT KE TIEP
DJNZ R6,TEST
CLR C ;KHONG CO PHIM DUOC NHAN HAY NHAN
NHIEU PHIM CUNG LUC
SJMP EXIT ;THOAT VOI C = 0
KEYPRESSED:
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH
CUC
INC R6
INC R6
265
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
EXIT:
POP 07H
POP 06H
POP 05H
RET
END
Bước 5: Lưu chương trình trên vào máy tính.
Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do cú pháp của
các lệnh không chính xác, cần phải được kiểm tra lại. Sau khi hoàn tất việc hiệu
chỉnh sai sót thì quay trở về thực hiện từ Bước 5.
o Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập
tin mã máy với tên là: D1.HEX và thực hiện tiếp theo các phần nội dung dưới
đây.
3.8.4. Mô phỏng hoạt động.
Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô
phỏng quá trình hoạt động của hệ thống vi điều khiển.
Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10).
Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển bàn phím
như Hình 3.8.4 dưới đây.
266
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A
D
7
AD0
AD1
AD2
AD3
A
D
4
A
D
5
A
D
6
D
0
D0 D0
D1 D1
D2 D2
D3 D3
D4 D4
D5 D5
D6 D6
D7 D7
D
7
D
6
D
5
D
4
D
3
D
2
D
1
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D1
R2
330
+5V
D2
R3
330
+5V
D3
R4
330
+5V
D4
R5
330
+5V
D5
R6
330
+5V
D6
R7
330
+5V
D7
R8
330
+5V
D8
R9
330
+5V
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10
U2
ULN2803
2
3
4
5
6
7
8
9
1
RP1
10K
+
5
V
MA ÏCH Ñ I EÀU K HI EÅN BA ØN PHÍ M MA T R A ÄN 4 x 4
2
3
4
5
6
7
8
9
1
RP2
10K
7 8 9
654
2 3
#
1
0*
A
B
C
D
A
B
C
D
1 2 43
+5V
+5V
Hình 3.8.4: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển.
Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập
tin là: D.DSN. Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc lấy
mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học.
Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy
đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: D1.HEX
Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả
trên màn hình máy tính.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do giải thuật
chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần
phải được kiểm tra lại. Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về
thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8
(do mạch mô phỏng vẽ không chính xác).
o Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần
nội dung dưới đây.
3.8.5. Lắp mạch và nạp chương trình điều khiển.
Sử dụng các khối "Microcontroller Unit Slot", "Keypad", "Point LED" và
"Power Supply" có sẵn trên mô hình thực hành vi điều khiển để lắp ráp mạch
theo thiết kế bên trên.
267
Bước 11: Kết nối các khối trên mô hình như Hình 3.8.5 để tạo
thành hệ thống mạch điều khiển như bên trên.
o Tắt nguồn AC cấp cho mô hình thực hành.
o Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với
J11 (BAR LED 1) ở khối dãy LED.
o Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều
khiển với J15 (KEYBOARD) ở khối phím ma trận.
o Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED với
nguồn +5V ở khối nguồn.
Hình 3.8.5: Sơ đồ kết nối mạch trên mô hình.
Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi
điều khiển P89V51RB2 trên mô hình thực hành.
Bước 12: Bật nguồn AC cấp cho mô hình thực hành.
Bước 13: Khởi động phần mềm Flash Magic.
Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng
COM, tốc độ truyền, chuẩn giao tiếp,...)
Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã
được tạo ra từ Bước 6): D1.HEX
Bước 16: Nạp chương trình vào vi điều khiển.
268
Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit
Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần
cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại.
Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ
Bước 15.
o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành.
3.8.6. Bài tập thực hành.
3.8.6.1. Bài tập mẫu.
Bài tập số 1:
Nội dung:
"Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị
trên tám LED thông qua các phím được nhấn (KEYPAD được nối với
Port0, LED được nối với Port1):
Nhấn phím “F1”: 8 LED sáng tắt 3 lần.
Nhấn phím “F2”: 8 LED sáng dần và tắt dần.
Nhấn phím “F3”: 8 LED đếm lên nhị phân.
Nhấn phím “F4”: 8 LED sáng dồn."
Lưu đồ giải thuật:
269
Chương trình điều khiển:
;***************************************************
;CHUONG TRINH DIEU KHIEN LED HIEN THI CAC KIEU KHAC NHAU
KHI
;TA NHANCAC PHIM TREN BAN PHIM MA TRAN 4 X 4.
;***************************************************
;KET NOI: LED ->PORT1 (CO DEM DAO), KEYPAD ->PORT0.
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;LED TAT
LCALL SCANKEYPAD ;QUET KEYPAD
CJNE A,#00H,NEXT1 ;KHONG PHAI PHIM F1 -> KIEM TIEP
LCALL CHOPTAT ;PHIM F1 DUOC NHAN -> CHAY
CHUONG TRINH CON TUONG UNG
NEXT1:
CJNE A,#04H,NEXT2 ;KHONG PHAI PHIM F2 -> KIEM TIEP
270
LCALL SANGDAN ;PHIM F2 DUOC NHAN -> CHAY
CHUONG TRINH CON TUONG UNG
NEXT2:
CJNE A,#08H,NEXT3 ;KHONG PHAI PHIM F3 -> KIEM TIEP
LCALL DEMLEN ;PHIM F3 DUOC NHAN -> CHAY
CHUONG TRINH CON TUONG UNG
NEXT3:
CJNE A,#0CH,NEXT4 ;KHONG PHAI PHIM F4 -> KIEM TIEP
LCALL SANGDON ;PHIM F4 DUOC NHAN -> CHAY
CHUONG TRINH CON TUONG UNG
NEXT4:
LJMP MAIN ;QUAY LAI KIEM TRA KEYPAD TIEP
;***************************************************
SCANKEYPAD: ;CTC QUET BAN PHIM MA TRAN 4 X 4, CO CHONG
DOI.
PUSH 03H
MOV R3,#50 ;SO LAN LAP DE CHONG DOI
BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM
NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE
CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
RL A ;COT KE TIEP
DJNZ R6,TEST
CLR C ;KHONG CO PHIM DUOC NHAN HAY NHAN
NHIEU PHIM CUNG LUC
271
SJMP EXIT ;THOAT VOI C = 0
KEYPRESSED:
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH
CUC
INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
EXIT:
POP 07H
POP 06H
POP 05H
RET
;***************************************************
CHOPTAT: ;CTC DIEU KHIEN 8 LED SANG TAT
MOV P1,#0FFH ;LED SANG
LCALLDELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
RET
;***************************************************
DEMLEN: ;CTC DIEU KHIEN 8 LED DEM LENNHI PHAN
PUSH ACC
272
MOV A,#00H ;LED TAT
DL:
MOV P1,A
LCALL DELAY500MS
INC A ;TANG NHI PHAN
CJNE A,#00H,DL ;KIEM TRA DEM LEN HOAN TAT
POP ACC
RET
;***************************************************
SANGDAN: ;CTC DIEU KHIEN 8 LED SANG DAN VA TAT DAN
PUSH ACC
MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
SD1:
SETB C ;C=1
MOV P1,A ;HIEN THI
LCALLDELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC SD1 ;CHUA SANGHET THI LAM TIEP
SD2:
CLR C ;C=0
MOV P1,A ;HIEN THI
LCALLDELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, TAT DAN
JC SD2 ;CHUA TAT HET THI LAM TIEP
POP ACC
RET
;***************************************************
SANGDON:
PUSH ACC
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DONLAN DAU
TIEN
LAP2:
MOV R2,00H
MOV R3,#01H
LAP1:
MOV A,R3
ORL A,R1
MOV P1,A ;HIEN THI
LCALL DELAY500MS
MOV A,R3 ;DON LED
RL A
MOV R3,A
DJNZ R2,LAP1 ;CHUA DON XONG? QUAY LAI
273
DEC R0 ;GIAM SO LANDON LED
SETB C ;THAY DOI TRANG THAI LED CHO LANDON
TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP2 ;CHUA HOAN TAT CHU TRINH? QUAY
LẠI
POP ACC
RET
;***************************************************
DELAY500MS: ;CTC TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
DEL1:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL1
POP 00H
RET
END
3.8.6.2. Bài tập ứng dụng.
Bài 1: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển
thị của chuỗi ký tự “DIEN-TU” trên tám LED 7 đoạn. Tự lựa chọn phương pháp
kết nối bàn phím và LED 7 đoạn.
o Nhấn phím “ENTER”: hiển thị chuỗi.
o Nhấn phím “ESC”: không hiển thị chuỗi.
o Nhấn phím “1”: sáng tắt chuỗi liên tục.
o Nhấn phím “2”: dịch chuyển chuỗi từ phải sang trái liên tục.
o Nhấn phím “3”: dịch chuyển chuỗi từ trái sang phải liên tục.
Bài 2: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển
thị của một số chuỗi ký tự trên tám LED 7 đoạn. Tự lựa chọn phương pháp kết
nối bàn phím và LED 7 đoạn.
274
o Nhấn phím “ESC”: không hiển thị chuỗi.
o Nhấn phím “1”: hiển thị chuỗi “COCACOLA”.
o Nhấn phím “2”: hiển thị chuỗi “PEPSI”.
o Nhấn phím “3”: hiển thị chuỗi “FANTA”.
o Nhấn phím “4”: hiển thị chuỗi “TRIBECO”.
o Nhấn phím “5”: hiển thị chuỗi “NUOCSUOI”.
Bài 3: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển
thị của LED ma trận. Tự lựa chọn phương pháp kết nối bàn phím và LED ma
trận.
o Nhấn phím “ESC”: không hiển thị.
o Nhấn phím “1”: hiển thị đếm BCD từ 0 lên 9 trên LED ma
trận.
o Nhấn phím “2”: hiển thị đếm BCD từ 9 xuống 0 trên LED
ma trận.
o Nhấn phím “3”: hiển thị các ký tự từ A đến Z trên LED ma
trận.
o Nhấn phím “4”: hiển thị các ký tự từ Z đến A trên LED ma
trận.
Bài 4: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển
thị của chuỗi ký tự “DAI HOC CONG NGHIEP TP HO CHI MINH” trên LED
ma trận. Tự lựa chọn phương pháp kết nối bàn phím và LED ma trận.
o Nhấn phím “ESC”: không hiển thị chuỗi.
o Nhấn phím “1”: dịch chuyển chuỗi từ phải sang trái liên tục.
o Nhấn phím “2”: dịch chuyển chuỗi từ trái sang phải liên tục.
Các file đính kèm theo tài liệu này:
- giao_trinh_vi_dieu_khien.pdf