ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN
BỘ MÔN TỰ ĐỘNG – ĐO LƯỜNG
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51
ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
GIÁO VIÊN HƯỚNG DẪN : TS. LÂM TĂNG ĐỨC
SINH VIÊN THỰC HIỆN : VÕ NGỌC TUYẾN
LỚP : 02Đ2A
LỜI CẢM TẠ
Trong suốt khoá học (2002-2007) tại trường Đại
Học Bách Khoa Đà Nẵng, được sự dạy dỗ tận
tình của các thầy cô Khoa Điện đã cung cấp cho
em những kiến thức chuyên môn cần thiết để em
có thể thực hiện hoàn thành đề tài này.Em xin
chân thành cảm tạ đến:
Bộ môn Tự Động –Đo Lường đã trang bị cho
em những kiến thức cần thiết để em có thể hoàn
thành đề tài này và tạo điều kiện cho em hoàn
tất khoá học.
Đặc biệt TS. Lâm Tăng Đức- giáo viên hướng
dẫn đề tài đã có những lời khuyên quí báu giúp
em có những định hướng tốt trong khi thực hiện
đề tài này.
Tất cả các bạn đã đóng gốp ý kiến trong lúc
mình thực hiện đề tài.
TP. Đà Nẵng- Tháng 5 Năm 2007
Sinh viên thực hiện
Võ Ngọc Tuyến
Mục lục
Chương I: GIỚI THIỆU …………………………………………..…trang 1
Chương II: GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN AT89C51……….2
I./ Giới thiệu. ………………………………………………… 2
II/ Lịch sử phát triển………………………………………...........2
III/ Khảo sát họ vi điều khiển 8051 và 8031: …………………….3
1./ Cấu trúc bên trong của 8051/8031 ……………………...........3
2./ Chức năng các chân của vi điều khiển ……………………….4
3./ Tổ chức bộ nhớ ………………………………………………7
4./ Các thanh ghi chức năng đặc biệt ……………………………10
5./ Bộ nhớ ngoài………………………………………………….14
6./ Lệnh Reset……………………………………………………18
7./ Hoạt động của bộ định thời…………………………………..18
8./ Hoạt động của port nối tiếp ………………………………….25
9./ Hoạt động ngắt ……………………………………………….28
10./ Tập lệnh của 8051 và 8031…………………………………..32
Chương III: KHẢO SÁT VI MẠCH GIAO TIẾP NGOẠI VI 8255A…….39
I./ Cấu trúc phần cứng 8255 …………………………….……...39
II./ Cấu trúc phần mềm của 8255 ………………………….…..41
III./ Giao tiếp giữa vi xử lí với 8255A…………………………....42
1./ Giao tiếp kiểu I/O …………………………………………...42
2./ Giao tiếp kiểu bộ nhớ ……………………………………….43
Chương IV: KHẢO SÁT BỘ NHỚ BÁN DẪN ………………………… ..44
I./ Bộ nhớ chỉ đọc ROM ………………………………………....44
1./ Cấu trúc bên trong của ROM ……………………………….. .44
2./ Thời hằng truy xuất của bộ nhớ ROM……………………..…..46
3./ Các loại bộ nhớ ROM……………………………………..…...46
4./ Khảo sát bộ nhớ EPROM 2764…………………………..….....46
II./ Bộ nhớ RAM…………………………………………….……..48
1./ Cấu trúc của RAM ……………………………………………..48
2./ Các loại RAM ………………………………………………….49
Chương V: CHUYỂN ĐỔI TƯƠNG TỰ- SỐ ……………………………...50
I./ Khái niệm chung ………………………………………………….50
II./ Các phương pháp chuyển đổi tương tự- số………………………..51
1./ Phương pháp tích phân (Intergration methol)…….………………51
2./ Phương ADC xấp xỉ liên tiếp ( Successive-Approximation ADC)..52
3./ Phương pháp song song ( paralled methol)………………….53
Chương VI: ĐO NHIỆT ĐỘ- ĐỘ ẨM ……………………………………55
I./ Hệ thống đo lường……………………………………………55
1./ Giới thiệu…………………………………………………….55
2./ Hệ thống đo lường số ………………………………………..55
II./ Đo Nhiệt Độ:…………………………………………………56
III./ Đo Độ Ẩm : ……………………………………………….57
1./ Không khí ẩm ………………………………………………..57
2./ Các thông số đặc trưng của không khí ẩm …………………..58
3./ Các thiết bị đo độ ẩm hiện có………………………………...60
Chương VII: THIẾT KẾ - LẬP TRÌNH ……………………………….61
I./ Nhiệm vụ thiết kế ……………………………………………61
II./ Sơ đồ và chức năng từng khối ………………………………. 61
III./ Thiết kế và phân tích chức năng từng khối …………………..62
1./ Bộ cảm biến độ ẩm HTM2500………………………………..62
2./ Thiết kế bộ cảm biến nhiệt độ………………………………...66
3./ Thiết kế bộ chuyển đổi tương tự số ADC…………………….69
4./ Mở rộng port nhập/xuất dùng PPI 8255A…………………….74
5./ Thiết kế bộ nhớ ……………………………………………..75
6./ Thiết kế giao tiếp bằng bàn phím……………………………..80
7./ Thiết kế mạch hiển thị ………………………………………..80
8./ Thiết kế mạch giao tiếp công xuất ……………………………85
IV./ Sơ đồ mạch nguyên lí thuật giải chương trình:……………….87
1./ Sơ đồ nguyên lí……………………………………………….88
2./ Thuật toán và chương trình…………………………………...89
Chương Kết Luận ……………………………………………………..99
Tài liệu tham khảo ……………………………………………………..100
Danh sách các hình vẽ, bảng biểu
Sơ đồ khối tổng quát ………………………………………………61
Bảng phạm vi làm việc của cảm biến ẩm………………………….62
Bảng đặc tính cảm biến ẩm………………………………………...63
Bảng các mức ra tham chiếu của cảm biến ẩm ……………………64
Qui định cấu trúc cảm biến ẩm và hình vẽ…………………………65
Sơ đồ mạch khuếch đại…………………………………………….66
Sơ đồ kết nối ADC0809 ………………………………………..…73
Bảng qui định địa chỉ …………………………………………..….77
Sơ đồ kết nối bộ nhớ ngoài với 8051……………………………...79
Sơ đồ giao tiếp bằng phím ………………………………………..80
Sơ đồ mạch hiển thị nhiệt độ và độ ẩm ………………………….83
Sơ đồ mạch hiển thị hệ số trọng lượng M ………………………...85
Sơ đồ mạch giao tiếp công xuất …………………………………..87
Sơ đồ nguyên lí toàn mạch ……………………………………..…89
Tóm tắt đồ án
Nội dung thuyết minh là sử dụng vi điều khiển AT89C51 để thiết kế hệ thống
đo và khống chế độ ẩm không khí trong phòng kín.Để đo được độ ẩm không
khí em sử dụng bộ cảm biến ẩm HTM2500 và cảm biến nhiệt độ LM35.Tín
hiệu tương tự thu được từ các bộ cảm biến được chọn và chuyển đổi thành tín
hiệu số thông qua bộ ADC0809. Dữ liệu số ra khỏi ADC0809 ở dạng 8 bit
được gởi đến Port 0 của vi điều khiển 8051 khi vi điều khiển có lệnh đọc dữ
liệu. Tương ứng với dữ liệu đọc được vi điều khiển sẽ cho xuất ra các bộ hiển
thị giá trị độ ẩm tương đối , nhiệt độ t, và giá trị hệ số trọng lượng hơi nước
M ứng với giá trị t đọc được. Người quan sát có thể tính được khối lượng hơi
nước bằng biểu thức * M / 1000 [g/m³].
Để tạo được dung lượng ROM đủ lớn có khả năng nhập được số liệu cho bảng
tra M (tính theo bảng nước và hơi nước bão hòa trong phạm vi nhiệt độ rộng),
em sử dụng EPROM 2764. EPROM 2764 có 8 bit địa chỉ thấp từ 8 bit của port
0 được chốt qua 74LS373, 5 bit địa chỉ cao nối với 5 bit thấp của port 2.
Hai IC 8255A được sử dụng để mở rộng port dữ liệu cho 8051 bằng cách ghép
8 bit dữ liệu của nó với 8 bit port 0 của 8051.
Để quản lí không gian địa chỉ chương trình, qua giá trị của 3 bit P2.7 P2.6 P2.5
IC giãi mã địa chỉ 74LS138 sẽ giúp chọn đúng IC có địa chỉ (đã được qui định
trước) mà con trỏ chương trình nhảy đến.
Các tải xoay chiều được điều khiển đóng cắt nguồn cấp bằng cách điều khiển
đóng cắt cấp điện cho cuộn dây của Rơle.
Như vậy, khi người quan sát chọn giá trị độ ẩm cần duy trì từ bàn phím thì
dưới tác động của chương trình đã nạp trước, các tải xoay chiều sẽ được đóng
cắt một cách thích hợp để duy trì độ ẩm không khí trong phòng theo đúng giá
trị đã đặt.
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
Ch¬ng I: GIỚI THIỆU
I. Đặt vấn đề:
Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ
thống điều khiển dần dần được tự động hoá. Với kỹ thuật tiên tiến vi xử lý, vi mạch
số….được ứng dụng vào lĩnh vực điều khiển tự động với chương trình thiết lập
trước thay thế cho các hệ thống điều khiển cơ khí thô sơ, tốc độ xử lý chậm, ít
chính xác.
Hiện nay, hầu hết các quy trình sản xuất hàng tiêu dùng quá trình sấy đóng
vai trò quan trọng quyết định đến chất lượng sản phẩm. Do đó, việc đo được nhiệt
độ, độ ẩm và khống chế các yếu tố này theo đúng yêu cầu mong muốn là điều hết
sức quan trọng và cần thiết.
Để kiểm soát được nhiệt độ, độ ẩm trong buồng sấy, dùng vi điều khiển 8051
để tự động hoá quá trình là phương pháp tiện lợi, giá thành thích hợp cho những
ứng dụng rộng rãi. Được sự đồng ý của Khoa Điện - Trường Đại học Bách khoa Đà
Nẵng, em tiến hành thực hiện đề tài “Dùng vi điều khiển để đo nhiệt độ, độ ẩm và
khống chế độ ẩm trong phòng kín”.
II. Giới hạn đề tài:
- Đo nhiệt độ và độ ẩm phòng kín, khống chế độ ẩm trong phòng theo một
giá trị đặt trước.
- Tính toán hệ số khối lượng hơi nước trong không khí trong phạm vi hoạt
động của thiết bị đo theo tiêu chuẩn của hơi nước bão hoà theo nhiệt độ và hiển thị
thông số này khi giá trị độ ẩm được thiết lập.
III. Mục đích nghiên cứu:
Đề tài này nhằm các mục đích:
- Dùng kỹ thuật vi điều khiển để áp dụng vào các quy trình sản xuất sản
phẩm cần đến công đoạn đo nhiệt độ, độ ẩm.
- Giúp người sử dụng có thể kiểm soát, điều khiển được độ ẩm của một
không gian kín thích hợp.
- Hổ trợ người vận hành có thể tính được nhanh chóng khối lượng hơi nước
trong phạm vi thể tích không khí đang quang sát .
GVHD: ThS. Lâm Tăng Đức
Trang:- 1 -
SVTH: Võ Ngọc Tuyến
ỏn tt nghip: o v khng ch m phũng kớn
Khoa: in
Chương 2
GIớI THIệU CHUNG Về Bộ VI ĐIềU KHIểN
I.GIớI THIệU:
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có
thể lập trình được, dùng để điều khiển hoạt động của một hệ thống. Theo các tập
lệnh của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý
thông tin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó.
Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển, điều khiển
hoạt động của ti vi, máy giặt, đầu đọc laser, điện thọai, lò vi-ba Trong hệ thống
sản xuất tự động, bộ vi điều khiển được sử dụng trong Robot, dây chuyền tự động.
Các hệ thống càng thông minh thì vai trò của hệ vi điều khiển càng quan trọng.
II.LịCH Sử PHáT TRIểN CủA CáC Bộ VI ĐIềU KHIểN:
Bộ vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 70 của thế kỷ
XX, do sự phát triển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS
(Metal-Oxide-Semiconductor), mức độ tích hợp của các linh kiện bán dẫn trong
một chip ngày càng cao.
Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 do công ty texas
Instruments vừa là nơi phát minh vừa là nhà sản xuất. Nhìn tổng thể thì bộ vi xử lí
chỉ có chứa trên một chip những chức năng cần thiết để xử lí chương trình theo một
trình tự, còn tất cả bộ phận phụ trợ khác cần thiết như: bộ nhớ dữ liệu, bộ nhớ
chương trình, bộ chuyển đổi AID, khối điều khiển, khối hiển thị, điều khiển máy in,
khối đồng hồ và lịch là những linh kiện nằm ở bên ngoài được nối vào bộ vi xử lí.
Đến năm 1976 Công ty INTEL (Interlligen-Electronics) mới cho ra đời bộ vi
điều khiển đơn chip đầu tiên trên thế giới với tên gọi 8048, là chip đầu tiên của họ
vi điều khiển MCS 48. Bên cạnh bộ xử lí trung tâm 8048 còn chứa bộ nhớ dữ liệu,
bộ nhớ chương trình, bộ đếm và phát thời gian các cổng vào và ra Digital trên một
chip.
Các công ty khác cũng lần lược cho ra đời các bộ vi điều khiển 8 bit tương tự
như 8048 và hình thành họ vi điều khiển MCS-48 (Microcontroller-sustem-48).
Đến năm 1980 Công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển
đơn chip với tên gọi 8051.
Bộ vi điều khiển đầu tiên của Tập đoàn SIEMENS cung cấp chip SAB 8051,
một cải tiến của 8051 có 6 Port xuất/nhập 8 bit, đặc biệt có một bộ biến đổi AD 8
bit với 8 kênh ngõ vào.
Ngoài ra còn có các công ty khác cũng có những họ vi điều khiển riêng như:
Họ
68HCOS
của công ty Motorola
Họ
ST62
của công ty SGS-THOMSON
Họ
H8
của công ty Hitachi
Họ
pic
cuả công ty Microchip
GVHD: ThS. Lõm Tng c
Trang:- 2 -
SVTH: Vừ Ngc Tuyn
ỏn tt nghip: o v khng ch m phũng kớn
Khoa: in
III.KHảO SáT Bộ VI ĐIềU KHIểN 8051 Và 8031:
IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặt điểm sau :
- 4KB ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)
- 128 byte RAM
- 4port I/0 8 bit
- Hai bộ định thời 16 bit
- Mạch giao tiếp nối tiếp
- 64KB không gian bộ nhớ chương trình mở rộng
- 64 KB không gian bộ nhớ dữ liệu mở rộng
- Bộ xử lý Bit (thao tác trên các bit riêng lẻ)
- 210 bit được địa chỉ hóa
- Nhân/chia 4s,
1./ Cu trỳc bờn trong ca 8051 / 8031:
INT1\
INT0\
SERIAL PORT
TEMER0
TEMER1
TEMER2
8032\8052
128 byte
RAM
8032\8052
INTERRUPT
CONTROL
OTHER
REGISTER
TEMER2
8032\8052
ROM
0K:
8031\8032
4K:8951
8K:8052
128 byte
RAM
TEMER1
TEMER1
CPU
BUS
CONTROL
SERIAL
PORT
I/O PORT
OSCILATOR
ALE\
PSEN\
EA\
RST
P0 P1 P2 P3
Address\Data
TXD RXD
Hình 2.1 : Sơ Đồ Khối 8051 / 8031
GVHD: ThS. Lõm Tng c
Trang:- 3 -
SVTH: Vừ Ngc Tuyn
ỏn tt nghip: o v khng ch m phũng kớn
Khoa: in
Phần chính của vi điều khiển 8051 / 8031 là bộ xử lí trung tâm (CPU: central
processing unit ) bao gồm :
-
Thanh ghi tích lũy A
Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
Đơn vị logic học (ALU : Arithmetic Logical Unit )
Từ trạng thái chương trình (PSW : Prorgam Status Word)
Bốn băng thanh ghi
Con trỏ ngăn xếp
Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời
gian và logic.
Đơn vị xử lí trung tâm nhận trực tiếp xung từ bộ giao động, ngoài ra còn có
khả năng đưa một tín hiệu giữ nhịp từ bên ngoài.
Chương trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ngắt ở
bên trong. Các nguồn ngắt có thể là: các biến cố ở bên ngoài , sự tràn bộ đếm định
thời hoặc cũng có thể là giao diện nối tiếp.
Hai bộ định thời 16 bit hoạt động như một bộ đếm.
Các cổng (port0, port1, port2, port3 ). Sử dụng vào mục đích điều khiển.
ở cổng 3 có thêm các đường dẫn điều khiển dùng để trao đổi với một bộ nhớ
bên ngoài, hoặc để đầu nối giao diện nối tiếp, cũng như các đường ngắt dẫn bên
ngoài.
Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm
việc độc lập với nhau. Tốc độ truyền qua cổng nối tiếp có thể đặt trong vảy rộng và
được ấn định bằng một bộ định thời.
Trong vi điều khiển 8051 / 8031 có hai thành phần quan trọng khác đó là bộ
nhớ và các thanh ghi :
Bộ nhớ gồm có bộ nhớ Ram và bộ nhớ Rom (chỉ có ở 8031) dùng để lưu trữ dữ
liệu và mã lệnh.
Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình xử lí. Khi CPU làm
việc nó làm thay đổi nội dung của các thanh ghi.
2./ Chc nng cỏc chõn vi iu khin :
a.port0 : là port có 2 chức năng (các chân từ 32 đến 39) trên 8051 trong các
thiết kế cỡ nhỏ dùng làm điện tụ xuất/nhập. Đối với các thiết kế cỡ lớn (với bộ nhớ
mở rộng) port0 trở thành bus địa chỉ và bus dữ liệu đa hợp.
b.port1 : port1 là một port I/O (các chân 1 đến 8) trên 8051. Các chân được ký
hiệu P1.0, P1.1,., P1.7 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 chỉ được dùng trong giao tiếp với các thiết bị
ngoài.
c.port2 : port2 là một port công dụng kép (các chân 21 đến 28) trên 8051 đượ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.
GVHD: ThS. Lõm Tng c
Trang:- 4 -
SVTH: Vừ Ngc Tuyn
ỏn tt nghip: o v khng ch m phũng kớn
Khoa: in
d.Port3 : port3 là một port công dụng kép (các chân 10 đến 17). Các chân
port3 có nhiều chức năng riêng (mỗi chân có chức năng riêng liên quan đến các đặc
trưng cụ thể của 8051).
Bit
Tên
Địa chỉ bit
Chức năng chuyển đổi
P3.0
RxD
B0H
Nhận dữ liệu của port nối tiếp
P3.1
TxD
B1H
Phát dữ liệu của port nối tiếp
P3.2
INTO
B2H
Ngắt 0 bên ngoài
P3.3
INT1
B3H
Ngắt 1 bên ngoài
P3.4
T0
B4H
Ngõ vào của timer/counter0
P3.5
T1
B5H
Ngõ vào của timer/counter 1
P3.6
WR
B6H
Xung ghi bộ nhớ dữ liệu ngoài
P3.7
RD
B7H
Xung đọc bộ nhớ dữ liệu ngoài
Bảng 2.1 : Chức năng của các chân trên port3
e. PSEN (Program Store Enable ): 8051/8031 có 4 tín hiệu điều khiển bus
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 bytes mã lệnh.
PSEN sẽ ở trong thời gian tìm - nạp 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
(logic1).
f. ALE (Address Latch Enable ) :
8051 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE để giải đa
hợp (Demultiplexing) bú dữ liệu và bus địa chỉ. Khi Port0 sử dụng đa hợp phân
ALE xuất đến hiện chốt địa chỉ vào 1 thanh ghi ngoài hay nửa đầu chu kỳ bộ nhớ
(Memory cycle) sau đó các thanh ghi bên ngoài trong nửa đầu của chu kỳ bộ nhớ.
Sau đó, các chân port 0 dùng để xuất/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 ALE cũng được làm ngõ vào cho xung lập trình cho EPROM trong
8051.
g. EA (External Access) :
GVHD: ThS. Lõm Tng c
Trang:- 5 -
SVTH: Vừ Ngc Tuyn
ỏn tt nghip: o v khng ch m phũng kớn
Khoa: in
Tín hiệu vào EA(chân 31) có thể thường được nối với 5V (logic 1) hoặc với
GND (logic 0). Nếu ở logic 1, 8051 thi hành chương trình từ ROM nội trong
khoảng địa chỉ thấp (4K). Nếu ở logic 0, 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 (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. Các chân XTAL1 và XTA2 :
Như trong hình vẽ, 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ụ ổn định cũng cần thiết như đã vẽ. Tần
số thạch anh thông thường là 12MHz.
j.Các chân nguồn :
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.
40
Vcc
30pF
19
XTAL.1
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
12 MHz
XTAL.2
18
30pF
PSEN\
29
32 AD7
33 AD6
34 AD5
35 AD4
36 AD3
37 AD2
38 AD1
39 AD0
ALE
30
EA\
31
RST
8951
9
RD
WR
T1
T0
INT1
INT0
TXD
RXD
17
16
15
14
13
12
11
10
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
8
7
6
5
4
3
2
1
28 A15
27 A14
26 A13
25 A12
24 A11
23 A10
22 A9
21 A8
Hình 2.2: Sơ đồ chân 8051
GVHD: ThS. Lõm Tng c
Trang:- 6 -
SVTH: Vừ Ngc Tuyn
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
3. Tổ chøc bé nhí :
8051 / 8031 cã cÊu tróc theo bé nhí harvard :cã nh÷ng vïng cho bé nhí riªng
biƯt cho ch¬ng tr×nh d÷ liƯu.C¶ ch¬ng tr×nh vµ d÷ liƯu cã thĨ ë bªn trong 8051,dï
vËy chóng cã thĨ ®ỵc më réng b»ng c¸c thµnh phÇn ngoµi lªn ®Õn 64Kbyte bé nhí
ch¬ng tr×nh vµ 64 Kbyte bé nhí d÷ liƯu.
Bé nhí bªn trong bao ROM(8051) vµ RAM trªn chip,RAM trªn chip bao gåm
nhiỊu phÇn:c¸c d·y thanh ghi(00H-1FH),phÇn lu tr÷ ®Þa chØ ho¸ tõng bit(20H2FH),phÇn lu tr÷ ®a dơng(30H-7FH) vµ c¸c thanh ghi chøc n¨ng ®Ỉt biƯt(80HFFH).
FFFF
FF
FFFF
Bé nhí
Bé nhí
ch¬ng
d÷ liƯu
tr×nh
®ỵc
®ỵc chän
chän
qua PSEN
qua WR
vµ RD
00
0000
Bé nhí trªn chip
0000
Bé nhí ngoµi(external memory)
H×nh 2.3 : Tãm t¾t c¸c vïng bé nhí cđa 8051/8031
a. RAM ®a dơng:
Mọi đòa chỉ trong vùng RAM đa dụng đề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 ghi tích lũy lệnh sau sẽ được dùng :
MOV A, 5FH
LƯnh nµy di chun mét byte d÷ liƯu b»ng c¸ch ®¸nh ®Þa chØ trùc tiÕp ®Ĩ x¸c
®Þnh “®Þa chØ ngn”(5FH). §Ých nhËn d÷ liƯu ®ỵc ngÇm ®Þnh tr«ng m· lƯnh lµ
thanh ghi tÝch l A.
RAM bªn trong còng cã thĨ ®ỵc truy xt b»ng c¸ch ®¸nh ®Þa chØ gi¸n tiÕp
qua RO hay R1. VÝ dơ,hai lƯnh sau thi hµnh cïng nhiƯm vơ nh lƯnh trªn :
MOV R0, #5FH
MOV A, @R0
LƯnh ®Çu dïng ®Þa chØ tøc thêi ®Ĩ di chun gi¸ trÞ 5FH vµo thanh ghi R0 vµ
lƯnh thø hai dïng ®Þa chØ trùc tiÕp ®Ĩ di chun d÷ liƯu “®ỵc trá bëi R0” vµo thanh
ghi tÝch l.
GVHD: ThS. Lâm Tăng Đức
Trang:- 7 -
SVTH: Võ Ngọc Tuyến
ỏn tt nghip: o v khng ch m phũng kớn
địa chỉ byte
Khoa: in
địa chỉ bit
7F
RAM đa dụng
30
2F
2E
2D
2C
2B
2A
29
28
27
26
25
24
23
22
21
20
1F
18
17
10
0F
08
07
00
7F
77
6F
67
5F
57
4F
47
3F
37
2F
27
1F
17
0F
07
7E
76
6E
66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06
7D
75
6D
65
5D
55
4D
45
3D
35
2D
25
1D
15
0D
05
7C
74
6C
64
5C
54
4C
44
3C
34
2C
24
1C
14
0C
04
7B
73
6B
63
5B
53
4B
43
3B
33
2B
23
1B
13
0B
03
7A
72
6A
62
5A
52
4A
42
3A
32
2A
22
1A
12
0A
02
79
71
69
61
59
51
49
41
39
31
29
21
19
11
09
01
78
70
68
60
58
50
48
40
38
30
28
20
18
10
08
00
BANK 3
BANK 2
BANK 1
Dãy thanh ghi mặc định
R0-R7
Bảng tóm tắt bản đồ vùng nhớ trên chip data 8051
GVHD: ThS. Lõm Tng c
Trang:- 8 -
SVTH: Vừ Ngc Tuyn
ỏn tt nghip: o v khng ch m phũng kớn
địa chỉ byte
Khoa: in
địa chỉ bit
FF
F0 F7
F6
F5
F4
F3
F2
F1
F0
B
E0
E6
E5
E4
E3
E2
E1
E0
ACC
D0 D7 D6 D5
D4
D3
D2
D1
D0
PSW
B8
-
-
BC
BB
BA
B9
B8
IP
B0
B7
B6 B5
B4
B3
B2
B1
B0
P3
-
AC
AB
AA
A9
A8
IE
A7 A6 A5
A4
A3
A2
A1
A0
P2
E7
A8 AF
A0
-
-
SBUF
99
98
9F
9E
9D
9C
9B
9A
99
98
SCON
90
97
96
95
94
93
92
91
90
P1
Không định địa chỉ bit
8D
8C
8B
8A
89
88
87
83
82
81
80
TH1
TH0
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit
8F
87
8E
86
Không định địa chỉ bit
TL1
TL0
TMOD
TCON
PCON
Không định địa chỉ bit
Không định địa chỉ bit
Không định địa chỉ bit
DPH
DPL
SP
8D
85
8C
84
8B
83
8A
82
89
81
88
80
PO
Tóm tắc bộ nhớ dữ liệu trên chip
b.RAM địa chỉ hoá từng bit:
8051 / 8031 chứa 210 vị trí bit được địa chỉ hoá,trong đó 128 bit là ở các byte
20H đến 2FH,và phần còn lại trong các thanh ghi chức năng đặc biệt.ý tưởng truy
xuất từng bit từng bit riêng rẽ bằng phần mềm là một đặt tính của vi điều khiển nói
GVHD: ThS. Lõm Tng c
Trang:- 9 -
SVTH: Vừ Ngc Tuyn
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
chung. C¸c bit cã thĨ ®ỵc ®Ỉt, xo¸, AND, OR ..b»ng mét lƯnh ®¬n.§a sè c¸c bé vi
xư lÝ ®ßi hái mét chi lƯnh ®äc sưa ghi ®Ĩ nhËn ®ỵc cïng kÕt qu¶.
H¬n n÷a,c¸c port I/O còng ®ỵc ®Þa chØ tõng bit lµm ®¬n gi¶n phÇn mỊm xt nhËp
tõng bit.
128 bit ë c¸c byte 20H ®Õn 2FH cã thĨ ®ỵc truy xt nh c¸c byte hay c¸c bit phơ
thc 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 cđa ®Þa chØ nµy.
c.C¸c d·y thanh ghi:
32 byte thÊp cđa bé nhí néi lµ c¸c d·y thah ghi. Bé nhí lƯnh cđa
8051/8031hỉ trỵ 8 thanh ghi (R0 ®Õn R7) vµ theo mỈc ®Þnh(sau khi reset hƯ thèng)
vµ c¸c thanh ghi nµy ë c¸c ®Þa chØ 00H-07H. LƯnh sau ®©y sÏ ®äc néi dung ë ®ia chØ
05H vµo thanh ghi tÝch l.
MOV A,R5
Đây là lệnh một 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 và nhanh hơn các lệnh
dùng đòa chỉ trực tiếp. Các giá trò dữ liệu được dùng thường xuyên nên dùng một
trong các thanh ghi này.
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 lũy vào đòa chỉ
18H:
MOV R0,A
Y tëng dïng c¸c d·y thanh ghi cho phÐp “chủª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 hanh ghi riªng rÏ
kh«ng phơ thc 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 8051/8031 ®ỵc truy xt ngÇm ®Þnh bëi lƯnh. VÝ dơ
lƯnh “INC A” sÏ t¨ng néi dung cđa thanh ghi tÝch lòy A lªn 1. T¸c ®éng nµy ®ỵc
ngÇm ®Þnh trong m· lƯnh.
C¸c thanh ghi trong 8051/8031 ®ỵc ®Þnh d¹ng nh mét phÇn cđa RAM trªn
chip. V× vËy mét thanh ghi sÏ cã mét ®Þa chØ (ngo¹i trõ thanh ghi trùc tiÕp, sÏ kh«ng
cã lỵi khi ®Ỉt chóng vµo trong RAM trªn chip).§ã lµ lý do ®Ĩ 8051/8031 cã nhiỊu
thanh ghi. Còng nh R0 ®Õn R7, 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ó ý rằng
GVHD: ThS. Lâm Tăng Đức
Trang:- 10 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
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 lũy (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ỉ hóa bit 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 lũy, các bit khác không thay đổi. Ta thấy
rằng E0H đồng thời là đòa chỉ byte của thanh ghi tích lũy và là đòa chỉ bit có
trọng số nhỏ nhất trong thanh ghi tích lũy. Vì lệnh SETB chỉ tác động trên bit,
nên chỉ có đòa chỉ bit là có hiệu quả.
a. Tõ tr¹ng th¸i ch¬ng tr×nh PSW (Program Status Word):
Y nghi·
Cê nhí
Cê nhí phơ
Cê 0
Chän d·y thanh ghi (bit 1)
Chän d·y thanh ghi (bit 0).
00=bank 0;®Þa chØ 00H-07H
01=bank 1:®Þa chØ 08H-0FH
10=bank 2:®Þa chØ 10H-17H
11=bank 3:®Þa chØ 18H-1FH
PSW.2 OV
D2H
Cê trµn
PSW.1
D1H
Dù tr÷
PSW.0 P
D0H
Cê kiĨm tra ch¼n lỴ.
B¶ng 2.2: Thanh ghi PSW
Cê nhí (CY) cã c«ng dơng kÐp. Th«ng thêng nã ®ỵc dïng cho c¸c lƯnh sè
häc: cã sÏ ®ỵc set nÕu cã mét sè nhí sinh ra bëi phÐp céng hc cã mét sè
mỵn phÐp trõ. VÝ dơ, nÕu thanh chøa A cã néi dung lµ FFH, th× lƯnh sau:
ADD A,#1
SÏ tr¶ vỊ thanh ghi tÝch l 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 thao t¸c trªn
bit. VÝ dơ, lƯnh sÏ AND bit 25H víi cê nhí CY vµ ®Ỉt kÕt qu¶ trë vĨ 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¸ trj céng ®ỵc 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 l)®Ĩ mang kÕt qu¶ lín
h¬n 9 trë vỊ tÇm tõ 09.
Bit
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
Ký hiƯu
CY
AC
F0
RS1
RS0
§Þa chØ
D7H
D6H
D5H
D4H
D3H
GVHD: ThS. Lâm Tăng Đức
Trang:- 11 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
Cê 0
Cê 0 (F0)lµ mét bit ®a dơng dïng cho c¸c øng dơng cđa ngêi dïng.
C¸c bit chän d·y thanh ghi
(RSO v RS1) dïng x¸c ®Þnh d·y thanh ghi tÝch cùc. Chóng ®ỵc xo¸ sau khi
reset hƯ thèng vµ ®ỵc thay ®ỉi møc logic b»ng phÇn mềm nÕu cần. VÝ dơ, ba lƯnh
sau cho phÐp d·y thanh ghi 3 vµ di chun néi dung cu¶ thanh ghi R7 (®Þa chØ byte
1FH) ®Õn thanh ghi tÝch l:
SETB RS1
SETB RSO
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 phÐp to¸n céng hc trõ nÕu cã xt hiƯn mét trµn
sè häc. Khi c¸c sè cã dÊu ®ỵc céng hc trõ víi nhau, phần mềm cã thĨ kiĨm tra
bit nµy ®Ĩ x¸c ®Þnh xem kÕt qu¶ cđa nã co n»m trong tÇm x¸c ®Þnh kh«ng. Khi c¸c
sè kh«ng dÊu kh«ng ®ỵc céng, bit OV cã thĨ ®ỵc bá qua. C¸c kÕt qu¶ lín h¬n 127 hc nhá h¬n +128 sÏ set cê OV b»ng 1.
b. Thanh ghi B:
Thanh ghi B ở đòa chỉ F0H được dùng chung với thanh ghi A trong các phép
toán nhân và chia. Lệnh MUL AB sẽ nhân 2 giá trò không dấu 8 bit trong A và B
rồi trả về kết qủa 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 qủa 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ỉ hóa từng bit
bằng các đòa chỉ bit FOH đến F7H.
c. Con trá ng¨n xÕp(stack):
Con trỏ ngăn xếp (Stack Pointer) là một thanh ghi 8 bit ở đòa chỉ 81H. 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ẽ làm giảm SP. Ngăn xếp của 8051/8031
đượ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 8051/8031.
§Ĩ khëi ®éng l¹i SP ng¨n xÕp b¾t ®Çu t¹i 60H, c¸c lƯnh sau ®©y ®ỵc dïng:
MOV SP,#5FH
Trªn 8051/8031 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. 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.
GVHD: ThS. Lâm Tăng Đức
Trang:- 12 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
Ngêi thiÕt kÕ cã thĨ chon 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¸ trj mỈc ®Þnh ®ã lµ 07H vµ kÕt qu¶ lµ
ng¨n ®Çu tiªn ®Ĩ cÊt d÷ liƯu cã ®Þa chØ 08H. NÕu phÇn mỊm øng dơng kh«ng khëi
®éng l¹i SP , d·y thanh ghi 1 (cã thĨ c¶ 2 vµ 3) sÏ kh«ng ®ỵc dïng 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 giữ
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, LACALL) 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(DPTR):
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
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
lũy, 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 1000H
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 xt nhËp:
Các port của 8051/8031 bao gồm Port 0 ở đòa chỉ 80H, Port 1 ở đòa chỉ 90
H, Port 2 ở đòa chỉ A0H và Port 3 ở đòa chỉ B0H. Tất cả các Port đều được đòa
chỉ hóa từng bit. Điều đó cung cấp một khả năng giao tiếp thuận lợi.
f. C¸c thanh ghi ®Þnh thêi(timer):
8051/8031 chứa 2 bộ đònh thời/đếm 16 bit được dùng trong 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 vận
hành timer được set bởi thanh ghi 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.
g. C¸c thanh ghi port nèi tiÕp:
8051/8031 chức một port nối tiếp trên chip 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 cho việc giao tiếp với các IC
khác có giao tiếp nối tiếp (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 giữ
liệu truyền và nhận. Khi truyền dữ liệu thì ghi lên SBUf, khi nhận dữ liệu thì
GVHD: ThS. Lâm Tăng Đức
Trang:- 13 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
đọ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) (được đòa chỉ hóa từng bit) ở đòa chỉ 98H.
h. C¸c thanh ghi ng¾t:
8051/8031 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 møc u tiªn ng¾t ®ỵc thiÕt lËp qua thanh ghi u tiªn ng¾t IP cã
®Þa chØ B8H.C¶ hai thanh ghi được đòa chỉ hóa từng bit.
i. C¸c thanh ghi ®iỊu khiĨn ngn:
Thanh ghi điều khiển ngn (PCON) ở đòa chỉ 87H chứa nhiều bit điều
khiển. Chúng được tóm tắt trong bảng sau:
M« t¶
Bit
Ký hiệu
7
SMOD
6
5
4
3
2
1
GF1
GF0
PD
0
IDL
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 mơc ®Ých 1
Bit cờ đa mơc ®Ých 2
Ngn gi¶m, ®ỵc set ®Ĩ tÝch cùc chÕ ®é
ngn gi¶m,chØ tho¸t khi reset hƯ thèng
Mode nghÜ set để kích hoạt mode nghÜ chỉ
thoát khi có ngắt hoặc reset hệ thống.
Bảng 2.3 :Thanh ghi điều khiển ngn (PCON)
5/. Bé nhí ngoµi:
8051/8031 có khả năng mở rộng bộ nhớ đến 64K bộ nhớ chương trình và
64K bộ nhớ dữ liệu bên ngoài. Do đó có thể dùng thêm ROM và RAM nếu cần.
Khi dùng bộ nhớ ngoài, port 0 không còn là một port I/O thuần túy nữa.
Nó được hợp kênh giữa 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 đòa chỉ khi bắt đầu mỗi chu kỳ bộ nhớ. Port 2 thông
thường được dùng cho byte cao của bus đò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
tùy theo lệnh.
GVHD: ThS. Lâm Tăng Đức
Trang:- 14 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
a/ Truy xt bé nhí ch¬ng tr×nh ngoµi :
Bộ nhớ chương trình ngoài là mét IC ROM được phép bởi tín hiệu PSEN .
Một chu kỳ máy của 8051/8031 có 12 chu kỳ xung nhòp. Nếu bộ dao động
trên chip được lái bởi một thạch anh 12MHz thì chu kỳ máy kéo dài 1s. 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 chØ cã 1 byte thì byte thứ 2õ được loại bỏ). Giản đồ thời gian của một
lần lấy lệnh được vẽ ở hình 2.5:
Port 0
D0-D7
EA
A0-A7
D
Q
74HC373
G
8051
ALE
EPROM
Port 2
A8-A15
PSEN
OE
H×nh 2.4:Giao tiÕp gi÷a 8051 vµ EPROM
Mộ t chu kỳ má y
S2
S1
P1
P2
P1
P2
P1
S5
S4
S3
P2
P1
P2
S6
P1
P2
P1
S1
P2
P1
P2
OSC
ALE
PSEN
Port 2
Port 1
PCH
PCH
PCL
Opcode
PCL
H×nh 2.5:Gi¶n ®å thêi gian ®äc bé nhí ch¬ng tr×nh ngoµi.
GVHD: ThS. Lâm Tăng Đức
Trang:- 15 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
b/ Truy xt 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 hệu WR và RD (các chân P3.6 và P3.7).Chỉ có một cách truy xuất bộ
nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bit hoặc
R0 và R1 xem như thanh ghi đòa chỉ.
Kết nối bus đòa chỉ và bus dữ liệu giữa RAM và 8051/8031 cũng giống
EPROM và do đó cũng có thể lên đến 64 byte bộ nhớ RAM. Ngoài ra, chân RD
của 8051/8031 được nối tới chân cho phép xuất (OE) của RAM và chân WR
được nối tới chân ghi (WR) của RAM.
Port 0
D0-D7
RAM
8051
EA
ALE
74HC373
O
D
A0-A7
G
A8-A15
Port 2
RD
WR
OE
WE
H×nh2.6: Giao tiÕp gi÷a 8051/8031 vµ RAM
Gian ®å thêi gian cho lƯnh ®äc bé nhí d÷ liƯu ngoµi ®ỵc vÏ trªn h×nh sau
®èi víi lƯnh MOVX A,@DPTR:
Một chu kỳ máy
Một chu kỳ máy
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
ALE
PSEN
RD
PCH
Port 2
Port 0
PCL
Opcode
GVHD: ThS. Lâm Tăng Đức
DPH
DPL
DATA
Trang:- 16 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
H×nh 2.7:Gi¶n ®å thêi gian cđa lƯnh MOVX
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 cã nhiỊu EPROM hc cã nhiỊu RAM hc c¶ hai giao tiÕp víi 8051 ta
cÇn gi·i m· ®Þa chØ. ThÝ dơ, nÕu c¸c RAM vµ ROM 8 bit ®ỵc sư dơng, ®Þa chØ ph¶i
®ỵc gi·i m· ®Ĩ chän IC nhí nµy trªn c¸c giíi h¹n 8K: 0000H-1FFFH, 2000H –
3FFFH,…Mét IC gi¶i m· ®iĨn h×nh lµ 74HC138 víi c¸c ngâ ra ®ỵc nèi víi ngâ
vµo chän chip CS cđa IC nhí (nh h×nh) cho bé nhí cã nhiỊu EPROM 2764(8K) vµ
RAM 6264 (8K). Do ®êng cho phÐp riªng rÏ (PSEN cho bé nhí ch¬ng tr×nh, RD
vµ WR cho bé nhí d÷ liƯu), 8051 cã thĨ qu¶n lý bé nhí ®Õn 64K víi EPROM vµ 64
K cho RAM.
Address Bus (A0- A15)
Data Bus (D0-D7)
2764
PSEN
OE
WR RD
D0-D7
A0-A12
CS
OE
D0-D7
WE
RAM
A0-A12
EPROM
8KBytes
8KBytes
CS
CS
0
B
1
A
2
RAM
CS
text
CS
C
6264
RAM
CS
3
74HC138
4
5
E
6
E
7
Select another EPROM/RAM
E
H×nh 2.8:Gi·i m· ®Þa chØ (Address Decording)
GVHD: ThS. Lâm Tăng Đức
Trang:- 17 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
6/. LƯnh reset:
8051/8031 được reset bằng cách giữ chân RST ở mức cao tèi thiĨu 2 chu
kỳ máy và trả nó về møc thấp. RST có thể được kích khi cấp điện dùng một
mạch R-C.
+5V
100
+5V
10UF
8,2K
H×nh 2.9:M¹ch reset hƯ thèng
Tr¹ng th¸i cđa tÊt c¶ c¸c thanh ghi cđa 8051/8031 sau khi reset hƯ thèng
®ỵc tãm t¾t trong b¶ng sau:
Thanh ghi
§Õm ch¬ng tr×nh
Thanh chøa A
Thanh ghi B
PSW
SP
DPTR
Port 0-3
IP
IE
C¸c thanh ghi ®Þnh thêi
SCON
SBUF
PCON(HMOS)
PCON(CMOS)
Nội dung
0000H
00H
00H
00H
07H
0000H
FFH
xxx00000B
0xx00000B
00H
00H
00H
0xxxxxxB
0xxx0000B
B¶ng 2.3 tr¹ng th¸i c¸c thanh ghi sau khi reset
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình,
nó được đặt lại 0000H. Khi RST trở lại mức thấp, việc thi hành chương trình
luôn bắt đầu ở đòa chỉ đầu tiên trong bộ nhớ trong chương trình: đòa chỉ 0000H.
Nội dung của RAM trên chip không bò thay đổi bởi lệnh reset.
7. Hoạt động của bộ định thời (timer)
7.1 Giới thiệu:
GVHD: ThS. Lâm Tăng Đức
Trang:- 18 -
SVTH: Võ Ngọc Tuyến
Đồ án tốt nghiệp: Đo và khống chế độ ẩm phòng kín
Khoa: Điện
Một đònh nghóa đơn giản của timer là một chuỗi các flip-flop chia đôi tần
số nối tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhòp. Ngõ ra của
tần số cuối làm nguồn xung nhòp cho flip-flop báo tràn của timer (flip-flop cờ).
Giá trò nhò phân trong các flip-flop của timer có thể xem như số đếm số xung
nhòp (hoặc các sự kiện) từ khi khởi động timer. Ví dụ timer 16 bit sẽ đếm lên từ
0000H đến FFFFH. Cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H.
8051/8031 có 2 timer 16 bit, mỗi timer có bốn cách làm việc. Người ta sử dụng các
timer để : a) định khoảng thời gian, b) đếm sự kiện c) tạo tốc độ baund cho port
nối tiếp trong 8051/8031.
Trong các ứng dụng đònh khoảng thời gian, người ta lập trình timer ở một
khoảng đề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 cửa ngõ vào
hoặc gửi các 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).
Đếm sự kiện dùng để xác đònh số lần xẩy ra của một sự kiện. Một “sự
kiện” là bất cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên
một chân của 8051/8031. Các timer cũng có thể cung cấp xung nhòp tốc độ baud
cho port nối tiếp trong 8051/8031.
Truy xuất timer của 8051/8031 dùng 6 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
TMOD
TL0
TL1
TH0
TH1
Điều khiển timer
Chế độ timer
Byte thấp của timer 0
Byte thấp của timer 1
Byte cao của timer 0
Byte cao của timer 1
88H
89H
8AH
8BH
8CH
8DH
Có
Không
Không
Không
Không
Không
Bảng 2.4: Thanh ghi chức năng đặc biệt dùng timer.
7.2 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
Timer
Mô tả
7
GATE 1
Bit (Mở) cổng, khi lên 1 timer chỉ chạy khi INT1
ở mức cao.Bit
GVHD: ThS. Lâm Tăng Đức
Trang:- 19 -
SVTH: Võ Ngọc Tuyến