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

Ứng dụng máy vi tính vào kỹ thuật đo lường và đ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 (893.94 KB, 113 trang )

Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN
MỤC LỤC

PHẦN 1 : LÝ THUYẾT CHUNG
A. ĐẶT VẤN ĐỀ :...............................................................4
I. MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI :
II. GIỚI HẠN CỦA ĐỀ TÀI :
III. SƠ ĐỒ KHỐI TỔNG QUÁT :

4
4
5

B. GIỚI THIỆU AT89C51:......................................................5
I. TÓM TẮT PHẦN CỨNG :
5
1. Giới thiệu họ MCS51 :.......................................................................................5
2. Sơ lược về các chân của AT89C51 :..............................................................7
3. Tổ chức bộ nhớ :............................................................................................11
4. Các thanh ghi chức năng đặc biệt :.............................................................15
5. Bộ nhớ ngoài :................................................................................................20
6. Ngõ vào tín hiệu RESET:................................................................................24
II. HOẠT ĐỘNG CỦA BỘ ĐỊNH THÌ TIMER:
26
1. Giới thiệu :.......................................................................................................26
2. Thanh ghi chế độ Timer (TMOD) :...................................................................27
3. Thanh ghi điều khiển timer (TCON) :...............................................................28
4. Chế độ timer :...................................................................................................29


5. Nguồn tạo xung nhòp :......................................................................................31
6. Bắt đầu, dừng và điều khiển các Timer:..................................................33
7. Khởi động và truy xuất các thanh ghi timer :.............................................34
8. Các khoảng ngắn và các khoảng dài:.....................................................34
III. HOẠT ĐỘNG CỦA BỘ NGẮT (INTERRUPT):
35
1. Giới thiệu :.......................................................................................................35
2. Tổ chức ngắt của AT89C51:..........................................................................36
3. Các ngắt của CΑ T89C51:...........................................................................36
4. Đònh thì interrupt:................................................................................................37
IV. HOẠT ĐỘNG PORT NỐI TIẾP :
38
1. Giới thiệu :.......................................................................................................38
2. Thanh ghi điều khiển port nối tiếp :..............................................................39
3. Các chế độ hoạt động :................................................................................41
4. Khởi động và truy xuất các thanh ghi cổng nối tiếp :...........................43
5. Truyền thông đa xử lý :.................................................................................44
6. Tốc độ baud cổng nối tiếp :.........................................................................45
V. TẬP LỆNH CỦA CΑT89C51:
47
Các chế độ đánh đòa chỉ : Trong tập lệnh có 8 chế độ đánh đòa chỉ:
.................................................................................................................................. 48
C. BIẾN ĐỔI A/D VÀ D/A :.................................................53
I. GIỚI THIỆU ADC0809 :

53

SV : TRIỆU QUANG MINH

Trang 1



Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

1. Sơ đồ khối :.......................................................................................................53
2. Sơ đồ chân :......................................................................................................54
3. Khả năng :........................................................................................................54
4. Đặc tính kỹ thuật :...........................................................................................54
5. Mô tả chức năng :.........................................................................................55
GIẢN ĐỒ THỜI GIAN :
57
II. GIỚI THIỆU DAC0808 :
58
1. Sơ đồ khối :.......................................................................................................59
2. Sơ đồ chân :......................................................................................................59
3. Khả năng :........................................................................................................59
4. Trò số tối đa :...................................................................................................59
5. Hoạt động cơ bản :..........................................................................................59
D. CỔNG NỐI TIẾP RS 232 :..............................................61
E. NGÔN NGỮ LẬP TRÌNH VISUAL BASIC VỚI TRUYỀN
THÔNG NỐI TIẾP :...........................................................63
F. GIAO TIẾP VÀ HIỂN THỊ KẾT QUẢ ĐO :......................64
G. KHUYẾCH ĐẠI THUẬT TOÁN (OPERATION AMPLIFIER) :.65
I. SƠ ĐỒ KHỐI VÀ PHÂN TÍCH MỘT MẠCH OP – AMP ĐƠN GIẢN :
65
II. IC KHUYẾCH ĐẠI THUẬT TOÁN (OP AMP) :
65

1. Các đặc tính cơ bản :......................................................................................65
2. Op Amp lý tưởng :.............................................................................................67
3. Mạch đo dùng IC Op-Amp (mạch khuyếch đại thuật toán ) :....................69
A. THIẾT KẾ PHẦN CỨNG :.............................................70
I. ĐO ÁP, DÒNG, TỤ, CẢM VÀ ĐIỆN TRỞ :
70
1. Đo điện áp :......................................................................................................70
2. Đo dòng điện :..................................................................................................71
3. Đo điện dung :....................................................................................................71
4. Đo điện cảm :...................................................................................................72
5. Đo điện trở :.....................................................................................................73
II. ĐO TẦN SỐ, COS, CÔNG SUẤT :
74
1. Đo tần số :........................................................................................................74
2. Đo cos :............................................................................................................74
3. Đo công suất :...................................................................................................74
III. BỘ NGUỒN LẬP TRÌNH DAC :
75
B. GIỚI THIỆU CÁC IC TRÊN KIT :....................................75
1. µCAT89C51 :.......................................................................................................75
2. Vi mạch MAX 232 :..............................................................................................76
SV : TRIỆU QUANG MINH

Trang 2


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN


3. ADC0809 :............................................................................................................76
4. DAC0808 :............................................................................................................ 76
5. LM741 và LF353 :..............................................................................................76
6. IC 74HC573 : Đệm dòng..................................................................................78
7. Rơ le :...................................................................................................................78
C. GIAO DIỆN TRÊN MÁY TÍNH VÀ SỬ DỤNG :..............80
D. LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH VI XỬ LÝ :. 86
I. LƯU ĐỒ GIẢI THUẬT :
86
1. Chương trình chính :............................................................................................86
2. Chương trình con Inchar, Outchar:......................................................................95
3. Chương trình con đo độ rộng xung :.................................................................95
4. Chương trình con delay2ms : (delay 2.5 ms)........................................................95
II. CHƯƠNG TRÌNH VI XỬ LÝ CHO AT89C51 :
97
III. MẠCH THIẾT KẾ :
109
112

Tài liệu tham khảo
1. Tài liệu Vi Xử Lý_______________________Giảng viên Hồ
Trung Mỹ
2. The 8051 Microcontroller_________________I.Scott MacKenzie
3. Hướng dẫn thí nghiệm Vi Xử Lý.
4. Đo lường và điều khiển bằng máy tính______Ngô
Diên Tập
5. Lập trình ghép nối máy tính trong Windows__Ngô
Diên Tập
6. Kỹ thuật đo____________________________Nguyễn Ngọc

Tân
7. Tài liệu hướng dẫn thí nghiệm mạch điện tử .

PHẦN 1 : LÝ THUYẾT CHUNG

SV : TRIỆU QUANG MINH

Trang 3


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

A. ĐẶT VẤN ĐỀ :
Ngày nay cùng với sự phát triển của các ngành khoa
học kỹ thuật, kỹ thuật điện tử ma øtrong đó là việc ứng
dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã
đem lại những kết quả đầy tính ưu việt .
Để có thể tiến hành điều khiển hoặc giám sát, đo
lường các quá trình thực bằng máy tính, trước hết phải có
được mối liên hệ cần thiết giữa máy tính và thế giới bên
ngoài.
Với sự phát triển mạnh của nghành kỹ thuật số đặc
biệt là cho ra đời các họ vi xử lí và vi điều khiển rất đa
chức năng do đó việc dùng kỹ thuật vi xử lí, kỹ thuật vi
điều khiển kết hợp với máy tính đã giải quyết những bế
tắc và kinh tế hơn mà phương pháp dùng IC rời kết nối lại
không thực hiện được. Các thiết bò, hệ thống đo lường và

điều khiển ghép nối với máy tính có độ chính xác cao, thời
gian thu thập số liệu ngắn, nhưng điều đáng quan tâm hơn là
mức độ tự động hoá trong việc thu thập và xử lý các kết
quả đo, kể cả việc lập bảng thống kê cũng như in ra kết
quả .
I. Mục đích yêu cầu của đề tài :
Trong luận văn này, em thiết kế một mô hình thí nghiệm
mạch điện và bộ đo các đại lượng điện, có giao diện nối
tiếp với máy tính để hiển thò và vẽ dạng tín hiệu đo lên
màn hình. Mạch vi xử lý nhận các giá trò đại lượng điện
(điện áp, dòng điện, điện trở, điện dung, cảm kháng tần
số, công suất) sau khi đã qua mạch đệm được chuyển thành
điện áp thích hợp tương ứng với ngõ vào analog của bộ biến
đổi ADC. Các giá trò đo sẽ được truyền về máy tính để xử
lý và được hiện thò lên màn hình .
Yêu cầu :
-Giá trò đo phải chính xác, và thay đổi tầm đo một
cách linh hoạt.
-Mạch điện không quá phức tạp, bảo đảm được sự an
toàn, dễ sử dụng.
-Giá thành không quá mắc.
II. Giới hạn của đề tài :
Do mạch chỉ thiết kế đo các đại lượng điện trên mạch
thí nghiệm điện nên bò giới hạn về giá trò đo áp (tối đa 12 V
DC, 24 Vpp AC), dòng (0.1 A), các giá trò điện kháng, tần số,
công suất cũng bò giới hạn tầm đo. Ta có thể mở rộng để

SV : TRIỆU QUANG MINH

Trang 4



Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

đo các giá trò lớn hơn thông qua biến dòng, biến áp, mạch
phân tầm đo với tỷ số biến đổi thích hợp.
III. Sơ đồ khối tổng quát :
Khối mạch
đệm

Khối xử lý

Máy tính

B. GIỚI THIỆU AT89C51:
I. TÓM TẮT PHẦN CỨNG :
& chuyển
đổi

1. Giới thiệu họ MCS51 :
MCS51 là một họ IC vi điều khiển (microcontroller) do hãng
Intel sản xuất . Các IC tiêu biểu cho họ MCS51 là 8031 và
8051 . Cùng với thời gian, con người đã cho ra đời nhiều loại vi
xử lí từ 8 bit đến 64 bit với cải tiến ngày càng ưu việt nhưng
tùy theo mục đích sử dụng mà vi xử lí 8 bit vẫn còn tồn tại.
Trong luận văn, em sử dụng vi điều khiển AT89C51 . AT89C51
cũng là vi xử lí 8 bit nhưng có chứa bộ nhớ bên trong và có

thêm 2 bộ đònh thời, ngoài ra nó có thể giao tiếp nối tiếp
trực tiếp với máy tính . Với bộ nhớ trong, AT89C51 thích hợp
cho những chương trình có quy mô nhỏ, tuy nhiên AT89C51 có
thể kết hợp được với bộ nhớ ngoài cho chương trình có quy
mô lớn. Sau đây là giới thiệu của em về vi điều khiển
AT89C51 có các đặc điểm chung như sau :
− 4 Kbyte ROM .
− 128 byte RAM .
− 4 port I/O 8 bit .
− 2 bộ đònh thời 16 bit .
− Giao tiếp nối tiếp .
− 64 K không gian bộ nhớ chương trìng mở rộng .
− 64 K không gian bộ nhớ dữ liệu mở rộng .
− Một bộ xử lý luận lý (thao tác trên các bit
đơn ).
− 210 bit được đòa chỉ hoá .
− Bộ nhân/chia 4 µ s .

SV : TRIỆU QUANG MINH

Trang 5


Luận văn tốt nghiệp
LĂNG

SV : TRIỆU QUANG MINH

GVHD : LƯƠNG VĂN


Trang 6


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

INT1\
INT0\
SERIAL PORT
TEMER0
TEMER1
TEMER2
8032\8052

128 byte
RAM
8032\805
2
INTERRUPT
CONTROL

OTHER
REGISTER

128 byte
RAM

ROM

0K:
8031\80
32
4K: 8031
8K:8052

TEMER2
8032\805
2
TEMER1
TEMER1

CPU

BUS
CONTROL

I/O PORT

SERIAL
PORT

OSCILATOR

ALE\
PSEN\

EA\
RST


P0 P1 P2 P3
Address\Data

TXD

RXD

Sơ đồ khối AT89C51
2. Sơ lược về các chân của AT89C51 :
AT89C51 có tất cả 40 chân có chức năng như các đường
xuất nhập . Trong đó có 24 chân có công dụng kép, mỗi
đường có thể hoạt động như đường xuất nhập hoặc như
đường điều khiển hoặc là các thành phần của bus dữ liệu
và bus đòa chỉ .

SV : TRIỆU QUANG MINH

Trang 7


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

Sơ đồ chân AT89C51 :
30pF
12MHz

40


19

Vcc
XTAL1

18

XTAL2

30pF
AT89C51
29

O

PSEN

30 ALE
31

O

EA

9 RST
RD
WR
T1
T0

INT1
INT0
TXD
RXD

17 P3.7
16 P3.6
15 P3.5
14 P3.4
13
P3.3
12
P3.2
11 P3.1
10 P3.0
Vss

P0.7

32
AD7
P0.6 33
AD6
P0.5 34
AD5
P0.4 35
AD4
P0.3
36
AD3

P0.2
37
AD2
P0.1
38 AD1
P0.0
39 AD0
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0

8

P2.7
P2.6
P2.5
P2.4

28
27
26
25

P2.1
P2.0


6
5
4

7

3

2
1
A15
A14
A13
A12
P2.3
P2.2
22 A9
21 A8

24 A11
23 A10

a. Port 0 :
Port 0 là một port có hai chức năng trên các chân 32
– 39 . Trong các thiết kế cỡ nhỏ ( không dùng bộ nhớ mở
rộng ) nó có các chức năng như các đường I/O .Đối với các
thiết kế lớn với bộ nhớ mở rộng, nó được hợp kênh giữa
bus đòa chỉ và bus dữ liệu .


SV : TRIỆU QUANG MINH

Trang 8


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

b. Port 1 :
Port 1 là một port I/O trên các chân 1 – 8 . Các chân
được ký hiệu P1.0 , P1.1, P1.2 , … có thể dùng cho giao tiếp
với các thiết bò ngoài nếu cần .Port 1 không có chức năng
khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết
bò ngoài .
c. Port 2 :
Port 2 là một port có công dụng kép trên các chân
21 – 28 được dùng như các đường xuất nhập hoặc là các byte
cao của bus đòa chỉ đối với các thiết kế dùng bộ nhớ mở
rộng .
d. Port 3 :
Port 3 là một port công dụng kép trên các chân 10 –
17 . Các chân của port này có nhiều chức năng, các công
dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của
AT89C51 như ở bảng sau :
Bit
Tên
Chức năng chuyển đổi
P3.0

RXD
Dữ liệu nhận cho port nối
tiếp .
P3.1
TXD
Dữ liệu phát cho port nối
tiếp .
P3.2
INT0
Ngắt 0 bên ngoài .
P3.3
INT1
Ngắt 1 bên ngoài .
P3.4
T0
Ngõ vào của timer/counter
0.
P3.5
T1
Ngõ vào của timer/counter
1.
P3.6
WR
Xung ghi bộ nhớ dữ liệu
ngoài .
P3.7
RD
Xung đọc bộ nhớ dữ liệu
ngoài .
e. PSEN ( Program Store Enable ) :

AT89C51 có 4 tín hiệu điều khiển .
PSEN là tín hiệu ra trên chân 29 . Nó là tín hiệu điều
khiển để cho phép bộ nhớ chương trình mở rộng và thường
được nối đến chân OE (Output Enable ) của một EPROM để cho
phép đọc các byte của mã lệnh .
PESEN sẽ ở mức thấp trong thời gian lấy lệnh . Các
mã nhò phân của chương trình được đọc từ EPROM qua bus dữ
liệu và được chốt vào thanh ghi lệnh của AT89C51 để giải

SV : TRIỆU QUANG MINH

Trang 9


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

mã lệnh . Khi thi hành chương trình trong ROM nội ( AT89C51 )
PSENsẽ ở mức thụ động ( mức cao ).
f. ALE (Adress Latch Enable ) :
Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bò
làm việc với các vi xử lý 8085, 8086, 8088 . AT89C51 dùng ALE
một cách tương tự cho việc giải kênh các bus đòa chỉ và dữ
liệu . Khi port 0 được dùng trong chế độ chuyển đổi của nó :
vừa là bus dữ liệu vừa là byte thấp của bus đòa chỉ, ALE là
tín hiệu để chốt đòa chỉ vào một thanh ghi bên ngoài trong
nữa đầu chu lỳ bộ nhớ. Sau đó các đường port 0 dùng
đểxuất hoặc nhập dữ liệu trong nửa sau của chu kỳ bộ

nhớ .
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao
động trên chip và có thể được dùng làm nguồn xung nhòp
cho các phần khác của hệ thống . Nếu xung nhòp trên
AT89C51 là 12 MHz thì ALE có tần số 2 MHz . Chỉ ngoại trừ khi
hình thành lệnh MOVX , một xung ALE sẽ bò mất . Chân này
cũng được làm ngõ vào cho xung lập trình cho EPROM trong
AT89C51 .
g. EA (External Access):
Tín hiệu vào EA trên chân 31 thường được mắc lên mức
cao (+5V )hoặc mức thấp (GND ). Nếu ở mức cao, AT89C51 thi
hành chương trình từ ROM nội trong khoảng đòa chỉ thấp ( 4K).
Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ
mở rộng . Khi dùng 8031, EA luôn được nối mức thấp vì
không có bộ nhớ chương trình trên chip . Nếu EA được nối
mức thấp bộ nhớ bên trong chương trình AT89C51 sẽ bò cấm
và chương trình thi hành từ EPROM mở rộng . Người ta còn
dùng EA làm chân cấp điện áp 21V khi lập trình cho EPROM
trong AT89C51 .
h. RST ( Reset ):
Ngõ vào RST trên chân 9 là ngõ reset của AT89C51 . Khi
tín hiệu này được đưa lên mức cao ( trong ít nhất 2 chu kỳ
máy ) , các thanh ghi bên trong AT89C51 được tải những giá trò
thích hợp để khởi động hệ thống .
i. Các ngõ vào bộ dao động trên chíp :
Như đã thấy trong các hình trên , AT89C51 có một bộ dao
động trên chip . Nó thường được nối với một thạch anh ở
giữa hai chân 18 và 19 . Các tụ giữ cũng cần thiết như đã
vẽ . Tần số thạch anh thông thường là 12 MHz .
j. Các chân nguồn :


SV : TRIỆU QUANG MINH

Trang 10


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

AT89C51 vận hành với nguồn đơn +5V. V cc được nối vào
chân 40 và Vss (GND) được nối vào chân 20 .
3. Tổ chức bộ nhớ :
AT89C51 có bộ nhớ theo cấu trúc Harvard : có những
vùng bộ nhớ riêng biệt cho chương trình và dữ liệu . Như đã
nói ở trên , cả chương trình và dữ liệu có thể ở bên trong (
AT89C51); dù vậy chúng có thể được mở rộng bằng các
thành phần ngoài lên đến tối đa 64 Kbyte bộ nhớ chương
trình và 64 Kbyte bộ nhớ dữ liệu .
Bộ nhớ bên trong bao gồm ROM và RAM trên chip , RAM
trên chip bao gồm nhiều thành phần : phần lưu trữ đa dụng ,
phần lưu trữ đòa chỉ hoá từng bit , các bank thanh ghi và các
thanh ghi chức năng đặc biệt .

SV : TRIỆU QUANG MINH

Trang 11



Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

FFFF
Bộ nhớ
chương
trình
được
chọn
qua PSEN

FF

00

FFFF

0000

Bộ nhớ
dữ liệu
được
chọn
qua WR
và RD

0000


Bộ nhớ trên chip
Bộ nhớ mở rộng
Tóm tắt các vùng bộ nhớ của AT89C51
Hai đặc tính cần lưu ý là :
 Các thanh ghi và các port xuất nhập đã được xếp trong
bộ nhớ và có thể được truy xuất trực tiếp giống như
các đòa chỉ bộ nhớ khác .
 Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài
như trong các bộ vi xử lý khác .
 Chi tiết về bộ nhớ RAM trên chip :
Như ta thấy trên hình sau, RAM bên trong AT89C51 được phân
chia giữa các bank thanh ghi (00H – 1FH ), RAM đòa chỉ hoá từng
bit (20H – 2FH ), RAM đa dụng (30H – 7FH) và các thanh ghi chức
năng đặc biệt (80H – FFH) .
a. RAM đa dụng :
Mặc dù trên hình cho thấy 80 byte RAM đa dụng chiếm các
đòa chỉ từ 30H – 7FH, 32 byte dưới cùng từ 00H đến 1FH cũng
có thể được dùng với mục đích tương tự (mặc dù các đòa
chỉ này đã có mục đích khác ).

SV : TRIỆU QUANG MINH

Trang 12


Luận văn tốt nghiệp
LĂNG
7F RAM đa dụng

GVHD : LƯƠNG VĂN


FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
E0

ACC

D0

PSW

B8

IP

7E 7D 7C 7B 7A 79 78
76 75 74 73 72 71 70
6E 6D 6C 6B 6A 69 68

B0

P3

66 65 64 63 62 61 60

A8

IE

2B 5F 5E 5D 5C 5B 5A 59 58

2A 57 56 55 54 53 52 51 50

A0

P2

2F 7F
2E 77
2 6F
D
2C 67

29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40
27
26
25
24
23

3F
37
2F
27
1F

3E
36
2E
26

1E

3D
35
2D
25
1D

3C
34
2C
24
1C

3B
33
2B
23
1B

3A
32
2A
22
1A

39
31
29
21

19

38
30
28
20
18

22 17 16 15 14 13 12 11 10
21 0F 0E 0D 0C 0B 0A 09 08
20 07 06 05 04 03 02 01 00
1F Bank 3
18
17 Bank2
10
0F Bank1
08
07 Bank

thanh

ghi

SV : TRIỆU QUANG MINH

99 không được đòa chỉ hoá SBUF
bit
98
SCON
90

8D không
bit
8C không
bit
8B không
bit
8A không
bit
89 không
bit
88
87 không
bit

P1
được đòa chỉ hoá TH1
được đòa chỉ hoá TH0
được đòa chỉ hoá TL1
được đòa chỉ hoá TL0
được đòa chỉ hoá TMOD
TCON
được đòa chỉ hoá PCON

83 không được đòa chỉ hoá DPH
bit
82 không được đòa chỉ hoá DPL
bit
81 không được đòa chỉ hoá SP

Trang 13



Luận văn tốt nghiệp
LĂNG
(mặc đònh cho R0-R7)
00
RAM

GVHD : LƯƠNG VĂN
bit
80 87 86 85 84 83 82 81 80 P0
CÁC THANH GHI CHỨC NĂNG ĐẶC
BIỆT

Mọi đòa chỉ trong vùng RAM đa dụng dều có thể được truy
xuất tự do dùng cách đánh đòa chỉ trực tiếp hoặc gián
tiếp . Ví dụ , để đọc nội dung ở đòa chỉ 5FH của RAM nội vào
thanh tích luỹ , lệnh sau sẽ được dùng :
MOV
A, 5FH
; Đònh dòa chỉ trực tiếp
RAM bên trong cũng có thể được truy xuất dùng cách
đánh đòa chỉ gián tiếp qua R0 hay R1 . Ví dụ , hai lệnh sau thi
hành cùng
nhiệm vụ như lệnh đơn ở trên :
MOV
R0
,
#5FH
MOV

A
,
@R0
Lệnh đầu dùng đòa chỉ tức thời để di chuyển giá trò 5FH
vào thanh ghi R0 , và lệnh thứ hai dùng đòa chỉ trực tiếp để
di chuyển dữ liệu “ được trỏ bởi R0 “ vào thanh ghi tích luỹ .
b. RAM đòa chỉ hoá từng bit :
AT89C51 chứa 210 bit được đòa chỉ hoá , trong đó 128 bit là
ở các đòa chỉ byte 20H đến 2FH , và phần còn lại là trong
các thanh ghi chức năng ghi đặc biệt .
Ý tưởng truy xuất từng bit riêng lẻ bằng các phần mềm
là một đặc tính tiện lợi của vi điều khiển nói chung. Các bit
có thể được đặt, xoá, AND, OR, … với một lệnh đơn. Đa số
các vi xử lý đòi hỏi một chuỗi lệnh đọc–sửa–ghi để đạt
được hiệu quả tương tự . Hơn nữa, các port I/O cũng được đòa
chỉ hoá từng bit làm đơn giả phần mềm xuất nhập từng
bit .
Có 128 bit được đòa chỉ hoá đa dụng ở các byte 20H đến
2FH . Các đòa chỉ này được truy xuất như các byte hoặc như
các bit phụ thuộc vào lệnh được dùng . Ví dụ , để đặt bit
67H , ta dùng lệnh sau :
SETB 67H
Chú ý rằng “đòa chỉ bit 67H “ là bit có trọng số lớn nhất
(MSB) ở “ đòa chỉ byte 2CH “ . Lệnh trên sẽ không tác động
đến các bit khác ở đòa chỉ này . Các vi xử lý sẽ phải thi
hành nhiệm vụ tương tự như sau :
MOV
A, 2CH
; đọc cả byte
ORL

A, #10000000
; set MSB
MOV
2CH, A
; ghi lại cả byte
c. Các bank thanh ghi :
SV : TRIỆU QUANG MINH

Trang 14


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

32 byte thấp nhất của bộ nhớ nội là dành cho các bank
thanh ghi . Bộ lệnh của AT89C51 hỗ trợ 8 thanh ghi (R0 đến R7)
và theo mặc đònh (sau khi reset hệ thống) các thanh ghi này ở
các đòa chỉ 00H – 07H . Lệnh sau đây sẽ đọc nội dung ở cacù
đòa chỉ 05H vào thanh ghi tích luỹ :
MOV
A, R5
Đây là lệnh 1 byte dùng đòa chỉ thanh ghi . Tất nhiên thao tác
tương tự có thể được thi hành bằng lệnh 2 byte dùng đòa chỉ
trực tiếp nằm trong byte thứ hai :
MOV
A, 05H
Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn
và nhanh hơn các lệnh tương ứng nhưng dùng đòa chỉ trực

tiếp.
Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay
đổi các bit chọn bank thanh ghi trong từ trạng thái chương trình
(PSW) . Giả sử rằng bank thanh ghi 3 được tích cực , lệnh sau sẽ
ghi nội dung của thanh ghi tích luỹ vào đòa chỉ 18H :
MOV
R0, A
Ý tưởng dùng các “bank thanh ghi “ cho phép “ chuyển
hướng” chương trình nhanh và hiệu quả ( từng phần riêng rẽ
của phần mềm sẽ có một bộ thanh ghi riêng không phụ
thuộc vào các phần khác) .
4. Các thanh ghi chức năng đặc biệt :
Các thanh ghi nội của AT89C51 được truy xuất ngầm đònh
bởi một bộ lệnh . Ví dụ lệnh “INC A” sẽ tăng nội dung của
thanh tích luỹ A lên 1 .Tác động này được ngầm đònh trong
mã lệnh .
Các thanh ghi trong AT89C51 được đònh dạng như một phần
của RAM trên chip . Vì vậy mỗi thanh ghi sẽ có một đòa chỉ
(ngoại trừ thanh ghi điểm chương trình và thanh ghi lệnh vì các
thanh ghi này hiếm khi bò tác động trực tiếp , nên không có
lợi lộc gì khi đặt chúng vào trong RAM trên chip) . Đó là lý do
để AT89C51 có nhiều thanh ghi như vậy . Cũng như R0 đến R7 ,
có 21 thanh ghi chức năng đặc biệt (SFR : Special Function
Register) ở vùng trên của RAM nội , từ đòa chỉ 80H đến FFH .
Hầu hết 128 đòa chỉ từ 80H đến FFH không được đònh nghóa .
Chỉ có 21 đòa chỉ SFR là được đònh nghóa .
Ngoại trừ tích luỹ (A) có thể được truy xuất ngầm như đã
nói, đa số các SFR được truy xuất dùng đòa chỉ trực tiếp.
Chú ý rằng một vài SFR có thể được đòa chỉ hoá bằng bit


SV : TRIỆU QUANG MINH

Trang 15


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

hoặc byte . Người thiết kế phải thận trọng khi truy xuất bit và
byte . Ví dụ lệnh sau
SETB
0E0H
sẽ set bit 0 trong thanh ghi tích luỹ , các bit khác không thay
đổi . Ta thấy rằng E0H đồng thời là đòa chỉ byte của cả
thanh ghi tích luỹ và là đòa chỉ bit của bit có trọng số nhỏ
nhất trong thanh ghi tích luỹ . Vì lệnh SETB chỉ tác động trên
bit , nên chỉ có đòa chỉ bit là có hiệu quả .
a. Thanh ghi B :
Thanh ghi B ở đòa chỉ F0H được dùng cùng với
thanh ghi tích luỹ A cho các phép toán nhân và chia . Lệnh
MUL AB sẽ nhân các giá trò không dấu 8 bit trong A và B rồi
trả về kết quả 16 bit trong A (byte thấp ) và B (byte cao ).
Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong
A và phần dư trong B. Thanh ghi B cũng có thể được xem như
thanh ghi đệm đa dụng . Nó được đòa chỉ hoá từng bit bằng
các đòa chỉ bit F0H đến F7H
b. Từø trạng thái chương trình :
Từ trạng thái chương trình (PSW : Program Status Word) ở đòa

chỉ D0H chứa các bit trạng thái như bảng tóm tắt sau :

Bit
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3

Ký hiệu
CY
AC
F0
RS1
RS0

– 07H

Đòa chỉ
Ý nghóa
D7H
Cờ nhớ
D6H
Cờ nhớ phụ
D5H
Cờ 0
D4H
Bit 1 chọn bank thanh ghi
D3H
Bit 0 chọn bank thanh ghi

00 = bank 0 : đòa chỉ 00H
01 = bank 1 : đòa chỉ 08H –

0FH

10 = bank 2 : đòa chỉ 10H –

17H

11 = bank 3 : đòa chỉ 18H –

1FH
PSW.2
PSW.1
PSW.0

OV
_
P

D2H
D1H
D0H

Cờ tràn
Dự trữ
Cờ parity chẵn

 Cờ nhớ :


SV : TRIỆU QUANG MINH

Trang 16


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

Cờ nhớ (CY) có công dụng kép .Thông thường nó được
dùng cho các lệnh toán học : nó sẽ được set nếu có một
số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi
phép trừ . Ví dụ , nếu thanh ghi tích luỹ chứa FFH , thì lệnh sau :
ADD
A,
#1
sẽ trả về thanh ghi tích luỹ kết quả 00H và set cờ nhớ trong
PSW .
Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các
lệnh luận lý thi hành trên bit . Ví dụ , lệnh sau sẽ AND bit 25H
với cờ nhớ và đặt kết quả trở vào cờ nhớ
:
ANL
C, 25H
 Cờ nhớ phụ :
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết
quả của 4 bit thấp trong khoảng 0AH đến 0FH . Nếu các giá
trò được cộng là số BCD , thì sau lệnh cộng cần có DA A(hiệu
chỉnh thập phân thanh ghi tích luỹ ) để mang kết quả lớn hơn

9 trở về tầm từ 0 -> 9 .
 Cờ 0 :
Cờ 0 (F0) là một bit cờ đa dụng dành cho các ứng dụng
của người dùng .
 Các bit chọn bank thanh ghi :
Các bit chọn bank thanh ghi (RS0 và RS1) xác đònh bank
thanh ghi được tích cực . Chúng được được xoá sau khi reset hệ
thống và được thay đổi bằng phần mềm nếu cần . Ví dụ , ba
lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của
thanh ghi R7 (đòa chỉ byte 1FH ) đến thanh ghi tích luỹ :
SETB
RS1
SETB
RS0
MOV
A,
R7
Khi chương trình được hợp dòch , các đòa chỉ bit đúng được thay
thế cho các ký hiệu “RS1” và “RS0” . Vậy , lệnh SETB
RS1
sẽ giống như lệnh SETB
0D4H .
 Cờ tràn :
Cờ tràn (OV)được set sau một lệnh cộng hoặc trừ nếu
có một phép toán bò tràn . Khi các số có dấu được cộng
hoặc trừ với nhau , phần mềm có thể kiểm tra bit này để
xác đònh xem kết quả có nằm trong tầm xác đònh không .
Khi các số không dấu được cộng , bit OV có thể được bỏ
qua . Các kết quả lớn hơn +127 hoặc nhở hơn –128 sẽ set bit
OV . Ví dụ , phép cộng sau bò tràn và bit OV được set :

+ 0F
+ 15
Hex
Thập phân
7F
127
SV : TRIỆU QUANG MINH

Trang 17


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

8E
142
Kết quả là một số có dấu 8EH được xen như –116 , không
phải là kết quả đúng (142) , vì vậy , bit OV được set .
c. Con trỏ ngăn xếp :
Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở đòa chỉ 81
H . Nó chứa đòa chỉ của byte dữ liệu hiện hành trên đỉnh
của ngăn xếp . Các lệnh trên ngăn xếp bao gồm các thao
tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn
xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước
khi ghi dữ liệu và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc
dữ liệu và giảm SP. Ngăn xếp của AT89C51 được giữ trong
RAM nội và được giới hạn các đòa chỉ có thể truy xuất bằng
đòa chỉ gián tiếp. Chúng là 128 byte đầu của AT89C51 .

Để khởi động lại SP với ngăn xếp bắt đầu tại 60H , các
lệnh sau đây được dùng :
MOV
SP , # 5FH
Trên AT89C51 ngăn xếp bò giới hạn 32 byte vì đòa chỉ cao
nhất của RAM trên chip là 7FH . Sở dó dùng giá trò 5FH vì SP
sẽ tăng lên 60H trước khi cất byte dữ liệu đầu tiên .
Người thiết kế có thể chọn không phải khởi động lại
con trỏ ngăn xếp mà để nó lấy giá trò mặc đònh khi reset
hệ thống . Giá trò mặc đònh đó là 07H và kết quả là ngăn
đầu tiên để cất dữ liệu có đòa chỉ là 08H . Nếu phần
mềm ứng dụng không khởi động lại SP , bank thanh ghi 1 ( có
thể cả 2 và 3 ) sẽ không dùng được vì vùng RAM này đã
được dùng làm ngăn xếp .
Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH
và POP đểû lưu trữ tạm thời và lấy lại dữ liệu, hoặc được
truy xuất ngầm bằng các lệnh gọi chương trình con (ACALL và
LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại bộ
đếm chương trình .
d.Con trỏ dữ liệu :
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ
ngoài là một thanh ghi 16 bit ở đòa chỉ 82H (DPL : byte thấp )
và 83H (DPH : byte cao) . Ba lệnh sau sẽ ghi 55H vào RAM ngoài
đòa chỉ 1000H :
MOV
A ,# 55H
MOV
DPTR, #1000H
MOVX
@DPTR, A


SV : TRIỆU QUANG MINH

Trang 18


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

Lệnh đầu tiên dùng đòa chỉ tức thời để tải dữ liệu 55H
vào thanh ghi tích luỹ . Lệnh thứ hai cũng dùng đòa chỉ tức
thời , lần này để tải dữ liệu 16 bit vào con trỏ dũ liệu .
Lệnh thứ ba dùng đòa chỉ gián tiếp để di chuyển dữõ liệu
trong A (55H) đến RAM ngoài ở đòa chỉ được chứa trong DPTR
(1000H) .
e. Các thanh ghi port xuất nhập :
Các Port của 8031 gồm port 0 ở đòa chỉ 80H, port 1 ở đòa
chỉ 90H, port 2 ở đòa chỉ A0H và port 3 ở đòa chỉ B0H. Tất cả
các port này có thể truy xuất từng bit nên rất thuận tiện
trong chức năng giao tiếp.
f. Các thanh ghi Timer:
AT89C51 có chứa hai bộ đònh thời/ đếm 16 bit được dùng
cho việc đònh thời hoặc đếm sự kiện. Timer 0 ở đòa chỉ 8AH
(TLO: byte thấp) và 8CH (THO: byte cao). Timer 1 ở đòachỉ 8BH
(TL1: byte thấp)và 8DH (TH1: byte cao) việc khởi động Timer
được set bởi Timer mode (TMOD) ở đòa chỉ 89 và thanh ghi điều
khiển Timer (TCON) ở đòa chỉ 88H. Chỉ có TCON được đòa chỉ
hóa từng bit.

g. Các thanh ghi port nối tiếp:
AT89C51 chứa 1 port nối tiếp dùng cho việc trao đổi thông
tin với các thiết bò nối tiếp như máy tính modem hoặc giao
tiếp với các IC khác (các bộ chuyển đổi A\D, các thanh ghi
dòch…). Một thanh ghi gọi là bộ đếm dữ liệu nối tiếp (SBUF)
ở đòa chỉ 99H sẽ giữ cả hai dữ liệu phát và dữ liệu nhận.
Khi truyền dữ liệu thì ghi lên SUBF, khi nhận dữ liệu thì đọc
SUBF. Các mode vận hành khác nhau được lập trình qua thanh
ghi điều khiển port nối tiếp (SCON: được đòa chỉ hóa từng bit
ở đòa chỉ 98H).
h. Các thanh ghi ngắt:
AT89C51 có cấu trúc 5 nguồn ngắt và 2 mức ưu tiên.
Các ngắt bò cấm sau khi Reset hệ thống và sẽ được cho
phép bằng việc thanh ghi cho phép ngắt (IE) ở đòa chỉ A8H.
Cả hai thanh ghi được đòa chỉ hóa từng bit.
i. Thanh ghi điều khiển công suất:

SV : TRIỆU QUANG MINH

Trang 19


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

Thanh ghi điều khiển công suất (PCON) ở đòa chỉ 97H
chứa nhiều bit điều khiển chúng được tóm tắt ở bảng sau:
Bit

7


hiệu
SMOD

6
5
4
3
2
1

GF1
GF0
PD

0

IDL

Ý nghóa
Bit gấp đôi tốc độ baud, nếu được set
thì tốc độ baud sẽ tăng gấp đôi trong
các mode 1,2 và 3 của port nối tiếp
Không đònhù nghóa
Không đònhù nghóa
Không đònhù nghóa
Bit cờ đa dụng 1
Bit cờ đa dụng 2

Giảm công suất, được set hoạt mode
giảm công suất, chỉ thoát khi reset.
Mode chờ, set để kích hoạt mode chờ,
chỉ thoát khi có ngắt hoặc reset hệ
thống.

5. Bộ nhớ ngoài :
AT89C51 có khả năng mở rộng bộ nhớ lên đến 64 kB
bộ nhớ chương trình và 64 KB bộ nhớù dữ liệu bên ngoài.
Do đó có thể dùng ROM và RAM nếu cần. Khi dùng bộ nhớ
ngoài port 0 cũng là một port I/O thuần tuý. Nó được kết
hợp với Bus đòa chỉ (A0 - A7) và Bus dữ liệu (D0 - D7) với tín
hiệu ALE để chốt byte thấp của Bus đòa chỉ khi bắt đầu mỗi
chu kỳ nhớ. Port 2 được cho phép byte cao của đòa chỉ. Trong
nữa đầu của mỗi chu kỳ bộ nhớ , byte thấp của đòa chỉ
được cấp trong port 0 và được chốt bằng xung ALE. Một IC
chốt 74HC373 (hoặc tương đương) sẽ giữ byte đòa chỉ thấp
trong phần còn lại của chu kỳ bộ nhớ. Trong nữa sau của chu
kỳ bộ nhớ port 0 được dùng như bus dữ liệu và được đọc
hoặc ghi tuỳ theo lệnh.
a. Truy xuất bộ nhớ chương trình ngoài:
Bộ nhớ chương trình bên ngoài là một ICù ROM được cho
phép bởi tín hiệu PSEN. Hình vẽ sau đây sẽ mô tả cách kết
nối 1ù EPROM với AT89C51:

D7-D0

Port 0
EA\


SV : TRIỆU QUANG
MINH
ALE
Port 2
PSEN\

D

Q

74373
E

A7-A0
EPROM
A15-A8
OE\

Trang 20


Luận văn tốt nghiệp
LĂNG

S
1
P P
1 2

OS

C

S
2
P P
1 2

GVHD : LƯƠNG VĂN

Một chu kỳ
máy

S
3
P P
1 2

S
4
P P
1 2

S
5
P P
1 2

S
6
P P

1 2

S
1
P P
1 2

P
1

AL
E
PSEN\

PORT2
PORT
1

ngoài

PCH (byte của
PC)

PC


PC
Byte
PC
Giản

đồ
thời
gian
đọc
bộ
nhớ
lệnh
L
2chương trình
L

Một chu kỳ máy của AT89C51 có 12 chu kỳ xung nhòp.
Nếu bộ dao động trên chip được lái bằng thạch anh 12 Mhz thì
một chu kỳ máy kéo dài 1µs. Trong một chu kỳ máy sẽ có 2
xung ALE và 2 byte được đọc từ bộ nhớ chương trình (nếu lệnh
hiện hành là lệnh 2 byte thì byte thứ hai được loại bỏ). Giản
đồ thời gian của một lần lấy lệnh được vẽ ở hình sau:
b. Truy xuất bộ nhớ dữ liệu ngoài:
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho
phép ghi /đọc bằng các tín hiệu điều khiển WR\ và RD\.
AT89C51 có một lệnh duy nhất truy xuất dữ liệu của bộ
nhớ dữ liệu ngoài là MOVX dùng con trỏ dữ liệu 16 bit
(DPTR) hoặc R0 và R1 xem như thanh ghi đòa chỉ.

SV : TRIỆU QUANG MINH

Trang 21


Luận văn tốt nghiệp

LĂNG

GVHD : LƯƠNG VĂN

Port 0

8051

EA

D0-D7
74HC373

O
ALE

D

A0-A7

G

Port 2

A8-A15

RD

OE
WE


WR

RAM

Giao tiếp giữa AT89C51 và RAM
Kết nối bus đòa chỉ và bus dữ liệu giữa RAM và AT89C51
cũng giống như EPROM và do đó cũng có thể lên đến 64
Kbyte bộ nhớ RAM. Ngoài ra chân RD của AT89C51 được nối
với chân cho phép xuất (OE) của RAM và chân WR được nối
với chân ghi (WR) củaRAM.
Giản đồ thời gian cho lệnh đọc bộ nhớ dữ liệu ngoài
được vẽ ở hình sau đối với lệnh MOVX A,@DPTR:

SV : TRIỆU QUANG MINH

Trang 22


Luận văn tốt nghiệp
LĂNG

GVHD : LƯƠNG VĂN

Một chu kỳ
máy

S1
S4


S2
S5

S3
S6

Một chu kỳ
máy

S4

S5

S6

S1

S2

S3

ALE

PSEN

RD
Port 2

PC
H


DPH (Byte cao của con
trỏ dữ liệu)

Port 1
PC
L


lệnh

GiảnDPđồ thời gianDữ
của
liệulệnh MOVX
L

nhập

Giản đồ thời gian cho lệnh ghi (MOVX @DPTR,A) cũng tương
tự chỉ khác đường WR sẽ thay vào đường RD và dữ liệu
được xuất ra trên port 0 (RD vẫn giữ mức cao).
c. Giải mã đòa chỉ:
Nếu nhiều EPROM và/hoặc nhiều RAM được giao tiếp với
AT89C51 thì cần có mạch giải mã đòa chỉ. Mạch giải mã
cũng tương tự như các hệ vi xử lý khác.Ví dụ , nếu dùng
nhiều EPROM và RAM 8Kbyte thì bus đòa chỉ cần phải được giải
mã để xác đònh IC nhớ nào được chọn.
Thường dùng IC giải mã 74HC138 với các ngõ ra được
nối tới các ngõ vào chọn chip (CS) trên các IC nhớ .


SV : TRIỆU QUANG MINH

Trang 23


Luận văn tốt nghiệp
LĂNG
d.
ngoài:

GVHD : LƯƠNG VĂN

Xếp chồng các vùng bộ nhớ và dữ liệu bên

Vì bộ nhớ chương trình là ROM nên nảy sinh một vấn đề
bất tiện khi phát triển phần mềm cho AT89C51 là tổ chức
bộ nhớ như thế nào để có thể sửa đổi chương trình và có
thể ghi trở lại khi nó được chứa trong bộ nhớ ROM. Cách giải
quyết là xếp chồng các vùng nhớ chương trình và dữ liệu.
Một bộ nhớ RAM có thể chứa cả chương trình và dữ liệu
bằng cách nối đường OE của RAM với một cổng AND có hai
ngõ vào PSEN\ và RD\.
Sơ đồ mạch như hình sau cho phép bộ nhớ RAM có hai
chức năng vừa là bộ nhớ chương trình vừa là bộ nhớ dữ
liệu:
WR\

WR\

RAM

RD\

OE\

PSEN\

Vậy một chương trình có thể được tải vào RAM bằng
cách xem nó như một bộ nhớ dữ liệu và thi hành bằng
cách xem nó như một bộ nhớ chương trình.
6. Ngõ vào tín hiệu RESET:
AT89C51 có ngõ vào Reset RST tác động ở mức cao trong
khoảng thời gian hai chu kỳ xung máy, sau đó xuống mức
thấp để AT89C51 bắt đầu làm việc , RST có thể kích bằng
tay bằng một phím thường hở, sơ đồ mạch Reset như sau:
+5v
100kΩ

10µf
10kΩ

SV : TRIỆU QUANG MINH

Reset

Trang 24


Luận văn tốt nghiệp
LĂNG


GVHD : LƯƠNG VĂN

Trạng thái của tất cả thanh ghi trong AT89C51 sau khi Reset
hệ thống được tóm tắt như sau:

SV : TRIỆU QUANG MINH

Trang 25


×