276

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬmientayvn.com/Dien tu/Tai_lieu/Dien_dan/Vi_dieu_khien_vi_xu_li/giao... · • Bài 2: Chương trình điều khiển hiển thị

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

BBIIÊÊNN SSOOẠẠNN:: PPHHẠẠMM QQUUAANNGG TTRRÍÍ

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

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí

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.

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí

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ý:

D0

R1111K2

A12

P1.1

VPP

D395V6

C481000u

VDD

D5

R1173K3

D1

D3

R109100/2W

D4

VCC

VPC 5V/6.5V

A9

P1.7

D42

1N4007

P1.7

R10810K

A12

P1.2

VPP 5V/6.5V

D6

R1204K7

D355V6

D4

Y311.0592MHz

P1.7

A5 D5

P1.0

A13

SW18POWER SW

VDD

U35 7457323456789

111

1918171615141312

1020

D0D1D2D3D4D5D6D7

LEOE

Q0Q1Q2Q3Q4Q5Q6Q7

GNDVCC

Q23C1815

VPC ON/OFF

VCC

D2

VCC

D2

A8

VCC

P1.6

VCC

P1.2

VPCA9

A13

C41104

D6

R1214K7

D36

1N4007

D1

A10

R12222/2W

15. KHOÁI LAÄP TRÌNH VI ÑIEÀU KHIEÅN

A7

D4P1.6

A6

R116100/2W

D3D3

VCC

D3

R11510K

D431N4007

R1231K2

D7

D37

1N4007

U36 SLAVE 40PIN

2930

4020

31

19

18

9

3938373635343332

12345678

212223242526

2728

10

11121314151617

PSENALE

VCCGND

EA

X1

X2

RST

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13

P2.6/A14P2.7/A15

P3.0/RXD

P3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

VCC

Q19C1815

P1.3

VCC

C4433p

VPP

A4

P1.6

Q24C1815

R1121K2

A14

A8

P1.3

C50100u

D4

P1.5

A11

C51104

C49100u

A3

C45104

D1

D346V7

D0A1

P3.7

R1103K3

D6

R1181K2

VPP ON/OFF

VCC

VCC

P1.1

VCC

VPP

D2

R107 10K

1 2 3 4 5 6 7 8 9

A2

P1.5

A10

P1.2

D7

D3813V

U33MAX232

1 3

4 5

16

15

26

12

9

11

10

13

8

14

7

C1+

C1-

C2+

C2-

VCC

GND

V+

V-

R1OUT

R2OUT

T1IN

T2IN

R1IN

R2IN

T1OUT

T2OUT

D1

R1134K7

C3510u

D0

D2

P1.0

VCC

A0

P1.4

VPC

D5

P1.5

C46104

VCC

A14

P3.7Q20C1815

VCCVDD

D7D6

P1.1

U34 89C52

2930

4020

31

19

18

9

3938373635343332

12345678

2122232425262728

10111213141516

17

PSENALE

VCCGND

EA

X1

X2

RST

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WR

P3.7/RD

VCC

C4333p

C4210u VPC

C38104

P3

TO PC

594837261

A11

C37104

Q21C1815

P1.4

R1191K2

J90ADC 16V

1

2

C47104

C4010u

D7

R1144K7

D40

1N4007

D0

C3610u

U37 SLAVE 20PIN1213141516171819

45

20101

236789

11

P1.0/AIN0P1.1/AIN1P1.2P1.3P1.4P1.5P1.6P1.7

X2X1

VCCGNDRST/VPP

P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1

P3.7

D41LED

C3910u

U38 78051 3

2

VIN VOUT

GND

D5

P1.4

Q22C1815

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí

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

• Sơ đồ nguyên lý:

U24B 7439313

12

111098

7

CLK

CLR

QAQBQCQDG

ND

A14

D5

COM

P1.6

DATA BUS

J39

PORT 2

12345678

C20104

12 MHz

P2.7

CLK12

T0

C1910u

P0.7

P1.0

P3.5

VCC

VCC

D5

LOW ADDRESS BUS9. KHOÁI VI ÑIEÀU KHIEÅN

D4

C2333p

D2

8000H - 9FFFH

C13104

U24A 743931

2

3456

14

CLK

CLR

QAQBQCQD

VCC

R99100

0000H - 1FFFH

P3.3

P1.3

D2

J36

INT/EXT

123

Y112MHz

P3.0

T1

A1P1.2

P1.0

D4C2210u

A1

6000H - 7FFFH

A3P3.3

P3.2

A13

P1.3P1.4

VCC

D1A2

RST

A10

A7

C17104

VCC

WR

P1.2

P1.7

P0.5

J38

PORT 1

12345678

VCC

A9

P1.5

RD

C16104

SW33POWER SW

D0

P1.7

D4

D6

D241N4148

U19 SOCKET 40PIN

2930

402031

1918

9

3938373635343332

12345678

2122232425262728

1011121314151617

PSENALE

VCCGNDEA

X1X2

RST

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

P1.0/T2P1.1/T2EXP1.2/ECIP1.3/CEX0P1.4/CEX1P1.5/CEX2P1.6/CEX3P1.7/CEX4

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD

188 KHz

VCC

A12

D6

J37

PORT 0

12345678

R1351K2

RXD

A3P0.2

D1

P0.6

WR

RD

P1.6

J44

PORT 3

12345678

A15

P1.1

T0

RXD

A14

P2.2

P3.5WR

A5

D7

P1.6

TXD

A11

P2.3

1.5 MHz

INT1

D231N4148

R1008K2

D46

LED

A9

P3.6

P3.2

P1.4

VCC

INT

P2.6

D7

P1.5

VCC

T1

INT0

A13

A6

U25 SOCKET 20PIN1213141516171819

45

20101

236789

11

P1.0/AIN0P1.1/AIN1P1.2P1.3P1.4P1.5P1.6P1.7

X2X1

VCCGNDRST/VPP

P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1

P3.7

VCC

D0

TXD

P1.2

C14104

HIGH ADDRESS BUS

P2.1

P3.7RD

P1.5

VCC

D6

D5

P2.5

INT1

J41

A0-A7 BUS

12345678

D3

R981K

2000H - 3FFFH

C12104

P2.0

P1.5

RST

P1.4

R1018K2

P2.4

VCC

A14

C1833p

INT0

A8

C15104

P1.2

U20 7457323456789

111

1918171615141312

1020

D0D1D2D3D4D5D6D7

LEOE

Q0Q1Q2Q3Q4Q5Q6Q7

GNDVCC

J40

PORT 3

12345678

A0

6264

P1.7

P1.1

CLK750

P3.4

Y212MHz

VCC

A13

D3

D251N4148

P0.1

J42

CLOCK OUT

12345678

P1.1

J901ADC 5V

1

2

P1.4

6 MHz

P3.1

3 MHz

D1

BT13V6

J35

SELECT CHIP

12345678

A2

P1.3

P1.3

VCC

P0.0

CLK12

A11

A7

EXT

P3.0

VCC

D2

6264

D3

375 KHz750 KHz

P1.0

A4

P1.0

4000H - 5FFFH

VCC

A5

P1.6

A15

P3.4

A8

D7

P0.4

P1.7

A0

A6

VCC

U22 6264109876543252421232

1112131516171819

2814

22272026

A0A1A2A3A4A5A6A7A8A9A10A11A12

D0D1D2D3D4D5D6D7

VCCGND

OEWECS1CS2

A10

C2433p

A15

E000H - FFFFH

P3.1

94 KHz

VCC

R1028K2

C2133p

P0.3

U23 74138123

15141312111097

168

645

ABC

Y0Y1Y2Y3Y4Y5Y6Y7

VCCGND

G1G2AG2BA4

J43

PORT 1

12345678

SW17RESET

U21 2764109876543

252421232

1112131516171819

2814

22

271

20

A0A1A2A3A4A5A6A7A8A9A10A11A12

O0O1O2O3O4O5O6O7

VCCGND

OE

PGMVPP

CE

CLK12

P1.1

VCC

P3.7

A000H - BFFFH

D0

R97 10K123456789

C000H - DFFFH

A12

J34

CS6264

12

P3.6

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí

• Ứ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ý:

D5LED

D13LED

R75 330

LED4

+5V

R64 330

1. KHOÁI DAÕY LED

R51 330

D15LED

D16LED

VCC

LED5

GND

D12LED

D14LED

D7LED

VCC

D10LED

GND

R77 330

LED3

R72 330

D8LED

D4LED

D1LED

R82 330

LED6

R52 330

R78 330

LED4

LED0

D3LED

R81 330

R49 330

LED5

LED2

LED7

D2LED

LED6

LED1

D9LED

J9

BARLED

12345678

R56 330

LED3

R76 330

R55 330

R50 330

LED7

D6LED

J103

POWER

123

R63 330

LED1

D11LED

LED0

J10

BARLED

12345678

R71 330

VCC

LED2

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí

• 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ý:

J2

SEL IN1

1234 Q1

A1015

SEL0

G

G

J110

POWER

123

U6LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

G

R42

330

Q7

F

D

Q5

R45

330

D

A

R22

330

D

A

C

Q6

DP

D

Q2

R42K2

SEL3

R12K2

+5V

R13 330

R28

330

U3LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

G

Q2

J4

7SEG IN MUL

12345678

Q8A1015

VCC

R33

330

SEL2

VCC

R12 330

J57SEG7 IN

1 2 3 4 5 6 7 8

J1

SEL LED IN

12345678

U5LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

R14 330

GND E

Q0

R36

330

R17

330

A

DP

R32

330

DP

Q2A1015

SEL0

CR38

330

2. KHOÁI LED 7 ÑOAÏN

D

R24

330

R41

330

D

Q5

E

D E

Q3

D

SEL5

G

VCC

R44

330

E D

SEL6

F

Q4

G

VCC

R11 330

U7LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

F F

DPR29

330

A

SEL7

G

Q7A1015

DP

DP

Q2

F

R20

330

R22K2

R25

330

Q3A1015

B E

R37

330

SEL1

A

R62K2

BR31

330

Q1

Q6A1015

DP

F

VCC

R34

330

VCC

Q6

B

GND

Q6

Q3

C E

Q0

U8LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

Q1

GR23

330

Q5A1015

B

R43

330

R30

330

C

Q4

FR48

330

SEL4

R35

330

R32K2

SEL4

DP

Q1

F

R10 330

E

C

C CR40

330

SEL7

C

Q7

J87SEG4 IN

1 2 3 4 5 6 7 8

R15 330

J77SEG5 IN

1 2 3 4 5 6 7 8

R16 330

Q4A1015

SEL5

C

VCC

Q5

R27

330

DP

G

BR21

330

B

SEL6

VCC

R47

330

R39

330

Q3

R18

330

SEL3

B

DP A

R9 330

E

U2LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

Q4

SEL1

B

A

E

C

R46

330

U1LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

F

Q7

B

G

R82K2

R19

330

R72K2

J3

SEL IN1

1234

R26

330

J67SEG6 IN

1 2 3 4 5 6 7 8

SEL2

VCC

F

E

A

U4LED7

8 3

7 6 4 2 91 105

CA

CA

A B C D FE G DP

B A

R52K2

Q0

A

D

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 15 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 16 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 17 Biên soạn: Phạm Quang Trí

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.

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 18 Biên soạn: Phạm Quang Trí

1.2.5 Khối LED ma trận:

• Sơ đồ nguyên lý:

R85 330

R80 330

C2C1C0

R67 10C4

Q13A1015

C6C5

R74 10

Q15A1015

R88 330

Q16A1015

C5

C7R73 10

Q9A1015

VCC

R59 10

Q14A1015

R61 10

R68 10

+5V

Q10A1015

J12

COL GREEN MATRIX

12345678

R66 10

GND

R54 10U9 MATRIXLED

221916133 6 9 12

21181514710

242320171425811

R0

R1

R2

R3

R4

R5

R6

R7

C1GC2GC3GC4GC5GC6GC7G

C0GC0RC1RC2RC3RC4RC5RC6RC7R

C3

R86 330

R70 10

VCC

R5

R2

R87 330

R1

Q12A1015

R84 330

C2

R83 330

3. KHOÁI LED MA TRAÄN

R3

GND

C3

R7

J13

ROW MATRIX

12345678

R69 10

R6

Q11A1015

C7

C4

R79 330

J11

COL RED MATRIX

12345678

R53 10R57 10

R4

R58 10

R62 10

C6

R65 10

J116

POWER

123

R0

C0C1

R60 10

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 19 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 20 Biên soạn: Phạm Quang Trí

1.2.6 Khối LCD:

• Sơ đồ nguyên lý:

VCC

D1

J128

CTRL LCD

123

R14910K

ENA

25. KHOÁI LCD

BL

Q25C1815

D4

D0

RS D2

R/W

LCD16 Characters x 2 Lines

U57 TC1602A

1 2 3 4 5 6 7 8 9 1011121314

1516

GND

VCC

VEE

RS

R/W

E D0

D1

D2

D3

D4

D5

D6

D7

LED+

LED-

D3

CONTRAST

BLJ104

POWER

123GND

J127

DATA LCD

12345678

R1482K7

D6

VCC

+5V

D7

J121BACKLIGHT

1 2

D5

VCC

GND

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 21 Biên soạn: Phạm Quang Trí

Để đ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ý:

SW27

SWITCH

20. KHOÁI COÂNG TAÉC

SW0

SW2SW3

SW5SW6

VCC

SW1

VCCJ106

POWER

123GND

SW4

SW7

+5V

R147 10K

1 2 3 4 5 6 7 8 9

GND

J122

SWITCH

12345678

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 22 Biên soạn: Phạm Quang Trí

• 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ý:

SW19KEY0

GNDSW26KEY7

K0VCC

KEY4

K7

+5V

R1284K7

GND

K4

SW21KEY2

R1324K7

VCC

K2

16. KHOÁI NUÙT NHAÁNJ91

PUSH KEY

12345678

K1

VCC

VCC

K5

R1314K7

KEY0

J114

POWER

123

K0

K6

KEY1

K4

VCC

R1294K7

KEY7

VCC

SW22KEY3

SW24KEY5

VCCK1

K2

K7

R1254K7

SW23KEY4

SW25KEY6

KEY2

K3

KEY6

R1274K7

KEY5

SW20KEY1

VCC

R1264K7

K6

VCC

K3

K5

R1304K7 KEY3

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 23 Biên soạn: Phạm Quang Trí

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ý:

R3

R1

SW3 3

C3

R1

SW10 8

R1SW6 5

R0

R0R2

SW14 0

C0

SW13

ESC

R2

C25. KHOÁI PHÍM MA TRAÄN

C2C1

SW7 6

SW11 9

SW15

ENTER

R2

C3

R0

C2

J18

KEYPAD

12345678

C0C0 C1

SW12 F3

SW5 4

SW9 7C1

R1

R3

SW8 F2

R3

C3

SW4 F1

R2

C3

R3

SW16 F4

R0

SW1 1

C0

SW2 2J15

KEYBOARD

12345678

C1

C2

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 24 Biên soạn: Phạm Quang Trí

• 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ý:

NC12

COM11

R922K2

NO21NO11

LS1RELAY 5V

34

5

68

712

COM21

R91330

NO12

VCC

NC22

NO22NO12

GND

R89330

NO11

COM21

VCCVCC

COM12

R902K2

6. KHOÁI RELAYCOM12

NC11

GND

Q18C1815

+5V

J27

RELAY 1 OUT

12345678

D19LED

D181N4148

NO21

NC11

+5V

NC22

+5V

COM12

J26

RELAY 2 OUT

12345678

NO12

LS2RELAY 5V

34

5

68

712

NO21

NC12

COM22

VCC

GND

NC11

NC22

J111

POWER

123

COM11

COM22

REL1

GND

COM21

Q17C1815

COM22

NO11

D17LED

NO22

NO22

COM11

VCC

NC21

REL1

NC21

NC12

D201N4148

NC21

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 25 Biên soạn: Phạm Quang Trí

• 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ý:

U18 LM5553

481

526

7OUT

RSTVCCGND

CVTRGTHR

DSCHG

VCC

PULSE

+5V

PULSE

GND

C1010u

J113

POWER

123GND

R951K

J33

PULSE OUT

12

D221N4148

7. KHOÁI TAÏO XUNG

VCC

VCC

C9104

C7103

R96100K

C11103

R941KD21

1N4148

R93100K

VCC

VCC

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 26 Biên soạn: Phạm Quang Trí

• 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ý:

GND R104100K J46

V OUT 2

12

R106100K

11. KHOÁI TAÏO AÙP

J48

V OUT 4

12

J47

V OUT 3

12

VCCVCC VCC

GND

R103100K

VCC

VCC

+5V

R105100KJ45

V OUT 1

12

D35

POWER

123

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 27 Biên soạn: Phạm Quang Trí

• 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ý:

GND

D7D6

A

J31CTRL MOTOR

12345678

DC

J32STEPPER2

1234

A

+5V

VCC

B

8. KHOÁI MOTOR BUOC

DCB

U17 ULN2803

10 9

12345678

1817161514131211

COM GND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

GND

J30STEPPER 11234

D4D5

C8104

D2

VCCD1D0

J105POWER

1 2 3

D3

• 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).

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 28 Biên soạn: Phạm Quang Trí

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ý:

A0

VCC

J112

POWER

123

A1

GND+5V

VCC

A2

J49

ADDR EEPROM

123

SDA

J50

CTRL EEPROM

123

10. KHOÁI SERIAL EEPROM

WPSCL

U27 AT24C04123

4

5

6

78

A0A1A2

GND

SDA

SCL

WPVCC

C25104

GND

VCC

• 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).

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 29 Biên soạn: Phạm Quang Trí

• Ứ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ý:

R15139K

C55104

R13410K

J135

POWER

1234

-VCC

C54104

VCC

J96

V1

12

R13610K

-VCC

VCC

R13720K

-

+

U43OP07

3

26

74 8

1

-

+

U40OP07

3

26

74 8

1

-

+

U39OP07

3

26

74 8

1

VCC

D44LM335

C53104

-VCC

V1V1

VCC

R13539K

V2

VCC

R13320K

VCC

V2

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

C5610u

J92

V2

12

-VCC

R124 39K

VCC

C5210u

J93

V OUT

12

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 30 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 31 Biên soạn: Phạm Quang Trí

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

• Sơ đồ nguyên lý:

GND

IN6

OUT3

U32 ULN2803

10 9

12345678

1817161514131211

COM GND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

J78INPUT 4

12345678

OUT4

OUT0

OUT4IN5

C32104

IN7

IN7

OUT7

OUT5

U30 ULN2803

10 9

12345678

1817161514131211

COM GND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

IN1IN2

IN4

IN2

+5V

OUT0

IN1

OUT3

OUT7

IN0

IN4

J68INPUT 3

12345678

IN6

+5V

OUT0

IN5

IN3

OUT1

IN7

IN6

OUT1

U31 ULN2803

10 9

12345678

1817161514131211

COM GND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

IN2

C29104

OUT1

IN3

IN3

+5V

OUT4

OUT0

IN2

OUT6

VCC

OUT3

IN1

OUT7

OUT2

J79OUTPUT 412345678

IN0

IN5IN5

IN0

J69OUTPUT 312345678

OUT5

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

IN1

C33104

OUT1

J53INPUT 1

12345678

IN3

J54OUTPUT 112345678

IN4OUT3

OUT6

IN0

OUT5

J61INPUT 2

12345678

OUT4IN4

OUT2

+5V

+5V

U28 ULN2803

10 9

12345678

1817161514131211

COM GND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

OUT6

OUT7

IN6OUT5

C34104

J62OUTPUT 212345678

OUT2

IN7

J109

POWER

123GND

OUT2

OUT6

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 32 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 33 Biên soạn: Phạm Quang Trí

1.2.17 Khối giải mã:

• Sơ đồ nguyên lý:

D

J28

DECODER 2-4

12

B

F

B

SEL6

SEL B

SEL2

SEL A

4. KHOÁI GIAÛI MAÕ

E

U15A 7413923

1

4567

16

8

AB

G

Y0Y1Y2Y3

VCC

GND

SEL1

J36

POWER

123

C5104

VCC

U13 74477126

4

53

1312111091514

168

D0D1D2D3

BI/RBO

RBILT

ABCDEFG

VCCGND

C

C1104

SEL3

CB

VCC

DP

VCC

U14 74138123

15141312111097

168

645

ABC

Y0Y1Y2Y3Y4Y5Y6Y7

VCCGND

G1G2AG2B

DP

C

J17

7SEG OUT 2

12345678

G

SEL0

VCC

D

BA

SEL2

D

SEL C

GVCC

SEL1

SEL A

J21

7SEG OUT 4

12345678

SEL0

SEL3

J19

7SEG OUT 3

12345678J20

BCD IN 3-4

12345678

SEL5

F

J14

7SEG OUT 1

12345678

U11 74477126

4

53

1312111091514

168

D0D1D2D3

BI/RBO

RBILT

ABCDEFG

VCCGND

SEL A

D

VCC

DP

VCC

VCC

C

F

VCC

SEL2

GND

C

C

A

SEL B

VCC

J24

DECODER 2-4

12

C

E

CD

VCCVCC

SEL1

C3104

U12 74477126

4

53

1312111091514

168

D0D1D2D3

BI/RBO

RBILT

ABCDEFG

VCCGND

A

U15B 741391413

15

1211109

AB

G

Y0Y1Y2Y3

SEL B

D

D

J16

BCD IN 1-2

12345678

A

A

C2104

SEL0

D

G

VCC

C4104

U10 74477126

4

53

1312111091514

168

D0D1D2D3

BI/RBO

RBILT

ABCDEFG

VCCGND

B

G

B

+5V

A

VCC

DP

GND

SEL3

E

J25

DECODER OUT

1234

VCC

J29

DECODER OUT

1234

SEL7

B

F

E

C6104

J22

DECODER 3-8

123

AA

J23

DECODER OUT

12345678

B

SEL4

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

Chương 1: Cấu hình của mô hình thí nghiệm 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í

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 35 Biên soạn: Phạm Quang Trí

1.2.18 Khối ADC:

• Sơ đồ nguyên lý:

CS0809

IN1

GND

U54A7402

2

31

14

7

IN4IN3

A0

U52 ADC0809

10

97

171415818192021

622

1113

1216

26272812345

252423

CLK

OEEOC

D0D1D2D3D4D5D6D7

STARTALE

VCCGND

REF+REF-

IN0IN1IN2IN3IN4IN5IN6IN7

A0A1A2

C66104

J118

CS0809

12

GND

WR

IN5

D0

+5V

A1

CS0809

VCC

U54B7402

5

64

D6

CLK750K

VCC

22. KHOÁI ADC J113

DIGITAL OUT

12345678

D5

VCC

D34

POWER

123

D7

C65104

D2

RD

VCC

D4

IN0D1

IN6

A2

IN7

J112ANALOG IN

12345678

IN2

VCC

D3

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 36 Biên soạn: Phạm Quang Trí

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ý:

R1462K7

U55 DAC080812111098765

14

15

2

4

16

3

13

A8A7A6A5A4A3A2A1

VR+

VR-

/IOUT

IOUT

COMP

V-

V+

VCC

J120

ANALOG OUT

12

D455V1

C74104

R14210K

-

+

U56LM741

3

26

7 14 5

D3

ANALOG

+12V

C7110u

D4

21. KHOÁI DAC

-VCC

R1412K7

R1432K7

D1

D6

C70104

R1502K7

D0

D5

C73104

D7

R14510K

D2

+12V

R1442K7

J119DIGITAL IN

12345678

C72104

ANALOG

-12V

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 37 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 38 Biên soạn: Phạm Quang Trí

1.2.20 Khối RTC:

• Sơ đồ nguyên lý:

J147

POWER

123

J108

CS RTC

12

WR

RTC

RD AD1

RST

J104READ/WRITE

12

AD7

SQWAD6INT

J105CTRL P-RTC

1234

AD4AD3

ALE

GND

AD5C6410p

+5V

SCL

R139 10K

AD0

Y4

32.768KHz

GND

SDA

U46 DS12887

1923

2412

4567891011

14

17

1

18

15

13

IRQSQW

VCCGND

AD0AD1AD2AD3AD4AD5AD6AD7

AS

DS

MOT

RST

R/W

CS

R14010K

AD2

U49 PCF85831

2

3

4

5

6

7

8

OSC1

OSC0

A0 VSS

SDA

SCL

INT

VDD

R13810K

A0

J103ADD/DATA BUS

12345678

18. KHOÁI REAL TIME CLOCK (RTC)

J109

CTRL S-RTC

1234

VCCVCC

INT

C63104

VCCRTC

VCC

C62104

VCC

VCC

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 39 Biên soạn: Phạm Quang Trí

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ý:

D4

U53 7416412

8

9

345610111213

147

AB

CLK

CLR

Q0Q1Q2Q3Q4Q5Q6Q7

VCCGND

D0

D6

D0

D2

D2

D5

D4

J111

PARALLEL OUT 1

12345678

GND

D1

VCC

D3D0

24. KHOÁI THANH GHI DÒCH

CLK

U51 7416510

111213143456

215

1

97

168

DS

P0P1P2P3P4P5P6P7

CP1CP2

PL

QHQH

VCCGND

D7

STR

U50 4094456714131211

910

168

123

15

Q1Q2Q3Q4Q5Q6Q7Q8

QS1QS2

VCCGND

STRDCLKOE

D6

OUT

CLK-3

GND

J116

PARALLEL OUT 2

12345678

VCC

OUT

J114

PARALLEL IN

12345678

+5V

VCC

CLKLD

VCC

VCC

J110

SERIAL IN 1

123

J117

SERIAL OUT

123

LD

IN

C67104

VCC

IN

J115

SERIAL IN 2

12

J115

POWER

123

D2D3

C68104

CLK D1

D7

D3D4

D5

D6

D7

C69104

D1

D5

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 40 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 41 Biên soạn: Phạm Quang Trí

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ý:

D7

D5

J102

DATA OUT

12345678

J107

CS573B

12

D3

245

D1

573A

D0

D6

D5

573B

VCC

C58104

U41 82553433323130292827

432140393837

1819202122232425

1415161713121110

267

536

98

356

D0D1D2D3D4D5D6D7

PA0PA1PA2PA3PA4PA5PA6PA7

PB0PB1PB2PB3PB4PB5PB6PB7

PC0PC1PC2PC3PC4PC5PC6PC7

VCCGND

RDWR

A0A1

RESETCS

573A

D5

WR

U45 7457323456789

111

1918171615141312

1020

D0D1D2D3D4D5D6D7

LEOE

Q0Q1Q2Q3Q4Q5Q6Q7

GNDVCC

D0

GND

J98

CS245

12

D7

573B

J107

POWER

123

D0

D2

PC3

D2

D7

+5V

D6

D3

U42 7424523456789

191

1817161514131211

2010

A0A1A2A3A4A5A6A7

GDIR

B0B1B2B3B4B5B6B7

VCCGND

D2

J101

PORT C

12345678

J97

PORT B

12345678

PC0

D3

VCC

D5

GND

VCC

D7J106

CS573A

12

C59104

PC7

D4

D6

D2

PB5

A0VCC

VCC

D1

D3

PC4

PB1

D3

VCC

D4

D6

PC5

D5

D7J99

DATA OUT

12345678

WR

PB6

PC1

D2

PB2

PC6

D4

D3

VCC

D0PA0

WR

D0

D4

PC2

D1

PA7

PA3

D4

D0

PA6

C57104

8255

PA5

D6

D1

C61104

PB3

D1

D6J95

DATA IN

12345678

PA1

C60104

8255D1

PB0245

D4

RD

D7

U47A7402

2

31

14

7

J100

CS8255

12

D0

A1

D2

PA4

D2

U47B7402

5

64

PB7

PA2

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

U44 7457323456789

111

1918171615141312

1020

D0D1D2D3D4D5D6D7

LEOE

Q0Q1Q2Q3Q4Q5Q6Q7

GNDVCC

D3

D7

D4

D6

J94

PORT A

12345678

PB4

D5

D1

D5

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 42 Biên soạn: Phạm Quang Trí

• 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).

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 43 Biên soạn: Phạm Quang Trí

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.

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 44 Biên soạn: Phạm Quang Trí

1.2.23 Khối giao tiếp PC:

• Sơ đồ nguyên lý:

D5

JR2 PS2

123456

PE

J87

USB2-PC

12

C7210u

TXD

+DATA

GND

RTS

D0

D7

TXD

J61

POWER

123

-DATA

N/A1

GND

D1

RTS

GND

AUTOFEED\

CLOCK

J77

USB 1

1234

J70

STATUS LPT-PC

12345678

D2

RXD

SEL IN\

DSR

C3110u

J58

RS232C-PC

12345678

DATA

SEL

D5

STROBE\

VCC

JR1 PS2

123456

-DATA

GND

CLOCK

D4

SEL IN\INIT

+DATA

J82

USB1-PC

12

D6

ACK\

AF\

DSR

D0

DTR

RXD

ACK

C2710u

NC

DATA

TXD

J81

PS2-1-PC

12

VCC

D6

GND

J86

USB 2

1234

NC

CTS

D2

P1

RS232C

594837261

RXD

D7

D4

BUSY

N/A

N/A2

STROBE\

GND

J65

DATA LPT-PC

12345678

C2610u

ERROR\

RXD

INIT

14. KHOÁI GIAO TIEÁP PC

N/A

N/A1

DTR

J75

CONTROL LPT-PC

1234

J55

TXD/RXD

12

GND

VCC

BUSY

VCC

CTS

ERROR\

DTRN/A2

NC

VCC

VCC

TXD

P2

LPT

13251224112310229218207196185174163152141

PE

VCC

GND

RTS

GND

C3010u

SEL

CTS

J85

PS2-2-PC

12

D1

DSR

+5V

D3

U29MAX232

1 3

4 5

16

15

26

12

9

11

10

13

8

14

7

C1+

C1-

C2+

C2-

VCC

GND

V+

V-

R1OUT

R2OUT

T1IN

T2IN

R1IN

R2IN

T1OUT

T2OUT

D3

GND

C28104

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 45 Biên soạn: Phạm Quang Trí

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

Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.

Giáo trình thực hành vi xử lý. 46 Biên soạn: Phạm Quang Trí

1.2.24 Khối mở rộng bus:

• Sơ đồ nguyên lý:

J131

BUS

12345678

J123

BUS

12345678

J130

BUS

12345678

SW32

SWITCH

SW30

SWITCH

J133

BUS

12345678

J132

BUS

12345678

J126

BUS

12345678

J134

BUS

12345678

23. KHOÁI MÔÛ ROÄNG

SW29

SWITCH

J125

BUS

12345678

SW28

SWITCH

J129

BUS

12345678

SW31

SWITCH

J124

BUS

12345678

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

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

Giáo trình thực hành vi xử lý. 48 Biên soạn: Phạm Quang Trí

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.

Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

Giáo trình thực hành vi xử lý. 49 Biên soạn: Phạm Quang Trí

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.

Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

Giáo trình thực hành vi xử lý. 50 Biên soạn: Phạm Quang Trí

• 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).

Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

Giáo trình thực hành vi xử lý. 51 Biên soạn: Phạm Quang Trí

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

Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

Giáo trình thực hành vi xử lý. 52 Biên soạn: Phạm Quang Trí

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

Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

Giáo trình thực hành vi xử lý. 53 Biên soạn: Phạm Quang Trí

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.

Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.

Giáo trình thực hành vi xử lý. 54 Biên soạn: Phạm Quang Trí

� 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).

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

Giáo trình thực hành vi xử lý. 47 Biên soạn: Phạm Quang Trí

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

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN

Giáo trình thực hành vi xử lý. 49 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 50 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 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

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

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.

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

Giáo trình thực hành vi xử lý. 51 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 52 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 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.

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

Giáo trình thực hành vi xử lý. 53 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 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 ;****************************************************

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

Giáo trình thực hành vi xử lý. 54 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 55 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 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

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

Giáo trình thực hành vi xử lý. 56 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 57 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 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

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

Giáo trình thực hành vi xử lý. 58 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 59 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 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

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

Giáo trình thực hành vi xử lý. 60 Biên soạn: Phạm Quang Trí

;**************************************************** 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.

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.

Giáo trình thực hành vi xử lý. 61 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.

• Ứ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,$

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.

Giáo trình thực hành vi xử lý. 62 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.

Giáo trình thực hành vi xử lý. 64 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 65 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 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)

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

Giáo trình thực hành vi xử lý. 66 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 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

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

Giáo trình thực hành vi xử lý. 67 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 68 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 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.

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

33

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 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)

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

Giáo trình thực hành vi xử lý. 69 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 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.

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

Giáo trình thực hành vi xử lý. 70 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 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.

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

33

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 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)

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

Giáo trình thực hành vi xử lý. 71 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 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.

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

Giáo trình thực hành vi xử lý. 72 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

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 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)

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

Giáo trình thực hành vi xử lý. 73 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 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

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

Giáo trình thực hành vi xử lý. 74 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 75 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

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 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)

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

Giáo trình thực hành vi xử lý. 76 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 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.

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

Giáo trình thực hành vi xử lý. 77 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

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 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)

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

Giáo trình thực hành vi xử lý. 78 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 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:

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

Giáo trình thực hành vi xử lý. 79 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 80 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

3

4

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)

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

Giáo trình thực hành vi xử lý. 81 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 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

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

Giáo trình thực hành vi xử lý. 82 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 83 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 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

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

Giáo trình thực hành vi xử lý. 84 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 85 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 (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).

Giáo trình thực hành vi xử lý. 86 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 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

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

Giáo trình thực hành vi xử lý. 87 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 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.

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

Giáo trình thực hành vi xử lý. 88 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 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)

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

Giáo trình thực hành vi xử lý. 89 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 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

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

Giáo trình thực hành vi xử lý. 90 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 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.

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

Giáo trình thực hành vi xử lý. 91 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

3

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

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

Giáo trình thực hành vi xử lý. 92 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 93 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 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).

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

Giáo trình thực hành vi xử lý. 94 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). ; 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.

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

Giáo trình thực hành vi xử lý. 95 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

4

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)

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

Giáo trình thực hành vi xử lý. 96 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 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

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

Giáo trình thực hành vi xử lý. 97 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 98 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 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

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

Giáo trình thực hành vi xử lý. 99 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 100 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 101 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 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

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

Giáo trình thực hành vi xử lý. 102 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 103 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 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)

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

Giáo trình thực hành vi xử lý. 104 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 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

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

Giáo trình thực hành vi xử lý. 105 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 106 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 107 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

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 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 ;****************************************************

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

Giáo trình thực hành vi xử lý. 108 Biên soạn: Phạm Quang Trí

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

Giáo trình thực hành vi xử lý. 109 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 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

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

Giáo trình thực hành vi xử lý. 110 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 111 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 112 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

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 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)

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

Giáo trình thực hành vi xử lý. 113 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 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

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

Giáo trình thực hành vi xử lý. 114 Biên soạn: Phạm Quang Trí

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.

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ÏN7SEG7 IN

SEL IN2POWER SEL IN1

7SEG6 IN 7SEG5 IN 7SEG4 IN7SEG7 INMUL

SEL LED IN VI ÑIEÀU KHIEÅN

PORT 0

A0..A7

PORT 1

PORT 3

PORT 2

SELECT CHIP

CLOCK OUT

PORT 1

PORT 3

40 PINS

20 PINS

POWERSW

NGUOÀN+5V

3

8

GIAÛI MAÕ

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

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)õ. • 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

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 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)

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

Giáo trình thực hành vi xử lý. 128 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 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

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

Giáo trình thực hành vi xử lý. 129 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 130 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, 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

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

Giáo trình thực hành vi xử lý. 131 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 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

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

Giáo trình thực hành vi xử lý. 132 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 133 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, 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

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

Giáo trình thực hành vi xử lý. 134 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 135 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, 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)

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

Giáo trình thực hành vi xử lý. 136 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, 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,$

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

Giáo trình thực hành vi xử lý. 137 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 138 Biên soạn: Phạm Quang Trí

;*************************************************** 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.

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

Giáo trình thực hành vi xử lý. 139 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

BCD IN

1-2

POWER

7 SEG

OUT 1

7 SEG

OUT 2 BCD IN

3-4

7 SEG

OUT 3

7 SEG

OUT 4

DEC.

2-4

DEC.

3-8

DEC. OUTDEC.

2-4DEC.

OUT

DEC.

OUT

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

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

Giáo trình thực hành vi xử lý. 140 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 141 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, 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

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

Giáo trình thực hành vi xử lý. 142 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 143 Biên soạn: Phạm Quang Trí

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.

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Ờ).

Giáo trình thực hành vi xử lý. 144 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

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 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)

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Ờ).

Giáo trình thực hành vi xử lý. 145 Biên soạn: Phạm Quang Trí

;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).

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Ờ).

Giáo trình thực hành vi xử lý. 146 Biên soạn: Phạm Quang Trí

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

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.

Giáo trình thực hành vi xử lý. 147 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

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

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.

Giáo trình thực hành vi xử lý. 148 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 149 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 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 ;***************************************************

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.

Giáo trình thực hành vi xử lý. 150 Biên soạn: Phạm Quang Trí

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)

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.

Giáo trình thực hành vi xử lý. 151 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 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

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.

Giáo trình thực hành vi xử lý. 152 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 153 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 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,$

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.

Giáo trình thực hành vi xử lý. 154 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.

Giáo trình thực hành vi xử lý. 156 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 157 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 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

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

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

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

Giáo trình thực hành vi xử lý. 158 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 159 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 160 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 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

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

Giáo trình thực hành vi xử lý. 161 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 162 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 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

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

Giáo trình thực hành vi xử lý. 163 Biên soạn: Phạm Quang Trí

;*************************************************** 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.

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

Giáo trình thực hành vi xử lý. 164 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 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 ;***************************************************

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

Giáo trình thực hành vi xử lý. 165 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.

Giáo trình thực hành vi xử lý. 167 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 168 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 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.

KEYBOARD

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

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

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

Giáo trình thực hành vi xử lý. 169 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 170 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 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

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.

Giáo trình thực hành vi xử lý. 171 Biên soạn: Phạm Quang Trí

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

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.

Giáo trình thực hành vi xử lý. 172 Biên soạn: Phạm Quang Trí

;*************************************************** 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”.

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.

Giáo trình thực hành vi xử lý. 173 Biên soạn: Phạm Quang Trí

� 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).

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.

Giáo trình thực hành vi xử lý. 174 Biên soạn: Phạm Quang Trí

; 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 ;***************************************************

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

E. HỆ THỐNG ĐIỀU KHIỂN LCD.

Giáo trình thực hành vi xử lý. 176 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 177 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 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

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

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

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.

Giáo trình thực hành vi xử lý. 178 Biên soạn: Phạm Quang Trí

;*************************************************** 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

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.

Giáo trình thực hành vi xử lý. 179 Biên soạn: Phạm Quang Trí

;*************************************************** 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)

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.

Giáo trình thực hành vi xử lý. 180 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 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

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.

Giáo trình thực hành vi xử lý. 181 Biên soạn: Phạm Quang Trí

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)

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.

Giáo trình thực hành vi xử lý. 182 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 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.

MOMENTARY

SW

POWER

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

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

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.

Giáo trình thực hành vi xử lý. 183 Biên soạn: Phạm Quang Trí

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) ;*************************************************************

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.

Giáo trình thực hành vi xử lý. 184 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 185 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.

Giáo trình thực hành vi xử lý. 187 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 188 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 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. MOMENTARY

SW

POWER

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

33

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

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

Giáo trình thực hành vi xử lý. 189 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 190 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 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.

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

Giáo trình thực hành vi xử lý. 191 Biên soạn: Phạm Quang Trí

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

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

G. HỆ THỐNG ĐIỀU KHIỂN CÔNG TẮC.

Giáo trình thực hành vi xử lý. 193 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 194 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 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.

POWER

SWITCH

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS3

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

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

Giáo trình thực hành vi xử lý. 195 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

H. HỆ THỐNG ĐIỀU KHIỂN RELAY.

Giáo trình thực hành vi xử lý. 197 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 198 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 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.

RELAY

CONTROL

POWER

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

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.

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

Giáo trình thực hành vi xử lý. 199 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.

Giáo trình thực hành vi xử lý. 201 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 202 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 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ó.

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

Giáo trình thực hành vi xử lý. 203 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 204 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 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)

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

Giáo trình thực hành vi xử lý. 205 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 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

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

Giáo trình thực hành vi xử lý. 206 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).

Giáo trình thực hành vi xử lý. 208 Biên soạn: Phạm Quang Trí

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.

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

Giáo trình thực hành vi xử lý. 209 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 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)

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

Giáo trình thực hành vi xử lý. 210 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

4

POWER

PULSE

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

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

Giáo trình thực hành vi xử lý. 211 Biên soạn: Phạm Quang Trí

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,$

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

Giáo trình thực hành vi xử lý. 212 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.

Giáo trình thực hành vi xử lý. 214 Biên soạn: Phạm Quang Trí

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,

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

Giáo trình thực hành vi xử lý. 215 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

4

POWER

PULSE

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

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

Giáo trình thực hành vi xử lý. 216 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 217 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 218 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 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

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

Giáo trình thực hành vi xử lý. 219 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 220 Biên soạn: Phạm Quang Trí

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)

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

Giáo trình thực hành vi xử lý. 221 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

4

POWER

PULSE

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.

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

Giáo trình thực hành vi xử lý. 222 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.

Giáo trình thực hành vi xử lý. 224 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 225 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 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

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

PARALLEL

OUT 1

POWER

SERIAL

IN 1

PARALLEL

OUT 2

SERIAL

IN 2

PARALLEL

INSERIAL

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

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.

Giáo trình thực hành vi xử lý. 226 Biên soạn: Phạm Quang Trí

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)

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.

Giáo trình thực hành vi xử lý. 227 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 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

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

PARALLEL

OUT 1

POWER

SERIAL

IN 1

PARALLEL

OUT 2

SERIAL

IN 2

PARALLEL

INSERIAL

OUT

3

POWER

SWITCH

3 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 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)

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.

Giáo trình thực hành vi xử lý. 228 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 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.

MOMENTARY

SW

POWER

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

33

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

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.

Giáo trình thực hành vi xử lý. 229 Biên soạn: Phạm Quang Trí

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:

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.

Giáo trình thực hành vi xử lý. 230 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

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

Giáo trình thực hành vi xử lý. 232 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 233 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 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.

LED DAÕYBAR LED 2 BAR LED 1POWER

VI ÑIEÀU KHIEÅN

PORT 0

A0..A7

PORT 1

PORT 3

PORT 2

SELECT CHIP

CLOCK OUT

PORT 1

PORT 3

40 PINS

20 PINS

POWERSW

NGUOÀN+5V

MÔÛ ROÄNG PORT I/O

PORT A

DATA IN

PORT C

PORT B

DATA OUT

DATA OUT

CS8255

POWER

CS245

CS573A

CS573B

3

8

31

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)

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.

Giáo trình thực hành vi xử lý. 234 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 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.

LED DAÕYBAR LED 2 BAR LED 1POWER

VI ÑIEÀU KHIEÅN

PORT 0

A0..A7

PORT 1

PORT 3

PORT 2

SELECT CHIP

CLOCK OUT

PORT 1

PORT 3

40 PINS

20 PINS

POWERSW

NGUOÀN+5V

MÔÛ ROÄNG PORT I/O

PORT A

DATA IN

PORT C

PORT B

DATA OUT

DATA OUT

CS8255

POWER

CS245

CS573A

CS573B

3

8

3

1

COÂNG TAÉC

POWER

SWITCH

3

81

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

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.

Giáo trình thực hành vi xử lý. 235 Biên soạn: Phạm Quang Trí

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

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.

Giáo trình thực hành vi xử lý. 236 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

PORT A

DATA IN

PORT C

PORT B

DATA OUT

DATA OUT

CS8255

POWER

CS245

CS573A

CS573B

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)

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.

Giáo trình thực hành vi xử lý. 237 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 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.

PORT 0

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

PORT A

DATA IN

PORT C

PORT B

DATA OUT

DATA OUT

CS8255

POWER

CS245

CS573A

CS573B

1

POWER

SWITCH

8

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

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.

Giáo trình thực hành vi xử lý. 238 Biên soạn: Phạm Quang Trí

• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

N. HỆ THỐNG ĐIỀU KHIỂN ADC.

Giáo trình thực hành vi xử lý. 240 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 241 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 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

PORT 1

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

3

8

PORT A

DATA IN

PORT C

PORT B

DATA OUT

DATA OUT

CS8255

POWER

CS245

CS573A

CS573B

ANALOG

INCS0809

DIGITAL

OUT

POWER

TAÏO AÙPV1POWER

V2

V3

V4

3

11

1 1

8

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.

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.

Giáo trình thực hành vi xử lý. 242 Biên soạn: Phạm Quang Trí

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)

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.

Giáo trình thực hành vi xử lý. 243 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.

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)

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.

Giáo trình thực hành vi xử lý. 244 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.

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)

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.

Giáo trình thực hành vi xử lý. 245 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 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.

LED 7 ÑOAÏN7SEG7 IN

SEL IN2POWER SEL IN1

7SEG6 IN 7SEG5 IN 7SEG4 IN7SEG7 INMUL

SEL LED IN

8 8 8 8

VI ÑIEÀU KHIEÅN

PORT 0

A0..A7

PORT 1

PORT 3

PORT 2

SELECT CHIP

CLOCK OUT

PORT 1

PORT 3

40 PINS

20 PINS

POWERSW

NGUOÀN+5V

3

8

8

MÔÛ ROÄNG PORT I/O

PORT A

DATA IN

PORT C

PORT B

DATA OUT

DATA OUT

CS8255

POWER

CS245

CS573A

CS573B

ADC

ANALOG

INCS0809

DIGITAL

OUT

POWER

TAÏO AÙPV1POWER

V2

V3

V4

3

3 3

1

8

1

1 1

8

8

NUÙT NHAÁN

MOMENTARY

SW

POWER

1

8

1

3

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

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.

Giáo trình thực hành vi xử lý. 246 Biên soạn: Phạm Quang Trí

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

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.

Giáo trình thực hành vi xử lý. 247 Biên soạn: Phạm Quang Trí

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

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.

Giáo trình thực hành vi xử lý. 248 Biên soạn: Phạm Quang Trí

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 ;***************************************************

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

O. HỆ THỐNG ĐIỀU KHIỂN DAC.

Giáo trình thực hành vi xử lý. 250 Biên soạn: Phạm Quang Trí

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.

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.

Giáo trình thực hành vi xử lý. 251 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 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

PORT 0

A0..A7

PORT 1

PORT 3

PORT 2

SELECT CHIP

CLOCK OUT

PORT 1

PORT 3

40 PINS

20 PINS

POWERSW

DAC

POWER

DIGITAL

IN

ANALOG

OUT

NGUOÀN5V, 12V

8

8

VOM

1

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)

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

Giáo trình thực hành vi xử lý. 252 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 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

PORT 3

PORT 2

PORT 1

PORT 3

40 PINS

20 PINS

POWER

DIGITAL

IN

ANALOG

OUT

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)

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.

Giáo trình thực hành vi xử lý. 253 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 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

PORT 0

A0..A7

PORT 1

PORT 3

PORT 2

SELECT CHIP

CLOCK OUT

PORT 1

PORT 3

40 PINS

20 PINS

POWERSW

DAC

POWER

DIGITAL

IN

ANALOG

OUT

NGUOÀN5V, 12V

8

8

1

OSC

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

o Giá trị của mẫu thứ x là: 5,1275,127128

360sin +×

× Ox

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

���

P. HỆ THỐNG ĐIỀU KHIỂN ĐO NHIỆT ĐỘ.

Giáo trình thực hành vi xử lý. 255 Biên soạn: Phạm Quang Trí

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

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

Giáo trình thực hành vi xử lý. 256 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 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.

NGUOÀN5V

CAÛMBIEÁNNHIEÄT

V IN2

V IN1

POWER

LM335

V OUT

LED 7 ÑOAÏN7SEG7 IN

SEL IN2POWER SEL IN1

7SEG6 IN 7SEG5 IN 7SEG4 IN7SEG7 INMUL

SEL LED IN

8 8 8 8

VI ÑIEÀU KHIEÅN

PORT 0

A0..A7

PORT 1

PORT 3

PORT 2

SELECT CHIP

CLOCK OUT

PORT 1

PORT 3

40 PINS

20 PINS

POWERSW

NGUOÀN+5V

3

8

8

MÔÛ ROÄNG PORT I/O

PORT A

DATA IN

PORT C

PORT B

DATA OUT

DATA OUT

CS8255

POWER

CS245

CS573A

CS573B

ADC

ANALOG

INCS0809

DIGITAL

OUT

POWER

34

3

8

1

1

1 1

8

8

1

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.

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

Giáo trình thực hành vi xử lý. 257 Biên soạn: Phạm Quang Trí

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.

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

Q. HỆ THỐNG ĐIỀU KHIỂN MOTOR DC.

Giáo trình thực hành vi xử lý. 259 Biên soạn: Phạm Quang Trí

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.

Q. HỆ THỐNG ĐIỀU KHIỂN MOTOR DC. Bài tập: Chương trình

Giáo trình thực hành vi xử lý. 260 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. •

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

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

R. HỆ THỐNG ĐIỀU KHIỂN SERIAL EEPROM.

Giáo trình thực hành vi xử lý. 262 Biên soạn: Phạm Quang Trí

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.

R. HỆ THỐNG ĐIỀU KHIỂN SERIAL EEPROM. Bài tập: Chương trình

Giáo trình thực hành vi xử lý. 263 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. •

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

TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

TTÀÀII LLIIỆỆUU HHƯƯỚỚNNGG DDẪẪNN TTHHÍÍ NNGGHHIIỆỆMM -- TTHHỰỰCC HHÀÀNNHH

S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).

Giáo trình thực hành vi xử lý. 265 Biên soạn: Phạm Quang Trí

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.

S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK). Bài tập: Chương trình

Giáo trình thực hành vi xử lý. 266 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. •

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