Lời giới thiệu
Trong quá trình hiện nay, máy tính điện tử đã góp phần không nhỏ đối
với sự phát triển của xã hội. Do yêu cầu của con ngời ngày càng cao , các thế
hệ máy tính đã liên tục đợc phát triển không ngừng . Ngay trong giai đoạn
đầu các thế hệ vi xử lý 8 bít đợc dùng là Z80 . 8085 , sau đó là các hệ vi xử
lý 16 bít nh 8086 , 8088
Các hệ vi xử lý đã góp phần quan trọng trong việc chơng trình hóa các
hoạt động của máy móc trong công nghiệp nhờ vào các phần mềm ứng
dụng . Một khi trong công nghiệp đã ứng dụng nhiều vào vi xử lý thì các nhà
chế tạo không bỏ lỡ cơ hội cho ra đời các họ vi điều khiển ngày càng tiến bộ
hơn
Vi điều khiển đợc sử dụng nhiều trong các thiết bị công nghiêp, trong
máy giặt , trong điều khiển đèn giao thông , trong các đồ chơi giải trí
Tại việt nam việc chơng trình hóa các hệ thống đang đợc áp dụng ngày càng
nhiều trong các nhà máy công nghiệp
Để tìm hiều về vi điều khiển và tìm hiệu một ứng dụng cụ thể của nó nhóm
chúng em xin thực hiện đề tài gồm 2 phần chính :
Phần 1 : khảo sát vi điều khiển 8051 ,, vi mạch chuyển đổi mức điện
áp TTL sang RS 232 , cùng với bộ nhớ bán dẫn và cảm biến hồng ngoại.
Phần 2 : Thiết kế và thi công mạch đếm sản phầm dùng vi điều khiển
8051 . Chơng trình hệ thống và ứng dụng
Nhờ có sự giúp đỡ của quý thầy cô và bạn bè, nhóm chúng em đã cố gắng
thực hiện đề tài đợc giao nhng do kiến thức và thời gian có hạn nên đề tài
không thể tránh khỏi thiết sót nên rất mong sự đóng góp của quý thầy cô và
bạn bè
Hà Nội , ngày 27 tháng 11 năm 2009-12-05
Giáo viên hớng dẫn : Nguyễn Anh Dũng
Nhóm sinh viên thực hiện :
Nguyễn Hồng Mạnh
Hoàng Văn Hoàn
Hà Văn Lợng
File ớnh kốm 012.rar
Phần I
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-contronller, là mạch tích hợp trên một chíp có
thể lập trình đợc, dùng để điều khiển hoạt động của 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, lu trữ thông tin, xử lý thông tin,
đo lờng thời gian và tiến hành đọc mở một cơ cấu nào đó.
Trong các thiết bị điện và điện tử dân dụng, thiết bị tự động hoá các bộ vi điều
khiển, điều khiển hoạt đọng của các thiết bị này Trong hệ thống sản xuất tự động,
bộ vi điều khiển đợc sử dụng trong điều khiển robot, dây chuyền tự động Các hệ
thống càng thông minh thì vai trò của vi điều khiển càng quan trọng.
III. Khảo sát bộ vi điều khiển 89s52
Họ vi điều khiển 8051 (còn gọi là họ C51) là một trong những họ vi điều
khiển thông dụng nhất. Đây là các bộ vi điều khiển 8bits, có kiến trúc theo
kiểusản xuất theo công nghệ CMOS,
Một số loại vi điều khiển thuộc họ 8051 thông dụng có thể kể ra :
AT89C2051(20 chân), AT89C4051(20 chân), AT89C51(40 chân),
AT89C52(40 chân), AT89S51(40 chân), AT89S52(40 chân), AT89S53(40
chân)
Trong chơng trình môn học này chúng ta tập trung nghiên cứu về bộ vi điều
khiển 89S52. Đây là một bộ vi điều khiển thông dụng, giá rẻ có khá nhiều
chức năng hay đặc biệt là có tích hợp sẵn bộ nạp trên chip giúp sinh viên có
thể dễ dàng tự thực hiện các bài thí nghiệm với chi phí rất thấp.
Cũng trong chơng trình môn học này, ngôn ngữ đợc sử dụng để trình
bày các ví dụ ứng dụng sẽ là ngôn ngữ C.
Cụ thể họ vi điều khiển 8051 có các đặc điểm sau :
-8 kbyte ROM (đợc lập trình bởi nhà sản xuất chỉ có ở 8051 )
-256 byte RAM
-4 port I/0 8 bit
-3 bộ định thời 16 bit
-Giao tiếp nối tiếp
-64 KB không gian bộ nhớ chơng trình mở rộng
-64 KB khônh gian bộ nhớ dũ liệu mở rộng
-một bộ vi xử lí(thao tác trên các bit đơn)
-210 bit đợc địa chỉ hoá
-bộ nhân/chia 4us
1.kiến trúc phần cứng của 8051
Phần chính của vi điều khiển 8051 là bộ vi xử lý trung tâm(CPU:
central processing unit) bao gồm:
- Thanh ghi tích luỹ A
- Thanh ghi tích luỹ 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: program 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
Hình 1.1 : Sơ đồ khối 89s52
Đơn vị xử lý trung tâm nhận trực tiếp xung từ bộ dao độ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 của bộ
đếm định thời hoặc cũng có thể là giao diện nối tiếp.
ba bộ định thời 16 Bit hoạt động nh một bộ đếm.
Các cổng(Port 0, Port 1 Port 2 Port 3). 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 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 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 dùng để lu trữ dữ liệu
và mã lệnh
Các thanh ghi sử dụng để lu trữ thông tin trong quá trình xử lý. Khi
CPU làm việc nó thay đổi nội dung các thanh ghi.
2. Chức năng các chân của vi điều khiển 8051
2.1. Port 0.
Port 0 gồm 8 chân, ngoài chức năng xuất nhập ra, Port 0 còn là Bus đa
hợp dữ liệu và địa chỉ (AD0-AD7), chức năng này sẽ đợc sử dụng khi 89S52
giao tiếp với các thiết bị ngoài có kiến trúc Bus.
Hình 2.4. Cấu trúc của các chân trên port 0
2.2. Port 1.
Đối với 8051, chức năng duy nhất của Port 1 là chức năng xuất nhập,
cũng nh các Port khác, Port 1 có thể xuất nhập theo bit và theo byte.
Hình 2.5. Cấu trúc của các chân trên port 1 và port 3.
Riêng dòng 89Sxx, 4 chân P1.4, P1.5, P1.6, P1.7 đợc dùng để nạp ROM
theo chuẩn ISP, 2 chân P1.0 và P1.1 đợc dùng cho bộ Timer 2. Trên hình 2.3
là một sơ đồ kết nối 89S52 với cổng song song để nạp chơng trình (file mã -
*.hex) từ máy tính.
Trên sơ đồ này các đờng dẫn DO, DI, SCK, RTS lần lợt là các đờng dẫn
dữ liệu lên máy tính, xuống nối tiếp từ máy tính, đờng dẫn xung Clock và đ-
ờng dẫn xung Reset từ máy tính xuống sau khi nạp xong chơng trình.
C 1
3 3 p
D O
R 4
4 k 7
U 1 A T 8 9 S 5 2
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
3 0
3 1
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
4 0
1
2
3
4
5
6
7
8
9
1 0
P 3 . 1 / T X D
P 3 . 2 / I N T 0
P 3 . 3 / I N T 1
P 3 . 4 / T 0
P 3 . 5 / T 1
P 3 . 6 / W R
P 3 . 7 / R D
X T A L 2
X T A L 1
G N D
P 2 . 0 / A 8
P 2 . 1 / A 9
P 2 . 2 / A 1 0
P 2 . 3 / A 1 1
P 2 . 4 / A 1 2
P 2 . 5 / A 1 3
P 2 . 6 / A 1 4
P 2 . 7 / A 1 5
P S E N
A L E / P R O G
E A / V P P
P 0 . 7 / A D 7
P 0 . 6 / A D 6
P 0 . 5 / A D 5
P 0 . 4 / A D 4
P 0 . 3 / A D 3
P 0 . 2 / A D 2
P 0 . 1 / A D 1
P 0 . 0 / A D 0
V C C
P 1 . 0 / T 2
P 1 . 1 / T 2 E X
P 1 . 2
P 1 . 3
P 1 . 4 / S S
P 1 . 5 / M O S I
P 1 . 6 / M I S O
P 1 . 7 / S C K
R S T
P 3 . 0 / R X D
S C K
D I
R 2
4 k 7
X 1
1 2 M h z
V C C
J 3
S W I T C H
1
2
3
4
1
2
3
4
V C C
R S T
P 1
C O N N E C T O R D B 2 5
1 3
2 5
1 2
2 4
1 1
2 3
1 0
2 2
9
2 1
8
2 0
7
1 9
6
1 8
5
1 7
4
1 6
3
1 5
2
1 4
1
C 2
3 3 p
R 1
4 k 7
R 3
4 k 7
Hình 2.6. Sơ đồ mạch nạp ISP ở cổng song song
2.3. Port 2.
Port2 là một port công dụng kép: 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.
H×nh 2.7. CÊu tróc cđa c¸c ch©n trªn port 2
2.4. Port 3
Mçi ch©n trªn Port 3 ngoµi chøc n¨ng xt nhËp cßn cã mét chøc n¨ng
riªng, cơ thĨ nh sau:
Bit Tên Chức năng
P3.0 RXD Dữ liệu nhận cho port nối tiếp
P3.1 TXD Dữ liệu phát cho port nối tiếp
P3.2 INTO Ngắt 0 bên ngoài
P3.3 INT1 Ngắt 1 bên ngoài
P3.4 TO Ngõ vào của timer/counter 0
P3.5 T1 Ngõ vào của timer/counter 1
P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài
2.5. PSEN (Program Store Enable ).
PSEN là đ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ẽ ở mức thấp trong thời gian đọc 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 bộ vi điều khiển để giải mã lệnh. Khi thi hành chương trình
trong ROM nội PSEN sẽ ở mức thụ động (mức cao).
2.6. ALE (Address Latch Enable ).
ALE là tín hiệu để chốt đòa chỉ vào một thanh ghi bên ngoài trong
nữa đầu của chu kỳ bộ nhớ. Sau đó, các đường Port 0 dùng để xuất hoặc
nhập dữ liệu trong nữa sau chu kỳ của bộ nhớ.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên
chip và có thể được dùng là nguồn xung nhòp cho các hệ thống. Nếu xung
thạch anh dùng cho chípø là 12MHz thì ALE có tần số 2MHz.
2.7. EA (External Access) .
EA thường được mắc lên mức cao (+5V) hoặc mức thấp (GND). Nếu
ở mức cao, bộ vi điều khiển thi hành chương trình từ ROM nội. Nếu ở
mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng.
2.8. RST (Reset).
Ngõ vào RST trên chân 9 là ngõ reset của 8051. Khi tín hiệu này
được đưa lên múc cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong bộ
vi điều khiển được tải những giá trò thích hợp để khởi động hệ thống.
2.9. XTAL1, XTAL2.
89S52 có một bộ dao động trên chip, nó thường được nối với bộ dao
động thạch anh có tần số lớn nhất là 33Mhz, thông thường là 12Mhz.
2.10.Vcc, GND.
89S52 dùng nguồn một chiều có dải điện áp từ 4V đến 5.5V được
cấp qua chân 40 và 20.
3. c¸c thanh ghi
a. C¸c thanh ghi Port xt nhËp:
C¸c Port cua 8051 bao gåm port 0 á ®Þa chØ 80H.port1 á dÞa chØ
90H,port2 á ®Þa chØ A0H vµ port 3 á ®Þa chØ B0H.TÊt c¶ c¸c port dỊu ®ỵc ®Þa
chØ ho¸ tïng bit .§iỊu ®ã cung cÊp mét kh¶ n¨ng giao tiÕp thn lỵi.
b.C¸c thanh ghi TIMER:
8051 chøa 2 bé ®Þnh thêi ®Õm 16bit ®ỵc dïng trong viƯc ®Þnh thêi
ho¹c ®Ðm sù kiƯn.Timer0 ở ®Þa chØ 8AH(TLO:byte thÊp) vµ 8CH (THO:byte
cao)Timer1 ë ®Þa chØ 8BH (TL1 byte thÊp)vµ 8DH(TH1:byte cao).ViƯc vËn
hµnh cđa Timer ®ỵc set bëi thanh ghi Timer MODE(TMOD)ë ®Þa chØ 89H cµ
thanh ghi ®iỊu khiĨn timer(TCON)ë ®Þa chØ 88H .ChØ cã TCON ®ỵc ®Þa chØ
ho¸ tõng bit.
c.C¸c thanh ghi Port nèi tiÕp:
8051 chứa 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, Modern 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 la bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ dữ cả
hai vai trò truyền và nhận dữ liệu.Khi truyền dữ liệu thì ghi lên SBUF, khi
nhận dữ liệu thì đọc SBUF. Các MODE vận hành khác nhau đợc lập trình qua
thanh ghi diều khiển Port nối tiếp (SCON) đợc dịa chỉ hoá từng bit ở địa chỉ
98H.
d.Các thanh ghi ngắt :
8051 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 thanh ghi cho phép ngắt (IE) ở
địa chỉ 8AH. Cả hai thanh ghi đợc địa chỉ hoá từng bit.
5.Hoạt động của bộ định thời(timer)
Giới thiệu
Một định nghĩa đon giản của timer là một chuỗi các flip-flop chia đôi
tần số nôí 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 lam nguồn xung nhịp cho flip-flop báo tràn của timer (flip-
flop cờ).Giá trị nhị phân trong cac flip-flop của timer có thể xem nh số đếm
số xung nhip(hoạc các sự kiện)từ khi khởi động timer.Ví dụ timer 16bit sẽ
đém lên từ 0000H đến FFFFH.Cờ báo tràn sẽ lên một khi số đếm tràn từ
FFFFH đến 0000H.
8051 có 3 timer 16 bit, mỗi timer có 4 cách làm việc. Ngời ta sử dụng
các timer để :
.Định khoảng thời gian
.Đếm sự kiện
.Tạo tốc độ BAUD cho Port nối tiếp trong 8051
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ộ hoá 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 2 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ể một chuyển trạng thái trên một chân
của 8051. Các timer cũng có thể cung cấp xung nhip tốc độ BAUD cho port
nối tiếp trong 8051. Truy xuất timer cua 8051 cùng 6 thanh ghi chức năng
đặc biệt trong bảng sau:
SFR Mục đích Địa chỉ Địa chỉ hoá từng
bit
TCON
TMOD
TL0
TL1
TH0
TH1
Điều khiển timer
Chế độ timer
Byte thấp của
timer0
Byte thấp của
timer1
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.
A :Thanh ghi chế độ timer(TMOD)
Thanh ghi TMOD chứa 2 nhóm 4bit dùng để đặt chế dộ làm việc cho
timer0 và timer1.
Bit Tên Timer Mô tả
7
6
5
4
2
1
0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
1
1
1
1
0
0
0
0
Bit(mở)cổng ,khi lên 1 timer chỉ chạy khi
INT1 ở mức cao
Bit chọn chế độ counter/timer
1=bộ đếm sự kiện
0=Bộ định thời
Bit 1 của chế độ (mode)
Bit 0 cuả chế độ
00:chế độ 0:timer 13 bit
01:chế độ 1:timer 16 bit
10:chế độ 2:tự nạp lại 8255A
11:chế độ 3:tách timer
bit (mở)cổng
bit chọn counter/timer
bit 1 của chế độ
bit 0 của chế độ
Bảng 2.5:Tóm tắt thanh ghi TMOD
B Thanh ghi điều khiển timer(TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho
timer 0 và timer 1.
Bit Ký
hiệu
địa chỉ Mô tả
TCON.7 TF1 8FH Cở báo tràn TIMER 1. Đợc đặt bởi phần cứng,
khi tràn đợc xóa bằng phần mềm, hay phần
cững khi bộ xử lý chỉ đến chơng trình phục vụ
ngắt
TCON.6 TR1 8EH Bit điều khiển timer 1 chạy, đặt và xóa bằng
phần mềm.
TCON.5 TF0 8DH Cờ báo tràn Timer 0, tơng tự nh Timer 1.
TCON.4 TR0 8CH Bit điều khiển chạy cho Timer 0. đặt xóa bằng
phần mềm.
TCON.3 IE1 8BH Cờ báo ngắt 1 bên ngoài.
TCON.2 IT1 8AH Cờ ngắt do Timer 1
TCON.1 IE0 89H Cờ báo ngắt do Timer 0
TCON.0 IT0 88h Cờ ngắt do Timer 0
C. Các chế độ timer.
.Chế độ 0,chế độ timer 13bit
Để tơng thích với 8048(có trớc 8051), ba bit cao của TLX(TL0 /hoặc
TL1) không dùng
Xung nhịp timer
Cờ báo
tràn
chế độ 1-chế độ timer 16bit.
Hoạt động nh timer 16 bit đầy đủ.Cờ báo tràn la bit TFx trong TCON
có thế đọc hoạc ghi bằng phần mềm .
MSB của giá trị trong các thanh ghi timer là bit7 của THx và LBS là
bit 0 của TLx .Các thanh ghi timer (TLx/THx)có thể đọc hoặc ghi bắt cứ lúc
nào bằng phần mềm.
TFxTLx THx
(5 bit) (8
bit)
TFx
TLx THx
(8 bit) (8
bit)
Xung nhịp timer
Cờ báo tràn
.Chế độ 2 chế độ 8 bit tự nạp lại
TLx hoạt động nh một timer 8 bit,trong khi đó THx vẫn giữ nguyên
giá trị đợc nạp .Khi số đếm tràn từ ffH đến 00H,không những cờ timer đợc
set mà giá trị trong THx động thời đợc nạp vào TLx .Việc đếm tiếp tục từ giá
trị naỳ đến ffH xuống 00Hvà nạp lại CHế độ này rất thông dụng vì sự tràn
timer sảy ra trong khoảng thời gian nhất định và tuần hoàn khi đã khởi động
TMOD và THx.
.Chế độ 3 chế độ tách
timer
Timer 0 tách làm 2 titmer 8 bit (TL0&TH0) ,TL0 có cờ báo tràn là TF0 và
TH0 có cờ báo tràn là TF1 .
Timer 1 ngng ở chế độ 3 , nhng có thể đợc khởi động bằng cách chuyển
sang chế độ khác Giới hạn duy nhất là cờ báo tràn TF1 không còn bị tác
động khi timer 1 bị tràn vì nó đẫ đợc nối tới TH0.
Khi timer 0 ở chế độ 3 có thể cho timer 1 chạy và ngng bằng cách chuyển
nó ra ngoài và vào chế độ 3 . Nó vẫn có thể đợc sử dụng bằng port nối tiếp
nh bộ tạo tốc độ baund hoặc nó có thể đợc sử dụng bằng bất cứ cách nào
không cần ngắt (vì nó không còn đợc nối với TF1).
Xung nhịp Timer
Xung nhịp Timer Cờ báo tràn
TFx
TLx THx
(5 bit) (8
bit)
TL1 TH1
TL0 TF0
TH0 TF1
1/12 Fosc Cờ báo tràn
6. Hoạt động port nối tiếp.
Giới thiệu
8051 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ khác
trên một dải tần số rộng. Chức năng chủ yếu của một port nối tiếp 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.
Truy xuất phần cứng đến port nối tiếp qua các chân TXD và RXD. Các
chân này có các chức năng khác với 2 bit của port3, P3.1 ở chân 11 (TXD)
và P3.0 ở chân 10 (RXD).
Port nối tiếp cho hoạt động song song (full duplex:thu và phát đồng thời) và
đệm lúc thu (receiver buffering) cho phép một ký tự sẽ đợc thu và đợc giữ
trong khi ký tự thứ 2 đợc nhập. Nừu CPU đọc ký tự thứ nhất trớc khi ký tự
thứ 2 đợ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 tới port nối
tiếp là: SBUF và SCON. Bộ đếm port nối tiêp (SBUF) ỏ tại địa chỉ 99H thật
sự là hai bộ đếm. Viết vào SBUF để truy xuất dữ liệu thu đợc. Đây là hai
thanh ghi riêng biệt thanh ghi chỉ ghi để phát và thanh ghi để thu.
TXD(P3.1) RXD(P3.0)
CLK
Hình 1.9 Sơ đồ port nối tiếp.
SBUF
(chỉ bù)
SBUF
(chỉ đọc)
Thanh ghi dịchSUBF
(Chỉ ghi)
BUS nội 8051
Thanh ghi điều khiển port nối tiếp (SCON)ở điạ chỉ bit chứa các bit trang
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 ,va các 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ể đợc lập trình đểtạo
ngắt.
Tần số làm việc của port nối tiếp còn gọi là tốc độ baund có thể cố định (lấy
từ bộ giao động của chip). Nếu sử dụng tốc độ baund thay đổi ,timer1sẽ cung
cấp xung nhịp tốc độ baund và phải đợc lập trình.
Thanh ghi điều khiển port nối tiếp.
Chế độ hoạt động của port nối tiếp đợc đặt bằng cách ghi vào thanh ghi chế
độ port nối tiếp (SCON) ở địa chỉ 98H.Sau đây các bảng tóm tắt thanh ghi
SCON và các chế độ của port nối tiếp:
Bit ký hiệu địa chỉ Mô tả
SCON.7 SM0 9FH
SCON.6 SM1 9EH
SCON.5 SM2 9DH
SCON.4 REN 9CH
SCON.3 TB8 9BH
SCON.2 RB8 9AH
SCON.1 TI 99H
SCON.0 RI 98H
-Bit 0 của chế độ port nối tiếp
-Bit 1 của chế độ port nối tiếp
-Bit 2 của chế độ 2 nối tiếp
Cho phép truyền thông đa xử lý
trong các chế độ 2 và 3 ,RI sẽ
không bị tác động
Nếu bit thứ 9 thu đợc bằng 0
-cho phép thu (đặt bằng 1)
-bit 8 phát bit thứ 9 đợc phát các
chế độ 2 và 3
-bit 8 thu bit thứ 9
-cờ ngắt phát ,đặt lên 1 khi kết
thúc phát
-cờ ngắt thu ,đặt lên 1 khi kết thúc
nhận
Bảng 2.7:Tóm tắt thanh ghi chế độ port nối tiếp SCON.
Các chế độ hoạt động của PORT nối tiếp
Port nối tiếp có 4 chế độ hoạt động :
1)_ chế độ 0 :
- đây là chế độ mà Port nối tiếp đợc dùng nh 1 thanh ghi dịch 8 bit. Dữ
liệu đợc truyền/nhận nối tiếp trên chân RXD, chân TXD đợc dùng để phát
xung clock dịch bit. Khi truyền/ nhận các byte dữ liệu 8 bit, bit có giá trị
thấp nhất ( LBS ) đợc truyền nhận trớc tiên và bit MSB đợc truyền/nhận sau
cùng.
- việc truyền dữ liệu đợc bắt đầu bằng việc ghi 1 byte dữ liệu vào SBUF
còn việc nhận dữ liệu đợc bắt đầu khi bit REN đã đợc đặt ở mức 1 và cờ thu
RI=0. Tốc độ baud ở chế độ 0 cố định băng 1/12 Fosc.
2)_ chế độ 1 :
- chế độ này, Port nối tiếp hoạt động nh 1 bộ UART 8 bit có tốc độ
thay đổi. Dữ liệu đợc truyền nối tiếp trên chân TXD và nhận nối tiếp trên
chân RXD, chế độ này cung cấp cho AT89S52 một công cụ giao tiếp với máy
tính qua cổng COM.
- với chế độ này, 1 khung truyền sẽ gồm 10 bit, ngoài 8 bit dữ liệu ra
còn có 1 bit start ( ở mức thấp ), và 1 bit stop ( ở mức cao ), LSB cũng đợc
truyền trớc, MSM đợc truyền sau.
- Tốc độ baud của Port nối tiếp trong chế độ 1 có thể đợc cung cấp bởi
Timer 1 hay Timer 2 hay đồng thời cả 2 bộ định thời này nếu muốn tốc độ
truyền và nhận dữ liệu là khác nhau.
- khi sử dụng các bộ timer cung cấp tốc độ baud cho port nối tiếp thì
nên dùng thạch anh có tần số là 11,0592 Mhz vì với tần số này sẽ tạo cho
Port nối tiếp có tốc độ chuẩn với sai số là 0.
- có thể dùng timer 1 hay timer 2 để cung cấp tốc độ baud cho port nối
tiếp. Bình thờng thì Timer 1 đợc sử dụng để tạo tốc độ baud cho port nối tíêp.
Khi muốn dùng Timer 2 để tạo tốc độ baud cho Port nối tiếp thì ta phải khai
báo 2 bit là RCLK và TCLK.
- nếu muốn dùng Timer 1 để tạo tốc độ baud cho đờng truyền và timer 2
để tạo tốc độ nhận cho Port nối tiếp thì ta khai báo : RCLK =1, TCLK =0.
3)_ chế độ 2 :
đây là chế độ Port nối tiếp hoạt động nh 1 bộ UART 9 bit, một khung
truyền sẽ gồm 11 bit, trong đó bắt ddaauf là bit Start, tiếp theo là 8 bit dữ
liệu, tiếp theo là bit dữ liệu thứ 9 ( là bit TB 8 nếu là khung truyền, là bit
RB8 nếu là khung nhận ), cuối cùng là bit Stop. Chế độ này thờng đợc dùng
khi cần chin thêm các bit kiểm tra chẵn lẻ vào trong khung truyền để giảm
bớt lỗi đờng truyền.
4)_ chế độ 3 :
Chế độ này là sự kết hợp của chế độ 1 và chế độ 2, Port nối tiếp hoạt
động nh 1 bộ UART 9 bit và tốc độ baud của UART thay đổi giống nh chế
độ 1 ( đợc cung câp bởi timer 1 và timer 2 ).
Tốc độ baud port nối tiếp .
Nh đã nói, tốc độ bốt 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 của 8051 nhng cũng có thể sử dụng
nguồn xung nhịp khác. giả sử với tần số dao động danh định là 12MHz, thì
tốc độ baud chế độ 0 là 1MHz
Dao động trên chip Xung nhịp tốc độ
baud
a.chế độ 0
Dao động trên chip Xung nhịp tốc
độ baud
b.chế độ 2
Hình :Các nguồn tạo xung nhịp cho port nối tiếp
/12
/64
/32
8051 phát và thu dữ liệu nối tiếp theo nhiều tốc độ khác nhau. Tốc độ
truyền có thể lập trình đợc thông qua bộ định thời Timer 1. Trớc khi tìm hiểu
vấn đề này, chúng ta sẽ xem xét quan hệ giữa tần số thạch anh và tốc độ baud
của 8051.
tần số chu trình máy của 8051 là tần số thạch anh chia cho 12. Nếu
XTAL = 11.0592MHz thì tần số chu trình là 921.6kHz (11.0592MHz : 12 =
921.6kHz). Mạch UART truyền nối tiếp của 8051 lại chia tần số chu trình
máy cho 32 một lần nữa trớc khi đa đến Timer 1 để tạo ra tốc độ baud. Do
vậy, 921.6kHz : 32 = 28.800Hz là tần số sẽ đợc dùng trong phần này để xác
định tốc độ baud. Muốn Timer 1 đặt tốc độ baud thì nó phải đợc lập trình về
mode 2, đó là chế độ thanh ghi 8 bit tự động nạp lại. Để có tốc độ baud tơng
thích với PC ta phải nạp TH1 theo các giá trị cho trong Bảng 10.3. Ví dụ 10.1
trình bày cách kiểm tra giá trị dữ liệu cho trong Bảng 10.3.
Bảng 10.4: Giá trị thanh ghi TH1 của Timer1 với các tốc độ baud khác
nhau
Tốc độ baud TH1 (thập phân) TH1 (số Hex)
9600 -3 ED
4800 -6 FA
2400 -12 F4
1200 -24 E8
F Các ngắt của 8051
.Các ngắt Timer.
Các ngắt Timer có địa chỉ Vector ngắt là 000BH(Timer 0) và
001BH(Timer 1). Ngắt Timer xảy ra khi các thanh ghi Timer(TLx và THx)
tràn và set cờ tràn(TFx lên 1).Các cờ Timer(TFx) không bị xoá bằng phần
mềm. Khi cho phép các ngắt, TFx tự động bị xoá bằng phần cứng khi CPU
chuyển đến ngắt.
.Các ngắt cổng nối tiếp.
XTAL
ữ 12
UART
ữ 32
28800Hz
921.6kHz
Ngắt cổng nói tiếp xảy ra khi cờ phát(TI) hoặc cờ ngắt thu(KI) đợ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
SBUP để đợc đọc.
Các ngắt cổng nối tiếp khác với các ngắt Timer. Cờ gây ra ngắt cổng nối
tiếp không bị xoá bằng phần cứng khi CPU chuyển tới ngắt. Do có hai nguồn
ngắt cổng nối tiếp TI và RI. Nguồn ngắt phải đơcj xác định trong ISR và cờ
tạo ngắt sẽ đợc xoá bằng phần mềm. Các ngắt Timer cờ ngắt đợc xoá bằng
phần cứng khi CPU hớng tới ISR.
.Các ngắt ngoài.
Các ngắt ngoài xảy ra khi có mức thầp hoặc sờn xuống trên chân INT0
hoặc INT1 của vi điều khiển. Đây là chức năng chuyển đổi của các bit Port
3(P3.2 và P3.3).
Các cờ tạo ngắt nàylà các bit IE0 và IE1 trong TCON. Khi quyền điều
khiển đã chuyển đến ISR, cờ tạo ngắt chỉ đợc xoá nếu ngắt đợc tích cực bằng
sờn 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.
Nếu ngắt ngoài đợc tác đọng bằng sờn xuống thì nguồn bên ngoài phải
giữ chân tác động ở mức cao tối thiểu một chu kỳ và giữ nó ở mức thấp trong
mộy chu kỳ nữa để đảm bảo phát hiện đợc cạnh xuống. Nếu ngắt ngoài đợc
tác động theo mức thì nguồn bên ngoài phải giữ tín hiệu yêu cầu tác động
cho ngắt đợc yêu cầu thật sự tạo ra và không tác động yêu cầu ngắt trớc khi
ISR đợc hoàn tất. Nếu không một ngắt khác sẽ đợc lặp lại.
Phần II
Thiết kế và thi công
Mạch đếm sản phẩm dùng cảm biến hồng ngoại hiển thị lên màn hình vi
tính dùng phần mềm Hyper Terminal
I / sơ đồ nguyên lý .
KhốI VI ĐIềU KHIểN
Sơ đồ mô phỏng bằng phần mềm ISIS Professional
II/ Nguyªn lý ho¹t ®éng cña m¹ch
M¹ch nµy gåm phÇn m¹ch nguån vµ phÇn m¹ch ®iÒu khiÓn.M¹ch
nguån sö dông IC nguån lµ 7805 ,IC 7805 t¹o ra ®iÖn ¸p 5V ®Ó cÊp cho
m¹ch vi ®iÒu khiÓn
M¹ch Vi ®iÒu khiÓn bao gåm C¶m biÕn hång ngo¹i (OPTO) , IC
khuyªc ®¹i tÝn hiÖu LM358 , VDK 89C52 , MAX 232 , vµ cæng COM m¸y
tÝnh
Ho¹t ®éng cña bé ®Õm nh sau :
Nguyên tắc hoạt động của Econder chữ U (OPTO)
Cấu tạo bên trong của Encoder chữ U bao gồm 1 LED phát sáng và 1
transistor quang , Khi LED sáng ,chiếu vào cực B của transistor quang , làm
transistor này dẫn, đa mức 0V lên chân 3 (U+) của bộ khuyếch đại thuật toán
=> đầu ra bằng 0 (mức logic 0 )
Khi có vật đi qua , cực B của transistor quang không nhận đợc ánh sáng,
transistor đóng, U + đợc nhận mức điện áp dơng => đầu ra có điện áp 2/3
Vcc (Mức logic 1 )
Lu ý :
Biến trở VR có tác dụng tạo điện áp so sánh , tùy chỉnh biến trở ta sẽ điều
chỉnh đợc mức độ nhạy của cảm biến
Sự chuyển mức từ logic 1 xuống logic 0 (sờn âm ) , khi đa vào đầu vào ngắt
của vi điều khiển sẽ tạo một ngắt , Khi đó , trong chơng trình , ta cho1 biến
đêm , biến đó sẽ tăng lên dựa theo số lần ngắt
Lu ý:
đầu vào ngắt trong đề tài là ngắt ngoài 0 ( INT0 )
Khối Vi điều khiển :
Khối vi điều khiển làm nhiệm vụ thực hiện chơng trình
Tín hiệu vào đợc đa vào chân INT 0 (ngắt ngoài 0- P 3.2)
Thạch anh 11.0592 MHz và 2 tụ C1 , C2 làm nhiệm vụ tạo tần số giao động
cấp cho VDK
Mạch Reset VDK : Khi ấn Buttton thì VDK đợc reset
Tín hiệu sau khi đợc xử lý thì VDK cấp tín hiệu ra thông qua chân TXD
(P3.1)
Khối chuyển mức TTL sang RS 232 dùng MAX 232
Điện áp của VDK là điện áp mức TTL , Còn điện áp của máy tính là mức RS
232
2 mức điện áp này không tơng thích với nhau , cho nên ta cần 1 bộ chuyển
đổi mức điện áp TTL sang mức RS 232 và ngợc lại để VDK và máy tính có
thể giao tiếp đợc với nhau
Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dụng dùng
trong giao tiếp nối tiếp với máy tính . Chúng có nhiệm vụ chuyển đổi mức
TTL ở lối vào thành mức + 10V hoặc 10 V ở phía truyền, và các mức
+3 +15 V hoặc -3-15V thành mức TTL ở phía nhận
Dữ liệu đợc đa vào T2IN thông qua chân TXD và d liệu ra đợc đa ra T2OUT
và vào chân số 2 là chân RXD của cổng COM để hiển thị lên màn hình máy
vi tính
*/// PHầN CứNG :
Mạch PCB nh sau :
*/// PHầN MềM
*/ Lu đồ thuật toán của đề tài đếm sản phẩm dùng cảm biến hồng ngoại