Professional Documents
Culture Documents
Giao Trinh Thuc Hanh VXL 0824
Giao Trinh Thuc Hanh VXL 0824
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
Sau khi đã được học, nghiên cứu và tìm hiểu về vi điều khiển ở phần lý thuyết. Chúng ta có thể bắt đầu tiến
hành thực hiện các bài thí nghiệm đối với vi điều khiển nhằm mục đích giúp chúng ta hiểu một cách tường tận hơn
về những gì mà ta đã được học trong phần lý thuyết cũng như cách thức vận dụng nó vào trong thực tế.
Trong thực tế, các ứng dụng của vi điều khiển thì rất đa dạng và phong phú. Từ những ứng dụng đơn giản chỉ
có vài thiết bị ngoại vi cho đến những hệ thống vi điều khiển phức tạp. Tuy nhiên, trong phạm vi có giới hạn của
giáo trình và nhằm mục đích phục vụ cho công việc học tập và tự nghiên cứu của sinh viên. Cho nên mô hình thí
nghiệm vi điều khiển này được thiết kế với tương đối đầy đủ các yêu cầu phần cứng và có rất nhiều chương trình
điều khiển mẫu cũng như các bài tập thực hành từ đơn giản đến phức tạp có thể giúp cho sinh viên thực hành, thí
nghiệm và tự nghiên cứu, tự học môn học này.
Mô hình thí nghiệm vi điều khiển này hỗ trợ cho việc thí nghiệm:
• Thí nghiệm các loại vi điều khiển như: 89C1051, 89C2051, 89C4051, 89C51, 89LV51, 89C52,
89LV52, 89C55, 89LV55, 89C55WD, 89S51, 89LS51, 89S52, 89LS52, 89S53, 89LS53, 89S8252,
89LS8252.
• Thí nghiệm các thiết bị ngoại vi như: LED điểm, LED ma trận, LED 7 đoạn, LCD, ADC, DAC, công
tắc, nút nhấn, bàn phím, relay, bộ nhớ nối tiếp, xuất nhập dữ liệu nối tiếp và song song, tạo xung, cảm
biến nhiệt, đồng hồ thời gian thực (RTC), …
• Thí nghiệm các chuẩn giao tiếp như: RS232, LPT, USB, PS2.
Phần mềm sử dụng cho mô hình thí nghiệm vi điều khiển này là phần mềm mô phỏng Topview và MCU
Program Loader. Phần mềm mô phỏng Topview cho phép bạn mô phỏng và chạy thử các chương trình điều khiển
trên máy tính với một số module thiết bị ngoại vi có sẵn tương tự như trên mô hình thí nghiệm vi điều khiển ngoài
thực tế, phần mềm này còn cho bạn khả năng soạn thảo và biên dịch chương trình theo ngôn ngữ Assembler. Phần
mềm MCU Program Loader cho phép bạn khả năng nạp chương trình cho các loại vi điều khiển đã nêu trên từ máy
tính. Các bạn có thể tìm hiểu thêm về hai phần mềm này trong các phần sau của giáo trình (phần mềm mô phỏng
Topview xem trong tài liệu “Hướng dẫn sử dụng phần mềm mô phỏng MCS-51 Topview Simulator”).
Các chương tiếp theo sẽ trình bày chi tiết hơn về cấu hình của mô hình thí nghiệm vi điều khiển, cách thức sử
dụng phần mềm và cung cấp các bài thí nghiệm thực hành mẫu cũng như các bài tập mở rộng có thể phục vụ rất tốt
cho việc tự học của các bạn.
Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
VCC 15. KHOÁI LAÄP TRÌNH VI ÑIEÀU KHIEÅN R107 10K
VCC
C35 C36
10u 10u C37
VCC 104
C38
1
104
VCC
1
2
3
4
5
6
7
8
9
C1+
V+
C1-
16 U34 89C52 U35 74573 U36 SLAVE 40PIN U37 SLAVE 20PIN
P3 VCC 39 D0 D0 2 19 A0 1 39 D0 D0 12 2
1 8 9 P0.0/AD0 38 D1 D1 3 D0 Q0 18 A1 2 P1.0 P0.0/AD0 38 D1 D1 13 P1.0/AIN0 P3.0/RXD 3 P1.2
6 R2IN R2OUT P0.1/AD1 37 D2 D2 4 D1 Q1 17 A2 3 P1.1 P0.1/AD1 37 D2 D2 14 P1.1/AIN1 P3.1/TXD 6 P1.1
2 7 10 P0.2/AD2 36 D3 D3 5 D2 Q2 16 A3 4 P1.2 P0.2/AD2 36 D3 D3 15 P1.2 P3.2/INT0 7 P1.6
7 T2OUT T2IN P0.3/AD3 35 D4 D4 6 D3 Q3 15 A4 5 P1.3 P0.3/AD3 35 D4 D4 16 P1.3 P3.3/INT1 8 P1.7
3 P0.4/AD4 34 D5 D5 7 D4 Q4 14 A5 6 P1.4 P0.4/AD4 34 D5 D5 17 P1.4 P3.4/T0 9 P1.4
8 12 13 P0.5/AD5 33 D6 D6 8 D5 Q5 13 A6 7 P1.5 P0.5/AD5 33 D6 D6 18 P1.5 P3.5/T1
4 14 R1OUT R1IN 11 P0.6/AD6 32 D7 D7 9 D6 Q6 12 A7 8 P1.6 P0.6/AD6 32 D7 D7 19 P1.6 11 P1.5
9 T1OUT T1IN P0.7/AD7 D7 Q7 VCC P1.7 P0.7/AD7 P1.7 P3.7
5 10 11 20
GND
C2+
P3.0/RXD LE VCC
C2-
U33 11 21 A8 1 10 A8 21 11 4
V-
C45
VPP R116 VDD 104
Q22 100/2W VCC VCC
C1815 VDD R122 VCC
22/2W U38 7805
C46 R118 R119 R120 R121 D36 1 3
GND
104 R117 1K2 1K2 4K7 4K7 SW18 VIN VOUT
3K3 POWER SW 1N4007 R123 C48 C49
Q23 1 D37 1K2 C47 1000u 100u C50 C51
C1815 104 100u 104
2
D38 D39 VPP ON/OFF 2 1N4007
13V 5V6 J90A D40
DC 16V D41
1N4007 LED
D42
Q24 VPP 5V/6.5V
C1815 1N4007
D43
1N4007
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Các thành phần chính của bộ lập trình là port nối tiếp, nguồn cung cấp và bộ vi điều khiển trung tâm. Dữ liệu
nối tiếp được gửi và nhận từ cổng COM 9 chân và chuyển đổi từ mức logic TTL sang mức tín hiệu RS232 hoặc
chuyển đổi từ mức tín hiệu RS232 sang mức logic TTL bằng vi mạch MAX232. Một sợi cáp port nối tiếp được
dùng để nối cổng COM của khối lập trình vi điều khiển với cổng COM của máy tính (cổng RS232).
Nguồn cung cấp 16 VDC được cung cấp cho khối lập trình thông qua đầu nối J90A và công tắc SW18
(POWER SW). Các diode D36, D37, D40, D42 làm nhiệm vụ chỉnh lưu điện áp và chống hiện tượng sai cực tính
nguồn khi ta dùng nguồn DC cung cấp cho khối (Lưu ý: ta có thể sử dụng nguồn DC 16V hoặc AC 12V để cung
cấp cho khối). Điện áp này là điện áp chưa được ổn áp và được gọi là VDD. VDD được dùng để tạo ra ba mức điện
áp khác nhau là VCC, VPP và VPC. Điện áp VCC có mức điện áp là 5V được tạo ra từ vi mạch ổn áp LM7805 để
cung cấp cho bộ vi điều khiển trung tâm U34 hoạt động. Điện áp VPP có mức điện áp là 0V, 5V hoặc 12V theo sự
điều khiển của bộ vi điều khiển trung tâm. Điện áp VPC có mức điện áp là 0V, 5V hoặc 6.5V theo sự điều khiển
của bộ vi điều khiển trung tâm. Các loại điện áp khác nhau này được yêu cầu trong suốt quá trình lập trình cho các
chip vi điều khiển.
Trung tâm của khối lập trình này là bộ vi điều khiển trung tâm U34 và phần mềm điều khiển của nó. Phần mềm
này có khả năng nhận dạng chip vi điều khiển được đưa vào mạch thông qua một trong hai socket ZIF là SLAVE
40 PIN và SLAVE 20 PIN. Các thông tin này được sang phần mềm MCU Program Loader trên máy tính để xác lập
các thông số hoạt động điều khiển. Khi một tập tin chương trình được gửi đi từ máy tính, các thông tin này sẽ được
bộ vi điều khiển trung tâm tải đến chip vi điều khiển cần lập trình bằng các tín hiệu địa chỉ, dữ liệu và điều khiển
tương thích. Sau khi việc lập trình đã hoàn tất thì các dữ liệu đã được ghi vào này sẽ được gửi ngược trở lại máy
tính để kiểm tra lỗi trong quá trình nạp chip, từ đó đưa ra thông báo quá trình lập trình thành công hay có lỗi.
Bạn cần phải chú ý đến một điểm rất quan trọng là luôn luôn phải tắt nguồn cung cấp cho khối lập trình vi
điều khiển trước khi tiến hành tháo/gắn chip vi điều khiển vào socket nhằm tránh gây hỏng chip vi điều khiển
này.
• Ứng dụng:
Khối lập trình vi điều khiển này kết hợp với phần mềm MCU Program Loader trên máy tính có khả năng lập
trình cho các loại chip sau:
o Loại chip 40 chân (được gắn vào socket SLAVE 40 PIN): AT89C51, AT89LV51, AT89C52,
AT89LV52, AT89C55, AT89LV55, AT89C55WD, AT89S51, AT89LS51, AT89S52, AT89LS52,
AT89S53, AT89LS53, AT89S8252, AT89LS8252.
o Loại chip 20 chân (được gắn vào socket SLAVE 20 PIN): AT89C1051, AT89C2051, AT89C4051.
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
CLR QC 8
P1.7 C23 P1.7 P3.7 P3.7
QD PORT 1 33p PORT 3
4
5 X2 VCC
7
Y2 X1 20
12MHz RST 1 VCC 10
RST/VPP GND
C24 VCC
33p D46
1
2 SW33 R135
J901A POWER SW 1K2 LED
DC 5V
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Khối vi điều khiển được thiết kế để cho phép người sử dụng thuận tiện trong việc tiến hành thí nghiệm đối với
các loại vi điều khiển họ 89 của hãng Atmel ở mọi chế độ làm việc khả thi, gồm các loại vi điều khiển 40 chân và
các vi điều khiển 20 chân.
o Thí nghiệm vi điều khiển 20 chân: vi điều khiển cần thí nghiệm sẽ được gắn vào socket U25
(SOCKET 20PIN), tần số hoạt động của chip do Y2 quyết định, các port xuất nhập của chip J43
(PORT 1): Port 1 (trong đó P3.0 và P3.1 là ngõ vào của bộ ADC trong chip); J44 (PORT 3): Port 3
(trong đó P3.6 không sử dụng). Để reset chip bạn sử dụng nút nhấn SW17 (RESET).
o Thí nghiệm vi điều khiển 40 chân: vi điều khiển cần thí nghiệm sẽ được gắn vào socket U19
(SOCKET 40PIN), tần số hoạt động của chip do Y1 quyết định, các port xuất nhập của chip J37
(PORT 0): Port 0 (ngoài ra còn là bus dữ liệu D0..D7 đã giải đa hợp); J38 (PORT 1): Port 1; J39
(PORT 2): Port 2 (ngoài ra còn là bus địa chỉ byte cao A8..A15); J40 (PORT 3): Port 3 (ngoài ra
còn là bus tín hiệu điều khiển đặc biệt). Đầu nối J41 (A0-A7 BUS): bus địa chỉ byte thấp A0..A7.
Để reset chip bạn sử dụng nút nhấn SW17 (RESET). Trong trường hợp thí nghiệm này, trên mô
hình đã có thiết kế sẵn các bộ nhớ ROM/RAM bên ngoài (ROM 2764: 8 KB và RAM 6264: 8 KB
có nguồn back-up BT1) nhằm mục đích giúp cho người sử dụng thuận tiện hơn trong việc thiết kế
và thí nghiệm hệ thống vi điều khiển sử dụng bộ nhớ trong hoặc sử dụng bộ nhớ ngoài. Để thực
hiện việc chuyển đổi bộ nhớ sử dụng (trong hay ngoài) ta thay đổi Jump J36 (INT/EXT), nối
COM-INT: là sử dụng bộ nhớ trong; nối COM-EXT: là sử dụng bộ nhớ ngoài. Tầm địa chỉ của
ROM: 0000H – 1FFFH; RAM chuẩn: 0000H – 1FFFH. Đối với RAM, nếu ta chỉ có một vi
mạch (RAM chuẩn) ta sẽ nối J34 (CS6264) xuống GND, còn nếu có thêm I/O hoạt động với chức
năng như RAM thì ta nối J34 (CS6262) đến bộ giải mã địa chỉ U23 (74138) lúc đó địa chỉ của
RAM có sự thay đổi.
Ngoài ra, tại khối vi điều khiển trên mô hình thí nghiệm còn được thiết kế sẵn: bộ chia tần số U24 (74393) có
nhiệm vụ tạo ra các tần số khác nhau J42 (CLOCK OUT) để cung cấp cho các khối khác hoặc để dùng cho các mục
đích khác của người sử dụng, bộ giải mã địa chỉ U23 (74138) có nhiệm vụ tạo ra các tín hiệu điều khiển chọn chip
với các tầm địa chỉ khác nhau J35 (SELECT CHIP).
Bạn cần phải chú ý đến một điểm rất quan trọng là luôn luôn phải tắt nguồn cung cấp cho khối vi điều
khiển trước khi tiến hành tháo/gắn chip vi điều khiển vào socket nhằm tránh gây hỏng chip vi điều khiển này.
Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Ứng dụng:
o Thí nghiệm ứng dụng các loại vi điều khiển 20 chân và 40 chân.
o Thí nghiệm cấu hình vi điều khiển sử dụng bộ nhớ bên trong hay bộ nhớ bên ngoài (Dung lượng
ROM/RAM ngoài có sẵn: 8KB/8KB, RAM có nguồn Back-up).
o Phát các tín hiệu giải mã địa chỉ (CS): 0000H - 1FFFH, 2000H - 3FFFH, 4000H - 5FFFH, 6000H -
7FFFH, 8000H - 9FFFH, A000H - BFFFH, C000H - DFFFH, E000H – FFFFH.
o Phát các xung clock có tần số: 12MHz, 6MHz, 3MHz, 1.5MHz, 750KHz, 375KHz, 188KHz,
94KHz.
• Sơ đồ nguyên lý:
D9 D10
R71 330 LED R72 330 LED
D11 D12
R75 330 LED R76 330 LED
D13 D14
R77 330 LED R78 330 LED
D15 D16
R81 330 LED R82 330 LED
J103
1 VCC
GND 2
+5V 3
GND
POWER
Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
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.
• Sơ đồ nguyên lý:
J1
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
J2 Q0 1
1 Q0 R1 VCC R2 VCC R3 VCC R4 VCC R5 VCC R6 VCC R7 VCC R8 VCC Q1 2
SEL0
SEL0 2 Q1 2K2 2K2 2K2 2K2 2K2 2K2 2K2 2K2 Q2 3
SEL1
SEL1 3 Q2 Q3 4
SEL2
SEL2 4 Q3 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q4 5
SEL3
SEL3 A1015 A1015 A1015 A1015 A1015 A1015 A1015 A1015 Q5 6
SEL4
SEL IN1 Q6 7
SEL5
Q7 8
SEL6
J3 U1 U2 U3 U4 U5 U6 U7 U8
SEL7
8
3
1 Q4 LED7 LED7 LED7 LED7 LED7 LED7 LED7 LED7 SEL LED IN
SEL4 2 Q5
SEL5
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
CA
3 Q6
SEL6 4 Q7
SEL7
SEL IN1
J4
A R9 330 1
B R10 330 2
A
C R11 330 3
B
DP
DP
DP
DP
DP
DP
DP
DP
C
G
G
C
D
C
D
C
D
C
D
C
D
C
D
C
D
C
D
A
B
A
B
A
B
A
B
A
B
A
B
A
B
A
B
E
F
F D R12 330 4
D
E R13 330 5
E
10
10
10
10
10
10
10
10
F R14 330 6
7
6
4
2
1
9
7
6
4
2
1
9
7
6
4
2
1
9
7
6
4
2
1
9
7
6
4
2
1
9
7
6
4
2
1
9
7
6
4
2
1
9
7
6
4
2
1
9
5
G R15 330 7
F
DP G
R17
R18
R19
R20
R21
R22
R23
R24
R25
R26
R27
R28
R29
R30
R31
R32
R33
R34
R35
R36
R37
R38
R39
R40
R41
R42
R43
R44
R45
R46
R47
R48
DP
DP
DP
1 VCC
G
G
A
B
A
B
A
B
A
B
E
C
D
C
D
C
D
C
D
F
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
330
POWER
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
J5 J6 J7 J8
7SEG7 IN 7SEG6 IN 7SEG5 IN 7SEG4 IN
C
D
C
D
C
D
C
D
A
B
DP
A
B
DP
A
B
DP
A
B
DP
F
G
F
G
F
G
Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Khối LED 7 đoạn bao gồm 8 LED 7 đoạn loại Anode chung kết hợp lại với nhau theo hai cách thiết kế khác
nhau. Các LED này đều được cấp nguồn thông qua các transistor Q1 - Q8 đóng vai trò như các công tắc và được
điều khiển thông qua các tín hiệu điều khiển tích cực mức thấp tại đầu nối J1 (SEL LED IN), J2 (SEL IN1) và J3
(SEL IN2).
8 LED này được chia ra làm hai nhóm với hai phương pháp thiết kế khác nhau cho mỗi nhóm:
o Phương pháp không đa hợp (phương pháp điều khiển LED trực tiếp): được thiết kế trên cơ sở 4
LED (U1, U2, U3, U4). Phương pháp này là phương pháp mà các đoạn của mỗi LED sẽ được nối
vào mỗi Port điều khiển độc lập với nhau và Anode của tất cả các LED sẽ được cấp nguồn đồng
thời với nhau (thông thường thì sẽ được nối thẳng lên VCC). J5, J6, J7, J8 (7SEG IN): ngõ vào tín
hiệu 7 đoạn (A-G và DP) của từng LED sẽ được nối đến từng Port điều khiển độc lập với nhau; J3
(SEL IN2): ngõ vào tín hiệu điều khiển cấp nguồn cho các LED, ở chế độ này thì sẽ được nối trực
tiếp xuống GND để cấp nguồn liên tục và đồng thời cho tất cả các LED. Phương pháp điều khiển
trong trường hợp này là cấp mã 7 đoạn tương ứng của số cần hiển thị ra LED 7 đoạn mong muốn.
Giáo trình thực hành vi xử lý. 15 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
o Phương pháp đa hợp (phương pháp điều khiển quét LED): được thiết kế trên cơ sở 4 LED (U5,
U6, U7, U8). Phương pháp này là phương pháp mà tất cả các đoạn của các LED sẽ được nối chung
vào nhau và vào một Port điều khiển còn Anode của tất cả các LED sẽ được nối vào một Port điều
khiển khác và được cấp tín hiệu quét LED một cách tuần tự (tại một thời điểm thì chỉ có một LED
được cấp nguồn hoạt động). J4 (7SEG IN MUL): ngõ vào tín hiệu 7 đoạn (A-G và DP) đa hợp của
tất cả các LED sẽ được nối đến một Port điều khiển; J2 (SEL IN1): ngõ vào tín hiệu điều khiển cấp
nguồn cho các LED, ở chế độ này thì sẽ được nối đến một Port điều khiển khác cung cấp tín hiệu
quét LED để cấp nguồn tuần tự cho các LED. Phương pháp điều khiển trong trường hợp này là
phải tiến hành tuần tự qua các giai đoạn: cấp một tín hiệu quét LED sao cho chỉ có LED đầu tiên
được cấp nguồn rồi đưa mã 7 đoạn tương ứng của số cần hiển thị ra LED 7 đoạn đó; kế tiếp cấp
một tín hiệu quét LED sao cho chỉ có LED thứ hai được cấp nguồn rồi đưa mã 7 đoạn tương ứng
của số cần hiển thị ra LED 7 đoạn đó; quá trình cứ diễn ra liên tục như vậy và do hiện tượng lưu
ảnh của mắt mà ta thấy được các LED dường như sáng cùng một lúc.
Trong hai phương pháp nêu trên thì phương pháp đa hợp thì thường được sử dụng nhiều hơn trong thực tế. Cho
nên trên mô hình thí nghiệm này cũng cho phép ta có thể thiết kế chế độ đa hợp cho tất cả 8 LED này bằng cách nối
cung tất cả các đầu nối J5, J6, J7, J8 vào với đầu nối J4 thông qua khối mở rộng.
Số Hex dp g f e d c b a Mã số HEX
0 1 1 0 0 0 0 0 0 C0
1 1 1 1 1 1 0 0 1 F9
2 1 0 1 0 0 1 0 0 A4
3 1 0 1 1 0 0 0 0 B0
4 1 0 0 1 1 0 0 1 99
5 1 0 0 1 0 0 1 0 92
6 1 0 0 0 0 0 1 0 82
7 1 1 1 1 0 1 1 1 F7
8 1 0 0 0 0 0 0 0 80
9 1 0 0 1 0 0 0 0 90
A 1 0 0 0 1 0 0 0 88
B 1 0 0 0 0 0 1 1 83
C 1 1 0 0 0 0 1 0 C2
D 1 0 1 0 0 0 0 1 A1
E 1 0 0 0 0 1 1 0 86
F 1 0 0 0 1 1 1 0 8E
Giáo trình thực hành vi xử lý. 16 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Ngoài ra còn các mã 7 đoạn cho các LED khác, các bạn có thể tự mình thiết lập thêm để nâng cao số lượng ký
tự có thể hiển thị trên LED 7 đoạn cho thí nghiệm của mình.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J110 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối LED 7 đoạn với vi điều khiển.
o Thí nghiệm phương pháp điều khiển từng LED 7 đoạn.
o Thí nghiệm phương pháp điều khiển dãy LED 7 đoạn.
o Thí nghiệm các kiểu điều khiển LED sáng tắt và hiển thị thông tin.
o Thí nghiệm các phương pháp điều khiển LED 7 đoạn ở các chế độ khác nhau: đa hợp, không đa
hợp, ngõ vào BCD hay 7 đoạn, …
o Thí nghiệm nguyên lý điều khiển đèn giao thông.
Giáo trình thực hành vi xử lý. 17 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
R0
R1
R2
R3
R4
R5
R6
R7
COL RED MATRIX COL GREEN MATRIX
22
19
16
13
12
3
6
9
J13
1 R79 330
R0 2 R80 330
R1 3 R83 330
R2 4 R84 330
R3 5 R85 330
R4 6 R86 330 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16
R5 7 R87 330 A1015 A1015 A1015 A1015 A1015 A1015 A1015 A1015
R6 8 R88 330
R7
ROW MATRIX
J116 VCC
1 VCC
GND 2
+5V 3
GND
POWER
Giáo trình thực hành vi xử lý. 18 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Loại ma trận LED sử dụng trên mô hình thí nghiệm này là loại ma trận LED 24 chân gồm 8 hàng và 8 cột. Ma
trận LED này có hai màu chính là xanh và đỏ, ngoài ra còn có một màu phụ là do sự tổng hợp của hai màu trên mà
ra.
Mỗi điểm LED trên ma trận có cấu tạo gồm hai LED màu xanh và màu đỏ ghép lại với nhau theo nguyên tắc
Anode ghép chung và Cathode để riêng. Ma trận LED 8 hàng x 8 cột này gồm 24 chân được chia ra làm ba nhóm
chân: 8 chân HÀNG R0-R7 (là các Anode chung của các LED trên cùng một hàng), 8 chân CỘT ĐỎ C0R-C7R (là
các Cathode chung của các LED màu đỏ trên cùng một cột), 8 chân CỘT XANH C0G-C7G (là các Cathode chung
của các LED màu xanh trên cùng một cột). Sự kết hợp các mức logic cao/thấp thích hợp trên các hàng và cột theo
một qui luật nhất định (hiển thị theo phương pháp quét hay còn gọi là phương pháp chỉ thị động) mà ta sẽ có được
các hình ảnh như mong muốn trên ma trận LED với các màu sắc khác nhau.
J11 (COL RED MATRIX): ngõ vào điều khiển hàng R0-R7 cho các LED màu đỏ, tích cực mức thấp; J12
(COL GREEN MATRIX): ngõ vào điều khiển hàng R0-R7 cho các LED màu xanh, tích cực mức thấp; J13 (ROW
MATRIX): ngõ vào điều khiển cột chung C0-C7 cho các LED, tích cực mức thấp.
Phương pháp điều khiển cũng tương tự như phương pháp điều khiển các LED 7 đoạn ở chế độ đa hợp (phương
pháp quét LED). Đầu tiên, ta cấp tín hiệu sao cho chỉ có HÀNG 1 có nguồn rồi đưa mã nhị phân tương ứng của
hình ảnh cần hiển thị tại hàng đó ra các cột. Kế tiếp, ta cấp tín hiệu sao cho chỉ có HÀNG 2 có nguồn rồi đưa mã
nhị phân tương ứng của hình ảnh cần hiển thị tại hàng đó ra các cột. Quá trình cứ diễn ra một cách tuần tự và liên
tục như vậy và do hiện tượng lưu ảnh của mắt mà ta thấy được các LED dường như sáng cùng một lúc để tạo ra
hình ảnh như mong muốn trên ma trận LED.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J116 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối LED ma trận với vi điều khiển.
o Thí nghiệm phương pháp điều khiển từng LED trong ma trận.
o Thí nghiệm phương pháp điều khiển nhiều LED trong ma trận.
o Thí nghiệm các kiểu điều khiển LED sáng tắt và hiển thị thông tin tĩnh hoặc thông tin động với các
màu sắc khác nhau.
Giáo trình thực hành vi xử lý. 19 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
BL
BL
1 VCC
GND 2
+5V 3 16 Characters x 2 Lines
GND
LED+
LED-
GND
VCC
R/W
VEE
POWER
RS
D0
D1
D2
D3
D4
D5
D6
D7
1
2
E
R148
10
11
12
13
14
15
16
2K7
1
2
3
4
5
6
7
8
9
Q25
VCC
C1815
VCC
CONTRAST
R149
10K
J127
8
7
D7
6
D6
5
D5
J128 4
D4
1 3
D3
RS 2 2
D2
ENA 3 1
D1
R/W D0
CTRL LCD DATA LCD
Trên mô hình thí nghiệm có thiết kế sẵn một LCD 16 ký tự x 2 hàng, được sử dụng cho các bài thí nghiệm về
phương pháp điều khiển và hiển thị thông tin trên màn hình tinh thể lỏng (LCD).
J127 (DATA LCD): ngõ vào nhận thông tin dữ liệu (Data) hoặc thông tin lệnh (Command) cho LCD, J128
(CTRL LCD): ngõ vào điều khiển LCD.
Giáo trình thực hành vi xử lý. 20 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Để điều chỉnh độ tương phản của các thông tin hiển thị trên LCD ta tiến hành điều chỉnh biến trở R149. Để bật
đèn chiếu nền cho LCD trong trường hợp ánh sáng môi trường yếu làm việc hiển thị thông tin trên LCD không
được rõ ràng thì ta cung cấp một mức logic cao (5V) vào đầu nối J121 (BACKLIGHT).
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J104 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối LCD với vi điều khiển.
o Thí nghiệm phương pháp điều khiển trạng thái làm việc của LCD.
o Thí nghiệm phương pháp điều khiển LCD hiển thị thông tin tĩnh hay động.
• Sơ đồ nguyên lý:
R147 10K
20. KHOÁI COÂNG TAÉC
J106
1 VCC
GND 2
+5V 3 VCC
GND
POWER
1
2
3
4
5
6
7
8
9
J122 SW27
1
SW0 2
SW1 3
SW2 4
SW3 5
SW4 6
SW5 7
SW6 8
SW7
SWITCH SWITCH
Giáo trình thực hành vi xử lý. 21 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
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.
• Sơ đồ nguyên lý:
J91
KEY0 16. KHOÁI NUÙT NHAÁN
VCC VCC VCC VCC VCC VCC VCC VCC K0 1
K1 2
R125 R126 R127 R128 R129 R130 R131 R132 K2 3
KEY1 J114
4K7 4K7 4K7 4K7 4K7 4K7 4K7 4K7 K3 4
KEY2 1 VCC
SW19 SW20 SW21 SW22 SW23 SW24 SW25 SW26 K4 5
KEY3 GND 2
KEY0 KEY1 KEY 2 KEY 3 KEY 4 KEY 5 KEY 6 KEY 7 K5 6
KEY4 +5V 3
K6 7
KEY5 GND
K7 8
KEY6 POWER
KEY7
K0
K1
K2
K3
K4
K5
K6
K7
PUSH KEY
Nhiệm vụ chính của khối nút nhấn là sử dụng cho các bài thí nghiệm về giao tiếp giữa vi điều khiển với nút
nhấn, lập trình điều khiển dùng nút nhấn. Khối gồm 8 nút nhấn được thiết kế theo nguyên tắc: nếu không nhấn nút
thì mức logic tại bit tương ứng của đầu nối J91 sẽ có mức logic cao (5V) và ngược lại khi nhấn nút thì sẽ có mức
logic cao.
Giáo trình thực hành vi xử lý. 22 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Ngoài ra, khối này còn được sử dụng cho việc tạo ra một xung kích có mức logic thấp (hoặc kích bằng cạnh
xung) cho các khối khác trên mô hình thí nghiệm, ví dụ như cung cấp xung đếm hoặc xung ngắt cho vi điều khiển.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J114 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối nút nhấn với vi điều khiển.
o Thí nghiệm ứng dụng điều khiển thiết bị bằng nút nhấn.
o Tạo các tín hiệu xung có mức logic thấp cho các khối khác trên mô hình thí nghiệm.
• Sơ đồ nguyên lý:
C0 ESC ENTER
5. KHOÁI PHÍM MA TRAÄN C1
C2
C3
Giáo trình thực hành vi xử lý. 23 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
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.
• Sơ đồ nguyên lý:
COM12 COM22
6. KHOÁI RELAY COM11
NC11
COM21
NC21
4 4
3 3
5 NO11 5 NO21
8 NC12 8 NC22
VCC 6 VCC 6
7 NO12 7 NO22
1 1
2 2
R89 R91
330 LS1 330 LS2
D17 D18 RELAY 5V D19 D20 RELAY 5V
LED 1N4148 LED 1N4148
J27 J26
1 NC11 1 NC21
J111
NC11 2 COM11 NC21 2 COM21
1 VCC COM11 3 NO11 COM21 3 NO21
GND 2
NO11 4 NC12 NO21 4 NC22
+5V 3
NC12 5 COM12 NC22 5 COM22
GND COM12 6 NO12 COM22 6 NO22
POWER
NO12 7
NO22 7
GND 8
GND 8
+5V +5V
RELAY 1 OUT RELAY 2 OUT
VCC VCC
Giáo trình thực hành vi xử lý. 24 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
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.
• Sơ đồ nguyên lý:
R95 J33
D22 1K U18 LM555 1
1N4148 7 3 2
PULSE
DSCHG OUT PULSE
R96 VCC PULSE OUT
100K 4 VCC
RST 8 VCC
VCC 1
6 GND
2 THR 5 C9
TRG CV 104
C10 C11
10u 103
Giáo trình thực hành vi xử lý. 25 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
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.
• Sơ đồ nguyên lý:
Giáo trình thực hành vi xử lý. 26 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
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.
• Sơ đồ nguyên lý:
1
2
3
6 6 13 1
D5 7 7 IN6 OUT6 12 2
A J105
D6 8 8 IN7 OUT7 11 3
B POWER
D7 IN8 OUT8 4
C
GND
GND
D
+5V
10 9
VCC COM GND J32
C8 STEPPER2
104
Khối điều khiển động cơ bước được thiết kế trên cơ sở vi mạch ULN2803, khối có thể điều khiển được cùng
lúc hai động cơ bước công suất nhỏ (điện áp hoạt động: 5VDC, dòng điện tiêu thụ: 500 mA).
Giáo trình thực hành vi xử lý. 27 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
J31 (CTRL MOTOR): ngõ vào nhận tín hiệu điều khiển hai động cơ bước từ vi điều khiển; J30 (STEPPER 1),
J32 (STEPPER 2): ngõ ra điều khiển của hai động cơ bước.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J105 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối động cơ bước với vi điều khiển.
o Thí nghiệm ứng dụng điều khiển động cơ bước.
• Sơ đồ nguyên lý:
Khối được thiết kế trên nền tảng vi mạch bộ nhớ giao diện nối tiếp 2 dây, AT24C04, có dung lượng là 4 KB
(512 x 8 bit). Khối được thiết kế nhằm mục đích giúp người sử dụng có thể thí nghiệm các phương pháp ghi/đọc dữ
liệu giữa vi điều khiển với Serial-Eeprom.
J49 (ADDR EEPROM): ngõ vào địa chỉ của bộ nhớ; J50 (CTRL EEPROM): các tín hiệu điều khiển của
Eeprom như ngõ vào dữ liệu nối tiếp, xung clock nối tiếp và tín hiệu chống ghi vào bộ nhớ.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J112 (POWER).
Giáo trình thực hành vi xử lý. 28 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Ứng dụng:
o Thí nghiệm phương pháp kết nối Serial-Eeprom với vi điều khiển.
o Thí nghiệm các phương pháp ghi/đọc dữ liệu giữa vi điều khiển với Serial-Eeprom.
• Sơ đồ nguyên lý:
VCC
4
8
U39 R134
4
8
R133 2 - OP07 10K U40
20K 6 2 - OP07 J93
3 + 6 1
3 + 2
C52
10u V OUT
7
1
7
1
J96 VCC
1 VCC
V1 2
V1 -VCC
VCC V1
VCC
4
8
VCC
2
R137 3
-VCC
20K VCC 4
D44
LM335 POWER
Giáo trình thực hành vi xử lý. 29 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Để mở rộng các ứng dụng giao tiếp giữa vi điều khiển (môi trường số) với môi trường bên ngoài (môi trường
tương tự) và các ứng dụng mang tính thực tế hơn. Vì thế, trên khối được chuẩn bị sẵn khối cảm biến nhiệt với độ
phân giải là 0,5V để người sử dụng có thể nghiên cứu thiết kế và lập trình điều khiển các hệ thống đo nhiệt độ môi
trường và khống chế nhiệt độ bằng vi điều khiển.
J93 (V OUT): điện áp (tương tự) ngõ ra của khối cảm biến nhiệt; J92 (V2): ngõ vào của điện áp so sánh; J96
(V1): ngõ vào của tín hiệu từ cảm biến nhiệt LM335.
LM335 là cảm biến nhiệt độ có thể hoạt động đến 150OC. Tương ứng với nhiệt độ 0OK thì LM335 cho ra điện
áp 0V. Cứ tăng 1OC thì điện áp ra tăng 10mV. Như vậy, với 0OC thì điện áp ra là 2,73V. Để dễ dàng cho việc xử lý
chương trình thì với 0OC điện áp ra nên là 0V. Muốn vậy cần có thêm mạch khuếch đại hiệu để trừ bớt đi 2,73V.
Điện áp ngõ ra tại J93 V OUT = AV(V1 – V2). Suy ra, điện áp ngõ ra thay đổi 10AV (mV) khi nhiệt độ thay
đổi 1OC.
Độ phân giải cần thiết là 0,5OC nên điện áp thay đổi khi nhiệt độ thay đổi 1OC phải bằng 2 lần độ phân giải của
ADC 0809:
10AV (mV) = 2 x 19,6 (mV) → AV = 3,92 → chọn RF = R124 = 39K và RI = R134 = 10K
Tiến hành cân chỉnh mạch: chỉnh biến trở R137 sao cho V1 = 2,73 + 0,01 x tOC (V). Trong thực tế để chính xác
thì ta nhúng LM335 vào nước đá đang tan (0OC). Chỉnh biến trở R133 sao cho V2 = 2,73 V.
Chú ý: nhiệt độ sau khi qua khối cảm biến nhiệt sẽ tạo ra một điện áp tại J93 (V OUT) có giá trị là 39 * tOC
(mV). Với độ phân giải của ADC 0809 là 19,6 mV thì điện áp trên sau khi qua ADC 0809 sẽ có giá trị là 39 * tOC /
19,6 ≈ 2 * tOC.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J135 (POWER).
• Ứng dụng:
o Thí nghiệm ứng dụng đo nhiệt độ môi trường bằng vi điều khiển.
o Giả lập tín hiệu tương tự cung cấp cho khối ADC.
Giáo trình thực hành vi xử lý. 30 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
Giáo trình thực hành vi xử lý. 31 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Trong trường hợp các port xuất nhập của vi điều khiển cần phải điều khiển những thiết bị công suất lớn hoặc
phải điều khiển cùng lúc nhiều thiết bị trên một port. Lúc này đòi hỏi cần phải có các bộ khuếch đại dòng điện ngõ
ra tại các port xuất nhập của vi điều khiển thì nó mới có thể đáp ứng được công việc điều khiển nêu trên.
Trên mô hình thí nghiệm được thiết kế sẵn bốn bộ đệm dữ liệu có chức năng khuếch đại các dòng điện tại ngõ
vào của chúng. Dòng điện tại ngõ ra là khoảng 300 - 500 mA. Lưu ý một điều rất quan trọng trong khối này là các
bộ đệm ULN2803 sử dụng ở đây là các bộ đệm có đảo.
J53, J68, J61, J78 (INPUT): ngõ vào của các bộ đệm dữ liệu; J54, J69, J62, J79 (OUTPUT): ngõ ra của các bộ
đệm dữ liệu (ngõ ra có đảo trạng thái so với ngõ vào).
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J109 (POWER).
• Ứng dụng:
o Được sử dụng để thực hiện việc kết nối giữa các thiết bị ngoại vi công suất cao với chip vi điều
khiển.
o Khuếch đại dòng điện điều khiển cung cấp cho các thiết bị công suất cao.
o Lưu ý khối này là khối khuếch đại đệm đảo.
Giáo trình thực hành vi xử lý. 32 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
VCC
16
J24 U15A 74139 J25
J22 U14 74138 J23 1 2 4 1
SEL A SEL0
GNDVCC
1 1 15 1 2 3 A Y0 5 2
SEL A 2 2 A Y0 14 2
SEL0 SEL B B Y1 6 3
SEL1
SEL B 3 3 B Y1 13 3
SEL1 DECODER 2-4 1 Y2 7 4
SEL2
SEL C C Y2 12 4
SEL2 G Y3 SEL3
DECODER 3-8 Y3 11 5
SEL3 DECODER OUT
VCC Y4 10 6
SEL4
8
6 Y5 9 7
SEL5 J28 U15B 74139 J29
VCC 4 G1 Y6 7 8
SEL6 1 14 12 1
5 G2A Y7 SEL7 SEL A 2 13 A Y0 11 2
SEL0
G2B VCC DECODER OUT
SEL B B Y1 10 3
SEL1
C5 C6 16 DECODER 2-4 15 Y2 9 4
SEL2
104 104 VCC 8 J36 G Y3 SEL3
GND 1 VCC DECODER OUT
GND 2
+5V 3
GND
POWER
Giáo trình thực hành vi xử lý. 33 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
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:
Giáo trình thực hành vi xử lý. 34 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
EOC
WR 2 VCC
J118 U54A 1 6 11
1 3 7402 22 START VCC 13
CS0809 2 ALE GND
CS0809
CS0809 RD 5
7
U54B 4
6 7402
Nhằm mục đích giúp sinh viên có thể nghiên cứu, thiết kế và tìm hiểu về nguyên lý chuyển đổi tín hiệu tương
tự sang tín hiệu số và ứng dụng của các vi mạch ADC trong thực tế. Từ đó có thể dễ dàng và thuận tiện trong việc
thiết kế được các hệ thống chuyển đổi tín hiệu tương tự sang tín hiệu số dùng vi điều khiển kết hợp vi mạch ADC.
Giáo trình thực hành vi xử lý. 35 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Trên mô hình thí nghiệm đã thiết kế sẵn một vi mạch ADC 0809, là một vi mạch chuyển đổi tương tự – số 8 bit
có 8 ngõ vào tín hiệu tương tự, để thực hiện việc chuyển đổi tín hiệu này. J112 (ANALOG IN): các ngõ vào tín
hiệu tương tự (có 8 ngõ vào); J113 (DIGITAL OUT): ngõ ra tín hiệu số 8 bit; J118 (CS 0809): ngõ vào cho phép
ADC hoạt động. Việc chọn lựa ngõ vào của tín hiệu tương tự sẽ do khối vi điều khiển quyết định thông qua các
đường địa chỉ A0..A2. Quá trình thực hiện chuyển đổi và đưa dữ liệu tới vi điều khiển sẽ do khối vi điều khiển
quản lý thông qua hai tín hiệu RD\ và WR\. Tần số lấy mẫu của chip ADC là 750KHz được lấy từ bộ chia tần trong
khối vi điều khiển.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối D34 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối vi mạch ADC với vi điều khiển.
o Thí nghiệm phương pháp chuyển đổi dạng tín hiệu từ tương tự sang số sử dụng vi mạch ADC0809.
• Sơ đồ nguyên lý:
R144 V-
2K7 15 13
VR- V+ +12V
C72 R146
104 2K7
C71 C73 C74
10u 104 104
R150 VCC -VCC
2K7
+12V
Giáo trình thực hành vi xử lý. 36 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Nhằm mục đích giúp sinh viên có thể nghiên cứu, thiết kế và tìm hiểu về nguyên lý chuyển đổi tín hiệu số sang
tín hiệu tương tự và ứng dụng của các vi mạch DAC trong thực tế. Từ đó có thể dễ dàng và thuận tiện trong việc
thiết kế được các hệ thống chuyển đổi tín hiệu số sang tín hiệu tương tự dùng vi điều khiển kết hợp vi mạch DAC.
Trên mô hình thí nghiệm đã thiết kế sẵn một vi mạch DAC 0808, là một vi mạch chuyển đổi số – tương tự 8
bit, để thực hiện việc chuyển đổi tín hiệu này. J119 (DIGITAL IN): ngõ vào tín hiệu số 8 bit; J120 (ANALOG
OUT): ngõ ra tín hiệu tương tự (dạng điện áp). Vi mạch U56 (LM741) làm nhiệm vụ biến đổi tín hiệu tương tự tại
ngõ ra của vi mạch DAC từ dạng dòng điện sang dạng điện áp. Biến trở R145: điều chỉnh mức điện áp chuẩn.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J108 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối vi mạch DAC với vi điều khiển.
o Thí nghiệm phương pháp chuyển đổi dạng tín hiệu từ số sang tương tự sử dụng vi mạch DAC0808.
Giáo trình thực hành vi xử lý. 37 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
3 5 GND MOT
A0 SDA
VCC J147
4
1 VCC
GND 2
C62 C63
+5V 3
104 104
GND
POWER
Nhằm mục đích giúp sinh viên có thể nghiên cứu, thiết kế và tìm hiểu về các vi mạch đồng hồ thời gian thực
(RTC) để từ đó có thể dễ dàng và thuận tiện trong việc thiết kế được các hệ thống đồng hồ số dùng vi điều khiển
kết hợp vi mạch RTC.
Trên mô hình thí nghiệm đã thiết kế sẵn hai loại RTC: loại giao tiếp song song (DS12C887) và loại giao tiếp
nối tiếp (PCF8583). Lưu ý rằng loại RTC nối tiếp không lưu giữ được các thông số hoạt động khi nguồn cung cấp
bị mất.
Giáo trình thực hành vi xử lý. 38 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
o Loại giao tiếp song song (DS12C887): J103 (ADD/DATA BUS): bus địa chỉ và dữ liệu đa hợp;
J104 (READ/WRITE): tín điều khiển ghi và đọc RTC; J105 (CTRL P-RTC): tín hiệu ngắt, chốt địa
chỉ, reset RTC và tín hiệu xung đa tần; J108 (CS RTC): tín hiệu cho phép RTC hoạt động.
o Loại giao tiếp nối tiếp (PCF8583): J109 (CTRL S-RTC): tín hiệu địa chỉ, ngắt, xung clock nối tiếp
và dữ liệu nối tiếp.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J147 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp kết nối các vi mạch RTC với vi điều khiển.
o Thí nghiệm lập trình ứng dụng thiết kế đồng hồ số sử dụng vi mạch RTC kiểu song song.
o Thí nghiệm lập trình ứng dụng thiết kế đồng hồ số sử dụng vi mạch RTC kiểu nối tiếp.
• Sơ đồ nguyên lý:
J111
J110 U50 4094 24. KHOÁI THANH GHI DÒCH U51 74165
1 1 4 1 10 9
STR 2 2 STR Q1 5 2
D0 J114 DS QH 7
IN 3 3 D Q2 6 3
D1 1 11 QH
CLK 15 CLK Q3 7 4
D2 D0 2 12 P0
SERIAL IN 1 OE Q4 14 5
D3 D1 3 13 P1
VCC Q5 13 6
D4 D2 4 14 P2
Q6 12 7
D5 D3 5 3 P3
Q7 11 8
D6 D4 6 4 P4
VCC Q8 D7 D5 7 5 P5
16 9 PARALLEL OUT 1
D6 8 6 P6
8 VCC QS1 10
D7 P7
GND QS2 PARALLEL IN CLK-3 2
15 CP1 VCC
J115 U53 74164 J116 CP2 16
1 1 3 1 J117 1 VCC 8
IN 2 2 A Q0 4 2
D0 1 PL GND
CLK B Q1 5 3
D1 CLK 2 LD
SERIAL IN 2 8 Q2 6 4
D2 LD 3 OUT
CLK Q3 10 5
D3 OUT
9 Q4 11 6
D4 SERIAL OUT VCC
14 CLR Q5 12 7
D5 J115
VCC
7 VCC Q6 13 8
D6 1 VCC
GND Q7 D7 C67 C68 C69
GND 2
PARALLEL OUT 2 104 104 104
+5V 3
GND
POWER
Giáo trình thực hành vi xử lý. 39 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Khối thanh ghi dịch trên mô hình thí nghiệm được sử dụng để nghiên cứu thí nghiệm và thiết kế các ứng dụng
chuyển đổi dữ liệu từ dạng nối tiếp sang dạng song song 8 bit và ngược lại. Việc nghiên cứu thí nghiệm tính năng
chuyển đổi này giúp cho bạn có thể tìm hiểu sâu hơn về nguyên lý hoạt động và phương pháp điều khiển cũng như
chế độ hoạt động của port nối tiếp trong chip vi điều khiển (mà chủ yếu là chế độ thanh ghi dịch của port nối tiếp).
Port nối tiếp của chip vi điều khiển có thể được sử dụng để mở rộng thành một hay nhiều port xuất song song.
Để thực hiện điều này, ta sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và sử dụng vi
mạch chuyển đổi từ dạng nối tiếp ra dạng song song (Serial In – Parallel Out) như 74164 (U53) và 4094 (U50). Với
hoạt động xuất ở chế độ thanh ghi dịch thì trên vi điều khiển ngõ RXD là ngõ ra dữ liệu nối tiếp, ngõ TXD là ngõ
ra xung clock.
Port nối tiếp của chip vi điều khiển có thể được sử dụng để mở rộng thành một hay nhiều port nhập song song.
Để thực hiện điều này, ta sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và sử dụng vi
mạch chuyển đổi từ dạng song song ra dạng nối tiếp (Parallel In – Serial Out) như 74165 (U51). Với hoạt động
xuất ở chế độ thanh ghi dịch thì trên vi điều khiển ngõ RXD là ngõ vào dữ liệu nối tiếp, ngõ TXD là ngõ ra xung
clock.
U50 (4094) và U53 (74164) là hai vi mạch chuyển đổi dữ liệu từ dạng nối tiếp ra dạng song song. J110
(SERIAL IN1), J115 (SERIAL IN2): ngõ vào của dữ liệu nối tiếp, IN: ngõ vào của dữ liệu nối tiếp, CLK: ngõ vào
của xung clock hay xung dịch chuyển dữ liệu, STR: ngõ vào của xung chốt dữ liệu ngõ ra. J111 (PARALLEL
OUT1), J116 (PARALLEL OUT2): ngõ ra của dữ liệu song song 8 bit.
U51 (74165) là vi mạch chuyển đổi dữ liệu từ dạng song song ra dạng nối tiếp. J114 (PARALLEL IN): ngõ vào
của dữ liệu song song 8 bit. J117 (SERIAL OUT): ngõ ra của dữ liệu nối tiếp, OUT: ngõ ra của dữ liệu nối tiếp,
CLK: ngõ vào của xung clock hay xung dịch chuyển dữ liệu, LD: cho phép tải dữ liệu song song vào vi mạch
(LD=0: tải dữ liệu mới từ ngõ vào song song vào trong vi mạch, LD=1: chốt dữ liệu đã nhận được từ ngõ vào song
song lại và thực hiện việc ghi dịch dữ liệu này.
Giáo trình thực hành vi xử lý. 40 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J115 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp xuất nhập dữ liệu dạng nối tiếp sử dụng phương thức thanh ghi dịch.
o Thí nghiệm phương pháp chuyển đổi kiểu dữ liệu từ dạng song song sang dạng nối tiếp sử dụng
phương thức thanh ghi dịch.
o Thí nghiệm phương pháp chuyển đổi kiểu dữ liệu từ dạng nối tiếp sang dạng song song sử dụng
phương thức thanh ghi dịch.
• Sơ đồ nguyên lý:
DATA IN
D3 D3
PORT A
31 1 4 PA3 5 15 4 D3
D4 D3 PA3 D4 A3 B3
J94
J95
30 40 5 PA4 6 14 5 D4
D5 29 D4 PA4 39 6 D5 7 A4 B4 13 6
D5 PA5 PA5 D6 A5 B5 D5
D6 28 38 7 8 12 7
D6 PA6 PA6 D7 A6 B6 D6
D7 27 37 8 PA7 9 11 8 D7
D7 PA7 J98 A7 B7
A0 9 18 1 PB0 245 1 19 20
A0 PB0 G VCC VCC
A1 8 19 2 2 1 10
A1 PB1 20 3
PB1 245 DIR GND
PB2 PB2
PORT B
RD 5 22 5 PB4 2 19 1 D0
J100 WR 36 RD PB4 23 6 D1 3 D0 Q0 18 2
WR PB5 PB5 D1 Q1 D1
DATA OUT
1 6 24 7 D2 4 17 3
8255 CS PB6 PB6 D3 D2 Q2 D2
8255 2 35 25 8 PB7 5 16 4 D3
RESET PB7 D4 D3 Q3
J99
6 15 5 D4
CS8255 14 1 D5 7 D4 Q4 14 6
PC0 PC0 D5 Q5 D5
15 2 D6 8 13 7
PC1 PC1 D6 Q6 D6
16 3 PC2 D7 9 12 8 D7
PC2 D7 Q7
PORT C
17 4 PC3
PC3
J101
13 5 PC4 11 20
PC4 LE VCC VCC
VCC 12 6 1 10
PC5 PC5 OE GND
26 11 7 PC6
7 VCC PC6 10 8 U45 74573
GND PC7 PC7 D0 2 19 1 D0
D1 3 D0 Q0 18 2
D1 Q1 D1
DATA OUT
VCC D2 4 17 3
D3 D2 Q2 D2
5 16 4 D3
D3 Q3
J102
D4 6 15 5
14
D5 D4 Q4 D4
7 14 6
WR 2 WR 5 D6 8 D5 Q5 13 7
D5
D6 Q6 D6
U47A 1 U47B 4 D7 9 12 8 D7
J106 3 7402 J107 6 7402 D7 Q7
573A 1 573B 1 11 20
LE VCC VCC
2 2 1 10
573A 573B OE GND
VCC
7
CS573A CS573B
POWER
Giáo trình thực hành vi xử lý. 41 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Như ta đã biết, vi điều khiển chỉ có tối đa bốn port xuất nhập để truyền thông với các thiết bị bên ngoài, đó là
chưa xét tới trường hợp khi vi điều khiển hoạt động ở chế độ sử dụng bộ nhớ ngoài thì vi điều khiển chỉ còn lại duy
nhất một port xuất nhập. Tuy nhiên trong thực tế có những trường hợp ta cần phải truyền thông với một số lượng
lớn hơn các thiết bị ngoại vi. Chính vì những đặc điểm này đã đặt ra cho chúng ta một vần để là phải làm cách nào
để nâng cao (mở rộng) được số lượng port xuất nhập cho vi điều khiển.
Khối mở rộng port I/O trên mô hình được tạo ra từ các vi mạch chuyển dụng để mở rộng port xuất nhập cho vi
điều khiển trên thực tế như: 8255 (mở rộng port xuất nhập), 74245(mở rộng port nhập), 74573 (mở rộng port xuất),
từ giúp cho bạn thuận tiện trong việc thực hiện các bài thí nghiệm về vấn đề này. Ơõ đây có một điểm mà bạn cần
lưu ý là các vi mạch 8255, 47245, 74573 trên đây đều được thiết kế để hoạt động tương tự như một bộ nhớ ngoài
của vi điều khiển (có nghĩa là sự hoạt động truyền thông của chúng diễn ra thông qua bus địa chỉ A0-A1, bus dữ
liệu D0-D7, bus điều khiển RD và WR, tín hiệu giải mã địa chỉ CS lấy từ khối vi điều khiển.
U41 (8255) cho phép mở rộng port xuất và port nhập. Bus dữ liệu D0-D7 của vi điều khiển sẽ được điều
khiển xuất nhập thông qua ba port J94 (PORT A), J97 (PORT B), J9101 (PORT C) dưới sự điều khiển của bus địa
chỉ A0-A1, tín hiệu RD (điều khiển đọc/nhập dữ liệu), tín hiệu WR (điều khiển ghi/xuất dữ liệu) và sự cho phép
của tín hiệu J100 (CS8255).
U42 (74245) cho phép mở rộng port nhập. Bus dữ liệu D0-D7 của vi điều khiển sẽ được điều khiển nhập
thông qua port J95 (DATA IN) dưới sự cho phép của tín hiệu J98 (CS245).
Giáo trình thực hành vi xử lý. 42 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
U44 (74573) và U45 (74573) cho phép mở rộng port xuất. Bus dữ liệu D0-D7 của vi điều khiển sẽ được điều
khiển xuất thông qua port J99 (DATA OUT) và J102 (DATA OUT) dưới sự điều khiển của tín hiệu WR (điều
khiển ghi/xuất dữ liệu) và sự cho phép của tín hiệu J107 (CS573A), J106 (CS573B).
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J107 (POWER).
• Ứng dụng:
o Thí nghiệm phương pháp xuất nhập dữ liệu dạng song song sử dụng các vi mạch số 74245, 74573.
o Thí nghiệm phương pháp lập trình điều khiển vi mạch PPI 8255 bằng vi điều khiển.
o Thí nghiệm các phương pháp mở rộng (tăng thêm số lượng) port xuất nhập dữ liệu.
Giáo trình thực hành vi xử lý. 43 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
VCC
14. KHOÁI GIAO TIEÁP PC
VCC
C26 C27 C28
10u 10u 104
C72
2
10u
J55
C1+
V+
C1-
16 1 TXD
P1 VCC 2
1 N/A1 8 9
RXD
6 DSR R2IN R2OUT TXD/RXD
2 RXD 7 10 J58
7 RTS T2OUT T2IN N/A1 1
3 TXD RXD 2
N/A
8 CTS 12 13 TXD 3
RXD
4 DTR 14 R1OUT R1IN 11 DTR 4
TXD
9 N/A2 T1OUT T1IN DSR 5
DTR
5 RTS 6
DSR
GND
RTS
C2+
C2-
U29 CTS 7
CTS
V-
RS232C MAX232 N/A2 8
N/A
15
RS232C-PC
4
6
C30
10u
C31
P2 10u J65
1 STROBE\ 1
14 AUTOFEED\ 2
D0
2 D0 3
D1
15 ERROR\ 4
D2
3 D1 5
D3
16 INIT 6
D4
4 D2 7
D5
17 SEL IN\ 8
D6
5 D3 D7
18 GND DATA LPT-PC
6 D4 J70
19 GND 1
7 D5 2
NC
20 GND 3
NC
8 D6 4
NC
21 GND 5
ERROR\
9 D7 6
SEL
J61 22 GND 7
PE
1 VCC 10 ACK 8
ACK\
GND 2 23 GND BUSY
+5V 3 11 BUSY STATUS LPT-PC
GND 24 GND J75
POWER 12 PE 1
25 GND 2
STROBE\
13 SEL 3
AF\
J77 4
INIT
VCC LPT
SEL IN\
1 CONTROL LPT-PC
2 VCC JR1 PS2
3 6 5 J81
4 J82 4 3 1
2 2 1 2
CLOCK
1
-DATA DATA
USB 1
+DATA PS2-1-PC
USB1-PC VCC JR2 PS2 J85
J86 J87 6 5 1
VCC 2 4 3 2
CLOCK
1 1
-DATA 2 1
DATA
2
+DATA PS2-2-PC
3 USB2-PC
4
USB 2
Giáo trình thực hành vi xử lý. 44 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
Trên mô hình thí nghiệm được thiết kế sẵn một số chuẩn giao tiếp thông dụng trên máy tính như: LPT, RS232,
USB và PS2.
Khi cần thí nghiệm loại cổng giao tiếp nào thì ta dùng loại cáp tương ứng để kết nối cổng giao tiếp của máy
tính với cổng giao tiếp tương ứng trên mô hình thí nghiệm lại với nhau. Để thuận tiện và linh động trong việc thí
nghiệm, tất cả các đường tín hiệu của các cổng giao tiếp này đều đã được nối đến các đầu nối trên mô hình thí
nghiệm. Ta có thể kết nối vi điều khiển với các cổng giao tiếp thông qua các đầu nối này.
o Cổng LPT: J65 (DATA LPT-PC): bus dữ liệu; J70 (STATUS LPT-PC): bus trạng thái; J75
(CONTROL LPT-PC): bus điều khiển.
o Cổng RS232: J55 (TXD/RXD): giao tiếp có thông qua MAX232; J58 (RS232C-PC): giao tiếp trực
tiếp.
o Cổng USB: J82 (USB1-PC), J87 (USB2-PC): tín hiệu dữ liệu; chân VCC và GND của cổng đã
được kết nối sẵn vào mô hình.
o Cổng PS2: J81 (PS2-1-PC), J85 (PS2-2-PC): tín hiệu dữ liệu và xung clock; chân VCC và GND
của cổng đã được kết nối sẵn vào mô hình.
Lưu ý để khối này hoạt động ta cần phải cấp nguồn cho khối thông qua đầu nối J61 (POWER).
• Ứng dụng:
Thí nghiệm phương pháp giao tiếp giữa vi điều khiển với máy tính thông qua các chuẩn kết nối LPT, RS232,
USB và PS2.
Giáo trình thực hành vi xử lý. 45 Biên soạn: Phạm Quang Trí
Chương 1: Cấu hình của mô hình thí nghiệm vi điều khiển.
• Sơ đồ nguyên lý:
BUS SWITCH BUS BUS SWITCH BUS 23. KHOÁI MÔÛ ROÄNG
J129 SW30 J130 J131 SW31 J132 J133 SW32 J134
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7
8 8 8 8 8 8
Trên thực tế, mỗi port của vi điều khiển có thể cùng lúc điều khiển nhiều thiết bị. Chính vì mục đích này mà
trên mô hình thí nghiệm này đã được thiết kế sẵn khối mở rộng để có thể tăng thêm số lượng thiết bị ngoại vi được
nối vào cùng một port điều khiển.
Trong khối mở rộng gồm 5 bộ chuyển đổi mở rộng 8 bit độc lập nhau (SW28, SW29, SW30, SW31, SW32).
Các bộ chuyển đổi mở rộng này có nhiệm vụ liên kết hai cặp đầu nối của nó (J123-J124, J125-J126, J129-J130,
J131-J132, J133-J134) lại với nhau theo từng bit một (khi công tắc tương ứng ở vị trí ON).
• Ứng dụng:
Được sử dụng để mở rộng, nâng cao khả năng kết nối các port xuất nhập của chip vi điều khiển đến cùng một
lúc nhiều thiết bị ngoại vi hơn.
Giáo trình thực hành vi xử lý. 46 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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).
Giáo trình thực hành vi xử lý. 48 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.
2.2 Hướng dẫn sử dụng phần mềm MCU Program Loader V2.0:
Sử dụng phần mềm tương thích để soạn thảo chương trình điều khiển mong muốn cho vi điều khiển. Sau khi đã
soạn thảo xong và kiểm tra hoàn chỉnh chương trình điều khiển, bạn cần phải biên dịch chương trình này sang ngôn
ngữ máy ở dạng tập tin Intel 8 bit HEX và lưu vào trong máy tính.
Các bước thao tác để tải một chương trình điều khiển từ máy tính sang chip vi điều khiển bằng cách sử dụng
phần mềm MCU Program Loader V2.0.
• Bước 1: Kết nối cáp RS232 giữa cổng COM của máy tính với cổng COM trên khối lập trình vi điều
khiển của mô hình thí nghiệm. Nếu máy tính có nhiều cổng COM thì kết nối với cổng nào cũng được
vì phần mềm sẽ tự nhận dạng cổng COM sử dụng.
• Bước 2: Gắn chip vi điều khiển cần lập trình vào trong socket tương ứng.
Lưu ý rằng:
o Chúng ta chỉ gắn một loại vi điều khiển vào trong socket tương ứng mà thôi (hoặc loại vi điều
khiển 40 chân hoặc loại vi điều khiển 20 chân). Không được gắn cùng lúc hai loại vi điều
khiển vào cả hai socket vì như thế thiết bị sẽ không hoạt động được.
o Chân số 1 của chip vi điều khiển phải được gắn sao cho nằm tại vị trí gần cần gạt của socket.
o Gạt cần xuống để khoá chặt chip vào mạch.
Giáo trình thực hành vi xử lý. 49 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.
• Bước 3: Bật các công tắc nguồn trên mô hình để cấp nguồn cho khối lập trình vi điều khiển. Sau đó
nhấp đúp chuột vào biểu tượng ProLoad2 để khởi động phần mềm MCU Program Loader V2.0. Giao
diện làm việc của phần mềm sẽ được hiện lên như hình minh họa dưới đây.
Lưu ý rằng:
o Trường hợp lỗi không kết nối thiết bị (hình minh họa bên trái) hoặc lỗi không nhận dạng chip
(hình minh họa bên phải), giao diện làm việc sẽ như sau:
o Khi xuất hiện các trường hợp lỗi đó ta cần kiểm tra lại: nguồn cấp cho thiết bị, cáp kết nối
RS232, chip còn tốt hay đã hỏng, gắn chip vào mạch có đúng chiều hay không, gắn hai chip
vào hai socket cùng lúc phải không (chỉ được phép gắn một chip vào một socket bất kỳ mà
thôi).
Giáo trình thực hành vi xử lý. 50 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.
• Bước 4: Tiến hành nạp chương trình từ máy tính vào bộ nhớ của chip hoặc đọc dữ liệu từ bộ nhớ của
chip vào trong máy tính.
Nhấp chuột vào nút Send. Một hộp thoại sẽ hiện lên để bạn chọn tập tin chương trình
cần nạp cho vi điều khiển.
Giáo trình thực hành vi xử lý. 51 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.
Chọn tập tin chương trình cần thiết, sau đó nhấn vào nút Open. Phần mềm sẽ tiến hành
xóa dữ liệu cũ có trên chip, nhận dạng lại thiết bị và tiến hành nạp dữ liệu vào chip.
Quá trình nạp hoàn tất khi xuất hiện thông báo Write Successful trên giao diện làm
việc của phần mềm.
Lưu ý rằng: Số lượng byte bộ nhớ đã sử dụng mà phần mềm thông báo sau khi đã nạp chip xong
có thể không bằng (nhưng phải là nhỏ hơn) với số lượng byte của tập tin chương trình ngoài thực
tế. Lý do là phần mềm chỉ kiểm tra bộ nhớ của chip sau khi đã nạp xong và kết luận là byte đã sử
dụng khi giá trị của byte đó khác FFH mà thôi, còn nếu giá trị của byte đó bằng FFH thì phần
mềm coi như là byte chưa được sử dụng.
Giáo trình thực hành vi xử lý. 52 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.
Bạn cần phải nhập tên tập tin vào mục File name, sau đó nhấp chuột vào nút Save để
tiếp tục quá trình xử lý. Phần mềm sẽ tiến hành đọc chương trình trong vi điều khiển
và lưu vào máy tính tại nơi mà bạn đã xác định ở trên.
Giáo trình thực hành vi xử lý. 53 Biên soạn: Phạm Quang Trí
Chương 2: Hướng dẫn sử dụng phần mềm MCU Program Loader.
Quá trình đọc chương trình hoàn tất khi xuất hiện thông báo File Saved trên giao diện
làm việc của phần mềm.
• Bước 5: Sau khi hoàn tất quá trình nạp (hoặc đọc chương trình) từ máy tính sang vi điều khiển (hoặc từ
vi điều khiển sang máy tính), bạn tắt các công tắc nguồn trên mô hình để ngưng cấp nguồn cho khối lập
trình vi điều khiển và tháo chip ra khỏi bộ nạp.
Tiến hành theo đúng trình tự đã hướng dẫn bên trên bạn sẽ hoàn tất một cách rất dễ dàng việc nạp chương trình
(hoặc đọc chương trình) cho chip vi điều khiển. Bạn cần phải chú ý đến các điểm rất quan trọng là:
• Luôn luôn phải tắt nguồn cung cấp cho thiết bị nạp trước khi tiến hành tháo/gắn chip vi điều khiển
vào socket nhằm tránh gây hỏng chip vi điều khiển này.
• Số lượng byte bộ nhớ đã sử dụng mà phần mềm thông báo sau khi đã nạp chip xong có thể không
bằng (nhưng phải là nhỏ hơn) với số lượng byte của tập tin chương trình ngoài thực tế (là số byte
mà bạn thấy trong quá trình phần mềm nạp chương trình cho vi điều khiển).
Giáo trình thực hành vi xử lý. 54 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
Giáo trình thực hành vi xử lý. 47 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 49 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 1: Chương trình điều khiển 8 LED được nối với Port0 sáng tắt (có sử dụng bộ đệm đảo).
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY500MS
MOV P0,#0FFH ;LED SANG
LCALL DELAY500MS
SJMP CHOPTAT ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
Giáo trình thực hành vi xử lý. 50 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 1: Chương trình điều khiển 8 LED được nối với Port0 sáng tắt (có sử dụng bộ đệm đảo).
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng tắt.
• Bài 2: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port0 và Port1) sáng tắt.
• Bài 3: Hãy viết chương trình điều khiển 8 LED được nối với Port0 sáng, 8 LED được nối với Port1 tắt rồi
sau đó 8 LED được nối với Port0 tắt, 8 LED được nối với Port1 sáng.
• Bài 4: Nếu muốn thay đổi tốc độ sáng tắt nhanh hay chậm thì bạn phải làm gì? Thử thực hiện xem ?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 51 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 2: Chương trình điều khiển đếm lên nhị phân 8 bit và hiển thị trên 8 LED được nối với Port0 (có sử dụng
bộ đệm đảo).
Giáo trình thực hành vi xử lý. 52 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 3: Chương trình điều khiển 8 LED được nối với Port0 sáng dần và tắt hết (có sử dụng bộ đệm đảo).
Giáo trình thực hành vi xử lý. 53 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 3: Chương trình điều khiển 8 LED được nối với Port0 sáng dần và tắt hết (có sử dụng bộ đệm đảo).
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DATADISP: ;VUNG DU LIEU HIEN THI
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG DAN VA TAT HET
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
MAIN:
MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
LAP:
SETB C ;C=1
MOV P0,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC LAP ;CHUA SANG HET THI LAM TIEP
SJMP MAIN ;QUAY LAI
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng dần và tắt hết.
• Bài 2: Hãy viết chương trình điều khiển 8 LED được nối với Port2 sáng hết và tắt dần.
• Bài 3: Hãy viết chương trình điều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4: Hãy viết chương trình điều khiển 8 LED được nối với Port1 sáng dần và tắt dần.
• Bài 5: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port2 và Port3) sáng dần và tắt dần.
• Bài 6: Hãy viết chương trình điều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 54 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 4: Chương trình điều khiển 8 LED được nối với Port0 sáng đuổi (có sử dụng bộ đệm đảo).
Giáo trình thực hành vi xử lý. 55 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 4: Chương trình điều khiển 8 LED được nối với Port0 sáng đuổi (có sử dụng bộ đệm đảo).
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng đuổi.
• Bài 2: Hãy viết chương trình điều khiển 8 LED được nối với Port1 tắt đuổi.
• Bài 3: Hãy viết chương trình điều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port0 và Port1) sáng đuổi.
• Bài 5: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port2 và Port3) tắt đuổi.
• Bài 6: Hãy viết chương trình điều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 56 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 5: Chương trình điều khiển 8 LED được nối với Port0 sáng dồn (có sử dụng bộ đệm đảo).
Giáo trình thực hành vi xử lý. 57 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 5: Chương trình điều khiển 8 LED được nối với Port0 sáng dồn (có sử dụng bộ đệm đảo).
MOV A,R3 ;DON LED
RL A
MOV R3,A
DJNZ R2,LAP1 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP2 ;CHUA HOAN TAT CHU TRINH? QUAY LAI
MOV P0,#00H ;HIEN THI TAT HET
ACALL DELAY500MS
SJMP MAIN ;QUAY LAI TU DAU KHI DA XONG
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển 8 LED được nối với Port3 sáng dồn.
• Bài 2: Hãy viết chương trình điều khiển 8 LED được nối với Port2 tắt dồn.
• Bài 3: Hãy viết chương trình điều khiển tương tự như hai bài tập 1 và 2 nhưng là theo chiều ngược lại.
• Bài 4: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port1 và Port3) sáng dồn.
• Bài 5: Hãy viết chương trình điều khiển 16 LED được nối với hai Port (Port2 và Port0) tắt dồn.
• Bài 6: Hãy viết chương trình điều khiển tương tự như hai bài tập 4 và 5 nhưng là theo chiều ngược lại.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 58 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 6: Chương trình điều khiển 8 LED được nối với Port0 hoạt động bằng cách tổng hợp các phương pháp điều
khiển đã thực tập (có sử dụng bộ đệm đảo).
Giáo trình thực hành vi xử lý. 59 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 6: Chương trình điều khiển 8 LED được nối với Port0 hoạt động bằng cách tổng hợp các phương pháp điều
khiển đã thực tập (có sử dụng bộ đệm đảo).
;****************************************************
SANGDON: ;CTC SANG DON
MOV R7,#3 ;SO LAN THUC HIEN
SOLAN5:
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN
LAP4:
MOV R2,00H
MOV R3,#01H
LAP5:
MOV A,R3
ORL A,R1
MOV P0,A ;HIEN THI
ACALL DELAY500MS
MOV A,R3 ;DON LED
RL A
MOV R3,A
DJNZ R2,LAP5 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP4 ;CHUA HOAN TAT CHU TRINH? QUAY LAI
MOV P0,#00H ;HIEN THI TAT HET
ACALL DELAY500MS
DJNZ R7,SOLAN5 ;GIAM SO LAN THUC HIEN BAI
RET
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0F6H
MOV TL0,#3CH
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển sao cho phần sáng tắt của chương trình ví dụ trên được thực hiện
10 lần (các phần khác không thay đổi).
• Bài 2: Hãy viết chương trình điều khiển sao cho phần đếm lên nhị phân chương trình ví dụ trên được thực
hiện 10 lần (các phần khác không thay đổi).
• Bài 3: Hãy viết chương trình điều khiển sao cho phần sáng dần và tắt dần của chương trình ví dụ trên được
thực hiện 10 lần (các phần khác không thay đổi).
• Bài 4: Hãy viết chương trình điều khiển sao cho phần sáng đuổi của chương trình ví dụ trên được thực hiện
10 lần (các phần khác không thay đổi).
• Bài 5: Hãy viết chương trình điều khiển sao cho phần sáng dồn của chương trình ví dụ trên được thực hiện
10 lần (các phần khác không thay đổi).
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 60 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 7: Chương trình con điều khiển tạo thời gian trễ 200µs, 20ms, 2s sử dụng Timer.
Giáo trình thực hành vi xử lý. 61 Biên soạn: Phạm Quang Trí
A. HỆ THỐNG ĐIỀU KHIỂN LED ĐƠN
Bài 7: Chương trình con điều khiển tạo thời gian trễ 200µs, 20ms, 2s sử dụng Timer.
CLR TR0
CLR TF0
RET
END
• Ứng dụng chương trình tạo thời gian trễ 2s:
;***************************************************
;CHUONG TRINH DIEU KHIEN 8 LED SANG TAT
;***************************************************
;KET NOI: 8 LED -> PORT0 (CO DEM DAO).
;***************************************************
ORG 00H
CHOPTAT:
MOV P0,#00H ;LED TAT
LCALL DELAY2S
MOV P0,#0FFH ;LED SANG
LCALL DELAY2S
SJMP CHOPTAT ;QUAY LAI
;***************************************************
;CHUONG TRINH CON TAO THOI GIAN TRE
;***************************************************
;TIME DELAY: 2S
;***************************************************
;TUONG DOI: TIME = (10000H-[TH0,TL0]H)*[R0]*T
;CHINH XAC: TIME = 2T+1T+2T+(2T+2T+1T+(10000H-[TH0,TL0]H)*T+1T+1T+2T)*[R0]+2T+2T
;VOI T LA CHU KY MAY
;***************************************************
DELAY2S:
PUSH 00H
MOV R0,#200
MOV TMOD,#01H
DEL:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình con điều khiển tạo thời gian trễ 250µs sử dụng Timer.
• Bài 2: Hãy viết chương trình con điều khiển tạo thời gian trễ 1ms sử dụng Timer.
• Bài 3: Hãy viết chương trình con điều khiển tạo thời gian trễ 100ms sử dụng Timer.
• Bài 4: Hãy viết chương trình con điều khiển tạo thời gian trễ 1s sử dụng Timer.
• Bài 5: Hãy viết chương trình con điều khiển tạo thời gian trễ 3s sử dụng Timer.
• Bài 6: Hãy viết chương trình con điều khiển tạo thời gian trễ 10s sử dụng Timer.
• Bài 7: Hãy viết chương trình con điều khiển tạo thời gian trễ 1 phút sử dụng Timer.
• Bài 8: Hãy viết chương trình con điều khiển tạo thời gian trễ 1 giờ sử dụng Timer.
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 62 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 64 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 1: Chương trình điều khiển hiển thị số 7 trên LED3 (LED3 được nối với Port0).
Giáo trình thực hành vi xử lý. 65 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).
Giáo trình thực hành vi xử lý. 66 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 3 trên LED1.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED2.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED2.
• Bài 4: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 67 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED (LED2 và LED3 được nối với Port0).
8
3
3
DEC.
3-8
PORT 0
OUT 3
OUT 1
7 SEG
7 SEG
BCD IN
DEC.
PORT 1
2-4
3-4
2-4
1-2
OUT 2
OUT 4
7 SEG
7 SEG
40 PINS
DEC.
OUT
DEC.
OUT
PORT 3
PORT 1
20 PINS
PORT 2
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển. PORT 3
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 35 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
$MOD51
ORG 00H
MOV P0,#35H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 68 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED2 và LED3 được nối với
Port0).
Giáo trình thực hành vi xử lý. 69 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED0 và LED1 được nối với Port1, LED2 và
LED3 được nối với Port0).
DEC.
3-8
PORT 0
OUT 3
OUT 1
7 SEG
7 SEG
BCD IN
DEC.
PORT 1
2-4
3-4
2-4
1-2
OUT 2
OUT 4
7 SEG
7 SEG
40 PINS
DEC.
OUT
DEC.
OUT
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
Giáo trình thực hành vi xử lý. 70 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 đến 9999 trên bốn LED (LED0 và LED1 được nối
với Port1, LED2 và LED3 được nối với Port0).
Giáo trình thực hành vi xử lý. 71 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 1: Chương trình điều khiển hiển thị số 7 trên LED3 (LED3 được nối với Port0).
8
3
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 7 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MOV P0,#0F8H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)
Giáo trình thực hành vi xử lý. 72 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).
Giáo trình thực hành vi xử lý. 73 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED3 (LED3 được nối với Port0).
LCALL DELAY500MS
INC R0
CJNE R0,#10,DISP ;KIEM TRA VI TRI DU LIEU > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 3 trên LED2.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED3.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED3.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0 lên F trên LED0.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ F xuống 0 trên LED0.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 74 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED (LED3 được nối với Port0, LED2 được nối với
Port1).
8
3
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 35 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:
MOV P0,#92H ;XUAT HIEN THI
MOV P1,#0B0H ;XUAT HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 75 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED3 được nối với Port0,
LED2 được nối với Port1).
Giáo trình thực hành vi xử lý. 76 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED3 được nối với Port0, LED2 được nối với
Port1, LED1 được nối với Port2 và LED0 được nối với Port3).
8
3
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
Giáo trình thực hành vi xử lý. 77 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED3 được nối với Port0,
LED2 được nối với Port1, LED1 được nối với Port2 và LED0 được nối với Port3).
Giáo trình thực hành vi xử lý. 78 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp không đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED3 được nối với Port0,
LED2 được nối với Port1, LED1 được nối với Port2 và LED0 được nối với Port3).
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên FFFF trên bốn LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFF xuống 0000 trên bốn LED.
• Bài 8: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên ABCD trên bốn LED.
• Bài 9: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ ABCD xuống 0000 trên bốn LED.
• Bài 10: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 11: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 79 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0, tín hiệu SEL7 được nối với
P1.0).
4
3
PORT 0
PORT 1
3
40 PINS
DEC.
3-8
PORT 3
PORT 1
20 PINS
OUT 3
OUT 1
7 SEG
7 SEG
BCD IN
DEC.
2-4
3-4
2-4
1-2
PORT 2
PORT 3
OUT 2
OUT 4
7 SEG
7 SEG
DEC.
OUT
DEC.
OUT
Giáo trình thực hành vi xử lý. 80 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).
Giáo trình thực hành vi xử lý. 81 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).
MOV A,#00H ;GIA TRI BAT DAU
LOOP:
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC A ;TANG GIA TRI
CJNE A,#10,LOOP
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 82 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
Giáo trình thực hành vi xử lý. 83 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 02H,01H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 0FEH,0FDH
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 61H,#01H ;HANG CHUC
MOV 60H,#02H ;HANG DON VI
LCALL DISP7SEGMUL2 ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0FDH ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
Giáo trình thực hành vi xử lý. 84 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 85 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).
Giáo trình thực hành vi xử lý. 86 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 23 xuống 00 trên hai LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 87 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3).
Giáo trình thực hành vi xử lý. 88 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
Giáo trình thực hành vi xử lý. 89 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 90 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
PORT 0
PORT 1
40 PINS
3
PORT 3
PORT 1
DEC.
20 PINS
BCD IN POWER
3-8
OUT 3
OUT 1
7 SEG
7 SEG
PORT 2
PORT 3
BCD IN
DEC.
2-4
3-4
2-4
1-2
OUT 2
OUT 4
7 SEG
7 SEG
DEC.
OUT
DEC.
OUT
Giáo trình thực hành vi xử lý. 91 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
LCALL DELAYLED
MOV P1,#07FH ;CHO PHEP LED 0 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)
Giáo trình thực hành vi xử lý. 92 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
Giáo trình thực hành vi xử lý. 93 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải
đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#7FH ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 5: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 94 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0, tín hiệu SEL7 được nối với
P1.0).
4
3
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#0F9H ;XUAT SO HIEN THI
SJMP $
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)
Giáo trình thực hành vi xử lý. 95 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).
Giáo trình thực hành vi xử lý. 96 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL7 được nối với P1.0).
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
DISP:
MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC R0
CJNE R0,#10,DISP ;KIEM TRA VI TRI DU LIEU > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0 lên F trên LED4.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ F xuống 0 trên LED4.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 97 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
Giáo trình thực hành vi xử lý. 98 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0A4H,0F9H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 0FEH,0FDH
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#12H ;SO HIEN THI
LCALL BCD2TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DISP7SEGMUL2 ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0FDH ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
Giáo trình thực hành vi xử lý. 99 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1).
POP 01H
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 100 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).
Giáo trình thực hành vi xử lý. 101 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1).
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên FF trên hai LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FF xuống 00 trên hai LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên AB trên hai LED.
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 102 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3).
Giáo trình thực hành vi xử lý. 103 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
Giáo trình thực hành vi xử lý. 104 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD4TO7SEG.
;INPUT: R7 = SO BCD NEN (NGAN - TRAM).
; R6 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD4TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
Giáo trình thực hành vi xử lý. 105 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3).
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED (LED4, LED5, LED6 và LED7
được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3).
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 9999 xuống 0000 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên FFFF trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFF xuống 0000 trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên ABCD trên bốn LED (LED4,
LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với
P1.0, P1.1, P1.2 và P1.3).
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 106 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#80H ;HIEN THI SO 8
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#0F8H ;HIEN THI SO 7
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#82H ;HIEN THI SO 6
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#92H ;HIEN THI SO 5
LCALL DELAYLED
MOV P1,#0EFH ;CHO PHEP LED 3 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0DFH ;CHO PHEP LED 2 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0BFH ;CHO PHEP LED 1 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07FH ;CHO PHEP LED 0 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
Giáo trình thực hành vi xử lý. 107 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)
Giáo trình thực hành vi xử lý. 108 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
Giáo trình thực hành vi xử lý. 109 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
MOV P1,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (4 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD8TO7SEG.
;INPUT: R7 = SO BCD NEN (CH TRIEU - TRIEU).
; R6 = SO BCD NEN (TR NGAN - CH NGAN).
; R5 = SO BCD NEN (NGAN - TRAM).
; R4 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD8TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
Giáo trình thực hành vi xử lý. 110 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (không dùng vi mạch
giải đa hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7).
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên FFFFFFFF trên tám LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên 89ABCDEF trên tám LED.
• Bài 7: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 111 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0, tín hiệu SEL-ABC được nối
với P1.0 - P1.1).
PORT 0
PORT 1
3
40 PINS
DEC.
3-8
PORT 3
PORT 1
20 PINS
OUT 3
OUT 1
7 SEG
7 SEG
BCD IN
DEC.
3-4
2-4
2-4
1-2
PORT 2
PORT 3
OUT 2
OUT 4
7 SEG
7 SEG
DEC.
OUT
DEC.
OUT
Giáo trình thực hành vi xử lý. 112 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 113 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0, tín hiệu
SEL-ABC được nối với P1.0 - P1.1).
MOV A,#00H ;GIA TRI BAT DAU
LOOP:
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC A ;TANG GIA TRI
CJNE A,#10,LOOP
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 114 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 115 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 02H,01H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 00H,01H
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, BCD IN, MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV 61H,#01H ;HANG CHUC
MOV 60H,#02H ;HANG DON VI
LCALL DISP7SEGMUL2EXT ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2EXT.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#01H ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
Giáo trình thực hành vi xử lý. 116 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 117 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 118 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 23 xuống 00 trên hai LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 119 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 120 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 121 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 122 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).
VI ÑIEÀU KHIEÅN
3
PORT 0
POWER SEL IN2 SEL LED IN SEL IN1 8
NGUOÀN
+5V LED 7 ÑOAÏN
7SEG7 IN POWER
7SEG7 IN 7SEG6 IN 7SEG5 IN 7SEG4 IN MUL SW
3
PORT 1
8 8 8 8
40 PINS
3
GIAÛI MAÕ
PORT 3
PORT 1
DEC.
20 PINS
BCD IN POWER
3-8
8
OUT 3
OUT 1
7 SEG
7 SEG
8
PORT 2
PORT 3
BCD IN
DEC.
SELECT CLOCK
2-4
3-4
2-4
1-2
OUT 4
7 SEG
7 SEG
DEC.
OUT
DEC.
OUT
Giáo trình thực hành vi xử lý. 123 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).
LCALL DELAYLED
MOV P1,#06H ;CHO PHEP LED 1 SANG
MOV P0,#02H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07H ;CHO PHEP LED 0 SANG
MOV P0,#01H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)
Giáo trình thực hành vi xử lý. 124 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
Giáo trình thực hành vi xử lý. 125 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL8EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#07H ;MA QUET
MOV R0,#67H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 5: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 126 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 1: Chương trình điều khiển hiển thị số 1 trên LED7 (LED7 được nối với Port0; tín hiệu SEL-ABC được nối
với P1.0 - P1.1).
PORT 0
PORT 1
3
40 PINS
DEC.
3-8
PORT 3
PORT 1
20 PINS
OUT 3
OUT 1
7 SEG
7 SEG
BCD IN
DEC.
3-4
2-4
2-4
1-2
PORT 2
PORT 3
OUT 2
OUT 4
7 SEG
7 SEG
DEC.
OUT
DEC.
OUT
Giáo trình thực hành vi xử lý. 127 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0; tín hiệu
SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 128 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 2: Chương trình điều khiển hiển thị đếm số BCD từ 0 lên 9 trên LED7 (LED7 được nối với Port0; tín hiệu
SEL-ABC được nối với P1.0 - P1.1).
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
MOV P1,#00H ;CHO PHEP LED 7 SANG
DISP:
MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC R0
CJNE R0,#10,DISP ;KIEM TRA VI TRI DU LIEU > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5 trên LED5.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0 lên 5 trên LED4.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5 xuống 0 trên LED4.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0 lên F trên LED4.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ F xuống 0 trên LED4.
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 129 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 130 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
ORG 100H
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0A4H,0F9H
ORG 110H
CODESCAN: ;VUNG MA QUET
DB 00H,01H
END
• Cách 3:
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL ABC -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI EXT 2 TO 4, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#12H ;SO HIEN THI
LCALL BCD2TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DISP7SEGMUL2EXT ;QUET HIEN THI
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL2EXT.
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = EXT MULTIPLEXER - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL2EXT:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#01H ;MA QUET
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P0,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 5MS
PUSH 00H
PUSH 01H
MOV R1,#10
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
Giáo trình thực hành vi xử lý. 131 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL-
ABC được nối với P1.0 - P1.1).
POP 01H
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 132 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 133 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG.
;INPUT: R7 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 34 trên hai LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên FF trên hai LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FF xuống 00 trên hai LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên CD trên hai LED.
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 134 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được
nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 135 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
Giáo trình thực hành vi xử lý. 136 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD4TO7SEG.
;INPUT: R7 = SO BCD NEN (NGAN - TRAM).
; R6 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD4TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
Giáo trình thực hành vi xử lý. 137 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.1).
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 5678 trên bốn LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên FFFF trên bốn LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFF xuống 0000 trên bốn LED.
• Bài 8: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên ABCD trên bốn LED.
• Bài 9: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ ABCD xuống 0000 trên bốn LED.
• Bài 10: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 11: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 138 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).
PORT 0
PORT 1
40 PINS
3
DEC.
3-8
PORT 3
PORT 1
20 PINS
OUT 3
OUT 1
7 SEG
7 SEG
BCD IN
PORT 2
PORT 3
DEC.
2-4
3-4
2-4
1-2
OUT 2
OUT 4
7 SEG
7 SEG
DEC.
OUT
DEC.
OUT
Giáo trình thực hành vi xử lý. 139 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL-ABC được nối với P1.0 - P1.2).
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07H ;CHO PHEP LED 0 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
SJMP MAIN
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)
Giáo trình thực hành vi xử lý. 140 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
Giáo trình thực hành vi xử lý. 141 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
MOV P0,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
DEC A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL8EXT ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (4 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD6TO7SEG.
;INPUT: R7 = SO BCD NEN (CH TRIEU - TRIEU).
; R6 = SO BCD NEN (TR NGAN - CH NGAN).
; R5 = SO BCD NEN (NGAN - TRAM).
; R4 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 67H,66H = MA 7 DOAN (CH TRIEU - TRIEU).
; 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD8TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
Giáo trình thực hành vi xử lý. 142 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp đa hợp và ngõ vào dữ liệu kiểu 7 đoạn (dùng vi mạch giải đa
hợp bên ngoài))
Bài 8: Chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 99999999 trên tám LED (LED0 đến
LED7 được nối với Port0; tín hiệu SEL-ABC được nối với P1.0 - P1.2).
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số 87654321 trên tám LED.
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 59999999 trên tám LED.
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59999999 xuống 00000000 trên tám LED.
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00000000 lên 12345678 trên tám LED.
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên FFFFFFFF trên tám LED.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFFFFFF xuống 00000000 trên tám
LED.
• Bài 8: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00000000 lên 89ABCDEF trên tám LED.
• Bài 10: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 11: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 143 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED (LED6,7: đếm GIÂY;
LED4,5: đếm PHÚT; LED2,3: đếm GIỜ).
8
3
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI GIO - PHUT - GIAY TREN LED 7 DOAN
;***************************************************
;KET NOI: 6 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV R7,#00H ;GIO
MOV R6,#00H ;PHUT
MOV R5,#00H ;GIAY
MP1:
LCALL BCD6TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R5 ;TANG GIAY
ADD A,#1
DA A
MOV R5,A
CJNE A,#60H,MP1 ;KIEM TRA GIAY > 59
MOV R5,#0 ;XOA GIAY
MOV A,R6 ;TANG PHUT
ADD A,#1
DA A
MOV R6,A
CJNE A,#60H,MP1 ;KIEM TRA PHUT > 59
MOV R6,#0 ;XOA PHUT
MOV A,R7 ;TANG GIO
ADD A,#1
DA A
MOV R7,A
CJNE A,#60H,MP1 ;KIEM TRA GIO > 59
SJMP MAIN
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (3 SO BCD NEN).
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
Giáo trình thực hành vi xử lý. 144 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED (LED6,7: đếm GIÂY;
LED4,5: đếm PHÚT; LED2,3: đếm GIỜ).
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD6TO7SEG.
;INPUT: R7 = SO BCD NEN (TR NGAN - CH NGAN).
; R6 = SO BCD NEN (NGAN - TRAM).
; R5 = SO BCD NEN (CHUC - DON VI).
;OUTPUT: 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;***************************************************
BCD6TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (6 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM.
;***************************************************
;NAME: DISP7SEGMUL6.
;INPUT: 65H,64H = MA 7 DOAN (TR NGAN - CH NGAN).
; 63H,62H = MA 7 DOAN (NGAN - TRAM).
; 61H,60H = MA 7 DOAN (CHUC - DON VI).
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
Giáo trình thực hành vi xử lý. 145 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 1: Chương trình điều khiển hiển thị đếm GIỜ – PHÚT – GIÂY trên sáu LED (LED6,7: đếm GIÂY;
LED4,5: đếm PHÚT; LED2,3: đếm GIỜ).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL6:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0DFH ;MA QUET
MOV R0,#65H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL6 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài tập: Hãy viết chương trình điều khiển hiển thị đếm NGÀY – THÁNG – NĂM trên tám LED (LED7,6:
đếm NGÀY; LED5,4: đếm THÁNG; LED3,2,1,0: đếm NĂM). Giả sử các tháng đều có 30 ngày. Tự chọn
lựa phương pháp kết nối các LED 7 đoạn.
Giáo trình thực hành vi xử lý. 146 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 2: Chương trình điều khiển hiển thị chuỗi ký tự “-HA-NOI-“ trên tám LED.
8
3
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI CHUOI "-HA-NOI- TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
LCALL DISP7SEGMUL ;HIEN THI CHUOI KY TU
SJMP MAIN
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (8 LED 7 DOAN).
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG ROM (TRONG CHUONG TRINH)
;***************************************************
;NAME: DISP7SEGMUL.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB).
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD).
;***************************************************
DISP7SEGMUL:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0,#7FH ;MA QUET
MOV R1,#00H ;VI TRI CUA DU LIEU TRONG VUNG NHO DPTR
SETB C
DISP:
MOV A,R1
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT MA HIEN THI
MOV P1,R0 ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
Giáo trình thực hành vi xử lý. 147 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 2: Chương trình điều khiển hiển thị chuỗi ký tự “-HA-NOI-“ trên tám LED.
INC R1 ;LAY MA HIEN THI KE TIEP
MOV A,R0 ;LAY MA QUET KE TIEP
RRC A
MOV R0,A
JC DISP ;KIEM TRA QUET XONG (C = 0)
POP 01H
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “-PEP-SI-“ trên tám LED. Tự chọn lựa
phương pháp kết nối LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “COCACOLA“ trên tám LED. Tự chọn lựa
phương pháp kết nối LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “--DHCN--“ trên tám LED. Tự chọn lựa
phương pháp kết nối LED 7 đoạn.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 148 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 3: Chương trình điều khiển hiển thị và chớp tắt chuỗi ký tự “-HA-NOI-“ trên tám LED.
Giáo trình thực hành vi xử lý. 149 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 3: Chương trình điều khiển hiển thị và chớp tắt chuỗi ký tự “-HA-NOI-“ trên tám LED.
TATLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
TAT:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,TAT
POP 00H
RET
;***************************************************
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 150 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 4: Chương trình điều khiển hiển thị lần lượt các chuỗi ký tự “-HA-NOI“, “-DA-LAT-“, “-SAIGON-“ trên
tám LED. Mỗi chuỗi hiển thị cách nhau 1 giây.
Giáo trình thực hành vi xử lý. 151 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 4: Chương trình điều khiển hiển thị lần lượt các chuỗi ký tự “-HA-NOI“, “-DA-LAT-“, “-SAIGON-“ trên
tám LED. Mỗi chuỗi hiển thị cách nhau 1 giây.
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH ;MA CHUOI "-HA-NOI-"
DB 0BFH,0A1H,88H,0BFH,0C7H,88H,0F8H,0BFH ;MA CHUOI "-DA-LAT-"
DB 0BFH,92H,88H,0F9H,90H,0C0H,0C8H,0BFH ;MA CHUOI "-SAIGON-"
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị và chớp tắt chuỗi ký tự “-PEP-SI-“ trên tám LED. Tự chọn
lựa phương pháp kết nối LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển hiển thị và chớp tắt 10 lần chuỗi ký tự “COCACOLA“ trên tám
LED. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển hiển thị lần lượt các chuỗi ký tự “COCACOLA“, “-PEP-SI-“, “-
FANTA-“ trên tám LED. Mỗi chuỗi hiển thị cách nhau 1 giây. Tự chọn lựa phương pháp kết nối LED 7
đoạn.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 152 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 5: Chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-HA-NOI-SAI-GON-“ trên tám LED từ
phải sang trái.
Giáo trình thực hành vi xử lý. 153 Biên soạn: Phạm Quang Trí
B. HỆ THỐNG ĐIỀU KHIỂN LED 7 ĐOẠN.
(Ứng dụng điều khiển LED 7 đoạn tổng hợp)
Bài 5: Chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-HA-NOI-SAI-GON-“ trên tám LED từ
phải sang trái.
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP: ;VUNG CHUA MA CHU HIEN THI
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;MA CHUOI XOA MAN HINH
DB 0BFH,89H,88H,0BFH,0C8H,0C0H,0F9H,0BFH ;MA CHUOI "-HA-NOI-"
DB 92H,88H,0F9H,0BFH,90H,0C0H,0C8H,0BFH ;MA CHUOI "SAI-GON-"
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “-PEP-SI-“ trên tám LED từ
phải sang trái. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “COCACOLA“ trên tám LED
từ trái sang phải. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển hiển thị và dịch chuyển chuỗi ký tự “COMPUTER-
CONTROLLER“ trên tám LED từ phải sang trái. Tự chọn lựa phương pháp kết nối LED 7 đoạn.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 154 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 156 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận (COL-RED được nối với Port1 có sử
dụng bộ đệm đảo, ROW được nối với Port2).
COL. GREEN
PORT 0
PORT 1
40 PINS
3
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
• Cách 1:
;***************************************************
;CHUONG TRINH HIEN THI KY TU A TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV P2,#07H ;XUAT MA HIEN THI RA HANG
MOV P1,#01H ;XUAT MA QUET RA COT 1
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
Giáo trình thực hành vi xử lý. 157 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận (COL-RED được nối với Port1 có sử
dụng bộ đệm đảo, ROW được nối với Port2).
MOV P1,#00H ;CHONG LEM
LJMP MAIN
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
• Cách 2:
;***************************************************
;CHUONG TRINH HIEN THI KY TU A TREN MA TRAN LED
;***************************************************
;ROW -> PORT2, RED COLUMN -> PORT1 (CO DEM DAO)
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
$MOD51
ORG 00H
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
LJMP MAIN
;***************************************************
;CTC QUET MA TRAN 8 X 8.
;***************************************************
;NAME: SCANMATRIXSTA.
;OUTPUT: P1 = COLUMN MATRIX (NOT BUFFER).
; P2 = ROW MATRIX.
;INPUT: DPTR = VUNG NHO CHUA DU LIEU HIEN THI.
;MODE: STATIC DISP, SCAN COLUMN (ACT = 1) - DISPLAY ROW (ACT = 0).
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0,#00H ;VI TRI CUA DU LIEU COT DAU TIEN TRONG VUNG MA
MOV R1,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A,R0
MOVC A,@A+DPTR ;LAY MA HIEN THI TRONG VUNG MA THEO VI TRI
MOV P2,A ;XUAT MA HIEN THI RA HANG
MOV P1,R1 ;XUAT MA QUET RA COT
LCALL DELAYLED
MOV P1,#00H ;CHONG LEM
INC R0 ;LAY DU LIEU KE TIEP
MOV A,R1 ;DICH MA QUET - MA QUET CHO COT KE TIEP
RL A
MOV R1,A
CJNE R0,#8H,SCAN ;KIEM TRA QUET CAC COT (MA TRAN GOM 8 COT)
POP 01H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP 00H
Giáo trình thực hành vi xử lý. 158 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 1: Chương trình điều khiển hiển thị chữ A màu đỏ trên LED ma trận (COL-RED được nối với Port1 có sử
dụng bộ đệm đảo, ROW được nối với Port2).
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị chữ M màu đỏ trên LED ma trận (COL-RED được nối với
Port1, ROW được nối với Port2).
• Bài 2: Hãy viết chương trình điều khiển hiển thị số 8 màu xanh trên LED ma trận (COL-GRE được nối với
Port1, ROW được nối với Port2).
• Bài 3: Hãy viết chương trình điều khiển hiển thị chữ A màu vàng trên LED ma trận (COL-RED được nối
với Port 1, COL-GRE được nối với Port2, ROW được nối với Port3).
• Bài 4: Hãy lập bảng mã cho tất cả các ký tự chữ, ký tự số và ký tự đặc biệt có trên bàn phím máy tính. Và
thử đưa các mã đã lập này vào chương trình điều khiển hiển thị ở trên để xem hình ảnh chúng như thế nào?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 159 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 2: Chương trình điều khiển hiển thị chữ S màu đỏ trên LED ma trận sáng tắt (COL-RED được nối với
Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
Giáo trình thực hành vi xử lý. 160 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 2: Chương trình điều khiển hiển thị chữ S màu đỏ trên LED ma trận sáng tắt (COL-RED được nối với
Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
MOV TMOD,#01H
TAT:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,TAT
POP 00H
RET
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị chữ W màu đỏ sáng tắt trên LED ma trận (COL-RED
được nối với Port1, ROW được nối với Port2).
• Bài 2: Hãy viết chương trình điều khiển hiển thị số 0 màu xanh sáng tắt trên LED ma trận (COL-GRE được
nối với Port1, ROW được nối với Port2).
• Bài 3: Hãy viết chương trình điều khiển hiển thị chữ H màu vàng sáng tắt trên sáng tắt LED ma trận (COL-
RED được nối với Port 1, COL-GRE được nối với Port2, ROW được nối với Port3).
• Bài 4: Hãy viết chương trình điều khiển hiển thị liên tục chữ A sáng màu đỏ, sau đó là màu xanh và cuối
cùng là màu vàng trên LED ma trận (COL-RED được nối với Port 1, COL-GRE được nối với Port2, ROW
được nối với Port3).
• Bài 5: Hãy lập bảng mã cho tất cả các ký tự chữ, ký tự số và ký tự đặc biệt có trên bàn phím máy tính. Và
thử đưa các mã đã lập này vào chương trình điều khiển hiển thị ở trên để xem hình ảnh chúng như thế nào?
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 161 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 3: Chương trình điều khiển hiển thị lần lượt các chữ A, B, C, a, b, c màu đỏ trên LED ma trận (COL-RED
được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
Giáo trình thực hành vi xử lý. 162 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 3: Chương trình điều khiển hiển thị lần lượt các chữ A, B, C, a, b, c màu đỏ trên LED ma trận (COL-RED
được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
DB 01H,6DH,6DH,6DH,93H,0FFH,0FFH,0FFH ;CHU B
DB 83H,7DH,7DH,7DH,0BBH,0FFH,0FFH,0FFH ;CHU C
DB 0BFH,57H,57H,57H,0FH,0FFH,0FFH,0FFH ;CHU a
DB 01H,6FH,77H,77H,8FH,0FFH,0FFH,0FFH ;CHU b
DB 8FH,77H,77H,77H,0BFH,0FFH,0FFH,0FFH ;CHU c
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 0 lên 9 màu đỏ trên LED ma trận (COL-
RED được nối với Port1, ROW được nối với Port2).
• Bài 2: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 9 xuống 0 màu xanh trên LED ma trận
(COL-GRE được nối với Port1, ROW được nối với Port2).
• Bài 3: Hãy viết chương trình điều khiển hiển thị các ký tự từ A đến Z màu đỏ trên LED ma trận (COL-
RED được nối với Port1, ROW được nối với Port2).
• Bài 4: Hãy viết chương trình điều khiển hiển thị các ký tự từ Z đến A màu xanh trên LED ma trận (COL-
GRE được nối với Port1, ROW được nối với Port2).
• Bài 5: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 0 đến 9 trên LED ma trận (COL-GRE
được nối với Port1, ROW được nối với Port2). Với điều kiện màu của các số sẽ thay đổi liên tục ĐỎ –
XANH – VÀNG mỗi khi con số trên LED ma trận thay đổi.
• Bài 6: Hãy viết chương trình điều khiển hiển thị các ký tự từ A đến Z trên LED ma trận (COL-GRE được
nối với Port1, ROW được nối với Port2). Với điều kiện màu của các ký tự sẽ thay đổi liên tục ĐỎ – XANH
– VÀNG sau mỗi một giây đồng hồ.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 163 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 4: Chương trình điều khiển hiển thị chuỗi ký tự “WELLCOME” màu đỏ trên LED ma trận dịch chuyển từ
phải sang trái (COL-RED được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
Giáo trình thực hành vi xử lý. 164 Biên soạn: Phạm Quang Trí
C. HỆ THỐNG ĐIỀU KHIỂN LED MA TRẬN.
Bài 4: Chương trình điều khiển hiển thị chuỗi ký tự “WELLCOME” màu đỏ trên LED ma trận dịch chuyển từ
phải sang trái (COL-RED được nối với Port1 có sử dụng bộ đệm đảo, ROW được nối với Port2).
CODEDISP:
DB 81H,7FH,87H,7FH,81H,0FFH ;CHU W
DB 01H,6DH,6DH,6DH,7DH,0FFH ;CHU E
DB 01H,7FH,7FH,7FH,7FH,0FFH ;CHU L
DB 01H,7FH,7FH,7FH,7FH,0FFH ;CHU L
DB 83H,7DH,7DH,7DH,0BBH,0FFH ;CHU C
DB 83H,7DH,7DH,7DH,83H,0FFH ;CHU O
DB 01H,0FBH,0F7H,0FBH,01H,0FFH ;CHU M
DB 01H,6DH,6DH,6DH,7DH,0FFH ;CHU E
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “KHOA DIEN TU” màu xanh dịch chuyển từ
phải sang trái trên LED ma trận (COL-GRE được nối với Port1, ROW được nối với Port2).
• Bài 2: Hãy viết chương trình điều khiển hiển thị chuỗi ký tự “TRUONG DAI HOC CONG NGHIEP TP
HO CHI MINH – KHOA DIEN TU” màu đỏ dịch chuyển từ phải sang trái trên LED ma trận (COL-RED
được nối với Port1, ROW được nối với Port2).
• Bài 3: Hãy viết chương trình điều khiển hiển thị tương tự như bài tập 1 và 2 nhưng màu của ma trận LED
sẽ thay đổi liên tục ĐỎ – XANH – VÀNG sau mỗi một giây đồng hồ.
• Bài 4: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 165 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 167 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 1: Chương trình điều khiển bàn phím và hiển thị mã của phím nhấn trên 8 LED dưới dạng số
BIN (LED sáng = mức 1, LED tắt = mức 0), không phím nào được nhấn thì mã phím là FFH
(KEYPAD được nối với Port0, LED được nối với Port1).
PORT 0
3
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
KEYBOARD
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN BAN PHIM MA TRAN 4 X 4.
;***************************************************
;KET NOI: LED -> PORT1 (CO DEM DAO), KEYPAD -> PORT0.
;***************************************************
ORG 00H
MAIN:
LCALL SCANKEYPAD ;QUET KEYPAD
JC MP1 ;KIEM TRA CO NHAN PHIM (C = 1)
MOV A,#0FFH ;KHONG NHAN PHIM A = FFH
MP1: ;CO NHAN PHIM A = MA PHIM
MOV P1,A ;XUAT MA PHIM RA LED HIEN THI DANG SO BIN
LJMP MAIN ;QUAY LAI KIEM TRA KEYPAD TIEP
;***************************************************
SCANKEYPAD: ;CTC QUET BAN PHIM MA TRAN 4 X 4, CO CHONG DOI.
PUSH 03H
MOV R3,#50 ;SO LAN LAP DE CHONG DOI
BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
Giáo trình thực hành vi xử lý. 168 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 1: Chương trình điều khiển bàn phím và hiển thị mã của phím nhấn trên 8 LED dưới dạng số
BIN (LED sáng = mức 1, LED tắt = mức 0), không phím nào được nhấn thì mã phím là FFH
(KEYPAD được nối với Port0, LED được nối với Port1).
RL A ;COT KE TIEP
DJNZ R6,TEST
CLR C ;KHONG CO PHIM DUOC NHAN HAY NHAN NHIEU PHIM CUNG LUC
SJMP EXIT ;THOAT VOI C = 0
KEYPRESSED:
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
EXIT:
POP 07H
POP 06H
POP 05H
RET
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển và hiển thị mã của phím nhấn trên LED 7 đoạn. Tự lựa chọn
phương pháp kết nối bàn phím và LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển và hiển thị mã của phím nhấn trên LED ma trận. Tự lựa chọn
phương pháp kết nối bàn phím và LED ma trận.
• Bài 3: Hãy viết chương trình điều khiển và hiển thị tên của phím nhấn trên LED 7 đoạn. Tự lựa chọn
phương pháp kết nối bàn phím và LED 7 đoạn.
• Bài 4: Hãy viết chương trình điều khiển và hiển thị tên của phím nhấn trên LED ma trận. Tự lựa chọn
phương pháp kết nối bàn phím và LED ma trận.
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 169 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
NEXT4:
LJMP MAIN ;QUAY LAI KIEM TRA KEYPAD TIEP
;***************************************************
SCANKEYPAD: ;CTC QUET BAN PHIM MA TRAN 4 X 4, CO CHONG DOI.
PUSH 03H
MOV R3,#50 ;SO LAN LAP DE CHONG DOI
BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
RL A ;COT KE TIEP
DJNZ R6,TEST
CLR C ;KHONG CO PHIM DUOC NHAN HAY NHAN NHIEU PHIM CUNG LUC
SJMP EXIT ;THOAT VOI C = 0
KEYPRESSED:
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
Giáo trình thực hành vi xử lý. 170 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
EXIT:
POP 07H
POP 06H
POP 05H
RET
;***************************************************
CHOPTAT: ;CTC DIEU KHIEN 8 LED SANG TAT
MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
MOV P1,#0FFH ;LED SANG
LCALL DELAY500MS
MOV P1,#00H ;LED TAT
LCALL DELAY500MS
RET
;***************************************************
DEMLEN: ;CTC DIEU KHIEN 8 LED DEM LEN NHI PHAN
PUSH ACC
MOV A,#00H ;LED TAT
LCALL DELAY500MS
DL:
MOV P1,A
LCALL DELAY500MS
INC A ;TANG NHI PHAN
CJNE A,#00H,DL ;KIEM TRA DEM LEN HOAN TAT
POP ACC
RET
;***************************************************
SANGDAN: ;CTC DIEU KHIEN 8 LED SANG DAN VA TAT DAN
PUSH ACC
MOV A,#00H ;KHOI DONG GIA TRI BAN DAU
SD1:
SETB C ;C=1
MOV P1,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, SANG DAN
JNC SD1 ;CHUA SANG HET THI LAM TIEP
SD2:
CLR C ;C=1
MOV P1,A ;HIEN THI
LCALL DELAY500MS
RLC A ;DICH BIT 1 SANG TRAI KEM C, TAT DAN
JC SD2 ;CHUA TAT HET THI LAM TIEP
POP ACC
RET
Giáo trình thực hành vi xử lý. 171 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
;***************************************************
SANGDON:
PUSH ACC
MOV R0,#08H ;LUU SO LAN DICH BIT
MOV R1,#00H ;TRANG THAI LED KHI DON LAN DAU TIEN
LAP2:
MOV R2,00H
MOV R3,#01H
LAP1:
MOV A,R3
ORL A,R1
MOV P1,A ;HIEN THI
LCALL DELAY500MS
MOV A,R3 ;DON LED
RL A
MOV R3,A
DJNZ R2,LAP1 ;CHUA DON XONG? QUAY LAI
DEC R0 ;GIAM SO LAN DON LED
SETB C ;THAY DOI TRANG THAI LED CHO LAN DON TIEP THEO
MOV A,R1
RRC A
MOV R1,A
CJNE R0,#00H,LAP2 ;CHUA HOAN TAT CHU TRINH? QUAY LAÁa
POP ACC
RET
;***************************************************
DELAY500MS: ;CTC TAO THOI GIAN TRE 500MS
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
DEL1:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,DEL1
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của chuỗi ký tự “DIEN-TU” trên
tám LED 7 đoạn. Tự lựa chọn phương pháp kết nối bàn phím và LED 7 đoạn.
Nhấn phím “ENTER”: hiển thị chuỗi.
Nhấn phím “ESC”: không hiển thị chuỗi.
Nhấn phím “1”: sáng tắt chuỗi liên tục.
Nhấn phím “2”: dịch chuyển chuỗi từ phải sang trái liên tục.
Nhấn phím “3”: dịch chuyển chuỗi từ trái sang phải liên tục.
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 2: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của một số chuỗi ký tự trên tám LED
7 đoạn. Tự lựa chọn phương pháp kết nối bàn phím và LED 7 đoạn.
Nhấn phím “ESC”: không hiển thị chuỗi.
Nhấn phím “1”: hiển thị chuỗi “COCACOLA”.
Nhấn phím “2”: hiển thị chuỗi “PEPSI”.
Nhấn phím “3”: hiển thị chuỗi “FANTA”.
Nhấn phím “4”: hiển thị chuỗi “TRIBECO”.
Nhấn phím “5”: hiển thị chuỗi “NUOCSUOI”.
Giáo trình thực hành vi xử lý. 172 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 3: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của LED1. Tự lựa chọn phương
pháp kết nối bàn phím và LED 7 đoạn.
Nhấn phím “ESC”: không hiển thị.
Nhấn phím “1”: hiển thị đếm BCD từ 0 lên 9 trên LED1.
Nhấn phím “2”: hiển thị đếm BCD từ 9 xuống 0 trên LED1.
Nhấn phím “3”: hiển thị đếm HEX từ 0 lên F trên LED1.
Nhấn phím “4”: hiển thị đếm HEX từ 9 xuống 0 trên LED1.
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 4: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của ký tự “A” trên LED ma trận. Tự
lựa chọn phương pháp kết nối bàn phím và LED ma trận.
Nhấn phím “F1”: hiển thị ký tự màu đỏ.
Nhấn phím “F2”: hiển thị ký tự màu xanh.
Nhấn phím “F3”: hiển thị ký tự màu vàng.
Nhấn phím “ESC”: không hiển thị ký tự.
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 5: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của LED ma trận. Tự lựa chọn
phương pháp kết nối bàn phím và LED ma trận.
Nhấn phím “ESC”: không hiển thị.
Nhấn phím “1”: hiển thị đếm BCD từ 0 lên 9 trên LED ma trận.
Nhấn phím “2”: hiển thị đếm BCD từ 9 xuống 0 trên LED ma trận.
Nhấn phím “3”: hiển thị các ký tự từ A đến Z trên LED ma trận.
Nhấn phím “4”: hiển thị các ký tự từ Z đến A trên LED ma trận.
• Bài 6: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của chuỗi ký tự “DAI HOC CONG
NGHIEP TP HO CHI MINH” trên LED ma trận. Tự lựa chọn phương pháp kết nối bàn phím và LED ma
trận.
Nhấn phím “ESC”: không hiển thị chuỗi.
Nhấn phím “1”: dịch chuyển chuỗi từ phải sang trái liên tục.
Nhấn phím “2”: dịch chuyển chuỗi từ trái sang phải liên tục.
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
• Bài 7: Hãy viết chương trình điều khiển và biểu diễn các kiểu hiển thị của hai chuỗi ký tự “DAI HOC
CONG NGHIEP TP HO CHI MINH” và “KHOA DIEN TU” trên LED ma trận. Tự lựa chọn phương pháp
kết nối bàn phím và LED ma trận.
Nhấn phím “ESC”: không hiển thị chuỗi.
Nhấn phím “1”: dịch chuyển chuỗi từ phải sang trái liên tục.
Nhấn phím “2”: dịch chuyển chuỗi từ trái sang phải liên tục.
Nhấn phím “F1”: chọn chuỗi hiển thị có màu đỏ.
Nhấn phím “F2”: chọn chuỗi hiển thị có màu xanh.
Nhấn phím “F3”: chọn chuỗi hiển thị là “DAI HOC CONG NGHIEP TP HO CHI MINH”.
Nhấn phím “F4”: chọn chuỗi hiển thị là “KHOA DIEN TU”.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Chương trình con quét phím có chống dội:
o Lưu đồ:
Giáo trình thực hành vi xử lý. 173 Biên soạn: Phạm Quang Trí
D. HỆ THỐNG ĐIỀU KHIỂN BÀN PHÍM.
Bài 2: Chương trình điều khiển bàn phím và biểu diễn các kiểu hiển thị trên tám LED thông qua các phím
được nhấn (KEYPAD được nối với Port0, LED được nối với Port1):
Nhấn phím “1”: 8 LED sáng tắt 3 lần.
Nhấn phím “2”: 8 LED sáng dần và tắt dần.
Nhấn phím “3”: 8 LED đếm lên nhị phân.
Nhấn phím “ESC”: 8 LED sáng dồn.
; C = 0: KHONG CO PHIM NHAN.
;***************************************************
SCANKEYPAD:
PUSH 03H
MOV R3,#50 ;SO LAN LAP DE CHONG DOI
BACK:
ACALL GETKEY ;GOI CTC QUET PHIM
JNC NOPRESSED ;C = 0 -> THOAT KHI KHONG CO PHIM NHAN.
DJNZ R3,BACK ;C = 1 -> CO PHIM NHAN, GIAM SO LAN LAP DE CHONG DOI
NOPRESSED:
POP 03H
RET
;***************************************************
GETKEY:
PUSH 05H
PUSH 06H
PUSH 07H
MOV A,#0EFH ;BAT DAU TAI COT 0
MOV R6,#4 ;R6 LAM BO DEM COT
TEST:
MOV P0,A ;TICH CUC COT
MOV R7,A ;LUU ACC
MOV A,P0 ;DOC LAI TU PORT 1
ANL A,#0FH ;CACH LY CAC HANG
CJNE A,#0FH,KEYPRESSED ;HANG TICH CUC ?
MOV A,R7 ;N -> DI CHUYEN TOI
RL A ;COT KE TIEP
DJNZ R6,TEST
CLR C ;KHONG CO PHIM DUOC NHAN HAY NHAN NHIEU PHIM CUNG LUC
SJMP EXIT ;THOAT VOI C = 0
KEYPRESSED:
MOV R7,A ;LUU TRONG R7
MOV A,#4 ;CHUAN BI TINH
CLR C ;TRONG SO CUA COT
SUBB A,R6 ;4 - R6 = TRONG SO
MOV R6,A ;LUU TRONG R6
MOV A,R7 ;PHUC HOI MA QUET
MOV R5,#4 ;DUNG R5 LAM BO DEM
AGAIN:
RRC A ;QUAY CHO DEN KHI = 0
JNC DONE ;THUC THI XONG KHI C = 0
INC R6 ;CONG 4 CHO DEN KHI TIM THAY HANG TICH CUC
INC R6
INC R6
INC R6
DJNZ R5,AGAIN
DONE:
SETB C ;CO PHIM NHAN -> C = 1
MOV A,R6 ;MA TRONG A
EXIT:
POP 07H
POP 06H
POP 05H
RET
;***************************************************
Giáo trình thực hành vi xử lý. 174 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 176 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY:
PQT.” đứng yên trên hai dòng của màn hình LCD.
PORT 0
PORT 1
3
40 PINS
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN LCD HIEN THI 2 DONG CHU DUNG YEN
;***************************************************
;RS -> P0.0, RW -> P0.1, E -> P0.2
;DATA BUS -> PORT 1
;***************************************************
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P1
;***************************************************
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
MP1:
ACALL DISP_FLINE ;HIEN THI DONG 1
ACALL DISP_SLINE ;HIEN THI DONG 2
SJMP $
;***************************************************
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = C0H - CHO PHEP LCD HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
RET
Giáo trình thực hành vi xử lý. 177 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY:
PQT.” đứng yên trên hai dòng của màn hình LCD.
;***************************************************
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN
;*************************************************************
;MOV TH0,#HIGH(-1000) ;DOAN LENH NAY DUOC THAY THE CHO DOAN LENH KIEM TRA DUOI DAY
;MOV TL0,#LOW(-1000) ;KHI CHAY CHUONG TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;*************************************************************
MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE
;*************************************************************
RET
;***************************************************
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU KHI DU LIEU GUI DI LA 99H
MOV A,#0 ;OFFSET DAU TIEN TRONG VUNG DU LIEU CUA DPTR
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
CJNE A,#99H,WRITE_CONT ;KIEM TRA LAY HET DU LIEU TRONG VUNG DU LIEU - 99H
RET
WRITE_CONT: ;KHONG PHAI LA DU LIEU KET THUC - CHUA LAY HET DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP
SJMP WRITE ;QUAY TRO VE DE GUI DU LIEU KE TIEP
RET
;***************************************************
DELAY:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
Giáo trình thực hành vi xử lý. 178 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 1: Chương trình điều khiển LCD hiển thị hai dòng chữ “MICRO-CONTROLLER” và “DESIGNED BY:
PQT.” đứng yên trên hai dòng của màn hình LCD.
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB 'MICRO-CONTROLLER'
DB 99H ;MA KET THUC DONG (TU CHON)
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB 'DESIGNED BY: PQT'
DB 99H ;MA KET THUC DONG (TU CHON)
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Giáo trình thực hành vi xử lý. 179 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 2: Chương trình điều khiển LCD hiển thị hai dòng chữ “WELLCOME TO MICROCONTROLLER
SYSTEM – 51” và “DESIGNED BY: PQT.” trên hai dòng của màn hình LCD với yêu cầu: dòng chữ
thứ nhất sẽ dịch chuyển liên tục từ phải sang trái, dòng chữ thứ hai đứng yên.
Giáo trình thực hành vi xử lý. 180 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 2: Chương trình điều khiển LCD hiển thị hai dòng chữ “WELLCOME TO MICROCONTROLLER
SYSTEM – 51” và “DESIGNED BY: PQT.” trên hai dòng của màn hình LCD với yêu cầu: dòng chữ
thứ nhất sẽ dịch chuyển liên tục từ phải sang trái, dòng chữ thứ hai đứng yên.
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN
;*************************************************************
;MOV TH0,#HIGH(-1000) ;DOAN LENH NAY DUOC THAY THE CHO DOAN LENH KIEM TRA DUOI DAY
;MOV TL0,#LOW(-1000) ;KHI CHAY CHUONG TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;*************************************************************
MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE
;*************************************************************
RET
;***************************************************
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU KHI DU LIEU GUI DI LA 99H
MOV R0,#0 ;OFFSET DAU TIEN TRONG VUNG DU LIEU CUA DPTR
WR1: MOV A,R0 ;NAP OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#16,WR1 ;KIEM TRA NAP DAY DU DU LIEU CHO MOT DONG MAN HINH - 16 CHU
RET
;***************************************************
DELAY:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB ' WELLCOME TO MICROCONTROLLER SYSTEM - 51'
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB 'DESIGNED BY: PQT'
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Giáo trình thực hành vi xử lý. 181 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG
TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai
dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị
trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang
trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.
PORT 0
PORT 1
3
40 PINS
PORT 3
PORT 1
20 PINS
MOMENTARY
POWER
SW
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN LCD HIEN THI DONG CHU 1 HIEN THI XUNG, DONG CHU 2 DICH CHUYEN
;***************************************************
;RS -> P0.0, RW -> P0.1, E -> P0.2
;DATA BUS -> PORT 1 OMENTARY SW -> PORT 3 (P3.0 -> ACT = 0)
;***************************************************
EN BIT P0.2
RW BIT P0.1
RS BIT P0.0
DATABUS EQU P1
;***************************************************
ORG 00H
MAIN:
ACALL LCDINIT ;KHOI TAO LCD
MOV R7,#0 ;SO XUNG BAN DAU
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA LCD
ACALL DISP_FLINE ;HIEN THI DONG 1
MP1:
MOV DPTR,#SLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 2 CUA LCD
SHIFT:
ACALL DISP_SLINE ;HIEN THI DONG 2
ACALL DISP_PULSE ;HIEN THI SO XUNG
MOV R1,#100 ;DELAY 500MS
JB P3.0,DEL500 ;TIEP TUC CHUONG TRINH KHI KHONG NHAN NUT NHAN
MOV A,R7 ;TANG GIA TRI KHI CO NHAN NUT NHAN (P3.0 = 0)
ADD A,#1
DA A
MOV R7,A
DEL500:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
ACALL DELAY
Giáo trình thực hành vi xử lý. 182 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG
TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai
dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị
trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang
trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.
DJNZ R1,DEL500 ;THOI GIAN DUNG YEN CUA MOT TRANG THAI MAN HINH LCD
INC DPTR ;TANG GIA TRI DPTR DE DICH CHUYEN DONG CHU
MOV A,DPL ;KIEM TRA DA DICH XONG DONG CHU RA MAN HINH LCD
CJNE A,#LOW(SLINE_DATA+91),SHIFT
MOV A,DPH
CJNE A,#HIGH(SLINE_DATA+91),SHIFT
SJMP MP1
;***************************************************
LCDINIT: ;CTC KHOI TAO LCD
CLR RS ;RS = 0 - GUI LENH
CLR RW ;RW = 0 - WRITE LCD MODE
SETB EN ;E = 1 - ENABLE
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-4100)
MOV TL0,#LOW(-4100)
ACALL DELAY ;DELAY 4.1MS
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
ACALL DELAY ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX 5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = C0H - CHO PHEP LCD HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD (VI DONG 1 DUNG YEN TRONG KHI DONG 2 CHAY)
RET
;***************************************************
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN: ;TAO XUNG ENABLE DE CHUYEN THONG TIN (COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI NHAN THONG TIN GUI DEN
;*************************************************************
;MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE CHO DOAN MA KIEM TRA DUOI DAY KHI
;MOV TL0,#LOW(-1000) ;CHAY CHUONG TRINH NAY TRONG PHAN MEM MO PHONG TOPVIEW
;ACALL DELAY
;*************************************************************
MOV DATABUS,#0FFH ;CAU HINH PORT 1 CHO CHE DO PORT NHAP
SETB RW ;RW = 1 - READ LCD MODE
CLR RS ;RS = 0 - GUI LENH
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
BUSY: ;BUSY = 0 -> HOAN TAT, BUSY = 1 -> DANG THUC HIEN
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY ;KIEM TRA CO BUSY
BUSY2: ;KIEM TRA CO BAO BAN (BUSY FLAG) LAN THU HAI
MOV A,DATABUS ;DOC DU LIEU TU LCD
JB ACC.7,BUSY2 ;KIEM TRA CO BUSY LAN 2
CLR RW ;RW = 0 - WRITE LCD MODE (THOAT READ MODE, TRO VE WRITE MODE)
;*************************************************************
Giáo trình thực hành vi xử lý. 183 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG
TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai
dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị
trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang
trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.
RET
;***************************************************
DISP_FLINE: ;CTC DAT DIA CHI BAT DAU DONG 1 VA NAP DU LIEU DONG 1 VAO DDRAM
MOV DATABUS,#80H ;CODE = 80H - DAT DDRAM DIA CHI BAT DAU CUA DONG 1 - 00H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
DISP_SLINE: ;CTC DAT DIA CHI BAT DAU DONG 2 VA NAP DU LIEU DONG 2 VAO DDRAM
MOV DATABUS,#0C0H ;CODE = C0H - DAT DDRAM DIA CHI BAT DAU CUA DONG 2 - 40H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL WRITE ;GUI VUNG DU LIEU SANG LCD
RET
;***************************************************
DISP_PULSE: ;CTC HIEN THI SO XUNG TAI CHAN P3.0
MOV DATABUS,#88H ;CODE = 80H - DAT DDRAM DIA CHI HIEN THI SO XUNG - 08H
ACALL SENDCOMMAND ;GUI LENH RA LCD
ACALL BCDTOASCII ;GOI CHUONG TRING GIAI MA BCD SANG ASCII
MOV DATABUS,7FH ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD (HANG CHUC)
ACALL SENDDATA
MOV DATABUS,7EH ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD (HANG DON VI)
ACALL SENDDATA
RET
;***************************************************
BCDTOASCII: ;CTC CHUYEN DOI TU SO BCD CHUA TRONG R7 (00 - 99) SANG MA ASCII (2 MA)
MOV A,R7 ;LAY GIA TRI BCD (R7) CAN CHUYEN DOI
ANL A,#0FH ;GIU LAI 4 BIT THAP (HANG DON VI)
ADD A,#30H ;DOI SANG ASCII (ASCII = BCD + 30H)
MOV 7EH,A ;CAT SO ASCII VAO VUNG NHO HANG DON VI
MOV A,R7 ;LAY GIA TRI BCD (R7) CAN CHUYEN DOI
ANL A,#0F0H ;GIU LAI 4 BIT CAO (HANG CHUC)
SWAP A
ADD A,#30H ;DOI SANG ASCII (ASCII = BCD + 30H)
MOV 7FH,A ;CAT SO ASCII VAO VUNG NHO HANG CHUC
RET
;***************************************************
WRITE: ;CTC GUI DU LIEU SANG LCD, KET THUC GUI DU LIEU KHI DU LIEU GUI DI LA 99H
MOV R0,#0 ;OFFSET DAU TIEN TRONG VUNG DU LIEU CUA DPTR
WR1:
MOV A,R0 ;NAP OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#16,WR1 ;KIEM TRA NAP DAY DU DU LIEU CHO MOT DONG MAN HINH - 16 CHU
RET
;***************************************************
DELAY: ;CTC DELAY CO KET HOP KIEM TRA NUT NHAN P3.0
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB 'PULSE = '
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB ' '
DB 'DESIGNED BY PHAM QUANG TRI'
DB ' - ELECTRIC TRAINING CENTER - '
DB 'HO CHI MINH UNIVERSITY OF INDUSTRY'
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
Giáo trình thực hành vi xử lý. 184 Biên soạn: Phạm Quang Trí
E. HỆ THỐNG ĐIỀU KHIỂN LCD.
Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG
TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai
dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị
trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang
trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ “TRUNG TAM” và “TNTH DIEN
TU” đứng yên trên hai dòng của màn hình LCD.
• Bài 2: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ “TRUNG TAM THI NGHIEM THUC
HANH DIEN TU – BO MON DIEN TU CONG NGHIEP” và “DH CONG NGHIEP” trên hai dòng của
màn hình LCD với yêu cầu: dòng chữ thứ nhất dịch chuyển liên tục từ phải sang trái, dòng chữ thứ hai
đứng yên.
• Bài 3: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ “TRUONG DAI HOC CONG
NGHIEP THANH PHO HO CHI MINH” và “TRUNG TAM THI NGHIEM THUC HANH DIEN TU –
BO MON DIEN TU CONG NGHIEP” trên hai dòng của màn hình LCD với yêu cầu: hai dòng chữ đồng
thời dịch chuyển liên tục từ phải sang trái.
• Bài 4: Hãy viết chương trình điều khiển LCD hiển thị hai dòng chữ “HO CHI MINH UNIVERSITY OF
INDUSTRY – ELECTRONIC TRAINNING CENTER” và “IN 1 = … IN 2 = …” trên hai dòng của màn
hình LCD với yêu cầu: dòng chữ thứ nhất sẽ dịch chuyển từ phải sang trái, số lượng xung đếm được tại
chân P3.0 (IN 1) và chân P3.1 (IN 2) sẽ được hiển thị trên dòng thứ nhất tiếp phía sau dòng chữ “UP = …
DOWN= …”. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 185 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 187 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 1: Chương trình điều khiển nút nhấn, khi ta nhấn nút nào trong 8 nút thì LED tương ứng sẽ sáng lên và
ngược lại (MOMENTARY SW được nối với Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).
PORT 0
3
PORT 1
40 PINS
3
PORT 3
PORT 1
20 PINS
MOMENTARY
POWER
SW
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN NUT NHAN LAM 8 LED HOAT DONG
;***************************************************
;KET NOI: 8 LED -> PORT1 MOMENTARY SW -> PORT0 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;TAT CAC LED
KEY0: ;KEY0
JNB P0.0,KEY0OK ;KIEM TRA NUT KEY0 - Y: KEY0 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.0 ;KEY0 NHA -> LED TAT
SJMP KEY1 ;KIEM TRA NUT KE TIEP
KEY0OK:
SETB P1.0 ;KEY0 NHAN -> LED SANG
KEY1: ;KEY1
JNB P0.1,KEY1OK ;KIEM TRA NUT KEY1 - Y: KEY1 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.1 ;KEY1 NHA -> LED TAT
SJMP KEY2 ;KIEM TRA NUT KE TIEP
KEY1OK:
SETB P1.1 ;KEY1 NHAN -> LED SANG
KEY2: ;KEY2
JNB P0.2,KEY2OK ;KIEM TRA NUT KEY2 - Y: KEY2 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.2 ;KEY2 NHA -> LED TAT
SJMP KEY3 ;KIEM TRA NUT KE TIEP
KEY2OK:
SETB P1.2 ;KEY2 NHAN -> LED SANG
KEY3: ;KEY3
JNB P0.3,KEY3OK ;KIEM TRA NUT KEY3 - Y: KEY3 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.3 ;KEY3 NHA -> LED TAT
SJMP KEY4 ;KIEM TRA NUT KE TIEP
KEY3OK:
SETB P1.3 ;KEY3 NHAN -> LED SANG
KEY4: ;KEY4
JNB P0.4,KEY4OK ;KIEM TRA NUT KEY4 - Y: KEY4 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.4 ;KEY4 NHA -> LED TAT
SJMP KEY5 ;KIEM TRA NUT KE TIEP
KEY4OK:
SETB P1.4 ;KEY4 NHAN -> LED SANG
KEY5: ;KEY5
Giáo trình thực hành vi xử lý. 188 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 1: Chương trình điều khiển nút nhấn, khi ta nhấn nút nào trong 8 nút thì LED tương ứng sẽ sáng lên và
ngược lại (MOMENTARY SW được nối với Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).
JNB P0.5,KEY5OK ;KIEM TRA NUT KEY5 - Y: KEY5 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.5 ;KEY5 NHA -> LED TAT
SJMP KEY6 ;KIEM TRA NUT KE TIEP
KEY5OK:
SETB P1.5 ;KEY5 NHAN -> LED SANG
KEY6: ;KEY6
JNB P0.6,KEY6OK ;KIEM TRA NUT KEY6 - Y: KEY6 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.6 ;KEY6 NHA -> LED TAT
SJMP KEY7 ;KIEM TRA NUT KE TIEP
KEY6OK:
SETB P1.6 ;KEY6 NHAN -> LED SANG
KEY7: ;KEY7
JNB P0.7,KEY7OK ;KIEM TRA NUT KEY7 - Y: KEY7 NHAN -> XU LY NEU NUT DUOC NHAN
CLR P1.7 ;KEY7 NHA -> LED TAT
SJMP KEY0 ;KIEM TRA NUT KE TIEP
KEY7OK:
SETB P1.7 ;KEY7 NHAN -> LED SANG
SJMP KEY0
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)
Giáo trình thực hành vi xử lý. 189 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 2: Chương trình điều khiển nút nhấn, khi ta nhấn nút KEY0 thì 8 LED sẽ chớp tắt với tần số 5 Hz và
ngược lại khi ta nhả nút KEY0 thì 8 LED sẽ chớp tắt với tần số 20 Hz (MOMENTARY SW được nối với
Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).
Giáo trình thực hành vi xử lý. 190 Biên soạn: Phạm Quang Trí
F. HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN.
Bài 2: Chương trình điều khiển nút nhấn, khi ta nhấn nút KEY0 thì 8 LED sẽ chớp tắt với tần số 5 Hz và
ngược lại khi ta nhả nút KEY0 thì 8 LED sẽ chớp tắt với tần số 20 Hz (MOMENTARY SW được nối với
Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo)).
Nhấn nút “KEY4”: 8 LED sáng dồn liên tục.
Nhấn nút “KEY5”: 8 LED tắt hết (không hoạt động).
• Bài 2: Hãy viết chương trình điều khiển khi nhấn nút nhấn nào thì số thứ tự của nút nhấn đó hiển thị lên
LED 7 đoạn (LED0). Tự lựa chọn phương pháp kết nối các nút nhấn và LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển khi nhấn nút nhấn nào thì số thứ tự của nút nhấn đó hiển thị lên
LED ma trận. Tự lựa chọn phương pháp kết nối các nút nhấn và LED ma trận.
• Bài 4: Hãy viết chương trình điều khiển khi nhấn nút nhấn KEY1 thì RELAY1 đóng, khi nhấn nút nhấn
KEY2 thì RELAY2 đóng và ngược lại khi không nhấn nút nhấn thì các relay sẽ ngắt. Tự lựa chọn phương
pháp kết nối các nút nhấn và relay.
• Bài 5: Hãy viết chương trình điều khiển khi nhấn nút nhấn KEY0 thì LED 7 đoạn (LED1) sẽ bắt đầu đếm
BCD từ 9 xuống 0. Khi giá trị của LED 7 đoạn này giãm xuống tới giá trị 0 thì RELAY1 sẽ đóng lại. Sau
đó khi nhấn nút nhấn KEY1 thì LED 7 đoạn tắt và RELAY1 ngắt. Tự lựa chọn phương pháp kết nối các
nút nhấn, LED 7 đoạn và relay.
• Bài 6: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 00 lên 59 trên hai LED 7 đoạn (LED1 và
LED2). Khi nhấn nút nhấn KEY0 thì qúa trình đếm dừng lại và giá trị trên hai LED 7 đoạn bắt đầu sáng tắt
liên tục. Sau đó, khi nhấn nút KEY1 thì giá trị trên hai LED 7 đoạn tăng dần lên theo số lần nhấn nút, khi
nhấn nút KEY2 thì giá trị trên hai LED 7 đoạn giãm dần lên theo số lần nhấn nút, khi nhấn nút KEY0 thì
quá trình đếm lại tiếp tục. Tự lựa chọn phương pháp kết nối các nút nhấn và LED 7 đoạn.
• Bài 7: Hãy viết chương trình điều khiển hiển thị đồng hồ số trên sáu LED 7 đoạn (LED3 – LED7) có thể
điều chỉnh dược thời gian bằng các nút nhấn:
Nút “KEY0”: dùng để chọn lựa tính năng điều chỉnh (Giờ / Phút / Giây) hoặc dùng để
thoát khỏi quá trình điều chỉnh thời gian.
Nút “KEY1”: dùng để tăng giá trị thời gian.
Nút “KEY2”: dùng để giãm giá trị thời gian.
Trong quá trình điều chỉnh thời gian thì đồng hồ dừng hoạt động và khi chọn lựa tính năng điều
chỉnh nào (Giờ / Phút / Giây) thì cặp LED 7 đoạn tương ứng sẽ sáng tắt liên tục. Tự lựa chọn
phương pháp kết nối các nút nhấn và LED 7 đoạn.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 191 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 193 Biên soạn: Phạm Quang Trí
G. HỆ THỐNG ĐIỀU KHIỂN CÔNG TẮC.
Bài tập: Chương trình điều khiển công tắc và hiển thị lên tám LED mức logic hiện tại (LED sáng = mức cao,
LED tắt = mức thấp) của tám công tắc gạt (SWITCH được nối với Port0, LED được nối với Port1 (có sử
dụng bộ đệm đảo)).
PORT 0
PORT 1
3
40 PINS
SWITCH POWER
PORT 3
PORT 1
3
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN CONG TAC LAM 8 LED HOAT DONG
;***************************************************
;KET NOI: 8 LED -> PORT1 SWITCH -> PORT0
;***************************************************
ORG 00H
MAIN:
MOV P1,#00H ;TAT CAC LED
SW0: ;SW0
JB P0.0,SW0OK ;KIEM TRA CONG TAC SW0 - Y: SW0 = 1
CLR P1.0 ;SW0 NHA -> LED TAT
SJMP SW1 ;KIEM TRA CONG TAC KE TIEP
SW0OK:
SETB P1.0 ;SW0 NHAN -> LED SANG
SW1: ;SW1
JB P0.1,SW1OK ;KIEM TRA CONG TAC SW1 - Y: SW1 = 1
CLR P1.1 ;SW1 NHA -> LED TAT
SJMP SW2 ;KIEM TRA CONG TAC KE TIEP
SW1OK:
SETB P1.1 ;SW1 NHAN -> LED SANG
SW2: ;SW2
JB P0.2,SW2OK ;KIEM TRA CONG TAC SW2 - Y: SW2 = 1
CLR P1.2 ;SW2 NHA -> LED TAT
SJMP SW3 ;KIEM TRA CONG TAC KE TIEP
SW2OK:
SETB P1.2 ;SW2 NHAN -> LED SANG
SW3: ;SW3
JB P0.3,SW3OK ;KIEM TRA CONG TAC SW3 - Y: SW3 = 1
CLR P1.3 ;SW3 NHA -> LED TAT
SJMP SW4 ;KIEM TRA CONG TAC KE TIEP
SW3OK:
SETB P1.3 ;SW3 NHAN -> LED SANG
SW4: ;SW4
JB P0.4,SW4OK ;KIEM TRA CONG TAC SW4 - Y: SW4 = 1
CLR P1.4 ;SW4 NHA -> LED TAT
SJMP SW5 ;KIEM TRA CONG TAC KE TIEP
SW4OK:
SETB P1.4 ;SW4 NHAN -> LED SANG
SW5: ;SW5
Giáo trình thực hành vi xử lý. 194 Biên soạn: Phạm Quang Trí
G. HỆ THỐNG ĐIỀU KHIỂN CÔNG TẮC.
Bài tập: Chương trình điều khiển công tắc và hiển thị lên tám LED mức logic hiện tại (LED sáng = mức cao,
LED tắt = mức thấp) của tám công tắc gạt (SWITCH được nối với Port0, LED được nối với Port1 (có sử
dụng bộ đệm đảo)).
JB P0.5,SW5OK ;KIEM TRA CONG TAC SW5 - Y: SW5 = 1
CLR P1.5 ;SW5 NHA -> LED TAT
SJMP SW6 ;KIEM TRA CONG TAC KE TIEP
SW5OK:
SETB P1.5 ;SW5 NHAN -> LED SANG
SW6: ;SW6
JB P0.6,SW6OK ;KIEM TRA CONG TAC SW6 - Y: SW6 = 1
CLR P1.6 ;SW6 NHA -> LED TAT
SJMP SW7 ;KIEM TRA CONG TAC KE TIEP
SW6OK:
SETB P1.6 ;SW6 NHAN -> LED SANG
SW7: ;SW7
JB P0.7,SW7OK ;KIEM TRA CONG TAC SW7 - Y: SW7 = 1
CLR P1.7 ;SW7 NHA -> LED TAT
SJMP SW0 ;KIEM TRA CONG TAC KE TIEP
SW7OK:
SETB P1.7 ;SW7 NHAN -> LED SANG
SJMP SW0
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển hiển thị giá trị nhị phân của tám công tắc gạt dưới dạng số HEX
trên hai LED 7 đoạn (LED6 và LED7).
• Bài 2: Hãy viết chương trình điều khiển hiển thị giá trị nhị phân của tám công tắc gạt dưới dạng số DEC
trên ba LED 7 đoạn (LED5, LED6 và LED7).
• Bài 3: Hãy viết chương trình điều khiển công tắc và biểu diễn các kiểu hiển thị trên 8 LED.
SW1 = ON (mức thấp): 8 LED tắt hết (không hoạt động).
SW2 = ON (mức thấp): 8 LED sáng tắt liên tục.
SW3 = ON (mức thấp): 8 LED sáng dần và tắt hết liên tục.
SW4 = ON (mức thấp): 8 LED đếm lên nhị phân 8 bit liên tục.
SW5 = ON (mức thấp): 8 LED sáng đuổi liên tục.
SW6 = ON (mức thấp): 8 LED sáng dồn liên tục.
SW7 = ON (mức thấp): 8 LED sáng hết và tắt dần liên tục.
SW8 = ON (mức thấp): 8 LED đếm xuống nhị phân 8 bit liên tục.
• Bài 4: Hãy viết chương trình điều khiển công tắc để đóng ngắt RELAY1. RELAY1 sẽ đóng khi các công
tắc được gạt đúng vị trí đã chọn trước (SW1, 3, 5, 7 = ON và SW2, 4, 6, 8 = OFF) và nhấn nút nhấn KEY0.
Ngược lại thì RELAY1 sẽ ngắt. Khi RELAY1 đóng thì trên LED ma trận hiển thị chữ Y, còn khi RELAY1
ngắt thì LED ma trận hiển thị chữ N.
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 195 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 197 Biên soạn: Phạm Quang Trí
H. HỆ THỐNG ĐIỀU KHIỂN RELAY.
Bài tập: Chương trình điều khiển RELAY1 và RELAY2 đóng ngắt tuần tự và liên tục. Thời gian giữa hai lần
đóng ngắt là 1s (RELAY1 và RELAY2 được nối với P1.0 và P1.1).
PORT 0
PORT 1
40 PINS
POWER
CONTROL
RELAY
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN 2 RELAY DONG NGAT
;***************************************************
;KET NOI: RELAY CONTROL -> PORT1
;***************************************************
ORG 00H
CHOPTAT:
MOV P1,#00000001B ;RELAY1 DONG, RELAY2 NGAT
LCALL DELAY1S
MOV P1,#00000010B ;RELAY2 DONG, RELAY1 NGAT
LCALL DELAY1S
SJMP CHOPTAT ;QUAY LAI
;****************************************************
DELAY1S: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
Giáo trình thực hành vi xử lý. 198 Biên soạn: Phạm Quang Trí
H. HỆ THỐNG ĐIỀU KHIỂN RELAY.
Bài tập: Chương trình điều khiển RELAY1 và RELAY2 đóng ngắt tuần tự và liên tục. Thời gian giữa hai lần
đóng ngắt là 1s (RELAY1 và RELAY2 được nối với P1.0 và P1.1).
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển RELAY2 đóng ngắt liên tục. Thời gian giữa hai lần đóng ngắt là
3s. Tự lựa chọn phương pháp kết nối relay.
• Bài 2: Hãy viết chương trình điều khiển RELAY1 đóng ngắt liên tục sau mỗi 1 giây đồng thời với
RELAY2 đóng ngắt sau mỗi 2 giây. Tự lựa chọn phương pháp kết nối relay.
• Bài 3: Hãy viết chương trình điều khiển sao cho khi ta nhấn:
Nhấn nút nhấn KEY1 thì LED 7 đoạn hiển thị số 1 và RELAY1 đóng.
Nhấn nút nhấn KEY2 thì LED 7 đoạn hiển thị số 1 và RELAY2 đóng.
Nhấn nút nhấn KEY0 thì LED 7 đoạn hiển thị số 0 và cả hai relay đều ngắt.
Tự lựa chọn phương pháp kết nối relay, nút nhấn và LED 7 đoạn.
• Bài 4: Hãy viết chương trình điều khiển sao cho khi ta nhấn:
Nhấn phím số “1” thì LED ma trận hiển thị số 1 và RELAY1 đóng.
Nhấn phím số “2” thì LED ma trận hiển thị số 1 và RELAY2 đóng.
Nhấn phím “ESC” thì LED ma trận hiển thị số 0 và cả hai relay đều ngắt.
Tự lựa chọn phương pháp kết nối relay, bàn phím và LED ma trận.
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 199 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 201 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 1: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ (CTRL MOTOR được nối với Port0).
Giáo trình thực hành vi xử lý. 202 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 1: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ (CTRL MOTOR được nối với Port0).
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Giáo trình thực hành vi xử lý. 203 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 2: Chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ một vòng rồi dừng lại (CTRL
MOTOR được nối với Port0).
Giáo trình thực hành vi xử lý. 204 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 3: Chương trình điều khiển STEPPER1 quay bằng cách nhấn nút KEY0: quay thuận, KEY1: quay ngược,
KEY2: dừng (CTRL MOTOR được nối với Port0, MOMENTARY SW: được nối với Port1).
Giáo trình thực hành vi xử lý. 205 Biên soạn: Phạm Quang Trí
I. HỆ THỐNG ĐIỀU KHIỂN MOTOR BƯỚC.
Bài 3: Chương trình điều khiển STEPPER1 quay bằng cách nhấn nút KEY0: quay thuận, KEY1: quay ngược,
KEY2: dừng (CTRL MOTOR được nối với Port0, MOMENTARY SW: được nối với Port1).
NEXT_COM2:
SJMP TESTKEY ;QUAY TRO VE
;****************************************************
ROTATE: ;CTC DIEU KHIEN QUAY MOTOR
CJNE A,#10H,BIT4_BIT0 ;KIEM TRA TRANG THAI XUNG
MOV A,#01H ;DIEU CHING TRANG THAI XUNG VE BUOC 1
BIT4_BIT0:
CJNE A,#80H,BIT7_BIT3 ;KIEM TRA TRANG THAI XUNG
MOV A,#08H ;DIEU CHING TRANG THAI XUNG VE BUOC 4
BIT7_BIT3:
MOV P0,A ;XUAT XUNG KHIEN
ACALL DELAY
RET
;****************************************************
DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
LOOP2:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển STEPPER2 quay ngược chiều kim đồng hồ.
• Bài 2: Hãy viết chương trình điều khiển STEPPER1 và 2 quay cùng chiều kim đồng hồ.
• Bài 3: Hãy viết chương trình điều khiển STEPPER1 quay ngược chiều kim đồng hồ và STEPPER2 quay
cùng chiều kim đồng hồ. Tự lựa chọn phương pháp kết nối motor bước.
• Bài 4: Hãy viết chương trình điều khiển STEPPER1 hoạt động khi ta nhấn phím trên bàn phím:
Nhấn phím “1”: STEPPER1 quay cùng chiều kim đồng hồ.
Nhấn phím “2”: STEPPER1 quay ngược chiều kim đồng hồ.
Nhấn phím “ESC”: STEPPER1 dừng.
• Bài 5: Hãy viết chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ khi ta nhấn phím trên
bàn phím:
Nhấn phím “1”: STEPPER1 tăng dần tốc độ quay.
Nhấn phím “2”: STEPPER1 giãm dần tốc độ quay.
Nhấn phím “ESC”: STEPPER1 dừng.
• Bài 6: Hãy viết chương trình điều khiển STEPPER1 hoạt động khi ta nhấn nut nhấn:
Nhấn nút KEY0: STEPPER1 quay cùng chiều kim đồng hồ.
Nhấn nút KEY1: STEPPER1 quay ngược chiều kim đồng hồ.
Nhấn nút KEY2: STEPPER1 tăng dần tốc độ quay.
Nhấn nút KEY3: STEPPER1 giãm dần tốc độ quay.
Nhấn nút KEY4: STEPPER1 dừng.
• Bài 7: Hãy viết chương trình điều khiển STEPPER1 quay cùng chiều kim đồng hồ, motor sẽ quay khi ta
nhập từ bàn phím số bước cần quay (0 đến 200) và nhấn phím “ENTER”, motor sẽ dừng bất cứ lúc nào khi
ta nhấn phím “ESC”. Số bước motor nhập vào và số bước motor quay sẽ được hiển thị lên ba LED 7 đoạn.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 206 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 208 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 1: Chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 10 Hz (sử dụng ngắt Timer) tại chân P0.0
và hiển thị mức logic tại chân này lên LED0 (LED0 được nối với P0.0).
Giáo trình thực hành vi xử lý. 209 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
POWER
PULSE
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN DEM SO XUNG TAI CHAN INT0 (SU DUNG NGAT NGOAI INT0)
;***************************************************
;KET NOI: 7 SEG -> PORT0, SEL LED -> PORT1, PULSE -> INT0
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 03H ;DIEM NHAP ISR NGOAI 0
EX0ISR:
INC 40H ;TANG GIA TRI XUNG KICH
RETI
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV 40H,#0 ;NAP GIA TRI XUNG KICH BAN DAU
MOV IE,#81H ;CHO PHEP NGAT NGOAI 0 HOAT DONG
SETB IT0 ;DAT CHE DO NGAT NGOAI KICH KHOI CANH
MP1:
MOV R7,40H ;SO LUONG XUNG KICH
ACALL BIN8TOBCD ;CHUYEN DOI BIN SANG BCD
ACALL BCD4TO7SEG ;CHUYEN DOI BCD SANG 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI
SJMP MP1
;***************************************************
BIN8TOBCD: ;CTC CHUYEN DOI SO BINARY 8 BIT (<= 255) SANG SO BCD.
PUSH ACC
PUSH B
MOV B,#10
MOV A,R7
DIV AB ;LAY R7 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
DIV AB ;LAY KET QUA TREN CHIA TIEP CHO 10
MOV R7,A ;R7 = TRAM
MOV A,B ;LAY SO HANG CHUC
Giáo trình thực hành vi xử lý. 210 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
BCD4TO7SEG: CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN)
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
Giáo trình thực hành vi xử lý. 211 Biên soạn: Phạm Quang Trí
J. HỆ THỐNG ĐIỀU KHIỂN NGẮT (INTERRUPT).
Bài 2: Chương trình điều khiển đếm số xung tại chân INT0 (sử dụng ngắt ngoài) và hiển thị số xung này (tối đa
là 255 lần) lên ba LED 7 đoạn (LED7 – LED4 được nối với Port0, SEL IN1 được nối với Port1, PULSE
được nối với chân INT0).
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển đếm số lần nhấn nút nhấn KEY1 (sử dụng ngắt ngoài) và hiển thị
số lần nhấn nút này (tối đa là 255 lần) lên ba LED 7 đoạn (LED4, LED5 và LED6). Tự lựa chọn phương
pháp kết nối nút nhấn và LED 7 đoạn.
• Bài 2: Hãy viết chương trình điều khiển đếm số lần nhấn nút nhấn KEY1 và KEY2 (sử dụng hai ngắt
ngoài) và hiển thị số lần nhấn nút KEY1 (tối đa là 255 lần) lên ba LED 7 đoạn (LED0, LED1 và LED2),
hiển thị số lần nhấn nút KEY2 (tối đa là 255 lần) lên ba LED 7 đoạn (LED5, LED6 và LED7). Tự lựa chọn
phương pháp kết nối nút nhấn và LED 7 đoạn.
• Bài 3: Hãy viết chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 5 Hz (sử dụng ngắt Timer) tại
chân P1.0 và hiển thị mức logic tại chân này lên LED0. Tự lựa chọn phương pháp kết nối LED.
• Bài 4: Hãy viết chương trình điều khiển tạo sóng vuông tuần hoàn có tần số 1 Hz (sử dụng ngắt Timer) tại
chân P1.0 và hiển thị mức logic tại chân này lên LED0. Tự lựa chọn phương pháp kết nối LED.
• Bài 5: Hãy viết chương trình điều khiển đồng thời tạo hai sóng vuông tuần hoàn có tần số 1 Hz và 5 Hz (sử
dụng ngắt Timer) tại chân P1.0 và P1.1, hiển thị mức logic tại các chân này lên LED0 và LED1. Tự lựa
chọn phương pháp kết nối LED.
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Chế độ Counter:
o Sử dụng ngắt ngoài 0. Mỗi lần nhấn nút là một lần tác động cho ngắt.
o Chương trình phục vụ ngắt ngoài 0 sẽ làm công việc tăng nội dung ô nhớ chứa kết quả lên 1 đơn
vị.
o Chương trình chính sẽ liên tục lấy nội dung của ô nhớ chứa kết quả đổi sang mã BCD nén và hiển
thị lên LED 7 đoạn.
Giáo trình thực hành vi xử lý. 212 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 214 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
POWER
PULSE
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DEM (0000 - 9999) VA HIEN THI XUNG TAI CHAN T1
;***************************************************
;KET NOI: PORT0 -> 7 SEGMENT (DP -> A), PORT1 -> SELECT LED, PULSE -> T1 PIN
;***************************************************
ORG 00H
MAIN:
MOV TMOD,#50H ;COUNTER 16 BIT (MODE 1)
MOV TH1,#0 ;XOA COUNTER 1
MOV TL1,#0
SETB TR1 ;CHO PHEP COUNTER BAT DAU HOAT DONG
MP1:
MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI
MOV R6,TL1
ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD
ACALL BCD4TO7SEG ;DOI MA BCD SANG MA 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED
SJMP MP1
;***************************************************
BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG CHUC
MOV B,#10
MOV A,R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
Giáo trình thực hành vi xử lý. 215 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7,A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
XCH A,R6
CLR C ;DICH BIT 7 CU R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7
RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************
BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
Giáo trình thực hành vi xử lý. 216 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Giáo trình thực hành vi xử lý. 217 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 218 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
XCH A,R6
CLR C ;DICH BIT 7 CU R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7
RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************
BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN).
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
Giáo trình thực hành vi xử lý. 219 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;***************************************************
T0ISR: ;ISR TIMER0 - 50MS
CLR TR0
CLR TF0
MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS
MOV TL0,#LOW(-50000)
INC 40H ;TANG BIEN DEM SO LAN NGAT - 1 LAN = 50MS
SETB TR0
RETI
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Giáo trình thực hành vi xử lý. 220 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
PORT 0
PORT 1
40 PINS
PORT 3
PORT 1
20 PINS
POWER
PULSE
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển tạo xung 1 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic
tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED.
• Bài 2: Hãy viết chương trình điều khiển tạo xung 3 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic
tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED.
• Bài 3: Hãy viết chương trình điều khiển tạo xung 1 Hz hoặc 3 Hz (sử dụng Timer) tại chân P1.0 tùy thuộc
vào ta nhấn hay nhả nút nhấn KEY0 và hiển thị mức logic tại chân này lên LED. Tự lựa chọn phương pháp
kết nối LED và nút nhấn.
• Bài 4: Hãy viết chương trình điều khiển đếm liên tục số lượng xung được đưa vào chân T0 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo
xung và các LED 7 đoạn.
• Bài 5: Hãy viết chương trình điều khiển đo tần số của xung (đơn vị tính là Hz) được đưa vào chân T0 của
vi điều khiển và hiển thị giá trị tần số lên LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo xung
và các LED 7 đoạn.
• Bài 6: Hãy viết chương trình điều khiển đo độ rộng xung (đơn vị tính là ms) được đưa vào chân T0 của vi
điều khiển và hiển thị giá trị độ rộng xung lên LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo
xung và các LED 7 đoạn.
• Bài 7: Thực hiện thay đổi tần số của thiết bị tạo xung (bằng cách điều chỉnh biến trở trên thiết bị) hoặc thay
đổi nguồn tạo xung khác vào. Thực hiện lại các bài tập trên và quan sát trên LED 7 đoạn để nhận xét sự
thay đổi của chương trình.
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Chế độ Counter:
o Sử dụng Timer1 ở chế độ 1 counter.
Giáo trình thực hành vi xử lý. 221 Biên soạn: Phạm Quang Trí
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
o Khi cho Timer1 chạy, đọc liên tục các giá trị của TH1 và TL1.
o Đổi qua mã BCD nén và hiển thị lên LED 7 đoạn.
Chế độ đo tần số:
o Viết chương trình đếm số xung trong 1s và hiển thị lên LED 7 đoạn (trong khi đếm thì không hiển
thị số đếm mà vẫn hiển thị giá trị tần số trước đó).
Chế độ đo độ rộng xung (chế độ Gate = 1):
o Viết chương trình sử dụng Timer0 ở chế độ Gate = 1.
Giáo trình thực hành vi xử lý. 222 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 224 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H,
0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thông qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất
cách nhau 1s.
PORT 0
PORT 1
40 PINS
PARALLEL SERIAL
PARALLEL SERIAL
PARALLEL SERIAL
POWER
OUT
IN 2
IN 1
PORT 3
PORT 1
20 PINS
OUT 2
OUT 1
IN
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP (MO RONG PORT XUAT)
;***************************************************
;KET NOI: LED -> PARALLEL OUT, RXD -> IN, TXD -> CLK
;***************************************************
ORG 00H
MAIN:
MOV SCON,#12H ;KHOI TAO SERIAL PORT (MODE0, REN = 1, TI = 1, RI = 0)
MOV DPTR,#DATABYTE ;NAP DIA CHI VUNG DU LIEU
MOV R0,#0 ;OFFSET VUNG DU LIEU
WAIT:
JNB TI,WAIT ;KIEM TRA CO TI (KIEM TRA PHAT XONG)
CLR TI ;XOA CO TI
MOV A,R0 ;LAY OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
MOV SBUF,A ;PHAT DU LIEU RA SERIAL PORT
ACALL DELAY
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#9,WAIT ;KIEM TRA DA PHAT XONG HET CAC DU LIEU TRONG VUNG DU LIEU
SJMP MAIN
;***************************************************
DELAY:
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
DEL:
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
JNB TF0,$
CLR TR0
Giáo trình thực hành vi xử lý. 225 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H,
0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thông qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất
cách nhau 1s.
CLR TF0
DJNZ R0,DEL
POP 00H
RET
DATABYTE:
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
1.3 Lưu chương trình và biên dịch chương trình.
1.4 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.5 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Giáo trình thực hành vi xử lý. 226 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 2: Chương trình điều khiển (ứng dụng mở rộng port nhập) thực hiện liên tục việc nhập dữ liệu từ 8 công
tắc thông qua port nối tiếp và sử dụng vi mạch 74165, dữ liệu nhập vào này sẽ được xuất ra 8 LED.
PORT 0
3
PORT 1
3
40 PINS
SWITCH POWER
PARALLEL SERIAL
PARALLEL SERIAL
PARALLEL SERIAL
POWER
OUT
IN 2
IN 1
PORT 3
PORT 1
20 PINS
OUT 2
OUT 1
PORT 2
PORT 3
IN
Giáo trình thực hành vi xử lý. 227 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
PORT 0
3
PORT 1
40 PINS
3
PORT 3
PORT 1
20 PINS
MOMENTARY
POWER
SW
PORT 2
PORT 3
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP.
;***************************************************
;KET NOI: LED -> P1, RXD -> TXD, KEY0 -> INT0 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV TMOD,#20H ;TIMER 1: MODE 2 - TAO TOC DO BAUD SERIAL PORT
MOV TH1,#-26 ;BAUD RATE = 1200
SETB TR1 ;TIMER HOAT DONG
MOV SCON,#52H ;SERIAL: MODE 1, TI = 1, RI = 0, REN = 1
MP1:
MOV DPTR,#DATABYTE ;NAP DIA CHI VUNG DU LIEU
MP2:
MOV R0,#50 ;BIEN LAP - CHONG DOI PHIM
KEY_NHAN:
JB INT0,$ ;CHO PHIM DUOC NHAN
DJNZ R0,KEY_NHAN ;GIAM BIEN LAP - CHONG DOI (PHIM DA NHAN)
MOV R0,#50 ;BIEN LAP - CHONG DOI PHIM
KEY_NHA:
JNB INT0,$ ;CHO PHIM DUOC NHA
DJNZ R0,KEY_NHA ;GIAM BIEN LAP - CHONG DOI (PHIM DA NHAN)
;PHIM DA DUOC NHAN VA NHA HOAN TAT
MOV A,#0 ;OFFSET CUA DU LIEU
MOVC A,@A+DPTR ;LAY DU LIEU TRONG VUNG DU LIEU
ACALL TRANS_DATA ;GOI CTC PHAT DU LIEU QUA SERIAL PORT
ACALL RECEI_DATA ;GOI CTC THU DU LIEU QUA SERIAL PORT
MOV 40H,A ;NAP DU LIEU THU DUOC VAO O NHO 40H
MOV P1,40H ;XUAT PORT HIEN THI
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP
Giáo trình thực hành vi xử lý. 228 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
MOV A,DPL ;KIEM TRA DA PHAT/THU XONG VUNG DU LIEU
CJNE A,#LOW(DATABYTE+9),MP2
SJMP MP1 ;QUAY TRO LAI
;***************************************************
TRANS_DATA: ;CTC PHAT DU LIEU
JNB TI,$ ;KIEM TRA PHAT XONG
CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP
MOV SBUF,A ;PHAT DU LIEU
RET
;***************************************************
RECEI_DATA: ;CTC THU DU LIEU
JNB RI,$ ;KIEM TRA THU XONG
CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP
MOV A,SBUF ;THU DU LIEU
RET
;***************************************************
DATABYTE: ;VUNG DU LIEU
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển việc truyền dữ liệu dạng nối tiếp giữa hai chip vi điều khiển với
nhau (phương pháp nối dây cho từng vi điều khiển tương tự bài mẫu 3):
o Vi điều khiển 1: Viết chương trình tạo một bảng dữ liệu gồm 9 bytes (00H, 01H, 03H, 07H, 0FH,
1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối tiếp (TXD) để
truyền sang cho vi điều khiển 2, việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần
xuất một byte. Đồng thời, vi điều khiển 1 liên tục kiểm tra và thu dữ liệu vào từ port nối tiếp
(RXD) các dữ liệu do vi điều khiển 2 gửi sang và cất vào RAM nội có địa chỉ bắt đầu là 40H, dữ
liệu sau khi nhập vào được xuất ra 8 LED đồng thời với việc ghi vào RAM nội.
o Vi điều khiển 2: Viết chương trình tạo một bảng dữ liệu gồm 9 bytes (FFH, 7FH, 3FH, 1FH, 0FH,
07H, 03H, 01H, 00H). Thực hiện việc xuất từng byte của bảng này ra port nối tiếp (TXD) để
truyền sang cho vi điều khiển 1, việc xuất dữ liệu được điều khiển bằng nút nhấn KEY1, mỗi lần
xuất một byte. Đồng thời, vi điều khiển 2 liên tục kiểm tra và thu dữ liệu vào từ port nối tiếp
(RXD) các dữ liệu do vi điều khiển 2 gửi sang và cất vào RAM nội có địa chỉ bắt đầu là 40H, dữ
liệu sau khi nhập vào được xuất ra 8 LED đồng thời với việc ghi vào RAM nội.
• Bài 2: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Phần mở rộng port xuất:
o Port thu phát nối tiếp của 8051 có thể sử dụng để mở rộng thành nhiều port xuất song song. Để
thực hiện điều này, sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và vi
mạch chuyển đổi từ nối tiếp ra song song (Serial In – Parallel Out) như 74164, 4094, …
o Chế độ thanh ghi dịch: RXD là ngõ ra dữ liệu nối tiếp, TXD là ngõ ra xung clock.
o Viết chương trình: xuất dữ liệu ra port nối tiếp ở chế độ thanh ghi dịch.
Phần mở rộng port nhập:
o Port thu phát nối tiếp của 8051 có thể sử dụng để mở rộng thành nhiều port nhập song song. Để
thực hiện điều này, sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và vi
mạch chuyển đổi song song từ ra nối tiếp (Serial Out – Parallel In) như 74165.
o Chế độ thanh ghi dịch: RXD là ngõ ra dữ liệu nối tiếp, TXD là ngõ ra xung clock.
o Viết chương trình:
Cho LD\ = 0 để nhập dữ liệu từ các công tắc.
Cho LD\ = 1 để chuẩn bị thực hiện việc ghi dịch.
Nhập dữ liệu từ port nối tiếp ở chế độ thanh ghi dịch.
Xuất dữ liệu ra các LED.
Phần thu phát nối tiếp:
Giáo trình thực hành vi xử lý. 229 Biên soạn: Phạm Quang Trí
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
o Nối chân RXD của vi điều khiển 1 với chân TXD của vi điều khiển 2.
o Nối chân TXD của vi điều khiển 1 với chân RXD của vi điều khiển 2.
Giáo trình thực hành vi xử lý. 230 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 232 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 1: Chương trình điều khiển Port I/O, làm cho 8 LED đếm lên nhị phân 8 bit (LED được nối với DATAOUT
A, CS573A được nối với SELCHIP 0). Sử dụng cơ chế bộ nhớ ngoài.
VI ÑIEÀU KHIEÅN
CS573A
POWER
CS573B
CS8255
PORT A
CS245
PORT 0
POWER
SW
MÔÛ ROÄNG PORT I/O
PORT C
PORT 1
40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
LED DAÕY A0..A7
SELECT
CHIP
CLOCK
OUT
BAR LED 2 POWER BAR LED 1
1
3 NGUOÀN 3
+5V
Giáo trình thực hành vi xử lý. 233 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 2: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED (LED được nối
với DATAOUT A, SWITCH được nối với DATAIN, CS573A được nối với SELCHIP 0, CS245 được nối
với SELCHIP 1). Sử dụng cơ chế bộ nhớ ngoài.
VI ÑIEÀU KHIEÅN
CS573A
POWER
CS8255
CS573B
PORT A
CS245
PORT 0
1
POWER
SW
COÂNG MÔÛ ROÄNG PORT I/O
PORT C
PORT 1
SWITCH POWER
TAÉC
40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B
8 PORT 3
PORT 1
20 PINS
8
PORT 2
PORT 3
LED DAÕY A0..A7
SELECT
CHIP
CLOCK
OUT
BAR LED 2 POWER BAR LED 1
3
NGUOÀN 3
3
+5V
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển Port I/O, làm cho 8 LED tắt hết và sáng dần liên tục (LED được
nối với DATAOUT B, CS573B được nối với SELCHIP 5).
• Bài 2: Hãy viết chương trình điều khiển Port I/O, làm cho 16 LED sáng hết và tắt dần liên tục (LED được
nối với DATAOUT A và DATAOUT B, CS573A được nối với SELCHIP 4, CS573B được nối với
SELCHIP 5).
• Bài 3: Hãy viết chương trình điều khiển Port I/O, làm cho LED 7 đoạn hiển thị đếm BCD từ 0 lên 9 liên
tục (LED0 được nối với DATAOUT A, CS573A được nối với SELCHIP 6).
• Bài 4: Hãy viết chương trình điều khiển Port I/O, làm cho hai LED 7 đoạn hiển thị đếm BCD từ 00 lên 99
liên tục (LED0 được nối với DATAOUT A, LED1 được nối với DATAOUT B, CS573A được nối với
SELCHIP 6, CS573B được nối với SELCHIP 7).
• Bài 5: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với DATAOUT A, SWITCH được nối với DATAIN, CS573A được nối với SELCHIP 4,
CS245 được nối với SELCHIP 1).
• Bài 6: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị trạng thái hiện tại (LED sáng = nút nhấn, LED tắt = nút nhả) của các nút nhấn này lên LED (LED
được nối với DATAOUT A, PUSH KEY được nối với DATAIN, CS573A được nối với SELCHIP 5,
CS245 được nối với SELCHIP 2).
Giáo trình thực hành vi xử lý. 234 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 2: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED (LED được nối
với DATAOUT A, SWITCH được nối với DATAIN, CS573A được nối với SELCHIP 0, CS245 được nối
với SELCHIP 1). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 7: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED 7 đoạn (LED0 được nối với DATAOUT A, PUSH KEY được
nối với DATAIN, CS573A được nối với SELCHIP 6, CS245 được nối với SELCHIP 3).
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 235 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 3: Chương trình điều khiển Port I/O, làm cho 8 LED đếm lên nhị phân 8 bit (LED được nối với PortA,
CS8255 được nối với SELCHIP 0). Sử dụng cơ chế bộ nhớ ngoài.
CS573A
POWER
CS8255
CS573B
PORT A
CS245
PORT 0
PORT C
PORT 1
40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B
PORT 3
PORT 1
20 PINS
PORT 2
PORT 3
1
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 236 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 4: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED. Sử dụng cơ
chế bộ nhớ ngoài.
CS573A
POWER
CS8255
CS573B
SWITCH POWER
PORT A
CS245
PORT 0
PORT C
PORT 1
40 PINS
DATA OUT
DATA OUT
DATA IN
PORT B
PORT 3
PORT 1
8
20 PINS
PORT 2
PORT 3
1
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển Port I/O, làm cho 8 LED sáng đuổi liên tục (LED được nối với
PortB, CS8255 được nối với SELCHIP 5).
• Bài 2: Hãy viết chương trình điều khiển Port I/O, làm cho 16 LED sáng đuổi liên tục (LED được nối với
PortA và PortB, CS8255 được nối với SELCHIP 4).
• Bài 3: Hãy viết chương trình điều khiển Port I/O, làm cho LED 7 đoạn hiển thị đếm HEX từ F xuống A
liên tục (LED0 được nối với PortA, CS8255 được nối với SELCHIP 6).
• Bài 4: Hãy viết chương trình điều khiển Port I/O, làm cho hai LED 7 đoạn hiển thị đếm HEX từ 00 lên FF
liên tục (LED0 được nối với PortA, LED1 được nối với PortB, CS8255 được nối với SELCHIP 7).
• Bài 5: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và
hiển thị mức logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED
(LED được nối với PortA, SWITCH được nối với PortB, CS8255 được nối với SELCHIP 4).
• Bài 6: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị trạng thái hiện tại (LED sáng = nút nhấn, LED tắt = nút nhả) của các nút nhấn này lên LED (LED
được nối với PortA, PUSH KEY được nối với PortB, CS8255 được nối với SELCHIP 5).
• Bài 7: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED 7 đoạn (LED0 được nối với PortA, PUSH KEY được nối với
PortB, CS8255 được nối với SELCHIP 6).
• Bài 8: Hãy viết chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các nút nhấn KEY0 – KEY7 và
hiển thị tên của các nút nhấn này lên LED ma trận (COL-RED được nối với PortA, ROW được nối với
PortB, PUSH KEY được nối với PortC, CS8255 được nối với SELCHIP 6).
Giáo trình thực hành vi xử lý. 237 Biên soạn: Phạm Quang Trí
M. HỆ THỐNG ĐIỀU KHIỂN PORT I/O (ĐIỀU KHIỂN XUẤT/NHẬP QUA CÁC THIẾT BỊ NGOẠI VI).
Bài 4: Chương trình điều khiển Port I/O, liên tục đọc các giá trị từ các công tắc gạt SW0 – SW7 và hiển thị mức
logic hiện tại (LED sáng = mức cao, LED tắt = mức thấp) của các công tắc này lên LED. Sử dụng cơ
chế bộ nhớ ngoài.
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
Giáo trình thực hành vi xử lý. 238 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 240 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 1: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào (kênh
IN0) lên hai LED 7 đoạn (LED1 và LED0; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ
ngoài.
CS0809 ANALOG
V1 POWER
POWER DIGITAL
IN
PORT 1
TAÏO AÙP
40 PINS
OUT
V2
PORT 3
PORT 1
1
20 PINS
V3
PORT 2
PORT 3
V4
3
8
CS573A
POWER
CS8255
CS573B
1
PORT A
CS245
1
PORT C
DATA OUT
DATA OUT
DATA IN
PORT B
Giáo trình thực hành vi xử lý. 241 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 1: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào (kênh
IN0) lên hai LED 7 đoạn (LED1 và LED0; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ
ngoài.
1.6 Nạp chương trình vào vi điều khiển.
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 242 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 2: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của kênh ngõ vào (kênh
IN0) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số DEC từ 0 -> 255). Sử dụng cơ chế bộ
nhớ ngoài.
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 243 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 3: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị điện áp của kênh ngõ vào
(kênh IN0) lên bốn LED 7 đoạn (LED3: hàng đơn vị; LED2, LED1 và LED0: ba số phần thập phân).
Sử dụng cơ chế bộ nhớ ngoài.
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Giáo trình thực hành vi xử lý. 244 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
ADC
1
CS0809 ANALOG
V1 POWER
POWER DIGITAL
POWER
SW
IN
PORT 1
TAÏO AÙP
40 PINS
8
OUT
V2
PORT 3
PORT 1
1
20 PINS
V3
PORT 2
PORT 3
V4
3
8
POWER
CS573A
CS8255
CS573B
1
CS245
PORT A
LED 7 ÑOAÏN
7SEG7 IN
MÔÛ ROÄNG PORT I/O
PORT C
NUÙT NHAÁN
MOMENTARY
8 8 8 8 8
DATA OUT
DATA OUT
POWER
DATA IN
8
SW
PORT B
Giáo trình thực hành vi xử lý. 245 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh
ngõ vào (IN0 và IN1) lên bốn LED 7 đoạn (LED1 và LED0: kênh IN0; LED4 và LED3: kênh IN1; dưới
dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 2: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của ba kênh
ngõ vào (IN2, IN3 và IN4) lên sáu LED 7 đoạn (LED1 và LED0: kênh IN2; LED4 và LED3: kênh IN3;
LED7 và LED6: kênh IN4; dưới dạng số HEX từ 00H -> FFH). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 3: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh
ngõ vào (kênh IN6, IN7) lên sáu LED 7 đoạn (LED2, LED1 và LED0: kênh IN6; LED7, LED6 và LED5:
kênh IN7; dưới dạng số DEC từ 0 -> 255). Sử dụng cơ chế bộ nhớ ngoài.
• Bài 4: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của tám kênh
ngõ vào (kênh IN0 -> IN7) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 ->
255), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn lần lượt
các nút nhấn KEY0 -> KEY7. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 5: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của tám kênh
ngõ vào (kênh IN0 -> IN7) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 ->
255), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút
KEY0. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 6: Hãy viết chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị điện áp của
hai kênh ngõ vào (kênh IN0, IN1) lên bốn LED 7 đoạn (LED3: hàng đơn vị; LED2, LED1 và LED0: ba số
phần thập phân), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách
nhấn nút KEY0. Sử dụng cơ chế bộ nhớ ngoài.
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Quá trình biến đổi A/D được thực hiện qua các bước sau:
o Xác lập địa chỉ chọn kênh ngõ vào (A0, A1, A2).
o Tạo xung START/ALE bằng cách xuất một giá trị bất kỳ ra ngoại vi ADC0809 với địa chỉ ngoại vi
đã chọn (CS: Chip Select).
o Tạo thời gian delay 120 µs.
o Đọc giá trị từ ngoại vi ADC0809 với địa chỉ ngoại vi đã chọn (giá trị này có tầm từ 0 - 255 tùy
theo điện áp ngõ vào từ 0 - 5V ⇒ độ phân giải là 5V/255 = 19,6 mV).
o Đổi giá trị này thành điện áp (tính bằng mV) bằng cách nhân với 19,6 ≈ 20.
o Đổi giá trị này ra mã BCD nén.
o Xuất ra LED 7 đoạn để hiển thị.
Đổi số nhị phân 8 bit thành mã BCD nén (packed BCD):
o Lấy giá trị cần chuyển đổi (0 – 255) chia cho 10 ⇒ Số dư sẽ là mã BCD hàng đơn vị.
o Lấy kết quả (thương số) của phép chia trên chia tiếp cho 10 ⇒ Số dư sẽ là mã BCD hàng chục.
o Kết quả (thương số) của phép chia trên ⇒ Mã BCD hàng trăm.
o Kết hợp mã BCD của hàng chục và hàng đơn vị lại thành mã BCD nén. Còn mã BCD của hàng
trăm thì giữ nguyên.
o Chương trình mẫu:
;***************************************************
;CTC CHUYEN DOI SO BINARY 8 BIT (<= 255) SANG SO BCD.
;***************************************************
;NAME: BIN8TOBCD.
;INPUT: R7 = SO BCD 8 BIT (<= 255).
;OUTPUT: R7,R6 = SO BCD (TRAM - CHUC - DON VI).
;***************************************************
BIN8TOBCD:
PUSH ACC
PUSH B
MOV B,#10
Giáo trình thực hành vi xử lý. 246 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
MOV A,R7
DIV AB ;LAY R7 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
DIV AB ;LAY KET QUA TREN CHIA TIEP CHO 10
MOV R7,A ;R7 = TRAM
MOV A,B ;LAY SO HANG CHUC
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
Giáo trình thực hành vi xử lý. 247 Biên soạn: Phạm Quang Trí
N. HỆ THỐNG ĐIỀU KHIỂN ADC.
Bài 4: Chương trình điều khiển biến đổi A/D thông qua ADC0809 và hiển thị giá trị của hai kênh ngõ vào
(kênh IN0 và IN1) lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255),
LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi được thực hiện bằng cách nhấn nút KEY0.
Sử dụng cơ chế bộ nhớ ngoài.
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
XCH A,R6
CLR C ;DICH BIT 7 CU R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7
RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************
Giáo trình thực hành vi xử lý. 248 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 250 Biên soạn: Phạm Quang Trí
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 1: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi giá trị lưu trong thanh
ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi liên tục 00H, 40H, 80H, C0H và
FFH, mỗi lần cách nhau 2 giây.
VI ÑIEÀU KHIEÅN
ANALOG
POWER
PORT 0
OUT
1
POWER
SW
DIGITAL
PORT 1
DAC 8
IN
40 PINS
PORT 3
PORT 1
20 PINS
VOM
PORT 2
PORT 3
SELECT CLOCK
8 NGUOÀN
A0..A7 CHIP OUT
5V, 12V
Giáo trình thực hành vi xử lý. 251 Biên soạn: Phạm Quang Trí
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 2: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện biến đổi giá trị lưu trong thanh
ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi liên tục từ 00H -> FFH, mỗi lần
cách nhau 2 giây và được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng số thập phân
từ 0 -> 255).
PORT 0
PORT 1
40 PINS
ANALOG
POWER
PORT 3
PORT 1
20 PINS
OUT
DIGITAL
PORT 2
PORT 3
IN
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
Giáo trình thực hành vi xử lý. 252 Biên soạn: Phạm Quang Trí
O. HỆ THỐNG ĐIỀU KHIỂN DAC.
Bài 3: Chương trình điều khiển biến đổi D/A thông qua DAC0808 và thực hiện tạo sóng sin có tần số bất kỳ tại
ngõ ra.
VI ÑIEÀU KHIEÅN
ANALOG
POWER
PORT 0
1
OUT
POWER
SW
DIGITAL
PORT 1
DAC 8
IN
40 PINS
PORT 3
PORT 1
20 PINS
OSC
PORT 2
PORT 3
SELECT CLOCK
8 NGUOÀN
A0..A7 CHIP OUT
5V, 12V
1.3 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
tam giác có tần số bất kỳ.
• Bài 2: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
vuông có tần số bất kỳ.
• Bài 3: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện biến đổi
giá trị lưu trong thanh ghi R0 thành điện áp tương tự. Giá trị trong thanh ghi R0 thay đổi theo việc nhấn nút
KEY0 hoặc KEY1 (KEY0: tăng giá trị, KEY1: giãm giá trị) từ 00H -> FFH và được hiển thị lên ba LED 7
đoạn (LED2, LED1 và LED0; dưới dạng số thập phân từ 0 -> 255).
• Bài 4: Hãy viết chương trình điều khiển biến đổi D/A thông qua vi mạch DAC0808 và thực hiện tạo sóng
sin có tần số thay đổi trong một khoảng tần số tự chọn tùy theo việc nhấn nút KEY0 hoặc KEY1 (KEY0:
tăng tần số, KEY1: giãm tần số ) và được hiển thị lên ba LED 7 đoạn (LED2, LED1 và LED0; dưới dạng
số thập phân từ 0 -> 255)..
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Phần tạo sóng sin:
o Tạo một bảng dữ liệu gồm 128 bytes là giá trị của 128 mẫu có được từ hình sin, đỉnh cao nhất của
hình sin có giá trị là 255 (FFH), đỉnh thấp nhất của hình sin có giá trị là 0 (00H). Do đó trục của hình sin có
giá trị là 127,5 (80H hay 7FH).
x × 360 O
o Giá trị của mẫu thứ x là: sin × 127,5 + 127,5
128
o Liên tục xuất bảng giá trị này ra vi mạch DAC0808, thay đổi thời gian delay giữa các lần xuất sẽ
tạo ra các tần số khác nhau.
Giáo trình thực hành vi xử lý. 253 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 255 Biên soạn: Phạm Quang Trí
P. HỆ THỐNG ĐIỀU KHIỂN ĐO NHIỆT ĐỘ.
Bài tập: Chương trình đo nhiệt độ và hiển thị giá trị lên bốn LED 7 đoạn (một LED hiển thị phần thập phân).
VI ÑIEÀU KHIEÅN
PORT 0
ADC
1
CAÛM
CS0809 ANALOG
POWER DIGITAL
POWER
V IN POWER V IN
2
SW
BIEÁN
IN
PORT 1
NHIEÄT
1
40 PINS
8
OUT
PORT 3
PORT 1
1
20 PINS
1
V OUT
LM335
PORT 2
PORT 3
5V
8
CS573A
POWER
CS8255
CS573B
1
PORT A
CS245
1
LED 7 ÑOAÏN
7SEG7 IN
MÔÛ ROÄNG PORT I/O
PORT C
8 8 8 8 8
DATA OUT
DATA OUT
DATA IN
PORT B
Giáo trình thực hành vi xử lý. 256 Biên soạn: Phạm Quang Trí
P. HỆ THỐNG ĐIỀU KHIỂN ĐO NHIỆT ĐỘ.
Bài tập: Chương trình đo nhiệt độ và hiển thị giá trị lên bốn LED 7 đoạn (một LED hiển thị phần thập phân).
1.7 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.8 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển đo nhiệt độ và hiển thị lên bốn LED 7 đoạn (một LED hiển thị
phần thập phân) với những yêu cầu sau:
o Cho biết trước nhiệt độ là 50OC.
o Đo nhiệt độ hiện tại.
o Nếu nhiệt độ đo được nhỏ hơn nhiệt độ đặt thì kích đóng RELAY 1.
o Nếu nhiệt độ đo được lớn hơn nhiệt độ đặt thì kích ngắt RELAY 1.
• Bài 2: Hãy viết chương trình điều khiển đo nhiệt độ và hiển thị lên bốn LED 7 đoạn (một LED hiển thị
phần thập phân) với những yêu cầu sau:
o Cho phép đặt trước nhiệt độ là (10OC - 50OC) bằng các nút nhấn KEY0 (tăng nhiệt độ) và KEY1
(giãm nhiệt độ).
o Đo nhiệt độ hiện tại.
o Nếu nhiệt độ đo được nhỏ hơn nhiệt độ đặt thì kích đóng RELAY 1.
o Nếu nhiệt độ đo được lớn hơn nhiệt độ đặt thì kích ngắt RELAY 1.
• Bài 3: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Cân chỉnh khối cảm biến nhiệt:
o Chỉnh biến trở R137 sao cho V1 = 2,73 + 0,01 x tOC (V). Trong thực tế để chính xác thì ta nhúng
LM335 vào nước đá đang tan (0OC).
o Chỉnh biến trở R133 sao cho V2 = 2,73 V.
Đo nhiệt độ với độ phân giải 0,5OC:
o Nhiệt độ sau khi qua khối cảm biến nhiệt sẽ tạo ra một điện áp tại J93 (V OUT) có giá trị là VOUT
= 39 * tOC (mV).
o Với độ phân giải của ADC0809 là 19,6 mV thì điện áp trên sau khi qua ADC0809 sẽ có giá trị là
39 * tOC / 19,6 ≈ 2 * tOC.
o Để hiển thị giá trị nhiệt độ lên LED 7 đoạn với một số phần thập phân thì giá trị hiển thị sẽ phải là
10 * t. Do đó, giá trị thu được sau khi biến đổi A/D sẽ được nhân với 5 rồi biến đổi qua mã BCD nén → hiển
thị lên LED 7 đoạn.
Giáo trình thực hành vi xử lý. 257 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 259 Biên soạn: Phạm Quang Trí
Q. HỆ THỐNG ĐIỀU KHIỂN MOTOR DC.
Bài tập: Chương trình
Giáo trình thực hành vi xử lý. 260 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 262 Biên soạn: Phạm Quang Trí
R. HỆ THỐNG ĐIỀU KHIỂN SERIAL EEPROM.
Bài tập: Chương trình
Giáo trình thực hành vi xử lý. 263 Biên soạn: Phạm Quang Trí
TRUNG TÂM THÍ NGHIỆM THỰC HÀNH ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
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:
Giáo trình thực hành vi xử lý. 265 Biên soạn: Phạm Quang Trí
S. HỆ THỐNG ĐIỀU KHIỂN RTC (REAL TIME CLOCK).
Bài tập: Chương trình
Giáo trình thực hành vi xử lý. 266 Biên soạn: Phạm Quang Trí