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

bai_tap_lon_nguyen_manh_ha

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 (854.39 KB, 42 trang )

§å ¸n m«n: Vi xö lý vµ §o lêng Sinh viªn: nguyÔn m¹nh hµ
BỘ CÔNG NGHIỆP
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỰ ĐỘNG HOÁ
---------***---------
BÀI TẬP LỚN
Môn Vi xử lý và đo lường
Giáo Viên Hướng Dẫn :
Nhóm Sinh Viên thực hiện : Nguyễn Mạnh Hà

...............................................................
Lớp : LT CĐ ĐH Đ3K2
Hà Nội, 2009
1
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
Đồ án môn: Vi Xử Lý và Đo Lờng.
Yêu cầu của đề bài
1. Phần cứng:
+ Bộ Vi điều khiển 8051.
+ Bộ nhớ chơng trình Rom 8k byte từ địa chỉ 0000H
+ Bộ nhớ dữ liệu Ram 4k byte về địa chỉ tùy chọn.
+ Cổng vào ra tơng tự gồm n kênh nhận tín hiệu nhiệt độ từ 0~5V, tơng ứng trong tr-
ờng hợp m từ các cổng vào ra và các mạch điều khiển.
+ Thiết bị đo nhiệt độ tùy chọn.
2. Phần mềm:
+ Tín hiệu cho phép chạy và dừng chơng trình ( tín hiệu dừng khẩn).
+ Đọc tín hiệu từ n kênh đo, lu trữ trong vùng Ram.
+ Sau mỗi lần đọc đánh giá, giá trị trung bình của nhiệt độ và gửi kết quả ra
cổng hiển thị Led.
+ So sánh nhiệt độ trung bình với từng kênh, nếu cao hơn hoặc thấp hơn gửi kết
quả báo ra từng kênh. (giá trị cho phép này đặt tại ô nhớ của Ram).


+ Chơng trình dừng lại báo động bằng còi nếu xảy ra các điều kiện sau:
- Giá trị trung bình hoặc giá trị min hoặc max tơng ứng cho trớc. Các giá trị min
hoặc max này đặt trong hai ô nhớ của Ram. Có i kênh đo vợt quá hoặc nhỏ hơn
giá trị giới hạn cho phép so với giá trị trung bình.
- n = số d ( phép chia STT:3) +5.
- m= số d ( phép chia STT:4)
- 0 từ 0~200 C
- 1 từ 0~300 C
- 2 từ 0~400 C
- 3 từ 0~500 C
- i= phần nguyên của phép chia n:2
Yêu cầu viết 30~40 trang.
**************************************************************************
Phần bài làm
1) Xử lý số liệu:
Sinh viên: nguyễn mạnh hà có STT=22.
Số kênh đo là n = số d(14/3)+5= 6 kênh.
Giải đo nhiệt độ là m = số d(14/4) = 2. Suy ra giải đo là 0~400 C
Số kênh vợt quá hoặc nhỏ hơn giá trị giá trị cho phép so với giá trị trung bình.
i = 6/2 = 3 kênh.
2) Tính toán và chọn thiết bị.
+ EEPROM 28C64 8k byte
Bộ nhớ EEPROM 8K 28C64
Đây là bộ nhớ không bay hơi có thể đọc và ghi đ ợc bằng ch ơng trình nh bộ
RAM mà không cần sử dụng những mạch nạp chuyên dụng, nh ng có khả
năng bảo vệ
dữ liệu khi mất nguồn.
- A0 A12 : là 12 bit dùng để xác định địa chỉ của các vùng nhớ trong
EEPROM.
2

Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
- /OE : Output Enable, cho phép đọc dữ liệu từ EEPROM ra Data Bus.
- /WR : Write Enable, cho phép ghi dữ liệu vào EEPROM.
- /CE : Dùng để chọn chip.
- D0 D7 : l_ các chân nối vào Data Bus của hệ thống.
Sơ đồ chân của 28C64.
U 2 5
2 8 C 6 4
1 0
9
8
7
6
5
4
3
2 5
2 4
2 1
2 3
2
1 1
1 2
1 3
1 5
1 6
1 7
1 8
1 9
2 0

2 2
2 7
A 0
A 1
A 2
A 3
A 4
A 5
A 6
A 7
A 8
A 9
A 1 0
A 1 1
A 1 2
D 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
C E
O E
W E
+ RAM 6264 8k byte.
Vi mạch 6264 đ ợc dùng làm bộ nhớ dữ liệu ngoài cho các vi điều khiển.
- A0 A12 : là 13 bit dùng để xác định địa chỉ của các vùng nhớ trong RAM.
- /OE : Output Enable, cho phép đọc dữ liệu từ RAM ra Data Bus.

- /WE : Write Enable, cho phép ghi dữ liệu vào RAM.
- CS1, CS2 : Dùng để chọn chip.
- D0 D7 : là các chân nối vào Data Bus của hệ thống.
Sơ đồ chân của 6264:
U 2 6
6 2 6 4
1 0
9
8
7
6
5
4
3
2 5
2 4
2 1
2 3
2
1 1
1 2
1 3
1 5
1 6
1 7
1 8
1 9
2 2
2 7
2 0

2 6
A 0
A 1
A 2
A 3
A 4
A 5
A 6
A 7
A 8
A 9
A 1 0
A 1 1
A 1 2
D 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
O E
W E
C S 1
C S 2
+ Chip 8051 intel.
II, CC BC TIN HNH GII QUYT BI TON:
1, S khi bi toỏn:
3

Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
Ghi chỳ:
-Sensor1: Sensor nhit
S dung Cảm biến nhiệt độ ta chọn loại PT100, vì giải đo nhiệt độ lớn nên ta không thể
dùng cảm biến nhiệt độ loại LM35, LM34, LM335, u ra ca cm bin l tớn hiu analog c
a vo b chuyn i ADC0809 chuyn tớn hiu v digital ri a vo IC 8051 s lớ kt qu o
-Chun hoỏ : B chun hoỏ o lng
Tu vo tng tớn hiu v yờu cu bi toỏn m ta la chn mch chun hoỏ sao cho phự hp
-ADC: B chuyn i t tng t sang s
-IC 8051: CPU ca mch
-LED: B LED 7 thanh
2, La chn thit b :
-Tỡm hiu v la chn thit b sao cho phự hp vi cụng ngh bi toỏn.
-V s cu to v thuyt minh nguyờn lớ hot ng ca thit b.
-Nờu ra u-nhc im ca tng thit b khi s dng vo bi toỏn.
-xỏc nh tớn hiu u vo-ra ca thit b.
3, Gii quyt bi toỏn:
-Xỏc nh chõn kt ni v tin hnh ghộp ni thit b da trờn s khi ca bi toỏn.
-Tin hnh lp trỡnh cho IC 8051 o nhit . hin th LED
-V s d nguyờn lý thit b o nhit .
III, KT LUN:
Sensor
LM335
Chun
hoỏ
ADC
0808
IC
8051
LED

4
§å ¸n m«n: Vi xư lý vµ §o lêng Sinh viªn: ngun m¹nh hµ
-Ý nghĩa khi làm bài tâp lớn mơn vi điều khiển.
-Nêu ra ý kiến đóng góp để cải tiến cơng nghệ của bài tốn.
PhÇn i. ĐO NHIỆT ĐỘ
I. Hệ Thống Đo Lường
1. Giới thiệu
Để thực hiện phép đo của một đại lượng nào đó thì tuỳ thuộc vào đặc tính của
đại lượng cần đo,điều kiện đo,cũng như độ chính xác theo yêu cầu của một phép đo mà
ta có thể thực hiện đo bằng nhiều cách khác nhau trên cơ sỡ của các hệ thống đo lường
khác nhau.
Sơ đồ khối của một hệ thống đo lường tổng quát
_ Khối chuyển đổi: làm nhiệm vụ nhận trực tiếp các đại lượng vật lý đặc trưng cho
đối tượng cần đo biến đổi các đại lượng thành các đại lượng vật lý thống nhất(dòng điện
hay điện áp) để thuận lợi cho việc tính toán.
_ Mạch đo: có nhiệm vụ tính toán biến đổi tín hiệu nhận được từ bộ chuyển đổi
sao cho phù hợp với yêu cầu thể hiện kết quả đo của bộ chỉ thò.
_ Khối chỉ thò:làm nhiệm vụ biến đổi tín hiệu điện nhận được từ mạch đo để
thể hiện kết quả đo.
2. Hệ thống đo lường số
Hệ thống đo lường số được nhóm áp dụng để thực hiện luận văn nầy vì có các
ưu điểm:các tín hiệu tương tự qua biến đổi thành các tín hiệu số có các xung rỏ ràng ở
trạng thái 0,1 sẽ giới hạn được nhiều mức tín hiệu gây sai số .Mặt khác ,hệ thống này
tương thích với dữ liệu của máy tính,qua giao tiếp với máy tính ứng dụng rộng rãi trong
kỹ thuật.
5
Chuyển đổi
Mạch đo
Chỉ thò
§å ¸n m«n: Vi xư lý vµ §o lêng Sinh viªn: ngun m¹nh hµ

a. Sơ đồ khối

Hình 5.1 Sơ đồ khối của hệ thống đo lường số
b. Nguyên lý hoạt động
Đối tượng cần đo là đại lượng vật lý,dựa vào các đặc tính của đối tượng cần đo
mà ta chọn một loại cảm biến phù hợp để biến đổi thông số đại lượng vật lý cần đo
thành đại lượng điện ,đưa vào mạch chế biến tín hiệu(gồm:bộ cảm biến,hệ thống
khuếch đại,xử lý tín hiệu).
Bộ chuyển đổi tín hiệu sang số ADC(Analog Digital Converter) làm nhiệm vụ
chuyển đổi tín hiệu tương tự sang tín hiệu số và kết nối với vi xử lý.
Bộ vi xử lý có nhiệm vụ thực hiện những phép tính và xuất ra những lệnh trên cơ
sở trình tự những lệnh chấp hành đã thực hiện trước đó.
Bộ dồn kênh tương tự (multiplexers) và bộ chuyển ADC được dùng chung tất cả
các kênh . Dữ liệu nhập vào vi xử lý sẽ có tín hiệu chọn đúng kênh cần xử lý đê đưa
vào bộ chuyển đổi ADC và đọc đúng giá trò đặc trưng của nó qua tính toán để có kết quả
của đại lượng cần đo.
Cảm
biến
Chế
biến
tín
hiệu
Cảm
biến
Chế
biến
tín
hiệu
.
.

.
.
ADC
Vi
điều
Khiển
Hiển thị
Sử dụng
Chương
trình
đại
lượng
đại
lượng
Hình:Sơ đồ khối của hệ thống đo lường số
6
§å ¸n m«n: Vi xư lý vµ §o lêng Sinh viªn: ngun m¹nh hµ
II. Các Phươg Pháp Đo Nhiệt Độ
Đo nhiệt độ là một phương thức đo lường không điện,đo nhiệt độ được chia thành
nhiều dãi:
+ Đo nhiệt độ thấp
+ Đo nhiệt độ trung bình
+ Đo nhiệt độ cao.
Việc đo nhiệt độ được tiến hành nhờ các dụng cụ hổ trợ chuyên biệt như:
+ Cặp nhiệt điện
+ Nhiệt kế điện kế kim loại
+ Nhiệt điện trở kim loại
+ Nhiệt điện trở bán dẫn
+ Cảm biến thạch anh.
I . Khèi ®o nhiƯt ®é.

I.1. §Ỉc ®iĨm cđa PT100:
ë nhiƯt ®é 0 C th× PT100 cã ®iƯn trë lµ 100º Ω. §iƯn trë cđa PT100 tû lƯ thn víi nhiƯt ®é vµ
®ỵc tÝnh theo c«ng thøc sau:
R(t) = R
nom
(1+a.t+b.t
2
).
Trong ®ã:
R(t) lµ ®iƯn trë cđa PT100 ë nhiƯt ®é t C.º
R
nom
lµ ®iƯn trë cđa PT100 ë nhiƯt ®é 0 C.º
a, b lµ c¸c tham sè:
a = 3.90830*10
-3
.
b = -5.77500*10
-7
.
§å thÞ thĨ hiƯn ®iƯn trë cđa PT100 øng víi nhiƯt ®é tõ -100 C~500 C.º º
Tõ c«ng thøc trªn ta cã thĨ tÝnh ®ỵc ë nhiƯt ®é 400 C th× PT100 cã ®iƯn trë Rt=247.092º Ω
I.2. §å thÞ thĨ hiƯn ®iƯn trë cđa PT100 øng víi nhiƯt ®é tõ 0 C~400 C.º º
PHẦN II. GIỚI THIỆU VỀ ADC 0808
7
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
+ Thiết bị chuyển đổi tơng tự sang số, ta chọn loại ADC0808:
- Điện áp đầu vào (0->5V) VDC
- Có 8 kênh đầu vào IN0-> IN7
- Độ phân giải bit (có 8 bit đầu ra).

- Điện áp chuẩn U
ref
=5VDC
- Tần số xung nhịp, f
clk
=500KHz, cao nhất là 640KHz.
- Sai số lợng tử là 1LSB.
- IN0->IN7: là 8 kênh đầu vào.
- DB0->DB7: là 8 bit đầu ra.
- -Vref, +ref: là cấp điện áp chuẩn.
- Clock: là chân cấp xung nhịp cho ADC.
- ALE: là chân chốt địa chỉ kênh đợc chọn để biến đổi.
- Start: là chân ra lệnh cho ADC bắt đầu biến đổi.
- EOC (End Off Conversion): chân báo kết thúc quá trình chuyển đổi.
- Enable: là chân cho phép mở đệm đầu ra để đọc kết quả biến đổi.
U 5
A D C 0 8 0 8
7
1 0
1 1
1 21 3
1 6
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1

2
3
4
5
9
6
1 7
1 4
1 5
8
1 8
1 9
2 0
2 1
E O C
C L K
V C C
+ V R E FG N D
- V R E F
A L E
A D D C
A D D B
A D D A
I N 0
I N 1
I N 2
I N 3
I N 4
I N 5
I N 6

I N 7
O E
S T A R T
D B 0
D B 1
D B 2
D B 3
D B 4
D B 5
D B 6
D B 7
- Chọn kênh biến đổi ADC:
ADDC ADDB ADDA Kênh
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0

1
0
1
0
1
0
1
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
)()(
)(
).(256
+



=
refref
refIN
VV
VV
N
Trong đó Vin là điện áp ngõ vào.
Nếu chọn Vref(-) = 0 thì: N = 256.

)(
+
ref
in
V
V
Vref(+) = 5VDC.
1 LSB =
12
5
8

= 0,0196 V/byte.
Biểu đồ thời gian của ADC 0808.
8
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
*) Để 8051 có thể đọc đợc giá trị nhiệt độ từ PT100 thì ta phải làm một mạch điện chuẩn hoá tín
hiệu đầu vào thành tín hiệu điện áp rồi biến đổi sang tín hiệu số.
Nhiệt độ đo Điện trở PT100 (Rt) Đầu ra chuẩn hoá Đầu ra của ADC0808
0 C
100
0 VDC 00H = 0
400 C
247.092
4.902 VDC FAH = 250
X C Rt U VDC kenh
Ta lấy số tròn 250, tơng ứng ta phải chỉnh các biến trở của bộ chuẩn hoá sao cho thoả mãn bảng
thông số trên. Bộ chuẩn hoá ta dùng khuếch đại thuật toán loại LM324, mắc thành mạch khuếch đại
vi sai.
+ Trong mạch còn có các vi mạch: chốt địa chỉ 74HC373, giải mã địa chỉ 74HC139, led bẩy thanh

sử dụng loại Catốt chung .
*) Mch to xung clock cho ADC 0808:
9
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
3. Các sơ đồ mạch điện.
3.1 Sơ đồ mạch điện chuẩn hoá tín hiệu điện áp dùng khuếch đại vi sai:
-
+
U 3 A
L M 3 2 4
3
2
1
4 1 1
- 1 2 V
R 7
5 0 K
R 8 1 0 K
R 1 1
1 0 K
+ 1 2 V
R 4 0
1 0 k
R 9
1 0 K
R 6
5 0 K
R 5
2 K
R 1 0

1 0 K
- 1 2 V
R 1
1 K
- 1 2 V
R 3 7
1 0 k
R 3
9 0 0
-
+
U 2 A
L M 3 2 4
3
2
1
1 1 4
+ 1 2 V
+ 1 2 V
- 1 2 V
R 2
1 K
+ 1 2 V
I N 0 _ A D C
-
+
U 1 1 A
L M 3 2 4
3
2

1
4 1 1
-
+
U 1 A
L M 3 2 4
3
2
1
41 1
S E N S O R - 1
P T 1 0 0
1
2
+ 1 2 V
R 3 9
2 0 k
R 3 8
1 0 k
+ Đây là một mạch chuẩn hoá cho Sebsor-1 đầu ra nối với chân IN0_ADC của ADC0808
Với các sensor 2->7 tơng tự.
+ Sử dụng mạch khuêch đại vi sai với khuếch đại thuật toán LM324.
+ Điều chỉnh các biến trở để khi nhiệt độ tăng từ 0~400 C thì đầu ra tăng từ 0~4,902V đ a đến ADC
0808.
+ Hệ số khuếch đại tầng 1 là: K1=(1+R
8
/R
7
) = (1+R
9

/R
7
)=1,2 ; chọn R
7
và R
8
sao cho R
7
=R
8
ta chọn
R
8
=R
9
=10k.
+Tầng 2 là mạch trừ. Hệ số khuếch đại tầng 2 là: K2=R
40
/R
10
=1; chọn R
40
; R
11
; R
10
; R
37
với điều
kiện R

40
*R
11
=R
10
*R
37
; và ta chọn R
40
=R
11
=R
10
=R
37
=10k.
+ Tầng 3 là mạch khuếch đại đảo. Hệ số khuếch đại tầng cuối là: K3=-(R
6
+R
39
)/R
38
.
+ Khi nhiệt độ tăng từ 0~400 C thì điện trở của PT100 tăng từ 100 ~247.092, điện áp ra của cầu
đo tăng từ 0~411mV, để tơng ứng đầu ra là 0~4,902V, thì ta phải điều chỉnh hai biến trở R
5
và R
6

sao cho K1*K2*K3=5/0.411=12,165.

****************************************************************************
3.2 Sơ đồ mạch nguồn ổn áp
C 1 2
1 0 0 0 u f
J 5
2 2 0 V A C
1
2
R 2 0
3 3 0
+ -
~
~
D 9
D I O D E B R I D G E _ 1 3 2 4
+ 1 2 V
C 1 8
4 7 0 u f
J 4
5 V D C
1
2
+ 5 V
D 1 0
L E D
U 1 7
L M 7 9 1 2 C / T O 2 2 0
2 3
1
I N O U T

G N D
C 1 6
1 0 4
U 1 8
L M 7 8 0 5 / T O
1
3
2
V I N
G N D
V O U T
C 1 5
1 0 4
U 1 6 L M 7 8 1 2 / T O
1
3
2
V I N
G N D
V O U T
+ 5 V
C 1 1
1 0 0 0 u f
C 1 4
4 7 0 u f
T 1
T R A N S F O R M E R C T
2 2 0 V A C 1 5 V
0 V
4 1 5 V

- 1 2 V
C 1 7
1 0 4
+
-
~
~
D 8
D I O D E B R I D G E _ 1 3 2 4
C 1 3
4 7 0 u f
+ Nguồn đối xứng +12V, -12V dùng để cấp nguồn cho khuếch đại thuật toán LM324.
10
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
+ Nguồn ổn áp 5VDC dùng để cấp nguồn cho Vi điều khiển và các vi mạch số ADC0809 và
74HC74
+ LM7812 là vi ổn áp +12V. Vi mạch này có thể chịu đợc dòng điện qua nó là 1A.
+ LM7912 là vi ổn áp -12V. Vi mạch này có thể chịu đợc dòng điện qua nó là 1A.
+ LM7805 là vi ổn áp +5V. Vi mạch này có thể chịu đợc dòng điện qua nó là 1A.
+ Các tụ điện C11, C12, C13, C14, C18 là các tụ lọc nguồn, ta có thể sử dụng phần mềm
thiết kế mạch điện Orcad 9.2 hoặc Protel 7.1 để mô phỏng mạch điện và chọn các giá trị của tụ,
của điện trở.
Mạch dừng khẩn cấp
Phần iii. Giới thiệu vđk 8051
Chơng 1. Sơ lợc về các bộ định thời, bản đồ Ram, Rom
3.1 Bộ đếm ch ơng trình trong 8051.
Một thanh ghi quan trọng khác trong 8051 l bộ đếm ch ơng trình . Bộ đếm ch ơng trình
chỉ đếm địa chỉ của lệnh kế tiếp cần đ ợc thực hiện. Khi CPU nạp mã lệnh từ bộ nhớ ROM ch ơng
trình thì bộ đếm ch ơng trình tăng lên chỉ đếm lệnh kết tiếp. Bộ đếm ch ơng trình trong 8051 có
thể truy cập các địa chỉ ch ơng trình trong 8051 rộng 16 bit. Điều n y có nghĩa l 8051 có thể truy

cập các địa chỉa ch ơng trình từ 0000 đến FFFFH tổng cộng l 64k byte mã lệnh. Tuy nhiên,
không phải tất cả mọi th nh viên của 8051 đều có tất cả 64k byte ROM trên chíp đ ợc c i đặt. Vậy
khi 8051 đ ợc bật nguồn thì nó đánh thức ở địa chỉa n o?
3.2 Địa chỉ bắt đầu khi 8051 đ ợc cấp nguồn.
Một câu hỏi m ta phải hỏi về bộ vi điều khiển bất kỳ l thì nó đ ợc cấp nguồn thì nó bắt
đầu từ địa chỉ n o? Mỗi bộ vi điều khiển đều khác nhau. Trong tr ờng hợp họ 8051 thì mọi th nh
viên kể từ nh sản xuất n o hay phiên bản n o thì bộ vi điều khiển đều bắt đầu từ địa chỉ 0000 khi
11
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
nó đ ợc bật nguồn. Bật nguồn ở đây có nghĩa l ta cấp điện áp Vcc đến chân RESET nh sẽ trình
b y ở ch ơng 4. Hay nói cách khác, khi 8051 đ ợc cấp nguồn thì bộ đếm ch ơng
trình có giá trị 0000. Điều n y có nghĩa l nó chờ mã lệnh đầu tiên đ ợc l u ở địa chỉa ROM
0000H. Vì lý do n y m trong vị trí nhớ 0000H của bộ nhở ROM ch ơng trình vì đây l nơi
m nó tìm lệnh đầu tiên khi bật nguồn. Chúng ta đạt đ ợc điều n y bằng câu lệnh ORG trong
ch ơng trình nguồn nh đã trình b y tr ớc đây. D ới đây l hoạt động từng b ớc của bộ đếm
ch ơng trình trong qúa trình nạp v thực thi một ch ơng trình mẫu.
3.3 Đặt mã v o ROM ch ơng trình.
Để hiểu tốt hơn vai trò của bộ đếm ch ơng trình trong quá trình nạp v thực thi một
ch ơng trình, ta khảo sát một hoạt động của bộ đếm ch ơng trình khi mỗi lệnh đ ợc nạp v thực
thi. Tr ớc hết ta khảo sát một lần nữa tệp liệt kê của ch ơng trình mẫu v cách đặt mã v o ROM
ch ơng trình 8051 nh thế n o? Nh ta có thể thấy, mã lệnh v toán hạng đối với mỗi lệnh đ ợc
liệt kê ở bên trái của lệnh liệt kê.
Đây l một chuỗi các câu lệnh hoặc các dòng lệnh đ ợc viết hoặc bằng các lệnh hợp
ngữ nh ADD v MOV hoặc bằng các câu lệnh đ ợc gọi l các chỉ dẫn.
Trong khi các lệnh hợp ngữ thì nói CPU phải l m gì thì các chỉ lệnh (hay còn gọi l giả lệnh)
thì đ a ra các chỉ lệnh cho hợp ngữ. Ví dụ, trong ch ơng trình 2.1 thì các lệnh ADD v MOV
l các lệnh đến CPU, còn ORG v END l các chỉ lệnh đối với hợp ngữ. ORG nói hợp ngữ đặt
mã lệnh tại ngăn nhớ 0 v END thì báo cho hợp ngữ biết kết thúc mã nguồn. Hay nói cách
khác một chỉ lệnh để bắt đầu v chỉ lệnh thứ hai để kết thúc ch ơng trình.
Cấu trúc của một lệnh hợp ngữ có 4 tr ờng nh sau:

[nhãn:] [từ gợi nhớ] [các toán hạng] [; chú giải]
Các tr ờng trong dấu ngoặc vuông l tuỳ chọn v không phải dòng lệnh n o cũng có
chúng. Các dấu ngoặc vuông không đ ợc viết v o. Với dạng thức trên đây cần l u ý các điểm sau:
Tr ờng nhãn cho phép ch ơng trình tham chiếu đến một dòng lệnh bằng tên. Nó không đ ợc viết
quá một số ký tự nhất định. Hãy kiểm tra quy định n y của hợp ngữ m ta sử dụng.
Từ gợi nhớ (lệnh) v các toán hạng l các tr ờng kết hợp với nhau thực thi công việc thực tế
của ch ơng trình v ho n thiện các nhiệm vụ m ch ơng trình đ ợc viết cho chúng. Trong hợp
ngữ các câu lệnh nh :
ADD A, B
MOV A, #67H
Thì ADD v MOV l những từ gơi nhớ tạo ra mã lệnh, còn A, B v A, #67H l
những toán hạng thì hai tr ờng có thể chứa các lệnh giả hoặc chỉ lệnh của hợp ngữ. Hãy nhớ
rằng các chỉ lệnh không tạo ra mã lệnh n o (mã máy) v chúng chỉ dùng bởi hợp ngữ, ng ợc
lại đối với các lệnh l chúng đ ợc dịch ra mã máy (mã lênh) cho CPU thực hiện. Trong
ch ơng trình 2.1 các lệnh ORG v END l các chỉ lệnh (một số hợp ngữ của 8051 sử dụng
dạng .ORG v .END). Hãy đọc quy định cụ thể của hợp ngữ ta sử dụng. Tr ơng chú giải luôn phải
bắt đầu bằng dấu chấm phẩy (;). Các chú giải có thể bắt đầu ở đầu dòng hoặc giữa dòng. Hợp ngữ bỏ
qua (l m ngơ) các chú giải nh ng chúng lại rất cần thiết đối với lập trình viên. Mặc dù các chú giải
l tuỳ chọn, không bắt buộc nh ng ta nên dùng chúng để mô tả ch ơng trình để giúp cho ng ời
khác đọc v hiểu ch ơng trình dễ d ng hơn.
L u ý đến nhãn HERE trong tr ờng nhãn của ch ơng trình 2.1. Một nhãn bất kỳ tham
chiếu đến một lệnh phải có dấu hai chấm (:) đứng ở sau. Trong câu lệnh nhảy ngắn SJMP thì
8051 đ ợc ra lệnh ở lại trong vòng lặp n y vô hạn. Nếu hệ thống của chúng ta có một ch ơng
trình giám sát thì takhông cần dòng lệnh n y v nó có thể đ ợc xoá đi ra khỏi ch ơng trình.
3.4 Tệp liệt kê
Sau khi ch ơng trình đ ợc đốt v o trong ROM của th nh viên họ 8051 nh 8751 hoặc
AT 8951 hoặc DS 5000 thì mã lệnh v toán hạng đ ợc đ a v o các vị trí nhớ ROM bắt đầu từ
địa chỉ 0000 nh bảng liệt kê d ới đây.
Địa chỉ ROM Ngôn ngữ máy Hợp ngữ
0000 7D25 MOV R5, #25H

0002 7F34 MOV R7, #34H
12
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
0004 7400 MOV A, #0
0006 2D ADD A, R5
0007 2F ADD A, R7
0008 2412 ADD A, #12H
000A 80EF HERE: SJMP HERE
Bảng nội dung ROM
Bảng liệt kê chỉ ra địa chỉ 0000 chứa mã 7D l mã lệnh để chuyển một giá trị v o thanh ghi
R5 v địa chỉ 0001 chứa toán hạng (ở đây l giá trị 254) cần đ ợc chuyển v o R5. Do vậy,
lệnh MOV R5, #25H có mã l 7D25 trong đó 7D l mã lệnh, còn 25 l toán hạng. T ơng
tự nh vậy, mã máy 7F34 đ ợc đặt trong các ngăn nhớ 0002 v 0003 v biểu diễn mã lệnh
v toán hạng đối với lệnh MOV R7, #34H. Theo cách nh vậy, mã máy 7400 đ ợc đặt tại
địa chỉ 0004 v 0005 v biểu diễn mã lệnh v toán hạng đối với lệnh MOV A, #0. Ngăn nhớ
0006 có mã 2D l mã đối với lệnh ADD A, R5 v ngăn nhớ 0007 có nội dung 2F l mã lệnh
cho ADD A, R7. Mã lệnh đối với lệnh ADD A, #12H đ ợc đặt ở ngăn nhớ 0008 v toán
hạng 12H đ ợc đặt ở ngăn nhớ 0009. Ngăn nhớ 000A có mã lệnh của lệnh SJMP v địa chỉ
đích của nó đ ợc đặt ở ngăn nhớ 000B. Lý do vì sao địa chỉ đích l FE đ ợc giải thích ở
3.5 Bản đồ nhớ ROM trong họ 8051.
Nh ta đã thấy ở ch ơng tr ớc, một số th nh viên họ 8051 chỉ có 4k byte bộ nhớ ROM
trên chíp (ví dụ 8751, AT 8951) v một số khác nh AT 8951 có 8k byte ROM, DS 5000-32 của
Dallas Semiconductor có 32k byte ROM trên chíp. Dallas Semiconductor cũng có motọ 8051 với
ROM trên chíp l 64k byte. Điểm cần nhớ l không có th nh viên n o của họ 8051 có thể truy cập
đ ợc hơn 64k byte mã lệnh vì bộ đếm ch ơng trình của 8051 l 16 bit (dải địa chỉ từ 0000 đến
FFFFH). Cần phải ghi nhớ l lệnh đầu tiên của ROM ch ơng trình đều đặt ở 0000,
còn lệnh cuối cùng phụ thuộc v o dung l ợng ROM trên chíp của mỗi th nh viên họ 8051.
Trong số các th nh viên họ 8051 thì 8751 v AT 8951 có 4k byte ROM trên chíp. Bộ nhớ
ROM trên chíp n y có các địa chỉ từ 0000 đến 0FFFH. Do vậy, ngăn nhớ đầu tiên có địa chỉ
0000 v ngăn nhớ cuối cùng có địa chỉa 0FFFH. Hãy xét ví dụ.

Ví dụ:
Tìm địa chỉ bộ nhớ ROM của mỗi th nh viên họ 8051 sau đây.
a) AT 8951 (hoặc 8751) với 4k byte
b) DS 5000-32 với 32k byte
Lời giải:
a) Với 4k byte của không gian nhớ ROM trên chíp ta có 4096 byte bằng 1000H ở dạng
Hex (4 ì 1024 = 4096 hay 1000 ở dạng Hex). Bộ nhớ n y đ ợc xắp xếp trong các ngăn
nhớ từ 0000 đến 0FFFFH. L u ý 0 luôn l ngăn nhớ đầu tiên.
b) Với 32k byte nhớ ta có 32.768 byte (32 ì 1024). Chuyển đổi 32.768 về số Hex ta nhận
đ ợc giá trị 8000H. Do vậy, không gian nhớ l dải từ 0000 đến 7FFFH.
13
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
Dải địa chỉ của ROM trên chíp một số th nh viên họ 8051 .
3.6 Các kiểu dữ liệu v các chỉ lệnh .
a) Phân bố không gian bộ nhớ RAM trong 8051.
Có 128 byte RAM trong 8051 (một số th nh viên đang chú ý l 8052 có 256 byte RAM).
128 byte RAM bên trong 8051 đ ợc gán địa chỉ từ 00 đến 7FH. Nh ta sẽ thấy ở ch ơng 5, chúng
có thể đ ợc truy cập trực tiếp nh các ngăn nhớ 128 byte RAM n y đ ợc phân chia th nh từng
nhóm nh sau:
1. Tổng cộng 32 byte từ ngăn nhớ 00 đến 1FH đ ợc d nh cho các thanh ghi v ngăn xếp.
2. Tổng cộng 16 byte từ ngăn nhớ 20H đến 2FH đ ợc d nh cho bộ nhớ đọc/ ghi đánh địa
chỉ đ ợc theo bit. Ch ơng 8 sẽ b n chi tiết về bộ nhớ v các lệnh đánh địa chỉ đ ợc
theo bit.
3. Tổng cộng 80 byte từ ngăn nhớ 30H đến 7FH đ ợc dùng cho l u đọc v ghi hay nh
vẫn th ờng gọi l bảng nháp (Serach pad). Những ngăn nhớ n y (80 byte) của RAM
đ ợc sử dụng rộng rãi cho mục đích l u dữ liệu v tham số bởi các lập trình viên 8051.
Chúng ta sẽ sử dụng chúng ở các ch ơng sau để l u dữ liệu nhận v o CPU qua các
cổng v o-ra.
b) Các băng thanh ghi trong 8051.
Nh đã nói ở tr ớc, tổng cộng 32 byte RAM đ ợc d nh riêng cho các băng thanh ghi v

ngăn xếp. 32 byte n y đ ợc chia ra th nh 4 băng các thanh ghi trong đó mỗi băng có 8 thanh ghi từ
R0 đến R7. Các ngăn nhớ RAM số 0, R1 l ngăn nhớ RAM số 1, R2 l ngăn nhớ RAM số 2 v.v...
Băng thứ hai của các thanh ghi R0 đến R7 bắt đầu từ thanh nhớ RAM số 2 cho đến ngăn nhớ RAM
số 0FH. Băng thứ ba bắt đầu từ ngăn nhớ 10H đến 17H v cuối cùng từ ngăn nhớ 18H đến 1FH l
dùng cho băng các thanh ghi R0 đến R7 thứ t .
Ngăn xếp các thanh nhớ RAM trong 8051
14
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
Các băng thanh ghi của 8051 v địa chỉ của chúng .
Nh ta có thể nhìn thấy từ hình 2.5 băng 1 sử dụng cùng không gian RAM nh ngăn xếp. Đây
l một vấn đề chính trong lập trình 8051. Chúng ta phải hoặc l không sử dụng băng 1 hoặc l
phải đánh một không gian khác của RAM cho ngăn xếp
Chơng 2. Lập trình cho cổng v o - ra I/0, các Timer.
4.1 Mô tả chân của 8051.
Mặc dù các th nh viên của họ 8051 (ví dụ 8751, 89C51, DS5000) đều có các kiểu đóng
vỏ khác nhau, chẳng hạn nh hai h ng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông
QFP (Quad Flat Pakage) v dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) thì
chúng đều có 40 chân cho các chức năng khác nhau nh v o ra I/0, đọc RD , ghi WR , địa chỉ,
dữ liệu v ngắt. Cần phải l u ý rằng một số hãng cung cấp một phiên bản 8051 có 20 chân với
số cổng v o-ra ít hơn cho các ứng dụng yêu cầu thấp hơn. Tuy nhiên, vì hầu hết các nh phát
triển chính sử dụng chíp đóng vỏ 40 chân với hai h ng chân DIP nên ta chỉ tập chung mô tả
phiên bản n y.
Sơ đồ bố trí chân của 8051.
Trên hình l sơ đồ bố trí chân của 8051. Ta thấy rằng trong 40 chân thì có 32 chân d nh cho
các cổng P0, P1, P2 v P3 với mỗi cổng có 8 chân. Các chân còn lại đ ợc d nh cho nguồn VCC,
đất GND, các chângiao động XTAL1 v XTAL2 tái lập RST cho phép chốt địa chỉ ALE truy cập
đ ợc địa chỉ ngo i EA , cho phép cất ch ơng trình PSEN . Trong 8 chân n y thì 6 chân VCC ,
GND, XTAL1, XTAL2, RST v EA đ ợc các họ 8031 v 8051 sử dụng. Hay nói cách khác l
chúng phải đ ợc nối để cho hệ thống l m việc m không cần biết bộ vi điều khiển thuộc họ 8051
hay 8031. Còn hai chân khác l PSEN v ALE đ ợc sử dụng chủ yếu trong các hệ thống dựa trên

8031.
1. Chân VCC: Chân số 40 l VCC cấp điện áp nguồn cho chíp. Nguồn điện áp l +5V.
2. Chân GND: Chân GND: Chân số 20 l GND.
3. Chân XTAL1 v XTAL2:
8051 có một bộ giao động trên chíp nh ng nó yêu cầu có một xung đồng hồ ngo i để
15
Đồ án môn: Vi xử lý và Đo lờng Sinh viên: nguyễn mạnh hà
chạy nó. Bộ giao động thạch anh th ờng xuyên nhất đ ợc nối tới các chân đầu v o XTAL1
(chân 19) v XTAL2 (chân 18). Bộ giao động thạch anh đ ợc nối tới XTAL1 v XTAL2 cũng
cần hai tụ điện giá trị 30pF. Một phía của tụ điện đ ợc nối xuống đất nh đ ợc trình b y trên hình
vẽ. Cần phải l u ý rằng có nhiều tốc độ khác nhau của họ 8051. Tốc độ đ ợc coi nh l tần số cực
đại của bộ giao động đ ợc nối tới chân XTAL. Ví dụ, một chíp 12MHz hoặc thấp hơn. T ơng tự
nh vậy thì một bộ vi điều khiển cũng yêu cầu một tinh thể có tần số không lớn hơn 20MHz. Khi
8051 đ ợc nối tới một bộ giao động tinh thể thạch anh v cấp nguồn thì ta có thể quan sát tần số
trên chân XTAL2 bằng máy hiện sóng. Nếu ta quyết định sử dụng một nguồn tần số khác bộ giao
động thạch anh chẳng hạn nh l bộ giao động TTL thì nó sẽ đ ợc nối tới chân XTAL1, còn chân
XTAL2 thì để hở không nối.
Nối XTAL tới 8051 b) Nối XTAL tới nguồn đồng bộ ngo i.
4. Chân RST. Chân số 9 l chân tái lập RESET. Nó l một đầu v o v có mức tích cực cao (bình
th ờng ở mức thấp). Khi cấp xung cao tới chân n y thì bộ vi điều khiển sẽ tái lập v kết thúc mọi
hoạt động. Điều n y th ờng đ ợc coi nh l sự tái bật nguồn. Khi kích hoạt tái bật nguồn sẽ l m
mất mọi giá trị trên các thanh ghi. Bảng 4.1 cung cấp một cách liệt kê các thanh ghi của 8051 v các
giá trị của chúng sau khi tái bật nguồn.
4.2 Lập trình cho bộ đếm/ bộ định thời trong 8051
8051 có hai bộ định thời/ bộ đếm. Chúng có thể đ ợc dùng nh các bộ định thời để tạo
một bộ trễ thời gian hoặc nh các bộ đếm để đếm các sự kiện xảy ra bên ngo i bộ BVĐK.
Trong ch ơng n y chúng ta sẽ tìm hiểu về cách lập trình cho chúng v sử dụng chúng nh thế
n o?
4.3 Lập trình các bộ định thời gian của 8051.
8051 có hai bộ định thời l Timer 0 v Timer1, ở phần n y chúng ta b n về các thanh ghi

của chúng v sau đó trình b y cách lập trình chúng nh thế n o để tạo ra các độ trễ thời
gian.
4.4 Các thanh ghi cơ sở của bộ định thời.
Cả hai bộ định thời Timer 0 v Timer 1 đều có độ d i 16 bít đ ợc truy cập nh hai
thanh ghi tách biệt byte thấp v byte cao. Chúng ta sẽ b n riêng về từng thanh ghi.
4.5 Các thanh ghi của bộ Timer 0.
Thanh ghi 16 bít của bộ Timer 0 đ ợc truy cập nh byte thấp v byte cao. Thanh ghi
byte thấp đ ợc gọi l TL0 (Timer 0 bow byte) v thanh ghi byte cao l TH0 (Timer 0 High
byte). Các thanh ghi n y có thể đ ợc truy cập nh mọi thanh ghi khác chẳng hạn nh A, B,
R0, R1, R2 v.v... Ví dụ, lệnh MOV TL0, #4FH l chuyển giá trị 4FH v o TL0, byte thấp
của bộ định thời 0. Các thanh ghi n y cũng có thể đ ợc đọc nh các thanh ghi khác. Ví dụ
MOV R5, TH0 l l u byte cao TH0 của Timer 0 v o R5.
Các thanh ghi của bộ Timer 0.
4.6 Các thanh ghi của bộ Timer 1.
16

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×