Professional Documents
Culture Documents
65188289 Thiết kế hệ bộ VXL đo nhiệt độ sử dụng VĐK89C51 va cảm biến LM335
65188289 Thiết kế hệ bộ VXL đo nhiệt độ sử dụng VĐK89C51 va cảm biến LM335
I. Giới thiệu
1. Đặt vấn đề
2. Các phương pháp đo nhiệt độ
3. Nhiệm vụ thiết kế
II. Tổng quan về phần cứng
1. Sơ đồ khối
2. Giới thiệu về các thiết bị.
2.1. LM335
2.2. ADC0809
2.3. Bộ vi xử lý 8051
2.4. Khối phím ấn
2.5. Hiển thị Led
2.6. RS 232
2.7. Nguồn
III. Phần mềm
1. Lưu đồ thuật toán
1.1 Lưu đò thuật toán đọc ADC
1.2 Lưu đồ thuạt toán phục vụ ngắt phím
1.3 Lưu đồ kiểm tra
1.4 Lưu đồ truyền tin
2. Phần mềm chương trình
IV. Đánh giá sai số
V. Kết luận,tài liệu tham khảo
I. Giới thiệu
1
1. Đặt vấn đề
Nhiệt độ là một trong những đại lượng vật lý được quan tâm nhiều nhất. Bởi
vì nhiệt độ có vai trò quyết định trong nhiều tính chất của vật chất. Một trong
những đặc điểm tác động của nhiệt độ là làm thay đổi một cách liên tục các đại
lượng chịu sự ảnh hưởng của nó,ví dụ như áp suất ,thể tích của một chất khí . Bởi
vậy, trong các nghiên cứu khoa học , trong công nghiệp và đời sống hàng ngày
việc đo nhiệt độ là điều rất cần thiết. Tuy nhiên, để đo được trị số chính xác của
nhiệt độ lại là vấn đề không đơn giản.
Cùng với sự ra đời và phát triển mạnh mẽ của các hệ vi xử lý,việc đo nhiệt độ
áp dụng vi xử lý,vi điều khiển đã mở ra nhiêu hướng,đưa đến nhiều phương pháp
khác nhau,linh hoạt và chính xác hơn. Có nhiều cách để đo nhiệt độ , trong đó có
thể liệt kê một số phương pháp sau đây:
- Phương pháp quang dựa trên sự phân bố bức xạ nhiệt do dao động nhiệt
(do hiệu ứng Doppler).
-Phương pháp cơ dựa trên sự dãn nở của vật rắn , của chất lỏng hoặc khí
(với áp suất không đổi ) , hoặc dựa trên tốc độ âm.
-Phương pháp dựa trên sự phụ thuộc của đIện trở vào nhiệt độ , hiệu ứng
Sêbeck , hoặc dựa trên sự thay đổi tần số dao động của thạch anh.
2. Các phương pháp đo nhiệt độ
Trước tiên nói về các cảm biến nhiệt độ,đó là các cảm biến được sử dụng vào các quá
trình nhiệt như: đốt nóng, làm lạnh, trao đổi nhiệt.v.v. .Đại lượng vào của cảm biến nhiệt độ là
nhiệt độ và đại lượng ra là tín hiệu điện (dòng,áp).Một số cảm biến thường sử dụng:
+Nhiệt điện trở : Nguyên lý làm việc là có điện trở thay đổi theo sự thay đổi nhiệt độ
của nó.Tuỳ theo tác dụng nhiệt của dòng điện cung cấp chạy qua chuyển đổi người ta
phân ra: Nhiệt điện trở đốt nóng và nhiệt điện trở không đốt nóng
• Nhiệt điện trở đốt nóng ,dòng điện chạy qua rất lớn làm nhiệt độ của nó
tăng lên cao hơn nhiệt độ môi trường(100°C -800°C), nên có sự toả nhiệt ra môi trường xung
quanh, như nhiệt dẫn, đối lưu, bức xạ .
• Nhiệt điện trở không đốt nóng, dòng điện chạy qua rất nhỏ không làm
tăng nhiệt độ của điện trở và nhệt độ của nó bằng nhiệt độ môi trường. Nhiệt điện trở loại này
dùng để đo nhiệt độ và các đại lượng cơ học như đo di chuyển.
Nhiệt điện trở phân làm hai loại: Nhiệt điện trở dây(nhiệt điện trở đồng,nhiệt điện trở
Platin, nhiệt điện trở Niken) và nhiệt điện trở bán dẫn.
+Cặp nhiệt điện:Nguyên lý làm việc dựa trên 2 hiệu ứng:Thomson và Seebek
ứng dụng của cặp nhiệt điện chủ yếu để đo nhiệt độ, ngoài ra nó còn dược dùng
để đo các đại lượng không điện và điện khác như: đo dòng điện ở tần số cao,đo
hướng chuyển động và lưu ượng của các dòng chảy, đo di chuyển , đo áp suất
nhỏ
+Cảm biến nhiệt độ dùng đặc tính diode và tranzitor
Đo nhiệt độ là nhiệm vụ thường gặp trong các ngành nhiệt học, hoá học ,luyện kim...Tuỳ
theo nhiệt độ đo mà có thể dùng các phương pháp đo khác nhau.Thông thường nhiệt độ đo được
chia thành 3 giải : Nhiệt độ thấp, nhiệt độ trung bình và nhiệt độ cao.ở nhiệt độ trung bình và
thấp, phương pháp đo thường là tiếp xúc nghĩa là các chuyển đổi được đặt trực tiếp ở ngay môi
trường cần đo. Đối với nhiệt độ cao,đo bằng phương pháp không tiếp xúc, nghĩa là dụng cụ đo
đặt ngoài môi trường đo.
2
Một trong số những cách đó là đo nhiệt độ không tiép xúc sử dụng cảm biến
LM335
3. Nhiệm vụ thiết kế
Thiết kế hệ bộ VXL đo nhiệt độ sử dụng VĐK89C51 và cảm biến LM335 giải
quyết những vấn đề sau:
- Thiết kế mạch đo nhiệt độ trong dải từ 0oC-100oC và hiển thị.
- Cảnh báo khi nhiệt độ lớn hơn 80oC và khi nhỏ hơn 20oC
- Kết nối truyền thông tin đo được vào máy tính
- Viết chương trình phần mềm giải quyết những vấn đề trên
Cảm Mạch
Khối hiển thị
biến khuếch ADC
LED
LM335 đại
Khối
VĐK 8051 bàn
phím
PC
3
- Dòng thuận 10mA
- Sự biến thiên của điện thế theo nhiệt độ có hàm
VOUT = 0.01xTOK
= 2.73 + 0.01xTOC
+ Cấu trúc của bộ cảm biến LM335 là loại cảm biến có 3 chân tín hiệu ra
tương tự
+5V
Vout
LM335 VR
Đầu đo dưới dạng vi mạch LM 335 là một đầu đo nhiệt độ đơn giản và chính
xác ,có điện áp lối ra tỷ lệ thuận với nhiệt độ của đầu đo. Đầu đo này không cần đến linh
kiện ở ngoài nên không cần chuẩn lại ở những nhiệt độ khác nhau .Trong vùng nhiệt độ
phòng , độ chính xác đạt cỡ 0,250C .Dòng điện tiêu thụ cỡ 60uA nên có thể bỏ qua sự
tăng nhiệt độ đầu đo dòng điện nuôi tạo ra .
Tương ứng với dải nhiệt độ đo dải từ 0oC-100oC thì điện áp ra tuyến tính là
2.73-3.73V.Ta điều chỉnh biến trở R20 để ở 250C thì điện áp ra ở chân 2 của cảm biến là
2.98V.
- Điện áp ra của cảm biến là từ 2.73-3.73V ,trong khi thang điện áp vào làm việc
của ADC0809 là 0-5V ,do vậy ta cần tiến hành chuẩn hóa tín hiệu trước khi đưa đến
ADC. .Sơ đồ mạch thực hiện việc đó như trên .Nguyên lý hoạt động của mạch đó là:
+ Dùng một đi ốt zener và một nguồn nuôi để tạo ra điện áp ổn định 5V.
+ Điện áp này được nối với một biến trở R21 nối đất. Dùng biến trở này để điều
chỉnh điện áp vào bộ đệm là 2.73V. Bộ đệm dùng để hạn chế dòng điện trong mạch .
+ Qua bộ đệm điện áp vẫn là 2.73V . Điện áp này được đưa đến một mạch trừ.
4
+ Bộ trừ được nối với các điện trở như hình vẽ . Giá trị của các điện trở được
cho như trên hình. Với cách mắc như vậy điện áp ra của bộ trừ là :
Vout = Vin(+) –Vin(-)
Ta có :
Vin(+) = 2.73 - 3.73 V
Vin(-) = 2.73V
Do vậy :
Vout = 0 - 1V
Ta đã đạt được yêu cầu về điện áp. Và cũng để hạn chế dòng điện ta phải đưa
điện áp này vào ADC qua một bộ đệm như trên hình vẽ.
• Ta cần hiển thị kết quả ra LED ,muốn vậy cần có sự đồng nhất :
Nhiệt độ đo( 0C ) Mã nhị phân ở đầu ra của ADC
+ Điện áp ở lối ra của LM335 là 10mV / 0C
+ Do vậy vấn đề này được giải quyết bằng cách đặt điện áp ở các chân Vref
của ADC thích hợp.
5
Đây là phương pháp được sử dụng rộng rãi , nhưng mạch điện có phức tạp nhưng
thời gian chuyển đổi ngắn hơn . Phương pháp này có thời gian chuyển đổi không phụ
thuộc vào điện áp ngõ vào .
VA
+
V’A _ Clock
Logic điều khiển MSB Start
LSB
EOC
DAC
Sơ đồ khối chuyển đổi ADC dùng phương pháp xấp xỉ liên tiếp
Hoạt động
Khi tác động cạnh xuống của xung Start thì ADC bắt đầu chuyển đổi
-Mạch logic điều khiển đặt bit có nghĩa lớn nhất của thanh ghi diều khiển lên mức
cao và tất cả các bit còn lại ở mức thấp . Số nhị phân ra ở thanh ghi điều khiển được
qua mạch DAC để tạo ra điện áp tham chiếu V’a .
Nếu V’a > Va thì ngõ ra bọ so sánh xuống mức thấp làm cho mạch logic diều
khiển xóa bit MSB xuống mức thấp
Nếu V’a <Va thì ngõ ra bọ so sánh ở mức cao làm cho mạch logic điều
khiển giữ bit MSB ở mức cao .
Tiếp theo mạch logic điều khiển đưa bit có nghĩa kế bit MSB lên mức cao và tạo
ở ngõ ra khối DAC một điện áp tham chiếu V’a rồi đem so sánh tương tự như bit
MSB như trên . Quá trình này cứ tiếp tục cho đến bit cuối cùng trong thanh ghi điều
khiển . Lúc đó thì V’a gần bằng Va ngõ ra của mạch logic điều khiển báo kết thúc
chuyển đổi .
Như vậy mạch đổi ra n bit chỉ mất n chu kì xung clock nên có thể đạt tốc độ rất
cao . Tuy nhiên mạch ADC xấp xỉ liên tiếp lại không thể đáp ứng với tín hiệu tương
tự vào biến đổi cực nhanh .
- ADC chuyển đổi nhanh(MC10319,AD9010,... )
+Bộ chuyển đổi nhanh (fast converter)là loại ADC có tốc độ cao nhất nhưng
sơ đồ mạch phức tạp hơn các loại khác.Chẳng hạn,ADC nhanh N bit cần 2N-1 bộ so
sánh,2N điện trở và logic mã hoá cần thiết.
+ Bộ chuyển đổi nhanh không cần tín hiệu xung nhip vì tiến trình chuyển đổi
xảy ra liên tục.
6
+ Thời gian chuyển đổi là thời gian cần thiết để xuất hiện một đầu ra số đáp
lại một thay đổi ở đầu vào tương tự,chỉ phụ thuộc vào khoảng trễ do truyền của bộ so
sánh và bộ mã hoá.Do đó ADC nhanh có thời gian chuyển đổi vô cùng ngắn ngủi:
VD:MC10319(Motorola)-8 bit: tc<20ns
AD9010(Analog Devices)-10 bit: tc<15ns.
Ngoài ra còn một số phương pháp khác như:ADC sóng bậc thanh lên/xuống;ADC tích
hợp hai độ dốc;ADC chuyển đổi điện thế thành tần số; điều biến sigma/delta.
7
Các chân của ADC0809
8
*ADC0809 thể hiện trên sơ đồ trên có thể dược chia theo chức năng thành 2
mạch con cơ bản.Hai mạch con này là một bộ dồn kênh và một bộ chuyển đổi A/D.
-Bộ dồn kênh sử dụng 8 khoá tương tự công nghệ CMOS chuẩn để cung cấp
một trong 8 đầu vào tương tự.Các khoá được điều khiển chọn,tuỳ thuộc vào số liệu được
chốt ở thanh ghi địa chỉ bộ dồn kênh (multiplexer address register) 3 bit.
- Khối chức năng thứ hai là bộ chuyển đổi A/D liên tiếp-xấp xỉ,chuyển tín hiệu
tương tự đầu ra của bộ dồn kênh thành một từ số 8 bit. Đầu ra bộ dồn kênh sẽ đi đến một
trong hai đầu vào của bộ so sánh. Đầu vào kia nhân được từ 1 thang điện trở 256R được
mắc vào một cây khoá dùng transistor MOSFET (MOSFET transistor switch tree).Logic
điều khiển bộ chuyển đổi sẽ điều khiển switch tree, đưa điện áp tương ứng chảy
ra(funneling a particular tap voltage) đến bộ so sánh. Đặt cơ sở cho kết quả của sự so
sánh này,bộ logic điều khiển và thanh ghi liên tiếp xấp xỉ(SAR)sẽ quyết định điện áp
được chọn để lấy ra sẽ cao hơn hay thấp hơn giá trị hiện tại trên thang điện trở.Tiến
trình(algorithm)này được thực hiện 8 lần trong 1 chuyển đổi,mỗi chuyển đổi cần 8 chu kỳ
đồng hồ.Như vậy tổng cộng thời gian chuyển đổi là 64 chu kỳ đồng hồ.
-Khi một chu kỳ chuyển đổi hoàn thành,số liệu kết quả được đưa vào bộ chốt
đầu ra 3 trạng thái.Số liệu trong bộ chốt đầu ra có thể sau đó có thể được đọc bởi một hệ
thống tiếp nhận số liệu(host system) bất cứ lúc nào trước khi kết thúc chu kỳ chuyển đổi
tiếp theo .Khả năng 3 trạng thỏi của bộ chốt cho phép giao tiếp dễ dàng với các hệ thống
bus định hướng(bus oriented systems).
-Thực hiện hoạt động của các bộ chuyển đổi này bằng một bộ vi xử lý hoặc một
số logic điều khiển thì rất đơn giản.Thiết bị điều khiển đầu tiên sẽ chọn kênh vào. Để làm
điều này ,một địa chỉ kênh 3 bit được áp vào các chân A,B,C;và chân ALE (Address
Latch Enable) được đưa xung tích cực để khoá địa chỉ vào thanh ghi địa chỉ bộ dồn kênh.
9
Kênh được chọn C B A
IN0 0 0 0
IN1 0 0 1
IN2 0 1 0
IN3 0 1 1
IN4 1 0 0
IN5 1 0 1
IN6 1 1 0
IN7 1 1 1
- Để bắt đầu chuyển đổi,chân START được áp xung tích cực. ở sườn lên của
xung này,những thanh ghi trong được xoá và ở sườn xuống sự chuyển đổi được bắt đầu.
Cần 8 chu kỳ đồng hồ trong mỗi lần xấp xỉ.Dù là không có chuyển đổi trong quá
trình đó,ADC0809 vẫn quay vòng ở bên trong(internally cycling) qua 8 chu kỳ đồng
hồ.Một xung start có thể xuất hiện bất cứ lúc nào trong suốt quá trình này nhưng sự
chuyển đổi sẽ không thật sự bắt đầu đến khi bộ chuyển đổi quay vòng bên trong đến khi
bắt đầu chuỗi 8 chu kỳ đồng hồ sau.Chỉ cần chân START được giữ ở mức cao thì sẽ
không có chuyển đổi,nhưng khi chân start đựơc đưa xuống thấp sự chuyển đổi sẽ bắt đầu
trong khoảng thời gian 8 chu kỳ đú.
-Đầu ra EOC được lật ở sườn lên của xung start.Nó cũng được điều khiển bởi
chu trình gồm 8 chu kỳ đồng hồ,nên nó sẽ xuống thấp trong khoảng thời gian 8 chu kỳ
đồng hồ khi xảy ra sườn lên của xung start .
Sơ đồ thời gian của ADC0809:
10
Kết nối các chân của ADC0809 với VĐK8051
- Vì chỉ dùng 1 đầu đo nên 3 chân ADDA,B,C ta đặt ở mức 0
- 01-08 là 8 bit đầu ra được nối với cổng P0 của 8051
- EOC nối với ngắt ngoài INT0
- ALE,START,EO được điều khiển bởi các tín hiệu READ/WRITE
- Đầu đo nhiệt độ nối vào IN0.
2.4 Bộ vi xử lý 8051
Tổng quan cấu trúc 8051:
MCS-51 là họ vi điều khiển của INTEL. Các nhà sản xuất IC khác như Siemens,
Advanced Micro Divices, Fujitsu và Philips được cấp phép làm các nhà cung cấp thứ hai
cho các chíp của họ MCS-51.Vi mach tổng quát cưa họ MCS-51 là chíp 8051, linh kiện
đầu tiên của họ này được đưa ra thị trường. Chíp 8051 có các đặc trưng được tóm tắt như
sau :
_4KB ROM.
_128 byte RAM.
_ 4 port xuất nhập (I/O port ) 8- bit.
_ 2 bộ định thời 16 bit.
_ Mạch giao tiếp nối tiếp.
_ Không gian nhớ chương trình (mã) ngoài 64K.
_ Không gian nhớ dữ liệu ngoài 64K.
_ Bộ xử lý bít(thao tác trên các bit riêng rẽ).
_ 210 vị trí được định địa chỉ, mỗi vị trí 1 bit.
11
Sơ đồ khối của chíp 8051.
12
Tổ chức chân của 8051 dạng PQFP/TQFP và PLCC
a) port 0 : chức năng ở trên chân từ 32 đến 39 trong các thiết kế cỡ nhỏ (không dùng
bộ nhớ mở rộng ) có hai chức năng như các đường IO. Đối với các thiết kế cỡ lớn ( với
bộ nhớ mở rộng ) nó được kết hợp kênh giữa các bus ).
b) port1 : 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 các thiết bị ngoài nếu cần. Port1 không có chức năng khác, vì vậy
chúng ta có thể dùng chúng trong giao tiếp với các thiết bị ngoài một cách tự do.
c) Port 2 : là một port 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à 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 : 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
8051 / 8031 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 INTO Ngắt 0 bên ngoài
P3.3 INT1 Ngắt 1 bên ngoài
P3.4 TO 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
13
PSEN 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 và được chốt vào thanh ghi lệnh của 8051 để giải mã lệnh.
Khi thi hành chương trình trong ROM nội (8051) PSEN sẽ ở mức thụ động (mức cao).
f) ALE (Address 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 xử lí 8585, 8088, 8086, 8051 dùng ALE một cách tương tự cho
làm việc giải các 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 đị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 của chu kỳ bộ nhớ. Sau đó, các
đường port 0 dùng để xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của 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à nguồn xung nhịp cho các hệ thống. Nếu xung trên 8051 là 12MHz thì ALE có
tần số 2MHz. Chỉ ngoại trừ khi thi hà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 8051.
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, 8051 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 8051 sẽ bị cấm
và chương trình thi hành từ EPROM mở rộng. Người ta còn dùng chân EA làm chân cấp
điện áp 21V khi lập trình cho EPROM trong 8051.
h) RST (Reset) :Ngõ vào RST trên chân 9 là ngõ reset của 8051. 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 trong 8051 được tải
những giá trị thích hợp để khởi động hệ thống.
i) Xtal1 & Xtal2 :Như đã thấy trong các hình trên, 8051 có một bộ dao động trên
chip. Nó thường được nối với thạch anh
giữa hai chân 18 và 19. Các tụ giữa
cũng cần thiết như đã vẽ. Tần số thạch
anh thông thường là 12MHz.
j) Power: 8051 vận hành với
nguồn đơn +5V. Vcc được nối vào
chân 40 và Vss (GND) được nối vào
chân 20.
2. Tổ chức bộ nhớ :
Bộ nhớ bên trong bao gồm ROM (8051) và RAM trên chip, RAM trên chip bao gồm
nhiều phần : phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và
các thanh ghi chức năng đặc biệt.
14
Tóm tắt các vùng bộ nhớ của 8051
Như ta đã thấy trên hình, RAM bên 8051 được phân chia giữa các bank thanh ghi
(00H-1FH), RAM địa chỉ hóa 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).
Bộ nhớ ROM có 30 byte đầu tiên được dành cho bảng vector ngắt :
RAM trên chip bao gồm vùng RAM đa chức năng, vùng RAM với từng bit được
định địa chỉ, các dóy thanh ghi (bank) và các thanh ghi chức năng đặc biệt.
a. Vùng RAM đa mục đích: Có 80 byte, địa chỉ từ 30H đến 7FH
Bất cứ vị trí nào trong vùng RAM ta đều có thể truy xuất tự do bằng cách sử
dụng định địa chỉ trực tiếp hoặc gián tiếp.
b. Vùng RAM định địa chỉ:
Chip 8951 chứa 210 vi trí định địa chỉ in đó có 128 byte chứa trong các byte ở
địa chỉ 20H đến 2FH (16 byte x 8 = 128 bits), phần còn lại chứa trong các thanh ghi
chức năng đặc biệt.
Công dụng: + Truy xuất các bit riêng rẽ thông qua các phần mền.
+ Các port có thể địng địa chỉ từng bit, làm đơn giản việc giao tiếp
băng phần mền với các thiết bị xuất nhập đơn bit.
c. Các dãy thanh ghi:
Có địa chỉ từ 00H đến 1FH, 32 vị trí thấp nhất của bộ nhớ nội chứa các dãy
thanh ghi. Các lệnh của 8951 hỗ trợ 8 thanh ghi tử R0 đến R7 (mặc định thuộc bank 0
sau khi reset hệ thống)
d. Các thanh ghi chức năng đặc biệt (SFR)
Không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có
21 địa chỉ được định nghĩa.
Các thanh ghi chức năng đặc biệt bao gồm:
+ PSW: có địa chỉ là D0H
Bit Kí hiệu Địa chỉ Mô tả
PSW.7 CY D7H Cờ Nhớ
PSW.6 AC D6H Cờ nhớ phụ
15
PSW.5 F0 D5H Cờ 0
PSW.4 RS1 D4H Chọn dãy thanh ghi 1
PSW.3 RS0 D3H Chọnh dãy thanh ghi 0
00 = bank 0: địa chỉ từ 00F đến 07H
01 = bank 1: địa chỉ từ 08F đến 0FH
10 = bank 2: địa chỉ từ 00F đến 07H
11 = bank 3: địa chỉ từ 00F đến 07H
PSW.2 OV D2H Cờ tràn
PSW.1 - D1H Dự trữ
PSW.0 P D0H Cờ kiểm tra chẵn lẻ
+ Thanh ghi B: Có địa chỉ F0H được dùng chung với thanh chứa A trong các phộp
toán nhân và chia.
+ Con trỏ Stack (SP) : là thanh ghi 8 bit ở địa chỉ 81H, nó chứa địa chỉ của dữ liệu
hiện đang ở đỉnh của stack.
+ Con trỏ dữ liệu DPTR:
- Dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài.
- DPTR là thanh ghi 16 bit có địa chỉ 82H (byte thấp ) và 83H (byte cao).
+ Các thanh ghi port:
- Port 0 : địa chỉ 80H
- Port 1 : địa chỉ 90H
- Port 2 : địa chỉ A0H
- Port 3 : địa chỉ B0H
+ Các thanh ghi định thời:
8951 có 2 bộ định thời/đếm dùng để định khoảng thời gian hoặc đếm các sự
kiện.
- Bộ định thời 0: địa chỉ 8AH (TL0 ) va 8CH (TH0)
- Bộ định thời 1: địa chỉ 8bH (TL1 ) va 8DH (TH1)
Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời
TMOD ở địa chỉ 89H và thanh ghi điều khiển bộ định thời TCON ở địa chỉ 88H (chỉ
có TCON được định địa chỉ từng bit)
a. Thanh ghi chế độ định thời TMOD:
GATE C/T M1 M0 GATE C/T M1 M0
TMOD chứa hai nhóm 4 bit dùng để thiết lập chế độ định thời cho bộ định thời 0 và bộ
định thời 1.
TMOD không được định địa chỉ từng bit mà được thiết lập một lần bằng phần mềm ở đầu
chương trình.
16
4 M0 1 - Bit chọn chế độ.
Tương tự như vậy với 4 bit của bộ định thời 0. Với các chế độ định thời được chọn:
M1 M0 Chế độ Mô tả
TCON.6 TR1 8Eh Bit điều khiển Timer 1. Set hoặc xoá bởi phần cứng
để timer 1 hoạt động hoặc ngừng.
TCON.5 TF0 8Dh Cờ tràn của Timer 1. Set/ xoá bởi phần cứng khi
Timer/ Counter 0 tràn hoặc bộ vi xử lý trỏ đến trình
phục vụ ngắt.
TCON.4 TR0 8Ch Bit điều khiển hoạt động của Timer 0.
TCON.3 IE1 8Bh Cờ ngắt bên ngoài 1 (kích khởi cạnh). Hoạt động
bởi phần cứng.
TCON.2 IT1 8Ah Cờ ngắt bên ngoài 1 (kích khởi cạnh hoặc mức).
Hoạt động bởi phần mềm.
TCON.1 IE0 89h Cờ ngắt bên ngoài 0 (kích khởi cạnh). Hoạt động
bởi phần cứng.
TCON.0 IT0 88h Cờ ngắt bên ngoài 0 (kích khởi cạnh hoặc mức).
Hoạt động bởi phần mềm.
+ Các thanh ghi của port nối tiếp: Chip 8951 có 1 port nối tiếp để truyền thông với
các thiết bị như các thiết bị đầu cuối hoặc modem...
+ Các thanh ghi ngắt: có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân
ngắt. Các ngắt bị vô hiệu hoá sau khi Reset hệ thống và được phép bằng cách vào
thanh ghi IE ở địa chỉA8H.
Mức ưu tiên ngắt được thiết lập bởi thanh ghi IP ở địa chỉ B8H.
17
+ Thanh ghi điều khiển nguồn: PCON có địa chỉ 87H.
SFR của bộ Mục đích Địa chỉ Địa chỉ của Bit
định thời
TCON Điều khiển 88H Có
TMOD Chon chế độ 89H Không
TL0 Byte thấp của bộ định thời 0 8AH Không
TL1 Byte thấp của bộ định thời 1 8BH Không
TH0 Byte cao của bộ định thời 0 8CH Không
Byte cao của bộ định thời 1 8DH Không
TH1
18
IE.3 ET1 ABH Cho phép ngắt do bộ định thời 1
IE.2 EX1 AAH Cho phép ngắt từ bên ngoài (Ngắt ngoài 1)
IE.1 ET0 A9H Cho phép ngắt do bộ định thời 0
IE.0 EX0 A8H Cho phép ngắt từ bên ngoài (Ngắt ngoài 0 )
* Ưu tiên ngắt:
Các ưu tiên ngắt được lập trình riêng rẽ để có một trong 2 mức ưu tiên thông qua các
thanh ghi chức năng đặc biệt được định địa chỉ bit.
Bit Kí Địa chỉ Mô tả
hiệu bit (0= Không cho phép; 1= Cho phép)
IP.7 - - Không sử dụng
IP.6 - -
Khụng sử dụng
IP.5 PT2 BDH Ưu tiên ngắt do bộ định thời 2
IP.4 PS BCH Ưu tiên ngắt do port nối tiếp
IP.3 PT1 BBH Ưu tiên ngắt do bộ định thời 1
IP.2 PX1 BAH Ưu tiên ngắt từ bên ngoài (Ngắt ngoài 1)
IP.1 PT0 B9H Ưu tiên ngắt do bộ định thời 0
IP.0 PX0 B8H Ưu tiên ngắt từ bên ngoài (Ngắt ngoài 0 )
Xử lý ngắt:
Các thao tác xảy ra sau khi ngắt:
- Hoàn tất việc thực thi lệnh hiện hành.
- Bộ đếm chương trình PC được hoàn tất.
- Trạng thái của ngắt hiện hành được lưu giữ lại.
- Các ngắt được chặn lại ở mức ngắt.
- Bộ đếm chương trình PC được nạp địa chỉ véctơ của trình phục vụ ngắt ISR
- SR được thực thi.
Các cờ ngắt:
Ngắt Cờ Thanh ghi SFR và vị trí bít
Do bên ngoài (ngắt ngoài 0) IE0 TCON.1
Do bên ngoài (ngắt ngoài 1) IE1 TCON.3
Do bộ định thời 1 TF1 TCON.7
Do bộ định thời 0 TF0 TCON.5
Do port nối tiếp TI SCON.1
Do port nối tiếp RI SCON.0
* Thanh ghi điều khiển hoạt động cổng nối tiếp SCON:
SM0 SM1 SM2 REN TB RB8 TI RI
Bit Ký hiệu Mô tả
SCON.7 SM0 Bit 0 chọn chế độ của port nối tiếp.
SCON.6 SM1 Bit 1 chọn chế độ của port nối tiếp.
19
SCON.5 SM2 Bit 2 chọn chế độ của port nối tiếp.
SCON.4 REN Set/ xoá bằng phần mềm để cho phép/ không cho phép thu.
SCON.3 TB8 Bit phát 8. Bit thứ 9 được phát ở các các chế độ 2 và 3;
được set hoặc xoá bởi phần mềm.
SCON.2 RB8 Bit phát 8. Bit thứ 9 nhận được cờ ngắt phát; được xoá bởi
phần mềm.
SCON.1 TI Cờ ngắt phát.
SCON.0 RI Cờ ngắt thu.
EI X0 X1 X2 X3 X4 X5 X6 X7 GS A B C EO
H X X X X X X X X H H H H H
L H H H H H H H H H H H H L
L X X X X X X X L L L L L H
L X X X X X X L H L H L L H
L X X X X X L H H L L H L H
L X X X X L H H H L H H L H
L X X X L H H H H L L L H H
L X X L H H H H H L H L H H
L X L H H H H H H L L H H H
L L H H H H H H H L H H H H
Các đầu vào từ X4-X7 ,ta sẽ có các đầu ra A,B,C có mã tương ứng là
Phím A B C
FUNC 1 1 0
DEC(-) 1 0 0
INC(+) 0 1 0
20
OK 0 0 0
2.7 RS 232
Max 232 là mạch truyền tin công nghiệp khi Master gọi Slave thì mở phiên truyền
tin.Việc truyền tin đi xa ở mức điện áp TTL có thể gây suy giảm điện áp ,lẫn nhiễu làm
khó phân biệt được tín hiệu 0 hay 1 .Điều này làm sai lêch thông tin nên truyền thông đi
xa phải tăng mức điện áp
Nhưng mức điện áp của các mạch số TTL là khcs với mức điện áp của máy tinh nên
cần có mạch chuẩn
Cổng nối tiếp RS232 là giao diện dùng cho nhiều mục đích đo lường điều khiển và
nhiều ứng dụng điều khiển khác.Trong PC cổng nối tiếp thường là các cổng COM1,
COM2.Việc truyền dữ liệu qua cổng RS232 được tiến hành theo cách nối tiếp tức là các
dữ liệu truyền nối tiếp trên 1 đường dây ,cổng RS232 dễ dàng cho liên kết điểm-
điểm,giữa 2 máy tính với nhau hay giữa máy tính với ngoại vi
Các thông số kỹ thuật :
- Tốc độ truyền tối đa là 20BAUD
- Khoảng cách cực đại là 15m
- Mức logic 1là từ -3 đến -25V
- Mức logic 0là từ 3 đến 25V
- Tín hiệu nhiễu cho phép 2V
Cấu trúc cổng nối tiếp kiểu chân
Chân Chức năng Vào /Ra
21
1 DCD IN
2 RxD IN
3 TxD OUT
4 DTR OUT
5 GND GROUND
6 DSR IN
7 RST OUT
8 CST IN
9 RI IN
22
2.9 Sơ đồ nguyên lý tổng thể
1 2 3 4 5 6 7 8
+5
8
U5
D 5 D
EI
GND
+5 4
7
6 3
A2 6
7 2
A1 5
9 1
A0 4
13
3
14 12
R4 R5 R6 INT1 GS 2
15 11
EO 1
VCC
RES2 RES2 RES2 10
0
74LS148 K2 K3 K4
K1
16
+5
R1 R2 R3
RES2 RES2 RES2
J3 J4 J5
NPN NPN NPN
+5
Q1B Q1A
16
5 1 U7A
4 3 1 3
CLK Q0
GND VCC
6 2 2 4
EN Q1 CLK
5
4011 4011 Q2
7 6
R Q3
12
11
10
7
4520
J1
8
a
f
A1
A2
b
A3
C TA2 C
C9 2MHz C10
27uF 27uF
dp
d
g
e
c
1
6
+5
12
11
15
13
10
14
9 U4
+5
a
e
f
b
g
16 74LS47 R14
VCC
8
2
BI/RBO
GND
RBI
R21
LT
2
A
D
B
C
3
W
+5
1
4
5
3
7
1
2
6
Z1 R19
A K
1
R15 J2 +9
+5 1 8
R16 RG RG
U1 2 7
Vin- Vs+
1
8051 3 6
Vin+ OUT DAU DO
11
1 39 4 5
P10 P00 Vs- Re f
2 38 U2
P11 P01 R17
3 37 26 21 AD620
2
VCC
4 36 20
2
L4 P13 P03 2-2
K5 K LEDA 2 R8 1 5 35 27 19
2 1 2 1 P14 P04 IN-1 2-3
2
6 34 18
2
B P15 P05 2-4 B
+V
1
7 33 28 8
R7 P16 P06 IN-2 2-5
K A 8 32 15 Q4 R20
2 1 L5 P17 P07 2-6
2
1 14 1 3
IN-3 2-7 OUT W
1
1
12 22 2
INT0 INT0 P21 IN-4
GND
23 7
P22 EOC INT0 4001
15 24 3 Q2A
1
T1 P23 IN-5
14 25 25 2
T0 P24 ADD-A WR
26 4 24 3
P25 IN-6 ADD-B
3
R13 31 27 23 1
10K EA/VP P26 ADD-C
C3 28 5
P27 IN-7
19 22
X1 ALE
18 6
2
X2
30PF 16 9 4
TA1 re f(-) ENABLE
9 10 6 5
RST RESET RXD RXD START RD
GND
12
11.092 11 12 10 Q2B
TXD TXD re f(+) CLOCK CLK 4001
C4 17 30
RD RD ALE/P
1 2 16 29 ADC0809
21 WR WR PSEN
1
13
30PF
+5
C8
+
1UF
C7
DB9
16
1
2
6
1UF
U8 6
13 12 2
RXD R1 IN R1 OUT
V+
V-
VCC
8 9 7
R2 IN R2 OUT
11 14 3
TXD T1 IN T1 OUT
10 7 8
T2 IN T2 OUT
A 1 4 4 A
C1+ C2+
GND
3 5 9
C1 - C2 -
+ C5 + C6 5
1UF MAX232 1UF
15
Title
1 2 3 4 5 6 7 8
23
1.1 Lưu đồ thuật toán
Start
Call Key_sev
P3.3=1
Call Delay
Tạo xung Start, ALE cho ADC
Chờ ngắt ngoài EX0 (ADC biến dổi xong)
Tạo xung OE cho phép đọc dữ liệu từ ADC
Cất dữ liệu lấy từ ADC vào thanh Ro
Hiển thị nhiệt độ môi trường
Kiểm tra nhiệt độ để cảnh báo
END
24
Key-SRV
ACC=0
0 Tang muc thap
ACC=0
1 Giam muc thap
ACC=1
0 Tang muc cao
ACC=1
1 Giam muc cao
RETI
25
1.3 Lưu đồ kiểm tra
T>Tma
Gọi Red_Led
x
RETI
SC_SRV
RETI
26
2. Phần mềm chương trình
# Include “89c51”
Org 00h
ljmp Start
Start :
Mov SP,#6Fh
mov IE,#00h
mov PSW,#00h
Mov R6,#20h
Mov R7,#80h
Mov TMOD,#01h ;chon che do 16 bit
mov P0,#0ffh
mov P1,#00h
Delay:
Mov TL0,#00h
Mov TH0,#00h
Setb TR0
Again :
jnb TF0,Again
clr TF0
ret
Delay1:
nop
nop
nop
nop
nop
ret
27
lcall delay1
clr P3.7
mov R0,P0
mov P0,#0ffh
mov A,R0
Lcall Led_show
clr P1.6
clr P1.7
lcall Canhbao
ljmp loop
Key_sev :
Push Acc
Mov A,P1
Swap A
Cjne A,#00,Kiem_tra1
28
Mov A,R6
Inc A
mov R6,A
Lcall Led_show1
ljmp ketthuc
Kiem_tra1 :
Cjne A,#01h,Ktra2
mov A,R6
Dec A
mov R6,A
lcall Led_show1
ljmp ketthuc
Ktra2 :
Cjne A,#02h,ktra3
mov A,R7
inc A
mov R7,A
lcall Led_show1
Lcall ketthuc
ktra3:
Cjne A,#03h,ketthuc
mov A,R7
dec A
mov R7,A
lcall Led_show1
Lcall ketthuc
ketthuc:
Pop Acc
Reti
; Truyen thong
Mov TMOD,#20h
Mov TH1,#0fdh
Mov SCON,#50
Setb TR1
Send:
Mov SBUF,A
Wait:
Jnb TI,Wait
Clr TI
29
Ret
End.
30
V. Kết luận,tài liệu tham khảo
Sau 12 tuần nghiên cứu ,thiết kế và được sự giúp đỡ tận tình của thầy Hoàng Sĩ
Hồng chúng em đã hoàn thành các yêu cầu cơ bản của môn học đồ án Vi xử lý.Tuy
bài tập của chúng em còn nhiều hạn chế do sự nghiên cứu ,tím hiểu về VĐK,linh
kiện,thiếu kinh nghiệm thực tế nhưng qua thực hiện bài tập môn học này chúng em
đã hiểu hơn về cấu tạo ,hoạt động và ứng dụng của VĐK,đặc biệt là
VĐK89C51.Chúng em xin chân thành cảm ơn thầy Hoàng Sĩ Hồng và các thầy cô
trong bộ môn đã giúp đỡ và tạo điều kiện thuận lợi cho chúng em.
31