BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Độc lập – Tù do – Hạnh phóc
NHIỆM VÔ
THIẾT KẾ TỐT NGHIỆP
Họ và tên Ngô Quốc Toàn
Khoá: 4 Khoa: Điện
Ngành Điều khiển Tự động
1. ĐÒ tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với
các thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím sè HEX.
2. Các số liệu ban đầu:
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
3. Nội dung các phần thuyết minh và tính toán:
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
4. Các bản vẽ đồ thị (ghi rõ các loại bản vẽ và kích thước các bản vẽ):
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
II.3 Tổ chức bộ nhớ
8051 14
II.3.1 Vùng RAM đa mục đích 15
II.3.2 Vùng RAM định địa chỉ bit 15
II.3.3 Các dãy thanh
ghi 15
II.3.4 Các thanh ghi chức năng đặc biệt 15
II.3.4.1 Từ trạng thái chương trình
PSW 15
II.3.4.2 Thanh ghi B 16
II.3.4.3 Con trá stack 16
II.3.4.4 Con trỏ dữ liệu 17
II.3.4.5 Các thanh ghi port 17
II.3.4.6 Các thanh ghi định thời TMOD và TCON 17
II.3.4.7 Thanh ghi của cổng nối tiếp 19
II.3.4.8 Các thanh ghi
ngắt 20
II.3.4.9 Thanh ghi điều khiển nguồn 20
II.4 Bộ nhớ ngoài 21
II.4.1 Truy xuất bộ nhớ chương trình
ngoài 21
II.4.2 Truy xuất bé nhớ dữ liệu ngoài 22
II.4.3 Hoạt động Reset 23
III. TẬP LỆNH CỦA 8051 24
III.1 Các kiểu định địa chỉ 24
III.1.1 Định địa chỉ thanh ghi 24
III.1.2 Định địa chỉ trực tiếp 24
III.1.3 Định địa chỉ gián tiếp 25
III.1.4 Định địa chỉ tức thời 26
III.1.5 Định địa chỉ tương đối 26
V.1.2 Ưu tiên ngắt 35
V.1.3 Chuỗi
vòng 36
V.2 Xử lý ngắt 36
V.3 Các vector ngắt 36
V.4 Các ngắt do port nối tiếp 36
V.5 Các ngắt ngoài 37
VI. LẬP TRÌNH HỢP
NGỮ 37
VI.1 Trình dịch hợp ngữ 37
VI.2 Khuôn dạng của chương trình hợp
ngữ 37
VI.3 Cấu trúc chương trình 38
VI.4. Tổ chức chương
trình 38
CHƯƠNG II: CÁC THIẾT BỊ NGOẠI VI 39
I. ĐỒNG HỒ THỜI GIAN THỰC
DS12887 39
I.1 Hoạt động 40
I.2 Chức năng các chân 41
I.3 Bản đồ địa chỉ
43
I.4 Các thanh ghi điều khiển 46
I.5 Minh họa ghép nối giữa DS12887 với
8051 49
II. THIẾT BỊ HIỂN THỊ LCD 49
II.1 LCD 49
II.2 Minh họa ghép nối giữa LCD với
8051 52
III. ADC0809 52
Lời cảm ơn
Trước hết chúng em gửi lời cám ơn tới tập thể các thầy cô giáo bộ môn
Điều khiển tự động - Khoa điện trường Đại học Bách khoa Hà Nội. Đã luôn giúp
đỡ và truyền đạt cho chóng em những kiến thức quý báu trong qúa trình học tập
tại trường.
Chóng em xin chân thành cảm ơn thầy giáo hướng dẫn Vũ Vân Hà đã
nhiệt tình hưỡng dẫn chúng em trong quá trình làm đồ án .
Sinh viên thực hiện
Trịnh Mạnh Hùng
Nguyễn Xuân Linh
Ngô Quốc Toàn
MỞ ĐẦU
Đề tài: Thiết kế mạch thí nghiệm dùng Vi điÒu khiển 80C51 phối ghép với
thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím sè HEX.
Điều khiển tự động, ngày nay đã và đang được ứng dụng vào rất nhiều
ngành sản xuất và cuộc sống. Từ những nhà máy, dây chuyền sản xuất cho đến
những đồ dùng phục vô sinh hoạt nh: máy giặt, lò vi sóng…
Để thực hiện việc điều khiển tự động có nhiều phương pháp, cách thức
nh bằng máy tính, vi xử lý hay hệ điều khiển chuyên dụng. Tùy vào lĩnh vực mà
lùa chọn hệ thống điều khiển thích hợp. Với sinh viên học chuyên ngành điều
khiển tự động phải nắm bắt được tất cả những kiến thức cơ sở, tổng quát nhất
để từ đó có thể giải quyết các bài toán điều khiển đặt ra trong công việc sau này.
Một trong những kiến thức cần phải có đó là việc nghiên cứu và thiết kế mạch
ứng dụng sử dụng bộ vi điều khiển. Do đó chúng em đã chọn đề tài : Thiết kế
mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi
LCD, ADC0809, RTC DS12887 và HEX-keypad.
Các công việc thực hiện:
• Tìm hiểu về Vi điều khiển 8051, và các thiết bị ngoại vi.
• Thiết kế mạch nguyên lý.
• Xây dựng các bài toán điều khiển.
80386, 80486, Pentium ) hoặc họ 680x0 của Motorola (6800, 68010, 68020,
68030, 68040…). Những bộ vi xử lý này không có RAM, ROM và không có
các port I/O trên chip, do đã khi sử dụng thiết kế hệ thống phải bổ sung thêm
RAM, ROM, I/O và các bộ định thời (Timer/Counter) ngoài để cho chúng hoạt
động được. Tuy việc này làm cho hệ thống cồng kềnh, phức tạp và giá thành
cao hơn nhưng chúng lại có ưu điÓm là linh hoạt hơn so với vi điều khiển.
Trong khi đó với vi điều khiển nó có sẵn : 1 CPU( bé vi xử lý) cùng 1
lượng cố định RAM, ROM, các cổng I/O và Timer/Counter được tích hợp tất cả
trên cùng 1 chip.
I.3 Tiêu chuẩn lùa chọn 1 bé vi điều khiển
Hiện nay có nhiều loại vi điều khiển, với loại vi điều khiển 8bit có 4 loại
chính sau: 6811 (Motorola), 8051 (Intel), Z8 (Zilog) và PIC16x (Micro
Technology). Mỗi loại trên đều có 1 tập lệnh và thanh ghi riêng nên chúng đều
không tương thích lẫn nhau. Ngoài ra còn có những bộ vi điều khiển 16bit và
32bit, vì thế để lùa chọn bé vi điÒu khiển trong thiết kế cần phải dùa trên những
tiêu chuẩn sau:
1. Đáp ứng nhu cầu tính toán của bài toán 1 cách hiệu quả về giá
thành và đầy đủ chức năng có thể nhìn thấy được:
a. Tốc độ: tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là
bao nhiêu?
b. Kiểu đóng vỏ: kiểu DIP (Dual In-line Package) hay
QFP (Quadrangle Flat Package). Đây là điÒu quan
trọng đối với yêu cầu về không gian, kiểu lắp ráp và
tạo mẫu cho sản phẩm.
c. Công suất tiêu thụ.
d. Dung lượng RAM, ROM trên chip.
e. Số cổng vào/ra và Timer/Counter trên chip.
f. Giá thành trên 1 đơn vị sản phẩm.
2. Công cụ phát triển phần mềm.
3. Nguồn cung cấp các bộ vi điều khiển: tức khả năng sẵn sàng
d. Port 3: Port 3 (các chân 10→ 17) có 2 công dụng. Khi không hoạt động
xuất/nhập, các chân của Port 3 có nhiều chức năng riêng.
Bit Tên Địa chỉ
bit
Chức năng
P3.0 RXD B0H Chân nhận dữ liệu của port nối tiếp
P3.1 TXD B1H Chân phát dữ liệu của port nối tiếp
P3.2 B2H Ngõ vào ngắt ngoài 0
P3.3 B3H Ngõ vào ngắt ngoài 1
P3.4 T0 B4H Ngõ vào của Timer/Counter 0
P3.5 T1 B5H Ngõ vào của Timer/Counter 0
P3.6 B6H ĐiÒu khiển ghi bé nhớ dữ liệu ngoài
P3.7 B7H ĐiÒu khiển đọc bộ nhớ dữ liệu ngoài
Hình 2: Sơ đồ các chân của 8051
e. Chân (Program Store Enable) : (chân 29) đây là tín hiệu điÒu
khiển cho phép truy xuất bộ nhớ chương trình ngoài. Chân này thường
được nối với chân cho phép xuất OE (Output Enable) của EPROM (hoặc
ROM) để cho phép đọc các byte lệnh. Tín hiệu
ở mức logic 0 trong
suốt thời gian tìm và nạp lệnh. Khi thực thi chương trình ở ROM nội ,
được duy trì ở mức logic 1 (logic không tích cực).
f. Chân ALE (chân 30): chân xuất tín hiệu cho phép chốt địa chỉ (Address
Latch Enable) để giải đa hợp (Demultiplexing) bus dữ liệu và bus địa chỉ.
Tín hiệu ALE có tần số f=1/6 f
osc
(f
osc
: tần số của bộ dao động bên trong
8051) và có thể được dùng làm xung clock cho các phần còn lại của hệ
port, ngõ ra Q của bộ chốt điều khiển của mét transistor trường và transistor
này nối với chân của port. Khả năng fanout của port 1,2,3 là 4 tải vi mạch TTL
loại schottky công suất thấp còn của port 0 là 8 tải loại LS.
Lưu ý: khi điện trở kéo lên sẽ không có ở port 0 (trừ khi port làm nhiệm
vô của bus địa chỉ/dữ liệu đa hợp). Do vậy một điện trở kéo lên bên ngoài phải
được cần đến. Giá trị của điện trở này phụ thuộc vào đặc tính ngõ vào của thành
phần ghép nối với chân của port.
II.3 Tổ chức bộ nhớ 8051
8051 có không gian bộ nhớ riêng cho chương trình và dữ liệu: cả 2 bộ
nhớ chương trình và dữ liệu đều đặt bên trong chip, tuy nhiên vẫn có thể mở
rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dông chip nhí bên
ngoài với dung lượng tối đa 64Kbyte cho bộ nhớ chương trình và bộ nhớ dữ
liệu.
Bộ nhớ nội trong chip bao gồm cả RAM và ROM. 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ỉ, dãy thanh
ghi (bank register) và các thanh ghi chức năng đặc biệt SFR (special function
register). Hai đặc tính đáng lưu ý là :
a. các thanh ghi và các port xuất/nhập được định địa chỉ theo kiểu
ánh xạ bộ nhí (memory mapped) và được truy xuất nh mét vị trí
nhớ trong bộ nhớ
b. vùng stack thường trú trong RAM trên chip (RAM nội) thay vì
ở trong RAM ngoài nh các bộ vi xử lý.
II.3.1 Vùng RAM đa mục đích
Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên
dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương
tự. Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy
xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp.
II.3.2. Vùng RAM định địa chỉ bit
8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong các
byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa
PSW.3 RS0 D3H Chọn dãy thanh ghi (bit 0)
00 = bank 0 : địa chỉ từ 00H → 07H
01 = bank 1 : địa chỉ từ 08H → 0FH
10 = bank 2 : địa chỉ từ 10H → 17H
11 = bank3 : địa chỉ từ 18H → 1FH
PSW.2 OV D2H Cờ tràn (Overflow flag), cờ này được set sau khi
cộng hoặc trừ nếu có 1 số tràn số học (nghĩa là
tràn trên các phép toán số có dấu: kết quả của
phép toán lớn hơn +127 hoặc nhỏ hơn -128)
PSW.1 D1H Dự trữ
PSW.0 P D0H Cờ kiểm tra chẵn/lẻ. Cờ này được set hoặc clear
bởi phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ ra
rằng có 1 số chẵn hoặc số lẻ bit 1 trong thanh
chứa
II.3.4.2 Thanh ghi B
Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A trong các
phép toán nhân, chia. Lệnh MUL AB nhân 2 sè 8 bit không dấu chứa trong A
và B và chứa kết quả 16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp
và thanh ghi B cất byte cao).
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cất
trong thanh ghi B. Thanh ghi B còn được xử lý nh mét thanh ghi nháp. Các bit
được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H.
II.3.4.3 Con trá stack (Stack pointer)
Con trá stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP chứa
địa chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến stack bao
gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khái stack. Việc cất vào
stack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra khái stack sẽ giảm
SP. Vùng stack của 8051 được giữ trong RAM nội và được giới hạn đến các
địa chỉ truy xuất được bởi kiểu định địa chỉ gián tiếp. Các lệnh PUSH và POP
sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chương trình con
Tx).
M1, M0 : Bit chọn chế độ
M1 M0 Chế độ
0 0 0 Bộ định thời 13 bit
0 1 1 Bộ định thời/đếm 16 bit
1 0 2 Bộ định thời/đếm 8 bit tù động nạp lại
1 1 3 Bộ định thời 0: TL0 là bộ định thời/đếm 8 bit được
điều khiển bởi các bit điều khiển bộ định thời 0. TH0 là
bộ định thời 8 bit được điều khiển bởi các bit điều
khiển bộ định thời 1.
Bộ định thời/đếm 1 ngưng hoạt động
• TCON : có chức năng điều khiển bộ định thời/đếm. Địa chỉ byte là 88H, có
định địa chỉ bit
7 6 5 4 3 2 1 0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Ký hiệu Vị trí Địa chỉ Mô tả
TF1 TCON.
7
8FH Cờ tràn bộ định thời 1 : được set bởi phần cứng
khi bộ định thời/đếm bị tràn, xóa bằng phần mềm
hoặc bởi phần cứng khi trình phục vụ ngắt được
trỏ đến
TR1 TCON.
6
8EH Bit điều khiển bộ định thời 1 hoạt động, được
set/clear bởi phần mềm.
TF0 TCON.
5
8DH Cờ tràn bộ định thời 0
TR0 TCON.
SM1 SCON.6 9EH Bit chọn chế độ
SM2 SCON.5 9DH Bit này cho phép truyền thông đa xử lý ở các
chế độ 2 & 3. Trong chế độ 2 hoặc 3 nếu
SM2 = 1, RT sẽ không được tích cực nếu bit
nhận được thứ 9 (RB8) bằng = 0. Trong chế
độ 1, nếu SM2 = 1, RI sẽ không được tích
cực nếu ta không nhân được bit stop hợp lệ.
REN SCON.4 9CH Cho phép thu. Việc set hoặc xóa bit này bởi
phần mềm sẽ cho phép hoặc không cho phép
hoạt động thu.
TB8 SCON.3 9BH Bit phát 8, bit thứ 9 được phát ở các chế độ 2
& 3. Bit này được set hoặc xóa bằng phần
mềm.
RB8 SCON.2 9AH Bit thu 8. Trong các chế độ 2 & 3, RB8 là bit
dữ liệu thứ 9 thu được. Trong chế độ 1, nếu
SM2 = 0, RB8 là bit stop thu được. Trong
chế độ 0, RB8 không được sử dụng.
TI SCON.1 99H Cờ ngắt phát, cờ này được set bởi phần cứng
ở cuối thời gian phát bit thứ trong chế độ 0
hoặc ở giữa thời gian của bit stop trong các
chế độ khác. Cờ TI phải được xóa bằng phần
mềm.
RI SCON.0 98H Cờ ngắt thu, cờ này được set bởi phần cứng ở
cuối thời gian thu bit thứ 8 trong chế độ 0
hoặc ở giữa thời gian của bit stop trong các
chế độ khác. Cê RI phải được xóa bởi phần
mềm.
SM0 SM1 Chế độ Mô tả Tốc độ baud
0 0 0 Thanh ghi dịch
f
1 PD Bit chế độ nguồn giảm. Việc set bit này bằng 1 tác động
đến thao tác nguồn giảm trong các phiên bản CMOS của
8051.
0 IDL Bit chế độ nghỉ. Việc set bit này bằng 1 tác động đến chế
độ nghỉ trong các phiên bản CMOS của 8051.
•
Chế độ nguồn giảm
Lệnh thiết lập bit PD bằng 1 sẽ là lệnh sau cùng được thực thi trước khi
đi vào chế độ nguồn giảm. Ở chế độ nguồn giảm :
(1) mạch dao động trên chip ngõng hoạt động
(2) mọi chức năng ngừng hoạt động
(3) nội dung của RAM trên chip được duy trì
(4) các chân port duy trì mức logic của chúng
(5) ALE và PSEN được giữ ở mức thấp. Chỉ ra khỏi chế độ này bằng
cách reset hệ thống.
Trong suốt thời gian ở chế độ nguồm giảm, Vcc có điện áp là 2
V
. Cần phải giữ
cho Vcc không thấp hơn sau khi đạt được chế độ nguồn giảm và cần phục hồi
Vcc = 5
V
tối thiểu 10 chu kỳ dao động trước khi chân RST đạt mức thấp lần
nữa.
•
Chế độ nghỉ
Lệnh thiết lập bit IDL bằng 1 sẽ là lệnh sau cùng được thực thi trước khi
đi vào chế độ nghỉ. ở chế độ nghỉ, tín hiệu clock nội được khóa không cho đến
CPU nhưng không khóa đối với các chức năng ngắt, định thời và port nối tiếp.
Trạng thái của CPU được duy trì và nội dung của tất cả các thanh ghi cũng
được giữ không đổi. Các chân port còng được duy trì các mức logic của chúng.
cần phải có thêm bộ giải mã địa chỉ. Một IC giải mã điển hình là 74HC138
được dùng với các ngõ ra được nối với các ngõ chọn chip của các IC nhí.
II.4.3 Hoạt động Reset
8501 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ
máy và sau đó chuyển về mức thấp. RST có thể tác động bằng tay hoặc được
tác động khi cần nguồn bằng cách dùng một mạch RC. Quan trọng nhất trong
các thanh ghi này có lẽ là thanh ghi PC được nạp 0000H. Khi RST trở lại mức
thấp, việc thực hiện chương trình luôn luôn bắt đầu ở vị trí đầu tiên trong bộ
nhớ chương trình: địa chỉ 0000H. Nội dung của RAM trên chip không bị ảnh
hưởng bởi hoạt động của Reset.
Hai mạch dùng reset hệ thống :
a)Reset bằng tay b) Reset khi cấp nguồn