Tải bản đầy đủ (.doc) (24 trang)

Đề cương thực hành Vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (633.03 KB, 24 trang )

cng thc hnh

Vi iu Khin

Bài 1: Giới thiệu và cách sử dụng phần mềm ride
Bài tập với các nhóm lệnh cơ bản
I. Kin thc cn thit
Vi điều khiển chỉ xử lý chơng trình dới dạng file Hex. Vì vậy cần phải có phần mềm
biên dịch chơng trình sang mã Hex. Hiện nay, có rất nhiều phần mềm có thể lập
trình và mô phỏng: keil C, prog studio, reads 51, ride. Với u điểm sử dụng dễ dàng,
mô phỏng trực quan nên phần mềm ride đợc lựa chọn giới thiệu trong giáo trình này.
Để khởi động chơng trình
- Start > Programs > Raisonance Kit 6.1 > Ride IDE

- Double click
trên Desktop
Cửa sổ chơng trình sau khi khởi động:

Để lập trình và mô phỏng trên phần mềm Ride:
- Bớc 1: Tạo Project
+ Project > New

Một hộp thoại yêu cầu bạn chỉ đờng dẫn, đặt tên cho Project
Khoa in in T

Trang 1


Đề cương thực hành

Vi Điều Khiển



Nh vËy b¹n ®· t¹o Project thµnh c«ng

-

Bíc 2: T¹o file hîp ng÷ ®Ó lËp tr×nh
+ File > New > Assembler Files

Vùng soạn thảo
chương trình

+ Lu file Assembler víi tªn “Bai 1” trong th môc “Bai tap”

-

Bíc 3: ViÕt ch¬ng tr×nh chíp t¾t cæng P0, add file - Bai 1 - vµo Project

Khoa Điện – Điện Tử

Trang 2


Đề cương thực hành

Vi Điều Khiển

Chương trình chớp
tắt cổng P0

-


Bíc 4: Biªn dÞch ch¬ng tr×nh, söa lçi vµ ch¹y m« pháng
+ Project > Build all (Shift+F9)

Khoa Điện – Điện Tử

Trang 3


Đề cương thực hành

Vi Điều Khiển

+ Ch¬ng tr×nh kh«ng b¸o lçi, thùc hiÖn ch¹y m« pháng
Debug > Start project.aof (Ctrl+D)

- Click

Double click P0
Khoa Điện – Điện Tử

Trang 4


cng thc hnh

Vi iu Khin

- Sau đó Click
+ Quan sát kết quả khi chạy chơng trình


II. Nội dung luyện tập
2.1. Sử dụng phần mềm:
- Tạo project, tạo file, thiết lập môi trờng lập trình bằng hợp ngữ.
- Cách khai báo và viết chơng trình.
- Cách lu, biên dịch, tìm và xử lý lỗi.
- Nạp và chạy mô phỏng chơng trình.
2.2. Bài tập
Bài số 1.
Dữ kiện
- (30h) ở RAM nội = 40h.
- (40h) ở RAM nội = 10h.

-

Khoa in in T

Yêu cầu
Chuyển nội dung tại vị trí 30h ở RAM nội
vào R1 và A.
Chuyển nội dung tại vị trí 40h ở RAM nội
vào B.
Chuyển nội dung 0CAh vào vị trí 40h ở
RAM nội vào cổng P2.
Xác định giá trị của thanh ghi R1 , thanh ghi
A , B và nội dung của RAM nội tại các vị trí
trên bảng Main Register.
Xuất dữ liệu của A và B ra cổng P1 và P3.
Trang 5



cng thc hnh

Vi iu Khin

Bài số 2.
Dữ kiện
- (C) = 1 ; (P2) = 0C5h .
- (P1) = 35h.

Yêu cầu
- Xác định nội dung mới của P1 sau khi thực
hiện các lệnh sau :
MOV P1.3 , C
MOV C , P2.3
MOV P1.2 , C

Bài số 3.
Dữ kiện
- (R0) = 11h ; (R1) = 23h .
- (11h) ở RAM ngoài = 35h.

Yêu cầu
- Sao chép nội dung tại vị trí 11h ở RAM
ngoài vào A.
- Sao chép nội dung 55h vào vị trí 23h của
RAM ngoài.
- Xuất dữ liệu của A ra cổng P0 bằng phơng
pháp định địa chỉ trực tiếp.


Bài số 4.
Dữ kiện
- (SP)
= 05h.
- (DPTR) = 1123h.

Yêu cầu
- Lu nội dung 23h và 11h vào vị trí 06h và 07h
của ngăn xếp ở RAM nội. Xác định nội dung
mới của SP.
- Xuất dữ liệu của A ra cổng P0 bằng phơng
pháp định địa chỉ trực tiếp.

Bài số 5.
Dữ kiện
- (SP) = 32h.
- (30h) , (31h) và (32h) ở RAM
nội = 10h, 11h và 12h.

Khoa in in T

Yêu cầu
- Xác định nội dung mới của DPTR và SP sau
khi thực hiện các lệnh sau:
POP DPH
POP DPL

Trang 6



cng thc hnh

Vi iu Khin

Bài 2: Bài tập với nhóm lệnh di chuyển dữ liệu, tính toán số
học và tính toán logic
I. Kiến thức cần thiết
1.1. Nhóm lệnh di chuyển dữ liệu
1.1.1. Lệnh MOV dạng Byte:
Cú pháp câu lệnh: MOV <dest-byte>, <src-byte>
1.1.2. Lệnh MOV dạng Bit
Cú pháp câu lệnh: MOV <dest-bit>, <scr-bit>
1.1.3. Lệnh MOV dạng Word
Cú pháp câu lệnh:
MOV DPTR, #data16
1.1.4. Lệnh chuyển byte mã lệnh
Cú pháp câu lệnh: MOVC A, @A + <thanh ghi cơ sở>
1.1.5. Lệnh chuyển dữ liệu ra ngoài
Cú pháp câu lệnh: MOVX
<dest-byte>, <src-byte>
1.1.6. . Lệnh chuyển số liệu vào ngăn xếp
Cú pháp câu lệnh:
PUSH direct
1.1.7. Lệnh chuyển số liệu ra khỏi ngăn xếp
Cú pháp câu lệnh:
POP direct
1.1.8. Hoán chuyển dữ liệu
Cú pháp câu lệnh:
XCH A, <byte>
1.1.9. Hoán chuyển 4 bit thấp

Cú pháp câu lệnh:
XCHD
A,@Ri
1.2 Nhóm lệnh tính toán số học
1.2.1. Lệnh thực hiện phép cộng
Cú pháp của câu lệnh: ADD
A, <scr-byte>
1.2.2. Lệnh cộng có nhớ
Cú pháp của câu lệnh:
ADDCA, <scr-byte>
1.2.3. Lệnh trừ có mợn
Cú pháp của câu lệnh:
SUBB A, <scr-byte>
1.2.4. Lệnh tăng lên 1 đơn vị
Cú pháp của câu lệnh:
INC
<byte>
1.2.5. Lệnh giảm 1 đơn vị
Cú pháp của câu lệnh:
1.2.6. Lệnh tăng con trỏ dữ liệu
Cú pháp của câu lệnh:

DEC
INC

1.2.7. Lệnh thực hiện phép chia
Cú pháp của câu lệnh:
DIV
1.2.8. Hiệu chỉnh số thập phân
Cú pháp của câu lệnh:

1.3. Nhóm lệnh tính toán lôgic
Khoa in in T

<byte>

DPTR
AB
DA

A

Trang 7


cng thc hnh

Vi iu Khin

1.3.1. Lệnh AND cho các biến 1 byte.
Cú pháp câu lệnh: ANL
<dest-byte>, <src-byte>
1.3.2. Lệnh AND cho các biến 1 bit
Cú pháp câu lệnh: ANL
C, <src-bit>
1.3.3. Lệnh OR cho các biến 1 byte
Cú pháp câu lệnh: ORL
<dest-byte>, <src-byte>
1.3.4. Lệnh OR cho các biến 1 bit
Cú pháp câu lệnh: ORL
C, <src-bit>

1.3.5. Lệnh X-OR cho các biến 1 byte
Cú pháp câu lệnh: XRL
<dest-byte>, <src-byte>
1.3.6. Lệnh dịch trái thanh ghi A
Cú pháp câu lệnh:
RL
A
1.3.7. Lệnh dịch trái thanh ghi A cùng với cờ nhớ
Cú pháp câu lệnh:
RLC A
1.3.8. Lệnh dịch phải thanh ghi A.
Cú pháp câu lệnh:
RR A
1.1.9. Lệnh dịch phải thanh ghi A cùng với cờ nhớ
Cú pháp câu lệnh:
RRC A
1.3.10. Lệnh hoán chuyển nội dung hai nửa byte của A
Cú pháp câu lệnh:
SWAP
A
II. Nội dung luyện tập
- Thực hiện giải các bài toán, kiểm tra kết quả bằng phần mềm mô phỏng RIDE
Bài tập với nhóm lệnh di chuyển dữ liệu
Bài số 1.
Dữ kiện
- (30h) ở RAM nội = 40h.
- (40h) ở RAM nội = 10h.

-


Yêu cầu
Chuyển nội dung tại vị trí 30h ở RAM nội vào
R1 và A.
Chuyển nội dung tại vị trí 40h ở RAM nội vào
B.
Chuyển nội dung 0CAh vào vị trí 40h ở RAM
nội vào cổng P2.
Xác định giá trị của thanh ghi R1 , thanh ghi A ,
B và nội dung của RAM nội tại các vị trí trên
bảng Main Register.
Xuất dữ liệu của A và B ra cổng P1 và P3.

Bài số 2.
Dữ kiện
- (C) = 1 ; (P2) = 0C5h .
- (P1) = 35h.

Khoa in in T

Yêu cầu
- Xác định nội dung mới của P1 sau khi thực hiện
các lệnh sau :
MOV P1.3 , C
MOV C , P2.3
Trang 8


cng thc hnh

Vi iu Khin

MOV P1.2 , C

Bài số 3.
Dữ kiện
- (R0) = 11h ; (R1) = 23h .
- (11h) ở RAM ngoài = 35h.

Yêu cầu
- Sao chép nội dung tại vị trí 11h ở RAM ngoài
vào A.
- Sao chép nội dung 55h vào vị trí 23h của RAM
ngoài.
- Xuất dữ liệu của A ra cổng P0 bằng phơng pháp
định địa chỉ trực tiếp.

Bài số 4.
Dữ kiện
- (SP)
= 05h.
- (DPTR) = 1123h.

Yêu cầu
- Lu nội dung 23h và 11h vào vị trí 06h và 07h của
ngăn xếp ở RAM nội. Xác định nội dung mới
của SP.
- Xuất dữ liệu của A ra cổng P0 bằng phơng pháp
định địa chỉ trực tiếp.

Bài số 5.
Dữ kiện

- (SP) = 32h.
- (30h) , (31h) và (32h) ở RAM
nội = 10h, 11h và 12h.

Yêu cầu
- Xác định nội dung mới của DPTR và SP sau khi
thực hiện các lệnh sau:
POP DPH
POP DPL

Bài số 6.
Dữ kiện
- (R1) = 30h ; (A) = 0ffh .
- (30h) ở RAM nội = 0fh.

Yêu cầu
- Hoán chuyển (A) và (30h) ở RAM nội.
- Xác định nội dung mới của A và (30h).
- Xuất A và (30h) ở RAM nội ra cổng P1 và P3.

Bài tập với nhóm lệnh tính toán số học
Bài số 1.
Dữ kiện
Từ lệnh cộng sau :
MOV A , # 38h
ADD A , # 2Fh
38
2F

00111000

00101111

67

0 1100111

Khoa in in T

Yêu cầu
Xác định trạng thái các bit cờ CY , AC và P .
Trả lời :
Cờ CY = 0 vì không có nhớ từ bit D7
Cờ AC = 1 vì có nhớ từ bit D3 sang D4
Cờ P = 1 vì thanh ghi A có 5 bit 1 lẻ .

Trang 9


cng thc hnh

Vi iu Khin

Bài số 2.
Dữ kiện
Từ lệnh cộng sau :
MOV A , # 9Ch
ADD A , # 64h
9C
64
100


10011100
01100100
00000000

Yêu cầu
Xác định trạng thái các bit cờ CY , AC và P .
Trả lời :
Cờ CY = 1 vì có nhớ qua bit D7
Cờ AC = 1 vì có nhớ từ bit D3 sang D4
Cờ P = 0 vì thanh ghi A không có bit 1 chẵn.

Bài số 3.
Dữ kiện
Từ lệnh cộng sau :
MOV A , # 38h
ADD A , # 2Fh
88
93

10001000
10010011

Yêu cầu
Xác định trạng thái các bit cờ CY , AC và P .
Trả lời :
Cờ CY =1 vì có nhớ từ bit D7.
Cờ AC = 0 vì không có nhớ từ bit D3 sang D4
Cờ P = 0 vì thanh ghi A có 4 bit 1 (chẵn) .


11B 00011011

Bài số 4.
Dữ kiện
(A) = 0C3h .
(R1) = 0AAh.

Yêu cầu
- Xác định nội dung của A, cờ nhớ phụ AC , cờ
nhớ CF , cờ OV sau khi thực hiện lệnh :
ADD A,R1

Bài số 5.
Dữ kiện
(A) = 0C3h .
(R1) = 0AAh.

Yêu cầu
- Xác định nội dung của A, cờ nhớ phụ AC , cờ
nhớ CF sau khi thực hiện lệnh :
ADDC A,R1

Nhúm lnh tớnh toỏn logic:
Bài tập 3.1:
Dữ kiện
(A) = 0C3H, (R0) = 55h

Yêu cầu
Sau khi thực hiện lệnh: ANL
(A)= ?


A, R0

Bài tập 3.2:
Dữ kiện
P1.0=1, ACC.7=1 và OV=0

Khoa in in T

Yêu cầu
Hãy thiết lập cờ nhớ bằng lệnh ANL

Trang 10


Đề cương thực hành

Vi Điều Khiển

Bµi tËp 3.3:
D÷ kiÖn
(A) = 0C3H, (R0) = 55h

Yªu cÇu
Sau khi thùc hiÖn lÖnh: ORL A, R0
(A) = ?

Bµi tËp 3.4:
D÷ kiÖn
P1.0=1, ACC.7=1 vµ OV=0


Yªu cÇu

H·y thiÕt lËp cê nhí b»ng lÖnh ORL

Bµi tËp 3.5:
D÷ kiÖn
(A) = 0C3H, (R0) = 0AAh

Khoa Điện – Điện Tử

Yªu cÇu

Sau khi thùc hiÖn lÖnh: XRL
(A) = ?

A, R0

Trang 11


cng thc hnh

Vi iu Khin

Bài 3: Bài tập với nhóm lệnh rẽ nhánh chơng trình và điều
khiển biến logic
I. Kiến thức cần thiết
1.1. Nhóm lệnh rẽ nhánh chơng trình
1.1.1. Lệnh gọi tuyệt đối.

Cú pháp câu lệnh:
ACALL
addr11
1.1.2. Lệnh gọi dài.
Cú pháp câu lệnh:
LCALL
addr16
1.1.3. Lệnh quay trở lại từ chơng trình con.
Cú pháp câu lệnh:
RET
1.1.4. Lệnh quay trở lại từ ngắt.
Cú pháp câu lệnh:
RETI
1.1.5. Lệnh nhảy gián tiếp.
Cú pháp câu lệnh:
JMP @A+DPTR
1.1.6. Lệnh nhảy nếu 1 bit đợc thiết lập.
Cú pháp câu lệnh:
JB
bit, rel
1.1.7. Lệnh nhảy nếu 1 bit không đợc thiết lập.
Cú pháp câu lệnh:
JNB bit, rel
1.1.8. Lệnh nhảy nếu 1 bit đợc thiết lập và xoá bit đó.
Cú pháp câu lệnh:
JBC bit, rel
1.1.9. Lệnh nhảy nếu cờ nhớ đợc thiết lập.
Cú pháp câu lệnh:
JC
rel

1.1.10. Lệnh nhảy nếu cờ nhớ không đợc thiết lập.
Cú pháp câu lệnh:
JNC rel
1.1.11. Lệnh nhảy nếu thanh ghi A bằng 0.
Cú pháp câu lệnh:
JZ
rel
1.1.12. Lệnh nhảy nếu thanh ghi A khác 0.
Cú pháp câu lệnh:
JNZ rel
1.1.13. Lệnh nhảy khi so sánh 2 toán hạng.
Cú pháp câu lệnh:
CJNE <dest-byte>, <src-byte>, rel
1.1.14. Lệnh giảm và nhảy.
Cú pháp câu lệnh:
DJNZ <byte>, <rel-address>
1.1.15. Lệnh tạm ngừng hoạt động.
Cú pháp câu lệnh:
NOP
1.2. Nhóm lệnh điều khiển biến logic
1.2.1. Lệnh xoá bit
Cú pháp câu lệnh:
CLR bit
1.2.2. Lệnh xoá thanh ghi tích luỹ
Khoa in in T

Trang 12


cng thc hnh


Vi iu Khin

Cú pháp câu lệnh:
CLR A
1.2.3. Lệnh thiết lập bit
Cú pháp câu lệnh:
SETB bit
1.2.4. Lệnh lấy bù của bit
Cú pháp câu lệnh:
CPL <bit>
1.2.5. Lệnh lấy bù của thanh ghi tích luỹ
Cú pháp câu lệnh:
CPL
A
II.Nội dung luyện tập
- Thực hiện giải các bài toán, kiểm tra kết quả bằng phần mềm mô phỏng RIDE
Bài tập nhóm lệnh rẽ nhánh chơng trình

Bài tập 4.1:
Dữ kiện

Yêu cầu

(SP) = 07h. Nhãn CT_CON đợc Sau khi thực hiện lệnh ACALL CT_CON
đặt tại vị trí 0345h trong bộ nhớ tại vị trí 0123h thì : (SP), (08h), (09h) và
chơng trình.
(PC) = ?
Bài tập 4.2:
Dữ kiện

Yêu cầu
(SP) = 07h. Nhãn CT_CON đợc Sau khi thực hiện lệnh LCALL CT_CON
đặt tại vị trí 1234h trong bộ nhớ tại vị trí 0123h thì: (SP), (08h), (09h) và
chơng trình.
(PC) =?
Bài tập 4.3:
Dữ kiện
Yêu cầu
(SP) = 0Bh. (0Ah) và (0Bh) trong -Xác định (SP) sau khi thực hiện lệnh RET
RAM nội = 23h và 01h.
- XĐ địa chỉ tiếp theo của chơng trình.
Bài tập 4.4:
Dữ kiện
Yêu cầu
(SP) = 0Bh. (0Ah) và (0Bh) trong -Xác định (SP) sau khi thực hiện lệnh RETI
RAM nội = 23h và 01h.
- XĐ địa chỉ tiếp theo của chơng trình.
Một ngắt đợc phát hiện trong khi
lệnh ở địa chỉ 0123h đang thực
thi.
Bài tập 4.5:
Dữ kiện
(P1) = 0CAh. (A) = 56h.

Yêu cầu
Xác định địa chỉ rẽ nhánh của chơng trình,
khi thực hiện các lệnh:
JB
P1.2, Label1
JB

ACC.2, Lable2

Bài tập điều khiển biến logic
Khoa in in T

Trang 13


cng thc hnh

Vi iu Khin

Bài tập 5.1:
Dữ kiện
(P1) = 5Dh.

Yêu cầu
Thực hiện lệnh xoá bit để có (P1) = 59h.

Bài tập 5.2:
Dữ kiện
(C) = 0, (P1) = 34h.

Yêu cầu
Sử dụng lệnh thiết lập bit để có: (P1) = 35h,
và (C) = 1.

Bài tập 5.3:
Dữ kiện
Yêu cầu

Cổng P1 vừa đợc ghi nội dung Sử dụng lệnh lấy bù bit để có: (P1) = 5Dh
5Bh.
Bài tập 5.4:
Dữ kiện

Khoa in in T

Yêu cầu
Sau khi thực hiện xong lệnh:
CPL A
(A) = 0A3h
Xác định nội dung ban đầu của A.

Trang 14


cng thc hnh

Bài 4+5:

Vi iu Khin

VIếT CHƯƠNG TRìNH ĐIềU KHIểN CáC LED ĐƠN Và LED
7 THANH CHạY NHIềU CHế Độ

I. Kiến thức cần thiết
1.Led đơn
Port tạo ra 5V 20 mA

LED = 2.5V 20 mA

mmAmA

Hình 3.1. Sơ đồ kết nối VĐK với các LED đơn
- Cực dơng của Led đợc nối với điện trở, điện trở đợc nối với các chân vi điều khiển.
Cực âm của Led đợc nối với GND của vi điều khiển. Nh vậy, khi chân vi điều khiển
ở mức cao ( tức là 5V), đèn Led sẽ sáng. Khi chân vi điều khiển ở mức thấp ( 0V)
đèn LED sẽ tắt.
- Lu ý trong hình: Giá trị điện trở đợc xác định dựa vào dòng tối đa của vi điều
khiển, điện áp và dòng tối đa của Led. Nh vậy, giá trị nhỏ nhất của điện trở đợc
dùng đợc tính toán nh trong hình R = 125
- Tuy nhiên, để đảm bảo hoạt động của đèn Led, chúng ta nâng giá trị điện trở lên
thành 220
2. Led 7 thanh
Cấu trúc và mã hiển thị dữ liệu trên Led 7 thanh
- Dạng Led:

- Led anode chung

Khoa in in T

Trang 15


Đề cương thực hành

Vi Điều Khiển

Víi lo¹i Led anode chung ch©n COM ph¶i cã møc logic 1(+5V), Led muèn s¸ng th×
t¬ng øng c¸c ch©n A-F,H ph¶i cã møc logic 0
B¶ng 3.1: B¶ng m· cho Led anode chung:


0
1
2
3
4
5
6
7
8
9

h
1
1
1
1
1
1
1
1
1
1

g
1
1
0
0
0

0
0
1
0
0

f
0
1
1
1
0
0
0
1
0
0

e
0
1
0
1
1
1
0
1
0
1


d
0
1
0
0
1
0
0
1
0
0

c
0
0
1
0
0
0
0
0
0
0

b
0
0
0
0
0

1
1
0
0
0

a
0
1
0
0
1
0
0
0
0
0

HEX
0C0h
0F9h
0A4h
0B0h
99h
92h
82h
0F8h
80h
90h


- Led cathode chung

Víi lo¹i Led cathode chung ch©n COM ph¶i cã møc logic 0, Led muèn s¸ng th× t¬ng øng c¸c ch©n A-F,H ph¶i cã møc logic 1
B¶ng 3.2: B¶ng m· cho Led cathode chung:

0
1
2
3
4
5
6
7
Khoa Điện – Điện Tử

h
0
0
0
0
0
0
0
0

g
0
0
1
1

1
1
1
0

f
1
0
0
0
1
1
1
0

e
1
0
1
0
0
0
1
0

d
1
0
1
1

0
1
1
0

c
1
1
0
1
1
1
1
1

b
1
1
1
1
1
0
0
1

a HEX
1 03Fh
0 06h
1 5Bh
1 4Fh

0 66h
1 6Dh
1 7Dh
1 07h
Trang 16


cng thc hnh

Vi iu Khin

8
9

0 1 1 1 1 1 1 1
0 1 1 0 1 1 1 1

7Fh
6Fh

Khi kết nối chung dữ liệu Led 7 thanh ta không thể cho các Led sáng đồng thời do
ảnh hởng của các Led với nhau. Muốn các Led sáng ta phải sử dụng phơng pháp
quét, nghĩa là tại mỗi thời điểm chỉ có một Led đợc sáng còn các Led khác tắt. Vì
khoảng thời gian tắt mở này rất nhanh (cỡ ms) và do hiện tợng lu ảnh của mắt ta sẽ
thấy các Led sáng đồng thời. Dựa vào hiện tợng lu ảnh đó, chúng ta thiết kế phần
cứng nh sau:
- Sơ đồ kết nối phần cứng vi điều khiển với Led 7 thanh loại cathode chung

Hình 3.2. Sơ đồ kết nối phần cứng vi điều khiển với Led 7 thanh loại cathode chung
- Sơ đồ kết nối phần cứng vi điều khiển với Led 7 thanh loại anode chung


Hình 3.3. Sơ đồ kết nối phần cứng vi điều khiển với Led 7 thanh loại anode chung
I. Nội dung luyện tập
Điều khiển Led đơn
Bài 1 : Viết chơng trình điều khiển hệ thống đèn sáng dần.
- Viết chơng trình Port 1 sáng dần rồi tắt hết.
- Viết chơng trình Port 1 sáng dần rồi tắt dần.
- Viết chơng trình Port 0 và Port 1 sáng dần rồi tắt dần.
Khoa in in T

Trang 17


cng thc hnh

Vi iu Khin

-

Viết chơng trình sáng dần 16 Led từ giữa sáng ra ngoài rồi tắt từ ngoài vào
trong.
Bài 2 : Viết chơng trình điều khiển hệ thống đèn sáng dồn.
- Viết chơng trình P0 sáng dồn.
- Viết chơng trình P0 và P1 sáng dồn từ dới lên.
Bài 3 : Viết chơng trình đếm nhị phân trên các Port của VĐK.
- Viết chơng trình đếm lên nhị phân từ 00 FFh hiển thị trên Port P1.
- Viết chơng trình đếm xuống nhị phân từ FFh 00h hiển thị trên Port P1.
Điều khiển Led 7 thanh
Bài 1: Viết chơng trình đồng hồ: hiển thị giờ, phút, giây trên Led 7 thanh.
Bài 2: Làm lại bài 1 với xung Clock chính xác 1s sử dụng ngắt Timer.

Bài 3: Viết chơng trình đếm sản phẩm sử dụng ngắt ngoài, hiển thị số sản phẩm trên
Led 7 thanh.

Khoa in in T

Trang 18


Đề cương thực hành

Vi Điều Khiển

Bài 6: LẬP TRÌNH VỚI CÁC TIMER VÀ CÁC NGẮT

6.1. Lập trình với hàm thời gian
6.1.1 Lập trình với hàm trễ dùng vòng lập DJNZ
Ví dụ: Viết hàm chờ 1 ms
Cho_1ms:
Mov r2 ,#249
; 2µs
Lap:
Nop
; 1µs
Nop
; 1µs
Djnz r2, lap
; 2µs ; 249*(1µs +1µs +2µs) = 996 µs
Ret
; 2µs
; Tổng thời gian là: (2+996+2) µs = 1ms

Bài tập: Hãy xác định thời gian chờ của chương trình sau.
wait: Mov r2,#10
w3: Mov r1,#200
w2: Mov r0,#228
w1: Djnz r0,w1
Djnz r1,w2
Djnz r2,w3
Ret
6.1.2. Lập trình với hàm trễ dùng các Timer
Ví dụ1: Viết chương trình tạo thời gian trễ 200 chu kỳ máy dùng Timer1
Trước hết chúng ta phải phân tích xem bài toán yêu cầu những gì để xác định
các chế độ hoạt động cho phù hợp. Từ đó xác định được thông số cho thanh ghi
TMOD và các thông số cần nạp cho thanh ghi Timer (THX và TLX )
Delay: Mov Tmod , # 20h
Mov Th1, # 56
Setb Tr1
Jnb Tf1 , $
Clr Tf1,
Clr Tr1
Ret

; chế độ 2 Timer1
; lấy 256 – 200 = 56
; cho phép Timer hoạt động
; chờ đợi cờ tràn thiết lập
;Kêt thúc chương trình con

Ví dụ2: Viết hàm chờ khoảng 1 s sử dụng Timer 0 chế độ 1
; 50000 = C350h
; FFFFh-C350h= 3CAFh

; Giá trị ban đầu là 3CAFh+1=3CB0h
wait: Mov r1,#20
Mov TMOD,#01h
; Chọn Timer 0, chế độ 1
lap: Clr TF0
; Xóa cờ ngắt Timer 0
Mov TL0, #0B0h
; Đặt giá trị ban đầu cho TL0
Mov TH0, #03Ch
; Đặt giá trị ban đầu cho
TH0
Setb TR0
Jnb TF0,$
Djnz r1,lap
Ret
Khoa Điện – Điện Tử

; Khởi động Timer 0
; Kiểm tra cờ tràn Timer 0
; Đếm đủ rồi thì thoát

Trang 19


Đề cương thực hành

Vi Điều Khiển

Bài tập 1: Viết chương trình tạo thời gian trễ 500 chu kỳ máy dùng Timer0
Bài tập 2: Viết chương trình tạo thời gian trễ 65536 chu kỳ máy dùng Timer1

6.1.3. Lập trình tạo tín hiệu xung, điều chỉnh độ rộng xung, tạo tín hiệu âm thanh...
Ví dụ : Viết chương trình tạo sóng vuông có tần số 1 KHz tại chân P1.7
;65535(0FFFFh) – 500 (01F4h) = 65035 (0FE0Bh)
Mov TMOD,#10h
; Chọn Timer 1, chế độ 1
Lap: Mov TH1,#0FEh
; TH1 chứa giá trị 0FEh
Mov TL1,#0Bh
; TL1 chứa giá trị 0Bh
Setb TR1
; Bộ Timer 1 hoạt động
Cho: Jnb TF1,cho
; Chờ tràn
Clr TR1
; Bộ Timer 1 ngừng hoạt
động
Clr TF1
; Xoá cờ tràn
Cpl P1.7
; Đổi trạng thái bit P1.7
Sjmp Lap
; Lặp lại
Bài tập : Hãy viết chương trình tạo sóng vuông có tần số 10 KHz tại chân
P1.0.

6.2. Lập trình với các ngắt
6.2.1. Lập trình với ngắt Timer
Ví dụ 7: Tạo tín hiệu dưới dạng xung vuông có tần số 10 KHz tại chân P1.0
của VĐK. Sử dụng ngắt Timer 0.
Org

Ljmp
Org
Ljmp
Main:
Mov
Mov
Mov
Setb
Mov
Jmp
Timer0:
Cpl
Reti

0000h
main
000Bh
Timer0
TMOD,#02h
TL0,#-50
TH0,#-50
TR0
IE,#82h
$
P1.0

; Lựa chọn Timer 0 , chế độ 2.
; Xác định giá trị ban đầu cho TL0.
; Xác định giá trị ban đầu cho TH0.
; Khởi tạo Timer 0.

; Khởi tạo ngắt Timer 0.
; Chương trình con phục vụ ngắt T0.
; Đảo trạng thái để tạo xung.
; Thoát khỏi ch/trình con phục vụ ngắt.

Bài tập: Tạo tín hiệu dưới dạng xung vuông có tần số 5 KHz tại chân P1.0
của VĐK. Sử dụng ngắt Timer 1.
6.2.2. Lập trình với ngắt ngoài (bài toán lập trình điều khiển Rô bôt)
Ví dụ 6: Chương trình đếm sản phẩm với số lượng tối đa là 255. Lưu kết quả
vào thanh ghi R0. Cảm biến được kết nối với chân P3.3 của VĐK.

Khoa Điện – Điện Tử

Trang 20


Đề cương thực hành

Vi Điều Khiển

Org
Ljmp
Org
Ljmp
Org
Main:
Setb
Setb
Setb
Mov

Jmp
Ngat1:
Inc
Cjne
Clr
Tiep: Reti

0000h
Main
0013h
Ngat1
0030h

; Bắt đầu chương trình chính
; Sử dụng ngắt ngoài 1

EX1
IT1
EA
R0,#0
$

; Thiết lập các ĐK để ngắt hoạt động

R0
R0,#255,Tiep
EX1

; Tăng biến đếm số lượng sản phẩm
; So sánh biến đếm với giá trị tối đa

; Ngắt ngừng hoạt động
; Thoát khỏi ch / trình con phục vụ ngắt

; Đặt giá trị ban đầu cho biến đếm

End
Bài tập: Viết chương trình đếm sản phẩm với số lượng tối đa là 250, dùng ngắt
INT0 . Hiển thị kết quả trên 3 LED 7 thanh. Trong đó:
- LED 7 là loại chung Anốt
- 3 LED 7 thanh được kết nối với các cồng P0, P1, P2.
Bài toán: Lựa chọn phần cứng, lập lưu đồ thuật toán và viết chương trình điều khiển
2 động cơ một chiều (M1, M2) theo yêu cầu: (K1, K2 là các công tắc thường
mở)
K1

K2

Mở
Đóng
Mở
Đóng

Mở
Mở
Đóng
Đóng

Chức năng
M1
Dừng

Tiến
Dừng
Tiến

Chế độ
M2
Dừng
Dừng
Tiến
Tiến

1
2
3
4

6. 2.3. Lập trình với ngắt nối tiếp, truyền thông , (giao tiếp VĐK với PC)

Khoa Điện – Điện Tử

Trang 21


cng thc hnh

Vi iu Khin

Bài 7: lập trình điều khiển động cơ DC, động cơ bớc
I.
Kin thc cn thit

1.1. Cấu tạo động cơ bớc:
Động cơ bớc là một thiết bị sử dụng rộng rãi để chuyển các xung điện thành chuyển
động cơ học. Trong các ứng dụng chẳng hạn nh các bộ điều khiển đĩa, các máy in
kim ma trận và các máy rô-bốt thì động cơ bớc đợc dùng để điều khiển chuyển
động. Mỗi động cơ bớc đều có phần quay rôto là nam châm vĩnh cửu (cũng còn đợc
gọi là trục dẫn - shaft) đợc bao bọc xung quanh là phần tĩnh gọi stato. Lu ý rằng,
trục của một động cơ thờng thì quay tự do, còn trục của động cơ bớc thì chuyển
động theo một độ tăng cố định lặp lại để cho phép ta chuyển dịch nó đến một vị trí
chính xác. Hớng quay đợc xác định bởi từ trờng của stato. Từ trờng của stato đợc
xác định bởi dòng chạy quanh lõi cuộn dây, khi hớng của dòng thay đổi thì cực từ
trờng cũng thay đổi gây ra chuyển động ngợc lại của động cơ (đảo chiều). Động cơ
bớc đợc nối ở đây có 6 đầu dây: 4 đầu của cuộn dây stato và hai đầu dây chung điểm
giữa của các cặp dây. Khi chuỗi xung nguồn đợc cấp đến mỗi cuộn dây stato thì
động cơ sẽ quay. Có một số chuỗi xung đợc sử dụng rộng rãi với cấp độ chính xác
khác nhau. Bảng 1.1 trình bày chuỗi 4 bớc thông thờng.
- Cấu tạo động cơ bớc:

Hình 4.1. Sơ đồ cấu tạo động cơ bớc
Bảng 1.1: Chuỗi 4 bớc thông thờng và các góc bớc của động cơ bớc.
Bớc
1
2
3
4

Cuộn
dây A
1
1
0

0

Cuộn
dây B
0
1
1
0

Cuộn
dây C
0
0
1
1

Cuộn
dây D
1
0
0
1

Góc bớc
0.72
1.8
2.0
2.5
5.0
7.5

15

Số bớc/ vòng
500
200
180
144
72
48
24

1.2. Sơ đồ ghép nối 89C51 với động cơ bớc:

Khoa in in T

Trang 22


cng thc hnh

Vi iu Khin

Hình 4.2. Sơ đồ ghép nối 89C51 với động cơ bớc
- Chơng trình điều khiển động cơ bớc:
Ví dụ 1:
$include(reg51.inc)

BACK:

Org


0000H

MOV

A, # 01100110B

MOV

P1, A

RR

A

ACALL

DELAY

SJMP

BACK

MOV
MOV
DJNZ
DJNZ
RET

R2, # 100

R3, # 255
R3, W2
R2, W1

; Nạp chuỗi xung bớc
; Xuất chuỗi xung đến động cơ
; Quay theo chiều kim đồng hồ
; Chờ
; Tiếp tục chạy

DELAY
W1:
W2:

Hãy thay đổi giá trị của DELAY để đặt tốc độ quay. Ta có thể sử dụng lệnh
đơn bít SETB và CLR thay cho lệnh RRA để tạo ra chuỗi xung.
- Chuỗi xung bốn bớc và số răng trên rô to:
Chuỗi xung chuyển mạch đợc trình bày trong bảng 1.1 đợc gọi là chuỗi
chuyển mạch 4 bớc bởi vì sau 4 bớc thì hai cuộn dây giống nhau sẽ đợc bật ON.
Vậy độ dịch chuyển của 4 bớc này sẽ là bao nhiêu? Sau mỗi khi thực hiện 4 bớc này
thì rô to chỉ dịch đợc một bớc răng. Do vậy, trong động cơ bớc với 200 bớc/ vòng thì
rô to của nó có 50 răng vì 50 ì 4 = 200 bớc cần để quay hết một vòng. Điều này dẫn
đến một kết luận là góc bớc tối thiểu luôn là hàm của số răng trên rô to. Hay nói
cách khác góc bớc càng nhỏ thì rô to quay đợc càng nhiều răng. Hãy xét ví dụ 1.
Khoa in in T

Trang 23


cng thc hnh


Vi iu Khin

Ví dụ 2:
Hãy tính số lần của chuỗi 4 bớc trong bảng 1.1 phải cấp cho một động cơ bớc
để tạo ra một dịch chuyển 800 nếu động cơ góc bớc là 20.
Lời giải:
Một động cơ có góc bớc là 20 thì phải có những đặc tính sau: góc bớc 20, số
bớc/ vòng là 180, số răng của rô to là 45, độ dịch chuyển sau mỗi chuỗi 4 bớc là 80.
Vậy để dịch chuyển 800 thì cần 40 chuỗi 4 bớc vì 10 ì 4 ì 2 = 80.
II. Nội dung luyện tập
2.1. Động cơ bớc
- Thiết kế lại phần cứng ghép nối 89C51 với động cơ bớc sử dụng phần tử bán dẫn.
- Cho động cơ bớc có góc bớc 2o, viết chơng trình điều khiển dừng động cơ ở 90 o,
45o.
- Viết chơng trình điều khiển động cơ bớc có nút đảo chiều quay, tăng tốc/giảm tốc.
2.2. Động cơ DC
- Viết chơng trình điều khiển động cơ DC có nút Start/Stop, tăng tốc/giảm tốc.

Khoa in in T

Trang 24



×