Ngay sau khi reset hệ thống, bộ đếm chương trình PC được nạp 0000H. Lệnh
đầu tiên được thực thi là LJMP MAIN, lệnh này rẽ nhánh đến chương trình
chính ở địa chỉ 0030H trong bộ nhớ chương trình. Ba lệnh đầu tiên của chương
trình chính sẽ khởi động Timer 0 ở chế độ 8 bit tự động nạp lại (Mode 2), sao
cho Timer 0 sẽ tràn sau mỗi 50µs. Lệnh MOV IE, #82H cho phép các ngắt do
Timer0 tạo ra. Mỗi một lần tràn, Timer sẽ tạo ra một ngắt. Dĩ nhiên là lần tràn
đầu tiên sẽ không xuất hiện sau 50µs do chương trình chính đang ở trong vòng
lặp “không làm gì”. Khi ngắt xuất hiện sau mỗi 50µs, chương trình chính bị ngắt
và ISR cho Timer0 được thực thi. Ở ví dụ trên ISR này chỉ đơn giản lấy bù bit
của port và quay trở về chương trình chính nơi vòng lặp “không làm gì” được
thực thi để chờ một ngắt mới sau mỗi 50µs.
146 trang |
Chia sẻ: huongthu9 | Lượt xem: 580 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Vi điều khiển - Phần 2, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
12
Q4
7
Q5
5
Q6
4
Q7
6
Q8
14
Q9
13
Q10
15
Q12
1
Q13
2
Q14
3VCC
16
GND
8
OSC
9
OSC
10
VCC
Hình 6.4.1: Sơ đồ nguyên lý khối phát xung vuông (Square Wave Generator).
6.4.1.2. Sơ đồ bố trí linh kiện.
Hình 6.4.2: Khối phát xung vuông (Square Wave Generator).
BÀI THỰC HÀNH
Viết chương trình, mô phỏng và lắp ráp mạch điều khiển đế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)
6.4.2. Lưu đồ giải thuật.
Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển.
393
Hình 6.4.3: Lưu đồ giải thuật của chương trình.
6.4.3. Chương trình điều khiển.
Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình
và biên dịch, kiểm tra lỗi cú pháp của chương trình.
Bước 2: Khởi động phần mềm Topview Simulation.
Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên
tập tin chương trình là: J2.ASM
Bước 4: Viết chương trình điều khiển dưới đây vào máy tính.
;***************************************************
;CHUONG TRINH DIEU KHIEN 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
394
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
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 ;CATTAM 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
395
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***************************************************
DISP7SEGMUL4: ;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN)
PUSH ACC ;CATTAM 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 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:
396
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
Bước 5: Lưu chương trình trên vào máy tính.
Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do cú pháp của
các lệnh không chính xác, cần phải được kiểm tra lại. Sau khi hoàn tất việc hiệu
chỉnh sai sót thì quay trở về thực hiện từ Bước 5.
o Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập
tin mã máy với tên là: J2.HEX và thực hiện tiếp theo các phần nội dung dưới
đây.
6.4.4. Mô phỏng hoạt động.
Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô
phỏng quá trình hoạt động của hệ thống vi điều khiển.
Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10).
Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển LED 7 đoạn
như Hình 6.5.4 dưới đây.
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A
B
C
D
E
F
G
A
B
C
D
E
F
G
AD0 A
AD1 B
AD2 C
AD3 D
AD4 E
AD5 F
AD6 G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
P1.3
P
1
.0
P
1
.1
P
1
.2
P
1
.3
P1.0
P1.1
P1.2
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+
5
V
MA ÏCH Ñ I EÀU K HI EÅN N GA ÉT ( N GA ÉT N GOA ØI )
LED7
Q1
A1015
+5V
LED6
Q2
A1015
+5V
R2
1K
R3
1K
R4
56
R5
56
R6
56
R7
56
R8
56
R9
56
R10
56
LED5
Q3
A1015
+5V
LED4
Q4
A1015
+5V
R11
1K
R12
1K
C3
10uF
R1
10k
+5V
U1(P3.2/INT0)
A
B
397
Hình 6.4.4: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển.
Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập
tin là: J-2.DSN. Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc lấy
mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học.
Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy
đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: J2.HEX
Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả
trên màn hình máy tính.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do giải thuật
chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần
phải được kiểm tra lại. Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về
thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8
(do mạch mô phỏng vẽ không chính xác).
o Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần
nội dung dưới đây.
6.4.5. Lắp mạch và nạp chương trình điều khiển.
Sử dụng các khối "Microcontroller Unit Slot", "Square Wave Generator",
và "Power Supply" có sẵn trên mô hình thực hành vi điều khiển để lắp ráp
mạch theo thiết kế bên trên.
Bước 11: Kết nối các khối trên mô hình như Hình 6.5.5 để tạo
thành hệ thống mạch điều khiển như bên trên.
o Tắt nguồn AC cấp cho mô hình thực hành.
o Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1
(SEL IN1) ở khối LED 7 đoạn (chú ý là ta chỉ nối 4 bit thấp của J64 với J1)
o Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều
khiển với J4 (7SEG IN MUL) ở khối giải mã.
o Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66
(PORT3 / FUNCTION) ở khối vi điều khiển (chú ý là ta chỉ nối bit 2 (chân
INT0\) của J66 và J33 lại với nhau).
o Dùng dây bus 3 nối J113 (POWER) ở khối tạo xung và J110
(POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
398
Hình 6.4.5: Sơ đồ kết nối mạch trên mô hình.
Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi
điều khiển P89V51RB2 trên mô hình thực hành.
Bước 12: Bật nguồn AC cấp cho mô hình thực hành.
Bước 13: Khởi động phần mềm Flash Magic.
Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng
COM, tốc độ truyền, chuẩn giao tiếp,...
Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã
được tạo ra từ Bước 6): J2.HEX
Bước 16: Nạp chương trình vào vi điều khiển.
Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit
Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần
cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại.
Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ
Bước 15.
o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành.
6.4.6. Bài tập thực hành.
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.
399
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.
6.5. Ứng dụng ngắt bộ định thời trong lập trình điều khiển thiết bị ngoại
vi.
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.
Yêu cầu:
Nắm vững tập lệnh của vi điều khiển MCS-51.
Tham khảo trước hoạt động của ngắt (Interrupt) ở các chế độ khác
nhau.
Nắm được phương pháp lập trình và điều khiển có sử dụng các
ngắt.
6.5.1. Sơ đồ nguyên lý.
6.5.1.1. Sơ đồ nguyên lý.
GND
GND
+5V
L
E
D
5
L
E
D
2
L
E
D
1
L
E
D
6
L
E
D
4
L
E
D
0
L
E
D
7
L
E
D
3
L
E
D
2
L
E
D
1
L
E
D
4
L
E
D
0
L
E
D
5
L
E
D
3
L
E
D
6
L
E
D
7
L
E
D
0
D29
LED
L
E
D
3
D22
LED
D23
LED
R3 330
1 2 3 4 5 6 7 8 9
D1
LED
J1
POWER
1
2
3
D13
LED
D4
LED
D27
LED
J3
BARLED2
1 2 3 4 5 6 7 8
D25
LED
D21
LED
D19
LED
D31
LED
D30
LED
D12
LED
D10
LED
D24
LED
D7
LED
R2 330
1 2 3 4 5 6 7 8 9
D8
LED
D26
LED
D9
LED
R4 330
1 2 3 4 5 6 7 8 9
D15
LED
D2
LED
D20
LED
D14
LED
J5
BARLED4
1 2 3 4 5 6 7 8
J2
BARLED1
1 2 3 4 5 6 7 8
D5
LED
J4
BARLED3
1 2 3 4 5 6 7 8
D32
LED
D3
LED
D11
LED
R1 330
1 2 3 4 5 6 7 8 9
D16
LED
D6
LED
D18
LED
D17
LED
D28
LED
L
E
D
4
L
E
D
5
L
E
D
2
L
E
D
1
L
E
D
7
L
E
D
6
VCC
VCC VCC VCCVCC
L
E
D
2
L
E
D
1
L
E
D
0
L
E
D
5
L
E
D
3
L
E
D
6
L
E
D
4
L
E
D
7
Hình 6.5.1: Sơ đồ nguyên lý khối LED đơn (Point LED).
6.5.1.2. Sơ đồ bố trí linh kiện.
400
Hình 6.5.2: Khối LED đơn (Point LED).
BÀI THỰC HÀNH
Viết chương trình, mô phỏng và lắp ráp mạch điều khiển 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) có sử dụng bộ
đệm đảo
6.5.2. Lưu đồ giải thuật.
Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển.
Hình 6.5.3: Lưu đồ giải thuật của chương trình.
6.5.3. Chương trình điều khiển.
Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình
và biên dịch, kiểm tra lỗi cú pháp của chương trình.
Bước 2: Khởi động phần mềm Topview Simulation.
Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên
tập tin chương trình là: J1.ASM
Bước 4: Viết chương trình điều khiển dưới đây vào máy tính.
;***************************************************
401
;CHUONG TRINH DIEU KHIEN TAO SONG VUONG TAI P0.0 CO SU
DUNG NGAT TIMER0
;***************************************************
;KET NOI: 8 LED ->PORT0
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 0BH ;DIEM NHAP ISR TIMER0
T0ISR:
CPL P0.0 ;DAO TRANG THAI P0.0 (TAO XUNG)
RETI
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV TMOD,#01H ;TIMER0 -> TIMER 16 BIT
MOV TH0,#(-50000) ;THOI GIAN TRE = 50 MS (THOI GIAN
XUNG O MUC THAP HOAC MUC CAO)
MOV TL0,#(-50000) ;CHU KY = 2 x 50 = 100 MS -> F = 10 Hz
SETB TR0 ;CHO TIMER BAT DAU CHAY
MOV IE,#82H ;CHO PHEP NGAT TIMER0 HOAT DONG
SJMP $ ;DUNG YEN
END
Bước 5: Lưu chương trình trên vào máy tính.
Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do cú pháp của
các lệnh không chính xác, cần phải được kiểm tra lại. Sau khi hoàn tất việc hiệu
chỉnh sai sót thì quay trở về thực hiện từ Bước 5.
o Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập
tin mã máy với tên là: J1.HEX và thực hiện tiếp theo các phần nội dung dưới
đây.
6.5.4. Mô phỏng hoạt động.
Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô
phỏng quá trình hoạt động của hệ thống vi điều khiển.
Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10).
Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển LED đơn như
Hình 6.6.4 dưới đây.
402
D
7
D
0
D
1
D
2
D
3
D
4
D
5
D
6
AD7 AD7
AD0
D0AD0 AD0
AD1 AD1
AD2 AD2
AD3 AD3
AD4 AD4
AD5 AD5
AD6 AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D7
D6
D5
D4
D3
D2
D1
D0
D1
D2
D3
D4
D5
D6
D7
D
0
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D1
R2
330
+5V
D2
R3
330
+5V
D3
R4
330
+5V
D4
R5
330
+5V
D5
R6
330
+5V
D6
R7
330
+5V
D7
R8
330
+5V
D8
R9
330
+5V
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10
U2
ULN2803
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+
5
V
MA ÏCH Ñ I EÀU K HI EÅN N GA ÉT ( N GA ÉT T I MER )
2
3
4
5
6
7
8
9
1
RP2
10K
+5V
A
B
Hình 6.5.4: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển.
Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập
tin là: J-1.DSN. Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng hoặc lấy
mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học.
Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy
đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: J1.HEX
Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả
trên màn hình máy tính.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do giải thuật
chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần
phải được kiểm tra lại. Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về
thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8
(do mạch mô phỏng vẽ không chính xác).
o Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần
nội dung dưới đây.
6.5.5. Lắp mạch và nạp chương trình điều khiển.
Sử dụng các khối "Microcontroller Unit Slot", "Point LED", "Inverter" và
"Power Supply" có sẵn trên mô hình thực hành vi điều khiển để lắp ráp mạch
theo thiết kế bên trên.
403
Bước 11: Kết nối các khối trên mô hình như Hình 6.5.5 để tạo
thành hệ thống mạch điều khiển như bên trên.
o Tắt nguồn AC cấp cho mô hình thực hành.
o Dùng dây bus 8 nối J64 (PORT0 / DATA) ở khối vi điều
khiển với J12 (BAR LED 2) ở khối dãy LED.
o Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED với
nguồn +5V ở khối nguồn.
Hình 6.5.5: Sơ đồ kết nối mạch trên mô hình.
Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi
điều khiển P89V51RB2 trên mô hình thực hành.
Bước 12: Bật nguồn AC cấp cho mô hình thực hành.
Bước 13: Khởi động phần mềm Flash Magic.
Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng
COM, tốc độ truyền, chuẩn giao tiếp,...
Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã
được tạo ra từ Bước 6): J1.HEX
Bước 16: Nạp chương trình vào vi điều khiển.
Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit
Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành.
404
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần
cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại.
Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ
Bước 15.
o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành.
6.5.6. Bài tập thực hành.
Bài 1: 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 2: 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 3: 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.
6.5.7. Ứng dụng ngắt port nối tiếp trong lập trình điều khiển thiết bị
ngoại vi.
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 truyền dữ liệu giữa hai vi điều khiển thông qua port nối
tiếp (UART) để điều khiển các thiết bị ngoại vi có sử dụng phương pháp thiết
lập ngắt port nối tiếp.
Trình bày kỹ thuật truyền dữ liệu giữa hai vi điều khiển thông qua
port nối tiếp (UART) có sử dụng phương pháp thiết lập ngắt port nối tiếp.
Trình bày một số ứng dụng trong kỹ thuật truyền dữ liệu giữa hai vi
điều khiển thông qua port nối tiếp (UART) có sử dụng phương pháp thiết lập
ngắt port nối tiếp.
Yêu cầu:
Nắm vững tập lệnh của vi điều khiển MCS-51.
405
Biết cách viết các chương trình điều khiển sử dụng port nối tiếp
(UART) để điều khiển các thiết bị ngoại vi khác nhau có sử dụng phương pháp
thiết lập ngắt port nối tiếp.
Nắm được nguyên lý truyền dữ liệu thông qua port nối tiếp
(UART) có sử dụng phương pháp thiết lập ngắt port nối tiếp.
6.5.8. Sơ đồ nguyên lý.
6.5.8.1. Sơ đồ nguyên lý.
GND
GND
+5V
L
E
D
5
L
E
D
2
L
E
D
1
L
E
D
6
L
E
D
4
L
E
D
0
L
E
D
7
L
E
D
3
L
E
D
2
L
E
D
1
L
E
D
4
L
E
D
0
L
E
D
5
L
E
D
3
L
E
D
6
L
E
D
7
L
E
D
0
D29
LED
L
E
D
3
D22
LED
D23
LED
R3 330
1 2 3 4 5 6 7 8 9
D1
LED
J1
POWER
1
2
3
D13
LED
D4
LED
D27
LED
J3
BARLED2
1 2 3 4 5 6 7 8
D25
LED
D21
LED
D19
LED
D31
LED
D30
LED
D12
LED
D10
LED
D24
LED
D7
LED
R2 330
1 2 3 4 5 6 7 8 9
D8
LED
D26
LED
D9
LED
R4 330
1 2 3 4 5 6 7 8 9
D15
LED
D2
LED
D20
LED
D14
LED
J5
BARLED4
1 2 3 4 5 6 7 8
J2
BARLED1
1 2 3 4 5 6 7 8
D5
LED
J4
BARLED3
1 2 3 4 5 6 7 8
D32
LED
D3
LED
D11
LED
R1 330
1 2 3 4 5 6 7 8 9
D16
LED
D6
LED
D18
LED
D17
LED
D28
LED
L
E
D
4
L
E
D
5
L
E
D
2
L
E
D
1
L
E
D
7
L
E
D
6
VCC
VCC VCC VCCVCC
L
E
D
2
L
E
D
1
L
E
D
0
L
E
D
5
L
E
D
3
L
E
D
6
L
E
D
4
L
E
D
7
Hình 6.5.6: Sơ đồ nguyên lý khối LED đơn (Point LED).
SW5
KEY3
SW2
KEY0
SW6
KEY4
SW4
KEY2
SW9
KEY7
SW3
KEY1
SW7
KEY5
J25
POWER
1
2
3
SW8
KEY6
J26
PUSH KEY
1
2
3
4
5
6
7
8
VCC
KEY1
KEY7
KEY0
KEY3
KEY5
KEY4
KEY6
KEY2
K5
K6
K2
K4
K3
K7
K0
K1
VCCR1510K
1
2
3
4
5
6
7
8
9
+5V
GND
GND
K
0
K
1
K
2
K
3
K
4
K
5
K
6
K
7 K7
K6
K5
K4
K3
K2
K1
K0
Hình 6.5.7: Sơ đồ nguyên lý khối nút nhấn (Momentary Switch).
SEL4
SEL1
SEL7
SEL6
SEL5
SEL0
SEL2
SEL3
F
D
G
DP
E
C
B
A
GND
GND
+5V
Q
7
R35
2K2
J58
7SEG6 IN
1 2 3 4 5 6 7 8
J53
SEL LED IN
1
2
3
4
5
6
7
8
R
5
5
3
3
0
R
6
6
3
3
0
R
7
5
3
3
0
R
6
9
3
3
0
R
6
4
3
3
0
Q7
A1015
FD G
Q5
A1015
E
U22
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
U23
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
U24
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
R30
2K2
A D
PB
R
5
3
3
3
0
C A
U28
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
R
4
8
3
3
0
G
R40 330
C
R
6
5
3
3
0
R
5
6
3
3
0
Q1
A1015
U25
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
R
5
8
3
3
0
D
P
U27
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
R
4
5
3
3
0
J55
7SEG IN MUL
1
2
3
4
5
6
7
8
R34
2K2
B
R42 330
F
R
6
7
3
3
0
R31
2K2
Q
6
ED
R
4
7
3
3
0
Q
4
R
5
1
3
3
0
A
R76 330
R38 330
G
R
7
4
3
3
0
C
GA
R29
2K2
B
J52
SEL IN1
1
2
3
4 Q3
A1015
R
7
2
3
3
0
R36
2K2
R
5
9
3
3
0
R
6
2
3
3
0
R
7
0
3
3
0
C
D
P
Q8
A1015
R
5
7
3
3
0
Q6
A1015
J54
SEL IN1
1
2
3
4
J56
POWER
1
2
3
J60
7SEG4 IN
1 2 3 4 5 6 7 8
R
5
4
3
3
0
R33
2K2
R39 330
B
R
5
2
3
3
0
F
R
7
3
3
3
0
EF
R
4
4
3
3
0
Q
5
R
6
0
3
3
0
DE
D
P
R
4
6
3
3
0
D
R
4
9
3
3
0
Q2
A1015
J57
7SEG7 IN
1 2 3 4 5 6 7 8
R
6
8
3
3
0
Q
2
R41 330
U26
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
Q
0
R
7
1
3
3
0
R
6
1
3
3
0
R37 330
U21
LED7
C
A
8
C
A
3
A
7
B
6
C
4
D
2
F
9
E
1
G
1
0
D
P
5
R43 330
R
6
3
3
3
0
R32
2K2
R
5
0
3
3
0
Q4
A1015
Q
3
Q
1
J59
7SEG5 IN
1 2 3 4 5 6 7 8
VCC
VCCVCCVCC VCC VCC VCCVCCVCC
A B C D D
P
E GF F D
P
DA E GCB F D
P
D
P
D EA CA BE G D FCB G
SEL0
SEL2
SEL1
SEL3
Q0
Q1
Q3
Q2
Q7
Q6SEL5
Q5
Q4
SEL4
SEL6
SEL7
Q0
Q1
Q3
Q2
Q5
Q6
Q7
Q4
F
E
DP
B
C
G
D
A
Hình 6.5.8: Sơ đồ nguyên lý khối LED 7 đoạn (7 Segment LED).
406
SEL B
SEL A
SEL0
SEL3
SEL2
SEL2
SEL1
SEL3
SEL1
SEL0
E
C
B
D
G
DP
F
A
C
G
D
F
E
DP
A
B
C136
104
U102A 74139
A
2
B
3
G
1
Y0
4
Y1
5
Y2
6
Y3
7
V
C
C
1
6
G
N
D
8
U102B 74139
A
14
B
13
G
15
Y0
12
Y1
11
Y2
10
Y3
9
U98 74138
A
1
B
2
C
3
Y0
15
Y1
14
Y2
13
Y3
12
Y4
11
Y5
10
Y6
9
Y7
7
VCC
16
GND
8
G1
6
G2A
4
G2B
5
U97 7447
D0
7
D1
1
D2
2
D3
6
BI/RBO
4
RBI
5 LT
3
A
13
B
12
C
11
D
10
E
9
F
15
G
14
VCC
16
GND
8
C135
104
C
A
C140
104
B
D
D
A
C
B
J211
DECODER 3-8
1
2
3J212
7SEG OUT 3
1
2
3
4
5
6
7
8
U101 7447
D0
7
D1
1
D2
2
D3
6
BI/RBO
4
RBI
5 LT
3
A
13
B
12
C
11
D
10
E
9
F
15
G
14
VCC
16
GND
8
A
D
J219
DECODER 2-4
1
2
J220
DECODER OUT
1
2
3
4
D
J214
BCD IN 3-4
1
2
3
4
5
6
7
8
B
C
G
A
C
F
E
J213
BCD IN 1-2
1
2
3
4
5
6
7
8 C
A
C138
104
J209
DECODER OUT
1
2
3
4
5
6
7
8
J215
7SEG OUT 2
1
2
3
4
5
6
7
8
E
C
DP
G
J210
7SEG OUT 1
1
2
3
4
5
6
7
8
D
J218
DECODER OUT
1
2
3
4
B
A
D
DP
F
B
U99 7447
D0
7
D1
1
D2
2
D3
6
BI/RBO
4
RBI
5 LT
3
A
13
B
12
C
11
D
10
E
9
F
15
G
14
VCC
16
GND
8
B
J221
POWER
1
2
3
C137
104
J216
7SEG OUT 4
1
2
3
4
5
6
7
8
C139
104
U100 7447
D0
7
D1
1
D2
2
D3
6
BI/RBO
4
RBI
5 LT
3
A
13
B
12
C
11
D
10
E
9
F
15
G
14
VCC
16
GND
8
J217
DECODER 2-4
1
2
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
GND
GND
+5V
SEL4
SEL5
SEL7
SEL6
SEL2
SEL3
SEL1
SEL0
SEL C
SEL B
SEL A
SEL B
SEL A
Hình 6.5.9: Sơ đồ nguyên lý khối giải mã 7 đoạn (7 Segment Decoder).
6.5.9. Sơ đồ bố trí linh kiện.
Hình 6.5.10: Khối LED đơn (Point LED)
Hình 6.5.11: Khối nút nhấn (Momentary Switch).
Hình 6.5.12: Khối LED 7 đoạn (7 Segment LED).
407
Hình 6.5.13: Khối giải mã 7 đoạn (7 Segment Decoder).
BÀI THỰC HÀNH
Viết chương trình, mô phỏng và lắp ráp mạch điều khiển truyền dữ liệu
thông qua port nối tiếp. Thay đổi trạng thái của các LED đơn tại vi điều
khiển 2 (Slave) theo trạng thái của các nút nhấn tại vi điều khiển 1 (Master)
và ngược lại. Sử dụng phương pháp ngắt port nối tiếp cho việc truyền dữ
liệu.
6.5.10. Lưu đồ giải thuật.
Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển.
KIỂM TRA NGẮT PHÁT
(TI) = 1
Đ
S
BEGIN
SP_ISR:
RECEI_DATA:
XÓA CỜ BÁO THU
RI = 0
CẤT DỮ LIỆU NHẬN ĐƯỢC TỪ
PORT NỐI TIẾP
(A) = (SBUF)
XUẤT GIÁ TRỊ RA LED
(P1) = (A)
EXIT_SP_ISR:
END
TRANS_DATA:
XÓA CỜ BÁO PHÁT
TI = 0
ĐỌC TRẠNG THÁI CÁC SW
(A) = (P0)
ĐẢO TRẠNG THÁI LOGIC CỦA
CÁC SW
TẢI DỮ LIỆU CẦN PHÁT VÀO
PORT NỐI TIẾP
(SBUF) = (A)
MASTER & SLAVE
BEGIN
THIẾT LẬP VECTƠ
Vectơ RESET: 0000H
Vectơ ngắt port nối tiếp: 0023H
Vectơ chương trình: 0030H
SP1
MAIN:
ĐIỀU KHIỂN TẮT LED
(P1) = 00H
CẤU HÌNH PORT NỐI TIẾP
T1 AUTO RELOAD
BAUD RATE = 9600 BPS
DATA = 8 BIT
STOP = 1 BIT
PARITY = NONE
KÍCH HOẠT TIMER 1 TẠO BAUD RATE
(TR1) = 1
CHO PHÉP NGẮT PORT NỐI TIẾP
(IE) = 90H
Hình 6.5.14: Lưu đồ giải thuật của chương trình.
6.5.11. Chương trình điều khiển.
Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình
và biên dịch, kiểm tra lỗi cú pháp của chương trình.
Bước 2: Khởi động phần mềm Topview Simulation.
408
Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên
tập tin chương trình là: SP_1_M.ASM và SP_1_S.ASM
Bước 4: Viết chương trình điều khiển dưới đây vào máy tính.
Chương trình cho vi điều khiển Master:
;***************************************************
;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP
GIUA HAI VI DIEU KHIEN.
;CHUONG TRINH CHO VI DIEU KHIEN MASTER.
;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC
SW TUONG UNG.
;MO PHONG PROTUES: SERIALPORT_1.
;***************************************************
;***************************************************
;KET NOI: 8 SWITCH -> PORT 0 (ACT = 0)
; 8 LED -> PORT 1 (CO SU DUNG DEM DAO - ACT = 1)
;***************************************************
$MOD51
ORG 00H ;DIEM NHAP RESET.
SJMP MAIN
ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP.
AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI
TIEP.
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH.
MAIN:
MOV P1,#00H ;LED TAT
;****************************************************
;KHOI DONG PORT NOI TIEP.
MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = 1.
MOV TMOD,#20H ;TIMER 1: MODE 2 - TAO TOC DO BAUD
CHO SERIAL PORT.
MOV TH1,#(-3) ;BAUD RATE = 9600.
SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT
DONG.
;****************************************************
;THIET LAP CAC NGAT CHO PORT NOI TIEP.
MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP.
;****************************************************
MP1:
;DOAN CHUONG TRINH SE THUC HIEN KHI
KHONG CO TIN HIEU NGAT
SJMP MP1 ;QUAY LAI
;****************************************************
409
SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP.
;P0 = DU LIEU PHAT.
;P1 = DU LIEU THU.
PUSH ACC
JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA
NGAT PHAT HAY NGAT THU.
RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP
VAO THANH GHI A.
CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP.
MOV A,SBUF ;THU DU LIEU.
MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED.
SJMP EXIT_SP_ISR ;THOAT KHOI ISR.
TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A
RA PORT NOI TIEP.
CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP.
MOV A,P0 ;DOC DU LIEU LAY TU PORT SW.
CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1).
MOV SBUF,A ;PHAT DU LIEU.
EXIT_SP_ISR:
POP ACC
RETI
END
Chương trình cho vi điều khiển Slave:
;***************************************************
;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP
GIUA HAI VI DIEU KHIEN.
;CHUONG TRINH CHO VI DIEU KHIEN SLAVER.
;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC
SW TUONG UNG.
;MO PHONG PROTUES: SERIALPORT_1.
;***************************************************
;KET NOI: 8 SWITCH -> PORT 0 (ACT = 0)
; 8 LED -> PORT 1 (CO SU DUNG DEM DAO - ACT = 1)
;***************************************************
$MOD51
ORG 00H ;DIEM NHAP RESET.
SJMP MAIN
ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP.
AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI
TIEP.
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH.
MAIN:
MOV P1,#00H ;LED TAT
410
;****************************************************
;KHOI DONG PORT NOI TIEP.
MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = 1.
MOV TMOD,#20H ;TIMER 1: MODE 2 - TAO TOC DO BAUD
CHO SERIAL PORT.
MOV TH1,#(-3) ;BAUD RATE = 9600.
SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT
DONG.
;****************************************************
;THIET LAP CAC NGAT CHO PORT NOI TIEP.
MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP.
;****************************************************
MP1:
;DOAN CHUONG TRINH SE THUC HIEN KHI
KHONG CO TIN HIEU NGAT
SJMP MP1 ;QUAY LAI
;****************************************************
SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP.
;P0 = DU LIEU PHAT.
;P1 = DU LIEU THU.
PUSH ACC
JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA
NGAT PHAT HAY NGAT THU.
RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP
VAO THANH GHI A.
CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP.
MOV A,SBUF ;THU DU LIEU.
MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED.
SJMP EXIT_SP_ISR ;THOAT KHOI ISR.
TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A
RA PORT NOI TIEP.
CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP.
MOV A,P0 ;DOC DU LIEU LAY TU PORT SW.
CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1).
MOV SBUF,A ;PHAT DU LIEU.
EXIT_SP_ISR:
POP ACC
RETI
END
Bước 5: Lưu chương trình trên vào máy tính.
Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình.
411
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do cú pháp của
các lệnh không chính xác, cần phải được kiểm tra lại. Sau khi hoàn tất việc hiệu
chỉnh sai sót thì quay trở về thực hiện từ Bước 5.
o Nếu không có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập
tin mã máy với tên là: SP_1_M.HEX và SP_1_S.HEX và thực hiện tiếp theo
các phần nội dung dưới đây.
6.5.12. Mô phỏng hoạt động.
Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô
phỏng quá trình hoạt động của hệ thống vi điều khiển.
Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10).
Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển truyền dữ
liệu nối tiếp như Hình 6.5.15 dưới đây.
P0.7M
P0.0M
P0.0M
P0.1M
P0.2M
P0.3M
P0.4M
P0.5M
P0.6M
P0.7M
P0.6M
P0.5M
P0.4M
P0.3M
P0.2M
P0.1M
P0.7S
P0.0S
P0.0S
P0.1S
P0.2S
P0.3S
P0.4S
P0.5S
P0.6S
P0.7S
P0.6S
P0.5S
P0.4S
P0.3S
P0.2S
P0.1S
D
0
S
D0M D0M
D1M D1M
D2M D2M
D3M D3M
D4M D4M
D5M D5M
D6M D6M
D7M D7M
D
7
S
D
6
S
D
5
S
D
4
S
D
3
S
D
2
S
D
1
S
P
0
.0
S
P
0
.1
S
P
0
.2
S
P
0
.3
S
P
0
.4
S
P
0
.5
S
P
0
.6
S
P
0
.7
S
D0SD0S
D1SD1S
D2SD2S
D3SD3S
D4SD4S
D5SD5S
D6SD6S
D7SD7S
D
0M
D
7M
D
6M
D
5M
D
4M
D
3M
D
2M
D
1M
P
0
.0
M
P
0
.1
M
P
0
.2
M
P
0
.3
M
P
0
.4
M
P
0
.5
M
P
0
.6
M
P
0
.7
M
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U9
AT89C51
C1
33p
C2
33p
X1
11.0592MHz
C3
10uF
R1
10k
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+
5
V
MA ÏCH ÑI EÀU K H I EÅN GI A O T I EÁP COÅN G N OÁI T I EÁP
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C4
33p
C5
33p
X2
11.0592MHz
C6
10uF
R18
10k
+5V
2
3
4
5
6
7
8
9
1
RP2
10K
+
5
V
MA ST ER SLA V E
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7
R9
330
+5V
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10
U2
ULN2803
2
3
4
5
6
7
8
9
1
RP3
10K
+5V
+5V
KEY7 KEY6 KEY5 KEY4 KEY3 KEY2 KEY1 KEY0
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10
U3
ULN2803
2
3
4
5
6
7
8
9
1
RP4
10K
+5V
+5V
D8
R10
330
+5V
D9
R11
330
+5V
D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13
R15
330
+5V
D14
R16
330
+5V
D15
R17
330
+5V
KEY15 KEY14 KEY13 KEY12 KEY11 KEY10 KEY9 KEY8
Hình 6.5.15: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển.
Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập
tin là: SerialPort_1.DSN. Vì thế người học có thể tự vẽ thiết kế mạch mô phỏng
hoặc lấy mạch mô phỏng có sẵn trong cơ sở dữ liệu của môn học.
Bước 9: Chọn tập tin chương trình cần mô phỏng (tập tin mã máy
đã được tạo ra từ Bước 6) cho hệ thống vi điều khiển: SP_1_M.HEX và
SP_1_S.HEX
412
Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả
trên màn hình máy tính.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thông thường do giải thuật
chương trình không chính xác hoặc do mạch mô phỏng vẽ không chính xác, cần
phải được kiểm tra lại. Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở về
thực hiện từ Bước 5 (do giải thuật chương trình không chính xác) hoặc Bước 8
(do mạch mô phỏng vẽ không chính xác).
o Nếu không có lỗi xuất hiện thì thực hiện tiếp theo các phần
nội dung dưới đây.
6.5.13. Lắp mạch và nạp chương trình điều khiển.
Sử dụng các khối "Microcontroller Unit Slot", "Point LED", "Inverter" và
"Power Supply" có sẵn trên mô hình thực hành vi điều khiển để lắp ráp mạch
theo thiết kế bên trên.
Bước 11: Kết nối các khối trên mô hình như Hình 6.5.16 để tạo
thành hệ thống mạch điều khiển như bên trên.
o Tắt nguồn AC cấp cho mô hình thực hành.
Hình 6.5.16: Sơ đồ kết nối mạch trên mô hình.
Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi
điều khiển P89V51RB2 trên mô hình thực hành.
Bước 12: Bật nguồn AC cấp cho mô hình thực hành.
Bước 13: Khởi động phần mềm Flash Magic.
Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng
COM, tốc độ truyền, chuẩn giao tiếp,...
Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã
được tạo ra từ Bước 6): SP_1_M.HEX và SP_1_S.HEX
413
Bước 16: Nạp chương trình vào vi điều khiển.
Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit
Slot" để chạy chương trình và quan sát trực tiếp kết quả trên mô hình thực hành.
o Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh
khắc phục các lỗi này. Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần
cứng không chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra lại.
Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về thực hiện từ
Bước 15.
o Nếu không có lỗi xuất hiện thì hoàn tất bài thực hành.
6.5.14. Bài tập thực hành.
6.5.14.1. Bài tập mẫu.
Bài tập số 1:
Nội dung:
"Viết chương trình, mô phỏng và lắp ráp mạch điều khiển truyền dữ
liệu thông qua port nối tiếp. Thay đổi trạng thái của các LED đơn tại vi
điều khiển 2 (Slave) theo trạng thái của các nút nhấn tại vi điều khiển 1
(Master) và ngược lại, trong khi các LED 7 đoạn vẫn hiển thị số đếm liên
tục từ 00 đến 99. Sử dụng phương pháp ngắt port nối tiếp cho việc truyền
dữ liệu."
Lưu đồ giải thuật:
414
Sơ đồ nguyên lý mô phỏng:
P0.7M
P0.0M
P0.0M
P0.1M
P0.2M
P0.3M
P0.4M
P0.5M
P0.6M
P0.7M
P0.6M
P0.5M
P0.4M
P0.3M
P0.2M
P0.1M
P0.7S
P0.0S
P0.0S
P0.1S
P0.2S
P0.3S
P0.4S
P0.5S
P0.6S
P0.7S
P0.6S
P0.5S
P0.4S
P0.3S
P0.2S
P0.1S
D
0
S
D0M D0M
D1M D1M
D2M D2M
D3M D3M
D4M D4M
D5M D5M
D6M D6M
D7M D7M
D
7
S
D
6
S
D
5
S
D
4
S
D
3
S
D
2
S
D
1
S
P
0
.0
S
P
0
.1
S
P
0
.2
S
P
0
.3
S
P
0
.4
S
P
0
.5
S
P
0
.6
S
P
0
.7
S
D0SD0S
D1SD1S
D2SD2S
D3SD3S
D4SD4S
D5SD5S
D6SD6S
D7SD7S
D
0
M
D
7
M
D
6
M
D
5
M
D
4
M
D
3
M
D
2
M
D
1
M
P
0
.0
M
P
0
.1
M
P
0
.2
M
P
0
.3
M
P
0
.4
M
P
0
.5
M
P
0
.6
M
P
0
.7
M
P2.0M
P2.7M
P2.0S
P2.7S
P2.1M
P2.2M
P2.3M
P2.4M
P2.5M
P2.6M
P2.1S
P2.2S
P2.3S
P2.4S
P2.5S
P2.6S
P2.4M
P2.5M
P2.6M
P2.7M
A1
B1
C1
D1
E1
F1
G1
A1
B1
C1
D1
E1
F1
G1
P2.0M
P2.1M
P2.2M
P2.3M
A2
B2
C2
D2
E2
F2
G2
A2
B2
C2
D2
E2
F2
G2
P2.4S
P2.5S
P2.6S
P2.7S
A3
B3
C3
D3
E3
F3
G3
A3
B3
C3
D3
E3
F3
G3
P2.0S
P2.1S
P2.2S
P2.3S
A4
B4
C4
D4
E4
F4
G4
A4
B4
C4
D4
E4
F4
G4
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U9
AT89C51
C1
33p
C2
33p
X1
11.0592MHz
C3
10uF
R1
10k
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+
5
V
MA ÏCH Ñ I EÀU K H I EÅN GI A O T I EÁP COÅN G N OÁI T I EÁP
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C4
33p
C5
33p
X2
11.0592MHz
C6
10uF
R18
10k
+5V
2
3
4
5
6
7
8
9
1
RP2
10K
+
5
V
MA ST ER SLA V E
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7
R9
330
+5V
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10
U2
ULN2803
2
3
4
5
6
7
8
9
1
RP3
10K
+5V
+5V
KEY7 KEY6 KEY5 KEY4 KEY3 KEY2 KEY1 KEY0
1B
1
2B
2
3B
3
4B
4
5B
5
6B
6
7B
7
8B
8
1C
18
2C
17
3C
16
4C
15
5C
14
6C
13
7C
12
8C
11
COM
10
U3
ULN2803
2
3
4
5
6
7
8
9
1
RP4
10K
+5V
+5V
D8
R10
330
+5V
D9
R11
330
+5V
D10
R12
330
+5V
D11
R13
330
+5V
D12
R14
330
+5V
D13
R15
330
+5V
D14
R16
330
+5V
D15
R17
330
+5V
KEY15 KEY14 KEY13 KEY12 KEY11 KEY10 KEY9 KEY8
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U4
74LS47
+5VR19
56
R20
56
R21
56
R22
56
R23
56
R24
56
R25
56
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U5
74LS47
R2656
R2756
R2856
R2956
R3056
R3156
R3256
+5V
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U6
74LS47
+5VR33
56
R34
56
R35
56
R36
56
R37
56
R38
56
R39
56
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U7
74LS47
R4056
R4156
R4256
R4356
R4456
R4556
R4656
+5V
415
Sơ đồ lắp ráp:
Chương trình điều khiển cho vi điều khiển Master:
;***************************************************
;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP
GIUA HAI VI DIEU KHIEN.
;CHUONG TRINH CHO VI DIEU KHIEN MASTER.
;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC
SW TUONG UNG.
;TRONG KHI SO DEM TANG DAN TU 00 DEN 99.
;MO PHONG PROTUES: SERIALPORT_1.
;***************************************************
;***************************************************
;KET NOI: 8 SWITCH -> PORT 0 (ACT = 0).
; 8 LED -> PORT 1 (CO SU DUNG DEM DAO - ACT = 1).
; 2 LED 7 -> PORT 2 (BCD).
;***************************************************
$MOD51
ORG 00H ;DIEM NHAP RESET.
SJMP MAIN
ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP.
AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI
TIEP.
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH.
MAIN:
MOV P1,#00H ;LED TAT
;****************************************************
416
;KHOI DONG PORT NOI TIEP.
MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = 1.
MOV TMOD,#20H ;TIMER 1: MODE 2 - TAO TOC DO BAUD
CHO SERIAL PORT.
MOV TH1,#(-3) ;BAUD RATE = 9600.
SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT
DONG.
;****************************************************
;THIET LAP CAC NGAT CHO PORT NOI TIEP.
MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP.
;****************************************************
MP1: ;DOAN CHUONG TRINH SE THUC HIEN KHI KHONG
CO TIN HIEU NGAT.
MOV A,#00H ;GIA TRI BAT DAU.
LOOP:
MOV P2,A ;XUAT HIEN THI.
LCALLDELAY500MS
ADD A,#1 ;TANG GIA TRI (+1).
DA A
CJNE A,#00,LOOP
SJMP MP1 ;QUAY LAI.
;****************************************************
SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP.
;P0 = DU LIEU PHAT.
;P1 = DU LIEU THU.
PUSH ACC
JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA
NGAT PHAT HAY NGAT THU.
RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP
VAO THANH GHI A.
CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP.
MOV A,SBUF ;THU DU LIEU.
MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED.
SJMP EXIT_SP_ISR ;THOAT KHOI ISR.
TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A
RA PORT NOI TIEP.
CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP.
MOV A,P0 ;DOC DU LIEU LAY TU PORT SW.
CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1).
MOV SBUF,A ;PHAT DU LIEU.
EXIT_SP_ISR:
POP ACC
RETI
;***************************************************
417
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
PUSH 01H
PUSH 02H
MOV R0,#250
DEL2:
MOV R1,#100
DEL1:
MOV R2,#10
DJNZ R2,$
DJNZ R1,DEL1
DJNZ R0,DEL2
POP 02H
POP 01H
POP 00H
RET
END
Chương trình điều khiển cho vi điều khiển Slave:
;***************************************************
;CHUONG TRINH DIEU KHIEN GIAO TIEP PORT NOI TIEP TRUC TIEP
GIUA HAI VI DIEU KHIEN.
;CHUONG TRINH CHO VI DIEU KHIEN SLAVER.
;DIEU KHIEN CAC LED SANG/TAT THEO SU DIEU KHIEN CUA CAC
SW TUONG UNG.
;TRONG KHI SO DEM GIAM DAN TU 99 DEN 00.
;MO PHONG PROTUES: SERIALPORT_1.
;***************************************************
;KET NOI: 8 SWITCH -> PORT 0 (ACT = 0).
; 8 LED -> PORT 1 (CO SU DUNG DEM DAO - ACT = 1).
; 2 LED 7 -> PORT 2 (BCD).
;***************************************************
$MOD51
ORG 00H ;DIEM NHAP RESET.
SJMP MAIN
ORG 23H ;DIEM NHAP NGAT PORT NOI TIEP.
AJMP SP_ISR ;NHAY TOI CTC PHUC VU NGAT PORT NOI
TIEP.
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH.
MAIN:
MOV P1,#00H ;LED TAT
;****************************************************
;KHOI DONG PORT NOI TIEP.
MOV SCON,#52H;SERIAL: MODE 1, TI = 1, RI = 0, REN = 1.
418
MOV TMOD,#20H ;TIMER 1: MODE 2 - TAO TOC DO BAUD
CHO SERIAL PORT.
MOV TH1,#(-3) ;BAUD RATE = 9600.
SETB TR1 ;TIMER HOAT DONG - PORT NOI TIEP HOAT
DONG.
;****************************************************
;THIET LAP CAC NGAT CHO PORT NOI TIEP.
MOV IE,#90H ;CHO PHEP NGAT PORT NOI TIEP.
;****************************************************
MP1: ;DOAN CHUONG TRINH SE THUC HIEN KHI KHONG
CO TIN HIEU NGAT.
MOV A,#99H ;GIA TRI BAT DAU.
LOOP:
MOV P2,A ;XUAT HIEN THI.
LCALLDELAY500MS
ADD A,#99H ;GIAM GIA TRI (-1).
CJNE A,#0FFH,PROCESS_ERROR ;KIEM TRA LOI KHI GIAM QUA
GIA TRI 66 - 65.
SETB C ;XU LY LOI (CHO CO C = 1).
PROCESS_ERROR:
DA A
CJNE A,#0F9H,LOOP
SJMP MP1 ;QUAY LAI.
;****************************************************
SP_ISR: ;CTC PHUC VU NGAT PORT NOI TIEP.
;P0 = DU LIEU PHAT.
;P1 = DU LIEU THU.
PUSH ACC
JB TI,TRANS_DATA ;KIEM TRA TIN HIEU NGAT LA
NGAT PHAT HAY NGAT THU.
RECEI_DATA: ;XU LY THU DU LIEU TU PORT NOI TIEP
VAO THANH GHI A.
CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP.
MOV A,SBUF ;THU DU LIEU.
MOV P1,A ;XUAT DU LIEU THU DUOC RA PORT LED.
SJMP EXIT_SP_ISR ;THOAT KHOI ISR.
TRANS_DATA: ;XU LY PHAT DU LIEU TU THANH GHI A
RA PORT NOI TIEP.
CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP.
MOV A,P0 ;DOC DU LIEU LAY TU PORT SW.
CPL A ;DAO TRANG THAI (SW ACT = 0, LED ACT = 1).
MOV SBUF,A ;PHAT DU LIEU.
EXIT_SP_ISR:
POP ACC
419
RETI
;***************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H
PUSH 01H
PUSH 02H
MOV R0,#250
DEL2:
MOV R1,#100
DEL1:
MOV R2,#10
DJNZ R2,$
DJNZ R1,DEL1
DJNZ R0,DEL2
POP 02H
POP 01H
POP 00H
RET
END
6.5.15. Bài tập ứng dụng.
Bài 1: Cho hệ thống truyền dữ liệu giữa hai vi điều khiển (Master
và Slave) thông qua port nối tiếp (UART) được thiết kế như hình vẽ bên dưới.
Viết chương trình điều khiển hệ thống để thực hiện các hoạt động sau:
o Ban đầu khi chưa nhấn nút thì tất cả các LED đơn đều tắt và
các LED 7 đoạn đều hiển thị số 0.
o Truyền dữ liệu từ MASTER sang SLAVE:
Nhấn nút “KEY8/MASTER”: 8 LED đơn “D0-
D7/SLAVE” sáng tắt liên tục.
Nhấn nút “KEY9/MASTER”: 8 LED đơn “D0-
D7/SLAVE” sáng đuổi từ trái sang phải liên tục.
Nhấn nút “KEY10/MASTER”: 8 LED đơn “D0-
D7/SLAVE” sáng dần từ trái sang phải liên tục.
Nhấn nút “KEY11/MASTER”: 8 LED đơn “D0-
D7/SLAVE” sáng dần từ hai bên vào giữa liên tục.
Nhấn nút “KEY12/MASTER”: 8 LED đơn “D0-
D7/SLAVE” tắt hết.
Nhấn nút “KEY13/MASTER”: 8 LED đơn “D0-
D7/SLAVE” sáng hết.
o Truyền dữ liệu từ SLAVE sang MASTER:
420
Nhấn nút “KEY0/SLAVE”: 2 LED 7 đoạn
“7seg/MASTER” đếm lên liên tục (giá trị đếm nằm trong khoảng 0099).
Nhấn nút “KEY0/SLAVE”: 2 LED 7 đoạn
“7seg/MASTER” đếm xuống liên tục (giá trị đếm nằm trong khoảng 0099).
Nhấn nút “KEY1/SLAVE”: 2 LED 7 đoạn
“7seg/MASTER” đang đếm (lên hoặc xuống) sẽ bị dừng lại và hiển thị liên tục
giá trị tại thời điểm bị dừng.
Nhấn nút “KEY2/SLAVE”: 2 LED 7 đoạn
“7seg/MASTER” đang dừng sẽ tiếp tục đếm (lên hoặc xuống) từ giá trị bị dừng.
Nhấn nút “KEY4/SLAVE”: 2 LED 7 đoạn
“7seg/MASTER” hiển thị liên tục giá trị 00.
Bài 2: Cho hệ thống truyền dữ liệu giữa hai vi điều khiển (Master
và Slave) thông qua port nối tiếp (UART) như hình vẽ ở Bài 1 bên trên. Viết
chương trình điều khiển hệ thống để thực hiện các hoạt động sau:
o Ban đầu khi chưa nhấn nút thì tất cả các LED đơn đều tắt và
các LED 7 đoạn đều hiển thị số 0.
o Nhấn nút “KEY8/MASTER”: 16 LED đơn “D8-
D15/MASTER” và “D0-D7/SLAVE” sáng đuổi từ trái sang phải liên tục.
o Nhấn nút “KEY9/MASTER”: 16 LED đơn “D8-
D15/MASTER” và “D0-D7/SLAVE” sáng đuổi từ phải sang trái liên tục.
o Nhấn nút “KEY10/MASTER”: 16 LED đơn “D8-
D15/MASTER” và “D0-D7/SLAVE” tắt hết.
o Nhấn nút “KEY0/SLAVE”: 4 LED 7 đoạn “7seg/MASTER”
và “7seg/SLAVE” đếm lên liên tục từ 0000 đến 9999.
o Nhấn nút “KEY1/SLAVE”: 4 LED 7 đoạn “7seg/MASTER”
và “7seg/SLAVE” đếm xuống liên tục từ 9999 đến 0000.
o Nhấn nút “KEY2/SLAVE”: 4 LED 7 đoạn “7seg/MASTER”
và “7seg/SLAVE” hiển thị giá trị 0000.
Các file đính kèm theo tài liệu này:
- giao_trinh_vi_dieu_khien_phan_2.pdf