Tải bản đầy đủ (.docx) (30 trang)

mạch đo nhiệt độ dùng vxl89c51 hiển thị trên led 7 đoạ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 (1.16 MB, 30 trang )

Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
CHƯƠNG 1: GIỚI THIỆU CÁC LINH KIỆN
1.1 IC XỬ LÝ TRUNG TÂM 89C51:
1.1.1 Cấu tạo sơ đồ chân 89C51:
AT89C51 là IC vi điều khiển (Microcontroller) do hãng Atmel sản xuất. IC này có
đặc điểm như sau:
• 4k byte ROM,128 byte RAM nội.
• 4 Port I/O 8 bit.
• 2 bộ đếm/ định thời 16 bit.
• Giao tiếp truyền dữ liệu nối tiếp.
• 64k byte bộ nhớ bên ngoài dung để lưu chương trình điều khiển.
• 64k byte bộ nhớ bên ngoài dung để lưu dữ liệu.
• 210 bit có thể truy xuất từng bit
• Có các lệnh xử lý bit.
Sơ lược về các chân của 89C51:
Hình 1.1. Sơ đồ chân 89C51
SVTH:Nguyễn Thành Luân 1 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
1.1.2 Nguyên lý hoạt động của các chân 89C51:
Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7). Port 0 có 2 chức năng: trong các thiết kế
cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối với thiết kế
lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu.
Port 1: từ chân 1 đến chân 8 (P1.0 _ P1.7). Port 1 chỉ có chức năng dung làm các
đường điều khiển xuất nhập IO
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7). Nếu không dùng bộ nhớ mở rộng bên
ngoài thì port 2 dùng làm các đường điều khiển IO.Nếu dung bộ nhớ mở rộng bên ngoài thì
port 2 có chức năng là bus địa chỉ cao A0 – A15.
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7). Port 3 là port có 2 chức năng.Các chân
port này có nhiều chức năng , các công dụng chuyển đổi có liên hệ đặc biệt của 89C51 như
ở bảng sau:
PSEN (Program store enable):


PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở
rộng thường được nối đến chân OE\ của Eprom cho phép đọc các byte mã lệnh.
PSEN ở mức thấp trong thời gian 89C51 lấy lệnh. Các mã lệnh của chương trình
được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89C51 để giải
mã lệnh. Khi 89C51 thi hành chương trình trong EPROM nội PSEN ở mức logic 1.
ALE (Address Latch Enable):
Khi 89C51 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và dữ liệu
(AD7 – AD0) do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30
dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng
với IC chốt.
Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp
nên chốt địa chỉ hoàn toàn tự động.
EA\ (External Access):
Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0.
Nếu ở mức 1 thì vi điều khiển thi hành chương trình từ bộ nhớ nội.
Nếu ở mức 0 thì vi điều khiển thi hành chương trình từ bộ nhớ ngoại.
RST (Reset):
Ngõ vào chân 9 là ngõ vào Reset.Khi cấp điện cho hệ thống hoặc nhấn nút reset thì
mạch sẽ reset vi điều khiển.Khi reset thì tín hiệu reset phải ở mức cao ít nhất 2 chu kì máy.
SVTH:Nguyễn Thành Luân 2 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Các ngõ vào bộ dao động Xtal1, Xtal2:
Bộ tạo dao động được tích hợp bên trong 89C51. Khi sử dụng 89C51, người ta chỉ
cần nối thêm tụ thạch anh và các tụ. Tần số tụ thạch anh thường là 12 Mh – 24 Mh.

• Cấu trúc bên trong của 89C51
B1. Sơ đồ khối bên trong 89C51:
Hình 1.2. Cấu trúc bên trong của vi điều khiển

SVTH:Nguyễn Thành Luân 3 GVHD: Nguyễn Hữu Khánh Nhân

Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
B2. Tổ chức bộ nhớ.
Hình 1.3. Bảng tóm tắt các vùng nhớ 89C51
RAM bên trong 89C51 được phân chia như sau:
 Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
 RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH
 RAM đa dụng từ 30H đến 7FH.
 Các thanh ghi chức năng từ 80H đến FFH.
SVTH:Nguyễn Thành Luân 4 GVHD: Nguyễn Hữu Khánh Nhân
7F 7E
7D 7C 7B 7A
79 78
2F
77
76 75 74 73 72 71 70
2E
6F
6E
6D 6C 6B 6A
69
68
2D
67 66 65 64 63 62 61 60
2C
5F
5E
5D 5C 5B 5A
59
58
2B

57
56 55 54 53 52 51 50
2A
4F 4E
4D 4C 4B 4A
49 48
29
47
46 45 44 43 42 41 40
28
3F 3E
3D 3C 3B 3A
39 38
27
37
36 35 34 33 32 31 30
26
2F 2E
2D 2C 2B 2A
29 28
25
27
26 25 24 23 22 21 20
24
1F 1E
1D 1C 1B 1A
19 18
23
17 16 15 14 13 12 11 10
22

0F
0E
0D 0C 0B 0A
09
08
21
07 06 05 04 03 02 071 00
20
Bank 31F
18
Bank 217
10
Bank 10F
08
Bank thanh ghi 0
(mặc đònh cho R0-R7)
07
00
RAM đa dụng
7F
30
RAM
Đòa chỉ bit
87 86 85 84 83 82 81 80
80
P0
không được đòa chỉ hóa bit
81
SP
không được đòa chỉ hóa bit

82
DPL
không được đòa chỉ hóa bit
83
DPH
không được đòa chỉ hóa bit
87
PCON
8F 8E
8D 8C 8B 8A
89 88
88
TCON
không được đòa chỉ hóa bit
89
TMOD
không được đòa chỉ hóa bit
8A
TL0
không được đòa chỉ hóa bit
8B
TL1
không được đòa chỉ hóa bit
8C
TH0
97 96 95 94 93 92 91 90
90
P1
9F 9E
9D 9C 9B 9A

99 98
98
SCON
không được đòa chỉ hóa bit
99
SBUF
A7 A6 A5 A4 A3 A2 A1 A0
A0
P2
AF – – AC AB AA A9 A8
A8
IE
– – – BC BB BA B9 B8
B8
IP
E7 E6 E5 E4 E3 E2 E1 E0
E0
ACC
D7 D6 D5 D4 D3 D2 – D0
D0
PSW
B7 B6 B5 B4 B3 B2 B1 B0
B0
P3
F7 F6 F5 F4 F3 F2 F1 F0
F0
B
CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
Đòa chỉ bit
không được đòa chỉ hóa bit

8D
TH1
FF
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Hình 1.4. Cấu trúc bộ nhớ Ram bên trong vi điều khiển
- Bộ nhớ trong 89C51 bao gồm ROM và RAM. RAM trong 89C51 bao gồm nhiều thành
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.
SVTH:Nguyễn Thành Ln 5 GVHD: Nguyễn Hữu Khánh Nhân
Địa chỉ
byte
Địa
chỉ
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
- 89C51 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. Chương trình và dữ liệu có thể chứa bên trong 8951 nhưng 8951 vẫn có
thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu.
-Bộ nhớ bên trong 89C51 bao gồm ROM và RAM. RAM bao gồm nhiều thành 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.AT89C51 có bộ nhớ theo cấu trúc Harvard: có những vùng nhớ riêng
biệt cho chương trình và dữ liệu. Chương trình và dữ liệu có thể chứa bên trong 89C51
nhưng 89C51 vẫn có thể kết nối với 64 k byte bộ nhớ chương trình và 64 k byte bộ nhớ dữ
liệu mở rộng.
Ram bên trong 89C51 được phân chia như sau:
• Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
• Ram địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
• Ram đa dụng từ 30H đến 7FH.
• Các thanh ghi chức năng đặc biệt từ 80H đến FFH.
Ram đa dụng:
Vùng nhớ Ram đa dụng gồm có 80 byte địa chỉ từ 30H – 7FH .Vùng nhớ bank

thanh ghi 32 byte từ 00H – 1FH cũng có thể dung làm vùng nhớ Ram đa dụng. Mọi địa chỉ
trong vùng Ram đa dụng đều có thể truy xuất tự do dùng kiểu địa chỉ trực tiếp hoặc gián
tiếp. Bộ nhớ ngan xếp của vi điều khiển dùng bộ nhớ Ram nội nên dung lượng bộ nhớ ngăn
xếp nhỏ trong khi đó các bộ vi xử lý bên ngoài làm bộ nhớ ngăn xếp nên dung lượng tùy ý
mở rộng.
Ram có thể truy xuất từng bit:
89C51 chứa 210 bit được địa chỉ hóa từng bit, trong đó 128 bit chứa ở các byte có
địa chỉ từ 20H đến 2FH, các bit còn lại chứa trong nhóm thanh ghi chức năng đặc biệt.
Ýtưởng truy xuất từng bit bằng phần mềm là một đặc tính mạnh của vi điều khiển
nói chung. Các bit có thể được đặt, xóa, and, or,… với 1 lệnh đơn. Ngoài ra các port cũng
có thể truy xuất được từng bít làm đơn giản phần mềm xuất nhập từng bit.
Các bank thanh ghi:
Bộ lệnh 89C51 hỗ trợ 8 thanh ghi có tên là 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 đến 07H.
Đây là lệnh 1 byte dùng địa chỉ thanh ghi. Tuy nhiên có thể thi hành bằng lệnh 2
byte dùng địa chỉ trực tiếp nằm trong byte thứ 2: MOV A, 05H.
Lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn nhiều so với lệnh
tương ứng dùng địa chỉ trực tiếp.
SVTH:Nguyễn Thành Luân 6 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Bank thanh ghi tích cực bằng cách thay đổi các bit trong từ trạng thái chương trình
(PSW). Giả sủ thanh ghi thứ 3 đang được truy xuất, lệnh sau đây sẽ di chuyển nội dung của
thanh ghi A vào ô nhớ ram có địa chỉ 18H:
MOV R0, A.
Các thanh ghi có chức năng đặc biệt:
89C51 có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Register) ở vùng trên
của RAM nội từ địa chỉ 80H đến FFH.
Chú ý: tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 thanh ghi chức
năng đặc biệt được định nghĩa sẵn các địa chỉ.
Các thanh ghi port xuất nhập:

Các port của 89C51 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở địa
chỉ A0H, và port3 ở địa chỉ B0H. tất cả các port này đều có thể truy xuất từng bit nên rất
thuận tiện trong khả năng giao tiếp.
Các thanh ghi timer:
89C51 có chứa 2 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 (TL0: byte thấp) và 8CH (TH0: byte cao). Timer 1 ở địa
chỉ 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ỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H,
chỉ có TCON được địa chỉ hóa từng bit.
Các thanh ghi port nối tiếp:
89C51 chứa một port nối tiếp dành 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 nối tiếp với các IC khác. Một thanh ghi gọi là bộ
đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả 2 dữ liệu truyền và dữ liệu nhận. Khi
truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF. 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 ở địa chỉ 98H.
Các thanh ghi ngắt:
89C51 có cấu trúc 5 nguồn ngắt, 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 ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H, cả 2
thanh ghi được địa chỉ hóa từng bit.
Thanh ghi điều khiển công suất:
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa các bit điều khiển.
Tín hiệu Reset:
SVTH:Nguyễn Thành Luân 7 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
89C51 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu kỳ,
sau đó xuống mức thấp để 89C51 bắt đầu làm việc. RST có thể kích bằng tay bằng một
phím nhấn thường mở, sơ đồ mạch reset như hình trên (hình a)
sau khi reset hệ thống được tóm tắt như sau:
Thanh ghi Nội dung
Đếm chương trình PC

Thanhghi tích lũy A
Thanh ghi B
Thanh ghi trạng thái
SP
DPTR
Port 0 đến Port 3
IP
IE
Các thanh ghi định thời
0000H
00H
00H
00H
07H
0000H
FFH
XXX0000 B
0XX00000 B
00H
Hoạt động thanh ghi TIMER
89C51 có hai timer 16 bit, mỗi timer có bốn cách làm việc. Người ta sử dụng các
timer để
• Định khoảng thời gian.
• Đếm sự kiện.
• Tạo tốc độ baud cho port nối tiếp trong 89C51.
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng
SVTH:Nguyễn Thành Luân 8 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
đều đặn và đặt cờ tràn timer. Cờ được dùng để đồng bộ hóa chương trình để thực hiện một
tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các ngõra. Các ứng

dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua
giữa hai sự kiện (ví dụ đo độ rộng xung ).Truy xuất các timer của 89C51 dùng sáu thanh
ghi chức năng đặc biệt cho trong bảng sau:
SFR Mục Đích Địa chỉ Địa chỉ hóa từng bit
TCON Điều khiển Timer 88H Có
TMOD Chế độ Timer 89H Không
TL0 Byte thấp của Timer 0 90H Không
TL1 Byte thấp của Timer 1 91H Không
TH0 Byte cao của Timer 0 92H Không
TH1 Byte cao của Timer 1 93H Không
Các thanh ghi chức năng của timer trong 8031.
Thanh ghi chế độ timer (TMOD):
Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0, và Timer
1
Bit Tên Time
r
Mô tả
7 GATE 1 Bit mở cổng, khi lên 1 timer chỉ chạy khi INT1 ở mức
cao
6 C/T 1 Bit chọn chế độ Count/Timer
1 = bộ đếm sự kiện
0 = bộ định khoảng thời gian
5 M1 1 Bit 1 của chế độ mode
4 M0 1 Bit 0 của chế độ mode
3 GATE 0 Bit mở cổng, khi lên 1 timer chỉ chạy khi INT0 ở mức
SVTH:Nguyễn Thành Luân 9 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
cao
2 C/T 0 Bit chọn chế độ Count/Timer
1 M1 0 Bit 1 của chế độ mode

0 M0 0 Bit 0 của chế độ mode
Tóm tắt thanh ghi chức năng TMOD.
Thanh ghi điều khiển timer(TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer 1, Timer 0.
Bit Ký hiệu Địa chỉ Mô tả
TCON.7 TF1 8FH Cờ báo tràn timer 1. Đặt bởi phần cứng khi tràn,
được xóa bởi phần mềm, hoặc phần cứng khi bộ
xử lý chỉ đến chương trình phục vụ ngắt.
TCON.6 TR1 8EH Bit điều khiển timer 1 chạy đặt xóa bằng phần
mềm để cho timer chạy ngưng.
TCON.5 TF0 8DH Cờ báo tràn Timer 0.
TCON.4 TR0 8CH Bit điều khiển Timer 0 chạy
TCON.3 IE1 8BH Cờ cạnh ngắt 1 bên ngoài. Đặt bởi phần cứng
khi phát hiện một cạnh xuống ở INT1 xóa bằng
phần mềm họăc phần cứng khi CPU chỉ đến
chương trình phục vụ ngắt.
TCON.2 IT1 8AH Cờ kiểu ngắt 1 bên ngoài. Đặt xóa bằng phần
mềm để ngắt ngoài tích cực cạnh xuống /mức
thấp.
TCON.1 IE0 89H Cờ cạnh ngắt 0 bên ngòai
TCON.0 IT0 88h Cờ kiểu ngắt 0 bên ngoài
Khởi động và truy xuất thanh ghi timer:
Thông thường các thanh ghi được khởi động một lần đầu ở chương trình để đặt ở chế
độ làm việc đúng. Sau đó, trong thân chương trình, các thanh ghi timer được cho chạy,
dừng, các bit được kiểm tra và xóa, các thanh ghi timer được đọc và cập nhật…. theo đòi
hỏi các ứng dụng.
SVTH:Nguyễn Thành Luân 10 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoạt động. Ví dụ, các
lệnh sau khởi động Timer 1 như timer 16 bit (chế độ 1) có xung nhịp từ bộ dao động tên

chip cho việc định khoảng thời gian:
MOV TMOD, #1B
Lệnh này sẽ đặt M1 = 1 và M0 = 0 cho chế độ 1, C/ T= 0 và GATE = 0 cho xung nhịp
nội và xóa các bit chế độ Timer 0. Dĩ nhiên, timer không thật sự bắt đầu định thời cho đến
khi bit điều khiển chạy TR1 được đặt lên 1.
Nếu cần số đếm ban đầu, các thanh ghi TL1/TH1 cũng phải được khởi động. Một
khoảng 100 s có thể được khởi động bằng cách khởi động giá trị cho TH1/TL1 là
FF9CH:
MOV TL1, #9CH
MOV TH1, #0FFH
Rồi timer được cho chạy bằng cách đặt bit điều khiển chạy như sau:
SETB TR1
Cờ báo tràn được tự động đặt lên 1 sau 100ms. Phần mềm có thể đợi trong 100 ms
bằng cách dùng lệnh rẽ nhánh có điều kiện nhảy đến chính nó trong khi cờ báo tràn chưa
được đặt lên 1:
WAIT: JNB TF1, WAIT
Khi timer tràn, cần dừng timer và xóa cờ báo tràn trong phần mềm:
CLR TR1
CLR TF1
Ngắt ( INTERRUPT)
Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời
chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác.
Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều
khiển. Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện
đó trong khi một chương trình khác đang thực thi.
Tổ chức ngắt của 89C51:
Có 5 nguồn ngắt ở 89C51: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port nối tiếp. Tất cả
các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một
bằng phần mềm.
SVTH:Nguyễn Thành Luân 11 GVHD: Nguyễn Hữu Khánh Nhân

Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Khi có hai hoặc nhiều ngắt đồng thời, hoặc một ngắt xảy ra khi một ngắt khác đang
được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức dùng để xác định việc
thực hiện các ngắt. Việc hỏi vòng tuần tự thì cố định nhưng ưu tiên ngắt thì có thể lập trình
được.
Cho phép và cấm ngắt :
Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt
có định địa chỉ bit IE ( Interrupt Enable : cho phép ngắt ) ở địa chỉ A8H.
Bit Ký hiệu Địa chỉ bit Mô tả
IE.7 EA AFH Cho phép / Cấm toàn bộ
IE.6 _ AEH Không được mô tả
IE.5 ET2 ADH Cho phép ngắt từ Timer 2
(8052)
IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
IE.0 EX0 A8H Cho phép ngắt ngoài 0
Tóm tắt thanh ghi IE
Các cờ ngắt :
Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên một để
xác nhận ngắt.
Ngắt Cờ Thanh ghi SFR và vị trí bit
Bên ngoài 0 IE0 TCON.1
Bên ngoài 1 IE1 TCON.3
Timer 1 TF1 TCON.7
Timer 0 TF0 TCON.5
SVTH:Nguyễn Thành Luân 12 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Port nối tiếp TI SCON.1

Port nối tiếp RI SCON.0
Các lọai cờ ngắt
Các vectơ ngắt :
Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là vector ngắt. Nó là địa chỉ
bắt đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau
Ngắt Cờ Địa chỉ vector
Reset hệ thống RST 0000H
Bên ngoài 0 IE0 0003H
Timer 0 TF0 000BH
Bên ngoài 1 IE1 0013H
Timer 1 TF1 001BH
Port nối tiếp TI và RI 0023H
Timer 2 002BH
Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa
này, nó giống ngắt : nó ngắt chương trình chính và nạp cho PC giá trị mới.
1.2 IC LM 35DZ:
1.2.1 Cấu tạo :
SVTH:Nguyễn Thành Luân 13 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Hình 1.5 ICLM35DZ
Đặc tính của LM35DZ :
 Đo trực tiếp
0
C.
 Ngõ ra tuyến tính với độ nhạy 10mV/
0
C.
 Độ chính xác 0.5
0
C ở 25

0
C.
 Tầm đo từ – 55
0
C đến 150
0
C.
 Điện áp làm việc từ 4V đến 30V.
 Thích hợp cho ứng dụng từ xa.
 Trở kháng ngõ ra thấp, 0.1ohm cho 1mA tải.
1.2.2 Nguyên lý hoạt động:
LM35 sẽ chuyển nhiệt độ môi trường xung quanh nó thành tín hiệu điện, cụ thể là LM35
biến nhiệt độ thành điện áp tương ứng là 10mV /1
0
C cung cấp tín hiệu cho bộ chuyển đổi
ADC.
1.3 IC ADC 0809:
1.3.1 Cấu tạo :
SVTH:Nguyễn Thành Luân 14 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
5 V D C
0
5 k
0
0
5 V D C
0
N G Õ R A L M 3 5
U 3
A D C 0 8 0 9

1 0
9
7
1 7
1 4
1 5
8
1 8
1 9
2 0
2 1
6
2 2
1 11 3
1 2
1 6
2 6
2 7
2 8
1
2
3
4
5
2 5
2 4
2 3
C L K
O E
E O C

D 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
S T A R T
A L E
V C CG N D
R E F +
R E F -
I N 0
I N 1
I N 2
I N 3
I N 4
I N 5
I N 6
I N 7
A 0
A 1
A 2
T Í N
H I Ê U
N G Õ
R A
Hình 1.6 ADC 0809
Bộ ADC0809 là một thiết bị CMOS tích hợp với một bộ chuyển đổi từ tương tự sang

số 8 bit, bộ chọn 8 kênh với một bộ logic điều khiển tương thích. Bộ chuyển đổi ADC 8 bit
này dùng phương pháp chuyển đổi xấp xỉ liên tục. Bộ chọn kênh có thể truy xuất bất kỳ
kênh nào trong các ngõ vào tương tự một cách độc lập.
Thiết bị này loại trừ khả năng cần thiết điều chỉnh điểm 0 bên ngoài và khả năng điều
chỉnh tỉ số làm tròn, ADC 0809 dễ dàng giao tiếp với các bộ vi xử lý.
+ Ý nghĩa các chân :
. IN
0
đến IN
7
: 8 ngõ vào tương tự.
. A, B, C : giải mã chọn một trong 8 ngõ vào
. ALE : cho phép chốt địa chỉ
. START : xung bắt đầu chuyển đổi
. CLK : xung đồng hồ
. REF (+) : điện thế tham chiếu (+)
. REF (-) : điện thế tham chiếu (-)
. VCC : nguồn cung cấp
. GND : mass
+ Đặc tính :
. Độ phân giải 8 bit
. Tổng sai số chưa chỉnh định ± ½ LSB; ± 1 LSB
. Thời gian chuyển đổi: 100μs ở tần số 640 kHz
. Nguồn cung cấp + 5V
SVTH:Nguyễn Thành Luân 15 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
. Điện áp ngõ vào 0 – 5V
. Tần số xung clock 10kHz – 1280 kHz
. Nhiệt độ hoạt động - 40
o

C đến 85
o
C
. Dễ dàng giao tiếp với vi xử lý hoặc dùng riêng
. Không cần điều chỉnh zero hoặc đầy thang
1.3.2 Nguyên lý hoạt động :
Sau khi kích xung start thì bộ chuyển đổi bắt đầu hoạt động ở cạnh xuống của xung
start, ngõ ra EOC sẽ xuống mức thấp sau khoảng 8 xung clock (tính từ cạnh xuống của
xung start). Lúc này bit có trọng số lớn nhất (MSB) được đặt lên mức 1, tất cả các bit còn
lại ở mức 0, đồng thời tạo ra điện thế có giá trị Vref/2, điện thế này được so sánh với điện
thế vào Vin.
+ Nếu Vin > Vref/2 thì bit MSB vẫn ở mức 1.
+ Nếu Vin < Vref/2 thì bit MSB vẫn ở mức 0.
Tương tự như vậy bit kế tiếp MSB được đặt lên 1 và tạo ra điện thế có giá trị Vref/4
và cũng so sánh với điện áp ngõ vào Vin. Quá trình cứ tiếp tục như vậy cho đến khi xác
định được bit cuối cùng. Khi đó chân EOC lên mức 1 báo cho biết đã kết thúc chuyển đổi.
Trong suốt quá trình chuyển đổi chân OE được đặt ở mức 1, muốn đọc dữ liệu ra chân OE
xuống mức 0. Trong suốt quá trình chuyển đổi nếu có 1 xung start tác động thì ADC sẽ
ngưng chuyển đổi.
Mã ra N cho một ngõ vào tuỳ ý là một số nguyên :
Trong đó:
V
IN
: điện áp ngõ vào hệ so sánh
V
ref -
: điện áp tại chân REF –
V
ref +
: điện áp tại chân REF +

Ví dụ trường hợp dùng ADC0809 để chuyển đổi tín hiệu từ
LM35trong mạch:
Nếu chọn V
ref-
= 0V thì
SVTH:Nguyễn Thành Luân 16 GVHD: Nguyễn Hữu Khánh Nhân
256( )
( )
IN ref
ref ref
V V
N
V V

+ −

=

256
in
ref
V
N
V
+
×
=
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Do LM35 có độ nhạy 10mV/1
0

C nên:
1.4 Các linh kiện khác:
- IC 74HC14 tạo xung clock
- Các loại điện trở, tụ điện, LED, led 7 thanh,transistor loại pnp A1015
- Thạch anh 12Mhz để tạo dao động
- IC ổn áp LM7805 tạo ra nguồn có điện áp 5V không đổi
CHƯƠNG 2 : GIỚI THIỆU MẠCH ĐO NHIỆT ĐỘ DÙNG VXL89C51 HIỂN
THỊ TRÊN LED 7 ĐOẠN
2.1 Tổng quan:
* Giới thiệu đề tài :
Nhiệt độ luôn gắn liền với đời sống chúng ta và nó có tác dụng rất lớn đến cuộc sống
của chúng ta về mặt tích cực cũng như tiêu cực. Việc đo đạc để xác định nhiệt độ là rất
quan trọng trong một số lĩnh vực, ví dụ như một lò áp trứng nhân tạo nếu không xác định
được nhiệt độ lò thích hợp cho việc ấp trứng thì trứng sẽ hư, cũng như các lò nhiệt cũng
vậy.
SVTH:Nguyễn Thành Luân 17 GVHD: Nguyễn Hữu Khánh Nhân
3
256 10 10
2,56
1
ref
V V

+
× ×
= =
Cảm Biến
Chuyển Đổi ADC
Xung Clock
Xử Lý

Hiển thị
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Nhận thấy có rất nhiều ứng dụng có liên quan đến việc đo nhiệt độ như máy điều hoà
không khí, lò nhiệt, lò ấp trứng nhân tạo, bếp điện, bếp từ,… nên em đã tìm hiểu và muốn
thực hiện đề tài về mạch đo nhiệt đo. Sau khi tìm hiểu một số thông tin em quyết định chọn
đề tài “ mạch đo nhiệt độ dung VXL89C51 hiển thị trên led 7 đoạn ” để thực hiện một
ứng dụng nhỏ về việc đo nhiệt độ .
Yêu cầu đặt ra cho mô hình của em là thiết kế một mạch ứng dụng dùng để đo nhiệt độ môi
trường hiển thị trên led 7 đoạn.
Đề tài chỉ mang tính chất mô phỏng một ứng dụng nhỏ về việc đo nhiệt độ. Nhưng
đây cũng là một cơ sở để em có thể tìm hiểu, nghiên cứu và vận dụng những kiến thức đã
được thầy cô chỉ dẫn và là nền tản để em có thể tìm hiểu sâu hơn về các ứng dụng thực tế
trong cuộc sống hằng ngày cũng như các hệ thống trong công nghiệp.
2.2 Chức năng từng khối :
SVTH:Nguyễn Thành Luân 18 GVHD: Nguyễn Hữu Khánh Nhân
Cảm biến
Nhiệt độ Điện áp
ADC
Điện áp Tín hiệu số
Xung Clock
Xung CLK
Xử Lý
Tín hiệu vào Tín hiệu đã xử lý
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
- Khối cảm biến :
Khối cảm biến có chức năng nhận tín hiệu nhiệt độ qua bộ cảm biến, ở đây ta dùng IC
LM35, để biến giá trị nhiệt độ thành giá trị điện áp tương ứng. Có nhiều loại cảm biến
nhiệt độ nhưng ta sử dụng LM35 vì nó tuyến tính, đơn giản và dể sử dụng vì sẽ chuyển đổi
tuyến tính trực tiếp tương ứng 10mV /1
0

C và tầm đo từ -55
0
C đến 150
0
C.
- Khối chuyển đổi ADC:
Khối chuyển đổi ADC có nhiệm vụ biến tín hiệu điện áp được tạo ra từ bộ cảm biến
thành tín hiệu số nhờ vào IC chuyển đổi tương tự sang số ADC0809, có thể sử dụng
ADC0804 hoặc ADC0809. Nhưng ta nên chọn ADC0809 vì nó dễ sử dụng và có 8 kênh
ngõ vào nên có thể mở rộng ứng dụng sau này.
- Khối xung clock :
IC chuyển đổi tương tự sang số ADC0809 muốn làm việc được thì phải có xung dao
động tác động vào chân CLK của nó vì vậy ta cần phải có bộ tạo xung clock. Có rất nhiều
cách để tạo xung clock, ở đây chúng ta sử dụng bộ dao động RC và IC 74HC14 vì nó đơn
giản lại ổn định và sóng ngõ ra có dạng xung vuông.
- Khối xử lí :
-
-
SVTH:Nguyễn Thành Luân 19 GVHD: Nguyễn Hữu Khánh Nhân
Hiển thị
Tín hiệu từ khối xửlý
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
Khối xử lý tín hiệu nhận các tín hiệu từ khối chuyển đổi ADC và khối cài đặt để xử lý nhờ
vào bộ vi điều khiển 89C51 đã lập trình theo yêu cầu cho ra các mức logic để đưa đến khối
hiển thị để hiện thị nhiệt độ.
- Khối hiển thị :
Khối hiển thị chính là các led 7 đoạn dùng để hiện thị nhiệt độ đo được đã qua bộ vi
điều khiển xử lý và cho ra các mã tương ứng của led 7 đoạn.
2.3 Hướng phát triển của đề tài :
Đề tài “ mạch đo nhiệt độ dung VXL89C51 hiển thị trên led 7 đoạn ” chỉ sử dụng

1 kênh trong 8 kênh chuyển đổi của ADC0809 nên ta có thể phát triển hơn bằng cách đo
nhiều kênh hơn ở nhiều nơi khác nhau. Mạch mới chỉ thực hiện hiển thị giá trị nhiệt độ trên
led 7 đoạn nên ta có thể giao tiếp với LCD để kết quả hiển thị được sinh động hơn. Bên
cạnh đó về phền mềm lập trình ta có thể viết bằng ngôn ngữ C sẽ trực quan và dễ tiếp cận
hơn.
Với đề tài này ta có thể thiết kế một số ứng dụng thực tế hơn như lò ấp trứng nhân
tạo, hệ thống tưới tiêu tự động, bộ điều khiển lò nhiệt,…. Và có thể giao tiếp và điều khiển
qua máy tính.
SVTH:Nguyễn Thành Luân 20 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
CHƯƠNG 3 : THI CÔNG MẠCH
3.1 Sơ đồ nguyên lý :
SVTH:Nguyễn Thành Luân 21 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
SVTH:Nguyễn Thành Luân 22 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
3.2 Nguyên lý hoạt động của mạch:
Mạch đo nhiệt độ là một mô hình nhỏ ứng dụng IC cảm biến nhiệt độ LM35 để đo
nhiệt độ và vi điều khiển 89C51 để xử lý và điều khiển.
Khi cấp nguồn cho mạch, LM35 sẽ chuyển nhiệt độ môi trường xung quanh nó thành
tín hiệu điện, cụ thể là LM35 biến nhiệt độ thành điện áp tương ứng là 10mV /1
0
C. Để hiển
thị nhiệt độ này trên led 7 đoạn thì cần vi điều khiển 89C51. 89C51 chỉ xử lý tín hiệu số
nên ta phải dùng IC ADC0809 để chuyển giá trị điện áp ngõ ra của LM35 (tương ứng nhiệt
độ ngõ vào) thành tín hiệu số với các mã nhị phân tương ứng. 89C51 đã lập trình sẵn sẽ lấy
giá trị ngõ ra của ADC0809 xử lý nó và hiển thị nhiệt độ đo được trên led 7 đoạn.
SVTH:Nguyễn Thành Luân 23 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
3.3 Sơ đồ mạch in:

SVTH:Nguyễn Thành Luân 24 GVHD: Nguyễn Hữu Khánh Nhân
Đồ án 1 : Mạch đo nhiệt độ dùng VXL89C51 hiển thị trên led 7 đoạn
3.4 Code lập trình :
ALE BIT P0.7
START BIT P0.6
CHUC EQU 31H
DVI EQU 30H
LED_DATA EQU P1
ORG 000H
MAIN:
CLR ALE ;START,ALE = 00;
CLR START
TD:
LCALL CH_DOI
LCALL HEX_BCD
LCALL OUT_LED
LJMP TD
………………………………………………………………………………………………
………
CH_DOI:
SETB ALE ;ALE=1
SETB START ;START=1
NOP
SVTH:Nguyễn Thành Luân 25 GVHD: Nguyễn Hữu Khánh Nhân

×