You are on page 1of 275

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH

BIÊN SOẠN: PHẠM QUANG TRÍ

TP. HỒ CHÍ MINH


11 - 2005
MỤC LỤC
CHƯƠNG 1: CẤU HÌNH CỦA MÔ HÌNH THÍ NGHIỆM VI ĐIỀU KHIỂN. ...................................................1

1.1 Giới thiệu: ..............................................................................................................................................................1


1.2 Cấu hình của mô hình thí nghiệm vi điều khiển: ............................................................................................. .....2
1.2.1 Khối lập trình vi điều khiển: .....................................................................................................................2
1.2.2 Khối vi điều khiển:....................................................................................................................................4
1.2.3 Khối LED điểm:........................................................................................................................................6
1.2.4 Khối LED 7 đoạn: .....................................................................................................................................7
1.2.5 Khối LED ma trận:..................................................................................................................................11
1.2.6 Khối LCD: ..............................................................................................................................................13
1.2.7 Khối công tắc: .........................................................................................................................................14
1.2.8 Khối nút nhấn:.........................................................................................................................................15
1.2.9 Khối bàn phím:........................................................................................................................................16
1.2.10 Khối relay: ..............................................................................................................................................17
1.2.11 Khối tạo xung:.........................................................................................................................................18
1.2.12 Khối tạo áp thay đổi:...............................................................................................................................19
1.2.13 Khối điều khiển động cơ bước:...............................................................................................................20
1.2.14 Khối Serial EEPROM: ............................................................................................................................21
1.2.15 Khối cảm biến nhiệt: ...............................................................................................................................22
1.2.16 Khối đệm dữ liệu: ...................................................................................................................................24
1.2.17 Khối giải mã:...........................................................................................................................................26
1.2.18 Khối ADC: ..............................................................................................................................................28
1.2.19 Khối DAC: ..............................................................................................................................................29
1.2.20 Khối RTC:...............................................................................................................................................31
1.2.21 Khối thanh ghi dịch:................................................................................................................................32
1.2.22 Khối mở rộng port I/O: ...........................................................................................................................34
1.2.23 Khối giao tiếp PC:...................................................................................................................................37
1.2.24 Khối mở rộng bus: ..................................................................................................................................39

CHƯƠNG 2: HƯỚNG DẪN SỬ DỤNG PHẦN MỀM MCU PROGRAM LOADER. .....................................40
2.1 Giới thiệu: ............................................................................................................................................................40
2.2 Hướng dẫn sử dụng phần mềm MCU Program Loader: ......................................................................................41

CHƯƠNG 3: HỆ THỐNG CÁC BÀI THỰC HÀNH VI ĐIỀU KHIỂN.............................................................47


Một số lưu ý khi viết chương trình và kết nối mạch ............................................................................................47
A. Hệ thống điều khiển LED đơn....................................................................................................................48
• Mục đích: ................................................................................................................................................48
• Yêu cầu: ..................................................................................................................................................48
• Bài 1: Chương trình điều khiển 8 LED được nối với Port0 sáng tắt. .....................................................48
• Bài 2: Chương trình điều khiển đếm lên nhị phân 8 bit và hiển thị trên 8 LED được nối với Port0......51
• Bài 3: Chương trình điều khiển 8 LED được nối với Port0 sáng dần và tắt hết. ...................................52
• Bài 4: Chương trình điều khiển 8 LED được nối với Port0 sáng đuổi. ..................................................54
• Bài 5: Chương trình điều khiển 8 LED được nối với Port0 sáng dồn. ...................................................56
• Bài 6: Chương trình điều khiển 8 LED được nối với Port0 hoạt động bằng cách tổng hợp các phương
pháp điều khiển đã thực tập ....................................................................................................................58
• Bài 7: Chương trình con điều khiển tạo thời gian trễ 200µs, 20ms, 2s sử dụng Timer..........................60
B. Hệ thống điều khiển LED 7 đoạn. ..............................................................................................................62
• Mục đích: ................................................................................................................................................62
• Yêu cầu: ..................................................................................................................................................62
• Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD. 62
o Bài 1: Chương trình điều khiển hiển thị số 7 trên LED3. ................................................................62
o Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3...................................64
o Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED. ..........................................................66
o Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED............................67
o Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED. .....................................................68
o Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED..................69
• Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn.
70
o Bài 1: Chương trình điều khiển hiển thị số 7 trên LED3. ................................................................70
o Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3...................................71
o Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED. ..........................................................73
o Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED............................74
o Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED. .....................................................75
o Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED..................76
• Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không
dùng vi mạch giải đa hợp bên ngoài). .....................................................................................................78
o Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7. ................................................................78
o Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7...................................79
o Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED. ..........................................................81
o Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED............................84
o Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED. .....................................................86
o Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED..................87
o Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED. .............................................89
o Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED...91
• Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không
dùng vi mạch giải đa hợp bên ngoài). .....................................................................................................93
o Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7. ................................................................93
o Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7...................................94
o Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED. ..........................................................96
o Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED............................99
o Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED. ...................................................101
o Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED................102
o Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED. ...........................................105
o Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED. 107
• Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi
mạch giải đa hợp bên ngoài). ................................................................................................................110
o Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7. ..............................................................110
o Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7.................................111
o Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED. ........................................................113
o Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED..........................116
o Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED. ...................................................118
o Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED................121
o Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED. ...........................................122
o Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED. 123
• Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng
vi mạch giải đa hợp bên ngoài). ............................................................................................................125
o Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7. ..............................................................125
o Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7.................................126
o Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED. ........................................................128
o Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED..........................131
o Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED. ...................................................133
o Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED................134
o Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED. ...........................................137
o Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED. 139
• Ứng dụng điều khiển LED 7 đoạn tổng hợp. ........................................................................................142
o Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED. ......................142
o Bài 2: Chương trình điều khiển hiển thị chuỗi ký tự “-HA-NOI-“ trên tám LED..........................145
o Bài 3: Chương trình điều khiển hiển thị và chớp tắt chuỗi ký tự “ -HA-NOI- “ trên tám LED.....147
o Bài 4: Chương trình điều khiển hiển thị lần lượt các chuỗi ký tự “-HA-NOI“, “-DA-LAT-“, “-
SAIGON-“ trên tám LED. Mỗi chuỗi hiển thị cách nhau 1 giây....................................................149
o Bài 5: Chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-HA-NOI-SAI-GON-“ trên
tám LED từ phải sang trái..............................................................................................................151
C. Hệ thống điều khiển LED ma trận...........................................................................................................153
• Mục đích: ..............................................................................................................................................153
• Yêu cầu: ................................................................................................................................................153
• Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận...........................................154
• Bài 2: Chương trình điều khiển hiển thị chữ S màu đỏ trên LED ma trận sáng tắt .............................157
• Bài 3: Chương trình điều khiển hiển thị lần lượt các chữ A, B, C, a, b, c màu đỏ trên LED ma trận........
...............................................................................................................................................................159
• Bài 4: Chương trình điều khiển hiển thị chuỗi ký tự “WELLCOME” màu đỏ trên LED ma trận dịch
chuyển từ phải sang trái........................................................................................................................161
D. Hệ thống điều khiển bàn phím. ................................................................................................................163
• Mục đích: ..............................................................................................................................................163
• Yêu cầu: ................................................................................................................................................163
• Bài 1: Chương trình đ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
...............................................................................................................................................................164
• Bài 2: 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.....................................................................................................................................166
E. Hệ thống điều khiển LCD. ........................................................................................................................171
• Mục đích: ..............................................................................................................................................171
• Yêu cầu: ................................................................................................................................................171
• Bài 1: Chương trình đ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.................................................172
• Bài 2: 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. ..................................174
• Bài 3: 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. .....................................................177
F. Hệ thống điều khiển nút nhấn. .................................................................................................................181
• Mục đích: ..............................................................................................................................................181
• Yêu cầu: ................................................................................................................................................181
• Bài 1: Chương trình điều khiển nút nhấn, khi ta nhấn nút nào trong 8 nút thì LED tương ứng sẽ sáng
lên và ngược lại.....................................................................................................................................182
• Bài 2: Chương trình điều khiển nút nhấn, khi ta nhấn nút KEY0 thì 8 LED sẽ chớp tắt với tần số 5 Hz
và ngược lại khi ta nhả nút KEY0 thì 8 LED sẽ chớp tắt với tần số 20 Hz ...........................................184
G. Hệ thống điều khiển công tắc....................................................................................................................186
• Mục đích: ..............................................................................................................................................186
• Yêu cầu: ................................................................................................................................................186
• Bài tập: Chương trình điều khiển công tắc và hiển thị lên tám LED mức logic hiện tại (LED sáng =
mức cao, LED tắt = mức thấp) của tám công tắc gạt...........................................................................187
H. Hệ thống điều khiển relay. ........................................................................................................................189
• Mục đích: ..............................................................................................................................................189
• Yêu cầu: ................................................................................................................................................189
• Bài tập: Chương trình điều khiển RELAY1 và RELAY2 đóng ngắt tuần tự và liên tục. Thời gian giữa
hai lần đóng ngắt là 1s..........................................................................................................................190
I. Hệ thống điều khiển motor bước..............................................................................................................192
• Mục đích: ..............................................................................................................................................192
• Yêu cầu: ................................................................................................................................................192
• Bài 1: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ .........................................193
• Bài 2: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ một vòng rồi dừng lại............
...............................................................................................................................................................195
• Bài 3: Chương trình điều khiển STEPPER1 quay bằng cách nhấn nút KEY0: quay thuận, KEY1: quay
ngược, KEY2: dừng...............................................................................................................................196
J. Hệ thống điều khiển ngắt (Interrupt). .....................................................................................................198
• Mục đích: ..............................................................................................................................................198
• Yêu cầu: ................................................................................................................................................198
• Bài 1: Chương trình điều khiển t?o sóng vuông tuần hoàn có tần số 10 Hz (sử dụng ngắt Timer) tại
chân P0.0 và hiển thị mức logic tại chân này lên LED0.......................................................................199
• Bài 2: Chương trình điều khiển đếm số xung t?i chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung
này (tối đa là 255 lần) lên ba LED 7 đoạn ...........................................................................................200
K. Hệ thống điều khiển Timer/Counter........................................................................................................203
• Mục đích: ..............................................................................................................................................203
• Yêu cầu: ................................................................................................................................................203
• Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi
điều khiển và hiển thị số lượng xung này lên các LED 7 đoạn.............................................................204
• Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1
của vi điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn................................................207
• Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi
điều khiển và hiển thị độ rộng của xung này lên các LED 7 đoạn........................................................210
L. Hệ thống điều khiển thu phát dữ liệu dạng nối tiếp. ..............................................................................212
• Mục đích: ..............................................................................................................................................212
• Yêu cầu: ................................................................................................................................................212
• Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H,
07H, 0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thông qua port nối tiếp và sử dụng vi mạch 4094, mỗi
lần xuất cách nhau 1s............................................................................................................................213
• Bài 2: Chương trình điều khiển (ứng dụng mở rộng port nhập) thực hiện liên tục việc nhập dữ liệu từ 8
công tắc thông qua port nối tiếp và sử dụng vi mạch 74165, dữ liệu nhập vào này sẽ được xuất ra 8
LED. ......................................................................................................................................................215
• Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes
(00H, 01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra
port nối tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu
là 40H. Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu
sau khi nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
...............................................................................................................................................................216
M. Hệ thống điều khiển port I/O (điều khiển xuất/nhập qua các thiết bị ngoại vi). .......................................
• Mục đích: ....................................................................................................................................................
• Yêu cầu: ......................................................................................................................................................
• Bài 1: Chương trình điều khiển Port I/O, làm cho 8 LED đếm lên nhị phân 8 bit. Sử dụng cơ chế bộ
nhớ ngoài. ...................................................................................................................................................
• Bài 2: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED.
Sử dụng cơ chế bộ nhớ ngoài......................................................................................................................
• Bài 3: Chương trình điều khiển Port I/O, làm cho 8 LED đếm lên nhị phân 8 bit. Sử dụng cơ chế bộ
nhớ ngoài. ...................................................................................................................................................
• Bài 4: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED.
Sử dụng cơ chế bộ nhớ ngoài......................................................................................................................
N. Hệ thống điều khiển ADC. ..............................................................................................................................
• Mục đích: ....................................................................................................................................................
• Yêu cầu: ......................................................................................................................................................
• Bài 1: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào
(kênh IN0) lên hai LED 7 đoạn (LED1 và LED0; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế
bộ nhớ ngoài. ..............................................................................................................................................
• Bài 2: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào
(kênh IN0) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số DEC từ 0 -> 255). Sử dụng cơ
chế bộ nhớ ngoài.................................................................................................................................
• Bài 3: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị điện áp của kênh
ngõ vào (kênh IN0) lên bốn LED 7 đoạn (LED3: hàng đơn vị; LED2, LED1 và LED0: ba số phần thập
phân). Sử dụng cơ chế bộ nhớ ngoài...........................................................................................................
• Bài 3: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ
vào (kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 ->
255), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút
KEY0. Sử dụng cơ chế bộ nhớ ngoài...........................................................................................................
O. Hệ thống điều khiển DAC. ..............................................................................................................................
• Mục đích: ....................................................................................................................................................
• Yêu cầu: ......................................................................................................................................................
• Bài 1: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi giá trị lưu
trong thanh ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi liên tục 00H, 40H, 80H,
C0H và FFH, mỗi lần cách nhau 2 giây. ....................................................................................................
• Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi giá trị lưu
trong thanh ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi liên tục từ 00H ->
FFH, mỗi lần cách nhau 2 giây và được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới
dạng số thập phân từ 0 -> 255). .................................................................................................................
• Bài 3: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện tạo sóng sin có tần số
bất kỳ tại ngõ ra. .........................................................................................................................................
P. Hệ thống điều khiển đo nhiệt độ.....................................................................................................................
• Mục đích: ....................................................................................................................................................
• Yêu cầu: ......................................................................................................................................................
• Bài tập: Chương trình đo nhiệt độ và hiển thị giá trị lên bốn LED 7 đoạn (một LED hiển thị phần thập
phân). ..........................................................................................................................................................
Q. Hệ thống điều khiển motor DC. .....................................................................................................................
• Mục đích: ....................................................................................................................................................
• Yêu cầu: ......................................................................................................................................................
• Bài 1:
R. Hệ thống điều khiển Serial EEPROM. ..........................................................................................................
• Mục đích: ....................................................................................................................................................
• Yêu cầu: ......................................................................................................................................................
• Bài 1:
S. Hệ thống điều khiển RTC. ..............................................................................................................................
• Mục đích: ....................................................................................................................................................
• Yêu cầu: ......................................................................................................................................................
• Bài 1:
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.1 Giới thiệu:

Sau khi đã được học, nghiên cứu và tìm hiểu về vi điều khiển ở phần lý thuyết. Chúng ta có thể bắt đầu tiến
hành thực hiện các bài thí nghiệm đối với vi điều khiển nhằm mục đích giúp chúng ta hiểu một cách tường tận hơn
về những gì mà ta đã được học trong phần lý thuyết cũng như cách thức vận dụng nó vào trong thực tế.

Trong thực tế, các ứng dụng của vi điều khiển thì rất đa dạng và phong phú. Từ những ứng dụng đơn giản chỉ
có vài thiết bị ngoại vi cho đến những hệ thống vi điều khiển phức tạp. Tuy nhiên, trong phạm vi có giới hạn của
giáo trình và nhằm mục đích phục vụ cho công việc học tập và tự nghiên cứu của sinh viên. Cho nên mô hình thí
nghiệm vi điều khiển này được thiết kế với tương đối đầy đủ các yêu cầu phần cứng và có rất nhiều chương trình
điều khiển mẫu cũng như các bài tập thực hành từ đơn giản đến phức tạp có thể giúp cho sinh viên thực hành, thí
nghiệm và tự nghiên cứu, tự học môn học này.

Mô hình thí nghiệm vi điều khiển này hỗ trợ cho việc thí nghiệm:

• Thí nghiệm các loại vi điều khiển như: 89C1051, 89C2051, 89C4051, 89C51, 89LV51, 89C52,
89LV52, 89C55, 89LV55, 89C55WD, 89S51, 89LS51, 89S52, 89LS52, 89S53, 89LS53, 89S8252,
89LS8252.
• Thí nghiệm các thiết bị ngoại vi như: LED điểm, LED ma trận, LED 7 đoạn, LCD, ADC, DAC, công
tắc, nút nhấn, bàn phím, relay, bộ nhớ nối tiếp, xuất nhập dữ liệu nối tiếp và song song, tạo xung, cảm
biến nhiệt, đồng hồ thời gian thực (RTC), …
• Thí nghiệm các chuẩn giao tiếp như: RS232, LPT, USB, PS2.

Phần mềm sử dụng cho mô hình thí nghiệm vi điều khiển này là phần mềm mô phỏng Topview và MCU
Program Loader. Phần mềm mô phỏng Topview cho phép bạn mô phỏng và chạy thử các chương trình điều khiển
trên máy tính với một số module thiết bị ngoại vi có sẵn tương tự như trên mô hình thí nghiệm vi điều khiển ngoài
thực tế, phần mềm này còn cho bạn khả năng soạn thảo và biên dịch chương trình theo ngôn ngữ Assembler. Phần
mềm MCU Program Loader cho phép bạn khả năng nạp chương trình cho các loại vi điều khiển đã nêu trên từ máy
tính. Các bạn có thể tìm hiểu thêm về hai phần mềm này trong các phần sau của giáo trình (phần mềm mô phỏng
Topview xem trong tài liệu “Hướng dẫn sử dụng phần mềm mô phỏng MCS-51 Topview Simulator”).

Các chương tiếp theo sẽ trình bày chi tiết hơn về cấu hình của mô hình thí nghiệm vi điều khiển, cách thức sử
dụng phần mềm và cung cấp các bài thí nghiệm thực hành mẫu cũng như các bài tập mở rộng có thể phục vụ rất tốt
cho việc tự học của các bạn.

Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2 Cấu hình của mô hình thí nghiệm vi điều khiển:


1.2.1 Khối lập trình vi điều khiển:

• Sơ đồ nguyên lý:
VCC 15. KHOÁI LAÄP TRÌNH VI ÑIEÀU KHIEÅN R107 10K
VCC

C35 C36
10u 10u C37
VCC 104
C38
1

104
VCC

1
2
3
4
5
6
7
8
9
C1+

V+
C1-

16 U34 89C52 U35 74573 U36 SLAVE 40PIN U37 SLAVE 20PIN
P3 VCC 39 D0 D0 2 19 A0 1 39 D0 D0 12 2
1 8 9 P0.0/AD0 38 D1 D1 3 D0 Q0 18 A1 2 P1.0 P0.0/AD0 38 D1 D1 13 P1.0/AIN0 P3.0/RXD 3 P1.2
6 R2IN R2OUT P0.1/AD1 37 D2 D2 4 D1 Q1 17 A2 3 P1.1 P0.1/AD1 37 D2 D2 14 P1.1/AIN1 P3.1/TXD 6 P1.1
2 7 10 P0.2/AD2 36 D3 D3 5 D2 Q2 16 A3 4 P1.2 P0.2/AD2 36 D3 D3 15 P1.2 P3.2/INT0 7 P1.6
7 T2OUT T2IN P0.3/AD3 35 D4 D4 6 D3 Q3 15 A4 5 P1.3 P0.3/AD3 35 D4 D4 16 P1.3 P3.3/INT1 8 P1.7
3 P0.4/AD4 34 D5 D5 7 D4 Q4 14 A5 6 P1.4 P0.4/AD4 34 D5 D5 17 P1.4 P3.4/T0 9 P1.4
8 12 13 P0.5/AD5 33 D6 D6 8 D5 Q5 13 A6 7 P1.5 P0.5/AD5 33 D6 D6 18 P1.5 P3.5/T1
4 14 R1OUT R1IN 11 P0.6/AD6 32 D7 D7 9 D6 Q6 12 A7 8 P1.6 P0.6/AD6 32 D7 D7 19 P1.6 11 P1.5
9 T1OUT T1IN P0.7/AD7 D7 Q7 VCC P1.7 P0.7/AD7 P1.7 P3.7
5 10 11 20
GND
C2+

P3.0/RXD LE VCC
C2-

U33 11 21 A8 1 10 A8 21 11 4
V-

TO PC MAX232 12 P3.1/TXD P2.0/A8 22 A9 OE GND A9 22 P2.0/A8 P3.1/TXD 12 P1.3 5 X2 VPC


13 P3.2/INT0 P2.1/A9 23 A10 A10 23 P2.1/A9 P3.2/INT0 13 P3.7 VPP X1 20
P3.3/INT1 P2.2/A10 P2.2/A10 P3.3/INT1 VCC
15

14 24 A11 A11 24 14 P1.2 1 10


4

15 P3.4/T0 P2.3/A11 25 A12 A12 25 P2.3/A11 P3.4/T0 15 RST/VPP GND


16 P3.5/T1 P2.4/A12 26 A13 A13 26 P2.4/A12 P3.5/T1 16 P1.4
C39 P3.6/WR P2.5/A13 27 A14 P2.5/A13 P3.6/WR 17 P1.5
10u C40 P2.6/A14 28 A14 10 P3.7/RD
10u P2.7/A15 VCC P3.0/RXD
27 P1.6
VCC 1 P1.0 P2.6/A14 28 P1.7
VPC R109 VDD 31 P1.0 2 P1.1 R108 P2.7/A15 VPP
Q19 100/2W VCC VCC EA P1.1 3 P1.2 10K 31
C1815 30 P1.2 4 P1.3 EA 30 P1.1
VCC 29 ALE P1.3 5 P1.4 P1.0 9 ALE 29
C41 R111 R112 R113 R114 PSEN P1.4 6 P1.5 RST PSEN
104 R110 1K2 1K2 4K7 4K7 C42 P1.5 7 P1.6 19
3K3 10u P1.6 8 P1.7 X1 VPC
Q20 9 P1.7 17 P3.7 40
C1815 RST P3.7/RD 19 18 VCC 20
D34 D35 VPC ON/OFF X1 X2 GND
6V7 5V6 VCC C43
40 33p
20 VCC 18
GND X2
Q21 VPC 5V/6.5V Y3 C44
C1815 R115 VCC 11.0592MHz 33p
10K

C45
VPP R116 VDD 104
Q22 100/2W VCC VCC
C1815 VDD R122 VCC
22/2W U38 7805
C46 R118 R119 R120 R121 D36 1 3

GND
104 R117 1K2 1K2 4K7 4K7 SW18 VIN VOUT
3K3 POWER SW 1N4007 R123 C48 C49
Q23 1 D37 1K2 C47 1000u 100u C50 C51
C1815 104 100u 104

2
D38 D39 VPP ON/OFF 2 1N4007
13V 5V6 J90A D40
DC 16V D41
1N4007 LED
D42
Q24 VPP 5V/6.5V
C1815 1N4007
D43
1N4007

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Các thành phần chính của bộ lập trình là port nối tiếp, nguồn cung cấp và bộ vi điều khiển trung tâm. Dữ liệu
nối tiếp được gửi và nhận từ cổng COM 9 chân và chuyển đổi từ mức logic TTL sang mức tín hiệu RS232 hoặc
chuyển đổi từ mức tín hiệu RS232 sang mức logic TTL bằng vi mạch MAX232. Một sợi cáp port nối tiếp được
dùng để nối cổng COM của khối lập trình vi điều khiển với cổng COM của máy tính (cổng RS232).

Nguồn cung cấp 16 VDC được cung cấp cho khối lập trình thông qua đầu nối J90A và công tắc SW18
(POWER SW). Các diode D36, D37, D40, D42 làm nhiệm vụ chỉnh lưu điện áp và chống hiện tượng sai cực tính
nguồn khi ta dùng nguồn DC cung cấp cho khối (Lưu ý: ta có thể sử dụng nguồn DC 16V hoặc AC 12V để cung
cấp cho khối). Điện áp này là điện áp chưa được ổn áp và được gọi là VDD. VDD được dùng để tạo ra ba mức điện
áp khác nhau là VCC, VPP và VPC. Điện áp VCC có mức điện áp là 5V được tạo ra từ vi mạch ổn áp LM7805 để
cung cấp cho bộ vi điều khiển trung tâm U34 hoạt động. Điện áp VPP có mức điện áp là 0V, 5V hoặc 12V theo sự
điều khiển của bộ vi điều khiển trung tâm. Điện áp VPC có mức điện áp là 0V, 5V hoặc 6.5V theo sự điều khiển
của bộ vi điều khiển trung tâm. Các loại điện áp khác nhau này được yêu cầu trong suốt quá trình lập trình cho các
chip vi điều khiển.

Trung tâm của khối lập trình này là bộ vi điều khiển trung tâm U34 và phần mềm điều khiển của nó. Phần mềm
này có khả năng nhận dạng chip vi điều khiển được đưa vào mạch thông qua một trong hai socket ZIF là SLAVE
40 PIN và SLAVE 20 PIN. Các thông tin này được sang phần mềm MCU Program Loader trên máy tính để xác lập
các thông số hoạt động điều khiển. Khi một tập tin chương trình được gửi đi từ máy tính, các thông tin này sẽ được
bộ vi điều khiển trung tâm tải đến chip vi điều khiển cần lập trình bằng các tín hiệu địa chỉ, dữ liệu và điều khiển
tương thích. Sau khi việc lập trình đã hoàn tất thì các dữ liệu đã được ghi vào này sẽ được gửi ngược trở lại máy
tính để kiểm tra lỗi trong quá trình nạp chip, từ đó đưa ra thông báo quá trình lập trình thành công hay có lỗi.

Bạn cần phải chú ý đến một điểm rất quan trọng là luôn luôn phải tắt nguồn cung cấp cho khối lập trình vi
điều khiển trước khi tiến hành tháo/gắn chip vi điều khiển vào socket nhằm tránh gây hỏng chip vi điều khiển
này.

• Ứng dụng:

Khối lập trình vi điều khiển này kết hợp với phần mềm MCU Program Loader trên máy tính có khả năng lập
trình cho các loại chip sau:

o Loại chip 40 chân (được gắn vào socket SLAVE 40 PIN): AT89C51, AT89LV51, AT89C52,
AT89LV52, AT89C55, AT89LV55, AT89C55WD, AT89S51, AT89LS51, AT89S52, AT89LS52,
AT89S53, AT89LS53, AT89S8252, AT89LS8252.
o Loại chip 20 chân (được gắn vào socket SLAVE 20 PIN): AT89C1051, AT89C2051, AT89C4051.

Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.2 Khối vi điều khiển:

• Sơ đồ nguyên lý:

9. KHOÁI VI ÑIEÀU KHIEÅN DATA BUS


LOW ADDRESS BUS
VCC R97 10K
U19 SOCKET 40PIN U20 74573 U21 2764 U22 6264 1 VCC
RXD 10 39 D0 D0 2 19 10 11 10 11 2
TXD 11 P3.0/RXD P0.0/AD0 38 D1 D1 3 D0 Q0 18 9 A0 O0 12 9 A0 D0 12 3
INT0 12 P3.1/TXD P0.1/AD1 37 D2 D2 4 D1 Q1 17 8 A1 O1 13 8 A1 D1 13 4 C12 C13 C14
INT1 13 P3.2/INT0 P0.2/AD2 36 D3 D3 5 D2 Q2 16 7 A2 O2 15 7 A2 D2 15 5 104 104 104
T0 14 P3.3/INT1 P0.3/AD3 35 D4 D4 6 D3 Q3 15 6 A3 O3 16 6 A3 D3 16 6
T1 15 P3.4/T0 P0.4/AD4 34 D5 D5 7 D4 Q4 14 5 A4 O4 17 5 A4 D4 17 7
WR 16 P3.5/T1 P0.5/AD5 33 D6 D6 8 D5 Q5 13 4 A5 O5 18 4 A5 D5 18 8
RD 17 P3.6/WR P0.6/AD6 32 D7 D7 9 D6 Q6 12 3 A6 O6 19 3 A6 D6 19 9 VCC
P3.7/RD P0.7/AD7 D7 Q7 VCC 25 A7 O7 25 A7 D7
P1.0 1 21 A8 11 20 24 A8 24 A8
P1.1 2 P1.0/T2 P2.0/A8 22 A9 1 LE VCC 10 21 A9 21 A9 C15 C16 C17
P1.2 3 P1.1/T2EX P2.1/A9 23 A10 OE GND 23 A10 20 23 A10 104 104 104
P1.3 4 P1.2/ECI P2.2/A10 24 A11 2 A11 CE 2 A11 D23 VCC D24
P1.4 5 P1.3/CEX0 P2.3/A11 25 A12 A12 A12 1N4148 1N4148
P1.5 6 P1.4/CEX1 P2.4/A12 26 A13 22 RD 22
P1.6 7 P1.5/CEX2 P2.5/A13 27 A14 OE WR 27 OE
C18 P1.7 8 P1.6/CEX3 P2.6/A14 28 A15 VCC VCC 20 WE 28 R98 VCC
33p P1.7/CEX4 P2.7/A15 27 28 26 CS1 VCC 14 1K
CLK12 18 30 1 PGM VCC 14 CS2 GND D25 BT1
19 X2 ALE 29 VPP GND 1N4148 3V6 C20
Y1 X1 PSEN 104
12MHz HIGH ADDRESS BUS J34 C19
VCC 1 10u
RST 9 40 2
6264
C21 31 RST VCC 20
6264 U23 74138 J35
33p EA GND CS6264 A13 1 15 1
A14 2 A Y0 14 2
0000H - 1FFFH
A15 3 B Y1 13 3
2000H - 3FFFH
VCC J36 J37 J38 J39 J40 J41 C Y2 12 4
4000H - 5FFFH
VCC VCC 1 1 D0 1 P1.0 1 A8 1 RXD 1 A0 Y3 11 5
6000H - 7FFFH
2
INT P0.0 2 D1 P1.0 2 P1.1 P2.0 2 A9 P3.0 2 TXD A0 2 A1 VCC Y4 10 6
8000H - 9FFFH
3
COM P0.1 3 D2 P1.1 3 P1.2 P2.1 3 A10 P3.1 3 INT0 A1 3 A2 6 Y5 9 7
A000H - BFFFH
R99 C22
EXT P0.2 4 D3 P1.2 4 P1.3 P2.2 4 A11 P3.2 4 INT1 A2 4 A3 4 G1 Y6 7 8
C000H - DFFFH
100 10u INT/EXT
P0.3 5 D4 P1.3 5 P1.4 P2.3 5 A12 P3.3 5 T0 A3 5 A4 5 G2A Y7 E000H - FFFFH
P0.4 6 D5 P1.4 6 P1.5 P2.4 6 A13 P3.4 6 T1 A4 6 A5 G2B VCC SELECT CHIP
P0.5 7 D6
P1.5 7 P1.6 P2.5 7 A14 P3.5 7 WR A5 7 A6 16
P0.6 8 D7
P1.6 8 P1.7 P2.6 8 A15 P3.6 8 RD A6 8 A7 VCC 8
SW17 R100
P0.7 P1.7 P2.7 P3.7 A7 GND
RESET 8K2 PORT 0 PORT 1 PORT 2 PORT 3 A0-A7 BUS
VCC
VCC
J42 R101 R102
14

U24A 74393 CLK12 1 8K2 8K2


CLK12 1 3 2
12 MHz
6 MHz
VCC

CLK QA 4 3 J43 U25 SOCKET 20PIN J44


2 QB 5 4
3 MHz 1 12 2 1
CLR QC 6 CLK750 5
1.5 MHz P1.0 2 13 P1.0/AIN0 P3.0/RXD 3 2
P3.0
QD 6
750 KHz P1.1 3 14 P1.1/AIN1 P3.1/TXD 6 3
P3.1
7
375 KHz P1.2 4 15 P1.2 P3.2/INT0 7 4
P3.2
U24B 74393 8
188 KHz P1.3 5 16 P1.3 P3.3/INT1 8 5
P3.3
13 11
94 KHz P1.4 6 17 P1.4 P3.4/T0 9 6
P3.4
CLK QA 10 CLOCK OUT
P1.5 7 18 P1.5 P3.5/T1 7
P3.5
12 QB 9
P1.6 8 19 P1.6 11 8
P3.6
GND

CLR QC 8
P1.7 C23 P1.7 P3.7 P3.7
QD PORT 1 33p PORT 3
4
5 X2 VCC
7

Y2 X1 20
12MHz RST 1 VCC 10
RST/VPP GND

C24 VCC
33p D46
1

2 SW33 R135
J901A POWER SW 1K2 LED
DC 5V

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Khối vi điều khiển được thiết kế để cho phép người sử dụng thuận tiện trong việc tiến hành thí nghiệm đối với
các loại vi điều khiển họ 89 của hãng Atmel ở mọi chế độ làm việc khả thi, gồm các loại vi điều khiển 40 chân và
các vi điều khiển 20 chân.

o Thí nghiệm vi điều khiển 20 chân: vi điều khiển cần thí nghiệm sẽ được gắn vào socket U25
(SOCKET 20PIN), tần số hoạt động của chip do Y2 quyết định, các port xuất nhập của chip J43
(PORT 1): Port 1 (trong đó P3.0 và P3.1 là ngõ vào của bộ ADC trong chip); J44 (PORT 3): Port 3
(trong đó P3.6 không sử dụng). Để reset chip bạn sử dụng nút nhấn SW17 (RESET).
o Thí nghiệm vi điều khiển 40 chân: vi điều khiển cần thí nghiệm sẽ được gắn vào socket U19
(SOCKET 40PIN), tần số hoạt động của chip do Y1 quyết định, các port xuất nhập của chip J37
(PORT 0): Port 0 (ngoài ra còn là bus dữ liệu D0..D7 đã giải đa hợp); J38 (PORT 1): Port 1; J39
(PORT 2): Port 2 (ngoài ra còn là bus địa chỉ byte cao A8..A15); J40 (PORT 3): Port 3 (ngoài ra
còn là bus tín hiệu điều khiển đặc biệt). Đầu nối J41 (A0-A7 BUS): bus địa chỉ byte thấp A0..A7.
Để reset chip bạn sử dụng nút nhấn SW17 (RESET). Trong trường hợp thí nghiệm này, trên mô
hình đã có thiết kế sẵn các bộ nhớ ROM/RAM bên ngoài (ROM 2764: 8 KB và RAM 6264: 8 KB
có nguồn back-up BT1) nhằm mục đích giúp cho người sử dụng thuận tiện hơn trong việc thiết kế
và thí nghiệm hệ thống vi điều khiển sử dụng bộ nhớ trong hoặc sử dụng bộ nhớ ngoài. Để thực
hiện việc chuyển đổi bộ nhớ sử dụng (trong hay ngoài) ta thay đổi Jump J36 (INT/EXT), nối
COM-INT: là sử dụng bộ nhớ trong; nối COM-EXT: là sử dụng bộ nhớ ngoài. Tầm địa chỉ của
ROM: 0000H – 1FFFH; RAM chuẩn: 0000H – 1FFFH. Đối với RAM, nếu ta chỉ có một vi
mạch (RAM chuẩn) ta sẽ nối J34 (CS6264) xuống GND, còn nếu có thêm I/O hoạt động với chức
năng như RAM thì ta nối J34 (CS6262) đến bộ giải mã địa chỉ U23 (74138) lúc đó địa chỉ của
RAM có sự thay đổi.

Ngoài ra, tại khối vi điều khiển trên mô hình thí nghiệm còn được thiết kế sẵn: bộ chia tần số U24 (74393) có
nhiệm vụ tạo ra các tần số khác nhau J42 (CLOCK OUT) để cung cấp cho các khối khác hoặc để dùng cho các mục
đích khác của người sử dụng, bộ giải mã địa chỉ U23 (74138) có nhiệm vụ tạo ra các tín hiệu điều khiển chọn chip
với các tầm địa chỉ khác nhau J35 (SELECT CHIP).

Bạn cần phải chú ý đến một điểm rất quan trọng là luôn luôn phải tắt nguồn cung cấp cho khối vi điều
khiển trước khi tiến hành tháo/gắn chip vi điều khiển vào socket nhằm tránh gây hỏng chip vi điều khiển này.

Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Ứng dụng:

o Thí nghiệm ứng dụng các loại vi điều khiển 20 chân và 40 chân.
o Thí nghiệm cấu hình vi điều khiển sử dụng bộ nhớ bên trong hay bộ nhớ bên ngoài (Dung lượng
ROM/RAM ngoài có sẵn: 8KB/8KB, RAM có nguồn Back-up).
o Phát các tín hiệu giải mã địa chỉ (CS): 0000H - 1FFFH, 2000H - 3FFFH, 4000H - 5FFFH, 6000H -
7FFFH, 8000H - 9FFFH, A000H - BFFFH, C000H - DFFFH, E000H – FFFFH.
o Phát các xung clock có tần số: 12MHz, 6MHz, 3MHz, 1.5MHz, 750KHz, 375KHz, 188KHz,
94KHz.

1.2.3 Khối LED điểm:

• Sơ đồ nguyên lý:

1. KHOÁI DAÕY LED VCC VCC


J9 D1 J10 D2
1 R49 330 LED 1 R50 330 LED
LED0 2
LED0 2
LED1 3 D3
LED1 3 D4
LED2 4 R51 330 LED
LED2 4 R52 330 LED
LED3 5
LED3 5
LED4 6 D5
LED4 6 D6
LED5 7 R55 330 LED
LED5 7 R56 330 LED
LED6 LED6
8 8
LED7 D7
LED7 D8
BARLED R63 330 LED BARLED R64 330 LED

D9 D10
R71 330 LED R72 330 LED

D11 D12
R75 330 LED R76 330 LED

D13 D14
R77 330 LED R78 330 LED

D15 D16
R81 330 LED R82 330 LED

J103
1 VCC
GND 2
+5V 3
GND
POWER

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Khối gồm 16 LED điểm, được chia ra làm hai phần 8 LED. Các dãy LED này được điều khiển bằng hai đầu
nối J9 và J10 (BARLED) vì thế ta có thể thực hiện điều khiển cùng lúc nhiều LED hoặc chỉ một LED. Mức tích
cực để điều khiển các LED này là mức thấp. Dòng điện cung cấp cho các LED phải từ 15 – 25 mA để các LED có
thể hoạt động tốt nhất.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J103 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối LED điểm với vi điều khiển.
o Thí nghiệm phương pháp điều khiển từng LED.
o Thí nghiệm phương pháp điều khiển dãy LED.
o Thí nghiệm các kiểu điều khiển LED sáng tắt.
o Thí nghiệm nguyên lý điều khiển đèn giao thông.

1.2.4 Khối LED 7 đoạn:

• Sơ đồ nguyên lý:

2. KHOÁI LED 7 ÑOAÏN

J1
Q7

Q6

Q5

Q4

Q3

Q2

Q1

Q0
J2 Q0 1
1 Q0 R1 VCC R2 VCC R3 VCC R4 VCC R5 VCC R6 VCC R7 VCC R8 VCC Q1 2
SEL0
SEL0 2 Q1 2K2 2K2 2K2 2K2 2K2 2K2 2K2 2K2 Q2 3
SEL1
SEL1 3 Q2 Q3 4
SEL2
SEL2 4 Q3 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q4 5
SEL3
SEL3 A1015 A1015 A1015 A1015 A1015 A1015 A1015 A1015 Q5 6
SEL4
SEL IN1 Q6 7
SEL5
Q7 8
SEL6
J3 U1 U2 U3 U4 U5 U6 U7 U8
SEL7
8

3
1 Q4 LED7 LED7 LED7 LED7 LED7 LED7 LED7 LED7 SEL LED IN
SEL4 2 Q5
SEL5
CA

CA

CA

CA

CA

CA

CA

CA

CA

CA

CA

CA

CA

CA

CA

CA
3 Q6
SEL6 4 Q7
SEL7
SEL IN1
J4
A R9 330 1
B R10 330 2
A
C R11 330 3
B
DP

DP

DP

DP

DP

DP

DP

DP
C
G

G
C
D

C
D

C
D

C
D

C
D

C
D

C
D

C
D
A
B

A
B

A
B

A
B

A
B

A
B

A
B

A
B

E
F

F D R12 330 4
D
E R13 330 5
E
10

10

10

10

10

10

10

10
F R14 330 6
7
6
4
2
1
9

7
6
4
2
1
9

7
6
4
2
1
9

7
6
4
2
1
9

7
6
4
2
1
9

7
6
4
2
1
9

7
6
4
2
1
9

7
6
4
2
1
9

5
G R15 330 7
F
DP G
R17
R18
R19
R20
R21
R22
R23
R24

R25
R26
R27
R28
R29
R30
R31
R32

R33
R34
R35
R36
R37
R38
R39
R40

R41
R42
R43
R44
R45
R46
R47
R48

J110 R16 330 8


DP
DP

DP

DP

DP

1 VCC
G

G
A
B

A
B

A
B

A
B

E
C
D

C
D

C
D

C
D
F

GND 2 7SEG IN MUL


+5V 3
GND
330
330
330
330
330
330
330
330

330
330
330
330
330
330
330
330

330
330
330
330
330
330
330
330

330
330
330
330
330
330
330
330

POWER
1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

J5 J6 J7 J8
7SEG7 IN 7SEG6 IN 7SEG5 IN 7SEG4 IN
C
D

C
D

C
D

C
D
A
B

DP

A
B

DP

A
B

DP

A
B

DP
F
G

F
G

F
G

Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Khối LED 7 đoạn bao gồm 8 LED 7 đoạn loại Anode chung kết hợp lại với nhau theo hai cách thiết kế khác
nhau. Các LED này đều được cấp nguồn thông qua các transistor Q1 - Q8 đóng vai trò như các công tắc và được
điều khiển thông qua các tín hiệu điều khiển tích cực mức thấp tại đầu nối J1 (SEL LED IN), J2 (SEL IN1) và J3
(SEL IN2).

8 LED này được chia ra làm hai nhóm với hai phương pháp thiết kế khác nhau cho mỗi nhóm:

o Phương pháp không đa hợp (phương pháp điều khiển LED trực tiếp): được thiết kế trên cơ sở 4
LED (U1, U2, U3, U4). Phương pháp này là phương pháp mà các đoạn của mỗi LED sẽ được nối
vào mỗi Port điều khiển độc lập với nhau và Anode của tất cả các LED sẽ được cấp nguồn đồng
thời với nhau (thông thường thì sẽ được nối thẳng lên VCC). J5, J6, J7, J8 (7SEG IN): ngõ vào tín
hiệu 7 đoạn (A-G và DP) của từng LED sẽ được nối đến từng Port điều khiển độc lập với nhau; J3
(SEL IN2): ngõ vào tín hiệu điều khiển cấp nguồn cho các LED, ở chế độ này thì sẽ được nối trực
tiếp xuống GND để cấp nguồn liên tục và đồng thời cho tất cả các LED. Phương pháp điều khiển
trong trường hợp này là cấp mã 7 đoạn tương ứng của số cần hiển thị ra LED 7 đoạn mong muốn.

Giáo trình thực hành vi xử lý. 15 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

o Phương pháp đa hợp (phương pháp điều khiển quét LED): được thiết kế trên cơ sở 4 LED (U5,
U6, U7, U8). Phương pháp này là phương pháp mà tất cả các đoạn của các LED sẽ được nối chung
vào nhau và vào một Port điều khiển còn Anode của tất cả các LED sẽ được nối vào một Port điều
khiển khác và được cấp tín hiệu quét LED một cách tuần tự (tại một thời điểm thì chỉ có một LED
được cấp nguồn hoạt động). J4 (7SEG IN MUL): ngõ vào tín hiệu 7 đoạn (A-G và DP) đa hợp của
tất cả các LED sẽ được nối đến một Port điều khiển; J2 (SEL IN1): ngõ vào tín hiệu điều khiển cấp
nguồn cho các LED, ở chế độ này thì sẽ được nối đến một Port điều khiển khác cung cấp tín hiệu
quét LED để cấp nguồn tuần tự cho các LED. Phương pháp điều khiển trong trường hợp này là
phải tiến hành tuần tự qua các giai đoạn: cấp một tín hiệu quét LED sao cho chỉ có LED đầu tiên
được cấp nguồn rồi đưa mã 7 đoạn tương ứng của số cần hiển thị ra LED 7 đoạn đó; kế tiếp cấp
một tín hiệu quét LED sao cho chỉ có LED thứ hai được cấp nguồn rồi đưa mã 7 đoạn tương ứng
của số cần hiển thị ra LED 7 đoạn đó; quá trình cứ diễn ra liên tục như vậy và do hiện tượng lưu
ảnh của mắt mà ta thấy được các LED dường như sáng cùng một lúc.

Trong hai phương pháp nêu trên thì phương pháp đa hợp thì thường được sử dụng nhiều hơn trong thực tế. Cho
nên trên mô hình thí nghiệm này cũng cho phép ta có thể thiết kế chế độ đa hợp cho tất cả 8 LED này bằng cách nối
cung tất cả các đầu nối J5, J6, J7, J8 vào với đầu nối J4 thông qua khối mở rộng.

Bảng mã 7 đoạn cho các LED:

Số Hex dp g f e d c b a Mã số HEX
0 1 1 0 0 0 0 0 0 C0
1 1 1 1 1 1 0 0 1 F9
2 1 0 1 0 0 1 0 0 A4
3 1 0 1 1 0 0 0 0 B0
4 1 0 0 1 1 0 0 1 99
5 1 0 0 1 0 0 1 0 92
6 1 0 0 0 0 0 1 0 82
7 1 1 1 1 0 1 1 1 F7
8 1 0 0 0 0 0 0 0 80
9 1 0 0 1 0 0 0 0 90
A 1 0 0 0 1 0 0 0 88
B 1 0 0 0 0 0 1 1 83
C 1 1 0 0 0 0 1 0 C2
D 1 0 1 0 0 0 0 1 A1
E 1 0 0 0 0 1 1 0 86
F 1 0 0 0 1 1 1 0 8E

Giáo trình thực hành vi xử lý. 16 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Bảng mã điều khiển quét LED:

Mã HEX Tín hiệu quét điều khiển các Transistor


FE 1 1 1 1 1 1 1 0 Transistor 1 ON
FD 1 1 1 1 1 1 0 1 Transistor 2 ON
FB 1 1 1 1 1 0 1 1 Transistor 3 ON
F7 1 1 1 1 0 1 1 1 Transistor 4 ON
EF 1 1 1 0 1 1 1 1 Transistor 5 ON
DF 1 1 0 1 1 1 1 1 Transistor 6 ON
BF 1 0 1 1 1 1 1 1 Transistor 7 ON
7F 0 1 1 1 1 1 1 1 Transistor 8 ON

Ngoài ra còn các mã 7 đoạn cho các LED khác, các bạn có thể tự mình thiết lập thêm để nâng cao số lượng ký
tự có thể hiển thị trên LED 7 đoạn cho thí nghiệm của mình.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J110 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối LED 7 đoạn với vi điều khiển.
o Thí nghiệm phương pháp điều khiển từng LED 7 đoạn.
o Thí nghiệm phương pháp điều khiển dãy LED 7 đoạn.
o Thí nghiệm các kiểu điều khiển LED sáng tắt và hiển thị thông tin.
o Thí nghiệm các phương pháp điều khiển LED 7 đoạn ở các chế độ khác nhau: đa hợp, không đa
hợp, ngõ vào BCD hay 7 đoạn, …
o Thí nghiệm nguyên lý điều khiển đèn giao thông.

Giáo trình thực hành vi xử lý. 17 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.5 Khối LED ma trận:

• Sơ đồ nguyên lý:

3. KHOÁI LED MA TRAÄN


J11 U9 MATRIXLED J12
1 R53 10 23 24 R54 10 1
C0 2 R57 10 20 C0R C0G 21 R58 10 2
C0
C1 3 R59 10 17 C1R C1G 18 R60 10 3
C1
C2 4 R61 10 14 C2R C2G 15 R62 10 4
C2
C3 5 R65 10 2 C3R C3G 1 R66 10 5
C3
C4 6 R67 10 5 C4R C4G 4 R68 10 6
C4
C5 7 R69 10 8 C5R C5G 7 R70 10 7
C5
C6 8 R73 10 11 C6R C6G 10 R74 10 8
C6
C7 C7R C7G C7

R0
R1
R2
R3
R4
R5
R6
R7
COL RED MATRIX COL GREEN MATRIX

22
19
16
13

12
3
6
9
J13
1 R79 330
R0 2 R80 330
R1 3 R83 330
R2 4 R84 330
R3 5 R85 330
R4 6 R86 330 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16
R5 7 R87 330 A1015 A1015 A1015 A1015 A1015 A1015 A1015 A1015
R6 8 R88 330
R7
ROW MATRIX

J116 VCC
1 VCC
GND 2
+5V 3
GND
POWER

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 18 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Loại ma trận LED sử dụng trên mô hình thí nghiệm này là loại ma trận LED 24 chân gồm 8 hàng và 8 cột. Ma
trận LED này có hai màu chính là xanh và đỏ, ngoài ra còn có một màu phụ là do sự tổng hợp của hai màu trên mà
ra.

Mỗi điểm LED trên ma trận có cấu tạo gồm hai LED màu xanh và màu đỏ ghép lại với nhau theo nguyên tắc
Anode ghép chung và Cathode để riêng. Ma trận LED 8 hàng x 8 cột này gồm 24 chân được chia ra làm ba nhóm
chân: 8 chân HÀNG R0-R7 (là các Anode chung của các LED trên cùng một hàng), 8 chân CỘT ĐỎ C0R-C7R (là
các Cathode chung của các LED màu đỏ trên cùng một cột), 8 chân CỘT XANH C0G-C7G (là các Cathode chung
của các LED màu xanh trên cùng một cột). Sự kết hợp các mức logic cao/thấp thích hợp trên các hàng và cột theo
một qui luật nhất định (hiển thị theo phương pháp quét hay còn gọi là phương pháp chỉ thị động) mà ta sẽ có được
các hình ảnh như mong muốn trên ma trận LED với các màu sắc khác nhau.

J11 (COL RED MATRIX): ngõ vào điều khiển hàng R0-R7 cho các LED màu đỏ, tích cực mức thấp; J12
(COL GREEN MATRIX): ngõ vào điều khiển hàng R0-R7 cho các LED màu xanh, tích cực mức thấp; J13 (ROW
MATRIX): ngõ vào điều khiển cột chung C0-C7 cho các LED, tích cực mức thấp.

Phương pháp điều khiển cũng tương tự như phương pháp điều khiển các LED 7 đoạn ở chế độ đa hợp (phương
pháp quét LED). Đầu tiên, ta cấp tín hiệu sao cho chỉ có HÀNG 1 có nguồn rồi đưa mã nhị phân tương ứng của
hình ảnh cần hiển thị tại hàng đó ra các cột. Kế tiếp, ta cấp tín hiệu sao cho chỉ có HÀNG 2 có nguồn rồi đưa mã
nhị phân tương ứng của hình ảnh cần hiển thị tại hàng đó ra các cột. Quá trình cứ diễn ra một cách tuần tự và liên
tục như vậy và do hiện tượng lưu ảnh của mắt mà ta thấy được các LED dường như sáng cùng một lúc để tạo ra
hình ảnh như mong muốn trên ma trận LED.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J116 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối LED ma trận với vi điều khiển.
o Thí nghiệm phương pháp điều khiển từng LED trong ma trận.
o Thí nghiệm phương pháp điều khiển nhiều LED trong ma trận.
o Thí nghiệm các kiểu điều khiển LED sáng tắt và hiển thị thông tin tĩnh hoặc thông tin động với các
màu sắc khác nhau.

Giáo trình thực hành vi xử lý. 19 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.6 Khối LCD:

• Sơ đồ nguyên lý:

25. KHOÁI LCD


U57 TC1602A J121
BACKLIGHT
J104
LCD

BL
BL
1 VCC
GND 2
+5V 3 16 Characters x 2 Lines
GND

LED+
LED-
GND
VCC

R/W
VEE
POWER

RS

D0
D1
D2
D3
D4
D5
D6
D7

1
2
E
R148

10
11
12
13
14

15
16
2K7

1
2
3

4
5
6

7
8
9
Q25
VCC
C1815

VCC
CONTRAST
R149
10K
J127
8
7
D7
6
D6
5
D5
J128 4
D4
1 3
D3
RS 2 2
D2
ENA 3 1
D1
R/W D0
CTRL LCD DATA LCD

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Trên mô hình thí nghiệm có thiết kế sẵn một LCD 16 ký tự x 2 hàng, được sử dụng cho các bài thí nghiệm về
phương pháp điều khiển và hiển thị thông tin trên màn hình tinh thể lỏng (LCD).

J127 (DATA LCD): ngõ vào nhận thông tin dữ liệu (Data) hoặc thông tin lệnh (Command) cho LCD, J128
(CTRL LCD): ngõ vào điều khiển LCD.

Giáo trình thực hành vi xử lý. 20 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Để điều chỉnh độ tương phản của các thông tin hiển thị trên LCD ta tiến hành điều chỉnh biến trở R149. Để bật
đèn chiếu nền cho LCD trong trường hợp ánh sáng môi trường yếu làm việc hiển thị thông tin trên LCD không
được rõ ràng thì ta cung cấp một mức logic cao (5V) vào đầu nối J121 (BACKLIGHT).

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J104 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối LCD với vi điều khiển.
o Thí nghiệm phương pháp điều khiển trạng thái làm việc của LCD.
o Thí nghiệm phương pháp điều khiển LCD hiển thị thông tin tĩnh hay động.

1.2.7 Khối công tắc:

• Sơ đồ nguyên lý:

R147 10K
20. KHOÁI COÂNG TAÉC
J106
1 VCC
GND 2
+5V 3 VCC
GND
POWER
1
2
3
4
5
6
7
8
9
J122 SW27
1
SW0 2
SW1 3
SW2 4
SW3 5
SW4 6
SW5 7
SW6 8
SW7
SWITCH SWITCH

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 21 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Nhiệm vụ chính của khối công tắc là sử dụng cho các bài thí nghiệm về giao tiếp giữa vi điều khiển với công
tắc, lập trình điều khiển dùng công tắc. Khối gồm 8 công tắc được thiết kế trên một DIP-SW, các công tắc này sẽ
tạo ra một mức logic cao (5V) hoặc thấp (0V) ở các bit tương ứng của đầu nối J122 (SWITCH) tuỳ theo vị trí của
công tắc trên DIP-SW (công tắc ở vị trí ON là mức logic thấp và ngược lại sẽ có mức logic cao).

Ngoài ra, khối này còn được sử dụng cho việc nối GND hoặc nối VCC cho các khối cần thiết, ví dụ như nối
GND cho các transistor trong khối LED 7 đoạn.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J106 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối công tắc với vi điều khiển.
o Thí nghiệm ứng dụng điều khiển thiết bị bằng công tắc.
o Tạo các mức logic thấp (0V) hoặc logic cao (5V) cho các khối khác trên mô hình thí nghiệm.

1.2.8 Khối nút nhấn:

• Sơ đồ nguyên lý:

J91
KEY0 16. KHOÁI NUÙT NHAÁN
VCC VCC VCC VCC VCC VCC VCC VCC K0 1
K1 2
R125 R126 R127 R128 R129 R130 R131 R132 K2 3
KEY1 J114
4K7 4K7 4K7 4K7 4K7 4K7 4K7 4K7 K3 4
KEY2 1 VCC
SW19 SW20 SW21 SW22 SW23 SW24 SW25 SW26 K4 5
KEY3 GND 2
KEY0 KEY1 KEY 2 KEY 3 KEY 4 KEY 5 KEY 6 KEY 7 K5 6
KEY4 +5V 3
K6 7
KEY5 GND
K7 8
KEY6 POWER
KEY7
K0

K1

K2

K3

K4

K5

K6

K7

PUSH KEY

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Nhiệm vụ chính của khối nút nhấn là sử dụng cho các bài thí nghiệm về giao tiếp giữa vi điều khiển với nút
nhấn, lập trình điều khiển dùng nút nhấn. Khối gồm 8 nút nhấn được thiết kế theo nguyên tắc: nếu không nhấn nút
thì mức logic tại bit tương ứng của đầu nối J91 sẽ có mức logic cao (5V) và ngược lại khi nhấn nút thì sẽ có mức
logic cao.

Giáo trình thực hành vi xử lý. 22 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Ngoài ra, khối này còn được sử dụng cho việc tạo ra một xung kích có mức logic thấp (hoặc kích bằng cạnh
xung) cho các khối khác trên mô hình thí nghiệm, ví dụ như cung cấp xung đếm hoặc xung ngắt cho vi điều khiển.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J114 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối nút nhấn với vi điều khiển.
o Thí nghiệm ứng dụng điều khiển thiết bị bằng nút nhấn.
o Tạo các tín hiệu xung có mức logic thấp cho các khối khác trên mô hình thí nghiệm.

1.2.9 Khối bàn phím:

• Sơ đồ nguyên lý:

SW1 1 SW2 2 SW3 3 SW4 F1


J15
J18 1 R0
1 R0 R0 2 R1
R0 2 R1 R1 3 R2 SW5 4 SW6 5 SW7 6 SW8 F2
R1 3 R2
R2 4 R3
R2 4 R3 R3 5
R3 5 C0 C0 6
C0 6 C1 C1 7 SW9 7 SW10 8 SW11 9 SW12 F3
C1 7 C2 C2 8
C2 8 C3 C3
C3 KEYBOARD
KEY PAD SW13 SW14 0 SW15 SW16 F4

C0 ESC ENTER
5. KHOÁI PHÍM MA TRAÄN C1
C2
C3

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 23 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Khối bàn phím trên mô hình thí nghiệm này được thiết kế dựa vào cấu trúc hàng và cột của ma trận. Bàn phím
gồm 16 phím được sắp xếp theo ma trận 4 x 4 (tức 4 hàng x 4 cột). Các hàng và cột của ma trận phím này được kết
nối với vi điều khiển thông qua đầu nối J15 (KEYBOARD), R0-R3: các hàng của ma trận phím, C0-C3: các cột
của ma trận phím.

Để điều khiển bàn phím ma trận này ta sử dụng phương pháp quét phím. Để điều khiển quét phím thì bạn xuất
một dữ liệu 4 bit (trong đó có 1 bit ở mức logic thấp và 3 bit còn lại ở mức logic cao) ra các cột của ma trận phím
(C0-C3), đọc 4 bit dữ liệu ở các hàng của ma trận phím (R0-R3) vào để kiểm tra xem có phím nào được nhấn hay
không. Nếu có phím nhấn thì trong 4 bit đọc vào sẽ có 1 bit ở mức logic thấp và dựa trên cơ sở đó để thiết lập mã
phím nhấn. Nếu không có phím nhấn thì 4 bit đọc vào đều có mức logic cao, khi đó ta chuyển mức logic thấp sang
cột kế tiếp để dò tìm phím khác.

• Ứng dụng:

o Thí nghiệm phương pháp kết nối bàn phím được thiết kế theo kiểu ma trận với vi điều khiển.
o Thí nghiệm ứng dụng điều khiển thiết bị bằng bàn phím.
o Thí nghiệm các phương pháp quét phím và nhận dạng phím nhấn.

1.2.10 Khối relay:

• Sơ đồ nguyên lý:

COM12 COM22
6. KHOÁI RELAY COM11
NC11
COM21
NC21
4 4
3 3
5 NO11 5 NO21
8 NC12 8 NC22
VCC 6 VCC 6
7 NO12 7 NO22
1 1
2 2
R89 R91
330 LS1 330 LS2
D17 D18 RELAY 5V D19 D20 RELAY 5V
LED 1N4148 LED 1N4148

REL1 Q17 REL1 Q18


C1815 C1815
R90 R92
2K2 2K2

J27 J26
1 NC11 1 NC21
J111
NC11 2 COM11 NC21 2 COM21
1 VCC COM11 3 NO11 COM21 3 NO21
GND 2
NO11 4 NC12 NO21 4 NC22
+5V 3
NC12 5 COM12 NC22 5 COM22
GND COM12 6 NO12 COM22 6 NO22
POWER
NO12 7
NO22 7
GND 8
GND 8
+5V +5V
RELAY 1 OUT RELAY 2 OUT
VCC VCC

Giáo trình thực hành vi xử lý. 24 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Trên mô hình thí nghiệm được thiết kế sẵn hai relay LS1 và LS2 cho các ứng dụng lập trình điều khiển đóng
ngắt công suất. Hai relay được điều khiển bằng đầu nối J18 (RELAY CTRL), để đóng (hoặc) relay thì bạn cần cung
cấp một mức logic cao (hoặc logic thấp) đến đầu nối J18 này. Các công tắc bên trong relay được nối ra bên ngoài
thông qua các đầu nối J26 (RELAY1 OUT) và J27 (RELAY2 OUT). Trong đó: COM (Common): điểm chung; NC
(Normal Close): điểm thường đóng; NO(Normal Open): điểm thường mở.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J111 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối relay với vi điều khiển.
o Thí nghiệm ứng dụng điều khiển relay.

1.2.11 Khối tạo xung:

• Sơ đồ nguyên lý:

7. KHOÁI TAÏO XUNG


J113
VCC VCC
1
R93 R94 C7
GND 2
D21 100K 1K 103 +5V 3
1N4148
GND
POWER

R95 J33
D22 1K U18 LM555 1
1N4148 7 3 2
PULSE
DSCHG OUT PULSE
R96 VCC PULSE OUT
100K 4 VCC
RST 8 VCC
VCC 1
6 GND
2 THR 5 C9
TRG CV 104
C10 C11
10u 103

Giáo trình thực hành vi xử lý. 25 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Khối tạo xung trên mô hình sử dụng vi mạch LM555 để tạo ra các xung vuông cung cấp cho các ứng dụng lập
trình điều khiển cần đến. Xung vuông được lấy ra tại đầu nối J33 (PULSE OUT), tần số xung được điều chỉnh bởi
biến trở R93 và phần trăm xung ở mức cao (hoặc thấp) được điều chỉnh bởi biến trở R96.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J113 (POWER).

• Ứng dụng:

Phát xung clock có tần số thay đổi và tạo xung điều khiển cho vi điều khiển hoặc cho các khối khác trên mô
hình thí nghiệm.

1.2.12 Khối tạo áp thay đổi:

• Sơ đồ nguyên lý:

11. KHOÁI TAÏO AÙP


VCC VCC VCC VCC
D35
1 VCC R103 R104 R105 R106
GND 2 100K J45 100K J46 100K J47 100K J48
+5V 3 1 1 1 1
GND 2 2 2 2
POWER
V OUT 1 V OUT 2 V OUT 3 V OUT 4

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 26 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Khối tạo áp này được thiết kế trên mô hình chủ yếu nhằm mục đích để giả lập tín hiệu tương tự cung cấp cho
khối ADC thực hiện việc biến đổi. Khoảng điện áp thay đổi nằm trong khoảng 0V – 5V.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối D35 (POWER).

• Ứng dụng:

o Tạo các mức điện áp thay đổi liên tục từ 0V đến 5V cung cấp cho các khối trên mô hình thí
nghiệm.
o Giả lập tín hiệu tương tự cung cấp cho khối ADC.

1.2.13 Khối điều khiển động cơ bước:

• Sơ đồ nguyên lý:

8. KHOÁI MOTOR BUOC J30


J31 STEPPER 1
CTRL MOTOR U17 ULN2803 1
1 1 18 2
A
D0 2 2 IN1 OUT1 17 3
B VCC
D1 3 3 IN2 OUT2 16 4
C
D2 4 4 IN3 OUT3 15
D
D3 5 5 IN4 OUT4 14
D4 IN5 OUT5

1
2
3
6 6 13 1
D5 7 7 IN6 OUT6 12 2
A J105
D6 8 8 IN7 OUT7 11 3
B POWER
D7 IN8 OUT8 4
C

GND
GND
D

+5V
10 9
VCC COM GND J32
C8 STEPPER2
104

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Khối điều khiển động cơ bước được thiết kế trên cơ sở vi mạch ULN2803, khối có thể điều khiển được cùng
lúc hai động cơ bước công suất nhỏ (điện áp hoạt động: 5VDC, dòng điện tiêu thụ: 500 mA).

Giáo trình thực hành vi xử lý. 27 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

J31 (CTRL MOTOR): ngõ vào nhận tín hiệu điều khiển hai động cơ bước từ vi điều khiển; J30 (STEPPER 1),
J32 (STEPPER 2): ngõ ra điều khiển của hai động cơ bước.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J105 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối động cơ bước với vi điều khiển.
o Thí nghiệm ứng dụng điều khiển động cơ bước.

1.2.14 Khối Serial EEPROM:

• Sơ đồ nguyên lý:

J49 U27 AT24C04


A0 1 1 5
2 2 A0 SDA
A1 3 3 A1 VCC
A2 A2
ADDR EEPROM 6 VCC
SCL 8 C25
J50 7 VCC 4 104 J112
1 WP GND 1 VCC
SDA 2
GND 2
SCL 3
+5V 3
WP GND
CTRL EEPROM 10. KHOÁI SERIAL EEPROM POWER

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Khối được thiết kế trên nền tảng vi mạch bộ nhớ giao diện nối tiếp 2 dây, AT24C04, có dung lượng là 4 KB
(512 x 8 bit). Khối được thiết kế nhằm mục đích giúp người sử dụng có thể thí nghiệm các phương pháp ghi/đọc dữ
liệu giữa vi điều khiển với Serial-Eeprom.

J49 (ADDR EEPROM): ngõ vào địa chỉ của bộ nhớ; J50 (CTRL EEPROM): các tín hiệu điều khiển của
Eeprom như ngõ vào dữ liệu nối tiếp, xung clock nối tiếp và tín hiệu chống ghi vào bộ nhớ.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J112 (POWER).

Giáo trình thực hành vi xử lý. 28 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Ứng dụng:

o Thí nghiệm phương pháp kết nối Serial-Eeprom với vi điều khiển.
o Thí nghiệm các phương pháp ghi/đọc dữ liệu giữa vi điều khiển với Serial-Eeprom.

1.2.15 Khối cảm biến nhiệt:

• Sơ đồ nguyên lý:

J92 19. KHOÁI CAÛM BIEÁN NHIEÄT


1 R124 39K
V2 2
V2 -VCC
V2 -VCC

VCC
4
8
U39 R134

4
8
R133 2 - OP07 10K U40
20K 6 2 - OP07 J93
3 + 6 1
3 + 2
C52
10u V OUT
7
1

7
1
J96 VCC
1 VCC
V1 2
V1 -VCC
VCC V1
VCC
4
8

R135 U43 R136


39K 2 - OP07 10K C53 C54 C55
6 104 104 104
3 +
R151
C56 39K J135
10u 1
7
1

VCC
2
R137 3
-VCC
20K VCC 4
D44
LM335 POWER

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 29 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Để mở rộng các ứng dụng giao tiếp giữa vi điều khiển (môi trường số) với môi trường bên ngoài (môi trường
tương tự) và các ứng dụng mang tính thực tế hơn. Vì thế, trên khối được chuẩn bị sẵn khối cảm biến nhiệt với độ
phân giải là 0,5V để người sử dụng có thể nghiên cứu thiết kế và lập trình điều khiển các hệ thống đo nhiệt độ môi
trường và khống chế nhiệt độ bằng vi điều khiển.

J93 (V OUT): điện áp (tương tự) ngõ ra của khối cảm biến nhiệt; J92 (V2): ngõ vào của điện áp so sánh; J96
(V1): ngõ vào của tín hiệu từ cảm biến nhiệt LM335.

LM335 là cảm biến nhiệt độ có thể hoạt động đến 150OC. Tương ứng với nhiệt độ 0OK thì LM335 cho ra điện
áp 0V. Cứ tăng 1OC thì điện áp ra tăng 10mV. Như vậy, với 0OC thì điện áp ra là 2,73V. Để dễ dàng cho việc xử lý
chương trình thì với 0OC điện áp ra nên là 0V. Muốn vậy cần có thêm mạch khuếch đại hiệu để trừ bớt đi 2,73V.

Điện áp ngõ ra tại J93 V OUT = AV(V1 – V2). Suy ra, điện áp ngõ ra thay đổi 10AV (mV) khi nhiệt độ thay
đổi 1OC.

Độ phân giải cần thiết là 0,5OC nên điện áp thay đổi khi nhiệt độ thay đổi 1OC phải bằng 2 lần độ phân giải của
ADC 0809:

10AV (mV) = 2 x 19,6 (mV) → AV = 3,92 → chọn RF = R124 = 39K và RI = R134 = 10K

Tiến hành cân chỉnh mạch: chỉnh biến trở R137 sao cho V1 = 2,73 + 0,01 x tOC (V). Trong thực tế để chính xác
thì ta nhúng LM335 vào nước đá đang tan (0OC). Chỉnh biến trở R133 sao cho V2 = 2,73 V.

Chú ý: nhiệt độ sau khi qua khối cảm biến nhiệt sẽ tạo ra một điện áp tại J93 (V OUT) có giá trị là 39 * tOC
(mV). Với độ phân giải của ADC 0809 là 19,6 mV thì điện áp trên sau khi qua ADC 0809 sẽ có giá trị là 39 * tOC /
19,6 ≈ 2 * tOC.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J135 (POWER).

• Ứng dụng:

o Thí nghiệm ứng dụng đo nhiệt độ môi trường bằng vi điều khiển.
o Giả lập tín hiệu tương tự cung cấp cho khối ADC.

Giáo trình thực hành vi xử lý. 30 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.16 Khối đệm dữ liệu:

• Sơ đồ nguyên lý:

13. KHOÁI ÑEÄM DÖÕ LIEÄU


J53 J54 J68 J69
INPUT 1 U28 ULN2803 OUTPUT 1 INPUT 3 U31 ULN2803 OUTPUT 3
1 1 18 1 1 1 18 1
IN0 2 2 IN1 OUT1 17 2
OUT0 IN0 2 2 IN1 OUT1 17 2
OUT0
IN1 3 3 IN2 OUT2 16 3
OUT1 IN1 3 3 IN2 OUT2 16 3
OUT1
IN2 4 4 IN3 OUT3 15 4
OUT2 IN2 4 4 IN3 OUT3 15 4
OUT2
IN3 5 5 IN4 OUT4 14 5
OUT3 IN3 5 5 IN4 OUT4 14 5
OUT3
IN4 6 6 IN5 OUT5 13 6
OUT4 IN4 6 6 IN5 OUT5 13 6
OUT4
IN5 7 7 IN6 OUT6 12 7
OUT5 IN5 7 7 IN6 OUT6 12 7
OUT5
IN6 8 8 IN7 OUT7 11 8
OUT6 IN6 8 8 IN7 OUT7 11 8
OUT6
IN7 IN8 OUT8 OUT7 IN7 IN8 OUT8 OUT7
10 9 10 9
+5V COM GND +5V COM GND
C29 J109 C33
104 1 VCC 104
GND 2
+5V 3
GND
POWER
J61 J62 J78 J79
INPUT 2 U30 ULN2803 OUTPUT 2 INPUT 4 U32 ULN2803 OUTPUT 4
1 1 18 1 1 1 18 1
IN0 2 2 IN1 OUT1 17 2
OUT0 IN0 2 2 IN1 OUT1 17 2
OUT0
IN1 3 3 IN2 OUT2 16 3
OUT1 IN1 3 3 IN2 OUT2 16 3
OUT1
IN2 4 4 IN3 OUT3 15 4
OUT2 IN2 4 4 IN3 OUT3 15 4
OUT2
IN3 5 5 IN4 OUT4 14 5
OUT3 IN3 5 5 IN4 OUT4 14 5
OUT3
IN4 6 6 IN5 OUT5 13 6
OUT4 IN4 6 6 IN5 OUT5 13 6
OUT4
IN5 7 7 IN6 OUT6 12 7
OUT5 IN5 7 7 IN6 OUT6 12 7
OUT5
IN6 8 8 IN7 OUT7 11 8
OUT6 IN6 8 8 IN7 OUT7 11 8
OUT6
IN7 IN8 OUT8 OUT7 IN7 IN8 OUT8 OUT7
10 9 10 9
+5V COM GND +5V COM GND
C32 C34
104 104

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 31 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Trong trường hợp các port xuất nhập của vi điều khiển cần phải điều khiển những thiết bị công suất lớn hoặc
phải điều khiển cùng lúc nhiều thiết bị trên một port. Lúc này đòi hỏi cần phải có các bộ khuếch đại dòng điện ngõ
ra tại các port xuất nhập của vi điều khiển thì nó mới có thể đáp ứng được công việc điều khiển nêu trên.

Trên mô hình thí nghiệm được thiết kế sẵn bốn bộ đệm dữ liệu có chức năng khuếch đại các dòng điện tại ngõ
vào của chúng. Dòng điện tại ngõ ra là khoảng 300 - 500 mA. Lưu ý một điều rất quan trọng trong khối này là các
bộ đệm ULN2803 sử dụng ở đây là các bộ đệm có đảo.

J53, J68, J61, J78 (INPUT): ngõ vào của các bộ đệm dữ liệu; J54, J69, J62, J79 (OUTPUT): ngõ ra của các bộ
đệm dữ liệu (ngõ ra có đảo trạng thái so với ngõ vào).

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J109 (POWER).

• Ứng dụng:

o Được sử dụng để thực hiện việc kết nối giữa các thiết bị ngoại vi công suất cao với chip vi điều
khiển.
o Khuếch đại dòng điện điều khiển cung cấp cho các thiết bị công suất cao.
o Lưu ý khối này là khối khuếch đại đệm đảo.

Giáo trình thực hành vi xử lý. 32 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.17 Khối giải mã:

• Sơ đồ nguyên lý:

4. KHOÁI GIAÛI MAÕ U10 7447 J14 U12 7447 J19


7 13 1 7 13 1
1 D0 A 12 2
A 1 D0 A 12 2
A
2 D1 B 11 3
B 2 D1 B 11 3
B
6 D2 C 10 4
C 6 D2 C 10 4
C
D3 D 9 5
D D3 D 9 5
D
E 15 6
E E 15 6
E
F 14 7
F F 14 7
F
J16 VCC G 8
G J20 VCC G 8
G
1 4 VCC
DP 1 4 VCC
DP
A 2 3 BI/RBO 16 7SEG OUT 1
A 2 3 BI/RBO 16 7SEG OUT 3
B 3 5 LT VCC 8
B 3 5 LT VCC 8
C 4 RBI GND C 4 RBI GND
D 5 U11 7447 J17
D 5 U13 7447 J21
A 6 7 13 1
A 6 7 13 1
B 7 1 D0 A 12 2
A B 7 1 D0 A 12 2
A
C 8 2 D1 B 11 3
B C 8 2 D1 B 11 3
B
D 6 D2 C 10 4
C D 6 D2 C 10 4
C
BCD IN 1-2 D3 D 9 5
D BCD IN 3-4 D3 D 9 5
D
E 15 6
E VCC E 15 6
E
F 14 7
F F 14 7
F
VCC VCC G 8
G VCC G 8
G
4 VCC
DP C3 C4 4 VCC
DP
3 BI/RBO 16 7SEG OUT 2 104 104 3 BI/RBO 16 7SEG OUT 4
C1 C2 5 LT VCC 8 5 LT VCC 8
104 104 RBI GND RBI GND

VCC

16
J24 U15A 74139 J25
J22 U14 74138 J23 1 2 4 1
SEL A SEL0

GNDVCC
1 1 15 1 2 3 A Y0 5 2
SEL A 2 2 A Y0 14 2
SEL0 SEL B B Y1 6 3
SEL1
SEL B 3 3 B Y1 13 3
SEL1 DECODER 2-4 1 Y2 7 4
SEL2
SEL C C Y2 12 4
SEL2 G Y3 SEL3
DECODER 3-8 Y3 11 5
SEL3 DECODER OUT
VCC Y4 10 6
SEL4

8
6 Y5 9 7
SEL5 J28 U15B 74139 J29
VCC 4 G1 Y6 7 8
SEL6 1 14 12 1
5 G2A Y7 SEL7 SEL A 2 13 A Y0 11 2
SEL0
G2B VCC DECODER OUT
SEL B B Y1 10 3
SEL1
C5 C6 16 DECODER 2-4 15 Y2 9 4
SEL2
104 104 VCC 8 J36 G Y3 SEL3
GND 1 VCC DECODER OUT
GND 2
+5V 3
GND
POWER

• Sơ đồ bố trí linh kiện:

Giáo trình thực hành vi xử lý. 33 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Giới thiệu chung:

Mô hình thí nghiệm này được thiết kế sẵn một bộ giải mã 3 sang 8 (U14 - 74138), hai bộ giải mã 2 sang 4 (U15
- 74139) và bốn bộ giải mã BCD sang 7 đoạn (U10..U13 - 7447). Mục đích chính của các bộ giải mã này là sử
dụng kết hợp với khối LED 7 đoạn để sinh viên có thể thiết kế, thí nghiệm và tìm hiểu về các phương pháp điều
khiển LED 7 đoạn từ đơn giản (điều khiển trực tiếp) đến phức tạp (điều khiển theo kiểu quét LED). Một số phương
pháp điều khiển LED 7 đoạn như (cấu trúc của các phương pháp này có thể xem ở phần sau hoặc xem trong tài liệu
“Hướng dẫn sử dụng phần mềm mô phỏng MCS-51 Topview Simulator”):

o Chế độ hiển thị không đa hợp với ngõ vào BCD (Non Multiplexed displays with BCD inputs).
o Chế độ hiển thị không đa hợp với ngõ vào 7 đoạn (Non Multiplexed displays with 7 segment
inputs).
o Chế độ hiển thị đa hợp ngõ vào BCD với bộ đa hợp bên trong (Multiplexed BCD input displays
with internal multiplexer).
o Chế độ hiển thị đa hợp ngõ vào 7 đoạn với bộ đa hợp bên trong (Multiplexed 7 segment input
displays with internal multiplexer).
o Chế độ hiển thị đa hợp ngõ vào BCD với bộ đa hợp bên ngoài (Multiplexed BCD input displays
with external multiplexer).
o Chế độ hiển thị đa hợp ngõ vào 7 đoạn với bộ đa hợp bên ngoài (Multiplexed 7 segment input
displays with external multiplexer).

J16 (BCD IN 1-2): ngõ vào của hai tín hiệu mã BCD (4 bit cao và 4 bit thấp); J14, J17 (7 SEG OUT 1, 7 SEG
OUT 2): ngõ ra của tín hiệu mã 7 đoạn tương ứng. Tương tự như vậy cho J20 và J19, J21.

J22 (DECODER 3-8): các ngõ vào của bộ giải mã 3 sang 8; J23 (DECODER OUT): các ngõ ra của bộ giải mã
3 sang 8.

J24, J28 (DECODER 2-4): các ngõ vào của bộ giải mã 2 sang 4; J25, J29 (DECODER OUT): các ngõ ra của
bộ giải mã 2 sang 4.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J36 (POWER).

• Ứng dụng:

o Cung cấp bộ giải mã BCD sang 7 đoạn.


o Cung cấp bộ giải mã 2 sang 4 hoặc bộ giải mã 3 sang 8.
o Thí nghiệm phương pháp kết nối khối LED 7 đoạn trực tiếp hoặc kết nối có thông qua các bộ giải
mã với khối vi điều khiển.

Giáo trình thực hành vi xử lý. 34 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.18 Khối ADC:

• Sơ đồ nguyên lý:

22. KHOÁI ADC J112


J113
ANALOG IN U52 ADC0809
1 26 17 1
IN0 2 27 IN0 D0 14 2
D0
D34
IN1 3 28 IN1 D1 15 3
D1
1 VCC IN2 4 1 IN2 D2 8 4
D2
GND 2
IN3 5 2 IN3 D3 18 5
D3
+5V 3
IN4 6 3 IN4 D4 19 6
D4
GND IN5 7 4 IN5 D5 20 7
D5
POWER
IN6 8 5 IN6 D6 21 8
D6
IN7 IN7 D7 D7
VCC DIGITAL OUT
CLK750K 10 VCC
CLK 12
C65 C66 REF+ 16
104 104 A0 25 REF-
A1 24 A0
A2 23 A1
VCC A2 9
OE 7
14

EOC
WR 2 VCC
J118 U54A 1 6 11
1 3 7402 22 START VCC 13
CS0809 2 ALE GND
CS0809
CS0809 RD 5
7

U54B 4
6 7402

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Nhằm mục đích giúp sinh viên có thể nghiên cứu, thiết kế và tìm hiểu về nguyên lý chuyển đổi tín hiệu tương
tự sang tín hiệu số và ứng dụng của các vi mạch ADC trong thực tế. Từ đó có thể dễ dàng và thuận tiện trong việc
thiết kế được các hệ thống chuyển đổi tín hiệu tương tự sang tín hiệu số dùng vi điều khiển kết hợp vi mạch ADC.

Giáo trình thực hành vi xử lý. 35 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Trên mô hình thí nghiệm đã thiết kế sẵn một vi mạch ADC 0809, là một vi mạch chuyển đổi tương tự – số 8 bit
có 8 ngõ vào tín hiệu tương tự, để thực hiện việc chuyển đổi tín hiệu này. J112 (ANALOG IN): các ngõ vào tín
hiệu tương tự (có 8 ngõ vào); J113 (DIGITAL OUT): ngõ ra tín hiệu số 8 bit; J118 (CS 0809): ngõ vào cho phép
ADC hoạt động. Việc chọn lựa ngõ vào của tín hiệu tương tự sẽ do khối vi điều khiển quyết định thông qua các
đường địa chỉ A0..A2. Quá trình thực hiện chuyển đổi và đưa dữ liệu tới vi điều khiển sẽ do khối vi điều khiển
quản lý thông qua hai tín hiệu RD\ và WR\. Tần số lấy mẫu của chip ADC là 750KHz được lấy từ bộ chia tần trong
khối vi điều khiển.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối D34 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối vi mạch ADC với vi điều khiển.
o Thí nghiệm phương pháp chuyển đổi dạng tín hiệu từ tương tự sang số sử dụng vi mạch ADC0809.

1.2.19 Khối DAC:

• Sơ đồ nguyên lý:

21. KHOÁI DAC


J119
DIGITAL IN U55 DAC0808
8 12 2 R141 -12V
D7 7 11 A8 /IOUT 2K7
D6 6 10 A7
D5 5 9 A6 4 R142
D4 A5 IOUT
4
5
4 8 10K
D3 3 7 A4 2 J120
D2 2 6 A3
-
6 1
D1 1 5 A2 16 3 2
ANALOG
D0 A1 COMP
+
U56
ANALOG
D45 R145 14 C70 R143 LM741 ANALOG OUT
5V1 10K VR+ 3 104 2K7
7
1

R144 V-
2K7 15 13
VR- V+ +12V
C72 R146
104 2K7
C71 C73 C74
10u 104 104
R150 VCC -VCC
2K7
+12V

Giáo trình thực hành vi xử lý. 36 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Nhằm mục đích giúp sinh viên có thể nghiên cứu, thiết kế và tìm hiểu về nguyên lý chuyển đổi tín hiệu số sang
tín hiệu tương tự và ứng dụng của các vi mạch DAC trong thực tế. Từ đó có thể dễ dàng và thuận tiện trong việc
thiết kế được các hệ thống chuyển đổi tín hiệu số sang tín hiệu tương tự dùng vi điều khiển kết hợp vi mạch DAC.

Trên mô hình thí nghiệm đã thiết kế sẵn một vi mạch DAC 0808, là một vi mạch chuyển đổi số – tương tự 8
bit, để thực hiện việc chuyển đổi tín hiệu này. J119 (DIGITAL IN): ngõ vào tín hiệu số 8 bit; J120 (ANALOG
OUT): ngõ ra tín hiệu tương tự (dạng điện áp). Vi mạch U56 (LM741) làm nhiệm vụ biến đổi tín hiệu tương tự tại
ngõ ra của vi mạch DAC từ dạng dòng điện sang dạng điện áp. Biến trở R145: điều chỉnh mức điện áp chuẩn.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J108 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối vi mạch DAC với vi điều khiển.
o Thí nghiệm phương pháp chuyển đổi dạng tín hiệu từ số sang tương tự sử dụng vi mạch DAC0808.

Giáo trình thực hành vi xử lý. 37 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.20 Khối RTC:

• Sơ đồ nguyên lý:

18. KHOÁI REAL TIME CLOCK (RTC)


J103
J104 U46 DS12887 ADD/DATA BUS
VCC READ/WRITE 4 1
1 17 AD0 5 2
AD0
R139 10K
RD 2 15 DS AD1 6 3
AD1
WR R/W AD2 7 4
AD2
VCC R138 R140 AD3 8 5
AD3
VCC 10K 10K 4 23 AD4 9 6
AD4
C64 J109 SQW 3 19 SQW AD5 10 7
AD5
INT IRQ AD6 11 AD6
8

10p U49 PCF8583 1 2 18 8


1 7 2
A0 RST 1 14 RST AD7 AD7
INT ALE
VDD

OSC1 INT 3 AS J108


Y4 4
SCL J105 13 2
2 6
SDA CTRL P-RTC VCC CS 1
RTC
OSC0 SCL CTRL S-RTC 24
RTC
32.768KHz 12 VCC 1 CS RTC
VSS

3 5 GND MOT
A0 SDA

VCC J147
4

1 VCC
GND 2
C62 C63
+5V 3
104 104
GND
POWER

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Nhằm mục đích giúp sinh viên có thể nghiên cứu, thiết kế và tìm hiểu về các vi mạch đồng hồ thời gian thực
(RTC) để từ đó có thể dễ dàng và thuận tiện trong việc thiết kế được các hệ thống đồng hồ số dùng vi điều khiển
kết hợp vi mạch RTC.

Trên mô hình thí nghiệm đã thiết kế sẵn hai loại RTC: loại giao tiếp song song (DS12C887) và loại giao tiếp
nối tiếp (PCF8583). Lưu ý rằng loại RTC nối tiếp không lưu giữ được các thông số hoạt động khi nguồn cung cấp
bị mất.

Giáo trình thực hành vi xử lý. 38 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

o Loại giao tiếp song song (DS12C887): J103 (ADD/DATA BUS): bus địa chỉ và dữ liệu đa hợp;
J104 (READ/WRITE): tín điều khiển ghi và đọc RTC; J105 (CTRL P-RTC): tín hiệu ngắt, chốt địa
chỉ, reset RTC và tín hiệu xung đa tần; J108 (CS RTC): tín hiệu cho phép RTC hoạt động.
o Loại giao tiếp nối tiếp (PCF8583): J109 (CTRL S-RTC): tín hiệu địa chỉ, ngắt, xung clock nối tiếp
và dữ liệu nối tiếp.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J147 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp kết nối các vi mạch RTC với vi điều khiển.
o Thí nghiệm lập trình ứng dụng thiết kế đồng hồ số sử dụng vi mạch RTC kiểu song song.
o Thí nghiệm lập trình ứng dụng thiết kế đồng hồ số sử dụng vi mạch RTC kiểu nối tiếp.

1.2.21 Khối thanh ghi dịch:

• Sơ đồ nguyên lý:

J111
J110 U50 4094 24. KHOÁI THANH GHI DÒCH U51 74165
1 1 4 1 10 9
STR 2 2 STR Q1 5 2
D0 J114 DS QH 7
IN 3 3 D Q2 6 3
D1 1 11 QH
CLK 15 CLK Q3 7 4
D2 D0 2 12 P0
SERIAL IN 1 OE Q4 14 5
D3 D1 3 13 P1
VCC Q5 13 6
D4 D2 4 14 P2
Q6 12 7
D5 D3 5 3 P3
Q7 11 8
D6 D4 6 4 P4
VCC Q8 D7 D5 7 5 P5
16 9 PARALLEL OUT 1
D6 8 6 P6
8 VCC QS1 10
D7 P7
GND QS2 PARALLEL IN CLK-3 2
15 CP1 VCC
J115 U53 74164 J116 CP2 16
1 1 3 1 J117 1 VCC 8
IN 2 2 A Q0 4 2
D0 1 PL GND
CLK B Q1 5 3
D1 CLK 2 LD
SERIAL IN 2 8 Q2 6 4
D2 LD 3 OUT
CLK Q3 10 5
D3 OUT
9 Q4 11 6
D4 SERIAL OUT VCC
14 CLR Q5 12 7
D5 J115
VCC
7 VCC Q6 13 8
D6 1 VCC
GND Q7 D7 C67 C68 C69
GND 2
PARALLEL OUT 2 104 104 104
+5V 3
GND
POWER

Giáo trình thực hành vi xử lý. 39 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Khối thanh ghi dịch trên mô hình thí nghiệm được sử dụng để nghiên cứu thí nghiệm và thiết kế các ứng dụng
chuyển đổi dữ liệu từ dạng nối tiếp sang dạng song song 8 bit và ngược lại. Việc nghiên cứu thí nghiệm tính năng
chuyển đổi này giúp cho bạn có thể tìm hiểu sâu hơn về nguyên lý hoạt động và phương pháp điều khiển cũng như
chế độ hoạt động của port nối tiếp trong chip vi điều khiển (mà chủ yếu là chế độ thanh ghi dịch của port nối tiếp).

Port nối tiếp của chip vi điều khiển có thể được sử dụng để mở rộng thành một hay nhiều port xuất song song.
Để thực hiện điều này, ta sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và sử dụng vi
mạch chuyển đổi từ dạng nối tiếp ra dạng song song (Serial In – Parallel Out) như 74164 (U53) và 4094 (U50). Với
hoạt động xuất ở chế độ thanh ghi dịch thì trên vi điều khiển ngõ RXD là ngõ ra dữ liệu nối tiếp, ngõ TXD là ngõ
ra xung clock.

Port nối tiếp của chip vi điều khiển có thể được sử dụng để mở rộng thành một hay nhiều port nhập song song.
Để thực hiện điều này, ta sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và sử dụng vi
mạch chuyển đổi từ dạng song song ra dạng nối tiếp (Parallel In – Serial Out) như 74165 (U51). Với hoạt động
xuất ở chế độ thanh ghi dịch thì trên vi điều khiển ngõ RXD là ngõ vào dữ liệu nối tiếp, ngõ TXD là ngõ ra xung
clock.

U50 (4094) và U53 (74164) là hai vi mạch chuyển đổi dữ liệu từ dạng nối tiếp ra dạng song song. J110
(SERIAL IN1), J115 (SERIAL IN2): ngõ vào của dữ liệu nối tiếp, IN: ngõ vào của dữ liệu nối tiếp, CLK: ngõ vào
của xung clock hay xung dịch chuyển dữ liệu, STR: ngõ vào của xung chốt dữ liệu ngõ ra. J111 (PARALLEL
OUT1), J116 (PARALLEL OUT2): ngõ ra của dữ liệu song song 8 bit.

U51 (74165) là vi mạch chuyển đổi dữ liệu từ dạng song song ra dạng nối tiếp. J114 (PARALLEL IN): ngõ vào
của dữ liệu song song 8 bit. J117 (SERIAL OUT): ngõ ra của dữ liệu nối tiếp, OUT: ngõ ra của dữ liệu nối tiếp,
CLK: ngõ vào của xung clock hay xung dịch chuyển dữ liệu, LD: cho phép tải dữ liệu song song vào vi mạch
(LD=0: tải dữ liệu mới từ ngõ vào song song vào trong vi mạch, LD=1: chốt dữ liệu đã nhận được từ ngõ vào song
song lại và thực hiện việc ghi dịch dữ liệu này.

Giáo trình thực hành vi xử lý. 40 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J115 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp xuất nhập dữ liệu dạng nối tiếp sử dụng phương thức thanh ghi dịch.
o Thí nghiệm phương pháp chuyển đổi kiểu dữ liệu từ dạng song song sang dạng nối tiếp sử dụng
phương thức thanh ghi dịch.
o Thí nghiệm phương pháp chuyển đổi kiểu dữ liệu từ dạng nối tiếp sang dạng song song sử dụng
phương thức thanh ghi dịch.

1.2.22 Khối mở rộng port I/O:

• Sơ đồ nguyên lý:

U41 8255 U42 74245


D0 34 4 1 D0 2 18 1
D1 D0 PA0 PA0 D1 A0 B0 D0
33 3 2 PA1 3 17 2 D1
D2 32 D1 PA1 2 3 D2 4 A1 B1 16 3
D2 PA2 PA2 A2 B2 D2

DATA IN
D3 D3
PORT A

31 1 4 PA3 5 15 4 D3
D4 D3 PA3 D4 A3 B3
J94

J95
30 40 5 PA4 6 14 5 D4
D5 29 D4 PA4 39 6 D5 7 A4 B4 13 6
D5 PA5 PA5 D6 A5 B5 D5
D6 28 38 7 8 12 7
D6 PA6 PA6 D7 A6 B6 D6
D7 27 37 8 PA7 9 11 8 D7
D7 PA7 J98 A7 B7
A0 9 18 1 PB0 245 1 19 20
A0 PB0 G VCC VCC
A1 8 19 2 2 1 10
A1 PB1 20 3
PB1 245 DIR GND
PB2 PB2
PORT B

21 4 PB3 CS245 U44 74573


PB3 D0
J97

RD 5 22 5 PB4 2 19 1 D0
J100 WR 36 RD PB4 23 6 D1 3 D0 Q0 18 2
WR PB5 PB5 D1 Q1 D1

DATA OUT
1 6 24 7 D2 4 17 3
8255 CS PB6 PB6 D3 D2 Q2 D2
8255 2 35 25 8 PB7 5 16 4 D3
RESET PB7 D4 D3 Q3

J99
6 15 5 D4
CS8255 14 1 D5 7 D4 Q4 14 6
PC0 PC0 D5 Q5 D5
15 2 D6 8 13 7
PC1 PC1 D6 Q6 D6
16 3 PC2 D7 9 12 8 D7
PC2 D7 Q7
PORT C

17 4 PC3
PC3
J101

13 5 PC4 11 20
PC4 LE VCC VCC
VCC 12 6 1 10
PC5 PC5 OE GND
26 11 7 PC6
7 VCC PC6 10 8 U45 74573
GND PC7 PC7 D0 2 19 1 D0
D1 3 D0 Q0 18 2
D1 Q1 D1

DATA OUT
VCC D2 4 17 3
D3 D2 Q2 D2
5 16 4 D3
D3 Q3

J102
D4 6 15 5
14

D5 D4 Q4 D4
7 14 6
WR 2 WR 5 D6 8 D5 Q5 13 7
D5
D6 Q6 D6
U47A 1 U47B 4 D7 9 12 8 D7
J106 3 7402 J107 6 7402 D7 Q7

573A 1 573B 1 11 20
LE VCC VCC
2 2 1 10
573A 573B OE GND
VCC
7

CS573A CS573B

J107 C57 C58 C59 C60 C61


1 VCC 104 104 104 104 104
GND
+5V 2
GND 3

POWER

17. KHOÁI MÔÛ ROÄNG PORT I/O

Giáo trình thực hành vi xử lý. 41 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Như ta đã biết, vi điều khiển chỉ có tối đa bốn port xuất nhập để truyền thông với các thiết bị bên ngoài, đó là
chưa xét tới trường hợp khi vi điều khiển hoạt động ở chế độ sử dụng bộ nhớ ngoài thì vi điều khiển chỉ còn lại duy
nhất một port xuất nhập. Tuy nhiên trong thực tế có những trường hợp ta cần phải truyền thông với một số lượng
lớn hơn các thiết bị ngoại vi. Chính vì những đặc điểm này đã đặt ra cho chúng ta một vần để là phải làm cách nào
để nâng cao (mở rộng) được số lượng port xuất nhập cho vi điều khiển.

Khối mở rộng port I/O trên mô hình được tạo ra từ các vi mạch chuyển dụng để mở rộng port xuất nhập cho vi
điều khiển trên thực tế như: 8255 (mở rộng port xuất nhập), 74245(mở rộng port nhập), 74573 (mở rộng port xuất),
từ giúp cho bạn thuận tiện trong việc thực hiện các bài thí nghiệm về vấn đề này. Ơõ đây có một điểm mà bạn cần
lưu ý là các vi mạch 8255, 47245, 74573 trên đây đều được thiết kế để hoạt động tương tự như một bộ nhớ ngoài
của vi điều khiển (có nghĩa là sự hoạt động truyền thông của chúng diễn ra thông qua bus địa chỉ A0-A1, bus dữ
liệu D0-D7, bus điều khiển RD và WR, tín hiệu giải mã địa chỉ CS lấy từ khối vi điều khiển.

U41 (8255) cho phép mở rộng port xuất và port nhập. Bus dữ liệu D0-D7 của vi điều khiển sẽ được điều
khiển xuất nhập thông qua ba port J94 (PORT A), J97 (PORT B), J9101 (PORT C) dưới sự điều khiển của bus địa
chỉ A0-A1, tín hiệu RD (điều khiển đọc/nhập dữ liệu), tín hiệu WR (điều khiển ghi/xuất dữ liệu) và sự cho phép
của tín hiệu J100 (CS8255).

U42 (74245) cho phép mở rộng port nhập. Bus dữ liệu D0-D7 của vi điều khiển sẽ được điều khiển nhập
thông qua port J95 (DATA IN) dưới sự cho phép của tín hiệu J98 (CS245).

Giáo trình thực hành vi xử lý. 42 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

U44 (74573) và U45 (74573) cho phép mở rộng port xuất. Bus dữ liệu D0-D7 của vi điều khiển sẽ được điều
khiển xuất thông qua port J99 (DATA OUT) và J102 (DATA OUT) dưới sự điều khiển của tín hiệu WR (điều
khiển ghi/xuất dữ liệu) và sự cho phép của tín hiệu J107 (CS573A), J106 (CS573B).

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J107 (POWER).

• Ứng dụng:

o Thí nghiệm phương pháp xuất nhập dữ liệu dạng song song sử dụng các vi mạch số 74245, 74573.
o Thí nghiệm phương pháp lập trình điều khiển vi mạch PPI 8255 bằng vi điều khiển.
o Thí nghiệm các phương pháp mở rộng (tăng thêm số lượng) port xuất nhập dữ liệu.

Giáo trình thực hành vi xử lý. 43 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.23 Khối giao tiếp PC:

• Sơ đồ nguyên lý:

VCC
14. KHOÁI GIAO TIEÁP PC
VCC
C26 C27 C28
10u 10u 104

C72

2
10u
J55

C1+

V+
C1-
16 1 TXD
P1 VCC 2
1 N/A1 8 9
RXD
6 DSR R2IN R2OUT TXD/RXD
2 RXD 7 10 J58
7 RTS T2OUT T2IN N/A1 1
3 TXD RXD 2
N/A
8 CTS 12 13 TXD 3
RXD
4 DTR 14 R1OUT R1IN 11 DTR 4
TXD
9 N/A2 T1OUT T1IN DSR 5
DTR
5 RTS 6
DSR

GND
RTS

C2+

C2-
U29 CTS 7
CTS

V-
RS232C MAX232 N/A2 8
N/A

15
RS232C-PC
4

6
C30
10u
C31
P2 10u J65
1 STROBE\ 1
14 AUTOFEED\ 2
D0
2 D0 3
D1
15 ERROR\ 4
D2
3 D1 5
D3
16 INIT 6
D4
4 D2 7
D5
17 SEL IN\ 8
D6
5 D3 D7
18 GND DATA LPT-PC
6 D4 J70
19 GND 1
7 D5 2
NC
20 GND 3
NC
8 D6 4
NC
21 GND 5
ERROR\
9 D7 6
SEL
J61 22 GND 7
PE
1 VCC 10 ACK 8
ACK\
GND 2 23 GND BUSY
+5V 3 11 BUSY STATUS LPT-PC
GND 24 GND J75
POWER 12 PE 1
25 GND 2
STROBE\
13 SEL 3
AF\
J77 4
INIT
VCC LPT
SEL IN\
1 CONTROL LPT-PC
2 VCC JR1 PS2
3 6 5 J81
4 J82 4 3 1
2 2 1 2
CLOCK
1
-DATA DATA
USB 1
+DATA PS2-1-PC
USB1-PC VCC JR2 PS2 J85
J86 J87 6 5 1
VCC 2 4 3 2
CLOCK
1 1
-DATA 2 1
DATA
2
+DATA PS2-2-PC
3 USB2-PC
4

USB 2

Giáo trình thực hành vi xử lý. 44 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Trên mô hình thí nghiệm được thiết kế sẵn một số chuẩn giao tiếp thông dụng trên máy tính như: LPT, RS232,
USB và PS2.

Khi cần thí nghiệm loại cổng giao tiếp nào thì ta dùng loại cáp tương ứng để kết nối cổng giao tiếp của máy
tính với cổng giao tiếp tương ứng trên mô hình thí nghiệm lại với nhau. Để thuận tiện và linh động trong việc thí
nghiệm, tất cả các đường tín hiệu của các cổng giao tiếp này đều đã được nối đến các đầu nối trên mô hình thí
nghiệm. Ta có thể kết nối vi điều khiển với các cổng giao tiếp thông qua các đầu nối này.

o Cổng LPT: J65 (DATA LPT-PC): bus dữ liệu; J70 (STATUS LPT-PC): bus trạng thái; J75
(CONTROL LPT-PC): bus điều khiển.
o Cổng RS232: J55 (TXD/RXD): giao tiếp có thông qua MAX232; J58 (RS232C-PC): giao tiếp trực
tiếp.
o Cổng USB: J82 (USB1-PC), J87 (USB2-PC): tín hiệu dữ liệu; chân VCC và GND của cổng đã
được kết nối sẵn vào mô hình.
o Cổng PS2: J81 (PS2-1-PC), J85 (PS2-2-PC): tín hiệu dữ liệu và xung clock; chân VCC và GND
của cổng đã được kết nối sẵn vào mô hình.

Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J61 (POWER).

• Ứng dụng:

Thí nghiệm phương pháp giao tiếp giữa vi điều khiển với máy tính thông qua các chuẩn kết nối LPT, RS232,
USB và PS2.

Giáo trình thực hành vi xử lý. 45 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

1.2.24 Khối mở rộng bus:

• Sơ đồ nguyên lý:

J123 SW28 J124 J125 SW29 J126


1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8

BUS SWITCH BUS BUS SWITCH BUS 23. KHOÁI MÔÛ ROÄNG
J129 SW30 J130 J131 SW31 J132 J133 SW32 J134
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7
8 8 8 8 8 8

BUS SWITCH BUS BUS SWITCH BUS BUS SWITCH BUS

• Sơ đồ bố trí linh kiện:

• Giới thiệu chung:

Trên thực tế, mỗi port của vi điều khiển có thể cùng lúc điều khiển nhiều thiết bị. Chính vì mục đích này mà
trên mô hình thí nghiệm này đã được thiết kế sẵn khối mở rộng để có thể tăng thêm số lượng thiết bị ngoại vi được
nối vào cùng một port điều khiển.

Trong khối mở rộng gồm 5 bộ chuyển đổi mở rộng 8 bit độc lập nhau (SW28, SW29, SW30, SW31, SW32).
Các bộ chuyển đổi mở rộng này có nhiệm vụ liên kết hai cặp đầu nối của nó (J123-J124, J125-J126, J129-J130,
J131-J132, J133-J134) lại với nhau theo từng bit một (khi công tắc tương ứng ở vị trí ON).

• Ứng dụng:

Được sử dụng để mở rộng, nâng cao khả năng kết nối các port xuất nhập của chip vi điều khiển đến cùng một
lúc nhiều thiết bị ngoại vi hơn.

Giáo trình thực hành vi xử lý. 46 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

2.1 Giới thiệu:

Phần mềm MCU Program Loader kết hợp với khối lập trình vi điều khiển trên mô hình thí nghiệm tạo thành
một thiết bị lập trình vi điều khiển họ 89 của hãng Atmel. Thiết bị lập trình vi điều khiển này hỗ trợ cho các vi
mạch sau:
Flash (Kbytes) EEPROM RAM (Bytes) I/O Pins
AT89C51 4 128 32
AT89LV51 4 128 32
AT89C52 8 256 32
AT89LV52 8 256 32
AT8C55 20 256 32
AT89LV55 20 256 32
AT89C55WD 20 256 32
AT89S51 4 128 32
AT89LS51 4 128 32
AT89S52 8 256 32
AT89LS52 8 256 32
AT89S53 12 256 32
AT89LS53 12 256 32
AT89S8252 8 2 KB 256 32
AT89LS8252 8 2 KB 256 32
AT89C1051 1 128 15
AT89C2051 2 128 15
AT89C4051 4 128 15
Thiết bị lập trình này bao gồm một hệ thống phần cứng và phần mềm thông minh. Đơn giản, dễ sử dụng và
hiệu suất cao đó là những đặc điểm nổi bật của thiết bị lập trình này. Nó có khả năng lập trình (Progam), đọc
(Read) và kiểm tra mã dữ liệu (Verify Code Data), chống đọc dữ liệu (Write Lock Bits), xoá (Erase) và kiểm tra
khoảng trống (Blank Check).Phần cứng (khối lập trình vi điều khiển trên mô hình thí nghiệm) được tạo thành từ
một vi điều khiển thông minh mà nó có khả năng hiểu được giao thức truyền nhận dữ liệu với máy tính thông qua
port nối tiếp. Trên máy tính, phần mềm MCU Program Loader có khả năng nhận dạng phần cứng và nhận dạng vi
mạch vi điều khiển được đưa vào thiết bị. Phần mềm sẽ thực hiện việc truyền dữ liệu từ máy tính sang vi điều khiển
cần lập trình hoặc đọc dữ liệu trên vi điều khiển đã được lập trình trở về máy tính. Định dạng dữ liệu sử dụng ở đây
phải là tập tin dạng HEX của Intel. Ngoài ra, phần mềm còn hỗ trợ việc chống đọc dữ liệu từ vi điều khiển đã được
lập trình (Lock bit).

Các thông số kỹ thuật:

• Hỗ trợ lập trình các vi điều khiển họ 89 của hãng Atmel.


• Tự động nhận dạng phần cứng được kết nối và các thiết bị.
• So sánh dữ liệu và kiểm tra lỗi.
• Khoá các chương trình trên vi mạch sau khi lập trình.
• Tự động xoá trước khi ghi dữ liệu mới và tự động kiểm tra dữ liệu sau khi ghi xong.
• Chuẩn giao tiếp: RS232
• Tốc độ truyền dữ liệu: 9600 bps, 8 bits, no parity, 1 stop, no flow control.
• Định dạng tập tin dữ liệu: Intel 8 bit HEX.
• Hệ điều hành làm việc: Windows 95, 98, Me, 2000, NT, XP.

Giáo trình thực hành vi xử lý. 48 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

2.2 Hướng dẫn sử dụng phần mềm MCU Program Loader V2.0:

Sử dụng phần mềm tương thích để soạn thảo chương trình điều khiển mong muốn cho vi điều khiển. Sau khi đã
soạn thảo xong và kiểm tra hoàn chỉnh chương trình điều khiển, bạn cần phải biên dịch chương trình này sang ngôn
ngữ máy ở dạng tập tin Intel 8 bit HEX và lưu vào trong máy tính.

Các bước thao tác để tải một chương trình điều khiển từ máy tính sang chip vi điều khiển bằng cách sử dụng
phần mềm MCU Program Loader V2.0.

• Bước 1: Kết nối cáp RS232 giữa cổng COM của máy tính với cổng COM trên khối lập trình vi điều
khiển của mô hình thí nghiệm. Nếu máy tính có nhiều cổng COM thì kết nối với cổng nào cũng được
vì phần mềm sẽ tự nhận dạng cổng COM sử dụng.
• Bước 2: Gắn chip vi điều khiển cần lập trình vào trong socket tương ứng.
Lưu ý rằng:
o Chúng ta chỉ gắn một loại vi điều khiển vào trong socket tương ứng mà thôi (hoặc loại vi điều
khiển 40 chân hoặc loại vi điều khiển 20 chân). Không được gắn cùng lúc hai loại vi điều
khiển vào cả hai socket vì như thế thiết bị sẽ không hoạt động được.
o Chân số 1 của chip vi điều khiển phải được gắn sao cho nằm tại vị trí gần cần gạt của socket.
o Gạt cần xuống để khoá chặt chip vào mạch.

Giáo trình thực hành vi xử lý. 49 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

• Bước 3: Bật các công tắc nguồn trên mô hình để cấp nguồn cho khối lập trình vi điều khiển. Sau đó
nhấp đúp chuột vào biểu tượng ProLoad2 để khởi động phần mềm MCU Program Loader V2.0. Giao
diện làm việc của phần mềm sẽ được hiện lên như hình minh họa dưới đây.

Lưu ý rằng:
o Trường hợp lỗi không kết nối thiết bị (hình minh họa bên trái) hoặc lỗi không nhận dạng chip
(hình minh họa bên phải), giao diện làm việc sẽ như sau:

o Khi xuất hiện các trường hợp lỗi đó ta cần kiểm tra lại: nguồn cấp cho thiết bị, cáp kết nối
RS232, chip còn tốt hay đã hỏng, gắn chip vào mạch có đúng chiều hay không, gắn hai chip
vào hai socket cùng lúc phải không (chỉ được phép gắn một chip vào một socket bất kỳ mà
thôi).

Giáo trình thực hành vi xử lý. 50 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

• Bước 4: Tiến hành nạp chương trình từ máy tính vào bộ nhớ của chip hoặc đọc dữ liệu từ bộ nhớ của
chip vào trong máy tính.

o Trường hợp nạp chương trình cho chip:


 Nếu bạn muốn khóa không cho người khác đọc chương trình mà mình đã nạp trong
chip. Bạn đánh dấu chọn vào hộp chọn Set lock bytes after writing. Ngược lại thì bạn
không đánh dấu chọn vào hộp chọn này.

 Nhấp chuột vào nút Send. Một hộp thoại sẽ hiện lên để bạn chọn tập tin chương trình
cần nạp cho vi điều khiển.

Giáo trình thực hành vi xử lý. 51 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

 Chọn tập tin chương trình cần thiết, sau đó nhấn vào nút Open. Phần mềm sẽ tiến hành
xóa dữ liệu cũ có trên chip, nhận dạng lại thiết bị và tiến hành nạp dữ liệu vào chip.

 Quá trình nạp hoàn tất khi xuất hiện thông báo Write Successful trên giao diện làm
việc của phần mềm.

Lưu ý rằng: Số lượng byte bộ nhớ đã sử dụng mà phần mềm thông báo sau khi đã nạp chip xong
có thể không bằng (nhưng phải là nhỏ hơn) với số lượng byte của tập tin chương trình ngoài thực
tế. Lý do là phần mềm chỉ kiểm tra bộ nhớ của chip sau khi đã nạp xong và kết luận là byte đã sử
dụng khi giá trị của byte đó khác FFH mà thôi, còn nếu giá trị của byte đó bằng FFH thì phần
mềm coi như là byte chưa được sử dụng.

Giáo trình thực hành vi xử lý. 52 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

o Trường hợp đọc chương trình trong chip:


 Nhấp chuột vào nút Read. Một hộp thoại sẽ hiện lên để bạn nhập vào tên tập tin
chương trình mà tại đó bạn muốn lưu chương trình đọc được từ trong vi điều khiển.

 Bạn cần phải nhập tên tập tin vào mục File name, sau đó nhấp chuột vào nút Save để
tiếp tục quá trình xử lý. Phần mềm sẽ tiến hành đọc chương trình trong vi điều khiển
và lưu vào máy tính tại nơi mà bạn đã xác định ở trên.

Giáo trình thực hành vi xử lý. 53 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

 Quá trình đọc chương trình hoàn tất khi xuất hiện thông báo File Saved trên giao diện
làm việc của phần mềm.

• Bước 5: Sau khi hoàn tất quá trình nạp (hoặc đọc chương trình) từ máy tính sang vi điều khiển (hoặc từ
vi điều khiển sang máy tính), bạn tắt các công tắc nguồn trên mô hình để ngưng cấp nguồn cho khối lập
trình vi điều khiển và tháo chip ra khỏi bộ nạp.

Tiến hành theo đúng trình tự đã hướng dẫn bên trên bạn sẽ hoàn tất một cách rất dễ dàng việc nạp chương trình
(hoặc đọc chương trình) cho chip vi điều khiển. Bạn cần phải chú ý đến các điểm rất quan trọng là:
• Luôn luôn phải tắt nguồn cung cấp cho thiết bị nạp trước khi tiến hành tháo/gắn chip vi điều khiển
vào socket nhằm tránh gây hỏng chip vi điều khiển này.
• Số lượng byte bộ nhớ đã sử dụng mà phần mềm thông báo sau khi đã nạp chip xong có thể không
bằng (nhưng phải là nhỏ hơn) với số lượng byte của tập tin chương trình ngoài thực tế (là số byte
mà bạn thấy trong quá trình phần mềm nạp chương trình cho vi điều khiển).

Giáo trình thực hành vi xử lý. 54 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
MỘT SỐ ĐIỂM CẦN CHÚ Ý
KHI KẾT NỐI MẠCH VÀ VIẾT CHƯƠNG TRÌNH
A. Khi kết nối mạch:

• Tên của từng port xuất nhập trên mô hình.


• Thứ tự các bit (từ LSB đến MSB) tại các port xuất nhập trên mô hình.
• Khi kết nối phải đảm bảo sao cho bit 0 của port vi điều khiển đúng vị trí bit 0 của đối tượng
cần điều khiển.
• Khi kết nối đúng vị trí bit 0 thì các bit còn lại sẽ đúng vị trí.
• Tất cả các chương trình mẫu trong hệ thống này đều được kiểm tra rất kỹ theo đúng như kết
nối mạch được trình bày.
• Nếu một yêu cầu nào đó không đúng thì hãy xem lại phần kết nối và chương trình.

B. Khi viết chương trình:

• Số 0 thường được đánh nhầm là chữ O.


• Thường đánh thiếu tiền tố # và hậu tố H đi kèm trong một số trường hợp.
• Sau lệnh END thì không còn một hàng hay một ký tự nào (kể cả ký tự trắng) nếu không
chương trình biên dịch sẽ báo lỗi. Lỗi này có thể bỏ qua.
• Hãy dùng phím TAB để viết chương trình cho thẳng hàng. Điều này rất có ích cho bạn khi
cần xem lại và kiểm tra lỗi chương trình được nhanh chóng.
• Nếu nhập một chương trình nào đó trong tài liệu mà chương trình chạy không đúng như yêu
cầu thì hãy xem kỹ lại có đánh đầy đủ tất cả các lệnh trong chương trình hay chưa? Có thiếu
sót gì không? Kết nối mạch có theo như hướng dẫn hay không? Tất cả các chương trình
trong tài liệu hướng dẫn đã được chạy thử và luôn luôn đúng.

ĐỌC KỸ HƯỚNG DẪN SỬ DỤNG TRƯỚC KHI THỰC HÀNH

Giáo trình thực hành vi xử lý. 47 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN

A. 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.
• Điều khiển việc hiển thị bằng cách sử dụng LED đơn.
• Viết các chương trình con tạo thời gian trễ sử dụng trong các ứng dụng điều khiển.

B. 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 LED đơn ở các chế độ khác nhau.
• Nắm được sơ đồ và nguyên lý hoạt động của khối LED đơn trên mô hình thí nghiệm.
• Nắm được nguyên lý điều khiển LED đơn ở các chế độ khác nhau.
• Biết cách tính toán các thông số delay của Timer trong vi điều khiển.
• Biết cách viết các chương trình tạo thời gian trễ với các khoảng thời gian bất kỳ.

Giáo trình thực hành vi xử lý. 49 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 1: Chương trình điều khiển 8 LED được nối với Port0 sáng tắt (có sử dụng bộ đệm đảo).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J12 (BAR LED 2) ở khối dãy LED với J63 (PORT0 / DATA) ở khối vi điều khiển.
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY500MS
MOV P0,#0FFH ;LED SANG
LCALL DELAY500MS
SJMP CHOPTAT ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.

Giáo trình thực hành vi xử lý. 50 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 1: Chương trình điều khiển 8 LED được nối với Port0 sáng tắt (có sử dụng bộ đệm đảo).
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng tắt.
• Bài 2: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port0 và Port1) sáng tắt.
• Bài 3: Hãy viết chương trình điều khiển 8 LED được nối với Port0 sáng, 8 LED được nối với Port1 tắt rồi
sau đó 8 LED được nối với Port0 tắt, 8 LED được nối với Port1 sáng.
• Bài 4: Nếu muốn thay đổi tốc độ sáng tắt nhanh hay chậm thì bạn phải làm gì? Thử thực hiện xem ?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 51 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 2: Chương trình điều khiển đếm lên nhị phân 8 bit và hiển thị trên 8 LED được nối với Port0 (có sử dụng
bộ đệm đảo).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED DEM LEN NHI PHAN
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MOV P0,#00H ;LED TAT
LCALL DELAY500MS
LAP:
INC P0 ;TANG NHI PHAN
LCALL DELAY500MS
SJMP LAP ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển đếm lên nhị phân 8 bit và hiển thị trên 8 LED được nối với Port3.
• Bài 2: Hãy viết chương trình điều khiển đếm lên nhị phân 16 LED được nối với hai Port (Port0 và Port1).
• Bài 3: Hãy viết chương trình điều khiển tương tự như hai bài tập 1 và 2 nhưng là đếm xuống.
• Bài 4: Nếu muốn thay đổi tốc độ đếm nhanh hay chậm thì bạn phải làm gì? Thử thực hiện xem ?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 52 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 3: Chương trình điều khiển 8 LED được nối với Port0 sáng dần và tắt hết (có sử dụng bộ đệm đảo).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DAN VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV P0,#00000000B ;HIEN THI 0 LED
LCALL DELAY500MS
MOV P0,#00000001B ;HIEN THI 1 LED
LCALL DELAY500MS
MOV P0,#00000011B ;HIEN THI 2 LED
LCALL DELAY500MS
MOV P0,#00000111B ;HIEN THI 3 LED
LCALL DELAY500MS
MOV P0,#00001111B ;HIEN THI 4 LED
LCALL DELAY500MS
MOV P0,#00011111B ;HIEN THI 5 LED
LCALL DELAY500MS
MOV P0,#00111111B ;HIEN THI 6 LED
LCALL DELAY500MS
MOV P0,#01111111B ;HIEN THI 7 LED
LCALL DELAY500MS
MOV P0,#11111111B ;HIEN THI 8 LED
LCALL DELAY500MS
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DAN VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV R0,#00H ;BIEN DEM SO TRANG THAI HIEN THI
MOV DPTR,#DATADISP ;NAP DIA CHI VUNG DU LIEU
LOOP:
MOV A,R0
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG NHO
MOV P0,A ;HIEN THI
LCALL DELAY500MS
INC R0 ;LAY DU LIEU KE TIEP
CJNE R0,#9,LOOP ;KIEM TRA SO DU TRANG THAI HIEN THI
SJMP MAIN ;QUAY LAI
;****************************************************

Giáo trình thực hành vi xử lý. 53 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 3: Chương trình điều khiển 8 LED được nối với Port0 sáng dần và tắt hết (có sử dụng bộ đệm đảo).
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DATADISP: ;VUNG DU LIEU HIEN THI
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DAN VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
LAP:
SETB C ;C=1
MOV P0,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC LAP ;CHUA SANG HET THI LAM TIEP
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng dần và tắt hết.
• Bài 2: Hãy viết chương trình điều khiển 8 LED được nối với Port2 sáng hết và tắt dần.
• Bài 3: Hãy viết chương trình điều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4: Hãy viết chương trình điều khiển 8 LED được nối với Port1 sáng dần và tắt dần.
• Bài 5: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port2 và Port3) sáng dần và tắt dần.
• Bài 6: Hãy viết chương trình điều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 54 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 4: Chương trình điều khiển 8 LED được nối với Port0 sáng đuổi (có sử dụng bộ đệm đảo).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DUOI
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV R0,#00H ;BIEN DEM SO TRANG THAI HIEN THI
MOV DPTR,#DATADISP ;NAP DIA CHI VUNG DU LIEU
LOOP:
MOV A,R0
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG NHO
MOV P0,A ;HIEN THI
LCALL DELAY500MS
INC R0 ;LAY DU LIEU KE TIEP
CJNE R0,#8,LOOP ;KIEM TRA SO DU TRANG THAI HIEN THI
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DATADISP: ;VUNG DU LIEU HIEN THI
DB 01H,02H,04H,08H,10H,20H,40H,80H
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DUOI
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV A,#01H ;KHOI DONG GIA TRI BAN DAU
LAP:
MOV P0,A ;HIEN THI
LCALL DELAY500MS
RL A ;DICH BIT 1 SANG TRAI
SJMP LAP ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0

Giáo trình thực hành vi xử lý. 55 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 4: Chương trình điều khiển 8 LED được nối với Port0 sáng đuổi (có sử dụng bộ đệm đảo).
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng đuổi.
• Bài 2: Hãy viết chương trình điều khiển 8 LED được nối với Port1 tắt đuổi.
• Bài 3: Hãy viết chương trình điều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port0 và Port1) sáng đuổi.
• Bài 5: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port2 và Port3) tắt đuổi.
• Bài 6: Hãy viết chương trình điều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 56 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 5: Chương trình điều khiển 8 LED được nối với Port0 sáng dồn (có sử dụng bộ đệm đảo).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DON VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV R0,#00H ;BIEN DEM SO TRANG THAI HIEN THI
MOV DPTR,#DATADISP ;NAP DIA CHI VUNG DU LIEU
LOOP:
MOV A,R0
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG NHO
MOV P0,A ;HIEN THI
LCALL DELAY500MS
INC R0 ;LAY DU LIEU KE TIEP
CJNE R0,#36,LOOP ;KIEM TRA SO DU TRANG THAI HIEN THI
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DATADISP: ;VUNG DU LIEU HIEN THI
DB 01H,02H,04H,08H,10H,20H,40H,80H
DB 81H,82H,84H,88H,90H,0A0H,0C0H
DB 0C1H,0C2H,0C4H,0C8H,0D0H,0E0H
DB 0E1H,0E2H,0E4H,0E8H,0F0H
DB 0F1H,0F2H,0F4H,0F8H
DB 0F9H,0FAH,0FCH
DB 0FDH,0FEH
DB 0FFH
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DON VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN
LAP2:
MOV R2,00H
MOV R3,#01H
LAP1:
MOV A,R3
ORL A,R1
MOV P0,A ;HIEN THI
ACALL DELAY500MS

Giáo trình thực hành vi xử lý. 57 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 5: Chương trình điều khiển 8 LED được nối với Port0 sáng dồn (có sử dụng bộ đệm đảo).
MOV A,R3 ;DON LED
RL A
MOV R3,A
DJNZ R2,LAP1 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP2 ;CHUA HOAN TAT CHU TRINH? QUAY LAI
MOV P0,#00H ;HIEN THI TAT HET
ACALL DELAY500MS
SJMP MAIN ;QUAY LAI TU DAU KHI DA XONG
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng dồn.
• Bài 2: Hãy viết chương trình điều khiển 8 LED được nối với Port2 tắt dồn.
• Bài 3: Hãy viết chương trình điều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port1 và Port3) sáng dồn.
• Bài 5: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port2 và Port0) tắt dồn.
• Bài 6: Hãy viết chương trình điều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 58 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 6: Chương trình điều khiển 8 LED được nối với Port0 hoạt động bằng cách tổng hợp các phương pháp điều
khiển đã thực tập (có sử dụng bộ đệm đảo).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED HOAT DONG TONG HOP
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
ACALL CHOPTAT
ACALL DEMLEN
ACALL SANGDUOI
ACALL SANGDAN
ACALL SANGDON
SJMP MAIN
;****************************************************
CHOPTAT: ;CTC SANG TAT
MOV R7,#5 ;SO LAN THUC HIEN
SOLAN1:
MOV P0,#00H ;LED TAT
LCALL DELAY500MS
MOV P0,#0FFH ;LED SANG
LCALL DELAY500MS
DJNZ R7,SOLAN1 ;GIAM SO LAN THUC HIEN BAI
RET ;QUAY LAI
;****************************************************
DEMLEN: ;CTC DEM LEN NHI PHAN
MOV R7,#2 ;SO LAN THUC HIEN
SOLAN2:
MOV P0,#00H ;LED TAT
LCALL DELAY500MS
LAP1:
INC P0 ;TANG NHI PHAN
LCALL DELAY500MS
MOV A,P0
CJNE A,#00H,LAP1
DJNZ R7,SOLAN2 ;GIAM SO LAN THUC HIEN BAI
RET ;QUAY LAI
;****************************************************
SANGDUOI: ;CTC SANG DUOI
MOV R7,#5 ;SO LAN THUC HIEN
SOLAN3:
MOV A,#01H ;KHOI DONG GIA TRI BAN DAU
CLR C
LAP2:
MOV P0,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI
JNC LAP2 ;QUAY LAI
DJNZ R7,SOLAN3 ;GIAM SO LAN THUC HIEN BAI
RET
;****************************************************
SANGDAN: ;CTC SANG DAN
MOV R7,#5 ;SO LAN THUC HIEN
SOLAN4:
MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
LAP3:
SETB C ;C=1
MOV P0,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC LAP3 ;CHUA SANG HET THI LAM TIEP
DJNZ R7,SOLAN4 ;GIAM SO LAN THUC HIEN BAI
RET ;QUAY LAI

Giáo trình thực hành vi xử lý. 59 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 6: Chương trình điều khiển 8 LED được nối với Port0 hoạt động bằng cách tổng hợp các phương pháp điều
khiển đã thực tập (có sử dụng bộ đệm đảo).
;****************************************************
SANGDON: ;CTC SANG DON
MOV R7,#3 ;SO LAN THUC HIEN
SOLAN5:
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN
LAP4:
MOV R2,00H
MOV R3,#01H
LAP5:
MOV A,R3
ORL A,R1
MOV P0,A ;HIEN THI
ACALL DELAY500MS
MOV A,R3 ;DON LED
RL A
MOV R3,A
DJNZ R2,LAP5 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP4 ;CHUA HOAN TAT CHU TRINH? QUAY LAI
MOV P0,#00H ;HIEN THI TAT HET
ACALL DELAY500MS
DJNZ R7,SOLAN5 ;GIAM SO LAN THUC HIEN BAI
RET
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0F6H
MOV TL0,#3CH
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển sao cho phần sáng tắt của chương trình ví dụ trên được thực hiện
10 lần (các phần khác không thay đổi).
• Bài 2: Hãy viết chương trình điều khiển sao cho phần đếm lên nhị phân chương trình ví dụ trên được thực
hiện 10 lần (các phần khác không thay đổi).
• Bài 3: Hãy viết chương trình điều khiển sao cho phần sáng dần và tắt dần của chương trình ví dụ trên được
thực hiện 10 lần (các phần khác không thay đổi).
• Bài 4: Hãy viết chương trình điều khiển sao cho phần sáng đuổi của chương trình ví dụ trên được thực hiện
10 lần (các phần khác không thay đổi).
• Bài 5: Hãy viết chương trình điều khiển sao cho phần sáng dồn của chương trình ví dụ trên được thực hiện
10 lần (các phần khác không thay đổi).
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 60 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 7: Chương trình con điều khiển tạo thời gian trễ 200µs, 20ms, 2s sử dụng Timer.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Ứng dụng chương trình tạo thời gian trễ 200µs:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY200US
MOV P0,#0FFH ;LED SANG
LCALL DELAY200US
SJMP CHOPTAT ;QUAY LAI
;***************************************************
;CHUONG TRINH CON TAO THOI GIAN TRE
;***************************************************
;TIME DELAY: 200US
;***************************************************
;TUONG DOI: TIME = [R0]*[R1]*T
;CHINH XAC: TIME = 2T+2T+1T+(1T+2T*[R1]+2T)*[R0]+2T+2T+2T
;VOI T LA CHU KY MAY
;***************************************************
DELAY200US:
PUSH 00H
PUSH 01H
MOV R0,#20
DEL:
MOV R1,#10
DJNZ R1,$
DJNZ R0,DEL
POP 01H
POP 00H
RET
END
• Ứng dụng chương trình tạo thời gian trễ 20ms:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY20MS
MOV P0,#0FFH ;LED SANG
LCALL DELAY20MS
SJMP CHOPTAT ;QUAY LAI
;***************************************************
;CHUONG TRINH CON TAO THOI GIAN TRE
;***************************************************
;TIME DELAY: 20MS
;***************************************************
;TUONG DOI: TIME = (10000H-[TH0,TL0]H)*T
;CHINH XAC: TIME = 2T+2T+2T+1T+(10000H-[TH0,TL0]H)*T+1T+1T++2T
;VOI T LA CHU KY MAY
;***************************************************
DELAY20MS:
MOV TMOD,#01H
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
JNB TF0,$

Giáo trình thực hành vi xử lý. 61 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 7: Chương trình con điều khiển tạo thời gian trễ 200µs, 20ms, 2s sử dụng Timer.
CLR TR0
CLR TF0
RET
END
• Ứng dụng chương trình tạo thời gian trễ 2s:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY2S
MOV P0,#0FFH ;LED SANG
LCALL DELAY2S
SJMP CHOPTAT ;QUAY LAI
;***************************************************
;CHUONG TRINH CON TAO THOI GIAN TRE
;***************************************************
;TIME DELAY: 2S
;***************************************************
;TUONG DOI: TIME = (10000H-[TH0,TL0]H)*[R0]*T
;CHINH XAC: TIME = 2T+1T+2T+(2T+2T+1T+(10000H-[TH0,TL0]H)*T+1T+1T+2T)*[R0]+2T+2T
;VOI T LA CHU KY MAY
;***************************************************
DELAY2S:
PUSH 00H
MOV R0,#200
MOV TMOD,#01H
DEL:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình con điều khiển tạo thời gian trễ 250µs sử dụng Timer.
• Bài 2: Hãy viết chương trình con điều khiển tạo thời gian trễ 1ms sử dụng Timer.
• Bài 3: Hãy viết chương trình con điều khiển tạo thời gian trễ 100ms sử dụng Timer.
• Bài 4: Hãy viết chương trình con điều khiển tạo thời gian trễ 1s sử dụng Timer.
• Bài 5: Hãy viết chương trình con điều khiển tạo thời gian trễ 3s sử dụng Timer.
• Bài 6: Hãy viết chương trình con điều khiển tạo thời gian trễ 10s sử dụng Timer.
• Bài 7: Hãy viết chương trình con điều khiển tạo thời gian trễ 1 phút sử dụng Timer.
• Bài 8: Hãy viết chương trình con điều khiển tạo thời gian trễ 1 giờ sử dụng Timer.
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 62 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.

A. 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.
• Điều khiển việc hiển thị bằng cách sử dụng LED 7 đoạn theo nhiều phương pháp khác nhau.
• Điều khiển việc hiển thị các thông tin và số liệu bằng cách sử dụng các bộ hiển thị dùng LED 7 đoạn.

B. 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 LED 7 đoạn ở chế độ:
o Không đa hợp và ngõ vào dữ liệu kiểu BCD.
o Không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn.
o Đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải đa hợp bên ngoài).
o Đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch giải đa hợp bên ngoài).
o Đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa hợp bên ngoài).
o Đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa hợp bên ngoài).
• Nắm được sơ đồ và nguyên lý hoạt động của khối LED 7 đoạn trên mô hình thí nghiệm.
• Nắm được sơ đồ và nguyên lý điều khiển LED 7 đoạn theo phương pháp:
o Không đa hợp và ngõ vào dữ liệu kiểu BCD.
o Không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn.
o Đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải đa hợp bên ngoài).
o Đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch giải đa hợp bên ngoài).
o Đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa hợp bên ngoài).
o Đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa hợp bên ngoài).
• Biết cách viết các chương trình điều khiển để hiển thị các thông tin và số liệu trên các bộ hiển thị dùng
LED 7 đoạn.

Giáo trình thực hành vi xử lý. 64 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 1: Chương trình điều khiển hiển thị số 7 trên LED3 (LED3 được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối công tắc và gạt tất cả
các công tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 7 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MOV P0,#07H ;XUAT HIEN THI
SJMP $
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 65 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:
MOV P0,#00H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#01H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#02H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#03H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#04H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#05H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#06H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#07H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#08H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#09H ;XUAT HIEN THI
LCALL DELAY500MS
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:
MOV A,#00H ;GIA TRI BAT DAU
LOOP:
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC A ;TANG GIA TRI
CJNE A,#10,LOOP

Giáo trình thực hành vi xử lý. 66 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 3 trên LED1.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED2.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED2.
• Bài 4: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 67 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED (LED2 và LED3 được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối công tắc và gạt tất cả
các công tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J17 (7SEG OUT 2) ở khối giải mã với J7 (7SEG5 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.

8
3
3

DEC.

DEC. OUT DEC.


BCD IN POWER

3-8

PORT 0
OUT 3
OUT 1
7 SEG

7 SEG
BCD IN

DEC.

PORT 1
2-4
3-4

2-4
1-2

OUT 2

OUT 4
7 SEG

7 SEG

40 PINS
DEC.
OUT
DEC.
OUT

PORT 3

PORT 1
20 PINS
PORT 2

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển. PORT 3
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 35 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
$MOD51
ORG 00H
MOV P0,#35H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 68 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED2 và LED3 được nối với
Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 3.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:
MOV A,#00H ;GIA TRI BAT DAU
LOOP:
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
ADD A,#1 ;TANG GIA TRI
DA A
CJNE A,#00,LOOP
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 53 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 23 xuống 00 trên hai LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 69 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED0 và LED1 được nối với Port1, LED2 và
LED3 được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối công tắc và gạt tất cả
các công tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J17 (7SEG OUT 2) ở khối giải mã với J7 (7SEG5 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J19 (7SEG OUT 3) ở khối giải mã với J6 (7SEG6 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J21 (7SEG OUT 4) ở khối giải mã với J5 (7SEG7 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J20 (BCD IN 3-4) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn. 8
3
3

DEC.

DEC. OUT DEC.


BCD IN POWER

3-8

PORT 0
OUT 3
OUT 1
7 SEG

7 SEG
BCD IN

DEC.

PORT 1
2-4
3-4

2-4
1-2

OUT 2

OUT 4
7 SEG

7 SEG

40 PINS
DEC.
OUT
DEC.
OUT

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MOV P0,#34H ;XUAT HIEN THI
MOV P1,#12H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)

Giáo trình thực hành vi xử lý. 70 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED (LED0 và LED1 được nối
với Port1, LED2 và LED3 được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 5.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:
MOV R0,#00H ;GIA TRI BAT DAU
MOV R1,#00H
LOOP:
MOV P0,R0 ;XUAT HIEN THI
MOV P1,R1
LCALL DELAY500MS
MOV A,R0
ADD A,#1 ;TANG GIA TRI (CHUC - DON VI)
DA A
MOV R0,A
CJNE A,#00,LOOP ;KIEM TRA GIA TRI > 99
MOV A,R1
ADD A,#1 ;TANG GIA TRI (TRAM - NGAN)
DA A
MOV R1,A
CJNE A,#00,LOOP ;KIEM TRA GIA TRI > 99
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 71 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 1: Chương trình điều khiển hiển thị số 7 trên LED3 (LED3 được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối công tắc và gạt tất cả
các công tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.

8
3

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 7 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MOV P0,#0F8H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 72 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:
MOV P0,#0C0H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#0F9H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#0A4H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#0B0H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#99H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#92H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#82H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#0F8H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#80H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#90H ;XUAT HIEN THI
LCALL DELAY500MS
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
DISP:
MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI

Giáo trình thực hành vi xử lý. 73 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).
LCALL DELAY500MS
INC R0
CJNE R0,#10,DISP ;KIEM TRA VI TRI DU LIEU > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 3 trên LED2.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED3.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED3.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0 lên F trên LED0.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ F xuống 0 trên LED0.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 74 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED (LED3 được nối với Port0, LED2 được nối với
Port1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối công tắc và gạt tất cả
các công tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J7 (7SEG5 IN) ở khối LED 7 đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.

8
3

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 35 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:
MOV P0,#92H ;XUAT HIEN THI
MOV P1,#0B0H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 75 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED3 được nối với Port0,
LED2 được nối với Port1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 3.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
MOV R1,#00H
DISP:
MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI (DON VI)
MOV A,R1 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P1,A ;XUAT HIEN THI (CHUC)
LCALL DELAY500MS
INC R0 ;TANG DON VI
CJNE R0,#10,DISP ;KIEM TRA DON VI > 9 (DEM XONG)
MOV R0,#00H ;XOA DON VI (DON VI = 0)
INC R1 ;TANG CHUC
CJNE R1,#10,DISP ;KIEM TRA CHUC > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 53 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 23 xuống 00 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên FF trên hai LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ AB xuống 00 trên hai LED.
• Bài 7: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 76 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED3 được nối với Port0, LED2 được nối với
Port1, LED1 được nối với Port2 và LED0 được nối với Port3).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối công tắc và gạt tất cả
các công tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J5 (7SEG7 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J6 (7SEG6 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J65 (PORT2 / A8..A15) ở khối vi điều khiển với J7 (7SEG5 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J66 (PORT3 / FUNCTION) ở khối vi điều khiển với J8 (7SEG4 IN) ở khối LED 7
đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.

8
3

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0, PORT1, PORT2, PORT3.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:
MOV P0,#99H ;XUAT HIEN THI
MOV P1,#0B0H ;XUAT HIEN THI
MOV P2,#0A4H ;XUAT HIEN THI
MOV P3,#0F9H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)

Giáo trình thực hành vi xử lý. 77 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED3 được nối với Port0,
LED2 được nối với Port1, LED1 được nối với Port2 và LED0 được nối với Port3).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 5.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0, PORT1, PORT2, PORT3.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
MOV R1,#00H
MOV R2,#00H
MOV R3,#00H
DISP:
MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI (DON VI)
MOV A,R1 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P1,A ;XUAT HIEN THI (CHUC)
MOV A,R2 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P2,A ;XUAT HIEN THI (TRAM)
MOV A,R3 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P3,A ;XUAT HIEN THI (NGAN)
LCALL DELAY500MS
INC R0 ;TANG DON VI
CJNE R0,#10,DISP ;KIEM TRA DON VI > 9 (DEM XONG)
MOV R0,#00H ;XOA DON VI (DON VI = 0)
INC R1 ;TANG CHUC
CJNE R1,#10,DISP ;KIEM TRA CHUC > 9 (DEM XONG)
MOV R1,#00H ;XOA CHUC (CHUC = 0)
INC R2 ;TANG TRAM
CJNE R2,#10,DISP ;KIEM TRA TRAM > 9 (DEM XONG)
MOV R2,#00H ;XOA TRAM (TRAM = 0)
INC R3 ;TANG NGAN
CJNE R3,#10,DISP ;KIEM TRA NGAN > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:

Giáo trình thực hành vi xử lý. 78 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED3 được nối với Port0,
LED2 được nối với Port1, LED1 được nối với Port2 và LED0 được nối với Port3).
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên FFFF trên bốn LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFF xuống 0000 trên bốn LED.
• Bài 8: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên ABCD trên bốn LED.
• Bài 9: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ ABCD xuống 0000 trên bốn LED.
• Bài 10: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 11: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 79 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0, tín hiệu SEL7 được nối với
P1.0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta
chỉ nối 4 bit thấp của J64 và J1 với nhau).
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.

4
3

PORT 0
PORT 1
3

40 PINS
DEC.

DEC. OUT DEC.


BCD IN POWER

3-8

PORT 3

PORT 1
20 PINS
OUT 3
OUT 1
7 SEG

7 SEG
BCD IN

DEC.

2-4
3-4

2-4
1-2

PORT 2

PORT 3
OUT 2

OUT 4
7 SEG

7 SEG

DEC.
OUT
DEC.
OUT

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#01H ;XUAT SO HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 80 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#00H ;SO 0
LCALL DELAY500MS
MOV P0,#01H ;SO 1
LCALL DELAY500MS
MOV P0,#02H ;SO 2
LCALL DELAY500MS
MOV P0,#03H ;SO 3
LCALL DELAY500MS
MOV P0,#04H ;SO 4
LCALL DELAY500MS
MOV P0,#05H ;SO 5
LCALL DELAY500MS
MOV P0,#06H ;SO 6
LCALL DELAY500MS
MOV P0,#07H ;SO 7
LCALL DELAY500MS
MOV P0,#08H ;SO 8
LCALL DELAY500MS
MOV P0,#09H ;SO 9
LCALL DELAY500MS
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG

Giáo trình thực hành vi xử lý. 81 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).
MOV A,#00H ;GIA TRI BAT DAU
LOOP:
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC A ;TANG GIA TRI
CJNE A,#10,LOOP
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 82 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#02H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
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
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#100H ;NAP DIA CHI VUNG DU LIEU
DISP:
MOV R0,#02H ;SO LAN QUET (SO LED)
MOV R1,#00H ;NAP DIA CHI (OFFSET) CUA DU LIEU
MOV R2,#10H ;NAP DIA CHI (OFFSET) CUA MA QUET
DISP1:
MOV A,R1 ;LAY DU LIEU
MOVC A,@A+DPTR
MOV P0,A ;XUAT DU LIEU HIEN THI
MOV A,R2 ;LAY MA QUET
MOVC A,@A+DPTR
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOVÁ,#0FFH ;CHONG LEM
INC R1 ;DIA CHI (OFFSET) CUA DU LIEU KE TIEP
INC R2 ;DIA CHI (OFFSET) CUA MA QUET KE TIEP
DJNZ R0,DISP1
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS

Giáo trình thực hành vi xử lý. 83 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 02H,01H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 0FEH,0FDH
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 61H,#01H ;HANG CHUC
MOV 60H,#02H ;HANG DON VI
LCALL DISP7SEGMUL2 ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0FDH ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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

Giáo trình thực hành vi xử lý. 84 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 85 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 61H,#00H ;HANG CHUC
MOV 60H,#00H ;HANG DON VI
MP1:
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
INC 60H ;TANG HANG DON VI
MOV A,60H
CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > 9
MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0)
INC 61H ;TANG HANG CHUC
MOV A,61H
CJNE A,#10,MP1 ;KIEM TRA HANG CHUC > 9
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0FDH ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN

Giáo trình thực hành vi xử lý. 86 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 23 xuống 00 trên hai LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 87 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#04H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#03H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#02H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)

Giáo trình thực hành vi xử lý. 88 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 63H,#00H ;HANG NGAN
MOV 62H,#00H ;HANG TRAM
MOV 61H,#00H ;HANG CHUC
MOV 60H,#00H ;HANG DON VI
MP1:
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
INC 60H ;TANG HANG DON VI
MOV A,60H
CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > 9
MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0)
INC 61H ;TANG HANG CHUC
MOV A,61H
CJNE A,#10,MP1 ;KIEM TRA HANG CHUC > 9
MOV 61H,#00H ;XOA HANG CHUC (CHUC = 0)
INC 62H ;TANG HANG TRAM
MOV A,62H
CJNE A,#10,MP1 ;KIEM TRA HANG TRAM > 9
MOV 62H,#00H ;XOA HANG TRAM (TRAM = 0)
INC 63H ;TANG HANG NGAN
MOV A,63H
CJNE A,#10,MP1 ;KIEM TRA HANG NGAN > 9
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL4.
;INPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL4:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET

Giáo trình thực hành vi xử lý. 89 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 90 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.
8
3

PORT 0
PORT 1

40 PINS
3

PORT 3

PORT 1
DEC.

DEC. OUT DEC.

20 PINS
BCD IN POWER

3-8
OUT 3
OUT 1
7 SEG

7 SEG

PORT 2

PORT 3
BCD IN

DEC.

2-4
3-4

2-4
1-2

OUT 2

OUT 4
7 SEG

7 SEG

DEC.
OUT
DEC.
OUT

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#08H ;HIEN THI SO 8
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#07H ;HIEN THI SO 7
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#06H ;HIEN THI SO 6
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#05H ;HIEN THI SO 5
LCALL DELAYLED
MOV P1,#0EFH ;CHO PHEP LED 3 SANG
MOV P0,#04H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0DFH ;CHO PHEP LED 2 SANG
MOV P0,#03H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0BFH ;CHO PHEP LED 1 SANG
MOV P0,#02H ;HIEN THI SO 2

Giáo trình thực hành vi xử lý. 91 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
LCALL DELAYLED
MOV P1,#07FH ;CHO PHEP LED 0 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)

Giáo trình thực hành vi xử lý. 92 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 7.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00000000 -> 99999999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 67H,#00H ;HANG CH TRIEU
MOV 66H,#00H ;HANG TRIEU
MOV 65H,#00H ;HANG TR NGAN
MOV 64H,#00H ;HANG CH NGAN
MOV 63H,#00H ;HANG NGAN
MOV 62H,#00H ;HANG TRAM
MOV 61H,#00H ;HANG CHUC
MOV 60H,#00H ;HANG DON VI
MP1:
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
INC 60H ;TANG HANG DON VI
MOV A,60H
CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > 9
MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0)
INC 61H ;TANG HANG CHUC
MOV A,61H
CJNE A,#10,MP1 ;KIEM TRA HANG CHUC > 9
MOV 61H,#00H ;XOA HANG CHUC (CHUC = 0)
INC 62H ;TANG HANG TRAM
MOV A,62H
CJNE A,#10,MP1 ;KIEM TRA HANG TRAM > 9
MOV 62H,#00H ;XOA HANG TRAM (TRAM = 0)
INC 63H ;TANG HANG NGAN
MOV A,63H
CJNE A,#10,MP1 ;KIEM TRA HANG NGAN > 9
MOV 63H,#00H ;XOA HANG NGAN (NGAN = 0)
INC 64H ;TANG HANG CH NGAN
MOV A,64H
CJNE A,#10,MP1 ;KIEM TRA HANG CH NGAN > 9
MOV 64H,#00H ;XOA HANG CH NGAN (CH NGAN = 0)
INC 65H ;TANG HANG TR NGAN
MOV A,65H
CJNE A,#10,MP1 ;KIEM TRA HANG TR NGAN > 9
MOV 65H,#00H ;XOA HANG TR NGAN (TR NGAN = 0)
INC 66H ;TANG HANG TRIEU
MOV A,66H
CJNE A,#10,MP1 ;KIEM TRA HANG TRIEU > 9
MOV 66H,#00H ;XOA HANG TRIEU (TRIEU = 0)
INC 67H ;TANG HANG CH TRIEU
MOV A,67H
CJNE A,#10,MP1 ;KIEM TRA HANG CH TRIEU > 9
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).

Giáo trình thực hành vi xử lý. 93 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#7FH ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 5: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 94 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0, tín hiệu SEL7 được nối với
P1.0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta
chỉ nối 4 bit thấp của J64 và J1 với nhau).
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.

4
3

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#0F9H ;XUAT SO HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 95 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#0C0H ;SO 0
LCALL DELAY500MS
MOV P0,#0F9H ;SO 1
LCALL DELAY500MS
MOV P0,#0A4H ;SO 2
LCALL DELAY500MS
MOV P0,#0B0H ;SO 3
LCALL DELAY500MS
MOV P0,#99H ;SO 4
LCALL DELAY500MS
MOV P0,#92H ;SO 5
LCALL DELAY500MS
MOV P0,#82H ;SO 6
LCALL DELAY500MS
MOV P0,#0F8H ;SO 7
LCALL DELAY500MS
MOV P0,#80H ;SO 8
LCALL DELAY500MS
MOV P0,#90H ;SO 9
LCALL DELAY500MS
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI

Giáo trình thực hành vi xử lý. 96 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
DISP:
MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC R0
CJNE R0,#10,DISP ;KIEM TRA VI TRI DU LIEU > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0 lên F trên LED4.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ F xuống 0 trên LED4.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 97 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
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
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#100H ;NAP DIA CHI VUNG DU LIEU
DISP:
MOV R0,#02H ;SO LAN QUET (SO LED)
MOV R1,#00H ;NAP DIA CHI (OFFSET) CUA DU LIEU
MOV R2,#10H ;NAP DIA CHI (OFFSET) CUA MA QUET
DISP1:
MOV A,R1 ;LAY DU LIEU
MOVC A,@A+DPTR
MOV P0,A ;XUAT DU LIEU HIEN THI
MOV A,R2 ;LAY MA QUET
MOVC A,@A+DPTR
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P2,#0FFH ;CHONG LEM
INC R1 ;DIA CHI (OFFSET) CUA DU LIEU KE TIEP
INC R2 ;DIA CHI (OFFSET) CUA MA QUET KE TIEP
DJNZ R0,DISP1
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS

Giáo trình thực hành vi xử lý. 98 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0A4H,0F9H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 0FEH,0FDH
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#12H ;SO HIEN THI
LCALL BCD2TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DISP7SEGMUL2 ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0FDH ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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

Giáo trình thực hành vi xử lý. 99 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
POP 01H
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 100 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;SO HIEN THI BAN DAU
MP1:
LCALL BCD2TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R7 ;TANG GIA TRI
ADD A,#1
DA A
MOV R7,A
CJNE A,#00,MP1 ;KIEM TRA GIA TRI HIEN THI > 99
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0FDH ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H

Giáo trình thực hành vi xử lý. 101 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên FF trên hai LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FF xuống 00 trên hai LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên AB trên hai LED.
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 102 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)

Giáo trình thực hành vi xử lý. 103 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;SO HIEN THI BAN DAU
MOV R6,#00H
MP1:
LCALL BCD4TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R6 ;TANG GIA TRI (CHUC - DON VI)
ADD A,#1
DA A
MOV R6,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CHUC - DON VI)
MOV A,R7 ;TANG GIA TRI (NGAN - TRAM)
ADD A,#1
DA A
MOV R7,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (NGAN - TRAM)
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL4.
;INPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL4:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250

Giáo trình thực hành vi xử lý. 104 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD4TO7SEG.
;INPUT: R7 = SO BCD NEN (NGAN - TRAM).
; R6 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD4TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL

Giáo trình thực hành vi xử lý. 105 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED (LED4, LED5, LED6 và LED7
được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3).
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 9999 xuống 0000 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên FFFF trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFF xuống 0000 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên ABCD trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 106 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
8
3

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#80H ;HIEN THI SO 8
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#0F8H ;HIEN THI SO 7
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#82H ;HIEN THI SO 6
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#92H ;HIEN THI SO 5
LCALL DELAYLED
MOV P1,#0EFH ;CHO PHEP LED 3 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0DFH ;CHO PHEP LED 2 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0BFH ;CHO PHEP LED 1 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07FH ;CHO PHEP LED 0 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************

Giáo trình thực hành vi xử lý. 107 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)

Giáo trình thực hành vi xử lý. 108 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 7.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00000000 -> 99999999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;SO HIEN THI BAN DAU
MOV R6,#00H
MOV R5,#00H ;SO HIEN THI BAN DAU
MOV R4,#00H
MP1:
LCALL BCD8TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R4 ;TANG GIA TRI (CHUC - DON VI)
ADD A,#1
DA A
MOV R4,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CHUC - DON VI)
MOV A,R5 ;TANG GIA TRI (NGAN - TRAM)
ADD A,#1
DA A
MOV R5,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (NGAN - TRAM)
MOV A,R6 ;TANG GIA TRI (TR NGAN - CH NGAN)
ADD A,#1
DA A
MOV R6,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (TR NGAN - CH NGAN)
MOV A,R7 ;TANG GIA TRI (CH TRIEU - TRIEU)
ADD A,#1
DA A
MOV R7,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CH TRIEU - TRIEU)
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#7FH ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED

Giáo trình thực hành vi xử lý. 109 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
MOV P1,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (4 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD8TO7SEG.
;INPUT: R7 = SO BCD NEN (CH TRIEU - TRIEU).
; R6 = SO BCD NEN (TR NGAN - CH NGAN).
; R5 = SO BCD NEN (NGAN - TRAM).
; R4 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD8TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R4 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R4 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP

Giáo trình thực hành vi xử lý. 110 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R5 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOV A,R5 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 64H,A ;CAT BCD HANG CHUC NGAN VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 65H,A ;CAT BCD HANG TRAM NGAN VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 66H,A ;CAT BCD HANG TRIEU VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 67H,A ;CAT BCD HANG CHUC TRIEU VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên FFFFFFFF trên tám LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên 89ABCDEF trên tám LED.
• Bài 7: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 111 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0, tín hiệu SEL-ABC được nối
với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng dây bus 2 nối J64 (PORT1) ở khối vi điều khiển với J23 (DEC. 2-4) ở khối giải ma (chú ý là ta chỉ
nối 2 bit thấp của J64 và J23)õ.
• Dùng dây bus 4 nối J29 (DEC. OUT) ở khối giải mã với J1 (SEL IN1) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.
3

PORT 0
PORT 1
3

40 PINS
DEC.

DEC. OUT DEC.


BCD IN POWER

3-8

PORT 3

PORT 1
20 PINS
OUT 3
OUT 1
7 SEG

7 SEG
BCD IN

DEC.
3-4

2-4
2-4
1-2

PORT 2

PORT 3
OUT 2

OUT 4
7 SEG

7 SEG

DEC.
OUT
DEC.
OUT

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#01H ;XUAT SO HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 112 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#00H ;SO 0
LCALL DELAY500MS
MOV P0,#01H ;SO 1
LCALL DELAY500MS
MOV P0,#02H ;SO 2
LCALL DELAY500MS
MOV P0,#03H ;SO 3
LCALL DELAY500MS
MOV P0,#04H ;SO 4
LCALL DELAY500MS
MOV P0,#05H ;SO 5
LCALL DELAY500MS
MOV P0,#06H ;SO 6
LCALL DELAY500MS
MOV P0,#07H ;SO 7
LCALL DELAY500MS
MOV P0,#08H ;SO 8
LCALL DELAY500MS
MOV P0,#09H ;SO 9
LCALL DELAY500MS
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG

Giáo trình thực hành vi xử lý. 113 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL-ABC được nối với P1.0 - P1.1).
MOV A,#00H ;GIA TRI BAT DAU
LOOP:
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC A ;TANG GIA TRI
CJNE A,#10,LOOP
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 114 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#02H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#01H ;CHO PHEP LED 6 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#100H ;NAP DIA CHI VUNG DU LIEU
DISP:
MOV R0,#02H ;SO LAN QUET (SO LED)
MOV R1,#00H ;NAP DIA CHI (OFFSET) CUA DU LIEU
MOV R2,#10H ;NAP DIA CHI (OFFSET) CUA MA QUET
DISP1:
MOV A,R1 ;LAY DU LIEU
MOVC A,@A+DPTR
MOV P0,A ;XUAT DU LIEU HIEN THI
MOV A,R2 ;LAY MA QUET
MOVC A,@A+DPTR
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LEM
INC R1 ;DIA CHI (OFFSET) CUA DU LIEU KE TIEP
INC R2 ;DIA CHI (OFFSET) CUA MA QUET KE TIEP
DJNZ R0,DISP1
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS

Giáo trình thực hành vi xử lý. 115 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 02H,01H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 00H,01H
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 61H,#01H ;HANG CHUC
MOV 60H,#02H ;HANG DON VI
LCALL DISP7SEGMUL2EXT ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2EXT.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#01H ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL

Giáo trình thực hành vi xử lý. 116 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 117 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 61H,#00H ;HANG CHUC
MOV 60H,#00H ;HANG DON VI
MP1:
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
INC 60H ;TANG HANG DON VI
MOV A,60H
CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > 9
MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0)
INC 61H ;TANG HANG CHUC
MOV A,61H
CJNE A,#10,MP1 ;KIEM TRA HANG CHUC > 9
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2EXT.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#01H ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN

Giáo trình thực hành vi xử lý. 118 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 23 xuống 00 trên hai LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 119 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#04H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#01H ;CHO PHEP LED 6 SANG
MOV P0,#03H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#02H ;CHO PHEP LED 5 SANG
MOV P0,#02H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#03H ;CHO PHEP LED 4 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)

Giáo trình thực hành vi xử lý. 120 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 63H,#00H ;HANG NGAN
MOV 62H,#00H ;HANG TRAM
MOV 61H,#00H ;HANG CHUC
MOV 60H,#00H ;HANG DON VI
MP1:
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
INC 60H ;TANG HANG DON VI
MOV A,60H
CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > 9
MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0)
INC 61H ;TANG HANG CHUC
MOV A,61H
CJNE A,#10,MP1 ;KIEM TRA HANG CHUC > 9
MOV 61H,#00H ;XOA HANG CHUC (CHUC = 0)
INC 62H ;TANG HANG TRAM
MOV A,62H
CJNE A,#10,MP1 ;KIEM TRA HANG TRAM > 9
MOV 62H,#00H ;XOA HANG TRAM (TRAM = 0)
INC 63H ;TANG HANG NGAN
MOV A,63H
CJNE A,#10,MP1 ;KIEM TRA HANG NGAN > 9
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL4EXT.
;INPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL4EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#03H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************

Giáo trình thực hành vi xử lý. 121 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 122 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng dây bus 3 nối J64 (PORT1) ở khối vi điều khiển với J22 (DEC. 3-8) ở khối giải mã (chú ý là ta chỉ
nối 3 bit thấp của J64 và J22 với nhau).
• Dùng dây bus 8 nối J23 (DEC. OUT) ở khối giải mã với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.

VI ÑIEÀU KHIEÅN
3

PORT 0
POWER SEL IN2 SEL LED IN SEL IN1 8
NGUOÀN
+5V LED 7 ÑOAÏN
7SEG7 IN POWER
7SEG7 IN 7SEG6 IN 7SEG5 IN 7SEG4 IN MUL SW
3

PORT 1
8 8 8 8

40 PINS
3

GIAÛI MAÕ
PORT 3

PORT 1
DEC.

DEC. OUT DEC.

20 PINS
BCD IN POWER

3-8

8
OUT 3
OUT 1
7 SEG

7 SEG

8
PORT 2

PORT 3
BCD IN

DEC.

SELECT CLOCK
2-4
3-4

2-4
1-2

A0..A7 CHIP OUT


OUT 2

OUT 4
7 SEG

7 SEG

DEC.
OUT
DEC.
OUT

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 3 TO 8, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#08H ;HIEN THI SO 8
LCALL DELAYLED
MOV P1,#01H ;CHO PHEP LED 6 SANG
MOV P0,#07H ;HIEN THI SO 7
LCALL DELAYLED
MOV P1,#02H ;CHO PHEP LED 5 SANG
MOV P0,#06H ;HIEN THI SO 6
LCALL DELAYLED
MOV P1,#03H ;CHO PHEP LED 4 SANG
MOV P0,#05H ;HIEN THI SO 5
LCALL DELAYLED
MOV P1,#04H ;CHO PHEP LED 3 SANG
MOV P0,#04H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#05H ;CHO PHEP LED 2 SANG
MOV P0,#03H ;HIEN THI SO 3

Giáo trình thực hành vi xử lý. 123 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).
LCALL DELAYLED
MOV P1,#06H ;CHO PHEP LED 1 SANG
MOV P0,#02H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07H ;CHO PHEP LED 0 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)

Giáo trình thực hành vi xử lý. 124 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 7.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00000000 -> 99999999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 3 TO 8, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 67H,#00H ;HANG CH TRIEU
MOV 66H,#00H ;HANG TRIEU
MOV 65H,#00H ;HANG TR NGAN
MOV 64H,#00H ;HANG CH NGAN
MOV 63H,#00H ;HANG NGAN
MOV 62H,#00H ;HANG TRAM
MOV 61H,#00H ;HANG CHUC
MOV 60H,#00H ;HANG DON VI
MP1:
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
INC 60H ;TANG HANG DON VI
MOV A,60H
CJNE A,#10,MP1 ;KIEM TRA HANG DON VI > 9
MOV 60H,#00H ;XOA HANG DON VI (DON VI = 0)
INC 61H ;TANG HANG CHUC
MOV A,61H
CJNE A,#10,MP1 ;KIEM TRA HANG CHUC > 9
MOV 61H,#00H ;XOA HANG CHUC (CHUC = 0)
INC 62H ;TANG HANG TRAM
MOV A,62H
CJNE A,#10,MP1 ;KIEM TRA HANG TRAM > 9
MOV 62H,#00H ;XOA HANG TRAM (TRAM = 0)
INC 63H ;TANG HANG NGAN
MOV A,63H
CJNE A,#10,MP1 ;KIEM TRA HANG NGAN > 9
MOV 63H,#00H ;XOA HANG NGAN (NGAN = 0)
INC 64H ;TANG HANG CH NGAN
MOV A,64H
CJNE A,#10,MP1 ;KIEM TRA HANG CH NGAN > 9
MOV 64H,#00H ;XOA HANG CH NGAN (CH NGAN = 0)
INC 65H ;TANG HANG TR NGAN
MOV A,65H
CJNE A,#10,MP1 ;KIEM TRA HANG TR NGAN > 9
MOV 65H,#00H ;XOA HANG TR NGAN (TR NGAN = 0)
INC 66H ;TANG HANG TRIEU
MOV A,66H
CJNE A,#10,MP1 ;KIEM TRA HANG TRIEU > 9
MOV 66H,#00H ;XOA HANG TRIEU (TRIEU = 0)
INC 67H ;TANG HANG CH TRIEU
MOV A,67H
CJNE A,#10,MP1 ;KIEM TRA HANG CH TRIEU > 9
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8EXT.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).

Giáo trình thực hành vi xử lý. 125 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#07H ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 5: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 126 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0; tín hiệu SEL-ABC được nối
với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 2 nối J64 (PORT1) ở khối vi điều khiển với J23 (DEC. 2-4) ở khối giải ma (chú ý là ta chỉ
nối 2 bit thấp của J64 và J23)õ.
• Dùng dây bus 4 nối J29 (DEC. OUT) ở khối giải mã với J1 (SEL IN1) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG7 IN MUL) ở khối LED 7
đoạn.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.
3

PORT 0
PORT 1
3

40 PINS
DEC.

DEC. OUT DEC.


BCD IN POWER

3-8

PORT 3

PORT 1
20 PINS
OUT 3
OUT 1
7 SEG

7 SEG
BCD IN

DEC.
3-4

2-4
2-4
1-2

PORT 2

PORT 3
OUT 2

OUT 4
7 SEG

7 SEG

DEC.
OUT
DEC.
OUT

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#0F9H ;XUAT SO HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 127 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0; tín hiệu
SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#0C0H ;SO 0
LCALL DELAY500MS
MOV P0,#0F9H ;SO 1
LCALL DELAY500MS
MOV P0,#0A4H ;SO 2
LCALL DELAY500MS
MOV P0,#0B0H ;SO 3
LCALL DELAY500MS
MOV P0,#99H ;SO 4
LCALL DELAY500MS
MOV P0,#92H ;SO 5
LCALL DELAY500MS
MOV P0,#82H ;SO 6
LCALL DELAY500MS
MOV P0,#0F8H ;SO 7
LCALL DELAY500MS
MOV P0,#80H ;SO 8
LCALL DELAY500MS
MOV P0,#90H ;SO 9
LCALL DELAY500MS
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI

Giáo trình thực hành vi xử lý. 128 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0; tín hiệu
SEL-ABC được nối với P1.0 - P1.1).
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
MOV P1,#00H ;CHO PHEP LED 7 SANG
DISP:
MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC R0
CJNE R0,#10,DISP ;KIEM TRA VI TRI DU LIEU > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0 lên F trên LED4.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ F xuống 0 trên LED4.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 129 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#01H ;CHO PHEP LED 6 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#100H ;NAP DIA CHI VUNG DU LIEU
DISP:
MOV R0,#02H ;SO LAN QUET (SO LED)
MOV R1,#00H ;NAP DIA CHI (OFFSET) CUA DU LIEU
MOV R2,#10H ;NAP DIA CHI (OFFSET) CUA MA QUET
DISP1:
MOV A,R1 ;LAY DU LIEU
MOVC A,@A+DPTR
MOV P0,A ;XUAT DU LIEU HIEN THI
MOV A,R2 ;LAY MA QUET
MOVC A,@A+DPTR
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P2,#0FFH ;CHONG LEM
INC R1 ;DIA CHI (OFFSET) CUA DU LIEU KE TIEP
INC R2 ;DIA CHI (OFFSET) CUA MA QUET KE TIEP
DJNZ R0,DISP1
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS

Giáo trình thực hành vi xử lý. 130 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0A4H,0F9H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 00H,01H
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#12H ;SO HIEN THI
LCALL BCD2TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DISP7SEGMUL2EXT ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2EXT.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#01H ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL

Giáo trình thực hành vi xử lý. 131 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
POP 01H
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 132 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;SO HIEN THI BAN DAU
MP1:
LCALL BCD2TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R7 ;TANG GIA TRI
ADD A,#1
DA A
MOV R7,A
CJNE A,#00,MP1 ;KIEM TRA GIA TRI HIEN THI > 99
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2EXT.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#01H ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H

Giáo trình thực hành vi xử lý. 133 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên FF trên hai LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FF xuống 00 trên hai LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên CD trên hai LED.
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 134 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được
nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#01H ;CHO PHEP LED 6 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#02H ;CHO PHEP LED 5 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#03H ;CHO PHEP LED 4 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)

Giáo trình thực hành vi xử lý. 135 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;SO HIEN THI BAN DAU
MOV R6,#00H
MP1:
LCALL BCD4TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R6 ;TANG GIA TRI (CHUC - DON VI)
ADD A,#1
DA A
MOV R6,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CHUC - DON VI)
MOV A,R7 ;TANG GIA TRI (NGAN - TRAM)
ADD A,#1
DA A
MOV R7,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (NGAN - TRAM)
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL4EXT.
;INPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL4EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#03H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$

Giáo trình thực hành vi xử lý. 136 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD4TO7SEG.
;INPUT: R7 = SO BCD NEN (NGAN - TRAM).
; R6 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD4TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET

Giáo trình thực hành vi xử lý. 137 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên FFFF trên bốn LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFF xuống 0000 trên bốn LED.
• Bài 8: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên ABCD trên bốn LED.
• Bài 9: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ ABCD xuống 0000 trên bốn LED.
• Bài 10: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 11: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 138 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối LED 7
đoạn.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 3 nối J64 (PORT1) ở khối vi điều khiển với J22 (DEC. 3-8) ở khối giải mã (chú ý là ta chỉ
nối 3 bit thấp của J64 và J22 với nhau).
• Dùng dây bus 8 nối J23 (DEC. OUT) ở khối giải mã với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.
3

PORT 0
PORT 1

40 PINS
3

DEC.

DEC. OUT DEC.


BCD IN POWER

3-8

PORT 3

PORT 1
20 PINS
OUT 3
OUT 1
7 SEG

7 SEG
BCD IN

PORT 2

PORT 3
DEC.

2-4
3-4

2-4
1-2

OUT 2

OUT 4
7 SEG

7 SEG

DEC.
OUT
DEC.
OUT

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;CHO PHEP LED 7 SANG
MOV P0,#80H ;HIEN THI SO 8
LCALL DELAYLED
MOV P1,#01H ;CHO PHEP LED 6 SANG
MOV P0,#0F8H ;HIEN THI SO 7
LCALL DELAYLED
MOV P1,#02H ;CHO PHEP LED 5 SANG
MOV P0,#82H ;HIEN THI SO 6
LCALL DELAYLED
MOV P1,#03H ;CHO PHEP LED 4 SANG
MOV P0,#92H ;HIEN THI SO 5
LCALL DELAYLED
MOV P1,#04H ;CHO PHEP LED 3 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#05H ;CHO PHEP LED 2 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#06H ;CHO PHEP LED 1 SANG

Giáo trình thực hành vi xử lý. 139 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07H ;CHO PHEP LED 0 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
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
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)

Giáo trình thực hành vi xử lý. 140 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 7.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00000000 -> 99999999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 3 TO 8, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;SO HIEN THI BAN DAU
MOV R6,#00H
MOV R5,#00H ;SO HIEN THI BAN DAU
MOV R4,#00H
MP1:
LCALL BCD8TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R4 ;TANG GIA TRI (CHUC - DON VI)
ADD A,#1
DA A
MOV R4,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CHUC - DON VI)
MOV A,R5 ;TANG GIA TRI (NGAN - TRAM)
ADD A,#1
DA A
MOV R5,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (NGAN - TRAM)
MOV A,R6 ;TANG GIA TRI (TR NGAN - CH NGAN)
ADD A,#1
DA A
MOV R6,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (TR NGAN - CH NGAN)
MOV A,R7 ;TANG GIA TRI (CH TRIEU - TRIEU)
ADD A,#1
DA A
MOV R7,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CH TRIEU - TRIEU)
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL8EXT.
;INPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#07H ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED

Giáo trình thực hành vi xử lý. 141 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
MOV P0,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (4 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD6TO7SEG.
;INPUT: R7 = SO BCD NEN (CH TRIEU - TRIEU).
; R6 = SO BCD NEN (TR NGAN - CH NGAN).
; R5 = SO BCD NEN (NGAN - TRAM).
; R4 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD8TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R4 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R4 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG

Giáo trình thực hành vi xử lý. 142 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R5 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R5 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 64H,A ;CAT BCD HANG CHUC NGAN VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 65H,A ;CAT BCD HANG TRAM NGAN VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 66H,A ;CAT BCD HANG TRIEU VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 67H,A ;CAT BCD HANG CHUC TRIEU VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên FFFFFFFF trên tám LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFFFFFF xuống 00000000 trên tám
LED.
• Bài 8: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên 89ABCDEF trên tám LED.
• Bài 10: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 11: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 143 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED (LED6,7: đếm GIÂY;
LED4,5: đếm PHÚT; LED2,3: đếm GIỜ).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng ba dây bus 8 nối J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7 đoạn với J4 (7SEG IN MUL) ở
khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối mở rộng).
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.

8
3

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI GIO - PHUT - GIAY TREN LED 7 DOAN
;***************************************************
;KET NOI: 6 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;GIO
MOV R6,#00H ;PHUT
MOV R5,#00H ;GIAY
MP1:
LCALL BCD6TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R5 ;TANG GIAY
ADD A,#1
DA A
MOV R5,A
CJNE A,#60H,MP1 ;KIEM TRA GIAY > 59
MOV R5,#0 ;XOA GIAY
MOV A,R6 ;TANG PHUT
ADD A,#1
DA A
MOV R6,A
CJNE A,#60H,MP1 ;KIEM TRA PHUT > 59
MOV R6,#0 ;XOA PHUT
MOV A,R7 ;TANG GIO
ADD A,#1
DA A
MOV R7,A
CJNE A,#60H,MP1 ;KIEM TRA GIO > 59
SJMP MAIN
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (3 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)

Giáo trình thực hành vi xử lý. 144 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED (LED6,7: đếm GIÂY;
LED4,5: đếm PHÚT; LED2,3: đếm GIỜ).
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD6TO7SEG.
;INPUT: R7 = SO BCD NEN (TR NGAN - CH NGAN).
; R6 = SO BCD NEN (NGAN - TRAM).
; R5 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD6TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R5 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R5 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 64H,A ;CAT BCD HANG CHUC NGAN VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 65H,A ;CAT BCD HANG TRAM NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (6 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL6.
;INPUT: 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).

Giáo trình thực hành vi xử lý. 145 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED (LED6,7: đếm GIÂY;
LED4,5: đếm PHÚT; LED2,3: đếm GIỜ).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL6:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0DFH ;MA QUET
MOV R0,#65H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL6 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài tập: Hãy viết chương trình điều khiển hiển thị đếm NGÀY – THÁNG – NĂM trên tám LED (LED7,6:
đếm NGÀY; LED5,4: đếm THÁNG; LED3,2,1,0: đếm NĂM). Giả sử các tháng đều có 30 ngày. Tự chọn
lựa phương pháp kết nối các LED 7 đoạn.

Giáo trình thực hành vi xử lý. 146 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 2: Chương trình điều khiển hiển thị chuỗi ký tự “-HA-NOI-“ trên tám LED.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.

8
3

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI CHUOI "-HA-NOI- TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
MOV P1,R0 ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM

Giáo trình thực hành vi xử lý. 147 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 2: Chương trình điều khiển hiển thị chuỗi ký tự “-HA-NOI-“ trên tám LED.
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
RRC A
MOV R0,A
JC DISP ;KIEM TRA QUET XONG (C = 0)
POP 01H
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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: ;VUNG CHUA MA CHU HIEN THI
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “-PEP-SI-“ trên tám LED. Tự chọn lựa
phương pháp kết nối LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “COCACOLA“ trên tám LED. Tự chọn lựa
phương pháp kết nối LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “--DHCN--“ trên tám LED. Tự chọn lựa
phương pháp kết nối LED 7 đoạn.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 148 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 3: Chương trình điều khiển hiển thị và chớp tắt chuỗi ký tự “-HA-NOI-“ trên tám LED.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 2.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI CHUOI "-HA-NOI-“ CHOP TAT TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0,#50 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH
MP1:
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
DJNZ R0,MP1
LCALL TATLED ;TAT HIEN THI CHUOI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
MOV P1,R0 ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
RRC A
MOV R0,A
JC DISP ;KIEM TRA QUET XONG (C = 0)
POP 01H
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
;***************************************************

Giáo trình thực hành vi xử lý. 149 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 3: Chương trình điều khiển hiển thị và chớp tắt chuỗi ký tự “-HA-NOI-“ trên tám LED.
TATLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
TAT:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,TAT
POP 00H
RET
;***************************************************
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 150 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 4: Chương trình điều khiển hiển thị lần lượt các chuỗi ký tự “-HA-NOI“, “-DA-LAT-“, “-SAIGON-“ trên
tám LED. Mỗi chuỗi hiển thị cách nhau 1 giây.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 2.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI CHUOI "-HA-NOI-","-DA-LAT-","-SAIGON-" TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MP1:
MOV R0,#100 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH
STATICDISP:
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
DJNZ R0,STATICDISP ;GIAM BIEN LAP
MOV A,DPL ;DICH DEN DIA CHI CUA CHUOI KE TIEP
ADD A,#8 ;ADDNEXT = ADDPREV + 8 (DO DAI CHUOI = 8)
MOV DPL,A
CJNE A,#LOW(CODEDISP+24),MP1 ;KIEM TRA HIEN THI XONG TAT CA CAC CHUOI
SJMP MAIN ;3 CHUOI = 24 MA KY TU
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
MOV P1,R0 ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
RRC A
MOV R0,A
JC DISP ;KIEM TRA QUET XONG (C = 0)
POP 01H
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250

Giáo trình thực hành vi xử lý. 151 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 4: Chương trình điều khiển hiển thị lần lượt các chuỗi ký tự “-HA-NOI“, “-DA-LAT-“, “-SAIGON-“ trên
tám LED. Mỗi chuỗi hiển thị cách nhau 1 giây.
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH ;MA CHUOI "-HA-NOI-"
DB 0BFH,0A1H,88H,0BFH,0C7H,88H,0F8H,0BFH ;MA CHUOI "-DA-LAT-"
DB 0BFH,92H,88H,0F9H,90H,0C0H,0C8H,0BFH ;MA CHUOI "-SAIGON-"
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị và chớp tắt chuỗi ký tự “-PEP-SI-“ trên tám LED. Tự chọn
lựa phương pháp kết nối LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển hiển thị và chớp tắt 10 lần chuỗi ký tự “COCACOLA“ trên tám
LED. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển hiển thị lần lượt các chuỗi ký tự “COCACOLA“, “-PEP-SI-“, “-
FANTA-“ trên tám LED. Mỗi chuỗi hiển thị cách nhau 1 giây. Tự chọn lựa phương pháp kết nối LED 7
đoạn.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 152 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 5: Chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-HA-NOI-SAI-GON-“ trên tám LED từ
phải sang trái.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 2.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI CHUOI "-HA-NOI-SAIGON-" DICH CHUYEN TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MP1:
MOV R0,#20 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH
STATICDISP:
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
DJNZ R0,STATICDISP ;GIAM BIEN LAP
INC DPTR ;DICH CHUOI DI MOT MA KY TU
MOV A,DPL
CJNE A,#LOW(CODEDISP+16),MP1 ;KIEM TRA HIEN THI XONG CHUOI
SJMP MAIN ;SO KY TU CUA CHUOI = 24 MA KY TU
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
MOV P1,R0 ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
RRC A
MOV R0,A
JC DISP ;KIEM TRA QUET XONG (C = 0)
POP 01H
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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,$

Giáo trình thực hành vi xử lý. 153 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 5: Chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-HA-NOI-SAI-GON-“ trên tám LED từ
phải sang trái.
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;MA CHUOI XOA MAN HINH
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH ;MA CHUOI "-HA-NOI-"
DB 92H,88H,0F9H,0BFH,90H,0C0H,0C8H,0BFH ;MA CHUOI "SAI-GON-"
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-PEP-SI-“ trên tám LED từ
phải sang trái. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “COCACOLA“ trên tám LED
từ trái sang phải. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “COMPUTER-
CONTROLLER“ trên tám LED từ phải sang trái. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 154 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.

A. 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.
• Điều khiển việc hiển thị bằng cách sử dụng LED ma trận.
• Ưùng dụng thực hiện việc hiển thị các thông tin tĩnh và động trên LED ma trận dạng quang báo).

B. 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 LED ma trận ở các chế độ khác nhau.
• Nắm được sơ đồ và nguyên lý hoạt động của khối LED ma trận trên mô hình thí nghiệm.
• Nắm được nguyên lý điều khiển LED ma trận ở các chế độ khác nhau.
• Biết cách viết các chương trình quang báo để hiển thị các thông tin được yêu cầu (thông tin dạng tĩnh và
dạng động).

Giáo trình thực hành vi xử lý. 156 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận (COL-RED được nối với Port1 có sử
dụng bộ đệm đảo, ROW được nối với Port2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J9 (COLUMN RED MATRIX) ở khối LED ma
tr?n.
• Dùng dây bus 8 nối J65 (PORT2 / A8..A15) ở khối vi điều khiển với J13 (ROW MATRIX) ở khối LED
ma tr?n.
• Dùng dây bus 3 nối J116 (POWER) ở khối LED ma tr?n với nguồn +5V ở khối nguồn.
COL. RED

COL. GREEN

PORT 0
PORT 1

40 PINS
3

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH HIEN THI KY TU A TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV P2,#07H ;XUAT MA HIEN THI RA HANG
MOV P1,#01H ;XUAT MA QUET RA COT 1
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM

MOV P2,#0DBH ;XUAT MA HIEN THI RA HANG


MOV P1,#02H ;XUAT MA QUET RA COT 2
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM

MOV P2,#0DDH ;XUAT MA HIEN THI RA HANG


MOV P1,#04H ;XUAT MA QUET RA COT 3
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM

MOV P2,#0DBH ;XUAT MA HIEN THI RA HANG


MOV P1,#08H ;XUAT MA QUET RA COT 4
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM

MOV P2,#07H ;XUAT MA HIEN THI RA HANG


MOV P1,#10H ;XUAT MA QUET RA COT 5
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM

MOV P2,#0FFH ;XUAT MA HIEN THI RA HANG


MOV P1,#20H ;XUAT MA QUET RA COT 6
LCALL DELAYLED

Giáo trình thực hành vi xử lý. 157 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận (COL-RED được nối với Port1 có sử
dụng bộ đệm đảo, ROW được nối với Port2).
MOV P1,#00H ;CHONG LEM

MOV P2,#0FFH ;XUAT MA HIEN THI RA HANG


MOV P1,#40H ;XUAT MA QUET RA COT 7
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM

MOV P2,#0FFH ;XUAT MA HIEN THI RA HANG


MOV P1,#80H ;XUAT MA QUET RA COT 8
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM

LJMP MAIN
;***************************************************
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
END
• Cách 2:
;***************************************************
;CHUONG TRINH HIEN THI KY TU A TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
$MOD51
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
LJMP MAIN
;***************************************************
;CTC QUET MA TRAN 8 X 8.
;***************************************************
;NAME: SCANMATRIXSTA.
;OUTPUT: P1 = COLUMN MATRIX (NOT BUFFER).
; P2 = ROW MATRIX.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI.
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0).
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
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
CJNE R0,#8H,SCAN ;KIEM TRA QUET CAC COT (MA TRAN GOM 8 COT)
POP 01H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP 00H

Giáo trình thực hành vi xử lý. 158 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận (COL-RED được nối với Port1 có sử
dụng bộ đệm đảo, ROW được nối với Port2).
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 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• 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ị số 8 màu xanh trên LED ma trận (COL-GRE được nối với
Port1, ROW được nối với Port2).
• Bài 3: Hãy viết chương trình điều khiển hiển thị chữ A 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 4: Hãy lập bảng mã cho tất cả các ký tự chữ, ký tự số và ký tự đặc biệt có trên bàn phím máy tính. Và
thử đưa các mã đã lập này vào chương trình điều khiển hiển thị ở trên để xem hình ảnh chúng như thế nào?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 159 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 2: Chương trình điều khiển hiển thị chữ S màu đỏ trên LED ma trận sáng tắt (COL-RED được nối với
Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH HIEN THI KY TU A CHOP TAT TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0,#50 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH LED
MP1:
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
DJNZ R0,MP1
LCALL TATLED ;TAT MA TRAN LED
LJMP MAIN
;***************************************************
;CTC QUET MA TRAN 8 X 8.
;***************************************************
;NAME: SCANMATRIXSTA.
;OUTPUT: P1 = COLUMN MATRIX (NOT BUFFER).
; P2 = ROW MATRIX.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI.
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0).
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
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
CJNE R0,#8H,SCAN ;KIEM TRA QUET 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
;***************************************************
TATLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100

Giáo trình thực hành vi xử lý. 160 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 2: Chương trình điều khiển hiển thị chữ S màu đỏ trên LED ma trận sáng tắt (COL-RED được nối với
Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
MOV TMOD,#01H
TAT:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,TAT
POP 00H
RET
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị chữ W màu đỏ sáng tắt 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ị số 0 màu xanh sáng tắt trên LED ma trận (COL-GRE được
nối với Port1, ROW được nối với Port2).
• Bài 3: Hãy viết chương trình điều khiển hiển thị chữ H màu vàng sáng tắt trên sáng tắt 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 4: 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 5: Hãy lập bảng mã cho tất cả các ký tự chữ, ký tự số và ký tự đặc biệt có trên bàn phím máy tính. Và
thử đưa các mã đã lập này vào chương trình điều khiển hiển thị ở trên để xem hình ảnh chúng như thế nào?
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 161 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 3: Chương trình điều khiển hiển thị lần lượt các chữ A, B, C, a, b, c màu đỏ trên LED ma trận (COL-RED
được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH HIEN THI CHUOI KY TU A,B,C,a,b,c LAN LUOT TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MP1:
MOV R0,#50 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH LED
MP2:
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
DJNZ R0,MP2
MOV A,DPL ;DICH DEN DIA CHI CUA KY TU KE TIEP
ADD A,#8 ;ADDNEXT = ADDPREV + 8 (DO DAI KY TU = 8)
MOV DPL,A
CJNE A,#LOW(CODEDISP+48),MP1 ;KIEM TRA HIEN THI XONG TAT CA CAC CHUOI
LJMP MAIN
;***************************************************
;CTC QUET MA TRAN 8 X 8.
;***************************************************
;NAME: SCANMATRIXSTA.
;OUTPUT: P1 = COLUMN MATRIX (NOT BUFFER).
; P2 = ROW MATRIX.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI.
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0).
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
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
CJNE R0,#8H,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

Giáo trình thực hành vi xử lý. 162 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 3: Chương trình điều khiển hiển thị lần lượt các chữ A, B, C, a, b, c màu đỏ trên LED ma trận (COL-RED
được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
DB 01H,6DH,6DH,6DH,93H,0FFH,0FFH,0FFH ;CHU B
DB 83H,7DH,7DH,7DH,0BBH,0FFH,0FFH,0FFH ;CHU C
DB 0BFH,57H,57H,57H,0FH,0FFH,0FFH,0FFH ;CHU a
DB 01H,6FH,77H,77H,8FH,0FFH,0FFH,0FFH ;CHU b
DB 8FH,77H,77H,77H,0BFH,0FFH,0FFH,0FFH ;CHU c
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: 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 2: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 9 xuống 0 màu xanh trên LED ma trận
(COL-GRE được nối với Port1, ROW được nối với Port2).
• Bài 3: Hãy viết chương trình điều khiển hiển thị các ký tự từ A đến Z 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ị các ký tự từ Z đến A màu xanh trên LED ma trận (COL-
GRE được nối với Port1, ROW được nối với Port2).
• Bài 5: 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 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 6: 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 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 163 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 4: Chương trình điều khiển hiển thị chuỗi ký tự “WELLCOME” màu đỏ trên LED ma trận dịch chuyển từ
phải sang trái (COL-RED được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH HIEN THI CHUOI KY TU WELLCOME LAN LUOT TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MP1:
MOV R0,#20 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH LED
MP2:
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
DJNZ R0,MP2
INC DPTR ;DICH CHUOI DI MOT MA KY TU
MOV A,DPL
CJNE A,#LOW(CODEDISP+48),MP1 ;KIEM TRA HIEN THI XONG CHUOI
SJMP MAIN ;SO KY TU CUA CHUOI = 24 MA KY TU
;***************************************************
;CTC QUET MA TRAN 8 X 8.
;***************************************************
;NAME: SCANMATRIXSTA.
;OUTPUT: P1 = COLUMN MATRIX (NOT BUFFER).
; P2 = ROW MATRIX.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI.
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0).
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
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
CJNE R0,#8H,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
;***************************************************

Giáo trình thực hành vi xử lý. 164 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 4: Chương trình điều khiển hiển thị chuỗi ký tự “WELLCOME” màu đỏ trên LED ma trận dịch chuyển từ
phải sang trái (COL-RED được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
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 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
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “KHOA DIEN TU” màu xanh dịch chuyển từ
phải sang trái trên LED ma trận (COL-GRE đượ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ị 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).
• Bài 3: Hãy viết chương trình điều khiển hiển thị tương tự như bài tập 1 và 2 nhưng màu của ma trận LED
sẽ thay đổi liên tục ĐỎ – XANH – VÀNG sau mỗi một giây đồng hồ.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 165 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.

A. 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.
• Đ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.

B. 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.

Giáo trình thực hành vi xử lý. 167 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 1: Chương trình đ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).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• 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.
• 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.
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.

PORT 0
3

PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
KEYBOARD

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;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
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

Giáo trình thực hành vi xử lý. 168 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 1: Chương trình đ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).
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
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
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển và hiển thị mã của phím nhấn trên 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.
• Bài 2: Hãy viết chương trình điều khiển và hiển thị mã của phím nhấn 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.
• Bài 3: Hãy viết chương trình điều khiển và hiển thị tên của phím nhấn trên 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.
• Bài 4: Hãy viết chương trình điều khiển và hiển thị tên của phím nhấn 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.
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 169 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: 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 “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN LED HIEN THI CAC KIEU KHAC NHAU KHI
;TA NHAN CAC 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,#0CH,NEXT1 ;KHONG PHAI PHIM F1 -> KIEM TIEP
LCALL CHOPTAT ;PHIM F1 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT1:
CJNE A,#08H,NEXT2 ;KHONG PHAI PHIM F2 -> KIEM TIEP
LCALL SANGDAN ;PHIM F2 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT2:
CJNE A,#04H,NEXT3 ;KHONG PHAI PHIM F3 -> KIEM TIEP
LCALL DEMLEN ;PHIM F3 DUOC NHAN -> CHAY CHUONG TRINH CON TUONG UNG
NEXT3:
CJNE A,#00H,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
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

Giáo trình thực hành vi xử lý. 170 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: 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 “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
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
LCALL DELAY500MS
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 LEN NHI PHAN
PUSH ACC
MOV A,#00H ;LED TAT
LCALL DELAY500MS
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
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC SD1 ;CHUA SANG HET THI LAM TIEP
SD2:
CLR C ;C=1
MOV P1,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, TAT DAN
JC SD2 ;CHUA TAT HET THI LAM TIEP
POP ACC
RET

Giáo trình thực hành vi xử lý. 171 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: 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 “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
;***************************************************
SANGDON:
PUSH ACC
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN 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
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP2 ;CHUA HOAN TAT CHU TRINH? QUAY LAÁa
POP ACC
RET
;***************************************************
DELAY500MS: ;CTC TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
DEL1:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL1
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• 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.
 Nhấn phím “ENTER”: hiển thị chuỗi.
 Nhấn phím “ESC”: không hiển thị chuỗi.
 Nhấn phím “1”: sáng tắt chuỗi liên tục.
 Nhấn phím “2”: dịch chuyển chuỗi từ phải sang trái liên tục.
 Nhấn phím “3”: dịch chuyển chuỗi từ trái sang phải liên tục.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• 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.
 Nhấn phím “ESC”: không hiển thị chuỗi.
 Nhấn phím “1”: hiển thị chuỗi “COCACOLA”.
 Nhấn phím “2”: hiển thị chuỗi “PEPSI”.
 Nhấn phím “3”: hiển thị chuỗi “FANTA”.
 Nhấn phím “4”: hiển thị chuỗi “TRIBECO”.
 Nhấn phím “5”: hiển thị chuỗi “NUOCSUOI”.
Giáo trình thực hành vi xử lý. 172 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: 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 “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• 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 LED1. Tự lựa chọn phương
pháp kết nối bàn phím và LED 7 đoạn.
 Nhấn phím “ESC”: không hiển thị.
 Nhấn phím “1”: hiển thị đếm BCD từ 0 lên 9 trên LED1.
 Nhấn phím “2”: hiển thị đếm BCD từ 9 xuống 0 trên LED1.
 Nhấn phím “3”: hiển thị đếm HEX từ 0 lên F trên LED1.
 Nhấn phím “4”: hiển thị đếm HEX từ 9 xuống 0 trên LED1.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• 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 ký tự “A” 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.
 Nhấn phím “F1”: hiển thị ký tự màu đỏ.
 Nhấn phím “F2”: hiển thị ký tự màu xanh.
 Nhấn phím “F3”: hiển thị ký tự màu vàng.
 Nhấn phím “ESC”: không hiển thị ký tự.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 5: 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.
 Nhấn phím “ESC”: không hiển thị.
 Nhấn phím “1”: hiển thị đếm BCD từ 0 lên 9 trên LED ma trận.
 Nhấn phím “2”: hiển thị đếm BCD từ 9 xuống 0 trên LED ma trận.
 Nhấn phím “3”: hiển thị các ký tự từ A đến Z trên LED ma trận.
 Nhấn phím “4”: hiển thị các ký tự từ Z đến A trên LED ma trận.
• Bài 6: 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.
 Nhấn phím “ESC”: không hiển thị chuỗi.
 Nhấn phím “1”: dịch chuyển chuỗi từ phải sang trái liên tục.
 Nhấn phím “2”: dịch chuyển chuỗi từ trái sang phải liên tục.
 Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 7: 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 hai chuỗi ký tự “DAI HOC
CONG NGHIEP TP HO CHI MINH” và “KHOA DIEN TU” 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.
 Nhấn phím “ESC”: không hiển thị chuỗi.
 Nhấn phím “1”: dịch chuyển chuỗi từ phải sang trái liên tục.
 Nhấn phím “2”: dịch chuyển chuỗi từ trái sang phải liên tục.
 Nhấn phím “F1”: chọn chuỗi hiển thị có màu đỏ.
 Nhấn phím “F2”: chọn chuỗi hiển thị có màu xanh.
 Nhấn phím “F3”: chọn chuỗi hiển thị là “DAI HOC CONG NGHIEP TP HO CHI MINH”.
 Nhấn phím “F4”: chọn chuỗi hiển thị là “KHOA DIEN TU”.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Chương trình con quét phím có chống dội:
o Lưu đồ:

o Chương trình mẫu:


;***************************************************
;CTC QUET BAN PHIM MA TRAN 4 X 4, CO CHONG DOI.
;***************************************************
;NAME: SCANKEYPAD.
;INPUT: PORT 0 (ROW1...ROW4 -> P0.0...P0.3 & COL1...COL4 -> P0.4...P0.7).
;OUTPUT: C = 1: CO PHIM NHAN - ACC = CHUA MA PHIM (00H -> FFH).

Giáo trình thực hành vi xử lý. 173 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: 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 “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
; C = 0: KHONG CO PHIM NHAN.
;***************************************************
SCANKEYPAD:
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
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
;***************************************************

Giáo trình thực hành vi xử lý. 174 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
E. HỆ THỐNG ĐIỀU KHIỂN LCD.

A. 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ự).
B. 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.

Giáo trình thực hành vi xử lý. 176 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 1: Chương trình đ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.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• 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).
• 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.
• Dùng dây bus 3 nối J104 (POWER) ở khối LCDõ với nguồn +5V ở khối nguồn.

PORT 0
PORT 1
3

40 PINS
PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;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
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = C0H - CHO PHEP LCD HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
RET

Giáo trình thực hành vi xử lý. 177 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 1: Chương trình đ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.
;***************************************************
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) ;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 (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
;*************************************************************
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
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
RET
;***************************************************
DELAY:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET

Giáo trình thực hành vi xử lý. 178 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 1: Chương trình đ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.
;***************************************************
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 'DESIGNED BY: PQT'
DB 99H ;MA KET THUC DONG (TU CHON)
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 179 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 2: 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.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết 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
;***************************************************
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P1
;***************************************************
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD
ACALL DISP_SLINE ;HIEN THI DONG 2
MP1: 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+40),SHIFT
MOV A,DPH
CJNE A,#HIGH(FLINE_DATA+40),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 = C0H - 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,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD (VI DONG 2 DUNG YEN TRONG KHI DONG 1 CHAY)
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

Giáo trình thực hành vi xử lý. 180 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 2: 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.
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) ;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 (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
;*************************************************************
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
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:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB ' WELLCOME TO MICROCONTROLLER SYSTEM - 51'
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB 'DESIGNED BY: PQT'
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 181 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: 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.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• 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).
• 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.
• Dùng dây bus 8 nối J66 (PORT3 / FUNCTION) ở khối vi điều khiển với J76 (MOMENTARY SW) ở khối
nút nhấn.
• Dùng dây hai bus 3 nối J104 (POWER) ở khối LCDõ và J114 (POWER) ở khối nút nhấn với nguồn +5V
ở khối nguồn.

PORT 0
PORT 1
3

40 PINS
PORT 3

PORT 1
20 PINS
MOMENTARY

POWER
SW

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết 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 OMENTARY 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
MOV R7,#0 ;SO XUNG BAN DAU
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA LCD
ACALL DISP_FLINE ;HIEN THI DONG 1
MP1:
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD
SHIFT:
ACALL DISP_SLINE ;HIEN THI DONG 2
ACALL DISP_PULSE ;HIEN THI SO XUNG
MOV R1,#100 ;DELAY 500MS
JB P3.0,DEL500 ;TIEP TUC CHUONG TRINH KHI KHONG NHAN NUT NHAN
MOV A,R7 ;TANG GIA TRI KHI CO NHAN NUT NHAN (P3.0 = 0)
ADD A,#1
DA A
MOV R7,A
DEL500:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
ACALL DELAY

Giáo trình thực hành vi xử lý. 182 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: 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.
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+91),SHIFT
MOV A,DPH
CJNE A,#HIGH(SLINE_DATA+91),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 = C0H - 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,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD (VI DONG 1 DUNG YEN TRONG KHI DONG 2 CHAY)
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
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE (THOAT READ MODE, TRO VE WRITE MODE)
;*************************************************************

Giáo trình thực hành vi xử lý. 183 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: 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.
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
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
DISP_PULSE: ;CTC HIEN THI SO XUNG TAI CHAN P3.0
MOV DATABUS,#88H ;CODE = 80H - DAT DDRAM DIA CHI HIEN THI SO XUNG - 08H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL BCDTOASCII ;GOI CHUONG TRING 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)
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 = '
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB ' '
DB 'DESIGNED BY PHAM QUANG TRI'
DB ' - ELECTRIC TRAINING CENTER - '
DB 'HO CHI MINH UNIVERSITY OF INDUSTRY'
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.

Giáo trình thực hành vi xử lý. 184 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: 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.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ “TRUNG TAM” và “TNTH 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ữ “TRUNG TAM THI NGHIEM THUC
HANH 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à “TRUNG TAM THI NGHIEM THUC HANH 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ị 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 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 185 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.

A. 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.
• Điều khiển các thiết bị ngoại vi bằng nút nhấn.
• Trình bày một số ứng dụng điều khiển các thiết bị ngoại vi có sử dụng nút nhấn.

B. 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 nút nhấn.
• Nắm được sơ đồ và nguyên lý hoạt động của khối nút nhấn trên mô hình thí nghiệm.
• Biết cách viết các chương trình ứng dụng có sử dụng nút nhấn để điều khiển các thiết bị ngoại vi khác
nhau.

Giáo trình thực hành vi xử lý. 187 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 1: Chương trình điều khiển nút nhấn, khi ta nhấn nút nào trong 8 nút thì LED tương ứng sẽ sáng lên và
ngược lại (MOMENTARY SW được nối với Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• 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.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J76 (MOMENTARY SW) ở khối nút
nhấn.
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED và J114 (POWER) ở khối nút nhấn với nguồn +5V ở
khối nguồn.

PORT 0
3

PORT 1

40 PINS
3

PORT 3

PORT 1
20 PINS
MOMENTARY

POWER
SW

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN NUT NHAN LAM 8 LED HOAT DONG
;***************************************************
;KET NOI: 8 LED -> PORT1 MOMENTARY SW -> PORT0 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;TAT CAC LED
KEY0: ;KEY0
JNB P0.0,KEY0OK ;KIEM TRA NUT KEY0 - Y: KEY0 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.0 ;KEY0 NHA -> LED TAT
SJMP KEY1 ;KIEM TRA NUT KE TIEP
KEY0OK:
SETB P1.0 ;KEY0 NHAN -> LED SANG
KEY1: ;KEY1
JNB P0.1,KEY1OK ;KIEM TRA NUT KEY1 - Y: KEY1 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.1 ;KEY1 NHA -> LED TAT
SJMP KEY2 ;KIEM TRA NUT KE TIEP
KEY1OK:
SETB P1.1 ;KEY1 NHAN -> LED SANG
KEY2: ;KEY2
JNB P0.2,KEY2OK ;KIEM TRA NUT KEY2 - Y: KEY2 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.2 ;KEY2 NHA -> LED TAT
SJMP KEY3 ;KIEM TRA NUT KE TIEP
KEY2OK:
SETB P1.2 ;KEY2 NHAN -> LED SANG
KEY3: ;KEY3
JNB P0.3,KEY3OK ;KIEM TRA NUT KEY3 - Y: KEY3 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.3 ;KEY3 NHA -> LED TAT
SJMP KEY4 ;KIEM TRA NUT KE TIEP
KEY3OK:
SETB P1.3 ;KEY3 NHAN -> LED SANG
KEY4: ;KEY4
JNB P0.4,KEY4OK ;KIEM TRA NUT KEY4 - Y: KEY4 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.4 ;KEY4 NHA -> LED TAT
SJMP KEY5 ;KIEM TRA NUT KE TIEP
KEY4OK:
SETB P1.4 ;KEY4 NHAN -> LED SANG
KEY5: ;KEY5

Giáo trình thực hành vi xử lý. 188 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 1: Chương trình điều khiển nút nhấn, khi ta nhấn nút nào trong 8 nút thì LED tương ứng sẽ sáng lên và
ngược lại (MOMENTARY SW được nối với Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).
JNB P0.5,KEY5OK ;KIEM TRA NUT KEY5 - Y: KEY5 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.5 ;KEY5 NHA -> LED TAT
SJMP KEY6 ;KIEM TRA NUT KE TIEP
KEY5OK:
SETB P1.5 ;KEY5 NHAN -> LED SANG
KEY6: ;KEY6
JNB P0.6,KEY6OK ;KIEM TRA NUT KEY6 - Y: KEY6 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.6 ;KEY6 NHA -> LED TAT
SJMP KEY7 ;KIEM TRA NUT KE TIEP
KEY6OK:
SETB P1.6 ;KEY6 NHAN -> LED SANG
KEY7: ;KEY7
JNB P0.7,KEY7OK ;KIEM TRA NUT KEY7 - Y: KEY7 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.7 ;KEY7 NHA -> LED TAT
SJMP KEY0 ;KIEM TRA NUT KE TIEP
KEY7OK:
SETB P1.7 ;KEY7 NHAN -> LED SANG
SJMP KEY0
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 189 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 2: Chương trình điều khiển nút nhấn, khi ta nhấn nút KEY0 thì 8 LED sẽ chớp tắt với tần số 5 Hz và
ngược lại khi ta nhả nút KEY0 thì 8 LED sẽ chớp tắt với tần số 20 Hz (MOMENTARY SW được nối với
Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN NUT NHAN LAM 8 LED HOAT DONG
;***************************************************
;KET NOI: 8 LED -> PORT1 MOMENTARY SW -> PORT0 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV A,#00H
MP1:
JNB P0.0,NHAN ;KIEM TRA NUT NHAN - Y: NUT DUOC NHAN
;NUT DUOC NHA -> F = 20 Hz
ACALL DELAY50MS
NHAN: ;NUT DUOC NHAN -> F = 5 Hz
ACALL DELAY200MS
SJMP MP1
;***************************************************
DELAY50MS: ;CTC DELAY 500MS (F = 20 Hz)
PUSH 00H
CPL A ;CHOP TAT PORT 1
MOV P1,A
MOV R0,#50
MOV TMOD,#01H
DEL50:
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL50
POP 00H
RET
;***************************************************
DELAY200MS: ;CTC DELAY 200MS (F = 5 Hz)
PUSH 00H
CPL A ;CHOP TAT PORT 1
MOV P1,A
MOV R0,#100
MOV TMOD,#01H
DEL5:
MOV TH0,#HIGH(-2000)
MOV TL0,#LOW(-2000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL5
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển nút nhấn và biểu diễn các kiểu hiển thị trên 8 LED. Tự lựa chọn
phương pháp kết nối các nút nhấn và LED.
 Nhấn nút “KEY0”: 8 LED sáng tắt liên tục.
 Nhấn nút “KEY1”: 8 LED sáng dần và tắt hết liên tục.
 Nhấn nút “KEY2”: 8 LED đếm lên nhị phân 8 bit liên tục.
 Nhấn nút “KEY3”: 8 LED sáng đuổi liên tục.

Giáo trình thực hành vi xử lý. 190 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 2: Chương trình điều khiển nút nhấn, khi ta nhấn nút KEY0 thì 8 LED sẽ chớp tắt với tần số 5 Hz và
ngược lại khi ta nhả nút KEY0 thì 8 LED sẽ chớp tắt với tần số 20 Hz (MOMENTARY SW được nối với
Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).
 Nhấn nút “KEY4”: 8 LED sáng dồn liên tục.
 Nhấn nút “KEY5”: 8 LED tắt hết (không hoạt động).
• Bài 2: Hãy viết chương trình điều khiển khi nhấn nút nhấn nào thì số thứ tự của nút nhấn đó hiển thị lên
LED 7 đoạn (LED0). Tự lựa chọn phương pháp kết nối các nút nhấn và LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển khi nhấn nút nhấn nào thì số thứ tự của nút nhấn đó hiển thị lên
LED ma trận. Tự lựa chọn phương pháp kết nối các nút nhấn và LED ma trận.
• Bài 4: Hãy viết chương trình điều khiển khi nhấn nút nhấn KEY1 thì RELAY1 đóng, khi nhấn nút nhấn
KEY2 thì RELAY2 đóng và ngược lại khi không nhấn nút nhấn thì các relay sẽ ngắt. Tự lựa chọn phương
pháp kết nối các nút nhấn và relay.
• Bài 5: Hãy viết chương trình điều khiển khi nhấn nút nhấn KEY0 thì LED 7 đoạn (LED1) sẽ bắt đầu đếm
BCD từ 9 xuống 0. Khi giá trị của LED 7 đoạn này giãm xuống tới giá trị 0 thì RELAY1 sẽ đóng lại. Sau
đó khi nhấn nút nhấn KEY1 thì LED 7 đoạn tắt và RELAY1 ngắt. Tự lựa chọn phương pháp kết nối các
nút nhấn, LED 7 đoạn và relay.
• Bài 6: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 00 lên 59 trên hai LED 7 đoạn (LED1 và
LED2). Khi nhấn nút nhấn KEY0 thì qúa trình đếm dừng lại và giá trị trên hai LED 7 đoạn bắt đầu sáng tắt
liên tục. Sau đó, khi nhấn nút KEY1 thì giá trị trên hai LED 7 đoạn tăng dần lên theo số lần nhấn nút, khi
nhấn nút KEY2 thì giá trị trên hai LED 7 đoạn giãm dần lên theo số lần nhấn nút, khi nhấn nút KEY0 thì
quá trình đếm lại tiếp tục. Tự lựa chọn phương pháp kết nối các nút nhấn và LED 7 đoạn.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đồng hồ số trên sáu LED 7 đoạn (LED3 – LED7) có thể
điều chỉnh dược thời gian bằng các nút nhấn:
 Nút “KEY0”: dùng để chọn lựa tính năng điều chỉnh (Giờ / Phút / Giây) hoặc dùng để
thoát khỏi quá trình điều chỉnh thời gian.
 Nút “KEY1”: dùng để tăng giá trị thời gian.
 Nút “KEY2”: dùng để giãm giá trị thời gian.
Trong quá trình điều chỉnh thời gian thì đồng hồ dừng hoạt động và khi chọn lựa tính năng điều
chỉnh nào (Giờ / Phút / Giây) thì cặp LED 7 đoạn tương ứng sẽ sáng tắt liên tục. Tự lựa chọn
phương pháp kết nối các nút nhấn và LED 7 đoạn.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 191 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
G. HỆ THỐNG ĐIỀU KHIỂN CÔNG TẮC.

A. 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.
• Điều khiển các thiết bị ngoại vi bằng công tắc.
• Trình bày một số ứng dụng điều khiển các thiết bị ngoại vi có sử dụng công tắc.

B. 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 công tắc.
• Nắm được sơ đồ và nguyên lý hoạt động của khối công tắc trên mô hình thí nghiệm.
• Biết cách viết các chương trình ứng dụng có sử dụng công tắc để điều khiển các thiết bị ngoại vi khác
nhau.

Giáo trình thực hành vi xử lý. 193 Biên soạn: Phạm Quang Trí
G. HỆ THỐNG ĐIỀU KHIỂN CÔNG TẮC.
Bài tập: Chương trình điều khiển công tắc và hiển thị lên tám LED mức logic hiện tại (LED sáng = mức cao,
LED tắt = mức thấp) của tám công tắc gạt (SWITCH được nối với Port0, LED được nối với Port1 (có sử
dụng bộ đệm đảo)).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• 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.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J34 (SWITCH) ở khối công tắc.
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED và J106 (POWER) ở khối công tắc với nguồn +5V ở
khối nguồn.

PORT 0
PORT 1
3

40 PINS
SWITCH POWER

PORT 3

PORT 1
3

20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN CONG TAC LAM 8 LED HOAT DONG
;***************************************************
;KET NOI: 8 LED -> PORT1 SWITCH -> PORT0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;TAT CAC LED
SW0: ;SW0
JB P0.0,SW0OK ;KIEM TRA CONG TAC SW0 - Y: SW0 = 1
CLR P1.0 ;SW0 NHA -> LED TAT
SJMP SW1 ;KIEM TRA CONG TAC KE TIEP
SW0OK:
SETB P1.0 ;SW0 NHAN -> LED SANG
SW1: ;SW1
JB P0.1,SW1OK ;KIEM TRA CONG TAC SW1 - Y: SW1 = 1
CLR P1.1 ;SW1 NHA -> LED TAT
SJMP SW2 ;KIEM TRA CONG TAC KE TIEP
SW1OK:
SETB P1.1 ;SW1 NHAN -> LED SANG
SW2: ;SW2
JB P0.2,SW2OK ;KIEM TRA CONG TAC SW2 - Y: SW2 = 1
CLR P1.2 ;SW2 NHA -> LED TAT
SJMP SW3 ;KIEM TRA CONG TAC KE TIEP
SW2OK:
SETB P1.2 ;SW2 NHAN -> LED SANG
SW3: ;SW3
JB P0.3,SW3OK ;KIEM TRA CONG TAC SW3 - Y: SW3 = 1
CLR P1.3 ;SW3 NHA -> LED TAT
SJMP SW4 ;KIEM TRA CONG TAC KE TIEP
SW3OK:
SETB P1.3 ;SW3 NHAN -> LED SANG
SW4: ;SW4
JB P0.4,SW4OK ;KIEM TRA CONG TAC SW4 - Y: SW4 = 1
CLR P1.4 ;SW4 NHA -> LED TAT
SJMP SW5 ;KIEM TRA CONG TAC KE TIEP
SW4OK:
SETB P1.4 ;SW4 NHAN -> LED SANG
SW5: ;SW5

Giáo trình thực hành vi xử lý. 194 Biên soạn: Phạm Quang Trí
G. HỆ THỐNG ĐIỀU KHIỂN CÔNG TẮC.
Bài tập: Chương trình điều khiển công tắc và hiển thị lên tám LED mức logic hiện tại (LED sáng = mức cao,
LED tắt = mức thấp) của tám công tắc gạt (SWITCH được nối với Port0, LED được nối với Port1 (có sử
dụng bộ đệm đảo)).
JB P0.5,SW5OK ;KIEM TRA CONG TAC SW5 - Y: SW5 = 1
CLR P1.5 ;SW5 NHA -> LED TAT
SJMP SW6 ;KIEM TRA CONG TAC KE TIEP
SW5OK:
SETB P1.5 ;SW5 NHAN -> LED SANG
SW6: ;SW6
JB P0.6,SW6OK ;KIEM TRA CONG TAC SW6 - Y: SW6 = 1
CLR P1.6 ;SW6 NHA -> LED TAT
SJMP SW7 ;KIEM TRA CONG TAC KE TIEP
SW6OK:
SETB P1.6 ;SW6 NHAN -> LED SANG
SW7: ;SW7
JB P0.7,SW7OK ;KIEM TRA CONG TAC SW7 - Y: SW7 = 1
CLR P1.7 ;SW7 NHA -> LED TAT
SJMP SW0 ;KIEM TRA CONG TAC KE TIEP
SW7OK:
SETB P1.7 ;SW7 NHAN -> LED SANG
SJMP SW0
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị giá trị nhị phân của tám công tắc gạt dưới dạng số HEX
trên hai LED 7 đoạn (LED6 và LED7).
• Bài 2: Hãy viết chương trình điều khiển hiển thị giá trị nhị phân của tám công tắc gạt dưới dạng số DEC
trên ba LED 7 đoạn (LED5, LED6 và LED7).
• Bài 3: Hãy viết chương trình điều khiển công tắc và biểu diễn các kiểu hiển thị trên 8 LED.
 SW1 = ON (mức thấp): 8 LED tắt hết (không hoạt động).
 SW2 = ON (mức thấp): 8 LED sáng tắt liên tục.
 SW3 = ON (mức thấp): 8 LED sáng dần và tắt hết liên tục.
 SW4 = ON (mức thấp): 8 LED đếm lên nhị phân 8 bit liên tục.
 SW5 = ON (mức thấp): 8 LED sáng đuổi liên tục.
 SW6 = ON (mức thấp): 8 LED sáng dồn liên tục.
 SW7 = ON (mức thấp): 8 LED sáng hết và tắt dần liên tục.
 SW8 = ON (mức thấp): 8 LED đếm xuống nhị phân 8 bit liên tục.
• Bài 4: Hãy viết chương trình điều khiển công tắc để đóng ngắt RELAY1. RELAY1 sẽ đóng khi các công
tắc được gạt đúng vị trí đã chọn trước (SW1, 3, 5, 7 = ON và SW2, 4, 6, 8 = OFF) và nhấn nút nhấn KEY0.
Ngược lại thì RELAY1 sẽ ngắt. Khi RELAY1 đóng thì trên LED ma trận hiển thị chữ Y, còn khi RELAY1
ngắt thì LED ma trận hiển thị chữ N.
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 195 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
H. HỆ THỐNG ĐIỀU KHIỂN RELAY.

A. 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.
• Điều khiển các thiết bị ngoại vi công suất lớn thông qua việc điều khiển các relay.
• Trình bày một số ứng dụng điều khiển đóng ngắt các thiết bị ngoại vi công suất lớn bằng cách sử dụng
relay.

B. 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 đóng ngắt relay.
• Nắm được sơ đồ và nguyên lý hoạt động của khối relay trên mô hình thí nghiệm.
• Biết cách viết các chương trình ứng dụng có sử dụng các relay để điều khiển các thiết bị ngoại vi khác
nhau.

Giáo trình thực hành vi xử lý. 197 Biên soạn: Phạm Quang Trí
H. HỆ THỐNG ĐIỀU KHIỂN RELAY.
Bài tập: Chương trình điều khiển RELAY1 và RELAY2 đóng ngắt tuần tự và liên tục. Thời gian giữa hai lần
đóng ngắt là 1s (RELAY1 và RELAY2 được nối với P1.0 và P1.1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 2 nối J64 (PORT1) ở khối vi điều khiển với J18 (RELAY CONTROL) ở khối relay (chú ý
là ta chỉ nối 2 bit thấp của J64 với J18).
• Dùng dây bus 3 nối J111 (POWER) ở khối relay với nguồn +5V ở khối nguồn.

PORT 0
PORT 1

40 PINS
POWER
CONTROL
RELAY

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN 2 RELAY DONG NGAT
;***************************************************
;KET NOI: RELAY CONTROL -> PORT1
;***************************************************
ORG 00H
CHOPTAT:
MOV P1,#00000001B ;RELAY1 DONG, RELAY2 NGAT
LCALL DELAY1S
MOV P1,#00000010B ;RELAY2 DONG, RELAY1 NGAT
LCALL DELAY1S
SJMP CHOPTAT ;QUAY LAI
;****************************************************
DELAY1S: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.

Giáo trình thực hành vi xử lý. 198 Biên soạn: Phạm Quang Trí
H. HỆ THỐNG ĐIỀU KHIỂN RELAY.
Bài tập: Chương trình điều khiển RELAY1 và RELAY2 đóng ngắt tuần tự và liên tục. Thời gian giữa hai lần
đóng ngắt là 1s (RELAY1 và RELAY2 được nối với P1.0 và P1.1).
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển RELAY2 đóng ngắt liên tục. Thời gian giữa hai lần đóng ngắt là
3s. Tự lựa chọn phương pháp kết nối relay.
• Bài 2: Hãy viết chương trình điều khiển RELAY1 đóng ngắt liên tục sau mỗi 1 giây đồng thời với
RELAY2 đóng ngắt sau mỗi 2 giây. Tự lựa chọn phương pháp kết nối relay.
• Bài 3: Hãy viết chương trình điều khiển sao cho khi ta nhấn:
 Nhấn nút nhấn KEY1 thì LED 7 đoạn hiển thị số 1 và RELAY1 đóng.
 Nhấn nút nhấn KEY2 thì LED 7 đoạn hiển thị số 1 và RELAY2 đóng.
 Nhấn nút nhấn KEY0 thì LED 7 đoạn hiển thị số 0 và cả hai relay đều ngắt.
Tự lựa chọn phương pháp kết nối relay, nút nhấn và LED 7 đoạn.
• Bài 4: Hãy viết chương trình điều khiển sao cho khi ta nhấn:
 Nhấn phím số “1” thì LED ma trận hiển thị số 1 và RELAY1 đóng.
 Nhấn phím số “2” thì LED ma trận hiển thị số 1 và RELAY2 đóng.
 Nhấn phím “ESC” thì LED ma trận hiển thị số 0 và cả hai relay đều ngắt.
Tự lựa chọn phương pháp kết nối relay, bàn phím và LED ma trận.
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 199 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.

A. 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.
• Tìm hiểu nguyên lý hoạt động của các loại động cơ bước công suất nhỏ.
• Tìm hiểu nguyên lý điều khiển động cơ bước bằng vi điều khiển và ứng dụng lập trình để điều khiển hoạt
động cho các động cơ bước này.

B. 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 động cơ bước quay thuận/ngược, quayliên tục/từng bước, ….
• Nắm được sơ đồ và nguyên lý hoạt động của khối động cơ bước trên mô hình thí nghiệm.
• Nắm được nguyên lý hoạt động và nguyên lý điều khiển động cơ bước.
• Biết cách viết các chương trình ứng dụng điều khiển động cơ bước hoạt động theo các chế độ khác nhau.

Giáo trình thực hành vi xử lý. 201 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 1: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ (CTRL MOTOR được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J31 (CONTROL MOTOR) ở khối
motor bước.
• Dùng dây bus 4 nối J30 (MOTOR 1) ở khối motor bước với các dây điều khiển của motor bước (sử dụng
loại motor bước có 5 dây (4 điều khiển +1 nguồn) hoặc loại 6 dây (2 điều khiển + 1 nguồn và 2 điều khiển
+ 1 nguồn).
• Dùng dây bus 3 nối J105 (POWER) ở khối motor bước với nguồn +5V ở khối nguồn.
• Dùng dây bus 1 nối các dây nguồn của motor bước với nguồn +5V ở khối nguồn.

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN DONG CO BUOC (MOTOR 1) QUAY LIEN TUC
;***************************************************
;KET NOI: MOTOR CONTROL -> PORT0 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV P0,#00000001B ;XUAT PORT DIEU KHIEN MOTOR - BUOC 1
ACALL DELAY
MOV P0,#00000010B ;XUAT PORT DIEU KHIEN MOTOR - BUOC 2
ACALL DELAY
MOV P0,#00000100B ;XUAT PORT DIEU KHIEN MOTOR - BUOC 3
ACALL DELAY
MOV P0,#00001000B ;XUAT PORT DIEU KHIEN MOTOR - BUOC 4
ACALL DELAY
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.

Giáo trình thực hành vi xử lý. 202 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 1: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ (CTRL MOTOR được nối với Port0).
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 203 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 2: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ một vòng rồi dừng lại (CTRL
MOTOR được nối với Port0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN DONG CO BUOC (MOTOR 1) QUAY 1 VONG
;***************************************************
;KET NOI: MOTOR CONTROL -> PORT0 (ACT = 0), 1.8 DEG/STEP (200 STEP/ROUND)
;***************************************************
ORG 00H
MAIN:
MOV P0,#00H ;DUA MOTOR VE TRANG THAI TINH
MOV R0,#0 ;BIEN DEM SO BUOC
MOV A,#00000001B ;TRANG THAI BAN DAU (BUOC 1)
STEPNEXT:
MOV P0,A ;XUAT XUNG DIEU KHIEN MOTOR
ACALL DELAY
RL A ;CHUYEN DICH SANG TRANG THAI XUNG DIEU KHIEN KE TIEP
INC R0 ;DEM SO BUOC QUAY
CJNE A,#00010000B,NEXT ;KIEM TRA TRANG THAI XUNG DIEU KHIEN (4 BUOC ?) - Y: CHUA DU
MOV A,#00000001B ;DUA XUNG DIEU KHIEN VE TRANG THAI BAN DAU (BUOC 1)
NEXT:
CJNE R0,#200,STEPNEXT ;KIEM TRA MOTOR DA QUAY DU 1 VONG - 200 BUOC
SJMP $ ;DUNG KHI DA DU 1 VONG
;****************************************************
DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 204 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 3: Chương trình điều khiển STEPPER1 quay bằng cách nhấn nút KEY0: quay thuận, KEY1: quay ngược,
KEY2: dừng (CTRL MOTOR được nối với Port0, MOMENTARY SW: được nối với Port1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J31 (CONTROL MOTOR) ở khối
motor bước.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J76 (MOMENTARY SW) ở khối nút nhấn.
• Dùng dây bus 4 nối J30 (MOTOR 1) ở khối motor bước với các dây điều khiển của motor bước (sử dụng
loại motor bước có 5 dây (4 điều khiển +1 nguồn) hoặc loại 6 dây (2 điều khiển + 1 nguồn và 2 điều khiển
+ 1 nguồn).
• Dùng hai dây bus 3 nối J105 (POWER) ở khối motor bước và J114 (POWER) ở khối nút nhấn với nguồn
+5V ở khối nguồn.
• Dùng dây bus 1 nối các dây nguồn của motor bước với nguồn +5V ở khối nguồn.

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN DONG CO BUOC (MOTOR 1) QUAY THUAN/NGHICH KHI NHAN NUT NHAN
;***************************************************
;KET NOI: MOTOR CONTROL -> PORT0 (ACT = 0) MOMENTARY SW -> PORT1 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV A,#01H ;XUNG KHIEN BUOC 1
MOV P0,A ;XUAT XUNG KHIEN
MOV R0,#0 ;BIEN NHAN GIA TRI CUA NUT DUOC NHAN (KEY0 = 0)
TESTKEY:
JB P1.0,NEXTKEY1 ;Y: KEY0 KHONG DUOC NHAN
MOV R0,#0 ;NAP GIA TRI CUA NUT -> KEY0 NHAN
NEXTKEY1:
JB P1.1,NEXTKEY2 ;Y: KEY1 KHONG DUOC NHAN
MOV R0,#1 ;NAP GIA TRI CUA NUT -> KEY1 NHAN
NEXTKEY2:
JB P1.2,COMPARE ;Y: KEY2 KHONG DUOC NHAN
MOV R0,#2 ;NAP GIA TRI CUA NUT -> KEY2 NHAN
COMPARE:
CJNE R0,#1,NEXT_COM1 ;Y: NUT NHAN KHONG PHAI LA KEY1
RL A ;NUT NHAN LA KEY1 -> QUAY THUAN 1 BUOC
ACALL ROTATE
NEXT_COM1:
CJNE R0,#2,NEXT_COM2 ;Y: NUT NHAN KHONG PHAI LA KEY2
RR A ;NUT NHAN LA KEY2 -> QUAY NGHICH 1 BUOC
ACALL ROTATE

Giáo trình thực hành vi xử lý. 205 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 3: Chương trình điều khiển STEPPER1 quay bằng cách nhấn nút KEY0: quay thuận, KEY1: quay ngược,
KEY2: dừng (CTRL MOTOR được nối với Port0, MOMENTARY SW: được nối với Port1).
NEXT_COM2:
SJMP TESTKEY ;QUAY TRO VE
;****************************************************
ROTATE: ;CTC DIEU KHIEN QUAY MOTOR
CJNE A,#10H,BIT4_BIT0 ;KIEM TRA TRANG THAI XUNG
MOV A,#01H ;DIEU CHING TRANG THAI XUNG VE BUOC 1
BIT4_BIT0:
CJNE A,#80H,BIT7_BIT3 ;KIEM TRA TRANG THAI XUNG
MOV A,#08H ;DIEU CHING TRANG THAI XUNG VE BUOC 4
BIT7_BIT3:
MOV P0,A ;XUAT XUNG KHIEN
ACALL DELAY
RET
;****************************************************
DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển STEPPER2 quay ngược chiều kim đồng hồ.
• Bài 2: Hãy viết chương trình điều khiển STEPPER1 và 2 quay cùng chiều kim đồng hồ.
• Bài 3: Hãy viết chương trình điều khiển STEPPER1 quay ngược chiều kim đồng hồ và STEPPER2 quay
cùng chiều kim đồng hồ. Tự lựa chọn phương pháp kết nối motor bước.
• Bài 4: Hãy viết chương trình điều khiển STEPPER1 hoạt động khi ta nhấn phím trên bàn phím:
 Nhấn phím “1”: STEPPER1 quay cùng chiều kim đồng hồ.
 Nhấn phím “2”: STEPPER1 quay ngược chiều kim đồng hồ.
 Nhấn phím “ESC”: STEPPER1 dừng.
• Bài 5: Hãy viết chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ khi ta nhấn phím trên
bàn phím:
 Nhấn phím “1”: STEPPER1 tăng dần tốc độ quay.
 Nhấn phím “2”: STEPPER1 giãm dần tốc độ quay.
 Nhấn phím “ESC”: STEPPER1 dừng.
• Bài 6: Hãy viết chương trình điều khiển STEPPER1 hoạt động khi ta nhấn nut nhấn:
 Nhấn nút KEY0: STEPPER1 quay cùng chiều kim đồng hồ.
 Nhấn nút KEY1: STEPPER1 quay ngược chiều kim đồng hồ.
 Nhấn nút KEY2: STEPPER1 tăng dần tốc độ quay.
 Nhấn nút KEY3: STEPPER1 giãm dần tốc độ quay.
 Nhấn nút KEY4: STEPPER1 dừng.
• Bài 7: Hãy viết chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ, motor sẽ quay khi ta
nhập từ bàn phím số bước cần quay (0 đến 200) và nhấn phím “ENTER”, motor sẽ dừng bất cứ lúc nào khi
ta nhấn phím “ESC”. Số bước motor nhập vào và số bước motor quay sẽ được hiển thị lên ba LED 7 đoạn.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 206 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).

A. 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.
• Thiết kế các ứng dụng điều khiển thực tế có sử dụng ngắt (Interrupt).
• So sánh ưu và nhược điểm của các chương trình điều khiển có sử dụng ngắt và không sử dụng ngắt.

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Tham khảo trước hoạt động của ngắt (Interrupt) ở các chế độ khác nhau.
• Nắm được phương pháp lập trình và điều khiển có sử dụng các ngắt.

Giáo trình thực hành vi xử lý. 208 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 1: Chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 10 Hz (sử dụng ngắt Timer) tại chân P0.0
và hiển thị mức logic tại chân này lên LED0 (LED0 được nối với P0.0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT0 / DATA) ở khối vi điều khiển với J12 (BAR LED 2) ở khối dãy LED.
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN TAO SONG VUONG TAI P0.0 CO SU DUNG NGAT TIMER0
;***************************************************
;KET NOI: 8 LED -> PORT0
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 0BH ;DIEM NHAP ISR TIMER0
T0ISR:
CPL P0.0 ;DAO TRANG THAI P0.0 (TAO XUNG)
RETI
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV TMOD,#01H ;TIMER0 -> TIMER 16 BIT
MOV TH0,#(-50000) ;THOI GIAN TRE = 50 MS (THOI GIAN XUNG O MUC THAP HOAC MUC CAO)
MOV TL0,#(-50000) ;CHU KY = 2 x 50 = 100 MS -> F = 10 Hz
SETB TR0 ;CHO TIMER BAT DAU CHAY
MOV IE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG
SJMP $ ;DUNG YEN
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 209 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta
chỉ nối 4 bit thấp của J64 với J1)
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 2 (chân INT0\) của J66 và J33 lại với nhau).
• Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110 (POWER) ở khối LED 7 đoạn với nguồn
+5V ở khối nguồn.
4

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
POWER
PULSE

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN DEM SO XUNG TAI CHAN INT0 (SU DUNG NGAT NGOAI INT0)
;***************************************************
;KET NOI: 7 SEG -> PORT0, SEL LED -> PORT1, PULSE -> INT0
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 03H ;DIEM NHAP ISR NGOAI 0
EX0ISR:
INC 40H ;TANG GIA TRI XUNG KICH
RETI
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV 40H,#0 ;NAP GIA TRI XUNG KICH BAN DAU
MOV IE,#81H ;CHO PHEP NGAT NGOAI 0 HOAT DONG
SETB IT0 ;DAT CHE DO NGAT NGOAI KICH KHOI CANH
MP1:
MOV R7,40H ;SO LUONG XUNG KICH
ACALL BIN8TOBCD ;CHUYEN DOI BIN SANG BCD
ACALL BCD4TO7SEG ;CHUYEN DOI BCD SANG 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI
SJMP MP1
;***************************************************
BIN8TOBCD: ;CTC CHUYEN DOI SO BINARY 8 BIT (<= 255) SANG SO BCD.
PUSH ACC
PUSH B
MOV B,#10
MOV A,R7
DIV AB ;LAY R7 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
DIV AB ;LAY KET QUA TREN CHIA TIEP CHO 10
MOV R7,A ;R7 = TRAM
MOV A,B ;LAY SO HANG CHUC

Giáo trình thực hành vi xử lý. 210 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
BCD4TO7SEG: CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN)
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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,$

Giáo trình thực hành vi xử lý. 211 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển đếm số lần nhấn nút nhấn KEY1 (sử dụng ngắt ngoài) và hiển thị
số lần nhấn nút này (tối đa là 255 lần) lên ba LED 7 đoạn (LED4, LED5 và LED6). Tự lựa chọn phương
pháp kết nối nút nhấn và LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển đếm số lần nhấn nút nhấn KEY1 và KEY2 (sử dụng hai ngắt
ngoài) và hiển thị số lần nhấn nút KEY1 (tối đa là 255 lần) lên ba LED 7 đoạn (LED0, LED1 và LED2),
hiển thị số lần nhấn nút KEY2 (tối đa là 255 lần) lên ba LED 7 đoạn (LED5, LED6 và LED7). Tự lựa chọn
phương pháp kết nối nút nhấn và LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 5 Hz (sử dụng ngắt Timer) tại
chân P1.0 và hiển thị mức logic tại chân này lên LED0. Tự lựa chọn phương pháp kết nối LED.
• Bài 4: Hãy viết chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 1 Hz (sử dụng ngắt Timer) tại
chân P1.0 và hiển thị mức logic tại chân này lên LED0. Tự lựa chọn phương pháp kết nối LED.
• Bài 5: Hãy viết chương trình điều khiển đồng thời tạo hai sóng vuông tuần hoàn có tần số 1 Hz và 5 Hz (sử
dụng ngắt Timer) tại chân P1.0 và P1.1, hiển thị mức logic tại các chân này lên LED0 và LED1. Tự lựa
chọn phương pháp kết nối LED.
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Chế độ Counter:
o Sử dụng ngắt ngoài 0. Mỗi lần nhấn nút là một lần tác động cho ngắt.
o Chương trình phục vụ ngắt ngoài 0 sẽ làm công việc tăng nội dung ô nhớ chứa kết quả lên 1 đơn
vị.
o Chương trình chính sẽ liên tục lấy nội dung của ô nhớ chứa kết quả đổi sang mã BCD nén và hiển
thị lên LED 7 đoạn.

Giáo trình thực hành vi xử lý. 212 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.

A. 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.
• Tìm hiểu các chế độ hoạt động của Timer và Counter.
• Khảo sát nguyên lý hoạt động và phương pháp lập trình điều khiển Timer và Counter.
• Thiết kế các ứng dụng thực tế có sử dụng các bộ định thời gian (Timer) và các bộ đếm sự kiện (Counter).

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Nắm vững phương pháp vận hành các Timer và Counter có trong chip vi điều khiển.
• Biết cách lập trình Timer và Counter ở các chế độ khác nhau, cách tính toán các khoảng thời gian định thời
mong muốn.
• Thiết kế và điều khiển được các ứng dụng có sử dụng Timer và Counter như: đồng hồ, bộ đếm sản phẩm,

Giáo trình thực hành vi xử lý. 214 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta
chỉ nối 4 bit thấp của J64 với J1).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 5 (chân T1) của J66 và J33 lại với nhau).
• Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110 (POWER) ở khối LED 7 đoạn với nguồn
+5V ở khối nguồn.
4

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
POWER
PULSE

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DEM (0000 - 9999) VA HIEN THI XUNG TAI CHAN T1
;***************************************************
;KET NOI: PORT0 -> 7 SEGMENT (DP -> A), PORT1 -> SELECT LED, PULSE -> T1 PIN
;***************************************************
ORG 00H
MAIN:
MOV TMOD,#50H ;COUNTER 16 BIT (MODE 1)
MOV TH1,#0 ;XOA COUNTER 1
MOV TL1,#0
SETB TR1 ;CHO PHEP COUNTER BAT DAU HOAT DONG
MP1:
MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI
MOV R6,TL1
ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD
ACALL BCD4TO7SEG ;DOI MA BCD SANG MA 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED
SJMP MP1
;***************************************************
BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG CHUC
MOV B,#10
MOV A,R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK

Giáo trình thực hành vi xử lý. 215 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7,A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
XCH A,R6
CLR C ;DICH BIT 7 CU R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7
RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************
BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH

Giáo trình thực hành vi xử lý. 216 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 217 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DO TAN SO XUNG TAI CHAN T1
;***************************************************
;KET NOI: PORT0 -> 7 SEGMENT (DP -> A), PORT1 -> SELECT LED, PULSE -> T1 PIN
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 0BH ;DIEM NHAP ISR TIMER0
LJMP T0ISR
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV TMOD,#51H ;TIMER1: COUNTER 16 BIT (MODE 1), TIMER0: TIMER 16 BIT (MODE 1)
MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS
MOV TL0,#LOW(-50000)
SETB TR0 ;CHO TIMER BAT DAU CHAY
MOV IE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG
MP1:
MOV 40H,#0 ;NAP GIA TRI BIEN DEM SO LAN NGAT TIMER0
MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI
MOV R6,TL1
MOV TH1,#0 ;XOA COUNTER 1, CHUAN BI CHO LAN DEM XUNG TIEP THEO
MOV TL1,#0
SETB TR1 ;COUNTER BAT DAU DEM
ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD
ACALL BCD4TO7SEG ;DOI MA BCD SANG MA 7 DOAN
MP2:
ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED
MOV A,40H
CJNE A,#20,MP2 ;KIEM TRA DU 20 LAN NGAT = 1S
CLR TR1 ;DUNG COUNTER SAU 1S -> SO XUNG TRONG 1S = TAN SO XUNG
SJMP MP1
;***************************************************
BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG CHUC
MOV B,#10
MOV A,R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7,A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A

Giáo trình thực hành vi xử lý. 218 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
XCH A,R6
CLR C ;DICH BIT 7 CU R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7
RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************
BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC

MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO

MOV A,R6 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO

MOV A,R7 ;LAY SO BCD CAN GIAI MA


ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO

POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET

Giáo trình thực hành vi xử lý. 219 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
;***************************************************
T0ISR: ;ISR TIMER0 - 50MS
CLR TR0
CLR TF0
MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS
MOV TL0,#LOW(-50000)
INC 40H ;TANG BIEN DEM SO LAN NGAT - 1 LAN = 50MS
SETB TR0
RETI
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 220 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta
chỉ nối 4 bit thấp của J64 với J1).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển
(chú ý là ta chỉ nối vào bit 2 (chân INT0) của J66).
• Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110 (POWER) ở khối LED 7 đoạn với nguồn
+5V ở khối nguồn.
4

PORT 0
PORT 1

40 PINS
PORT 3

PORT 1
20 PINS
POWER
PULSE

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển tạo xung 1 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic
tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED.
• Bài 2: Hãy viết chương trình điều khiển tạo xung 3 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic
tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED.
• Bài 3: Hãy viết chương trình điều khiển tạo xung 1 Hz hoặc 3 Hz (sử dụng Timer) tại chân P1.0 tùy thuộc
vào ta nhấn hay nhả nút nhấn KEY0 và hiển thị mức logic tại chân này lên LED. Tự lựa chọn phương pháp
kết nối LED và nút nhấn.
• Bài 4: Hãy viết chương trình điều khiển đếm liên tục số lượng xung được đưa vào chân T0 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo
xung và các LED 7 đoạn.
• Bài 5: Hãy viết chương trình điều khiển đo tần số của xung (đơn vị tính là Hz) được đưa vào chân T0 của
vi điều khiển và hiển thị giá trị tần số lên LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo xung
và các LED 7 đoạn.
• Bài 6: Hãy viết chương trình điều khiển đo độ rộng xung (đơn vị tính là ms) được đưa vào chân T0 của vi
điều khiển và hiển thị giá trị độ rộng xung lên LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo
xung và các LED 7 đoạn.
• Bài 7: Thực hiện thay đổi tần số của thiết bị tạo xung (bằng cách điều chỉnh biến trở trên thiết bị) hoặc thay
đổi nguồn tạo xung khác vào. Thực hiện lại các bài tập trên và quan sát trên LED 7 đoạn để nhận xét sự
thay đổi của chương trình.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Chế độ Counter:
o Sử dụng Timer1 ở chế độ 1 counter.

Giáo trình thực hành vi xử lý. 221 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
o Khi cho Timer1 chạy, đọc liên tục các giá trị của TH1 và TL1.
o Đổi qua mã BCD nén và hiển thị lên LED 7 đoạn.
Chế độ đo tần số:
o Viết chương trình đếm số xung trong 1s và hiển thị lên LED 7 đoạn (trong khi đếm thì không hiển
thị số đếm mà vẫn hiển thị giá trị tần số trước đó).
Chế độ đo độ rộng xung (chế độ Gate = 1):
o Viết chương trình sử dụng Timer0 ở chế độ Gate = 1.

Giáo trình thực hành vi xử lý. 222 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.

A. 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.
• Ưùng dụng port nối tiếp của vi điều khiển để mở rộng port nhập và xuất.
• Điều khiển việc thu phát nối tiếp.

B. 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 hoạt động của port nối tiếp ở các chế độ khác nhau.
• Biết cách lập trình điều khiển việc xuất nhập dữ liệu thông qua port nối tiếp ở các chế độ khác nhau.

Giáo trình thực hành vi xử lý. 224 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H,
0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thông qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất
cách nhau 1s.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J45 (PARALLEL OUT 2) ở khối thanh ghi dịch với J12 (BAR LED 2) ở khối dãy
LED.
• Dùng dây bus 1 nối J39 (SERIAL IN 1) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 1 (IN) của J39 với bit 0 (RXD) của J66).
• Dùng dây bus 1 nối J39 (SERIAL IN 1) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 2 (CLK) của J39 với bit 1 (TXD) của J66).
• Dùng hai dây bus 3 nối J115 (POWER) ở khối thanh ghi dịch và J103 (POWER) ở khối LED dãy với
nguồn +5V ở khối nguồn.

PORT 0
PORT 1

40 PINS
PARALLEL SERIAL

PARALLEL SERIAL

PARALLEL SERIAL

POWER
OUT
IN 2
IN 1

PORT 3

PORT 1
20 PINS
OUT 2
OUT 1

IN

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP (MO RONG PORT XUAT)
;***************************************************
;KET NOI: LED -> PARALLEL OUT, RXD -> IN, TXD -> CLK
;***************************************************
ORG 00H
MAIN:
MOV SCON,#12H ;KHOI TAO SERIAL PORT (MODE0, REN = 1, TI = 1, RI = 0)
MOV DPTR,#DATABYTE ;NAP DIA CHI VUNG DU LIEU
MOV R0,#0 ;OFFSET VUNG DU LIEU
WAIT:
JNB TI,WAIT ;KIEM TRA CO TI (KIEM TRA PHAT XONG)
CLR TI ;XOA CO TI
MOV A,R0 ;LAY OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
MOV SBUF,A ;PHAT DU LIEU RA SERIAL PORT
ACALL DELAY
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#9,WAIT ;KIEM TRA DA PHAT XONG HET CAC DU LIEU TRONG VUNG DU LIEU
SJMP MAIN
;***************************************************
DELAY:
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
DEL:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0

Giáo trình thực hành vi xử lý. 225 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H,
0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thông qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất
cách nhau 1s.
CLR TF0
DJNZ R0,DEL
POP 00H
RET
DATABYTE:
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 226 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 2: Chương trình điều khiển (ứng dụng mở rộng port nhập) thực hiện liên tục việc nhập dữ liệu từ 8 công
tắc thông qua port nối tiếp và sử dụng vi mạch 74165, dữ liệu nhập vào này sẽ được xuất ra 8 LED.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• 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.
• Dùng dây bus 8 nối J41 (PARALLEL IN) ở khối thanh ghi dịch với J34 (SWITCH) ở khối công tắc.
• Dùng dây bus 1 nối J43 (SERIAL OUT) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 0 (CLK) của J43 với bit 1 (TXD) của J66).
• Dùng dây bus 1 nối J43 (SERIAL OUT) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 1 (LD) của J43 với bit 2 (INT0\) của J66).
• Dùng dây bus 1 nối J43 (SERIAL OUT) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 2 (OUT) của J43 với bit 0 (RXD) của J66).
• Dùng ba dây bus 3 nối J115 (POWER) ở khối thanh ghi dịch, J106 (POWER) ở khối công tắc và J103
(POWER) ở khối LED dãy với nguồn +5V ở khối nguồn.

PORT 0
3

PORT 1
3

40 PINS
SWITCH POWER

PARALLEL SERIAL

PARALLEL SERIAL

PARALLEL SERIAL

POWER
OUT
IN 2
IN 1

PORT 3

PORT 1
20 PINS
OUT 2
OUT 1

PORT 2

PORT 3
IN

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.


;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP (MO RONG PORT NHAP)
;***************************************************
;KET NOI: LED -> P1, RXD -> OUT, TXD -> CLK, INT0 -> LD, SW -> PARALLEL IN
;***************************************************
ORG 00H
MAIN:
MOV SCON,#02H ;KHOI TAO SERIAL PORT (MODE0, REN = 0, TI = 1, RI = 0)
MP1:
CLR P3.2 ;INT = LD = 0
NOP ;NAP GIA TRI CHO VI MACH CHUYEN DOI (PARALLEL -> SERIAL)
SETB P3.2 ;INT = LD = 1
SETB REN ;REN = 1 - CHO PHEP THU DU LIEU
WAIT:
JNB RI,WAIT ;KIEM TRA CO RI (KIEM TRA THU XONG)
CLR RI ;XOA CO RI
CLR REN ;REN = 0 - KHONG CHO PHEP THU
MOV A,SBUF ;DOC DU LIEU DA THU DUOC TU SERIAL PORT
MOV P1,A ;XUAT RA LED
SJMP MP1
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 227 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• 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.
• Dùng dây bus 1 nối J66 (PORT3 / FUNCTION) ở khối vi điều khiển với J66 (PORT3 / FUNCTION) ở
khối vi điều khiển (chú ý là ta chỉ nối bit 0 (RXD) của J66 với bit 1 (TXD) của J66).
• Dùng dây bus 1 nối J76 (MONENTARY SW) ở khối nút nhấn với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 0 (KEY0) của J76 với bit 2 (INT0\) của J66).
• Dùng dây bus 1 nối J43 (SERIAL OUT) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 2 (OUT) của J43 với bit 0 (RXD) của J66).
• Dùng hai dây bus 3 nối J114 (POWER) ở khối nút nhấn và J103 (POWER) ở khối LED dãy với nguồn
+5V ở khối nguồn.

PORT 0
3

PORT 1

40 PINS
3

PORT 3

PORT 1
20 PINS
MOMENTARY

POWER
SW

PORT 2

PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP.
;***************************************************
;KET NOI: LED -> P1, RXD -> TXD, KEY0 -> INT0 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV TMOD,#20H ;TIMER 1: MODE 2 - TAO TOC DO BAUD SERIAL PORT
MOV TH1,#-26 ;BAUD RATE = 1200
SETB TR1 ;TIMER HOAT DONG
MOV SCON,#52H ;SERIAL: MODE 1, TI = 1, RI = 0, REN = 1
MP1:
MOV DPTR,#DATABYTE ;NAP DIA CHI VUNG DU LIEU
MP2:
MOV R0,#50 ;BIEN LAP - CHONG DOI PHIM
KEY_NHAN:
JB INT0,$ ;CHO PHIM DUOC NHAN
DJNZ R0,KEY_NHAN ;GIAM BIEN LAP - CHONG DOI (PHIM DA NHAN)
MOV R0,#50 ;BIEN LAP - CHONG DOI PHIM
KEY_NHA:
JNB INT0,$ ;CHO PHIM DUOC NHA
DJNZ R0,KEY_NHA ;GIAM BIEN LAP - CHONG DOI (PHIM DA NHAN)
;PHIM DA DUOC NHAN VA NHA HOAN TAT
MOV A,#0 ;OFFSET CUA DU LIEU
MOVC A,@A+DPTR ;LAY DU LIEU TRONG VUNG DU LIEU
ACALL TRANS_DATA ;GOI CTC PHAT DU LIEU QUA SERIAL PORT
ACALL RECEI_DATA ;GOI CTC THU DU LIEU QUA SERIAL PORT
MOV 40H,A ;NAP DU LIEU THU DUOC VAO O NHO 40H
MOV P1,40H ;XUAT PORT HIEN THI
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP

Giáo trình thực hành vi xử lý. 228 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
MOV A,DPL ;KIEM TRA DA PHAT/THU XONG VUNG DU LIEU
CJNE A,#LOW(DATABYTE+9),MP2
SJMP MP1 ;QUAY TRO LAI
;***************************************************
TRANS_DATA: ;CTC PHAT DU LIEU
JNB TI,$ ;KIEM TRA PHAT XONG
CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP
MOV SBUF,A ;PHAT DU LIEU
RET
;***************************************************
RECEI_DATA: ;CTC THU DU LIEU
JNB RI,$ ;KIEM TRA THU XONG
CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP
MOV A,SBUF ;THU DU LIEU
RET
;***************************************************
DATABYTE: ;VUNG DU LIEU
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển việc truyền dữ liệu dạng nối tiếp giữa hai chip vi điều khiển với
nhau (phương pháp nối dây cho từng vi điều khiển tương tự bài mẫu 3):
o Vi điều khiển 1: Viết chương trình tạo một bảng dữ liệu gồm 9 bytes (00H, 01H, 03H, 07H, 0FH,
1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối tiếp (TXD) để
truyền sang cho vi điều khiển 2, việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần
xuất một byte. Đồng thời, vi điều khiển 1 liên tục kiểm tra và thu dữ liệu vào từ port nối tiếp
(RXD) các dữ liệu do vi điều khiển 2 gửi sang và cất vào RAM nội có địa chỉ bắt đầu là 40H, dữ
liệu sau khi nhập vào được xuất ra 8 LED đồng thời với việc ghi vào RAM nội.
o Vi điều khiển 2: Viết chương trình tạo một bảng dữ liệu gồm 9 bytes (FFH, 7FH, 3FH, 1FH, 0FH,
07H, 03H, 01H, 00H). Thực hiện việc xuất từng byte của bảng này ra port nối tiếp (TXD) để
truyền sang cho vi điều khiển 1, việc xuất dữ liệu được điều khiển bằng nút nhấn KEY1, mỗi lần
xuất một byte. Đồng thời, vi điều khiển 2 liên tục kiểm tra và thu dữ liệu vào từ port nối tiếp
(RXD) các dữ liệu do vi điều khiển 2 gửi sang và cất vào RAM nội có địa chỉ bắt đầu là 40H, dữ
liệu sau khi nhập vào được xuất ra 8 LED đồng thời với việc ghi vào RAM nội.
• Bài 2: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Phần mở rộng port xuất:
o Port thu phát nối tiếp của 8051 có thể sử dụng để mở rộng thành nhiều port xuất song song. Để
thực hiện điều này, sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và vi
mạch chuyển đổi từ nối tiếp ra song song (Serial In – Parallel Out) như 74164, 4094, …
o Chế độ thanh ghi dịch: RXD là ngõ ra dữ liệu nối tiếp, TXD là ngõ ra xung clock.
o Viết chương trình: xuất dữ liệu ra port nối tiếp ở chế độ thanh ghi dịch.
Phần mở rộng port nhập:
o Port thu phát nối tiếp của 8051 có thể sử dụng để mở rộng thành nhiều port nhập song song. Để
thực hiện điều này, sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và vi
mạch chuyển đổi song song từ ra nối tiếp (Serial Out – Parallel In) như 74165.
o Chế độ thanh ghi dịch: RXD là ngõ ra dữ liệu nối tiếp, TXD là ngõ ra xung clock.
o Viết chương trình:
 Cho LD\ = 0 để nhập dữ liệu từ các công tắc.
 Cho LD\ = 1 để chuẩn bị thực hiện việc ghi dịch.
 Nhập dữ liệu từ port nối tiếp ở chế độ thanh ghi dịch.
 Xuất dữ liệu ra các LED.
Phần thu phát nối tiếp:

Giáo trình thực hành vi xử lý. 229 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
o Nối chân RXD của vi điều khiển 1 với chân TXD của vi điều khiển 2.
o Nối chân TXD của vi điều khiển 1 với chân RXD của vi điều khiển 2.

Giáo trình thực hành vi xử lý. 230 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).

A. 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à phương pháp điều khiển vi mạch PPI 8255.
• Khảo sát phương pháp mở rộng port xuất nhập của vi điều khiển bằng cách sử dụng các vi mạch 8255,
74573 và 74245.
• Khảo sát nguyên lý và phương pháp lập trình điều khiển xuất nhập dữ liệu theo phương pháp song song.

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Nắm được sơ đồ và nguyên lý hoạt động của khối mở rộng port I/O trên mô hình thí nghiệm.
• Nắm được nguyên lý hoạt động và phương pháp điều khiển vi mạch PPI 8255.
• Biết cách lập trình điều khiển xuất nhập dữ liệu theo phương pháp song song.
• Biết cách lập trình và nắm được phương pháp mở rộng port xuất nhập của vi điều khiển bằng cách sử dụng
các vi mạch 8255, 74573 và 74245.

Giáo trình thực hành vi xử lý. 232 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 1: Chương trình điều khiển Port I/O, làm cho 8 LED đếm lên nhị phân 8 bit (LED được nối với DATAOUT
A, CS573A được nối với SELCHIP 0). Sử dụng cơ chế bộ nhớ ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 1 nối J70 (SELECT CHIP) ở khối vi điều khiển với J92 (CS573A) ở khối mở rộng port I/O
(chú ý là tùy thuộc vào tầm địa chỉ yêu cầu mà ta nối dây bus 1 vào đúng bit tương ứng của J70).
• Dùng dây bus 8 nối J85 (DATA OUT) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây hai bus 3 nối J107 (POWER) ở khối mở rộng port I/O và J103 (POWER) ở khối dãy LED với
nguồn +5V ở khối nguồn.

VI ÑIEÀU KHIEÅN

CS573A
POWER

CS573B
CS8255
PORT A

CS245

PORT 0
POWER
SW
MÔÛ ROÄNG PORT I/O
PORT C

PORT 1

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
LED DAÕY A0..A7
SELECT
CHIP
CLOCK
OUT
BAR LED 2 POWER BAR LED 1

1
3 NGUOÀN 3
+5V

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.


1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)

Giáo trình thực hành vi xử lý. 233 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 2: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED (LED được nối
với DATAOUT A, SWITCH được nối với DATAIN, CS573A được nối với SELCHIP 0, CS245 được nối
với SELCHIP 1). Sử dụng cơ chế bộ nhớ ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 1 nối J70 (SELECT CHIP) ở khối vi điều khiển với J92 (CS573A) ở khối mở rộng port I/O
(chú ý là tùy thuộc vào tầm địa chỉ yêu cầu mà ta nối dây bus 1 vào đúng bit tương ứng của J70).
• Dùng dây bus 1 nối J70 (SELECT CHIP) ở khối vi điều khiển với J83 (CS245) ở khối mở rộng port I/O
(chú ý là tùy thuộc vào tầm địa chỉ yêu cầu mà ta nối dây bus 1 vào đúng bit tương ứng của J70).
• Dùng dây bus 8 nối J85 (DATA OUT) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 8 nối J80 (DATA IN) ở khối mở rộng port I/O với J34 (SWITCH) ở khối công tắc.
• Dùng dây ba bus 3 nối J107 (POWER) ở khối mở rộng port I/O, J106 (POWER) ở khối công tắc và J103
(POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.

VI ÑIEÀU KHIEÅN
CS573A
POWER
CS8255

CS573B
PORT A

CS245

PORT 0
1

POWER
SW
COÂNG MÔÛ ROÄNG PORT I/O
PORT C

PORT 1
SWITCH POWER

TAÉC

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

8 PORT 3

PORT 1
20 PINS
8

PORT 2

PORT 3
LED DAÕY A0..A7
SELECT
CHIP
CLOCK
OUT
BAR LED 2 POWER BAR LED 1

3
NGUOÀN 3
3
+5V

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển Port I/O, làm cho 8 LED tắt hết và sáng dần liên tục (LED được
nối với DATAOUT B, CS573B được nối với SELCHIP 5).
• Bài 2: Hãy viết chương trình điều khiển Port I/O, làm cho 16 LED sáng hết và tắt dần liên tục (LED được
nối với DATAOUT A và DATAOUT B, CS573A được nối với SELCHIP 4, CS573B được nối với
SELCHIP 5).
• Bài 3: Hãy viết chương trình điều khiển Port I/O, làm cho LED 7 đoạn hiển thị đếm BCD từ 0 lên 9 liên
tục (LED0 được nối với DATAOUT A, CS573A được nối với SELCHIP 6).
• Bài 4: Hãy viết chương trình điều khiển Port I/O, làm cho hai LED 7 đoạn hiển thị đếm BCD từ 00 lên 99
liên tục (LED0 được nối với DATAOUT A, LED1 được nối với DATAOUT B, CS573A được nối với
SELCHIP 6, CS573B được nối với SELCHIP 7).
• Bài 5: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với DATAOUT A, SWITCH được nối với DATAIN, CS573A được nối với SELCHIP 4,
CS245 được nối với SELCHIP 1).
• Bài 6: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị trạng thái hiện tại (LED sáng = nút nhấn, LED tắt = nút nhả) của các nút nhấn này lên LED (LED
được nối với DATAOUT A, PUSH KEY được nối với DATAIN, CS573A được nối với SELCHIP 5,
CS245 được nối với SELCHIP 2).

Giáo trình thực hành vi xử lý. 234 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 2: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED (LED được nối
với DATAOUT A, SWITCH được nối với DATAIN, CS573A được nối với SELCHIP 0, CS245 được nối
với SELCHIP 1). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 7: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED 7 đoạn (LED0 được nối với DATAOUT A, PUSH KEY được
nối với DATAIN, CS573A được nối với SELCHIP 6, CS245 được nối với SELCHIP 3).
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 235 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 3: Chương trình điều khiển Port I/O, làm cho 8 LED đếm lên nhị phân 8 bit (LED được nối với PortA,
CS8255 được nối với SELCHIP 0). Sử dụng cơ chế bộ nhớ ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 1 nối J70 (SELECT CHIP) ở khối vi điều khiển với J88 (CS8255) ở khối mở rộng port I/O
(chú ý là tùy thuộc vào tầm địa chỉ yêu cầu mà ta nối dây bus 1 vào đúng bit tương ứng của J70).
• Dùng dây bus 8 nối J79 (PORT A) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây hai bus 3 nối J107 (POWER) ở khối mở rộng port I/O và J103 (POWER) ở khối dãy LED với
nguồn +5V ở khối nguồn.

CS573A
POWER
CS8255

CS573B
PORT A

CS245

PORT 0
PORT C

PORT 1

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

PORT 3

PORT 1
20 PINS
PORT 2

PORT 3
1

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 236 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 4: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED. Sử dụng cơ
chế bộ nhớ ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 1 nối J70 (SELECT CHIP) ở khối vi điều khiển với J88 (CS8255) ở khối mở rộng port I/O
(chú ý là tùy thuộc vào tầm địa chỉ yêu cầu mà ta nối dây bus 1 vào đúng bit tương ứng của J70).
• Dùng dây bus 8 nối J79 (PORT A) ở khối mở rộng port I/O với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 8 nối J84 (PORT B) ở khối mở rộng port I/O với J34 (MOMENTARY SW) ở khối công
tắc.
• Dùng dây ba bus 3 nối J107 (POWER) ở khối mở rộng port I/O, J106 (POWER) ở khối công tắc và J103
(POWER) ở khối dãy LED với nguồn +5V ở khối nguồn.

CS573A
POWER
CS8255

CS573B
SWITCH POWER

PORT A

CS245

PORT 0
PORT C

PORT 1

40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B

PORT 3

PORT 1
8

20 PINS
PORT 2

PORT 3
1
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển Port I/O, làm cho 8 LED sáng đuổi liên tục (LED được nối với
PortB, CS8255 được nối với SELCHIP 5).
• Bài 2: Hãy viết chương trình điều khiển Port I/O, làm cho 16 LED sáng đuổi liên tục (LED được nối với
PortA và PortB, CS8255 được nối với SELCHIP 4).
• Bài 3: Hãy viết chương trình điều khiển Port I/O, làm cho LED 7 đoạn hiển thị đếm HEX từ F xuống A
liên tục (LED0 được nối với PortA, CS8255 được nối với SELCHIP 6).
• Bài 4: Hãy viết chương trình điều khiển Port I/O, làm cho hai LED 7 đoạn hiển thị đếm HEX từ 00 lên FF
liên tục (LED0 được nối với PortA, LED1 được nối với PortB, CS8255 được nối với SELCHIP 7).
• Bài 5: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với PortA, SWITCH được nối với PortB, CS8255 được nối với SELCHIP 4).
• Bài 6: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị trạng thái hiện tại (LED sáng = nút nhấn, LED tắt = nút nhả) của các nút nhấn này lên LED (LED
được nối với PortA, PUSH KEY được nối với PortB, CS8255 được nối với SELCHIP 5).
• Bài 7: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED 7 đoạn (LED0 được nối với PortA, PUSH KEY được nối với
PortB, CS8255 được nối với SELCHIP 6).
• Bài 8: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED ma trận (COL-RED được nối với PortA, ROW được nối với
PortB, PUSH KEY được nối với PortC, CS8255 được nối với SELCHIP 6).

Giáo trình thực hành vi xử lý. 237 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 4: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED. Sử dụng cơ
chế bộ nhớ ngoài.
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

Giáo trình thực hành vi xử lý. 238 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
N. HỆ THỐNG ĐIỀU KHIỂN ADC.

A. 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 của vi mạch ADC 0809.
• Thực hiện việc biến đổi từ tín hiệu tương tự (Analog) sang tín hiệu số (Digital).

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Tham khảo trước và nắm được hoạt động của vi mạch ADC 0809.

Giáo trình thực hành vi xử lý. 240 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 1: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào (kênh
IN0) lên hai LED 7 đoạn (LED1 và LED0; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ
ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J49 (DIGITAL OUT) ở khối ADC.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J90 (DATA OUT) ở khối mở rộng port I/O với J4 (7SEG IN MUL) ở khối LED 7
đoạn.
• Dùng dây bus 8 nối J85 (DATA OUT) ở khối mở rộng port I/O với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 1 nối J77 (V1) ở khối tạo áp với J48 (ANALOG IN) ở khối ADC (chú ý là ta chỉ nối bit 0
(IN0) của J48 và J77 lại với nhau).
• Dùng dây bus 1 nối J93 (CS573B) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 0 (0000H – 1FFFH) của J70 và J93 lại với nhau).
• Dùng dây bus 1 nối J92 (CS573A) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 1 (2000H – 3FFFH) của J70 và J92 lại với nhau).
• Dùng dây bus 1 nối J60 (CS0809) ở khối ADC với J70 (SELECT CHIP) ở khối vi điều khiển (chú ý là ta
chỉ nối bit 2 (4000H – 5FFFH) của J70 và J60 lại với nhau).
• Dùng bốn dây bus 3 nối D35 (POWER) ở khối tạo áp, D34 (POWER) ở khối ADC, J107 (POWER) ở khối
mở rộng port I/O và J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
PORT 0
1

CS0809 ANALOG
V1 POWER

POWER DIGITAL
IN

PORT 1
TAÏO AÙP

40 PINS
OUT
V2

PORT 3

PORT 1
1

20 PINS
V3

PORT 2

PORT 3
V4

3
8

CS573A
POWER
CS8255

CS573B

1
PORT A

CS245
1
PORT C

DATA OUT
DATA OUT
DATA IN
PORT B

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.


1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.

Giáo trình thực hành vi xử lý. 241 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 1: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào (kênh
IN0) lên hai LED 7 đoạn (LED1 và LED0; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ
ngoài.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 242 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 2: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào (kênh
IN0) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số DEC từ 0 -> 255). Sử dụng cơ chế bộ
nhớ ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 243 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 3: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị điện áp của kênh ngõ vào
(kênh IN0) lên bốn LED 7 đoạn (LED3: hàng đơn vị; LED2, LED1 và LED0: ba số phần thập phân).
Sử dụng cơ chế bộ nhớ ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

Giáo trình thực hành vi xử lý. 244 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J76 (MOMENTARY SW) ở khối nút nhấn với J80 (DATA IN) ở khối mở rộng port
I/O.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J49 (DIGITAL OUT) ở khối ADC.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J90 (DATA OUT) ở khối mở rộng port I/O với J4 (7SEG IN MUL) ở khối LED 7
đoạn.
• Dùng dây bus 8 nối J85 (DATA OUT) ở khối mở rộng port I/O với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 1 nối J77 (V1) ở khối tạo áp với J48 (ANALOG IN) ở khối ADC (chú ý là ta chỉ nối bit 0
(IN0) của J48 và J77 lại với nhau).
• Dùng dây bus 1 nối J78 (V2) ở khối tạo áp với J48 (ANALOG IN) ở khối ADC (chú ý là ta chỉ nối bit 1
(IN1) của J48 và J78 lại với nhau).
• Dùng dây bus 1 nối J93 (CS573B) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 0 (0000H – 1FFFH) của J70 và J93 lại với nhau).
• Dùng dây bus 1 nối J92 (CS573A) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 1 (2000H – 3FFFH) của J70 và J92 lại với nhau).
• Dùng dây bus 1 nối J83 (CS245) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 2 (4000H – 5FFFH) của J70 và J83 lại với nhau).
• Dùng dây bus 1 nối J60 (CS0809) ở khối ADC với J70 (SELECT CHIP) ở khối vi điều khiển (chú ý là ta
chỉ nối bit 4 (6000H – 7FFFH) của J70 và J60 lại với nhau).
• Dùng năm dây bus 3 nối D35 (POWER) ở khối tạo áp, D34 (POWER) ở khối ADC, J114 (POWER) ở
khối nút nhấn, J107 (POWER) ở khối mở rộng port I/O và J110 (POWER) ở khối LED 7 đoạn với nguồn
+5V ở khối nguồn.
VI ÑIEÀU KHIEÅN
PORT 0
1

ADC
1

CS0809 ANALOG
V1 POWER

POWER DIGITAL

POWER
SW
IN

PORT 1
TAÏO AÙP

40 PINS

8
OUT
V2

PORT 3

PORT 1
1

20 PINS
V3

PORT 2

PORT 3
V4

3 NGUOÀN 3 SELECT CLOCK


+5V A0..A7 CHIP OUT
3

3
8

POWER

CS573A
CS8255

CS573B

1
CS245
PORT A

POWER SEL IN2 SEL LED IN SEL IN1

LED 7 ÑOAÏN
7SEG7 IN
MÔÛ ROÄNG PORT I/O
PORT C

7SEG7 IN 7SEG6 IN 7SEG5 IN 7SEG4 IN MUL

NUÙT NHAÁN
MOMENTARY

8 8 8 8 8
DATA OUT

DATA OUT

POWER
DATA IN

8
SW
PORT B

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

Giáo trình thực hành vi xử lý. 245 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh
ngõ vào (IN0 và IN1) lên bốn LED 7 đoạn (LED1 và LED0: kênh IN0; LED4 và LED3: kênh IN1; dưới
dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 2: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của ba kênh
ngõ vào (IN2, IN3 và IN4) lên sáu LED 7 đoạn (LED1 và LED0: kênh IN2; LED4 và LED3: kênh IN3;
LED7 và LED6: kênh IN4; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 3: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh
ngõ vào (kênh IN6, IN7) lên sáu LED 7 đoạn (LED2, LED1 và LED0: kênh IN6; LED7, LED6 và LED5:
kênh IN7; dưới dạng số DEC từ 0 -> 255). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 4: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của tám kênh
ngõ vào (kênh IN0 -> IN7) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 ->
255), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn lần lượt
các nút nhấn KEY0 -> KEY7. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 5: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của tám kênh
ngõ vào (kênh IN0 -> IN7) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 ->
255), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút
KEY0. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 6: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị điện áp của
hai kênh ngõ vào (kênh IN0, IN1) lên bốn LED 7 đoạn (LED3: hàng đơn vị; LED2, LED1 và LED0: ba số
phần thập phân), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách
nhấn nút KEY0. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Quá trình biến đổi A/D được thực hiện qua các bước sau:
o Xác lập địa chỉ chọn kênh ngõ vào (A0, A1, A2).
o Tạo xung START/ALE bằng cách xuất một giá trị bất kỳ ra ngoại vi ADC0809 với địa chỉ ngoại vi
đã chọn (CS: Chip Select).
o Tạo thời gian delay 120 µs.
o Đọc giá trị từ ngoại vi ADC0809 với địa chỉ ngoại vi đã chọn (giá trị này có tầm từ 0 - 255 tùy
theo điện áp ngõ vào từ 0 - 5V ⇒ độ phân giải là 5V/255 = 19,6 mV).
o Đổi giá trị này thành điện áp (tính bằng mV) bằng cách nhân với 19,6 ≈ 20.
o Đổi giá trị này ra mã BCD nén.
o Xuất ra LED 7 đoạn để hiển thị.
Đổi số nhị phân 8 bit thành mã BCD nén (packed BCD):
o Lấy giá trị cần chuyển đổi (0 – 255) chia cho 10 ⇒ Số dư sẽ là mã BCD hàng đơn vị.
o Lấy kết quả (thương số) của phép chia trên chia tiếp cho 10 ⇒ Số dư sẽ là mã BCD hàng chục.
o Kết quả (thương số) của phép chia trên ⇒ Mã BCD hàng trăm.
o Kết hợp mã BCD của hàng chục và hàng đơn vị lại thành mã BCD nén. Còn mã BCD của hàng
trăm thì giữ nguyên.
o Chương trình mẫu:
;***************************************************
;CTC CHUYEN DOI SO BINARY 8 BIT (<= 255) SANG SO BCD.
;***************************************************
;NAME: BIN8TOBCD.
;INPUT: R7 = SO BCD 8 BIT (<= 255).
;OUTPUT: R7,R6 = SO BCD (TRAM - CHUC - DON VI).
;***************************************************
BIN8TOBCD:
PUSH ACC
PUSH B
MOV B,#10

Giáo trình thực hành vi xử lý. 246 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
MOV A,R7
DIV AB ;LAY R7 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
DIV AB ;LAY KET QUA TREN CHIA TIEP CHO 10
MOV R7,A ;R7 = TRAM
MOV A,B ;LAY SO HANG CHUC
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************

Đổi số nhị phân 16 bit thành mã BCD nén:


o Công việc thực hiện tương tự như đối với số nhị phân 8 bit là lần lượt chia giá trị cần chuyển đổi
cho 10. Tuy nhiên, cần phải tạo ra một chương trình con thực hiện việc chia số 16 bit cho 10 (vì giá trị cần đổi
lúc này là số 16 bit).
o Chương trình mẫu:
;***************************************************
;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
;***************************************************
;NAME: BIN16TOBCD.
;INPUT: R7,R6 = SO BCD 16 BIT (<= 9999).
;OUTPUT: R7,R6 = SO BCD (NGAN - TRAM - CHUC - DON VI).
;***************************************************
BIN16TOBCD:
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG CHUC
MOV B,#10
MOV A,R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7,A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
;***************************************************
;NAME: DIV16TO8.
;INPUT: R7,R6: SO BINARY 16 BIT
; B: SO BINARY 8 BIT
;OUTPUT: R7,R6: KET QUA CUA PHEP CHIA
; B: SO DU CUA PHEP CHIA
;***************************************************
DIV16TO8:
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A

Giáo trình thực hành vi xử lý. 247 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
XCH A,R6
CLR C ;DICH BIT 7 CU R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7
RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************

Giáo trình thực hành vi xử lý. 248 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
O. HỆ THỐNG ĐIỀU KHIỂN DAC.

A. 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 của vi mạch DAC 0808.
• Thực hiện việc biến đổi từ tín hiệu số (Digital) sang tín hiệu tương tự (Analog).

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Tham khảo trước và nắm được hoạt động của vi mạch DAC 0808.

Giáo trình thực hành vi xử lý. 250 Biên soạn: Phạm Quang Trí
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 1: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi giá trị lưu trong thanh
ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi liên tục 00H, 40H, 80H, C0H và
FFH, mỗi lần cách nhau 2 giây.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J37 (DIGITAL IN) ở khối DACõ.
• Dùng máy đo VOM để đo điện áp tại J38 (ANALOG OUT) ở khối DAC.
• Dùng dây bus 8 nối J108 (POWER) ở khối DAC với nguồn ±5V, ±12V ở khối nguồn.

VI ÑIEÀU KHIEÅN
ANALOG
POWER

PORT 0
OUT
1

POWER
SW
DIGITAL

PORT 1
DAC 8
IN

40 PINS
PORT 3

PORT 1
20 PINS
VOM
PORT 2

PORT 3
SELECT CLOCK
8 NGUOÀN
A0..A7 CHIP OUT
5V, 12V

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.


1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 251 Biên soạn: Phạm Quang Trí
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi giá trị lưu trong thanh
ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi liên tục từ 00H -> FFH, mỗi lần
cách nhau 2 giây và được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân
từ 0 -> 255).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J65 (PORT2 / A8..A15) ở khối vi điều khiển với J37 (DIGITAL IN) ở khối DACõ.
• Dùng máy đo VOM để đo điện áp tại J38 (ANALOG OUT) ở khối DAC.
• Dùng dây bus 8 nối J108 (POWER) ở khối DAC với nguồn ±5V, ±12V ở khối nguồn.
• Dùng dây bus 8 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.

PORT 0
PORT 1

40 PINS
ANALOG
POWER

PORT 3

PORT 1
20 PINS
OUT
DIGITAL

PORT 2

PORT 3
IN

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)

Giáo trình thực hành vi xử lý. 252 Biên soạn: Phạm Quang Trí
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 3: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện tạo sóng sin có tần số bất kỳ tại
ngõ ra.

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J37 (DIGITAL IN) ở khối DACõ.
• Dùng máy hiện sóng (Oscilloscope) để kiểm tra dạng sóng tại J38 (ANALOG OUT) ở khối DAC.
• Dùng dây bus 8 nối J108 (POWER) ở khối DAC với nguồn ±5V, ±12V ở khối nguồn.

VI ÑIEÀU KHIEÅN

ANALOG
POWER

PORT 0
1

OUT
POWER
SW
DIGITAL

PORT 1
DAC 8
IN

40 PINS
PORT 3

PORT 1
20 PINS
OSC
PORT 2

PORT 3
SELECT CLOCK
8 NGUOÀN
A0..A7 CHIP OUT
5V, 12V

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
tam giác có tần số bất kỳ.
• Bài 2: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
vuông có tần số bất kỳ.
• Bài 3: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện biến đổi
giá trị lưu trong thanh ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi theo việc nhấn nút
KEY0 hoặc KEY1 (KEY0: tăng giá trị, KEY1: giãm giá trị) từ 00H -> FFH và được hiển thị lên ba LED 7
đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).
• Bài 4: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
sin có tần số thay đổi trong một khoảng tần số tự chọn tùy theo việc nhấn nút KEY0 hoặc KEY1 (KEY0:
tăng tần số, KEY1: giãm tần số ) và được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng
số thập phân từ 0 -> 255)..
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Phần tạo sóng sin:
o Tạo một bảng dữ liệu gồm 128 bytes là giá trị của 128 mẫu có được từ hình sin, đỉnh cao nhất của
hình sin có giá trị là 255 (FFH), đỉnh thấp nhất của hình sin có giá trị là 0 (00H). Do đó trục của hình sin có
giá trị là 127,5 (80H hay 7FH).
 x × 360 O 
o Giá trị của mẫu thứ x là: sin   × 127,5 + 127,5
 128 
o Liên tục xuất bảng giá trị này ra vi mạch DAC0808, thay đổi thời gian delay giữa các lần xuất sẽ
tạo ra các tần số khác nhau.

Giáo trình thực hành vi xử lý. 253 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
P. HỆ THỐNG ĐIỀU KHIỂN ĐO NHIỆT ĐỘ.

A. 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 và sử dụng cảm biến nhiệt LM335.
• Minh họa ứng dụng của hệ thống vi điều khiển vào công việc đo lường, hiển thị và điều khiển.

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Tham khảo trước nguyên lý hoạt động của các dạng mạch khuếch đại dùng Op-Amp và cảm biến nhiệt
LM335

Giáo trình thực hành vi xử lý. 255 Biên soạn: Phạm Quang Trí
P. HỆ THỐNG ĐIỀU KHIỂN ĐO NHIỆT ĐỘ.
Bài tập: Chương trình đo nhiệt độ và hiển thị giá trị lên bốn LED 7 đoạn (một LED hiển thị phần thập phân).

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J49 (DIGITAL OUT) ở khối ADC.
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7
đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng).
• Dùng dây bus 8 nối J90 (DATA OUT) ở khối mở rộng port I/O với J4 (7SEG IN MUL) ở khối LED 7
đoạn.
• Dùng dây bus 8 nối J85 (DATA OUT) ở khối mở rộng port I/O với J2 (SEL LED IN) ở khối LED 7 đoạn.
• Dùng dây bus 1 nối J89 (V OUT) ở khối cảm biến nhiệt với J48 (ANALOG IN) ở khối ADC (chú ý là ta
chỉ nối bit 0 (IN0) của J48 và J89 lại với nhau).
• Dùng dây bus 1 nối J93 (CS573B) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 0 (0000H – 1FFFH) của J70 và J93 lại với nhau).
• Dùng dây bus 1 nối J92 (CS573A) ở khối mở rộng port I/O với J70 (SELECT CHIP) ở khối vi điều khiển
(chú ý là ta chỉ nối bit 1 (2000H – 3FFFH) của J70 và J92 lại với nhau).
• Dùng dây bus 1 nối J60 (CS0809) ở khối ADC với J70 (SELECT CHIP) ở khối vi điều khiển (chú ý là ta
chỉ nối bit 2 (4000H – 5FFFH) của J70 và J60 lại với nhau).
• Dùng ba dây bus 3 nối D34 (POWER) ở khối ADC, J107 (POWER) ở khối mở rộng port I/O và J110
(POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
• Dùng dây bus 4 nối J35 (POWER) ở khối cảm biến nhiệt với nguồn ±5V ở khối nguồn.

VI ÑIEÀU KHIEÅN
PORT 0

ADC
1

CAÛM
CS0809 ANALOG

POWER DIGITAL

POWER
V IN POWER V IN
2

SW
BIEÁN
IN

PORT 1

NHIEÄT
1

40 PINS

8
OUT

PORT 3

PORT 1
1

20 PINS
1

V OUT
LM335

PORT 2

PORT 3

NGUOÀN 3 SELECT CLOCK


+5V A0..A7 CHIP OUT
4 NGUOÀN
3

5V
8

CS573A
POWER
CS8255

CS573B

1
PORT A

CS245
1

POWER SEL IN2 SEL LED IN SEL IN1

LED 7 ÑOAÏN
7SEG7 IN
MÔÛ ROÄNG PORT I/O
PORT C

7SEG7 IN 7SEG6 IN 7SEG5 IN 7SEG4 IN MUL

8 8 8 8 8
DATA OUT
DATA OUT
DATA IN
PORT B

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.


1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.

Giáo trình thực hành vi xử lý. 256 Biên soạn: Phạm Quang Trí
P. HỆ THỐNG ĐIỀU KHIỂN ĐO NHIỆT ĐỘ.
Bài tập: Chương trình đo nhiệt độ và hiển thị giá trị lên bốn LED 7 đoạn (một LED hiển thị phần thập phân).
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển đo nhiệt độ và hiển thị lên bốn LED 7 đoạn (một LED hiển thị
phần thập phân) với những yêu cầu sau:
o Cho biết trước nhiệt độ là 50OC.
o Đo nhiệt độ hiện tại.
o Nếu nhiệt độ đo được nhỏ hơn nhiệt độ đặt thì kích đóng RELAY 1.
o Nếu nhiệt độ đo được lớn hơn nhiệt độ đặt thì kích ngắt RELAY 1.
• Bài 2: Hãy viết chương trình điều khiển đo nhiệt độ và hiển thị lên bốn LED 7 đoạn (một LED hiển thị
phần thập phân) với những yêu cầu sau:
o Cho phép đặt trước nhiệt độ là (10OC - 50OC) bằng các nút nhấn KEY0 (tăng nhiệt độ) và KEY1
(giãm nhiệt độ).
o Đo nhiệt độ hiện tại.
o Nếu nhiệt độ đo được nhỏ hơn nhiệt độ đặt thì kích đóng RELAY 1.
o Nếu nhiệt độ đo được lớn hơn nhiệt độ đặt thì kích ngắt RELAY 1.
• Bài 3: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Cân chỉnh khối cảm biến nhiệt:
o Chỉnh biến trở R137 sao cho V1 = 2,73 + 0,01 x tOC (V). Trong thực tế để chính xác thì ta nhúng
LM335 vào nước đá đang tan (0OC).
o Chỉnh biến trở R133 sao cho V2 = 2,73 V.
Đo nhiệt độ với độ phân giải 0,5OC:
o Nhiệt độ sau khi qua khối cảm biến nhiệt sẽ tạo ra một điện áp tại J93 (V OUT) có giá trị là VOUT
= 39 * tOC (mV).
o Với độ phân giải của ADC0809 là 19,6 mV thì điện áp trên sau khi qua ADC0809 sẽ có giá trị là
39 * tOC / 19,6 ≈ 2 * tOC.
o Để hiển thị giá trị nhiệt độ lên LED 7 đoạn với một số phần thập phân thì giá trị hiển thị sẽ phải là
10 * t. Do đó, giá trị thu được sau khi biến đổi A/D sẽ được nhân với 5 rồi biến đổi qua mã BCD nén → hiển
thị lên LED 7 đoạn.

Giáo trình thực hành vi xử lý. 257 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
Q. HỆ THỐNG ĐIỀU KHIỂN MOTOR DC.

A. 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.
• Tìm hiểu nguyên lý hoạt động của các loại động cơ DC công suất nhỏ.
• Tìm hiểu nguyên lý điều khiển động cơ DC bằng vi điều khiển và ứng dụng lập trình để điều khiển hoạt
động cho các động cơ DC này.

B. 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 động cơ quay thuận/ngược, thay đổi tốc độ quay, ….
• Nắm được sơ đồ và nguyên lý hoạt động của khối động cơ DC trên mô hình thí nghiệm.
• Nắm được nguyên lý hoạt động và nguyên lý điều khiển động cơ DC.
• Biết cách viết các chương trình ứng dụng điều khiển động cơ DC hoạt động theo các chế độ khác nhau.

Giáo trình thực hành vi xử lý. 259 Biên soạn: Phạm Quang Trí
Q. HỆ THỐNG ĐIỀU KHIỂN MOTOR DC.
Bài tập: Chương trình

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.


1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển
• Bài 2: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
:
o

Giáo trình thực hành vi xử lý. 260 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
R. HỆ THỐNG ĐIỀU KHIỂN SERIAL EEPROM.

A. 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.
• Tìm hiểu nguyên lý lưu trữ thông tin và phương pháp ghi/đọc dữ liệu từ một số bộ nhớ Serial EEPROM
thông dụng của hãng Atmel: 24C01, 24C04, ...
• Điều khiển việc ghi/đọc dữ liệu giữa vi điều khiển với bộ nhớ Serial EEPROM.

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Nắm được nguyên lý lưu trữ thông tin và phương pháp ghi/đọc dữ liệu từ bộ nhớ Serial EEPROM.
• Biết cách lập trình và điều khiển việc ghi/đọc dữ liệu giữa vi điều khiển với bộ nhớ Serial EEPROM.

Giáo trình thực hành vi xử lý. 262 Biên soạn: Phạm Quang Trí
R. HỆ THỐNG ĐIỀU KHIỂN SERIAL EEPROM.
Bài tập: Chương trình

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.


1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển
• Bài 2: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
:
o

Giáo trình thực hành vi xử lý. 263 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TÀI LIỆU HƯỚNG DẪN


THÍ NGHIỆM - THỰC HÀNH
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).

A. 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 và sử dụng các loại RTC (đồng hồ thời gian thực) thông dụng trên thực tế.
• Tìm hiểu nguyên lý hoạt động một số thiết bị điều khiển ứng dụng RTC giao tiếp với vi điều khiển.

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.


• Tham khảo trước nguyên lý hoạt động của các RTC thông dụng như: PCF8583, DS1307, … (Serial RTC)
và DS12887 (Parallel RTC).
• Thiết kế một số thiết bị điều khiển ứng dụng RTC giao tiếp với vi điều khiển.

Giáo trình thực hành vi xử lý. 265 Biên soạn: Phạm Quang Trí
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài tập: Chương trình

1 Trình tự tiến hành thí nghiệm:


1.1 Kết nối thiết bị thí nghiệm.

1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

1.3 Lưu chương trình và biên dịch chương trình.


1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển
• Bài 2: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
:
o

Giáo trình thực hành vi xử lý. 266 Biên soạn: Phạm Quang Trí

You might also like