1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

52 769 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Tác giả Nhóm tác giả
Người hướng dẫn KS.Đặng Thỏi Sơn
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Kỹ thuật điện tử và viễn thông
Thể loại Đồ án thiết kế mạch số
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 52
Dung lượng 1,23 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 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ĂNGP3.0 RxD Ngõ vào nhận dữ liệu nối tiếpP3.1 TxD Ngõ xuất dữ liệu nối tiếpP3.

Trang 1

MỤC LỤC

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.3 Kết nối với phần cứng của một số chân cơ bản 15

2.2.1.4.Phơng phát điều chế xung PWM điều khiển tốc độ động cơ DC 31

Trang 2

Lời núi đầu

Cụng nghệ số hiện nay cú những bước phỏt triển rất nhanh Nú luụn gắn liền 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 emhiể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ếnthứ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ảocủa cỏc thầy cụ và những ý kiến đúng gúp của cỏc bạn

Trang 3

Đặ 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-51

 Sơ đồ khối của P89V51RD2

Trang 4

Hình 1.1 Sơ đồ khối của P89V51RD2

Những đặc điểm của P89V51RD2

 64 Kbyte code flash

 1 Kbyte ram nội

 32 đường xuất nhập (4 Port)

Trang 5

1.1.1 Sơ đồ các chân

Hình 1.2 sơ đồ chân của P89V51RD2

1.1.2 Chức năng của các chân.

IC P89V51RD2 có tất cả 40 chân, chia làm 4 Port, mỗi Port 8 chân, và

các chân chức năng khác Cụ thể như sau:

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

Trang 6

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

 P1.4

SS: Chọn cổng phụ vào cho SPI (Serial Peripheral Interface)

CEX1: Ngõ vào xung nhịp cho chức năng Capture/Compar modul1

Trang 7

có dung lượng lớn, cần 2 byte để định địa chỉ của bộ nhớ do byte thấp do P0 đảm nhận, bit cao do P2 đảm nhiệm.

 Port 3 (P3):

Port 3 gồm 8 chân chân 10-17, có hai chức năng:

 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ĂNGP3.0 RxD Ngõ vào nhận dữ liệu nối tiếpP3.1 TxD Ngõ xuất dữ liệu nối tiếpP3.2 INT0 Ngõ ngắt cứng thứ 0P3.3 INT1 Ngõ ngắt cưng thứ 1P3.4 T0 Ngõ vào của timer/Counter thứ 0P3.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 đượcnố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

Trang 8

 Chân ALE/PROG : (Chân 30, chân cho phép chốt địa chỉ)

Khi vi điều khiển truy xuất bộ nhớ ngoài, P0 vừa có chưc năng là bus địa chỉ, vừa có chức năng là bus dữ liệu, do đó phải tách các đường dữ liệu

và đường địa chỉ Tín hiệu ở chân ALE dung làm tín hiệu điều khiển để giải

đa hợp các đường địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt

Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào vi điều khiển, Như vạy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung cấp cho các phần khác của hệ thống

Do lý do trên, chíp P89V51RD2 có không gian bộ nhớ riêng cho chươngtrình và dữ liệu Cả bộ nhớ chương trình và bộ nhớ dữ liệu đều nằm trongchip Tuy nhiên ta có thể mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằngcách sử dụng các chip nhớ bên ngoài với dung lượng tối đa là 64kbyte cho bộnhớ chương trình và 64kbyte cho bộ nhớ dữ liệu

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ó

Trang 9

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à đợckí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 Khichơng trình lớn quá kích thớc bộ nhớ chơng trình bên trong chip, chơng trìnhnày phải đợc nạp vào bộ nhớ chơng trình ngoài Nếu chơng trình nằm trongROM 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àiphả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 baogồ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

Trang 10

Hình 1.3 Sơ đồ khối bộ nhớ data trên chip P89V51RD2

1.2.3.1 Cấu trúc RAM trong vi điều khiển.

Trang 11

 Các bank thanh ghi

Các bank thanh ghi có địa chỉ byte từ 00H đến 1FH, có 8 thanh ghi trong mỗi bank, các thanh ghi được đặt tên từ R0-R7, các thanh ghi này được đặt mặc định trong bank 1 Có 4 bank thanh ghi và tại mỗi thời điểm chỉ có một bank thanh ghi được truy xuất với các thanh ghi từ R0 đến R7, để thay đổi việc truyxuất các thanh ghi trên các bank thanh ghi, người dùng phải thay đổi giá trị các bit chọn bank trong thanh ghi trạng thái PSW bằng các câu lệnh trong chương trình

Các lệnh dùng các thanh ghi từ R0 đến R7 mất khoảng không gian lưu trữ

ít hơn và thời gian thực hiện nhanh hơn so với các lệnh dùng các ô nhớ RAM

Trang 12

khác, ngoài ra các thanh ghi này còn có thêm một số chức năng đặc biệt khác,

vì lí do này các dữ liệu sử dụng thường thường được người viết chương trình đư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

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

Trang 13

Tìm hiểu một số thanh ghi có chức năng đặc biệt .

Các thanh ghi có địa chỉ 80H, 90H, A0H, B0H:

Đây là các thanh ghi kiểm tra và điều khiển mức logic của các Port, có thể truy xuất và xác lập các thanh ghi này với địa chỉ byte hoặc tên riêng lần lượt

Con trỏ ngăn xếp SP ( Địa chỉ 81H )

Con trỏ ngăn xếp SP là một thanh ghi có địa chỉ 81H, giá trị của nó được

tăng,giảm tự động khi thực hiện các lệnh PUSH, CALL,POP con trỏ SP dùngquản lí và xử lí các nhóm dữ liệu liên tục.Giá trị mặc định của SP là 07H

Con trỏ dữ liệu DPTR

Con trỏ dữ liệu DPTR là thanh ghi 16 bit duy nhất của Vi điều khiển được tạo thành từ hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte cao-địa chỉ byte 83H) Hai thanh ghi DPL và DPT có thể truy xuất độc lập bởi người sử dụng Con trỏ dữ liệu DPTR thường được sử dụng khi truy xuất dữ liệu từ bộ nhớ 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

Trang 14

PSW.7 D7H C hoặc Cy Cờ nhớ

PSW.6 D6H AC Cờ nhớ phụ

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

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ếpmạnh

Các thanh ghi định thời

8951 có 2 bộ đếm định thời (Timer/counter) 16 bit để định các khoảng thời gian hoặc để đếm các sự kiện Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao); Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp)

và 8DH (TH1, byte cao)

Hoạt động của bộ đếm định thời được thiết lập bởi thanh ghi chế độ định thời TMOD (Timer mode register) ở địa chỉ 89H và thanh ghi điều khiển định thời TCON (Timer control register) có địa chỉ 88H Chỉ có TCON được định địa chỉ từng bit

Các thanh ghi của Port nối tiếp

Bên trong 8951 có một Port nối tiếp để truyền thông với các thiết bị đầu cuố

Trang 15

hoặc modem, hoặc để giao với các ic khác có mạch giao tiếp nối tiếp (Như cácthanh ghi chăng hạn) Một thanh ghi được gọi là bộ đệm dữ liệu nối tiếp SBUF( Serial data bufer) ở địa chỉ 99H lưu giữ dữ liệu truyền đi hoặc dữ liệu nhận về,việc ghi lên SBUF sẽ nạp dữ liệu để truyền và việc đọc SBUF sẽ lấy dữ liệu đãnhận được Các chế độ hoạt động khác nhau được lập trình thông qua thanh ghiđiều khiển Port nối tiếp SCON (serial Port control register) ở địa chỉ 98H, thanhghi này được định địa chỉ từng bit.

Các thanh ghi ngắt

8951 có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngắt Các ngắt sẽ bị vô hiệu hóa khi reset hệ thống và sau đó được cho phép ghi vào thanh ghi cho phép ngắt được thiết lập qua thanh ghi ưu tiên ngắt IP (interrupt prioriry register) ở địa chỉ B8H Cả hai thanh ghi này điều được định địa chỉ từng bit

Thanh ghi điều khiển nguồn

Thanh ghi điều khiển nguồn PCON (Power control register) có địa chỉ 87H 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ấutrú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:

Trang 16

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

Trang 17

vi điều khiển hoạt động trở lại, hoặc do người sử dụng muốn quay về trạng thái ban đầu.Vi vậy chân RESET được kết nối như sau:

Chú ý: Với vi điều khiển sử dụng thạch anh có tần số 12MHz thường sử dụng tụ C=10uF và R=10K

II Lập trình cho vi điều khiển P89V51DR2

2.1 Tổng quan về ngôn ngữ lập trình ASSEMBLY.

Assembly là một ngôn ngữ lập trình cấp thấp gần với ngôn ngữ máy, chươngtrình sau khi viết bằng assembly cần được chuyển đổi qua mã lệnh (hay còn gọi là

mã máy) của vi điều khiển, quá trình chuyển đổi được thực hiện bằng chương trìnhdịch Assembler Các mã lệnh sau đó được nạp vào Rom của vi điều khiển để thực hiện chương trình Chương trình dịch Assembler được dùng phổ biến hiện nay là chương trình Macro Assembler sử dụng trên Dos

Để soạn thảo chương trình có thể sử dụng Notepal hoặc bất cứ chương trình soạnthảo có sử dụng bộ kí tự chuẩn ASCII và lưu tên đuôi như sau: "tên.asm" Ngoài ra

có thể sử dụng các phần mềm hỗ trợ soạn thảo dành riêng cho vi điều khiển đã tíchhợp sẵn chương trình dịch Assembler như: Reads51,…

Trang 18

Khi giới thiệu các câu lệnh viết bằng hợp ngữ, các câu lệnh cần được bao quát tất

cả các trường hợp do đó có một số qui ước khi thiết lập cú pháp các lệnh như sau:

Tên qui

ước Tên qui ước đại diện cho

Ví dụ Lệnh sử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:

Ô 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

2.2 Tập lệnh trong Vi Điều Khiển.

Tập lệnh trong Vi điều khiển được chia làm 5 nhóm:

1 Nhóm lệnh di chuyển dữ liệu

2 Nhóm lệnh số học

3 Nhóm lệnh logic

4 Nhóm lệnh rẽ nhánh

Trang 19

ADD A,#data (2,1):Cộng dữ liệu tức thời vào A.

ADD A,Rn (1,1): Cộng thanh ghi và cờ nhớ vào A

ADD A,data (2,1): Cộng trực tiếp byte dữ liệu và cờ nhớ vào A

ADDC A,@Ri (1,1): Cộng gián tiếp nội dung RAM và cờ nhớ vào A

ADDC A,#data (2,1): Cộng dữ liệu tức thời và cờ nhớ vào A

SUBB A,Rn (1,1):Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờnhớ

SUBB A,data (2,1): Trừ trực tiếp A cho một số và cờ nhớ

SUBB A,@Ri (1,1): Trừ gián tiếp A cho một số và cờ nhớ

SUBB A,#data (2,1): Trừ nội dung A cho một số tức thời và cờ nhớ

INC A (1,1): Tăng nội dung thanh ghi A lên 1

INC Rn (1,1): Tăng nội dung thanh ghi Rn lên 1

INC data (2,1): Tăng dữ liệu trực tiếp lên 1

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

Trang 20

DA A (1,1): hiệu chỉnh thập phân thanh ghi A.

2.2.2 Nhóm lệnh logic

CPL A (1,1): Bù nội dung thanh ghi A

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 trongRAM

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

ANL data,#data (3,2): AND một dữ liệu trực tiếp với A một dữ liệu tức thời.ANL C,bit (2,2): AND cờ nhớ với 1 bit trực tiếp

ANL C,/bit (2,2): AND cờ nhớ với bù 1 bit trực tiếp

ORL A,Rn (1,1): OR thanh ghi A với thanh ghi Rn

ORL A,data (2,1): OR thanh ghi A với một dữ liệu trực tiếp

ORL A,@Ri (1,1): OR thanh ghi A với một dữ liệu gián tiếp

ORL A,#data (2,1): OR thanh ghi A với một dữ liệu tức thời

ORL data,A (2,1): OR một dữ liệu trực tiếp với thanh ghi A

ORL data,#data (3,1) :OR một dữ liệu trực tiếp với một dữ liệu tức thời.ORL C,bit (2,2): OR cờ nhớ với một bit trực tiếp

ORL C,/bit (2,2): OR cờ nhớ với bù của một bit trực tiếp

Trang 21

XRL A,Rn (1,1): XOR thanh ghi A với thanh ghi Rn.

XRL A,data (2,1): XOR thanh ghi A với mộ dữ liệu trực tiếp

XRL A,@Ri (1,1): XOR thanh ghi A với một dữ liệu gián tiếp

XRL A,#data (2,1): XOR thanh ghi A với mộ dữ liệu tức thời

XRL data,A (2,1): XOR một dữ liệu trực tiếp với thanh ghi A

XRL data,#data (3,1): XOR một dữ liệu trực tiếp với một dữ liệu tức thời.SETB C (1,1): Đặt cờ nhớ

SETB bit (2,1): Đặt một bit trực tiếp

2.2.3 Nhóm lệnh chuyển dữ liệu

MOV A,Rn (1,1):Chuyển nội dung thanh ghi Rn vào thanh ghi A

MOV A,data (2,1): Chuyển dữ liệu trực tiếp vào thanh ghi A

MOV A,@Ri (1,1): Chuyển dữ liệu gián tiếp vào thanh ghi A

MOV A,#data (2,1): Chuyển dữ liệu tức thời vào thanh ghi 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ựctiế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ántiế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ántiế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ántiếp

Trang 22

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 thanhghi A

MOVX @Ri,A (1,2): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ).MOVX @DPTR,A (1,2): Chuyển nội dung A ra dữ liệu bên ngoài (16 bitđịa chỉ)

PUSH data (2,2): Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP.POP data (2,2): Chuyển dữ liệu trực tiếp vào ngăn xếp và giảmSP

XCH A,Rn (1,1): Trao đổi dữ liệu giữa thanh ghi Rn v2 thanh ghi A.XCH A,data (2,1): Trao đổi giữa thanh ghi A và một dữ liệu trựctiếp

XCH A,@Ri (1,1): Trao đổi giữa thanh ghi A và một dữ liệu giántiếp

XCHD A,@R (1,1): Trao đổi giữa nibble thấp (LSN) của thanh ghi

A và LSN của dữ liệu gián tiếp

2.2.4 Nhóm lệnh chuyền điều khiển

ACALL addr11 (2,2): Gọi chương trình con dùng địa chì tuyệt đối.LCALL addr16 (3,2): Gọi chương trình con dùng địa chỉ dài

RET (1,2): Trở về từ lệnh gọi chương trình con

Trang 23

AJMP addr11 (2,2): Nhảy tuyệt đối.

JMP @A+DPTR (1,2): Nhảy gián tiếp từ con trỏ dữ liệu

JNC rel (2,2): Nhảy nếu cờ nhớ không được đặt

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ôngbằ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ôngbằ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ầnnhả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ớivào đúng khẩu lệnh đã đưa ra

Trang 24

Condition Jump If Not <Condition> Jump If <Condition>

Direct = 0 DJNZ direct, rel

A # direct CJNE A, direct, rel

A # #data CJNE A, #data, rel

Rn # #data CJNE Rn, #data, rel

@Ri # #data CJNE @Ri, #data, rel

 Nhảy không điều kiện: ALJMP, LJMP, SJMP

Trang 25

Chương 2 THIẾT KẾ ROBOT

2.1 Cảm biến nhận biết vạch

Có thể nói đây là phần quan trọng nhất cả robot dò đường, quyết định khảnăng di chuyển của robot Nếu bộ phận này hoạt động không chính xác, robot

sẽ bị lạc đường Như vậy, để có thể hoàn thành mục tiêu là đi đúng đường đi

đã định trước, bộ phận này phải có khả năng nhận biết vạch trắng trên nềnxanh, đồng thời có khả năng nhận biết được các ngã tư để đưa về bộ điềukhiển nhằm cập nhật quãng đường đã đi được, từ đó sẽ có quyết định rẽ trái,phải hay đi thẳng

2.1.1 Nguyên lý chung

Chúng ta đều biết rằng ánh sáng bao gồm 7 màu cơ bản: đỏ, cam, vàng, lục,lam, tím, xám, trắng Và nếu 7 màu kết hợp lại sẽ được ánh sáng trắng Sở dĩchúng ta có thể thấy vật này màu đỏ, vật kia mày vàng là do khi ánh sáng trắngchiếu tới, những ánh sáng màu khác bị hấp thụ, chỉ còn những ánh sáng màu đỏ( hay vàng) là bị phản xạ lại Mắt chúng ta thu nhận được những ánh sáng màu này

và chúng ta nhận biết được màu sắc của vật

Dựa vào nguyên lý trên, người ta đã cho ra đời những cảm biến nhận biết màusắc Những cảm biến này có thể nhận biết được một hoặc nhiều màu sắc khácnhau Tuy nhiên những cảm biến này khá đắt và sử dụng chúng vào bài toán dòđường cho robot năm 2009 có lẽ là một sự lãng phí Rõ ràng với môi trường dichuyể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ơinà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ó

Trang 26

chất lượng tốt hơn như có khả năng chống nhiễu chẳng hạn, có lẽ chỉ còn cáchchọn những cảm biến chuyên dụng nhưng giá thành rất cao

Nếu ta dùng ánh sáng hồng ngoại thì cũng phải dùng bộ phận thu hồng ngoại

Hình 2.1 Nguyên tắc nhận biết vạch màu dùng ánh sáng hồng ngoại.

Cảm biến hồng ngoại gồm một LED phát hồng ngoại (infrared emitter)và mộttransistor thu hồng ngoại (infrared phototransistor)

Hình 2.2 Nguyên lý thu dùng ánh sáng hồng ngoại

Theo trên, chúng ta nhận thấy rằng mạch điện khá đơn giản, tuy nhiên mạchnày rất dễ bị nhiễu với ánh sáng tự nhiên và ánh đèn vì vậy ta phải che chắn

Ngày đăng: 06/01/2014, 15:04

HÌNH ẢNH LIÊN QUAN

1.1.1. Sơ đồ các chân - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
1.1.1. Sơ đồ các chân (Trang 5)
Hình 2.2. Nguyên lý thu dùng ánh sáng hồng ngoại - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.2. Nguyên lý thu dùng ánh sáng hồng ngoại (Trang 26)
Hình 2.1. Nguyên tắc nhận biết vạch màu dùng ánh sáng hồng ngoại. - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.1. Nguyên tắc nhận biết vạch màu dùng ánh sáng hồng ngoại (Trang 26)
Hình 2.5 . Sơ đồ khối cầu H đơn giản - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.5 Sơ đồ khối cầu H đơn giản (Trang 29)
Hình 2.12 Sơ đồ mạch khối nguồn 12V và 24V - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.12 Sơ đồ mạch khối nguồn 12V và 24V (Trang 34)
Hình 2.13. Sơ đồ mạch khối điều khiển - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.13. Sơ đồ mạch khối điều khiển (Trang 35)
Hình 2.14. Sơ đồ nguyên lý điều khiển động cơ - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.14. Sơ đồ nguyên lý điều khiển động cơ (Trang 36)
Hình 2.16. Mạch LED dò đờng - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.16. Mạch LED dò đờng (Trang 37)
Hình 2.18. Sơ đồ mạch khối hiển thị - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.18. Sơ đồ mạch khối hiển thị (Trang 38)
Hình 2.19. Sơ đồ nguyên lý phần điều khiển - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.19. Sơ đồ nguyên lý phần điều khiển (Trang 39)
Hình 2.20. Sơ đồ nguyên lý phần công suất - Ứng dụng vi điều khiển P89V51RD1 để thiết kế robot tự động
Hình 2.20. Sơ đồ nguyên lý phần công suất (Trang 40)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w