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 1TRƯỜNG ĐẠI HỌC VINH
Khoa ®iÖn tö - viÔn th«ng
Trang 2MỤ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 32.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 4LỜ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 5Nguyễ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 6The 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 7DANH 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 8DANH 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 9MỞ ĐẦ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 10Yê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 11Họ 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 12lệ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 13Kiể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 14Khi 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 16SUBB 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 17ORL 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 18MOV @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 19JNZ 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
- 4s 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 21Hì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 22Cổ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 23Cá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 24Hì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 25Harvard: 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 26Dã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 27bộ đị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 28PHẦ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