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

Thiết kế Robot tự động dò đường sử dụng vi điều khiển 8051

57 810 1

Đ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

Định dạng
Số trang 57
Dung lượng 2,09 MB

Nội dung

Yêu cầu đề tài là thiết kế một con robot hoạt động với tốc độ cao nhất, ổn định nhất.Robot có thể hoạt động linh hoạt, đi theo các loại đường từ đơn giản đến phức tạp.PHẦN I CƠ SỞ LÝ TH

Trang 1

TRƯỜNG ĐẠI HỌC VINH

Khoa ®iÖn tö - viÔn th«ng

Trang 2

MỤC LỤC

LỜI NÓI ĐẦU iii

TÓM TẮT ĐỒ ÁN iv

DANH MỤC BẢNG BIỂU v

DANH MỤC HÌNH VẼ vi

DANH MỤC CHỮ CÁI VIẾT TẮT vii

MỞ ĐẦU 1

PHẦN I CƠ SỞ LÝ THUYẾT 2

CHƯƠNG I GIỚI THIỆU HỌ VI ĐIỀU KHIỂN 8051 2

1.1 Sự ra đời của họ vi điều khiển 8051 2

1.2 Kiến trúc chung của họ vi điều khiển 8051 2

1.3 Tóm tắt tập lệnh của 8051……… 3

1.3.1 Chế độ đánh địa chỉ ………

4 1.3.2 Tóm tắt tập lệnh của 8051……….7

1.4 Giới thiệu về vi điều khiển AT89C51……… 12

1.4.1 Sơ đồ và chức năng các chân của AT89C51……… 12

1.4.2 Cấu trúc bên trong của AT89C51……… 16

1.4.3 Các hoạt động chức năng chính trong AT89C51………18

PHẦN II PHÂN TÍCH VÀ THIẾT KẾ………21

CHƯƠNG II MỘT SỐ BỘ PHẬN CHỨC NĂNG CỦA ROBOT……… 21

2.1 Hệ thống cảm biến nhận vạch……… 21

2.1.1 Nguyên lý cơ bản………21

2.1.2 Các loại cảm biến ……… 22

2.2 Động cơ DC ………24

2.2.1 Cấu tạo ……… 24

2.2.2 Nguyên tắc hoạt động……… 24

2.2.3 Điều khiển tốc độ động cơ DC………

26 2.2.4 Điều khiển động cơ bằng mạch cầu H………27

Trang 3

2.2.5 Điều khiển động cơ bằng phương pháp PWM………32

2.3 Nguồn……… 33

CHƯƠNG III TÍNH TOÁN VÀ THIẾT KẾ ……… 34

3.1 Sơ đồ khối tổng quát………34

3.2 Khối nguồn ……….34

3.3 Khối điều khiển trung tâm ……… 35

3.4 Khối cảm biến ……….36

3.5 Khối công suất điều khiển động cơ ……….37

CHƯƠNG IV THI CÔNG PHẦN CỨNG VÀ PHẦN MỀM ……….38

4.1 Thiết kế mạch in ……….38

4.1.1 Thiết kế mạch in cho mạch cảm biến hồng ngoại ……… 38

4.1.2 Thiết kế mạch in cho mạch điều khiển……… 38

4.1.3 Thiết kế mạch in cho mạch công suất ………39

4.2 Lập trình phần mềm cho AT89C51 ……….40

4.2.1 Lưu đồ thuật toán ……… 40

4.2.2 Chương trình phần mềm……….41

KẾT LUẬN……….……… 49

TÀI LIỆU THAM KHẢO ………50

Trang 4

LỜI NÓI ĐẦU

Trong cuộc sống của chúng ta, robot có vai trò ngày càng lớn và ngày càngthông minh theo sự phát triển của khoa học kỹ thuật Trên thế giới, đã xuất hiện rấtnhiều robot thông minh có thể giúp con người thực hiện những công việc đơn giảncũng như những công việc nguy hiểm, phức tạp, như robot hỗ trợ bác sĩ phẫu thuật,robot làm việc trong môi trường phóng xa, robot thám hiểm mặt trăng… Ứng dụngcủa robot trong thời đại này là rất lớn đối với con người

Ở nước ta hiện nay, một số ngành thuộc lĩnh vực cơ điện tử và tự động hoáđang phát triển rất nhanh Việc nghiên cứu, tìm hiểu về robot đã có những bướcphát triển đáng kể, đặc biệt là trong các viện nghiên cứu, sinh viên các trường đạihọc Với cuộc thi Robocon Châu Á Thái Bình Dương, sinh viên Việt Nam đã cónhiều lần vô địch, vượt qua các đối thủ mạnh của các nước phát triển như Nhật Bản,Trung Quốc… Điều đó chứng tỏ sinh viên chúng ta rất quan tâm đến việc nghiêncứu, tìm hiểu về robot

Với niềm đam mê tìm hiểu về robot, và với mong muốn khoa Điện tử - Viễnthông của chúng ta có thể tham gia cuộc thi Robocon toàn quốc, em đã mạnh dạnthực hiện đề tài “Thiết kế Robot tự động dò đường sử dụng vi điều khiển 8051”.Mặc dù phạm vi đề tài rất nhỏ và khiêm tốn, nhưng với em, đây là bước khởi đầuquan trọng khi lần đầu tiên bước vào thế giới robot, một thế giới hấp dẫn, đa dạng

và đầy thử thách

Trong quá trình thực hiện đồ án này, e xin chân thành cảm ơn Thạc sĩ ĐặngThái Sơn đã tận tình hướng dẫn và giúp đỡ em thực hiện tốt đề tài này Mặc dù vậynhưng do thời gian và kiến thức của bản thân có hạn nên đồ án không thể tránh khỏisai sót, mong quý thầy cô và các bạn đóng góp ý kiến để đồ án được hoàn thiện hơn

Vinh, ngày 07 tháng 01 năm 2013

Sinh viên thực hiện

Trang 5

Nguyễn Duy Tuấn

TÓM TẮT ĐỒ ÁN

Trong thời đại ngày nay, với sự phát triển của công nghệ điện tử tự động hóa

đã làm cho con người dần được thay thế bởi các loại máy móc trong một số côngviệc từ đơn giản đến phức tạp Trong những năm qua, các cuộc thi Robocon đã làmdấy lên phong trào tìm hiểu sâu rộng hơn trong sinh viên cả nước về công nghệ tựđộng hóa Trong phạm vi đồ án này, e nghiên cứu các vấn đề như sau:

- Nghiên cứu các kĩ thuật nhận biết môi trường bên ngoài cho robot sử dụngcác loại cảm biến hiện có trên thị trường

- Nghiên cứu các kĩ thuật điều khiển tốc độ động cơ sử dụng vi điều khiển

In domain of this research, I concentrate on reseaching these following issues:

- Researching techniques to identify the external environment for robot usingsensors available on the market

- Researching techniques motor speed control using 8051 microcontroller

- Researching on programming techniques for 8051 microcontroller usingassembly language

Trang 6

The techniques above are presented in details in this research The results of reseaching are applied in product “Automatic Robot Navigation”

DANH MỤC BẢNG BIỂU

Bảng 1.1 Các đặc tính của họ vi điều khiển 8051 2

Bảng 1.2 Các lệnh rẽ nhánh 11

Bảng 1.3 Chức năng các chân port 3 14

Bảng 1.4 Nội dung các thanh ghi sau khi Reset 15

Bảng 1.5 Các thanh ghi chức năng đặc biệt điều khiển timer 19

Bảng 1.6 Địa chỉ các vecto ngắt 19

Bảng 1.7 Trạng thái các thanh ghi sau reset 20

Bảng 2.1 Cách hoạt động của mạch cầu H 28

Trang 7

DANH MỤC HÌNH VẼ

Hình 1.1 Sơ đồ khối của họ vi điều khiển 8051 3

Hình 1.2 Sơ đồ nguyên lý vi điều khiển AT89C51 12

Hình 1.3 Sơ đồ khối bộ vi điều khiển AT89C51 13

Hình 1.4 Mạch dao động dùng thạch anh cho AT89C51 16

Hình 1.5 Bản đồ bộ nhớ data trên chíp AT89C51 18

Hình 2.1 Nguyên tắc nhận biết vạch của led thu phát hồng ngoại 22

Hình 2.2 Sơ đồ nguyên lý thu phát hồng ngoại 23

Hình 2.3 Hình ảnh quang trở thực tế 23

Hình 2.4 Nguyên lý thu dùng ánh sáng khả biến 24

Hình 2.5 Sơ đồ mạch cầu H 27

Hình 2.6 Sơ đồ nguyên lý mạch cầu H sử dụng Relay 29

Hình 2.7 Sơ đồ nguyên lý mạch cầu H dùng BJT công suất 30

Hình 2.8 Sơ đồ nguyên lý mạch cầu H dùng MOSFET 31

Hình 2.9 Sơ đồ nguyên lý mạch cầu H dùng Relay kết hợp FET 31

Hình 2.10 Phương pháp điều khiển động cơ bằng PWM 32

Hình 2.11 Một loại ác quy khô 33

Hình 3.1 Sơ đồ khối tổng quát 34

Hình 3.2 Sơ đồ nguyên lý khối nguồn 35

Hình 3.3 Sơ đồ nguyên lý mạch điều khiển 35

Hình 3.4 Sơ đồ nguyên lý mạch cảm biến hồng ngoại 36

Hình 3.5 Sơ đồ nguyên lý mạch đệm tín hiệu dùng bộ so sánh LM324 36

Hình 3.6 Sơ đồ nguyên lý khối công suất điều khiển động cơ 37

Hình 4.1 Sơ đồ mạch in khối cảm biến hồng ngoại 38

Hình 4.2 Sơ đồ mạch in khối điều khiển 38

Hình 4.3 Sơ đồ mạch in khối công suất 39

Trang 8

DANH MỤC CHỮ CÁI VIẾT TẮT

Memory

Bộ nhớ ROM có thể lập trình được bằng xung điện hoặc xóa được bằng tia cực tím

Trang 9

MỞ ĐẦU

- Mục tiêu đề tài:

Robocon viết tắt của chữ Robot Contest, là kì thi sáng tạo robot Châu Á

Thái Bình Dương được tổ chức hằng năm Đây là cuộc thi được khởi xướng tạiNhật Bản Từ năm 2002, nó trở thành cuộc thi thường niên do Hiệp hội Phát thanh

và Truyền hình Châu Á Thái Bình Dương tổ chức tại các nước thành viên mang tênABU Robocon để cổ vũ cho phong trào sáng tạo robot trong khu vực Thành viêntại mỗi nước được cử một đội là sinh viên của một trường đại học hay cao đẳngtham dự (ngoại trừ nước đăng cai tổ chức được cử 2 đội) Trong đa số trường hợp,đội ABU robocon được tuyển ra từ vòng thi trong nước do đài truyền hình thànhviên tổ chức với cùng chủ đề Là cuộc thi truyền hình có yếu tố kỹ thuật và tính đốikháng cao, Robocon có được sự quan tâm rất lớn của mọi thành phần trong xã hội

Để chọn đội tuyển tham gia cuộc thi Robocon quốc tế, Việt Nam tổ chứccuộc thi Robocon Việt Nam Robocon trở thành ngày hội thường niên của sinh viênViệt Nam, nơi tôn vinh năng lực sang tạo của thế hệ trẻ

Trường Đại học Vinh chúng ta đã tham gia cuộc thi Robocon toàn quốc vàonăm 2008 nhưng không thành công Kế tiếp niềm đam mê của cha anh là rất nhiềusinh viên khoa Điện tử - Viễn thông những chưa có điều kiện cũng như kinh nghiệm

để tham gia cuộc thi Do đó, mục tiêu của đề tài này là khơi dậy niềm đam mê điện

tử của các em sinh viên, tạo dựng một tiền đề để góp phần giúp cho khoa Điện tử Viễn thông có thể tham gia cuộc thi Robocon trong tương lai

Nhiệm vụ của đề tài

Nhiệm vụ của đề tài này là thiết kế một con robot có thể tự động đi theođường đi đã định trước bằng cách dò theo các vạch đen trên nền trắng mà không có

sự tác động trợ giúp bên ngoài

- Yêu cầu của đề tài

Trang 10

Yêu cầu đề tài là thiết kế một con robot hoạt động với tốc độ cao nhất, ổn định nhất.Robot có thể hoạt động linh hoạt, đi theo các loại đường từ đơn giản đến phức tạp.

PHẦN I

CƠ SỞ LÝ THUYẾT CHƯƠNG I GIỚI THIỆU HỌ VI ĐIỀU KHIỂN 8051 1.1 Sự ra đời của họ vi điều khiển 8051

Vào năm 1981 hãng Intel giới thiệu một số bộ vi điều khiển được gọi là

8051 Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ địnhthời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên mộtchíp Lúc ấy nó được coi là một “hệ thống trên chíp” 8051 là một bộ xử lý 8 bit cónghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm Dữ liệu lớnhơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý 8051 có tất cả 4 cổngvào - ra I/O mỗi cổng rộng 8 bit Mặc dù 8051 có thể có một ROM trên chíp cực đại

là 64 K byte, nhưng các nhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byteROM trên chíp

Vi điều khiển 8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sảnxuất khác sản xuất và bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điềukiện họ phải để mã lại tương thích với 8051 Điều này dẫn đến sự ra đời nhiều phiênbản của 8051 với các tốc độ khác nhau và dung lượng ROM trên chíp khác nhauđược bán bởi hơn nữa các nhà sản xuất Điều này quan trọng là mặc dù có nhiềubiến thể khác nhau của 8051 về tốc độ và dung lượng nhớ ROM trên chíp, nhưng tất

cả chúng đều tương thích với 8051 ban đầu về các lệnh Điều này có nghĩa là nếu taviết chương trình của mình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọiphiên bản bất kỳ khác mà không phân biệt nó từ hãng sản xuất nào

1.2 Kiến trúc chung của họ vi điều khiển 8051

Bộ vi điều khiển 8051có kiến trúc Harvard là thành viên đầu tiên của họ

8051 Hãng Intel ký hiệu nó là MCS 51

Trang 11

Họ vi điều khiển 8051 có một số đặc tính chung như sau:

Bảng 1.1 Các đặc tính của họ vi điều khiển 8051

hộ trợ các biến 1 bit cho phép quản lý bit trực tiếp trong các hệ logic và điều khiển

có yêu cầu xử lý bit Cũng như trong trong các vi xử lý 8bit, các lệnh của 8051 cócác opcode 8 bit, do đó số lệnh có thể lên đến 256 lệnh (thực tế có 255 lệnh, một

BUS CONTROL

SERIAL PORT

EXTERNAL

INTERRUPTS

CPU

ON - CHIP RAM

TIMER 0 TIMER 1

ADDRESS/DATA

TXD P0

ROM

P1 P2 P3 RXD

Trang 12

lệnh không được định nghĩa) Ngoài opcode, một số lệnh còn có thêm 1 hay 2 bytenữa cho dữ liệu hoặc địa chỉ Tập lệnh có 139 lệnh 1 byte, 94 lệnh 2 byte và 24 lệnh

3 byte Tập lệnh của 8051 được chia thành 5 nhóm: số học, logic, chuyển dữ liệu,chuyển điều khiển, nhóm lệnh rẽ nhánh

1.3.1 Chế độ đánh địa chỉ

Khi một lệnh được thực thi và lệnh này cần dữ liệu, một câu hỏi được đặt ra

là “Dữ liệu được chứa ở đâu” Câu trả lời cho câu hỏi này tạo ra các kiểu định địachỉ của 8051 Có nhiều kiểu định địa chỉ do vậy có nhiều kiểu câu trả lời cho câuhỏi trên chẳng hạn như: trong byte thứ 2 của 1 lệnh, trong thanh ghi R4, trong địachỉ trực tiếp hoặc trong bộ nhớ ngoài ở địa chỉ trong con trỏ dữ liệu

Các kiểu định địa chỉ là phần cần thiết cho toàn bộ tập lệnh của mỗi một bộ

vi xử lý, vi điều khiển Các kiểu định địa chỉ cho phép ta xác định rõ nguồn và đíchcủa dữ liệu theo nhiều cách khác nhau phụ thuộc vào tình huống lập trình Có 8 kiểuđịnh địa chỉ như sau:

1.3.1.1 Thanh ghi địa chỉ

8051 có 4 bank thanh ghi, mỗi bank có 8 thanh ghi đánh số từ R0 đến R7.Tại mỗi thời điểm chỉ có một bank thanh ghi được tích cực Muốn chọn bank thanhghi nào ta chỉ cần gán các bít nhị phân thích hợp vào RSI (PSW.4) và RS0 (PSW.3)trong thanh ghi trạng thái chương trình (PSW) Các lệnh sử dụng kiểu định địa chỉthanh ghi được mã hoá bằng cách dùng 3 bit thấp nhất của opcode để chỉ ra mộtthanh ghi bên trong của không gian địa chỉ logic này

Địa chỉ thanh ghiNgoài ra, một số thanh ghi đặc biệt như thanh ghi tích luỹ, con trỏ dữ liệu…cũng được xác định trong các lệnh nên không các bít địa chỉ Trong các lệnh nàythanh ghi tích luỹ được xác định là “A”, con trỏ dữ liệu là “DPTR”, thanh ghi đếmchương trình là “PC”, cờ nhớ là “C”, cặp thanh ghi tích luỹ B là “AB”

1.3.1.2 Địa chỉ trực tiếp

Mã lệnh n n n

Trang 13

Kiểu định địa chỉ trực tiếp được sử dụng để truy xuất các biến nhớ hoặc cácthanh ghi trên chip Một byte thêm vào tiếp theo opcode dùng để xác định địa chỉ.

Trong chế độ này, các thanh ghi bên trong 8051 được đánh địa chỉ trực tiếpbằng 8 bit địa chỉ nằm trong byte thứ hai của mã lệnh

Địa chỉ trực tiếp

Dù vậy, trình dịch cho phép gọi tên các thanh ghi chức năng đặc biệt (có địachỉ trực tiếp từ 80H đến FFH) ví dụ: P0 cho cổng 0, TMOD cho thanh ghi chế độTimer…

1.3.1.3 Địa chỉ gián tiếp

Làm cách nào để nhận biết một biến khi địa chỉ của biến đã được xác định,được tính toán hoặc được sửa đổi trong khi một chương trình dạng chạy Tìnhhuống này chỉ phát sinh khi ta quản lý các vị trí nhớ liên tiếp, các điểm nhập đượcchuỗi kí tự Các kiểu định địa chỉ thanh ghi hay trực tiếp không sử dụng được chocác tình huống này, do vậy ta cần có các địa chỉ toán hạng được biết trong thời gianhợp dịch

Giải pháp của 8051 là dùng kiểu định địa chỉ gián tiếp Các thanh ghi R0 vàR1 có thể hoạt động như các con trỏ (pointer) và nội dung của chúng chỉ ra địa chỉtrong RAM, nơi mà dữ liệu được đọc hay ghi Bit có ý nghĩa thấp nhất opcode xácđịnh thanh ghi nào (R0 hay R1) được dùng làm con trỏ Trong hợp ngữ của 8051,kiểu định địa chỉ gián tiếp được nhận biết dựa vào ký tự @ đặt trước R0 hay R1

R0 và R1 được dùng để chứa địa chỉ ô nhớ mà lệnh tác động đến Người taquy ước dùng dấu @ trước R0 và R1

Địa chỉ gián tiếp

1.3.1.4 Địa chỉ tức thời

Mã lệnh i

Trang 14

Khi toán hạng nguồn là một hằng số thay vì là một biến, hằng số này có thểđưa vào lệnh và đây là byte dữ liệu tức thời Các toán hạng tức thời được nhận biếtnhờ vào ký tự # đặt trước chúng Toán hạng này có thể là một hằng số học, một biếnhoặc một biểu thức số học sử dụng các hằng số.

1.3.1.5 Địa chỉ tương đối

Kiểu định địa chỉ tương đối chỉ được sử dụng cho các lệnh nhảy Mộtđịa chỉ tương đối (còn được gọi là offset) là một giá trị 8 bit có dấu Giá trị nàyđược cộng với bộ đếm chương trình để tạo ra địa chỉ của lệnh tiếp theo cầnđược thực thi

Định địa chỉ tương đối có điểm lợi là cung cấp cho chúng ta mà khôngphụ thuộc vào vị trí, nhưng lại có điểm bất lợi là các đích nhảy bị giới hạn trongtầm -128 byte đến 127 byte

1.3.1.6 Địa chỉ tuyệt đối

Kiểu định địa chỉ tuyệt đối chỉ được sử dụng với các lệnh ACALL vàAJMP Đây là các lệnh 2 byte cho phép rẽ nhánh chương trình trong trang 2Khiện hành của bộ nhớ chương trình bằng cách cấp 11 bit địa chỉ thấp (A0-A10)

để xác định địa chỉ đích trong trang mã Còn 5 bit cao hiện hành trong thanhghi đếm chương trình Vì vậy địa chỉ của lệnh theo sau lệnh rẽ nhánh và địa chỉcủa lệnh rẽ nhánh cần phải cùng trang mã 2 kbyte Để không bị giới hạn ta cóthể sử dụng lệnh LCALL, LJMP

1.3.1.7 Địa chỉ dài

Kiểu định địa chỉ dài chỉ được dùng cho các lệnh LCALL và LJMP cáclệnh 3 byte này chứa địa chỉ đích 16 bit Lợi ích của lệnh này là sử dụng hếttoàn bộ không gian nhớ chương trình 64K, nhưng lại có điểm bất lợi là lệnh dàiđến 3 byte

1.3.1.8 Địa chỉ tham chiếu

Địa chỉ tham chiếu dùng một thanh ghi cơ bản (hoặc thanh ghi đếmchương trình PC hoặc thanh ghi con trỏ dữ liệu DPTR) và địa chỉ Offset (trongthanh ghi tích luỹ A) để tạo địa chỉ được tác động cho các lệnh JMP hoặcMOVC Các bảng nhảy và bảng tìm kiếm dễ dàng được tạo ra để sử dụng địachỉ tham chiếu

Trang 15

Địa chỉ cơ bản Offset Địa chỉ được tác động

Direct : Địa chỉ 8 bit trong RAM nội (00H-0FH)

@Ri : Địa chỉ gián tiếp sử dụng thanh ghi R0 hoặc R1

Source : Toán hạng nguồn – có thể là Rn, direct hoặc @Ri

Destination : Toán hạng đích – có thể là Rn, direct hoặc @Ri

#data 16 : Hằng số 16 bit

Rel : Địa chỉ tương đối (offset) 8 bit

Addr11 : Địa chỉ 11 bit trong trang hiện hành

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

ADD A,data : Cộng trực tiếp 1 byte vào thanh ghi A

ADD A,@Ri : Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khai báo

trong Ri vào thanh ghi A

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

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

nhớ

Trang 16

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

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

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

INC DPTR : Tăng nội dung con trỏ dữ liệu lên 1

1.3.2.2 Nhóm lệnh logic

ANL A,data : AND nội dung thanh ghi A với dữ liệu trực tiếp

ANL A,@Ri : AND nội dung thanh ghi A với dữ liệu gián tiếp trong RAM.ANL A,#data : AND nội dung thanh ghi với dữ liệu tức thời

ANL data,#data : 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 : AND cờ nhớ với bù 1 bit trực tiếp

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

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

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

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

ORL data, #data : OR một dữ liệu trực tiếp với một dữ liệu tức thời

Trang 17

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

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

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

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

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

XRL data,#data : XOR một dữ liệu trực tiếp với một dữ liệu tức thời

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

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

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

MOV A,#data : Chuyển dữ liệu tức thời vào thanh ghi A

MOV Rn,data : Chuyển dữ liệu trực tiếp vào thanh ghi Rn

MOV Rn,#data : Chuyển dữ liệu tức thời vào thanh ghi Rn

MOV data,A : Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp.MOV data,Rn : Chuyển nội dung thanh ghi Rn vào một dữ liệu trực tiếp.MOV data,data : 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 : Chuyển một dữ liệu gián tiếp vào một dữ liệu trực tiếp.MOV data,#data : Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp

Trang 18

MOV @Ri,A : Chuyển nội dung thanh ghi A vào một dữ liệu gián tiếp.MOV @Ri,data : 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 : Chuyển một dữ liệu tức thời vào một dữ liệu gián tiếp

MOV DPTR,#data : Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu

MOV A,@A+DPTR : Chuyển byte bộ nhớ chương trình có địa chỉ là @A+DPTRvào thanh ghi A

MOV A,@A+PC : Chuyển byte bộ nhớ chương trình có địa chỉ là @A+PC vàothanh ghi A

MOVX A,@Ri : Chuyển dữ liệu ngoài (8 bit add) vào thanh ghi A

MOVX A,@DPTR : Chuyển dữ liệu ngoài (16 bit add) vào thanh ghi A

MOVX @RI,A : Chuyển nội dung A ra dữ liệu ngoài (8 bit add)

MOVX @DPTR,A : Chuyển nội dung A ra dữ liệu ngoài (16 bit add)

PUSH data : Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP

XCH A,Rn : Trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A

XCH A,data : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp

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

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

dữ liệu gián tiếp

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

ACALL addr11 : Gọi chương trình con dùng địa chỉ tuyệt đối

LCALL addr16 : Gọi chương trình con dùng điaụ chỉ dài

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

Trang 19

JNZ rel : Nhảy nếu A không bằng 0.

JB bit,rel : Nhảy tương đối nếu bit trực tiếp được đặt

JNB bit,rel : Nhảy tương đối nếu bit trực tiếp không được đặt

JBC bit,rel : Nhảy tương đối nếu bit trực tiếp được đặt, rồi xoá bit

CJNE A,data,rel : 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 : 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 : So sánh dữ liệu tức thời với nội dung thanh ghi Rn và nhảynếu không bằng

CJNE @Ri,#data,rel : So sánh dữ liệu tức thời với dữ liệu gián tiếp và nhảy nếukhông bằng

DJNZ Rn,rel : Giảm thanh ghi Rn và nhảy nếu không bằng

DJNZ data,rel : Giảm thanh dữ liệu trực tiếp và nhảy nếu không bằng

1.3.2.5 Nhóm 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 đúngkhẩu lệnh đã đưa ra

Nhảy có điều kiện:

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

1.4 Giới thiệu về vi điều khiển AT89C51

Trang 20

Đặ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 AT89C51 là một bộ vi điều khiển do hãng ATMEL sảnxuất với công nghệ CMOS có tốc độ cao vào công suất thấp với bộ nhớ Flash có thểlập trình được Tương thích với chuẩn công nghiệp của 8051 và 8052 về chân ra vàtập lệnh.

Các đặc trưng của AT89C51

- 4 KB EPROM bên trong

- 128 Byte RAM nội

- 4 Port xuất /nhập I/O 8 bit

- Giao tiếp nối tiếp

- 64 KB vùng nhớ mã ngoài

- 64 KB vùng nhớ dữ liệu ngoại

- Xử lý Boolean (hoạt động trên bit đơn)

- 210 vị trí nhớ có thể định vị bit

- 4s cho hoạt động nhân hoặc chia

- Hỗ trợ chuẩn giao tiếp SPI

1.4.1 Sơ đồ và chức năng các chân của AT89C51

AT89C51 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 là 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ầncủa các bus dữ liệu và bus địa chỉ

1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17

18 19

20 21

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

RESET XTAL1 XTAL2 RXD TXD INT0 INT1 T0 T1 WR RD GND

VCC

PSEN ALE/P EA/VP

Hình 1.2 Sơ đồ nguyên lý vi điều khiển AT89C51

Trang 21

Hình 1.3 Sơ đồ khối bộ vi điều khiển AT89C51

1.4.1.1 Các cổng xuất nhập

Cổng 0: Cổng 0 là cổng có 2 chức năng ở các chân 32 - 39 của 89C51.

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ó được kết hợp giữabus địa chỉ và bus dữ liệu

Cổng 1: Cổng 1 là cổng 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.Cổng 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ácthiết bị bên ngoài

Trang 22

Cổng 2: Cổng 2 là 1 cổng có tác dụng kép trên các chân 21- 28 được dùng

như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng

bộ nhớ mở rộng

Cổng 3: Cổng 3 là cổng có tác dụng kép trên các chân 10-17 Các chân của

cổng này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tínhđặc biệt của 8951 như ở bảng sau:

Bảng 1.3 Chức năng các chân port 3

1.4.1.2 Các ngõ tín hiệu điều khiển

- Ngõ tín hiệu PSEN (Program store enable):

PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chươngtrình mở rộng thường được nối đến chân OE\ (Output Enable) của EPROM chophép đọc các byte mã lệnh

PSEN ở mức thấp trong thời gian Microcontroller 89C51 lấy 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 thanhghi lệnh bên trong AT89C51 để giải mã lệnh Khi 89C51 thi hành chương trìnhtrong EPROM nội PSEN sẽ ở mức logic 1

- Ngõ tín hiệu điều khiển ALE (Address Latch Enable):

Khi AT89C51 truy xuất bộ nhớ bên ngoài, cổng 0 có chức năng là bus địachỉ và bus dữ liệu 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 kết nối chúng với IC chốt

Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vaitrò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động

Trang 23

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àm tín hiệu đồng bộ (clock) cho các phần khác của hệ thống.Chân ALE được dùng làm ngõ vào xung lập trình cho EPROM trong AT89C51

- Ngõ tín hiệu EA\(External Access):

Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0 Nếu ởmức 1, AT89C51 thi hành chương trình từ EPROM nội trong khoảng địa chỉ thấp 4Kbyte Nếu ở mức 0, 89C51 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 12V khi lập trình cho EPROM trong AT89C51

- Ngõ tín hiệu RST (Reset):

Ngõ vào RST ở chân 9 là ngõ vào Reset của AT89C51 Khi ngõ vào tín hiệunà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ữnggiá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự động khởi động

Trạng thái của tất cả các thanh ghi của 8051 sau khi khởi động hệ thống đượctóm tắt trong bảng sau:

Bảng 1.4 Nội dung các thanh ghi sau khi Reset

- Các ngõ vào bộ dao động:

Bộ dao động được được tích hợp bên trong AT89C51, khi sử dụngAT89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ Tần số thạch anhthường sử dụng cho AT89C51 là 12Mhz Chân 40 (Vcc) được nối lên nguồn 5V

Trang 24

Hình 1.4 Mạch dao động dùng thạch anh cho AT89C51

1.4.2 Cấu trúc bên trong của AT89C51

Các chip vi điều khiển dùng làm thành phần trung tâm trong các thiết kếhướng điều khiển Bộ nhớ thường có dung lượng bé hơn nhiều so với một hệ vi xử lý

Nó còn không có ổ đĩa và hệ điều hành Chương trình điều khiển phải thường trútrong ROM Chương trình vẫn được lưu giữ ngay cả khi mất điện Do lý do trên, chip

8051 có không gian bộ nhớ riêng cho chương trình và dữ liệu Cả bộ nhớ chươngtrình và bộ nhớ dữ liệu đều nằm trong chip 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 dunglượng tối đa là 64K cho bộ nhớ chương trình và 64K cho bộ nhớ dữ liệu

1.4.2.1 Bộ nhớ chương trình ROM

Bộ nhớ chương trình lưu giữ chương trình điều khiển chip 8051 Sau khi khởiđộng, hệ thống bắt đầu thực hiện chương trình từ địa chỉ 0000H Khi chươngtrì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 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.4.2.2 Bộ nhớ dữ liệu RAM

AT89C51 có 128 byte RAM ở bên trong chip RAM trong AT89C51 bao gồm

nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hoá từng bit, các bank

thanh ghi và các thanh ghi chức năng đặc biệt Họ 8051 có bộ nhớ theo cấu trúc

Trang 25

Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Chươngtrình và dữ liệu có thể chứa bên trong 89C51 nhưng AT89C51 vẫn có thể kết nốivới 64K byte bộ nhớ chương trình và 64K byte dữ liệu.

RAM bên trong AT89C51 được phân chia như sau:

- Các blank thanh ghi có địa chỉ từ 00H đến 1FH

- RAM địa chỉ hoá từng bít có địa chỉ từ 20H đến 2FH

- RAM đa dụng có địa chỉ từ 30H đến 7FH

- Các thanh ghi chức năng đặc biệt có địa chỉ từ 80H đến FFH

Byte Địa chỉ Bit Byte Địa chỉ Bit

7F

Vùng RAM đa mục đích

FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC

D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW

2F 7F 7E 7D 7C 7B 7A 79 78

2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P.3 2D 6F 6E 6D 6C 6B 6A 69 68

2C 67 66 65 64 63 62 61 60 A8 AF AC AB AA A9 A8 IE 2B 5F 5E 5D 5C 5B 5A 59 58

23 1F 1E 1D 1C 1B 1A 19 18 8D Không định địa chỉ bit TH1

22 17 16 15 14 13 12 11 10 8C Không định địa chỉ bit TH0

21 0F 0E 0D 0C 0B 0A 09 08 8B Không định địa chỉ bit TL1

20 07 06 05 04 03 02 01 00 8A Không định địa chỉ bit TL0 1F Bank 3 89 Không định địa chỉ bit TMOD

17 Bank 2 87 Không định địa chỉ bit PCON 10

0F Bank 1 83 Không định địa chỉ bit DPH

07 Bank 0 81 Không định địa chỉ bit SP

Trang 26

Dãy thanh ghi mặc định R0 - R7

RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT

Hình 1.5 Bản đồ bộ nhớ data trên chíp AT89C51

1.4.3 Các hoạt động chức năng chính trong AT89C51

Các bộ định thời dùng để tạo ra các khoảng thời gian khác nhau, dùng đểđếm sự kiện hoặc dùng để tạo tốc độ baud cho việc truyền thông nối tiếp Trong

8051 có hai bộ định thời là T0 và T1 Việc lựa chọn chế độ hoạt động cho các Timernày nhờ vào thanh ghi TMOD Còn việc điều khiển các Timer hoạt động nhờ vàothanh ghi TCON Có 4 chế độ hoạt động cho các Timer Chế độ 0 là chế độ địnhthời 13 - bit, chế độ 1 là chế độ định thời 16-bit, chế độ 2 là chế độ định thời tự nạplại 8 - bit, chế độ 3 là chế độ định thời chia sẻ và có hoạt động khác nhau cho từng

bộ định thời

Các Timer của 89C51 được truy xuất bởi việc dùng 6 thanh ghi chức năngđặc biệt như sau :

Bảng 1.5 Các thanh ghi chức năng đặc biệt điều khiển timer

1.4.3.2 Hoạt động ngắt

Có 5 nguyên nhân để tạo ra ngắt trong 8051 Đó là 2 ngắt ngoài, hai ngắt do

Trang 27

bộ định thời và một ngắt do cổng nối tiếp Khi ta thiết lập trạng thái ban đầu(sau khi khởi động), tất cả các ngắt đều bị vô hiệu hoá và sau đó chúng được chophép riêng rẽ bằng phần mềm.

Khi một ngắt được chấp nhận, giá trị được nạp cho bộ đếm chương trình đượcgọi là véc tơ ngắt Véc tơ ngắt là địa chỉ bắt đầu của trình phục vụ ngắt của các ngắttương ứng

Các véc tơ ngắt được cho ở bảng sau :

bộ định thời 1, ngắt do port nối tiếp, ngắt do bộ định thời 2 (đối với 8052)

1.4.3.3 Hoạt động Reset

AT89C51 được reset bằng cách giữ chân RST ở mức cao tối thiểu hai chu kỳmáy và sau đó chuyển về mức thấp Trạng thái của tất cả các thanh ghi sau khi reset

hệ thống như sau:

Bảng 1.7 Trạng thái các thanh ghi sau reset

Trang 28

PHẦN II PHÂN TÍCH VÀ THIẾT KẾ

CHƯƠNG II MỘT SỐ BỘ PHẬN CHỨC NĂNG CỦA ROBOT

Dựa trên mục tiêu, nhiệm vụ và yêu cầu của đề tài Robot của em thiết kế sẽ

có 2 bánh chủ động nằm ở phía sau được gắn vào 2 động cơ DC Phía trước là 1bánh xe có khả năng điều hướng cho robot

Để robot có thể dò đường theo các vạch đen thì phía trước robot cần lắp đặt

hệ thống cảm biến nhận vạch để phát hiện vạch đen và gửi thông tin về khối điềukhiển trung tâm xử lý

2.1 Hệ thống cảm biến nhận vạch

Có thể nói đây là phần quan trọng nhất trong 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 đã địnhtrước, bộ phận này phải có khả năng nhận biết vạch đen trên nền trắng, đồng thời cókhả năng nhận biết được các chỗ đường cong, ngã ba, ngã tư để đưa về bộ điềukhiển nhằm điều khiển robot đi theo con đường đã định sẵn

2.1.1 Nguyên lý cơ bản

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 Ánh sáng trắng là ánh sáng tổng hợp của 7 loại ánh sáng đơnsắc trên Sở dĩ chúng ta có thể thấy vật màu đỏ, vật kia màu vàng là do khi ánh sángtrắng chiếu tới, những ánh sáng màu khác bị hấp thụ, chỉ còn những ánh sang màu

Ngày đăng: 29/10/2015, 15:42

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Tống Văn On, Hồng Đức Hải, “Họ vi điều khiển 8051”, Nhà xuất bản khoa học xã hội, Hà Nội 2008 Sách, tạp chí
Tiêu đề: “Họ vi điều khiển 8051”
Nhà XB: Nhà xuất bảnkhoa học xã hội
[2] Nguyễn Tăng Cường, Phan Quốc Thắng, “Cấu trúc và lập trình họ vi điều khiển 8051”. Nhà xuất bản khoa học và kỹ thuật, Hà Nội 2004 Sách, tạp chí
Tiêu đề: “Cấu trúc và lập trình họ viđiều khiển 8051”
Nhà XB: Nhà xuất bản khoa học và kỹ thuật
[3] Ngô Đình Tập, “Lập trình bằng hợp ngữ”, Nhà xuất bản khoa học kỹ thuật, Hà Nội 1998 Sách, tạp chí
Tiêu đề: “Lập trình bằng hợp ngữ”
Nhà XB: Nhà xuất bản khoa học kỹthuật
[4] Atmel Corporation, “AT89C51 datasheet”, 2000 Sách, tạp chí
Tiêu đề: “AT89C51 datasheet”
[5] Kenneth J. Ayala, “The 8051 Microcontroller: Architecture, Programming, and Applications” Sách, tạp chí
Tiêu đề: “The 8051 Microcontroller: Architecture,Programming, and Applications

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w