Trong đó có 24 chân có tác dụng kép có nghĩa 1 chân có 2 chức năng, mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus
Trang 1CHƯƠNG 1: TỔNG QUAN
1.1 GIỚI THIỆU:
Ngày nay với sự phát triển của khoa học kỹ thuật, đặc biệt trong ngành
điện tử với những bước tiến vượt bậc về lĩnh vực vi xử lý và các vi mạch số đã
thực sự mang lại những hiệu qủa chính xác và gọn nhẹ trong quá trình điều
khiển, sản xuất Do đó việc chế tạo robot để phục vụ cho con người trong lĩnh
vực sản xuất đối với chúng ta không còn là vấn đề quá xa vời Tập đồ án này
trình bày những nghiên cứu và thiết kế một chiếc xe được điều khiển bởi chip vi
điều khiển 8051 để có thể di chuyển trong các nhà xưởng, xí nghiệp và thực
hiện một công việc nào đó thay cho con người
1.2 GIỚI HẠN ĐỀ TÀI :
Với thời gian thực hiện đề tài, cũng như trình độ chuyên môn có hạn, em
đã cố gắng hết sức để hoàn thành tập luận văn này, nhưng chỉ giải quyết được
những vấn đề sau :
- Xe di chuyển theo những lộ trình định trước bằng cách kẽ sẵn những
đường vạch sáng dưới sàn có màu tối
- Xe hoạt động trong khoảng thời gian từ 0 đến 99 phút
- Tại mỗi điểm dừng xe chỉ bật đèn báo hiệu thay vì phải làm một công
việc tương ứng
1.3 MỤC ĐÍCH NGHIÊN CỨU :
Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình
môn học để đủ điều kiện ra trường
Cụ thể khi nghiên cứu thực hiện đề tài là chúng em muốn phát huy những
thành quả ứng dụng của vi điều khiển nhằm tạo ra những sản phẩm, thiết bị tiên
tiến và đạt hiệu quả cao trong sản xuất
Ngoài ra quá trình nghiên cứu thực hiện đề tài là một cơ hội để chúng em
tự kiểm tra lại những kiến thức đã được học ở trường, đồng thời phát huy tính
sáng tạo, khả năng giải quyết một vấn đề theo yêu cầu đặt ra Và đây cũng là
dịp để chúng em tự khẳng định mình trước khi ra trường để tham gia vào các
hoạt động sản xuất của xã hội
Trang 21.4 KHÁI QUÁT VỀ ĐỀ TÀI:
1.4.1 Bàn phím và bộ phận hiển thị:
Hình 1.1: Mô tả bàn phím và bộ phận hiển thị
Bộ phận hiển thị gồm hai led 7 đoạn, hiển thị tín hiệu stop/sẵn sàng nhận
dữ liệu và thời gian mà xe phải vận hành trong suốt quá trình vận hành của nó
Bàn phím gồm có ba phím: phím 1 và 2 dùng để nhập thời gian vận hành
của xe, thời gian được nhập bằng cách ấn phím 1 để nhập chữ số hàng chục,
phím 2 để nhập chữ số hàng đơn vị, tương ứng với mỗi lần ấn phím 1 (hoặc 2)
chữ số hàng chục (hoặc hàng đơn vị) sẽ tăng lên 1; phím Go/Stop được dùng để
kích khởi xe hoạt động hoặc ngừng hoạt động của xe khi nó đang chuyển động
1.4.2 Quá trình vận hành của xe:
Xe sẽ di chuyển theo lộ trình định sẵn trong khoảng thời gian nhất định
bằng cách dò những đường vạch trắng được kẻ sẵn trên sàn có màu tối nhờ bộ
phận cảm biến đặt dưới xe, thời gian vận hành của xe được nhập vào từ bàn
phím và được lưu vào một byte dữ liệu Quá trình hoạt độâng của xe được mô tả
như hình sau:
1 : Xe
2 : Bánh xe được kéo bởi motor 2
3 : Bánh xe được kéo bởi motor 3
4,5 : Bộ phận cảm biến đặt dưới xe
6 : Vạch màu trắng được kẻ sẵn dưới sàn có màu tối
Trang 3Hình 1.2: Mô tả quá trình chuyển động của xe
Nguyên lý hoạt động của xe:
Sau khi thời gian vận hành (tính bằng phút) được nhập vào từ bàn phím,
để kích khởi cho xe hoạt động ta ấn phím Go/Stop Lúc này, bit trạng thái “R un”
được thiết lập, 8051 sẽ đọc byte dữ liệu có chứa thời gian vận hành để biết thời
gian hoạt động của xe, sau đó điều khiển hai motor kéo hai bánh xe (2) và (3) ở
hai bên thành xe quay, xe sẽ di chuyển về phía trước Đồng thời bộ phận cảm
biến (4) và (5) ở dưới xe cũng hoạt động Giả sử xe chạy lệch khỏi vạch trắng và
bộ phận cảm biến (4) đang ở phía trên vạch trắng thì bộ phận cảm biến này sẽ
gởi tín hiệu thông báo về cho chip 8051, để từ đó điều khiển cho motor kéo bánh
xe (3) quay vói tốc độ nhanh hơn đồng thời giảm tốc độ quay của bánh xe (2)
nhằm làm cho xe tiếp tục chuyển động đúng hướng dọc theo vạch trắng đã kẻ
dưới sàn Nhờ đặc tính này mà ta có thể cho xe chuyển động thẳng, quay phải
hay trái tuỳ ý bằng cách kẻ lên sàn những đường vạch trắng theo lộ trình định
trước
Đồng thời trong quá trình chuyển động của xe, bộ hiển thị led 7 đoạn sẽ
hiển thị thời gian còn lại mà xe phải hoạt động theo từng phút cho đến khi hết
thời gian thì hiển thị tín hiệu stop và sẵn sàng để nhận dữ liệu cho quá trình vân
hành tiếp theo
Trong quá trình vận hành của xe, nếu gặp phải tín hiệu dừng trên đường
đi, tín hiệu này là một vạch trắng được kẽ dưới sàn, thì xe sẽ dừng lại trong một
khoảng thời gian đồng thời bật đèn báo hiệu, ứng với công việc mà xe phải làm
tại mỗi điểm dừng, sau đó vượt qua tín hiệu dừng này và tiếp tục di chuyển như
trên
Ngoài ra, nếu xe đang hoạt động mà ta ấn nút Go/Stop thì xe sẽ dừng lại
và bộ hiển thị tín hiệu stop
Trong quá trình thiết kế và thi công mạch có sử dụng một số vi mạch như:
chip vi điều khiển 8051, 8255A, EPROM 2764, RAM 6264, 74LS138, MAX232
Các vi mạch này sẽ được khảo sát rõ trong các chương kế tiếp
Trang 4CHƯƠNG 2: TỔNG QUAN VỀ HỌ VI ĐIỀU KHIỂN MCS-51
2.1 CẤU TẠO VI ĐIỀU KHIỂN 8051:
2.1.1 Giới thiệu họ MSC-51:
MCS-51 là họ vi điều khiển của hãng Intel Các IC tiêu biểu cho họ
MSC-51 là chip 80MSC-51, 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 hệ thống Theo các 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 đó
Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương
tự như nhau Ở đây giới thiệu chip 8051 có các đặc trưng được tóm tắt như sau:
- 4 kbyte ROM
- 128 byte RAM
- 4 port xuất nhập (I/0 port) 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
- Một bộ xử lí bit (thao tác trên các bit đơn)
- 210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
- Nhân / chia trong 4s
Cùng họ với 8051 có một số vi điều khiển khác Về cơ bản chúng đều
giống nhau, chúng chỉ khác nhau ở vùng nhớ nội bao gồm vùng nhớ mã lệnh,
vùng nhớ dữ liệu và số bộ định thời Sự khác nhau đó được mô tả bằng bảng sau
Trang 52.1.1 Cấu trúc bên trong và sơ đồ chân của 8051:
a Cấu trúc bên trong:
Hình 2.1 : Sơ đồ khối của chip 8051
Các thanh ghi khác
128 byte RAM
ROM
0K-8031/8032 4K-8051
Timer 2
8032/ 8052
128 bytes RAM 8032/ 8052
Trang 6b Sơ đồ chân 8051:
Hình 2.2 : Sơ đồ chân của 8051
Chức năng các chân của 8051:
8051 có tất cả 40 chân có chức năng như các đường xuất nhập Trong đó
có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể
hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần
của các bus dữ liệu và bus địa chỉ
- Port 0:
Port 0 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ỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường I/O
Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó trở thành bus địa chỉ và bus dữ
liệu đa hợp (byte thấp của bus địa chỉ nếu là địa chỉ)
- Port 1:
18
19 12MHz
40
29 30
31 9
A15 A14 A13 A12 A11 A10 A9 A8
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
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
PSEN ALE
EA RST
8051
Trang 7Port 1 là port I/O trên các chân từ 1 đến 8 trên 8051 Các chân được ký
hiệu P1.0, P1.1, P1.2, P1.7 có thể dùng cho giao tiếp với các thiết bị ngoài
nếu cần Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao
tiếp với các thiết bị bên ngoài
Port 2 là 1 port có tác dụng kép trên các chân từ 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ỉ 16-bit đối
với các thiết kế dùng bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn
256 bytes bộ nhớ dữ liệu ngoài
- Port 3:
Port 3 là port có tác dụng kép trên các chân từ 10 đến 17 trên 8051 Khi
không hoạt động xuất/nhập, các chân của port này 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 như ở
bảng sau:
Bit Tên Chức năng chuyển đổi
P3.0 RxD Ngõ vào dữ liệu nối tiếp
P3.1 TxD Ngõ xuất dữ liệu nối tiếp
P3.2 INT0\ Ngõ vào ngắt cứng thứ 0
P3.3 INT1\ Ngõ vào ngắt cứng thứ 1
P3.4 T0 Ngõ vào củaTIMER/COUNTER thứ 0
P3.5 T1 Ngõ vào củaTIMER/COUNTER thứ 1
P3.6 WR\ Tín hiệu ghi dữ liệu lên bộ nhớ ngoài
P3.7 RD\ Tín hiệu đọc bộ nhớ dữ liệu ngoài
Bảng 1.2: Chức năng của các chân của port 3
- Chân cho phép bộ nhớ chương trình PSEN\ (Program store enable):
Tín hiệu PSEN\ là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép truy
xuất bộ nhớ chương trình mở rộng thường được nối đến chân OE\ (output enable)
của EPROM cho phép đọc các byte mã lệnh
Tín hiệu PSEN\ ở mức thấp trong thời gian Microcontroller 8051 tìm nạp
lệnh Các mã lệnh của chương trình được đọc từ EPROM qua bus dữ liệu và
được chốt vào thanh ghi lệnh IR bên trong 8051 để giải mã lệnh Khi 8051 thi
hành chương trình trong EPROM nội PSEN\ sẽ ở mức logic 1
- Chân cho phép chốt địa chỉ ALE (Address Latch Enable):
Khi 8051 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ
và bus dữ liệu đa hợp 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 port 0 được sử dụng làm bus địa chỉ/dữ liệu đa hợp, chân ALE
xuất tín hiệu để chốt địa chỉ vào một thanh ghi ngoài trong suốt ½ đầu của chu
Trang 8kỳ bộ nhớ Sau khi điều này đã được thực hiện, các chân của port 0 sẽ xuất nhập
dữ liệu hợp lệ trong suốt ½ thứ 2 của chu kỳ bộ nhớ
Tín hiệu ALE có tần số bằng 1/6 lần tần số dao động trên chip và có thể
được dùng làm tín hiệu clock cho các phần khác của hệ thống Ngoại lệ duy nhất
là trong thời gian thực thi lệnh MOVX, một xung ALE sẽ bị bỏ qua Chân ALE
được dùng làm ngõ vào xung lập trình cho EPROM trên chip đối với các phiên
bản của 8051 có EPROM này
- Chân truy xuất ngoài EA\(External Access):
Tín hiệu vào EA\ ở chân 31 có thể ở mức logic1 (5v) hoặc mức logic 0
(GND) Nếu ở mức 1, 8051 thi hành chương trình trong ROM nội (chương trình
nhỏ hơn 4 K) Nếu ở mức 0 (và chân PSEN\ cũng ở logic 0), 8051 sẽ thi hành
chương trình từ bộ nhớ mở rộng Chân EA\ được lấy làm chân cấp nguồn 21V
khi lập trình cho EPROM trong 8051
- Ngõ tín hiệu RST (Reset) :
Ngõ vào RST ở chân 9 là ngõ vào Reset của 8051 Khi ngõ vào tín hiệu
này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp
những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự động Reset
- Các ngõ vào bộ dao động XTAL1, XTAL2:
Mạch dao động bên trong chip 8051 được kết nối với thạch anh bên ngoài
ở hai chân XTAL1 và XTAL2 (chân 18 và 19) Các tụ ổn định cũng được yêu
cầu như trên hình vẽ trong sơ đồ Tần số thạch anh thường sử dụng cho 8051 là
12Mhz
- Nguồn cung cấp
Chip 8051 vận hành với nguồn đơn +5V Chân 40 của chip 8051 được nối
lên nguồn 5V (VCC) và chân 20 được nối với mass (VSS)
c Cấu trúc cổng xuất nhập:
Mạch bên trong của một chân port mô tả ngắn gọn trong hình 1.3 Việc
ghi đến một chân của cổng sẽ nạp dữ liệu vào bộ chốt của port Ngõ ra Q của bộ
chốt điều khiển một transitor trường và transistor này nối với chân của cổng
Khả năng fanout của các port 1, 2 và 3 là 4 tải vi mạchTTL loại Schottky công
suất thấp (LS), còn của port 0 là 8 tải loại LS Lưu ý là điện trở kéo lên sẽ không
có ở port 0 (trừ khi port này 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
Trang 9Hình 2.3 Sơ đồ mạch bên trong của các port xuất nhập
Việc đọc chốt được phân biệt làm hai, đó là đọc bộ chốt và đọc chân port
Sự phân biệt này nhằm chống trường hợp chập mạch do quá tải gây nên Lệnh
đọc một bit cổng sẽ đọc chân của cổng Trong trường hợp này, chốt phải được
giữ ở mức cao, nếu không FET sẽ được kích bảo hoà và ngõ ra xuống mức thấp
Tất cả các chốt của port đều được set khi reset hệ thống Như vậy các chân chốt
đều được dùng như ngõ vào mà không cần phải set chốt Tuy nhiên, nếu đã xóa
chốt không thể đọc dữ liệu đúng từ chân port trừ khi set chốt trở lại
d Tổ chức bộ nhớ:
8051 có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Cả hai
bộ nhớ chương trình và dữ liệu có thể chứa bên trong 8051,tuy nhiên ta có thể
mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dụng các chip nhớ
bên ngoài với dung lượng tối đa là 64K cho bộ nhớ chương trình và 64K cho bộ
nhớ dữ liệu
Bộ nhớ nội trong chip 8051 bao gồm EPROM và RAM RAM trong 8051 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 và các thanh ghi chức năng đặc biệt SFR Hai đặc tính cần lưu ý là:
- Các thanh ghi và các port xuất/nhập đã được định địa chỉ theo kiểu ánh
xạ bộ nhớ và được truy xuất như một vị trí nhớ trong bộ nhớ
- Ngăn xếp thường trú trong Ram trên chip thay vì ở trong Ram ngoài như
đối với các bộ vi xử lý khác
Chân Port Ghi
chốt
Đọc chốt
Đọc chân Bus nội của 8051
D Q
Chốt Port
Vcc
Trang 10Hình 2.4: Tóm tắt các vùng nhớ của chip 8031(không có ROM nội)
Như ta đã thấy ở hình vẽ trên RAM bên trong 8051 đượ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
d.1 Vùng RAM đa mục đích:
byte địa chỉ bit byte địa chỉ bit
F0 F7 F6 F5 F4 F3 F2 F1 F0 B RAM đa dụng
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D
3 D2 D1 D0 PSW
FFFF
0000
Bộ nhớ chương trình
Được cho phép bởi PSEN
FFFF
0000
Bộ nhớ dữ liệu
Được cho phép bởi
RD & WR
Bộ nhớ ngoài
Trang 1127 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18 8D không được địa chỉ hoá bit TH1
22 17 16 15 14 13 12 11 10 8C không được địa chỉ hoá bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B không được địa chỉ hoá bit TL1
20 07 06 05 04 03 02 01 00 8A không được địa chỉ hoá bit TL0
1F Bank 3 89 không được địa chỉ hoá bit TMOD
17 Bank 2 87 không được địa chỉ hoá bit PCON
10
0F Bank 1 83 không được địa chỉ hoá bit DPH
07 Bank thanh ghi 0 81 không được địa chỉ hoá bit SP
00 (mặc định cho R0 -R7) 88 87 86 85 84 83 82 81 80 P0
Hình 2.5: Bộ nhớ dữ liệu trên chip 8051
Mặc dù trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H
đến 7FH, 32 byte dưới từ 00H đến 2FH cũng có thể dùng với mục đích tương tự
(mặc dù các địa chỉ này đã có mục đích khác)
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
RAM nội cũng có thể được truy xuất bằng địa chỉ gián tiếp thông qua R0
và R1 (chỉ hai thanh ghi này mà thôi)
d.2 Vùng RAM định địa chỉ bit :
8051 chứa 210 bit được định địa chỉ, trong đó 128 bit chứa trong các byte ở
địa chỉ từ 20H đến 2FH và 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à các đăëc tính mạnh của hầu
hết các bộ vi điều khiển Các bit có thể được đặt, xóa, A N D , O R , … bằng m ột
lệnh đơn Đa số các microcontroller xử lý đòi hỏi một chuỗi lệnh đọc-sửa- ghi
để nhận được cùng một kết quả Ngoài ra các port cũng có thể truy xuất được
từng bit
8051 có 128 bit được định địa chỉ và có nhiều mục đích ở các byte có địa
chỉ từ 20H -2FH Các địa chỉ này được truy xuất như là các byte hay các bit tuỳ
thuộc vào lệnh được dùng
Trang 12d.3 Các dãy thanh ghi :
32 byte thấp nhất của bộ nhớ nội chứa các dãy thanh ghi Các lệnh của
8051 hổ trợ 8 thanh ghi từ R0 đến R7 thuộc dãy 0 Đây là dãy mặc định sau khi
reset hệ thống các thanh ghi này ở các địa chỉ từ 00H đến 07H
Các lệnh dùng các thanh ghi từ R0 đến R7 thì sẽ ngắn hơn và nhanh hơn
các lệnh tương ứng nhưng 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 Dãy thanh ghi tích cực có
thể chuyển đổi bằng cách thay đổi các bit chọn dãy thanh ghi trong từ trạng thái
chương trình PSW
Y Ù tưởng dùng “các dãy thanh ghi” cho phép “chuyển đổi ngữ cảnh”
chương trình nhanh và hiệu qủa ở những nơi mà các phần riêng rẽõ của phần
mềm sử dụng một tập thanh ghi riêng, độc lập với các phần khác của phần mềm
e Các thanh ghi có chức năng đặc biệt (SFR: Special Function Register):
Các thanh ghi nội của 8051 được truy xuất rõ ràng bởi một tập lệnh Các
thanh ghi trong 8051 được cấu hình như một phần của RAM trên chip vì vậy mỗi
thanh ghi sẽ có một địa chỉ Cũng như R0 đến R7, 8051 có 21 thanh ghi có chức
năng đặc biệt SFR ở vùng trên của RAM nội từ địa chỉ 80H đến FFH Dưới đây
là một vài trong số các thanh ghi đặc biệt nói trên:
- Từ trạng thái chương trình (PSW: Program Status Word)
- Thanh ghi B
- Con trỏ stack (Stack Pointer)
- Con trỏ dữ liệu DPTR (Data Pointer)
- Các thanh ghi Port (Port Register)
- Các thanh ghi định thời (Timer Register)
- Các thanh ghi của cổng nối tiếp (Serial Port Register)
- Các thanh ghi ngắt (Interrupt Register)
- Thanh ghi điều khiển nguồn PCON (Power Control Register)
2.2 TẬP LỆNH CỦA HỌ 8051 :
Các chương trình được cấu tạo từ nhiều lệnh, chúng được xây dựng logic,
sự nối tiếp của các lệnh được nghĩ ra một cách hiệu quả và nhanh, kết quả của
chương trình khả quan
Tập lệnh họ MSC-51 được sự kiểm tra của các kiểu định địa chỉ và các
lệnh của chúng có các Opcode 8 bit Điều này cung cấp khả năng 28= 256 lệnh
được thi hành và một lệnh không được định nghĩa Vài lệnh có 1 hoặc 2 byte bởi
dữ liệu hoặc địa chỉ thêm vào Opcode Trong toàn bộ các lệnh có 139 lệnh 1
byte, 92 lệnh 2 byte và 24 lệnh 3 byte
2.2.1 Các kiểu định địa chỉ (addressing mode):
Trang 13vào trạng thái của người lập trình 8051 có 8 kiểu định địa chỉ được dùng như
2.2.2 Các loại lệnh của 8051:
Các lệnh của 8051 được chia làm 5 nhóm:
- Nhóm lệnh số học
- Nhóm lệnh logic
- Nhóm lệnh di chuyển dữ liệu
- Nhóm lệnh xử lý bit
- Nhóm lệnh rẽ nhánh
2.3 HOẠT ĐỘNG ĐỊNH THỜI CỦA 8051:
2.3.1 Giới Thiệu:
Một bộ định thời là một chuỗi các flip flop với mỗi flip flop là một mạch
chia 2, nó nhận tín hiệu vào là một nguồn xung clock, xung clock được đưa vào
flip flop thứ nhất, flip flop này chia đôi tần số xung clock Ngõ ra của flip flop
thứ nhất trở thành nguồn xung clock cho flip flop thứ hai, và nó cũng chia tần số
xung clock này cho 2, cứ tiếp tục như vậy Vì mỗi tầng kế tiếp nhau đều chia
cho 2, nên bộ định thời có n tầng phải chia tần số clock ngõ vào cho 2n
Ngõ ra của tầng cuối cùng là xung clock của flip flop báo tràn bộ định
thời, cờ này được kiểm tra bởi phần mềm hoặc tạo ra một ngắt Giá trị nhị phân
trong các flip flop của bộ định thời là số đếm của các xung clock từ khi bộ định
thời bắt đầu đếm
Các bộ định thời được sử dụng trong hầu hết các ứng dụng hướng điều
khiển 8051 có 2 bộ định thời 16 bit, mỗi bộ có 4 chế độ hoạt động Các bộ định
thời dùng để định thời trong một khoảng thời gian, đếm sự kiện và tạo tốc độ
Baud cho Port nối tiếp của chip 8051
Trong các ứng dụng định thời, bộ định thời được lập trình để tràn ở một
khoảng thời gian đều đặn và được set cờ tràn của bộ định thời Cờ được dùng để
đồng bộ chương trình để thực hiện một công việc như là kiểm tra trạng thái của
các ngõ vào hoặc gởi dữ liệu đến các ngõ ra Các ứng dụng khác có sử dụng
việc ghi giờ đều đều của bộ định thời để đo thời gian đã trôi qua hai trạng thái
Trang 14(ví dụ đo độ rộng xung).Việc đếm một sự kiện được dùng để xác định số lần
xuất hiện của một sự kiện hơn là đo thời gian giữa các sự kiện
Các bộ định thời của 8051 được truy xuất bởi việc dùng 6 thanh ghi chức
năng đặc biệt : TCON, TMOD, TL0, TL1, TH0, TH1
2.3.2 Thanh ghi chế độ định thời TMOD:
Thanh ghi TMOD gồm hai nhóm 4 bit là: 4 bit thấp đặt chế độ hoạt động
cho bộ định thời 0 và 4 bit cao đặt chế độ hoạt động cho bộ định thời 1
TMOD không được định địa chỉ từng bit, nó được nạp một lần bởi phần
mềm ở đầu chương trình để khởi động chế độ hoạt động của bộ định thời Sau đó
bộ định thời có thể được dừng, khởi động lại bởi sự truy xuất các thanh ghi chức
năng đặc biệt khác của bộ định thời
2.3.3 Thanh ghi điều khiển định thời TCON:
Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi
Timer 0 và Timer 1 Thanh ghi TCON có được định địa chỉ bit
2.3.4 Các chế độ định thời và cờ tràn:
8051 có 2ø bộ định thời là bộ định thời 0 và bộ định thời 1 Ta dùng ký
hiệu TLx và Thx để chỉ 2 thanh ghi byte thấp và byte cao của bộ định thời 0
hoặc bộ định thời 1
a Chế độ định thời 13-bit (chế độ 0) :
Chế độ 0 là chế độ định thời 13-bit, trong đó byte cao của bộ định thời
(Thx) được ghép cascade với 5 bit thấp của byte thấp của bộ định thời (TLx) để
tạo thành một bộ định thời 13 bit 3 bit cao của TLx không dùng
b Chế độ định thời 16-bit (chế độ 1) :
Chế độ 1 là chế độ định thời 16 bit, tương tự như chế độ 0 ngoại trừ bộ
định thời này hoạt động như một bộ định thời đầy đủ 16 bit, xung clock được
dùng với sự kết hợp các thanh ghi cao và thấp (TLx, THx) Khi xung clock được
nhận vào, bộ bộ định thời đếm lên: 0000H, 0001H, 0002H, , và một sự tràn
sẽ xuất hiện khi có sự chuyển số đếm từ FFFH sang 0000H và sẽ set cờ tràn
bằng 1, sau đó bộ định thời đếm tiếp Cờ tràn là bit TFx trong thanh ghi TCON
mà nó sẽ được đọc hoặc ghi bởi phần mềm
c Chế độ tự nạp lại 8-bit (chế độ 2):
Chế độ 2 là chế độ tự nạp lại 8 bit, byte thấp TLx của bộ định thời hoạt
động định thời 8 bit trong khi byte cao THx của bộ định thời giữ giá trị nạp lại
Khi bộ đếm tràn từ FFH sang 00H, không chỉ cờ tràn được set mà giá trị trong
THx cũng được nạp vào TLx: bộ đếm được tiếp tục từ giá trị này lên đến sự
chuyển trạng thái từ FFH sang 00H kế tiếp và cứ thế tiếp tục
Trang 15d Chế độ định thời chia xẻ (chế độ 3):
Chế độ 3 là chế độ định thời chia xẻ và có hoạt động khác nhau cho từng
bộ định thời Chế độ 3 cung cấp 1 bộ định thời 8-bit nữa là bộ định thời thứ ba
của 8051 Khi bộ định thời 0 ở chế độ 3, bộ định thời 1 có thể hoạt động hoặc tắt
bằng cách chuyển bộ định thời này ra khỏi chế độ 3 hoặc vào chế độ 3.Bộ định
thời 1 có thể được dùng bởi Port nối tiếp như là một máy phát tốc độ Baud, hoặc
nó có thể dùng trong hướng nào đó mà không sử dụng ngắt
2.3.5 Các nguồn xung clock định thời:
Có hai nguồn xung clock có thể đếm giờ là sự định giờ bên trong và sự
đếm sự kiện bên ngoài Bit C/T trong TMOD cho phép chọn 1 trong 2 khi Timer
được khởi động
a Định thời một khoảng thời gian:
Nếu bit C/T = 0 thì hoạt động định thời được chọn và nguồn xung clock
của bộ định thời do mạch dao động bên trong chip tạo ra Các thanh ghi TLx và
THx đếm lên với tần số xung clock bằng 1/12 lần tần số dao động trên Chip
Các sự tràn bộ định thời xảy ra sau một con số cố định của những xung
clock, nó phụ thuộc vào giá trị khởi tạo được nạp vào các thanh ghi THx và TLx
b Sự đếm các sự kiện (Event Counting):
Nếu bit C/T = 1 thì bộ định thời được cung cấp xung clock từ nguồn bên
ngoài Trong nhiều ứng dụng, nguồn bên ngoài này cung cấp cho bộ định thời 1
xung dựa trên sự xảy ra của sự kiện Bộ định thời bây giờ là sự đếm sự kiện
Con số sự kiện được xác định trong phần mềm bởi việc đọc các thanh ghi định
thời TLx/THx, bởi vì giá trị 16 bit trong các thanh này tăng lên cho mỗi sự kiện
2.3.6 Khởi động dừng và điều khiển các bộ định thời:
Bit TRx trong thanh ghi có bit định vị TCON được điều khiển bởi phần
mềm để bắt đầu hoặc kết thúc các bộ định thời Để bắêt đầu các bộ định thời ta
set bit TRx và để kết thúc bộ định thời ta xoá TRx
Thêm phương pháp nữa để điều khiển các bộ định thời là dùng bit GATE
trong thanh ghi TMOD và ngõ nhập bên ngoài INTx Điều này được dùng để đo
các độ rộng xung
2.3.7 Khởi động và truy xuất các thanh ghi định thời:
Các bộ định thời được khởi động 1 lần ở đầu chương trình để đặt chế độ
hoạt động cho chúng Sau đó trong chương trình các bộ định thời được bắt đầu,
được xóa, các thanh ghi định thời được đọc và cập nhật theo yêu cầu của từng
ứng dụng cụ thể
TMOD là thanh ghi đầu tiên được khởi gán, bởi vì đặt chế độ hoạt động
cho các bộ định thời
Trang 16Cờ tràn TFx tự động được set bởi phần cứng sau mỗi sự tràn và sẽ được
xóa bởi phần mềm Chính vì vậy ta có thể lập trình chờ sau mỗi lần tràn ta sẽ
xóa cờ TFx và quay vòng lặp khởi gán cho TLx/THx để bộ định thời luôn luôn
bắt đầu đếm từ giá trị khởi gán lên theo ý ta mong muốn
2.4 HOẠT ĐỘNG CỦA PORT NỐI TIẾP:
2.4.1 Giới thiệu:
8051 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ trên
một dãy tần số rộng Chức năng chủ yếu là thực hiện chuyển đổi song song sang
nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp sang song song với dữ liệu nhập
Port nối tiếp cho hoạt động song công (full duplex: thu và phát đồng thời)
và đệm thu (receiver buffering) cho phép một ký tự sẽ được thu và được giữ
trong khi ký tự thứ hai được nhận Nếu CPU đọc ký tự thứ nhất trước khi ký tự
thứ hai được thu đầy đủ thì dữ liệu sẽ không bị mất
Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port
nối tiếp là: SBUF và SCON Bộ đệm port nối tiếp (SBUF) ở điạ chỉ 99H nhận dữ
liệu để thu hoặc phát Thanh ghi điều khiển port nối tiếp (SCON) ở điạ chỉ 98H
là thanh ghi có điạ chỉ bit chứa các bit trạng thái và các bit điều khiển Các bit
điều khiển đặt chế độ hoạt động cho port nối tiếp, và các bit trạng thái Báo cáo
kết thúc việc phát hoặc thu ký tự Các bit trạng thái có thể được kiểm tra bằng
phần mềm hoặc có thể lập trình để tạo ngắt
2.4.2 Thanh ghi điều khiển port nối tiếp:
Thanh ghi điều khiển cổng nối tiếp dùng để thiết lập chế độ hoạt động
của port nối tiếp Việc thiết lập chế độ hoạt động cho port nối tiếp được thực
hiện bằng cách ghi vào thanh ghi chế độ port nối tiếp SCON ở địa chỉ 98H
2.4.3 Các chế độ hoạt động:
Port nối tiếp của 8051 có 4 chế độ hoạt động, các chế độ được chọn bằng
cách ghi 1 hoặc 0 cho các bit SM0 và SM1 trong thanh ghi SCON Ba trong số
các chế độ hoạt động cho phép truyền không đồng bộ, trong đố mỗi ký tự được
thu hoặc phát sẽ cùng với một bit start và một bit stop tạo thành một khung Mỗi
chế độ hoạt động sẽ được đề cập tóm tắt sau đây:
a Chế độ 0 (thanh ghi dịch 8 bit):
Ở chế độ 0 dữ liệu nối tiếp vào và ra qua RXD và TXD xuất xung nhịp
dịch, 8 bit được phát hoặc thu với bit đầu tiên là LSB Tốc độ baud cố định ở
1/12 tần số dao động trên chip
Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF
Dữ liệu dịch ra ngoài trên đường RXD (P3.0) với các xung nhịp được gửi ra
đường TXD (P3.1) Mỗi bit phát đi hợp lệ (trên RXD) trong một chu kỳ máy
Việc thu được khởi động khi cho phép bộ thu (REN) là 1 và bit ngắt thu
Trang 17port nối tiếp, rồi xoá RI để bắt đầu nhận dữ liệu Khi RI bị xoá, các xung nhịp
được đưa ra đường TXD, bắt đầu chu kỳ máy kế tiếp và dữ liệu theo xung nhịp ở
đường RXD Lấy xung nhịp cho dữ liệu vào port nối tiếp xảy ra ở cạnh đường
của TXD
b Chế độ 1 (UART 8 bit với tốc độ baud thay đổi):
Ở chế độ 1, port nối tiếp của 8051 làm việc như một UART 8 bit với tốc
độ baud thay đổi được Một UART (Bộ thu phát đồng bộ vạn năng) là một dụng
cụ thu phát dữ liệu nối tiếp với mỗi ký tự dữ liệu đi trước là bit start ở mức thấp
và theo sau bit stop ở mức cao Đôi khi xen thêm bit kiểm tra chẵn lẻ giữa bit dữ
liệu cuối cùng và bit stop Hoạt động chủ yếu của UART là chuyển đổi song
song sang nối tiếp với dữ liệu nhập
Ở chế độ 1, 10 bit được phát trên TXD hoặc thu trên RXD Những bit đó
là: 1 bit start (luôn luôn là 0), 8 bit dữ liệu (LSB đầu tiên) và 1 bit stop (luôn
luôn là 1) Với hoạt động thu, bit stop được đưa vào RB8 trong SCON Trong
8051 chế độ baud được đặt bằng tốc độ báo tràn của bộ định thời1
c Chế độ 2 (UART 9 bit với tốc độ baud cố định):
Khi SM1 = 1 và SM0 = 0, cổng nối tiếp làm việc ở chế độ 2, như một
UART 9bit có tốc độ baud cố định, 11 bit sẽ được phát hoặc thu:1bit start, 8 bit
data, 1 bit data thứ 9 có thể được lập trình và 1 bit stop Khi phát bit thứ 9 là bất
cứ gì đã được đưa vào TB8 trong SCON (có thể là bit Parity) Khi thu bit thứ 9
thu được sẽ ở trong RB8 Tốc độ baud ở chế độ 2 là 1/32 hoặc 1/16 tần số dao
động trên chip
d Chế độ 3 (UART 9 bit với tốc độ baud thay đổi):
Chế độ này giống như ở chế độ 2 ngoại trừ tốc độ baud có thể lập trình
được và được cung cấp bởi Timer.Thật ra các chế độ 1, 2, 3 rất giống nhau Cái
khác biệt là ở tốc độ baud (cố định trong chế độ 2, thay đổi trong chế độ 1 và 3)
và ở số bit data (8 bit trong chế độ 1,9 trong chế độ 2 và 3)
2.4.4 Khởi động và truy xuất các thanh ghi cổng nối tiếp:
Cho Phép Thu:
Bit cho phép bộ thu (REN = Receiver Enable) trong thanh ghi SCON phải
được đặt lên 1 bằng phần mềm để cho phép thu các ký tự thông thường thực hiện
việc này ở đầu chương trình khi khởi động cổng nối tiếp, bộ định thời…
Bit dữ liệu thứ 9:
Bit dữ liệu thứ 9 cần phát trong các chế độ 2 và 3 phải được nạp vào trong
TB8 bằng phần mềm Bit dữ liệu thứ 9 thu được đặt ở RB8 Phần mềm có thể
cần hoặc không cần bit dữ liệu thứ 9, phụ thuộc vào đặc tính kỹ thuật của thiết bị
nối tiếp sử dụng (bit dữ liệu thứ 9 cũng đóng vai trò quan trọng trong truyền
thông đa xử lý)
Trang 18Thêm vào bit chẵn lẻ:
Thường sử dụng bit dữ liệu thứ 9 để làm bit chẵn lẻ cho một ký tự Như đã
nhận xét ở chương trước, bit P trong từ trạng thái chương trình (PSW) được đặt
lên 1 hoặc bị xoá bởi chu kỳ máy để thiết lập kiểm tra chẵn với 8 bit trong thanh
tích lũy
Các cờ ngắt:
Hai cờ ngắt thu và phát (RI và TI) trong SCON đóng một vai trò quan
trọng trong truyền thông nối tiếp dùng 8051 Cả hai bit được đặt lên 1 bằng phần
cứng, nhưng phải được xoá bằng phần mềm
2.4.5 Tốc độ baud của port nối tiếp:
Như đã nói, tốc độ baud cố định ở các chế độ 0 và 2 Trong chế độ 0 nó
luôn luôn là tần số dao động trên chip được chia cho 12 Thông thường thạch anh
ấn định tần số dao động trên chip nhưng cũng có thể sử dụng nguồn xung nhịp
khác
Mặc nhiên sau khi reset hệ thống, tốc độ baud chế độ 2 là tần số bộ dao
động chia cho 64, tốc độ baud cũng bị ảnh hưởng bởi 1 bit trong thanh ghi điều
khiển nguồn cung cấp (PCON) bit 7 của PCON là bit SMOD Đặt bit SMOD lên
1 làm gấp đôi tốc độ baud trong các chế độ 1, 2 và 3 Trong chế độ 2, tốc độ
baud có thể bị gấp đôi từ giá trị mặc nhiên của 1/64 tần số dao động (SMOD=0)
đến 1/32 tần số dao động (SMOD=1)
Các tốc độ baud trong các chế độ 1 và 3 được xác định bằng tốc độ tràn
của bộ định thời 1 Vì bộ định thời hoạt động ở tần số tương đối cao, tràn bộ định
thời được chia thêm cho 32 (hoặc 16 nếu SMOD =1 ) trước khi cung cấp tốc độ
xung nhịp cho port nối tiếp
2.5 HOẠT ĐỘNG NGẮT:
2.5.1 Giới thiệu:
Ngắt là hoạt động ngừng tạm thời một chương trình này để thi hành một
chương trình khác Các ngắt có một vai trò quan trọng trong thiết kế và khả năng
thực thi của vi điều khiển Chúng cho phép hệ thống đáp ứng không cùng lúc tới
một công việc và giải quyết một công việc đó trong khi một chương trình khác
đang thực thi Một hệ thống được điều khiển bằng ngắt cho ảo giác là làm nhiều
việc đồng thời
Dĩ nhiên CPU không thể thực thi nhiều hơn một lệnh ở một thời điểm
nhưng CPU có thể ngưng tạm thời việc thực thi một chương trình để thực thi một
chương trình khác, rồi quay về chương trình đầu khi có yêu cầu ngắt Chương
trình xủ lý một ngắt được gọi là chương trình phục vụ ngắt (ISR : Interrupt
Sevice Reutine)
Trang 192.5.2 Tổ chức ngắt:
Có 5 nguyên nhân tạo ra ngắt đối với 8051: hai ngắt do bên ngoài, hai
ngắt do bộ định thời và một ngắt do port nối tiếp, tất cả các nguồn ngắt bị cấm
sau khi reset hệ thống và cho phép bởi phần mềm
a Cho phép và không cho phép ngắt:
Mỗi nguồn ngắt được cho phép hoặc không cho phép từng ngắt một qua
thanh ghi chức năng đặt biệt định địa chỉ bit, thanh ghi cho phép ngắt IE
(Interrupt Enable) ở địa chỉ 0A8H Cũng như các bit cho phép mỗi nguồn ngắt,
có một bit cho phép hoặc cấm toàn bộ được xóa để cấm tất cả các ngắt hoặc
được đặt lên 1 để cho phép tất cả các ngắt
b Ưu tiên ngắt:
Mỗi nguồn ngắt đuợc lập trình riêng vào một trong hai mức ưu tiên qua
thanh ghi chức năng đặc biệt được địa chỉ bit, thanh ghi ưu tiên ngắt IP (Interrupt
priority) ở địa chỉ 0B8H
Các ngắt ưu tiên được xóa sau khi reset hệ thống, thanh ghi IP sẽ mặc
định tất cả các ngắt ở mức ưu tiên thấp
c Chuỗi vòng:
Nếu có hai ngắt có cùng mức ưu tiên xuất hiện đồng thời, chuỗi vòng cố
định sẽ xác định ngắt nào được phục vụ trước Chuỗi vòng này sẽ là: ngắt ngoài
0, ngắt do bộ định thời 0, ngắt ngoài 1, ngắt do bộ định thời 1, ngắt do port nối
tiếp
2.5.3 Xử lý ngắt:
Khi có một ngắt xuất hiện và được CPU chấp nhận, chương trình chính bị
ngắt Những hoạt động sau xảy ra:
- Hoàn tất việc thực thi lệnh hiện hành
- Bộ đếm chương trình PC được cất vào ngăn xếp
- 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ỉ vector của trình phục vụ
ngắt ISR
- ISR được thực thi
ISR thực thi và đáp ứng ngắt ISR hoàn tất bằng lệnh RET1 Điều này làm
lấy lại giá trị cũ của PC từ ngăn xếp và lấy lại trạng thái ngắt cũ Chương trình
lại tiếp tục thi hành tại nơi mà nó dừng
a Các Vector 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:
Trang 20Ngắt do Cờ Địa chỉ vector
Reset hệ thống
TI hoặc RI
0000H 0003H 000BH 0013H 001BH 0023H
Bảng 2.1: Các vector ngắt
Vector reset hệ thống (RST ở địa chỉ 0000H) nó giống như một ngắt Nó
ngắt chương trình chính và tải vào PC một giá trị mới
K hi chỉ đến m ột ngắt “cờ gây ngắt tự động bị xóa bởi phần cứng, trừ ra
R1, T1 cho các ngắt cổng nối tiếp Vì có hai nguồn có thể có cho ngắt này,
không thực tế để CPU xóa cờ ngắt này Các bit phải được kiểm tra trong ISR để
xác định nguồn ngắt và cờ tạo ngắt sẽ được xóa bằng phần mềm
b Các ngắt của 8051:
Các ngắt do bộ định thời:
Các ngắt do bộ định thời xảy ra khi các thanh ghi định thời (TLx / THx)
tràn và set cờ tràn TFx lên 1 Các cờ tràn TFx không bị xóa bằng phần mềm do
khi các ngắt được cho phép, TFx tự động được xóa bằng phần cứng khi CPU trỏ
tới trình phục vụ ngắt
Các ngắt cổng nối tiếp:
Ngắt cổng nối tiếp xảy ra khi hoặc cờ ngắt phát TI hoặc cờ ngắt thu RI
được đặt lên 1 Ngắt phát xảy ra khi một ký tự đã được nhận xong và đang đợi
trong SBUF để được đọc
Cờ gây ra ngắt cổng nối tiếp không bị xóa bằng phần cứng khi CPU trỏ tới
trình phục vụ ngắt do có hai nguồn ngắt cổng nối tiếp TI và RI Nguồn ngắt phải
được xác định trong ISR và cờ tạo ngắt sẽ được xóa bằng phần mềm
Các ngắt ngoài:
Các ngắt ngoài xảy ra khi có một mức thấp hoặc cạnh xuống trên chân
INT0 hoặc INT1 của vi điều khiển
Các cờ tạo ngắt này là các bit IE0 và IE1 trong thanh ghi TCON Khi
quyền điều khiển đã trỏ tới trình phục vụ ngắt, cờ tạo ra ngắt chỉ được xóa nếu
ngắt được tích cực bằng cạnh xuống Nếu ngắt được tích cực theo mức, thì
nguồn yêu cầu ngắt bên ngoài sẽ điều khiển mức của cờ thay cho phần cứng
Trang 21CHƯƠNG 3: KHẢO SÁT CÁC IC NGOẠI VI
3.1 VI MẠCH GIAO TIẾP NGOẠI VI 8255A:
3.1.1 Cấu trúc của 8255A:
8255A là IC ngoại vi được chế tạo theo công nghệ LSI dùng để giao tiếp song song giữa vi xử lý và thiết bị bên ngoài
Mạch 8255A thường được gọi là mạch phối ghép vào/ra lập trình được (Programmable Peripheral Interface – PPI) Do khả năng mềm dẻo trong trong các ứng dụng thực tế nó là mạch phối ghép được dùng rất phổ biến cho các hệ vi xử lý 8 bit – 16 bit
a Sơ đồ khối của 8255A:
Bộ đệm truyền dữ liệu:
Bộ đệm 8 bits, 2 chiều, 3 trạng thái dùng để giao tiếp 8255 với CPU Số liệu được phát hay nhận bởi bộ đệm khi thực hiện lệnh IN, OUT bởi CPU Các từ điều khiển cũng truyền qua dữ kiện
Phần kiểm soát đọc ghi:
Chức năng của khối này là kiểm soát tất cả các sự truyền đạt bên trong và bên ngoài của từ điều khiển và dữ kiện Nó nhận ngõ vào từ tuyến địa chỉ và sự điều khiển của CPU, phát ra các lệnh cần thiết cho cả hai nhóm A và B
CS\ tác động mức thấp cho phép truyền tin giữa 8255 và CPU
DATA BUS BUFFER
READ WRITE CONTROL LOGIC
GROUP
A CONTROL
GROUP
B CONTROL
GROUP
A PORT C UPPER
GROUP
B PORT C LOWER
GROUP
A PORT A
GROUP
B PORT B
+5V GND
I/O PA7 – PA0
I/O PC7 – PC4
I/O PC3 – PC0
I/O PB7 – PB0
WR\
RD\
A1 A0 RESET
CS\
Hình 3.1: Sơ đồ khối 8255A
POWER
SUPPLIES
Trang 22yếu là cho phép CPU đọc dữ kiện từ 8255
WR\ tác động mức thấp cho phép CPU gởi từ điều khiển hay dữ kiện ra 8255
RESET tác động mức cao cho phép xóa các thanh ghi bên trong gồm thanh ghi điều khiển và các cổng A, B, C ở mode nhận
A0, A1: (Address bus) hai đường địa chỉ xác định PA, PB, PC và từ điều khiển CW
Điều khiển nhóm A và B:
Cấu hình hoạt động của mỗi nhóm được lập trình bởi phần mềm, chủ yếu là CPU xuất phát từ điều khiển đến 8255 Từ điều khiển gồm các thông tin như chế độ (mode), bit set, bit reset, v.v … sẽ khởi động cấu hình hoạt động của 8255 T hanh ghi từ điều khiển chỉ có thể viết vào mà không đọc ra
Các cổng A, B, C:
8255 gồm 3 cổng A, B và C Mỗi cổng gồm 8 bits Các cổng này có thể được lập trình bởi phần mềm để có thể hoạt động ở chế độ thích hợp
Cổng A: gồm bộ đệm, chốt ngõ ra 8 bits và chốt ngõ vào 8 bits
Cổng B: gồm bộ đệm, chốt ngõ ra 8 bits và chốt ngõ vào 8 bits
Cổng C: đệm và chốt ngõ ra 8 bits và đệm 8 bits ngõ vào (không chốt)
Cổng C có thể chia làm 2 phần, mỗi phần 4 bits cho điều khiển mode Mỗi phần được dùng kết hợp với cửa A hay B tạo nên các tín hiệu điều khiển
Trang 23b Sơ đồ chân và sơ đồ Logic:
c Tên các chân:
D7 - D0 : Bus dữ liệu
RESET : Ngõ vào reset
CS\ : Chọn chip
WR\ : Ghi số liệu từ 8255
RD\ : Đọc số liệu từ 8255
A0, A1 : Bus địa chỉ
PA7 – PA0 : Cổng A
PB7 – PB0 : Cổng B
PC7 – PC0 : Cổng C
VCC : Chân nối lên nguồn 5V
GND : Chân nối đất
3.1.2 Các mode hoạt động:
8255 có 4 mode hoạt động:
a Mode Bit Set/Reset:
Mode bit set/reset có thể thiết lập hay xoá bit cho cổng PC, thường dùng tạo xung chốt số liệu Mỗi lần xuất ra một từ điều khiển đến IC 8255A với D7 = 0, chỉ tác động đến
1 bit của cổng C
PC3-PC0 PB7-PB0 D7-D0
Hình 3.3 : Sơ đồ Logic 8255A
RD WR
RESET
A0
A1 CS
Trang 24Cấu trúc từ điều khiển CW trong trường hợp 8255 làm việc ở mode 0, 1 hoặc 2 được biểu diễn như sau:
b Mode 0 (Vào/ra số liệu cơ bản):
K hông có “bắt tay”, dữ kiện được ghi và đọc m ột cách đơn giản đến phức tạp hay từ
1 cổng đã chỉ ra Các đặc tính cơ bản ở mode 0:
- Hai cổng 8 bits và 2 cổng 4 bits
- Bất kỳ cửa nào cũng có thể là ra hay vào
- Ngõ ra được chốt
- Ngõ vào không chốt
- Cho phép 16 dạng vào/ra ở mode
c Mode 1 (Vào/ra số liệu 1 chiều có bắt tay):
Bit set/reset flag
Trang 25d Mode 2 : (Vào/ra số liệu 2 chiều có tín hiệu bắt tay):
Các đặc tính cơ bản của mode 2:
- Chỉ dùng cho cổng A
- 1 cổng 2 chiều 8 bits (cổng A) và một cổng điều khiển 5 bits (cổng C) cho cổng
A
- Cả vào/ra đều có chốt
Khi reset, tất cả các cổng được thiết lập ở chế độ nhập (input), tức là sau khi reset IC
8255A có thể duy trì ở chế độ nhập mà không cần khởi động gì thêm Trong khi thực hiện chương trình hệ thống, có thể chọn bất kỳ mode nào bằng cách xuất đến IC 8255A từ điều khiển Điều này cho phép chỉ cần một IC 8255A mà có thể phục vụ nhiều kiểu thiết bị ngoại vi
Các chế độ cổng A và B có thể định nghĩa riêng biệt Còn cổng C được chia làm hai phần cho hai nhóm tùy yêu cầu định nghĩa chế độ cổng A và B Trong thanh ghi từ điều khiển bit cao nhất D7 = 0 xác định mode bit set/reset, D7 = 1 xác định mode 0, 1, 2 cho
8255
Không có lệnh đặc biệt để đọc thông tin trạng thái từ điều khiển CW Do đó, phép đọc bình thường cổng C được dùng để kiểm tra trạng thái của IC 8255A
3.2 KHẢO SÁT BỘ NHỚ EPROM 2764:
Các bộ nhớ EPROM thông dụng tồn tại dưới nhiều kiểu mạch khác nhau Họ 27XX có các loại vi m ạch sau:2708 (1K x8), 2716 (2K x8), 2732 (4K x8), 2764 (8K x8) … với T ac = 250_ 450 ns tuỳ theo loại EPROM cụ thể Số đường địa chỉ thay đổi tùy thuộc vào dung lượng của mỗi loại EPROM, số đường dữ liệu là 8 Hoạt động của họ 27XX là tương tự nhau, ở đây do thời lượng có hạn nên chỉ khảo sát một EPROM được sử dụng trong mạch là EPROM 2764
3.2.1 Sơ đồ chân:
Trong đó:
Hình 3.4: Sơ đồ chân EPROM 2764
Trang 26OE\ : Output Enable
CE\ : Chip Enable
PGM\ : Nạp chương trình
EPROM 2764 có 13 đường địa chỉ nên có dung lượng là 8 KB và 8 đường dữ liệu ngõ vào cung cấp Vpp và Vcc Ngõ vào Vcc luôn được nối lên 5v khi EPROM đang đọc dữ liệu và nối với 21v khi nạp trình cho EPROM
Thời gian truy xuất là Tac = 150 ns
Hai ngõ vào điều khiển CE\ và OE\:
+ OE\ : Được dùng để điều khiển bộ đệm (Output Buffer) để cho phép dữ liệu của EPROM có được xuất ra ngoài hay không
+ CE\ : Là ngõ vào cho phép hai chức năng:
Khi hoạt động bình thường CE\ là tín hiệu cho phép, để đọc dữ liệu từ EPROM CE\ phải ở mức logic 0 ,để mạch điện bên ngoài lựa chọn dữ liệu và chuyển nó đến Output Buffer kết hợp với tín hiệu cho phép OE\ ở mức logic 0 thì dữ liệu xuất hiện ở các ngõ ra
D7 – D0
Khi CE\ =1 thì EPROM ở trạng thái chờ (Standby)
Công suất tiêu thụ ở trạng thái đọc dữ liệu là 525 mW, ở trạng thái chờ là 132 mW
3.2.2 Bảng trạng thái làm việc của EPROM 2764:
OE\ CE\ PGM Vpp Vcc Output
Program Verify VIL VIL VIH Vpp Vcc D out
3.3 KHẢO SÁT BỘ NHỚ SRAM 6264:
Ram là bộ nhớ truy xuất ngẫu nhiên, có nghĩa là bất kì ô nhớ nào cũng dễ dàng truy xuất như những ô nhớ khác Bộ nhớ Ram có nhược điểm là dữ liệu lưu trữ trong Ram sẽ mất khi mất điện Nhưng lại có ưu điểm là có thể đọc, ghi nhanh chóng
SRAM 6264 là loại RAM hoạt động dựa trên nguyên tắc hoạt động của flip flop loại
D, dữ liệu vào tồn tại ở một trong hai trạng thái logic của mạch số SRAM 6264 có dung lượng 8 KB dùng để lưu trữ chương trình và dữ liệu
Trang 273.3.1 Sơ đồ chân:
Hình 3.5: Sơ đồ chân SRAM 6264
Trong đó:
A0 – A 12 :13 đường địa chỉ vào
WR\ : cho phép ghi ở mức logic 0
OE\ : cho phép xuất ở mức logic 0
CS \ : cho phép chọn vi mạch hoạt động (mức 0)
NC : No Conection Bộ nhớ SRAM có khả năng lưu trữ thông tin trong nó chừng nào còn được cấp điện Thời gian truy xuất Tac = 250 ns
3.3.2 Bảng trạng thái làm việc của SRAM 6264:
3.4 KHẢO SÁT IC GIẢI MÃ 74LS138 :
Khi ta muốn có nhiều đầu ra chọn vỏ từ bộ giải mã mà vẫn dùng các mạch logic đơn giản thì thiết kế sẽ trở nên rất cồng kềnh do số lượng các mạch cửa tăng lên Trong trường hợp như vậy ta thường dùng các mạch giải mã có sẵn Một trong các mạch giải mã hay được sử dụng là 74LS138 ,mạch giải mã 3 ra 8 đường
3.4.1 1 Sơ đồ chân:
Trang 28Hình 3.6: Sơ đồ chân IC LS74138
Trong đó:
Y0-Y7 : 8 đầu ra chọn mạch giải mã
A, B, C : Ba đầu vào chọn
E1\, E2\, E3 : Đầu vào cho phép
3.4.2 Bảng trạng thái làm việc của 74138:
Các đầu vào
Các đầu ra Cho phép Điều khiển
Trang 293.5 KHẢO SÁT VI MẠCH GIAO TIẾP MAX232:
3.5.1 Sơ đồ chân :
Hình 3.7 : Sơ đồ chân MAX232
Vi mạch MAX232 của hãng MAXIM là vi mạch chuyên dùng trong giao tiếp máy tính Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành tín hiệu có mức điện áp +12V/-12V ở phía truyền và các mức +3 +15V hoặc – 3 -15V ở phía nhận
Vi mạch MAX232 có hai bộ đệm và hai bộ nhận Đường dẫn điều khiển lối vào CTS, điều khiển việc xuất ra dữ liệu ở cổng nối tiếp Khi cần thiết, được nối với chân 9 của
vi mạch MAX232 Còn chân RST (chân 10 của vi mạch MAX232) nối với đường dẫn bắt tay để điều khiển quá trình nhận Thường thì các đường dẫn bắt tay được nối với cổng nối tiếp qua các cầu nối, để khi không dùng đến nữa thì có thể hở mạch các cầu này Cách truyền dữ liệu đơn giản nhất là chỉ dùng ba đường dẫn TxD, RxD và GND
C1+
V+
C1- C2+
C2- V- T2OUT R2IN
Vcc GND T1OUT R1IN R1OUT T1IN T2IN R2OUT
Trang 304.1 CẤU TRÚC PHẦN CỨNG KIT VI ĐIỀU KHIỂN:
4.1.1 Sơ đồ khối :
Hình 4.1: Sơ đồ khối kit vi điều khiển
Y3 74LS138
D0 D7 EPROM
2764
CE
D0 D7
A0A1 8255A
6264
CE
D.Bus [D0 D7]
A.Bus [A8 A15]
A.Bus [A0 A7] 8
Đèn báo hiệu
LATCH
74LS373
Trang 314.1.2 Sơ đồ chi tiết :
Trang 32G.v.h.d : thầy Lê Xứng S.v.t.h : Trần Đình Khoa
a Khoâi vi ñieău khieơn:
Mách dao ñoông beđn trong chip 8051 ñöôïc keât noâi vôùi moôt tinh theơ thách anh beđn
ngoaøi ôû hai chađn XTAL1 vaø XTAL2 (chađn 18 vaø 19) laø ngoõ vaøo vaø ngoõ ra cụa moôt mách
khuyeâch ñái ñạo ñöôïc caâu hình ñeơ laøm mách dao ñoông beđn trong chip Caùc tú oơn ñònh cuõng
ñöôïc yeđu caău nhö tređn hình veõ Taăn soâ thách anh söû dúng cho 8051 laø 12Mhz
5V
5V 5V
A3
A10 A9
A14
D6 D5 D3
A11 ALE
RD A15
A7 A0
D1
A6 A1
ALE PSEN
C1 27p
C3 10uF
U1
8051
31 19
18
9
12 13 14 15
1 2 3 4 5 6 7 8
39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 17 16 29 30 11 10
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 RD WR PSEN ALE/P TXD RXD
12MHz
R3 10K
J1 1 2 3 4
R2 100
3 4 7 8 13 14 17 18
2 5 6 9 12 15 16 19
OC C
1D 2D 3D 4D 5D 6D 7D 8D
1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q
SW1
J3 1 2 3 4 5 6 7 8 9
C2 27p
Hình 4.3 : Sô ñoă khoâi vi ñieău khieơn
Mách reset ñöôïc söû dúng ñeơ reset heô thoâng baỉng caùch giöõ chađn RST cụa 8051 ôû möùc
cao toâi thieơu 2 chu kyø xung maùy, sau ñoù xuoâng möùc thaâp RST coù theơ kích baỉng tay hoaịc
ñöôïc taùc ñoông khi caâp nguoăn baỉng caùch duøng moôt mách RC nhö hình veõ tređn
Khi caâp nguoăn, do ñaịc tính cụa tú khođng thay ñoơi ñieôn aùp ñoôt bieân neđn ñieôn aùp ñöa
vaøo ngoõ vaøo RST laø 5V, sau ñoù tú ñöôïc náp töø nguoăn qua ñieôn trôû R2 xuoâng mass, ñieôn aùp
tređn tú taíng töø 0V ñeân 5V Luùc naøy ñieôn aùp tín hieôu ñöa vaøo chađn RST trôû lái möùc 0V, heô
thoâng ñaõ ñöôïc reset
Khi heô thoâng ñang hoát ñoông, ta aân phím reset ñieôn aùp tín hieôu ñöa vaøo chađn RST laø
) ( 5 ) 10
, sau ñoù nhạ phím reset tín hieôu ñöa vaøo ngoõ vaøo RST trôû lái möùc 0V,
heô thoâng ñöôïc reset
Mách choât ñòa chư söû dúng vi mách 74HC373 duøng ñeơ taùch caùc ñöôøng döõ lieôu vaø ñòa
chư khi 8051 truy xuaât boô nhôù beđn ngoaøi Luùc naøy port 0 coù chöùc naíng laø bus ñòa chư vaø bus
döõ lieôu ña hôïp do ñoù phại taùch caùc ñöôøng döõ lieôu vaø ñòa chư Tín hieôu ra ALE ôû chađn thöù 30
cụa chip 8051 coù taăn soâ baỉng 1/6 laăn taăn soâ dao ñoông tređn chip ñöôïc ñöa vaøo chađn C cụa IC
74HC373 ñeơ choât byte thaâp cụa ñòa chư vaøo moôt thanh ghi ngoaøi trong ½ chu kyø ñaău cụa
chu kyø boô nhôù Mách choât 74HC373 giöõ cho byte thaâp cụa ñòa chư oơn ñònh trong cạ chu kyø
boô nhôù Sau khi ñieău naøy ñaõ ñöôïc thöïc hieôn, caùc chađn cụa port 0 seõ ñöôïc söû dúng laøm bus
döõ lieôu vaø döõ lieôu ñöôïc ñóc hay ghi trong ½ sau cụa chu kyø boô nhôù
Trang 33b Khối giao tiếp với máy tính:
Kit vi điều khiển giao tiếp với máy tính thông qua cổng COM, cổng truyền dữ liệu nối tiếp, theo tiêu chuẩn RS232
Việc truyền dữ liệu xảy ra trên 2 đường dẫn Qua chân TxD máy tính gởi dữ liệu của nó đến kit vi điều khiển Trong khi đó các dữ liệu mà máy tính nhận được, lại được đưa đến chân RxD
Vi mạch MAX232 nhận tín hiệu từ chân TxD của cổng COM máy tính có mức điệân áp +12V/-12V vào chân R1IN của nó và biến đổi tín hiệu này thành tín hiệu TTL có mức điện áp +5V/-5V tại chân R1OUT của nó, chân R1OUT này được nối với chân RxD của
8051, bằng cách này dữ liệu được đưa đến 8051 Ngược lại, khi 8051 phát dữ liệu ra chân TxD, chân này được nối với chân T1IN của MAX232, dữ liệ được đưa vào MAX232, tại đây MAX232 sẽ biến đổi tín hiệu nhận được thành tín hiệu có mức điện áp +12V/-12V trên chân T1OUT của nó, chân T1OUT này được nối với chân RxD của cổng COM, dữ liệu được đưa đến máy tính thông qua chân này
Thông tin trao đổi giữa máy tính và kit vi điều khiển được truyền theo phương thức truyền nối tiếp bất đồng bộ
c Khối giải mã địa chỉ:
Mạch giải mã địa chỉ dùng vi mạch 74LS138 để chọn chip: ROM, RAM hay 8255A
Các ngõ ra Y0, Y1, Y3 của IC 74LS138 được nối với những ngõ vào chọn chip CS\ trên các
IC nhớ EPROM, RAM, và 8255A
Các ngõ vào A, B, C của IC 74LS138 được nối với ba đường địa chỉ A13, A14, A15 của
chip 8051 để giải mã địa chỉ nhằm chọn các IC ROM, RAM, 8255A
TxD RxD
5V U9
MAX232
13 8
11 10
1 3 4 5
2 6
12 9
14 7
R1IN R2IN
T1IN T2IN
C1+
C2+
C1-
C2-V+
V-R1OUT R2OUT
T1OUT T2OUT
C7 C P1
DB9
5 9 4 8 3 7 2 6 1
C6 C
Hình 4.4 : Sơ đồ kết nối cổng COM với kit vi điều khiển 8051
Trang 34Bản đồ giải mã chọn IC ROM, RAM, 8255A:
d Khối bộ nhớ :
8051 có khả năng mở rộng bộ nhớ lên đến 64K byte bộ nhớ chương trình và 64k byte bộ nhớ dữ liệu ngoài Ở đây, ta dùng thêm RAM và EPROM ngoài với dung lượng 8 Kbytes
- Bộ nhớ chương trình bên ngoài sử dụng IC EPROM 2764 có dung lượng 8KB, chương trình hệ thống chứa ở EPROM này EPROM có địa chỉ từ 0000H – 1FFFH Nó được cho phép bởi tín hiệu PSEN\
- Bộ nhớ dữ liệu ngoài sử dụng IC RAM 6264 có dung lượng 8KB RAM có địa chỉ từ 2000H đến 3FFFH,được cho phép ghi/đọc bằng các tín hiệu WR\ và RD\ ở các chân P3.6 và P3.7 của 8051
Kết nối bus địa chỉ và bus dữ liệu giữa EPROM, RAM và 8051 được mô tả như hình vẽ sau:
A13 A14 A15
ROM RAM
8255_2 8255_1 U6
74LS138
15 14 13 12 11 10 9 7
1
5
2 3 6
Trang 35Các IC EPROM và RAM này được chọn bởi các tín hiêïu mức thấp ở ngõ ra Y0, Y1 của vi mạch giải mã 74LS138 đưa vào các ngõ vào CS\ của chúng
Trong hình trên tín hiệu PSEN\ và tín hiệu RD\ được đưa vào hai ngõ vào của một cổng AND, ngõ ra của cổng AND này được nối với chân OE\ của RAMù, bằng cách này bộ nhớ RAM có thể chứa cả chương trình và dữ liệu, cho phép IC RAM được ghi như là bộ nhớ dữ liệu và được đọc như là bộ nhớ chương trình hoặc dữ liệu
Bản đồ bộ nhớ ROM, RAM, 8255A:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Hex ROM 0
PA 0 1 1 0 x x x x x x x x x x 0 0 6XX0
PB 0 1 1 0 x x x x x x x x x x 0 1 6XX1
PC 0 1 1 0 x x x x x x x x x x 1 0 6XX2
CW 0 1 1 0 x x x x x x x x x x 1 1 6XX3
e Khối giao tiếp ngoại vi:
IC 8255A được sử dụng để giao tiếp giữa 8051 và đối tượng điều khiển, đối tượng điều khiển ở đây là các mạch điều khiển motor, đèn báo hiệu và hiển thị led 7 đoạn
D1
D3
A6 A2
A1 A3
A7 A6
D0
A5 D5
A5
A11 A0
RAM
D2
D4 D3
ROM A7
A8 A9 A10 A11 A12
A2 A3
PSEN
U4
6264
10 9 8 7 6 5 4 3 25 24 21 23 2
20 26 22 27
11 12 13 15 16 17 18 19
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
CS1 CS2 OE WE
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
CE OE PGM VPP
O0 O1 O2 O3 O4 O5 O6 O7