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

Lập trình điều khiển trong chế tạo robot tự động

39 615 0

Đ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 39
Dung lượng 643,6 KB

Nội dung

Lập trình vi điều khiển sẽ tạo ra chương trình điều khiển cho các máy tự động này.Chương trình điều khiển có thể xuất ra tín hiệu số, mạch điện tử chuyển thành tín hiệu tương tự và điều

Trang 1

LỜI CẢM ƠN

Trong thời gian nghiên cứu và hoàn thành đề tài, tôi đã nhận được rất nhiều sự đóng góp và giúp đỡ của quý thầy cô, các bạn sinh viên và sự ủng hộ của tất cả những người thân, bạn bè Những sự ủng hộ đó đã giúp tôi rất nhiều

để hoàn thành đề tài của mình

Qua đây, em xin gửi lời cám ơn sâu sắc tới TS.Nguyễn Thế Lâm đã thường xuyên hướng dẫn, động viên và giúp đỡ em Tôi xin cám ơn những người bạn trong nhóm SP2, những người đã cùng tôi vượt mọi khó khăn, thử thách để hoàn thành công việc Em xin chân thành cám ơn các thầy cô giáo trong khoa Vật Lý, các bạn sinh viên đã động viên kịp thời và đặc biệt là có những ý kiến quý báu để em hoàn thành đề tài

Do đây lần đầu tiên tham gia nghiên cứu khoa học, đặc biệt là tiếp cận với công việc lập trình đầy mới mẻ và phức tạp, trình độ hiểu biết chưa sâu nên không tránh khỏi những thiếu sót, hạn chế Tôi rất mong nhận được nhiều

ý kiến đóng góp thiết thức để hoàn thiện hơn

Hà Nội, tháng 5 năm 2011

Sinh Viên

Chu Thị Quý

Trang 2

LỜI CAM ĐOAN

Em xin cam đoan đây là công trình nghiên cứu của riêng em Các số liệu, kết quả trong khóa luận là trung thực và chưa từng ai công bố trong bất

cứ công trình nghiên cứu nào khác

Sinh Viên

Chu Thị Quý

Trang 3

Chương 1: Giời thiệu chung về hợp ngữ và vi điều khiển AT89C52 6

Chương 2: Kỹ thuật lập trình vi điều khiển trong chế taọ Robot 13 Chương3: Lập trình điều khiển Robot tự động 21

Trang 4

MỞ ĐẦU

1 Lý do chọn đề tài

Trong quá trình chế tạo các máy móc tự động thì lập trình vi điều khiển

là phần việc không thể thiếu Lập trình vi điều khiển sẽ tạo ra chương trình điều khiển cho các máy tự động này.Chương trình điều khiển có thể xuất ra tín hiệu số, mạch điện tử chuyển thành tín hiệu tương tự và điều khiển các thiết bị, ngược lại nó có thể nhận tín hiệu từ bên ngoài để xử lý thông qua các cổng ( port) giao tiếp

Chúng ta có thể hình dung trong cỗ máy, phần cơ khí giúp tạo thành hình dáng thì phần điện tử và lập trình sẽ như bộ não để điều khiển những hoạt động Một ưu điểm vượt trội của lập trình vi xử lý đó là chương trình điều khiển có thể thay thế được rất nhiều mạch logic phức tạp với độ chính xác cao, điều này làm cho mạch điện tử đơn giản hơn và đỡ tốn kém trong qua trình chế taọ

Một chương trình điều khiển có thể được viết bằng nhiều ngôn ngữ lập trình khác nhau như Pascal, lập trình C, Assembly,……Với những ngôn ngữ lập trình cấp cao, nó có ưu điểm là dễ viết, dễ hiểu nhưng kích thước của chương trình sẽ lớn khi thực hiện những chương trình cho các máy phức tạp, việc điều khiển sẽ có nhiều Modul, lúc đó có thể kích thước của chương trình

sẽ lớn hơn dung lượng của chíp điều khiển Chính vì lý do đó, chúng ta có thể khắc phục bằng việc sử dụng những ngôn ngữ lập trình cấp thấp như Assembly để viết chương trình

Để một chương trình có thể chạy được, không phải chỉ có chương trình

là đủ, chúng ta còn cần để chíp vi điều khiển để có thể nạp chương trình đã viết vào đó Một chương trình điều khiển sau khi được dịch ra file Hecxa sẽ

Trang 5

được nạp vào chíp và chíp này sẽ được gắn với mạch điện tử Hiện nay, chúng

ta thấy rằng có rất nhiều họ vi điều khiển như 8051, 8048, AVR….Nhưng với quá trình thiết kế và chế tạo Robot, chúng tôi đã sử dụng chíp vi điều khiển AT89C52, đây là một chíp đơn có cấu trúc giống họ MCS51, loại chíp này khá phổ biến và thuận tiện khi giao tiếp

Ngày nay, các chíp vi điều khiển được sử dụng rộng rãi trong nhiều sản phẩm khác nhau, đặc biệt là những sản phẩm công nghệ cao như các thiết bị công nghệ, ngoại vi, máy tính, các thiết bị tự động,…

Với mong muốn vận dụng những kiến thức về kỹ thuật điện tử và lập trình, đặc biệt là tiếp cận với lập trình điều khiển chúng tôi đã tham gia chế tạo thành công một số Robot để tham gia Robocon 2011 vừa qua Trong chế tạo Robot đòi hỏi kỹ thuật tổng hợp gồm nhiều phần khác nhau, trong khóa

luận tốt nghiệp của mình, tôi chỉ trình bày một phân nhỏ là : “Lập trình điều

khiển trong chế tạo Robot ”

2 Mục tiêu nghiên cứu đề tài

Nghiên cứu về một lĩnh vực mới, lĩnh vực lập trình điều khiển, áp dụng vào thực tế để có thể chế tạo ra một số thiết bị điều khiển tự động Đồng thời nắm bắt được một số công nghệ chế tạo Robot nhằm phục vụ nhu cầu tự động hóa của xã hội trong tương lai

Trang 6

CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ HỢP NGỮ VÀ VI

ĐIỀU KHIỂN AT89C52

1 Giới thiệu tổng quan về hợp ngữ.

Hợp ngữ ( Assembly language) là ngôn ngữ của máy tính, có vị trí ở giữa ngôn ngữ máy và ngôn ngữ cấp cao Ngôn ngữ Assembly gắn liền với ngôn ngữ nhị phân của máy tính, sử dụng các từ đại diện ngắn gọn thay cho các con số nhị phân dài dòng khó hiểu và sẽ được trình dịch hợp ngữ dịch trực tiếp sang mã máy Ngôn ngữ Assembly sử dụng các từ có tính gợi nhớ, các từ viết tắt để ta dễ ghi nhớ các chỉ thị phức tạp và làm cho việc lập trình bằng Assembly dể dàng hơn Mục đích của việc dùng từ gợi nhớ là nhằm thay thế việc lập tình trực tiếp bằng ngôn ngữ máy được sử dụng trong các máy tính đầu tiên thường gặp nhiều lỗi và tốn thời gian Chương trình viết bằng Assembly sẽ có tốc độ cao nhất và dung lượng nhỏ nhất Các ngôn ngữ cấp cao như Pascal , C, hay Visual Basin sử dụng các từ và các phát biểu dễ hiểu đối với con người Một dòng lệnh của ngôn ngữ lập trình cấp cao khi được biên dịch sang hợp ngữ sẽ bao gồm rất nhiều dòng lệnh Ngôn ngữ máy (machine language) là ngôn ngữ ở dạng nhị phân của máy tính Một chương trình được viết bằng ngôn ngữ máy tính là một chuỗi các byte nhị phân biểu diễn các lệnh mà máy tính thực thi được

Như ta đã nói ở trên, hợp ngữ thay thế các mã nhị phân của ngôn ngữ máy tính bằng các mã gợi nhỡ giúp ta dễ nhớ và dễ lập trình hơn.Một chương trình viết bằng hợp ngữ không thể được thực thi trực tiếp bởi máy tính Sau khi được viết xong, chương trình này phải qua quá trình biên dịch thành ngôn ngữ máy Phụ thuộc vào mức độ phức tạp của môi trường lập trình, việc dịch

Trang 7

này có thể bao gồm một hoặc nhiều bước tạo ra sản phẩm là chương trình ngôn ngữ máy thực thi được

Như vậy, một chương trình viết bằng hợp ngữ ( gọi tắt là chương trình hợp ngữ) là chương trình được viết dưới dạng các ký hiệu, các mã gợi nhớ, Trong đó mỗi phát biểu tương ứng với một lệnh ngôn ngữ máy Các chương trình được thực thi trực tiếp bởi máy tính Một chương trình viết bằng ngôn ngữ máy ( gọi tắt là ngôn ngữ máy) là chương trình chứa các mã nhị phân biểu diễn các lệnh của máy tính Các chương trình ngôn ngữ máy thường được gọi là chương trình đối tượng hay mã đối tượng được thực thi bởi máy tính

2 Vi điều khiển AT89C52

2.1 Sơ đồ khối

Sau khi lập trình một chương trình điều khiển dưới dạng File Hecxa sẽ được nạp vào chíp vi điều khiển AT89C52 để gắn với mạch điện tử, ta có sơ

đồ khối như sau:

H 1.1: Sơ đồ khối của chương trình dung AT89C52

Một chương trình sau khi được viết dưới dạng file hecxa trên máy vi tính sẽ được nạp vào chíp vi điều khiển thông qua một bộ nạp chíp Sau đó, chíp vi điều khiển sẽ được gắn trực tiếp vào mạch điện tử Chíp vi điều khiển AT89C51 sẽ thông qua các mạch điện tử, điều khiển mọi hoạt động của động

Chương trình

Trang 8

cơ robot trong quá trình làm việc Như vậy, chíp vi điều khiển có vị trí rất quan trọng, nó có tác dụng như bộ não của robot vậy

Cấu tạo của vi điều khiển dưới dạng sơ đồ khối:

Xung đếm Các ngắt Thiết bi nối Thiết bị Thời gian ngoài tiếp song song

H1.2: Sơ đồ khối cấu tạo của vi điều khiển AT89C52

Bộ định

thời

Điều khiển ngắt

Giao tiếp nối tiếp

Giao tiếp song song

Bộ nhớ RAM

Bộ nhớ ROM CPU Các bus địa chỉ, dữ liệu, điều khiển

Trang 9

2.2 Đặc điểm chung của vi điều khiển AT89C52

Vi điều khiển AT89C52 mà chúng ta sử dụng có những đặc điểm sau:

- 4KB ROM bên trong

- 256 Byte ngoài

- 4 Port xuất nhập dữ liệu I/O

- 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ý Bôlean

2.3 Sơ đồ chân của vi điều khiển At89C52

Trên sơ đồ chân trên có các nhóm chân sau:

Trang 10

2.3.2 Nhóm chân điều khiển

Nhóm này còn phân biệt các tín hiệu vào, ra

a Nhóm tín hiệu vào điều khiển

+ Xtal l ( chân số 18), Xtal 2( chân số 19): nối tinh thể thạch anh cho máy phát xung nhịp chu trình

+ RST( Reset): (chân số 9) nối chuyển mạch để xóa về trạng thái ban đầu hay khởi động lại

+ /EA/CPP: (chân số 31) chọn bộ nhớ ngoài (nối đất) hay chọn nhớ trong (nối nguồn nuôi 5V)

+ T2 hay P1.0 (chân số 1) tín hiệu vào đếm cho Timer2/ Counter2 của 89C52

+ T2EX: (chân số 2) tín hiệu vào ngắt ngoài 2 cho 89C52

+ /INT 0 hay P3.2: (chân số 12) tín hiệu vào gây ngắt ngoài 0 cho 8051 + /INT 1 hay P3.3: (chân số 13) tín hiệu vào gây ngắt ngoài 1 cho 8051 + T 0 hay P3.4: (chân số 14) tín hiệu vào đếm cho Timer0/ Counter0 + T 1 hay P3.5: (chân số 15) tín hiệu vào đếm cho Timer1/ Counter 1

b Nhóm tín hiệu ra điều khiển

+ ALE//PROG: ( chân số 30) dùng để đưa tín hiệu chốt địa chỉ (ALE) khi có nhớ ngoài hay điều khiển ghi chương trình /PROG

+ /PSEN: ( chân số 29) dùng để đưa tín hiệu điều khiển đọc bộ nhớ chương trình ROM ngoài

+ /WR hay P3.6: (chân số 29) dùng để đưa tín hiệu ghi dữ liệu vào bộ nhớ ngoài

+ /RP hay P3.7:( chân số 17) để đưa tín hiệu đọc dữ liệu từ bộ nhớ ngoài

Trang 11

c Nhóm các tín hiệu địa chỉ, dữ liệu

+ Cổng vào, ra địa chỉ/ dữ liệu P0 hay P0.0-P0.7: ( chân số 39-32) dùng

để trao đổi tín hiệu về dữ liệu D0-D7, hoặc đưa ra các địa chỉ thấp (A0-A7) theo chế độ dồn kênh (kết hợp với tín hiệu chốt địa chỉ ALE)

+ Cổng vào ra địa chỉ/ dứ liệu P2 hay P2.0-P2.7: ( chân số 21-28) dùng

để trao đổi tin song song về dữ liệu ( D0-D7) hoặc đưa ra địa chỉ cao ( A15)

A8-+ Cổng vào ra dữ liệu P1 hay P1.0-P1.7: ( chân số 1-8) dùng để trao đổi tin song song dữ liệu ( D0-D7)

+ Cổng vào, ra P3 hay P3.0-P3.7: ( chân số 10-17)

- P3.0: ( chân số 10) đưa ra tín hiệu nhận tin nối tiếp RXD

- P3.1: ( chân số 11) đưa ra tín hiệu truyền tin nối tiếp TXD

- /INT0 hay P3.2: ( chân số 12) tín hiệu vào gây ngắt 0 của VĐK

- /INT1 hay P3.3: ( chân số 13) tín hiệu vào gây ngắt 1 của VĐK

- T0 hay P3.4: ( chân số 14) tín hiệu vào đếm cho Timer0/ Counter0 cho VĐK 8051/8051

- T1 hay P3.5: ( chân số 15) tín hiệu vào đếm cho Timer1/ Counter1 cho VĐK 8051/8052

- /WR hay P3.6: ( chân số 16) để đưa tín hiệu ghi dữ liệu vào bộ nhớ ngoài

- /RD hay P3.7: ( chân số 17) để đưa tín hiệu độ dữ liệu vào bộ nhớ ngoài

- T2 hay P1.0: ( chân số 1) tín hiệu vào đếm cho Timer2/ Counter2 cho VĐK 8052

- T2EX: ( chân số 1) tín hiệu vào gây ngắt 2 của VĐK 8052

Ngoài các tín hiệu chuyên dùng trên, cổng vào/ ra P3 này còn dùng để trao đổi tin về dữ liệu D7-D0

Trang 12

1.2.4 Vi điều khiển AT89C52

H1.4: Vi điều khiển AT89C52

H1.5: Vi điều khiển AT89S51 H1.6: Vi điều khiển AT89C2051

Trang 13

CHƯƠNG 2: KỸ THUẬT LẬP TRÌNH VI ĐIỀU KHIỂN

TRONG CHẾ TẠO ROBOCON

1.Trình dịch hợp ngữ

Trình dịch hợp ngữ ( trình biên dịch) là chương trình dùng để dịch một chương trình hợp ngữ thành chương trình ngôn ngữ máy Chương trình ngôn ngữ máy ( mã đối tượng) có thể ở dạng địa chỉ tuyệt đối ( Absolute) hoặc ở dạng tái định vị ( Relocatetable) Một phần quan trọng trong quá trình dịch là ghi nhận lại các lỗi có trong chương trình nguồn để thông báo lại cho người viết chương trình Trong dạng sau, việc liên kết được yêu cầu để thiết lập địa chỉ tuyệt đối từ đó chương trình được thực thi

Ngày nay, với điều kiện phát triển của khoa học kỹ thuật, đặc biệt là sự phát triển mạnh mẽ của công nghệ thông tin, nhiều phần mềm ( Software) cho phép tạo cả tệp tin nguồn và biên dịch ra file hecxan một cách dễ dàng Và một trong số những phần mềm như thế, đó là phần mềm READS51 mà tôi sẽ giới thiệu cho các bạn ngay sau đây Phần mềm READS51 là phần mềm lập trình hợp ngữ khá phổ biến hiện nay, phần mềm này sẽ chạy trực tiếp trên windown Ưu điểm lớn nhất của chương trình là cho phép thực hiện các thao tác một cách dễ dàng, hơn nữa bạn có thể viết chương trình trực tiếp bằng Assembly hay C Cách thức sử dụng tương đối đơn giản, sau khi cài đặt, bạn

có thể khởi động từ menu Start\Programes\Rigel\Reads51\Reads51, Giao

diện chương trình cũng tương tự như nhiều phần mềm khác bao gồm một cửa

sổ cho phép viết chương trình điều khiển khi chọn chế độ BUILD MODE và đặc biệt bạn có thể kiểm tra tính đúng đắn của chương trình bằng cách chọn chế độ RUN/DEBUG mode, kết quả thực hiện chương trình được hiển thị

Trang 14

trực tiếp trên Simulation ( mô phỏng) dưới dạng các LED hiển thị Ngoài ra, phần mềm còn có một hệ thống các câu lệnh tra cứu tương đối đầy đủ dưới dạng file trợ giúp ( help file) Giao diện chương trình như hình dưới đây:

H2.1 Giao diện của chương trình Reads51

Với phần mềm lập trình READS51 này, bạn có thể trực tiếp lập trình trên cửa sổ giao diện và cũng có thể trực tiếp kiểm tra được đúng hay sai Đây

là điều rất thuận lợi trong quá trình lập trình điều khiển

Trang 15

2 Một số chương trình mẫu

Trong phần này ta nghiên cứu một số chương trình mẫu, minh họa cho lập trình vi điều khiển, nhưng chương trình này tuy đơn giản nhưng đó là những ví dụ cần thiết cho những ai mới bắt đầu tìm hiểu lĩnh vực này

Chương trình nháy 7 LED:

Để có thể thiết kế một bộ mạch đèn nhấp nháy 7LED Bình thường ta

sẽ phải tốn rất nhiều các cổng logic Nhằm hạn chế tối đa số lượng các cổng logic này, chúng ta sẽ thiết kế một chương trình điều khiển đèn như sau:

ORG 00H

MOV A,#01H ; Ghi nội dung 1 vào thanh chứa A

LOOP: RL A ; Dịch trái 1 bit

MOV P2,A ; Xuất nội dung thanh chứa A ra P2

LCALL DELAY ; Gọi thủ tục trễ

SJMP LOOP ; Quay lại vòng lặp

Tạo sóng vuông sử dụng các ngắt do bộ định thời

Viết một chương trình sử dụng bộ định thời 0 và các ngắt để tạo ra một sóng vuông tần số 10KHz trên chân P1.0:

ORG 00H ; Điểm nhập reset

LJMP MAIN ; Nhảy qua khỏi các vector ngắt

ORG 000BH ; Vector ngắt của bộ định thời

Trang 16

TOISR:CPL P0.1 ; Lấy bù

RETS

ORG 0030H ;Điểm nhập của chương trình chính

MAIN:MOV TMOD,#02H ;Chế độ 2 của bộ định thời

MOV TH0,#-50 ;Trì hoãn 50

SETB TR0 ;Bộ định thời hoạt động

MOV IE,#82H ;Cho phép ngắt do bộ định thời 0

SJMP $ ;Không làm gì

END

Đây là một chương trình hoàn chỉnh và có thể nạp cho EPROM sau khi

chuyển sang mã nháy Ngay sau khi Reset hệ thống, bộ đếm chương trình PC

được nạp 0000H Lệnh đầu tiên thực hiện là “LJMP MAIN”, lệnh này rẽ

nhánh đến chương trình ở địa chỉ 0030H trong bộ nhớ chương trình Lệnh “MOV IE,#82H” cho phép các ngắt do bộ định thời 0 tạo ra Mỗi lần

- Định thời trong một khoảng thời gian

- Tạo tốc độ Baud cho Port nối tiếp chíp

Việc đếm sự kiện dùng để xác định số lần xuất hiện của một sự kiện

hơn là đo thời gian giữa các sự kiện Đó là tạo ra một kích thích từ bên ngoài,

cung cấp một chuyển trạng thái từ 1 xuống 0 tới một chân của vi điều khiển

Trang 17

Chương trình sau sẽ chuyển tín hiệu xuất ra ở chân P1.0 từ 1 về 0 khi chân P3.4 chuyển trạng thái 5 lần từ 1 về 0:

ORG 8100H

MOV TMOD, #05H ; Chọn chế độ tự nạp lại 8 bit và chức

năng đếm SETB TR0 ; Khởi động bộ định thời

SETB P1.0

AGAIN:MOV A, TH0

MOV R6, TL0 ; Số lần xuất hiện sự kiện được lưu

trong R6 CJNE A, TH0, AGAIN

MOV R7, A

CJNE R6, #5, AGAIN

TEST: CLR P1.0

END

Chương trình dò đường cho Robot:

Một chương trình dò đường cho một robot đơn giản có thể thực hiện như chương trình sau:

Trang 19

DELAY:MOV TMOD, #01H ; Chế độ định thời 16 bít

MOV R7, #200 ; Nạp giá trị 100 cho R7

LOOP1:MOV TH0, #high (-5000) ; Bye cao của -5000

MOV TL0, #low (-5000) ; Bye thấp của -5000

SETB TR0 ; Bắt đầu định thời

WAIT:JNB TF0, WAIT ; Chờ khi cờ tràn TF0=1

CLR TR0 ; Bộ định thời ngừng hoạt động CLR TF0 ; Xóa cờ tràn TF0

DJNZ R7, LOOP1 ; Giamr R7 và nhảy khi R7=0 RET

END

Ngày đăng: 30/11/2015, 22:11

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Tống Văn On- Hoàng Đức Hải, Họ vi điều khiển 8051, NXB Lao động- Xã Hội Khác
[2] Ngô Diêp Tập, Kỹ thuật gép nối máy tính, NXB Khoa học và Kỹ Thuật,2011 Khác
[3] Ngô Diên Tập, Lập trình xử lý trong đo lường và điều khiển, NXB Khoa học va kỹ thuật, 2001 Khác
[4] Nguyễn Minh San- Hoàng Đức Hải, Cẩm nang lập trình, NXB Giáo dục, 1999.[ 5 ] Hoàng Đức Hải và Tống Văn On, Hợp ngữ và lập trình ứng dụng tập 1 , NXB Giáo Dục, 2001 Khác
[6] Phương Lan, Kỹ xảo lập trình VB6, NXB Lao Động và Xã Hội Khác
[7] Đặng Bình Phương , Nhập môn lập trình, NXB Đại Học Quốc Gia, 2005 Khác
[8] T.s Lê Hữu Lập, Th.s Nguyễn Duy Phương, Giáo trình Kỹ Thuật lập trình, NXB Học viện Bưu Chính Viễn Thông, 2002 Khác
[9] Nguyễn Đình Tê, Hoàng Đức Hải, Giáo trình lý thuyết và bài tập ngôn ngữ C, Nhà xuất bản Giáo dục, 1999 Khác
[10] Ngô Văn Viện, Giúp Tự Học Lập Trình Với Ngôn Ngữ C, NXB Đồng Nai, 2002 Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w