Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động - Pdf 95

n Thit K Mch S GV Hng Dn: KS.ng Thỏi Sn
MC LC

Trang
LI NểI U
3
Chơng 1. TổNG QUAN Về Vi điều khiển P89V51RD2
4
I. Giới thiệu về vi điều khiển P89V51RD2. 4
1.1. Sơ đồ chân và chức năng các chân P89V51RD2. 5
1.1.1. Sơ đồ chân P89V51RD2 5
1.1.2. Chức năng các chân 5
1.2. Cấu trúc bên trong vi điều khiển P89V51RD2. 8
1.2.1. Tổ chức bộ nhớ. 8
1.2.2. B nhớ ROM
8
1.2.3. B nhớ RAM
9
1.3. Kết nối với phần cứng của một số chân cơ bản 15
1.3.1. Kết nối trên hai chân XTAL1 và XTAL2 15
1.3.1. Kết nối trên chân RESET 16
II. Lập trình cho vi điều khiển p89v51 17
2.1. Tổng quan về ngôn ngữ lập trình ASEMBLY 17
2.1.2. Một số quy ớc trong lập tình ASEMBLY 17
2.1.3. Tập lệnh trong Vi Điều khiển MCS-51 18
Chơng 2. thiết kế robot
25
2.1. Cảm biến nhận biết vạch trắng. 25
2.1.1. Nguyên lý chung. 25
2.1.2 Cảm biến quang. 25
2.2. Mạch cầu H và ứng dụng mạch cầu H trong điều khiển động cơ. 28

với sự phát triển của các công nghệ khác. Công nghệ số đã đem đến cho con người
những ứng dụng quan trọng trong tất cả các nghành, các lĩnh vực. Do vậy công nghệ
tin học, công nghệ số là một trong nhứng ngành phát triển hàng đầu trong giai đoạn
hiện nay.
Là một sinh viên khoa công nghệ nghành Điện tử - Viễn thông, bản thân em
hiểu rằng vận dụng những kiến thức đã học vào thực tế là vô cùng quan trọng. Với suy
nghĩ trên, cùng với niềm yêu thích robot, em đã quyết định chọn đề tài “øng dông vi
®iÒu khiÓn P89V51RD1 ®Ó ThiÕt kÕ robot tù ®éng”. Cụ thể em tìm hiểu cấu trúc và kỹ
thuật lập trình cho IC P89V51RD2. Em xin chân thành cảm ơn các thầy cô giáo trong
bộ môn Điện tử - Viễn thông Khoa Công nghệ đã giảng dạy cho chúng em những kiến
thức về chuyên môn, để chúng em thực hiện tốt đồ án Kỹ thuật số này. Đây là lần đầu
em được áp dụng những kiến thức đã học vào thực tế, do kiến thức còn hạn chế nên
đồ án này không thể tránh được những thiếu sót, Vì vậy em rẩt mong được sự chỉ bảo
của các thầy cô và những ý kiến đóng góp của các bạn.
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
2
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn
Đặ biệt em xin chân thành cảm ơn thầy giáo Đặng Thái Sơn đã nhiệt tình giúp đỡ em
hoàn thành đề tài này!

Em xin chân thành cảm ơn !
Vinh, ngày…Tháng….Năm 2009
CHƯƠNG 1: Tổng quan về vi điều khiển P89V51RD2
I.Giới thiệu về vi điều khiển.
P89V51RD2 là một hệ vi tính 8-bit đơn chip CMOS, có hiệu suất cao, công
suất tiêu thụ thấp và có 4k byte bộ nhớ ROM Flash xoá được, lập trình được.
Chip này được sản xuất dựa trên công nghệ nhớ không mất nội dung, có độ tích
hợp cao của ATmel. Và nó cũng tương thích với các chuẩn của công nghệ MCS-

 Chân VCC:
Chân số 40 là chân cấp nguồn cho vi điều khiển. Nguồn điện cấp là 5V.
 Chân GND :
Chân số 20 là chân nối đất.
 Port 0(P0):
Port 0 gồm 8 chân, từ chân 32 đến chân 39, nó có hai chức năng:
 Chức năng xuất nhập: Các chân này được dung để nhận tin hiệu từ ngoài
vào vi điều khiển hoặc để xuất tín hiệu từ vi điều khiển ra ngoài.
 Chức năng là bus dữ liệu và bus địa chỉ(AD7-AD0): Port này còn
làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại nếu có kết nối
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
5
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn
với bộ nhớ ngoài, đồng thời P0 còn được dùng để định địa chỉ của bộ nhớ
ngoài.


Port 1(P1) :
 Port 1 là port I/O trên các chân 1-8. 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.
 P1.0/T2: Ngõ vào counter cho Timer/counter2 hoặc ngõ ra cho
Counter/Timer2.
 P1.1/T2EX: Điều khiển hướng và cạnh kích chức năng Capture cho
Timer/counter2.
 P1.2/ECI: Ngõ vào xung nhịp. Tín hiệu này là nguồn xung nhịp ngoài
cho chức năng PCA.
 P1.3/CEX0: Ngõ vào xung nhịp cho chức năng Capture/Compare
modul 0.

 Chức năng xuât nhập.
 Với mỗi chân có chức năng riêng thứ hai trong bảng sau:
 Các chân có chức năng đặc biệt:
CHÂN TÊN CHỨC NĂNG
P3.0 RxD Ngõ vào nhận dữ liệu nối tiếp
P3.1 TxD Ngõ xuất dữ liệu nối tiếp
P3.2 INT0 Ngõ ngắt cứng thứ 0
P3.3 INT1 Ngõ ngắt cưng thứ 1
P3.4 T0 Ngõ vào của timer/Counter thứ 0
P3.5 WR Ngõ điều khiển nghi dữ liệu lên bộ nhớ ngoài
P3.7 RD Ngõ điều khiển đọc dữ liệu từ bộ nhớ ngoài
 Chân RESET (RST)
Ngõ vào RST ở chân 9, là ngõ vao Reset, dung để thiết lập rạng thái
ban đầu cho vi điều khiển.Hệ thống sẽ được thiết lập lại các giá trị ban đầu
nếu ngõ này ở mức 1 tối thiểu 2 chu kỳ máy.
 Chân XTAL1 và XTAL2
Hai chân này ở vị trí 18 và 19, được sử dụng để nhận nguồn xung
clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và
các tụ để tạo nguồn xung clock ổn định.
 Chân PSEN (chân cho phép bộ nhớ chương trình)
PSEN: (program store enable). Là chân thứ 29. Tín hiệu được xuất ra ở
chân này dung để truy xuất bộ nhớ chương trình ngoài. Chân này thường được
nối với chân OE (output enable) của ROM ngoài
Khi vi điều khiển làm việc với chương trình ngoài, chân này sẽ phat ra tìn
hiệu hoạt động ở mức thấp và được kích hoạt 2 lần trong một chu kỳ máy.
Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức
không tích cực.
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT

1.2.2. Bộ nhớ chương trình (ROM):
Bộ nhớ chơng trình lu giữa chơng trình điều khiển chip P89V51RD2. Có
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
8
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn
2 vùng nhớ nội flash trong MCU, block 0 có 64Kbytes và đợc tổ chức thành
512 sector, mỗi sector chứa 128bytes. Block 1 chứa chơng trình ISP/IAP và đợc
kích hoạt khi chọn kết hợp bit reset mềm (SWR) và bit chọn bank (BSEL).
Sau khi reset, CPU bắt đầu thực hiện chơng trình từ địa chỉ 0000H. Khi
chơng trình lớn quá kích thớc bộ nhớ chơng trình bên trong chip, chơng trình
này phải đợc nạp vào bộ nhớ chơng trình ngoài. Nếu chơng trình nằm trong
ROM nội, chân /EA của P89V51RD2 phải đợc treo lên 5V. Nếu chơng trình ở
ROM ngoài, chân /EA phải nối đất. Việc truy xuất chơng trình ở bộ nhớ ngoài
phải kết hợp với chân tín hiệu truy xuất bộ nhớ ngoài /PSEN.
1.2.3. Bộ nhớ dữ liệu, bộ nhớ RAM
P89V51RD2 có 1 Kbytes ram ở bên trong chip. RAM trong P89V51RD2 bao
gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit,
các bank thanh ghi và các thanh ghi chức năng đặc biệt.
Hai đặc tính cần chú ý là:
- Các thanh ghi và các port xuất nhập đã được định vị (xác định) trong bộ nhớ và
có thể truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác.
- Ngăn xếp bên trong Ram nội nhỏ hơn so với Ram ngoại trong các bộ
Microcont r rollekhác.
Ram bên trong P89V51RD2 đượ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 bít có địa chỉ từ 20H - 2FH.
• Ram đa dụng từ 30H - 7FH.
• Các thanh ghi chức năng đặc biệt từ 80H - FFH.

đưa vào lưu trong các thanh ghi này.
Ngoài ra, có thể truy xuất thanh ghi trên các bank thanh ghi như với các ô nhớ
bình thường khác. Ví dụ: nguời dùng có thể truy xuất đến thanh ghi R7 bằng ô
nhớ 07H.
 Vùng RAM truy xuất từng bit
Trên RAM nội có 210 ô nhớ bit được định địa chỉ và có thể truy xuất đến
từng bit, các bit nhớ này cũng được định địa chỉ bằng các số thập lục phân- số
Hex. Trong đó có 128 bit nằm trong các ô nhớ có địa chỉ byte từ 20H đến
2FH, các bit nhớ còn lại chứa trong nhóm thanh ghi có chức năng đặc biệt.
Mặc dù các bit nhớ và ô nhớ (byte) cùng được định bằng số Hex, tuy
nhiên chúng sẽ được nhận dạng là địa chỉ bit hay địa chỉ byte thông qua các
câu lệnh tương ứng dành cho các bit nhớ hoặc các ô nhớ này.
Ví dụ:
mov 05H,#10111111B ; lệnh này thiết lập giá trị cho ô nhớ có địa
chỉ là 05H
JB 05H, nhan01 ; lệnh này liên quan đến trạng thái của bit
nhớ có địa chỉ 05H .
 Vùng RAM bình thường
Vùng RAM này có địa chỉ byte từ 30H đến 7FH, dùng để lưu trữ dữ
liệu, được truy xuất theo từng byte
Các thanh ghi có chức năng đặc biệt.
Các thanh ghi này được định địa chỉ byte, một số được định thêm địa
chỉ bit, có địa chỉ của các thanh ghi này nằm trong khoảng 80H đến FFH.
Các thanh ghi đặc biệt này này được dùng để xác lập trạng thái hoạt động
cần thiết cho Vi điều khiển.
 Các thanh ghi có chức năng đặc biệt
Các thanh ghi này được định địa chỉ byte, một s ố được định thêm địa chỉ bit,
có địa chỉ của các thanh ghi này nằm trong khoảng 80H đến FFH. Các thanh
ghi đặc biệt này này được dùng để xác lập trạng thái hoạt động cần thiết cho
Vi điều khiển.

ROM hoặc bộ nhớ từ bên ngoài.
• Thanh ghi trạng thái chương trình PSW (địa chỉ byte D0H)
BIT
ĐỊA
CHỈ BIT KÝ HIỆU

CHỨC NĂNG
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
13
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn
PSW.7 D7H C hoặc Cy Cờ nhớ
PSW.6 D6H AC Cờ nhớ phụ
PSW.5 D5H FO Cờ 0 hoặc cờ zero
PSW.4 D4H RS1 Bit lựa chọn dãy thanh ghi.
PSW.3 D3H RS0 Bit lựa chọn dãy thanh ghi.
PSw.2 D2H 0V Cờ tràn với phép tính liên quan đến số nhi
phân có dấu.
PSW.1 D1H - Chưa được thiết kế để sử dụng
PSW.0 D0H P Cờ chẵn lẻ

•Các thanh ghi Port
Các Port xuất nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại
địa chỉ 90H, Port 2 tại A0H và Port 3 tai B0H. Các Port 0, 2, 3 không được
dung để xuất nhập nếu ta sử dụng thêm bộ nhớ ngoài hoặc nếu có một số
đặcntinhs đặc biệt của 8051 được sử dụng (như là ngắt, Port nối tiếp,…). P1.2
đến P1.7 thì ngược lại, luôn là các đường xuất nhập đa mục đích hợp lệ.
Tất cả các Port đều được định địa chỉ từng bit nhằm cung cấp khả năng giao tiếp
mạnh.

chứa các bit điều khiển .
1.2.4 Bộ nhớ ngoài.
Các bộ vi điều khiển cần có khả năng mở rộng các tài nguyên trên chip. Cấu
trúc của MCS-51 cho ta khả năng mở rộng không gian nhớ chương trình đến
64K và không gian bộ nhớ dữ liệu đến 64. ROM và RAM được thêm vào khi
cần thiết (Khi bộ nhớ cần dùng lớn hơn bộ nhớ trên chip).
PSEN. Khi có 1 EPROM ngoài được sử dụng, cả 2 Port 0 và Port 2 đều không
1.3. Kết nối Với phần cứng của một số chân cơ bản
1.3.1 Kết nối trên hai chân XTAL1 và XTAL2.
Mạch dao động được đưa vào 2 chân nàythông thường được kết nối với
dao động thạch anh như sau:
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
15
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn

Chú ý: C1, C2 =20pF- 30pF dùng để ổn định dao động cho thạch anh.
Hoặc có thể cấp xung tín hiệu xung clock từ một mạch tạo dao động nào đố vào
vi điều khiển theo cách sau:

NC: Để trống
1.3.2 Kết nối chân RESET – Chân 9
Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi vi điều
khiển được cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
16
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn

dụng tên qui
ước
Ví dụ khi sử dụng
Rn
Các thanh ghi ở các Bank thanh ghi
Khi sử dụng thay n bằng các số từ 0
đến 7:
R0, R1, R2, R3, R4, R5, R6, R7
Mov A,Rn Mov A,R2
#data
Dữ liệu 8 bit, khi sử dụng data có
thể viết dưới dạng :
số nhị phân (Vd: #00110011b)
số thập lục phân (Vd: #0A6H)
số thập phân (Vd: #21)
Mov A,#data Mov A,#20H
direct
Ô nhớ có địa chỉ là direct, direct
được thay bằng địa chỉ từ 00H đến
FFH khi viết chương trình.

Mov A,direct Mov A,30H
@Ri
Ô nhớ có địa chỉ gián tiếp, đây là
địa chỉ của một ô nhớ, địa chỉ này
được xác định gián tiếp bằng giá trị
của thanh ghi R0 hoặc R1 (chỉ được
sử dụng hai thanh ghi R0 hoặc R1 để
lưu giá trị này)
Mov A,@Ri Mov A,@R1

INC @Ri (1,1): Tăng gián tiếp nội dung vùng RAM lên 1.
DEC A (1,1): Giảm nội dung thanh ghi A xuống 1.
DEC Rn (1,1): Giảm nội dung thanh ghi Rn xuống 1.
DEC data (2,1): Giảm dữ liệu trực tiếp xuống 1
DEC @Ri (1,1): Giảm gián tiếp nội dung vùng RAM xuống 1.
INC DPTR (1,2): Tăng nội dng con trỏ dữ liệu lên 1.
MUL AB (1,4): Nhân nội dung thanh ghi A với nội dung thanh ghi B.
DIV AB (1,4): Chia nội dung thanh ghi A cho nội dung thanh ghi B.
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
19
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn
DA A (1,1): hiệu chỉnh thập phân thanh ghi A.
2.2.2. Nhóm lệnh logic
CLR C (1,1): Xóa cờ nhớ.
CPL A (1,1): Bù nội dung thanh ghi A.
CPL C (1,1): Bù cờ nhớ.
CPL bit (2,1): Bù một bit trực tiếp.
RL A (1,1): Quay trái nội dung thanh ghi A.
RLC A (1,1): Quay trái nội dung thanh ghi A qua cờ nhớ.
RR A (1,1): Quay phải nội dung thanh ghi A.
RRC A (1,1): Quay phải nội dung thanh ghi A qua cờ nhớ.
SWAP (1,1): Quay trái nội dung thanh ghi A 1 nibble (1/2byte).
ANL A,Rn (1,1): AND nội dung thanh ghi A với nội dung thanh ghi Rn.
ANL A,data (2,1): AND nội dung thanh ghi A với dữ liệu trực tiếp.
ANL A,@Ri (1,1): AND nội dung thanh ghi A với dữ liệu gián tiếp trong
RAM.
ANL A,#data (2,1): AND nội dung thanh ghi với dữ liệu tức thời.
ANL data,A (2,1): AND một dữ liệu trực tiếp với A.

MOV Rn,data (2,2): Chuyển dữ liệu trực tiếp vào thanh ghi Rn.
MOV Rn,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi Rn.
MOV data,A (2,1): Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp.
MOV data,Rn (2,2): Chuyển nội dung thanh ghi Rn vào một dữ liệu trực
tiếp.
MOV data,data (3,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp.
MOV data,@Ri (2,2): Chuyển một dữ liệu gián tiếp vào một dữ liệu gián
tiếp.
MOV data,#data (3,2): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp.
MOV @Ri,A (1,1): Chuyển nội dung thanh ghi A vào một dữ liệu gián
tiếp.
MOV @Ri,data (2,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu gián
tiếp.
MOV @Ri,#data (2,1): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp.
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
21
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn
MOV DPTR,#data (3,2): Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu.
MOV C,bit (2,1): Chuyển một bit trực tiếp vào cờ nhớ.
MOV bit,C (2,2): Chuyển cờ nhớ vào một bit trực tiếp.
MOV A,@A+DPTR (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là
@A+DPRT vào thanh ghi A.
MOVC A,@A+PC(1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là
@A+PC vào thanh ghi A.
MOVX A,@Ri (1,2): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A.
MOVX A,@DPTR (1,2): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh
ghi A.
MOVX @Ri,A (1,2): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ).

JB bit,rel (3,2): Nhảy tương đối nếu bit trực tiếp được đặt.
JNB bit,rel (3,2):Nhảy tương đối nếu bit trực tiếp không được đặt.
JBC bit,rel (3,2): Nhảy tương đối nếu bit trực tiếp được đặt , rồi xóa bit.
CJNE A,data,rel (3,2): So sánh dữ liệu trực tiếp với A và nhảy nếu không
bằng.
CJNE A,#data,rel (3,2): So sánh dữ liệu tức thời với A và nhảy nếu không
bằng.
CJNE Rn,#data,rel (3,2): So sánh dữ liệu tức thời với nội dung thanh ghi
Rn và nhảy nếu không bằng.
CJNE @Ri,#data,rel (3,2): So sánh dữ liệu tức thời với dữ liệu gián tiếp và
nhảy nếu không bằng.
DJNZ Rn,rel (2,2): Giản thanh ghi Rn và nhảy nếu không bằng.
DJNZ data,rel (3,2): Giảm dữ liệu trực tiếp và nhảy nếu không bằng.
2.2.5. Các lệnh rẽ nhánh
Có nhiều lệnh để điều khiển lên chương trình bao gồm việc gọi hoặc trả lại
từ chương trình con hoặc chia nhánh có điều kiện hay không có điều kiện. Tất
cả các lệnh rẽ nhánh đều không ảnh hưởng đến cờ. Ta có thể định nhản cần
nhảy tới mà không cần rõ địa chỉ, trình biên dịch sẽ đặt địa chỉ nơi cần nhảy tới
vào đúng khẩu lệnh đã đưa ra.
 Nhảy có điều kiện:
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
23
Đồ Án Thiết Kế Mạch Số GV Hướng Dẫn: KS.Đặng Thái Sơn
Condition Jump If Not <Condition> Jump If <Condition>
C = 1 JNC rel JC rel
Bit = 1 JNB bit, rel JB bit, rel / JBC bit, rel
A = 0 JNZ rel JZ rel
Rn = 0 DJNZ Rn, rel

đường cho robot năm 2009 có lẽ là một sự lãng phí. Rõ ràng với môi trường di
chuyển của robot đã nêu ở phần 1, ta sẽ chỉ cần một cảm biến nhận biết được nơi
nào sáng, nơi nào tối là đủ. Với những vạch trắng đó sẽ là nơi sáng, với nền xanh
đó sẽ là nơi tối và nhiệm vụ của robot là sẽ đi theo những vạch sáng đó. Chúng ta
có thể làm ra các cảm biến này và chất lượng cũng ở mức chấp nhận được. Để có
_____________________________________________________________________________
_
SV Thực hiện: Hoàng Thế Mạnh 47K - ĐTVT
25

Trích đoạn Chương 2 THIẾT KẾ ROBOT
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status