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:
em sao?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
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).
Giáo trình thực hành vi xử lý. 115 Biên soạn: Phạm Quang Trí
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
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).
Giáo trình thực hành vi xử lý. 116 Biên soạn: Phạm Quang Trí
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
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).
Giáo trình thực hành vi xử lý. 117 Biên soạn: Phạm Quang Trí
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)
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).
Giáo trình thực hành vi xử lý. 118 Biên soạn: Phạm Quang Trí
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
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).
Giáo trình thực hành vi xử lý. 119 Biên soạn: Phạm Quang Trí
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.
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).
Giáo trình thực hành vi xử lý. 120 Biên soạn: Phạm Quang Trí
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)
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).
Giáo trình thực hành vi xử lý. 121 Biên soạn: Phạm Quang Trí
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
;***************************************************
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).
Giáo trình thực hành vi xử lý. 122 Biên soạn: Phạm Quang Trí
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.
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).
Giáo trình thực hành vi xử lý. 123 Biên soạn: Phạm Quang Trí
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.
LED 7 ÑOAÏN
7SEG7 IN
SEL IN2POWER SEL IN1
7SEG6 IN 7SEG5 IN 7SEG4 IN
7SEG7 IN
MUL
SEL LED IN VI ÑIEÀU KHIEÅN
P
O
R
T
0
A0..A7
P
O
R
T
1
P
O
R
T
3
P
O
R
T
2
SELECT
CHIP
CLOCK
OUT
P
O
R
T
1
P
O
R
T
3
40
P
IN
S
20
P
IN
S
POWER
SW
NGUOÀN
+5V
3
8
GIAÛI MAÕ
B
C
D
I
N
1-
2
P
O
W
E
R
7
SE
G
O
U
T
1
7
SE
G
O
U
T
2 B
C
D
I
N
3-
4
7
SE
G
O
U
T
3
7
SE
G
O
U
T
4
D
E
C
.
2-
4
D
E
C
.
3-
8
D
E
C
. O
U
T
D
E
C
.
2-4
D
E
C
.
O
U
T
D
E
C
.
O
U
T
3
8
8
3
8 8 8 8
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
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).
Giáo trình thực hành vi xử lý. 124 Biên soạn: Phạm Quang Trí
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)
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).
Giáo trình thực hành vi xử lý. 125 Biên soạn: Phạm Quang Trí
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).
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).
Giáo trình thực hành vi xử lý. 126 Biên soạn: Phạm Quang Trí
; 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.
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).
Giáo trình thực hành vi xử lý. 127 Biên soạn: Phạm Quang Trí
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)õ.