MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 3
Chương 1: GIỚI THIỆU VỀ TAY MÁY CÔNG NGHIỆP 4
1.1. SƠ LƯỢT QUÂ TRNH PHÂT TRIỂN CỦA ROBOT CNG NGHIỆP (IR : INDUSTRIAL ROBOT):
1.2. ỨNG DỤNG ROBOT CNG NGHIỆP TRONG SẢN XUẤT :
1.3. CÂC KHÂI NIỆM VÀ ĐỊNH NGHĨA VỀ ROBOT CNG NGHIỆP :
1.3.1. Định nghĩa robot cng nghiệp :
1.3.2. Bậc tự do của robot (DOF : Degrees Of Freedom) :
1.3.3. Hệ toạ độ (Coordinate frames) :
1.3.4. Trường cng tâc của robot (Workspace or Range of motion):
1.4. CẤU TRÚC CƠ BẢN CỦA ROBOT CNG NGHIỆP :
1.4.1. Câc thănh phần chnh của robot cng nghiệp :
1.4.2. Kết cấu của tay mây :
1.5. PHĐN LOẠI ROBOT CNG NGHIỆP :
1.5.1. Phđn loại theo kết cấu :
1.5.2. Phđn loại theo hệ thống truyền động
1.5.3. Phđn loại theo ứng dụng :
1.5.4. Phđn loại theo câch thức và đặc trưng của phương pháp điều khiển :
Chương 2: PHÂN TÍCH VÀ CHỌN PHƯƠNG ÁN THIẾT KẾ
2.1.TNH LINH HOẠT CỦA MỘT TAY MÂY CNG NGHIỆP:
2.1.1.Phđn tch một số khđu , khớp c trong cơ kh:
2.1.2.Một số kết cấu tay máy điển hnh:
2.2. LỰA CHỌN PHƯƠNG ÂN THI CNG:
2.2.1.Tnh thực tế của một đề ân:
2.2.2.Đề ân thiết kế tay mây c 3 bậc tự doRRR)
2.2.3. Một số tiền đề để thực hiện đề ân c hiệu quả:
Chương 3: THIẾT LẬP PHƯƠNG TRÌNH ĐỘNG HỌC CHO CƠ CẤU
3.1.LÝ THUYẾT MỞ ĐẦU:
3.1.1.Mối quan hệ giữa câc khđu khớp trong tay mây:
Chương 4: THIẾT KẾ PHẦN CƠ TÍNH TOÁN SỨC BỀN CHI TIẾT MÁY
4.1.GIỚI THIỆU VỀ VIỆC THIẾT KẾ TAY MÂY
4.1.1.Câch thức truyền động vă phạm vi lăm việc
4.1.2.Một số chi tiết chnh:
4.1.3.Động cơ bước:
4.1.4.Phđn tch động học tay mây:
4.2.NGUYÍN LÝ, CƠ CẤU TRUYỀN ĐỘNG CỦA TAY MÂY:
4.2.1.Nguyín lý hoạt động của tay mây:
4.2.2.Câc thănh phần của tay mây 3 bậc tự do:
4.2.3.Khđu thứ nhất:
4.2.4.Khđu thứ hai:
4.2.5. Khđu thứ 3:
4.2.6.Khớp 3+Cơ cấu kẹp
4.2.7.Tnh chọn ổ lăn:
:4.2.8. Tnh toân trục:
Chương 5: THIẾT KẾ CÁC MODUL ĐIỆN ĐIỀU KHIỂN
5.1.GIỚI THIỆU VI ĐIỀU KHIỂN:
5.1.1. Tổng quan về kỹ thuật vi điều khiển:
5.1.2.Chức năng các chân vi điều khiển:
5.1.3.Tổ chức bộ nhớ của bộ vi điều khiển 8051:
5.1.4. Cng tắc Reset:
5.1.5. Hoạt động của bộ định thời
5.1.6. Hoạt động của ngắt:
5.1.7. Câc ngắt của AT89C51:
5.2.THIẾT KẾ PHẦN ĐIỆN TỬ ĐIỀU KHIỂN TAY MÂY:
5.2.1. Mạch nguồn cho cơ hệ:
5.2.2. Mạch vi điều khiển:
5.2.3. Mạch giao tiếp mây tnh:
5.2.4 Modul cng suất:
5.2.5 Mạch cng tắc hănh trnh vă băn phm:
Chương 6: CHƯƠNG TRNH ĐIỀU KHIỂN
TÀI LIỆU THAM KHẢO
LỜI NÓI ĐẦU
Thế kỷ 21 là thế kỷ của khoa học kỹ thuật hiện đại và tiên tiến, nó đi sâu vào toàn bộ đời sống con người trên trái đất, giúp con người trong mọi lĩnh vực, nó thay đổi cơ bắp con người từ những công việc đơn giản đến những công việc phức tạp, trong đó có ngành cơ điện tử .
Sự đi lên của ngành cơ khí gắn liền với sự ứng dụng công nghệ mới. Để đáp ứng nhu cầu ngày càng cao của xã hội và tiếp cận nền khoa học kỹ thuật trong tương lai, thì nền tảng của ngành cơ điện tử mà chúng em được các thầy, cô truyền đạt và nghiên cứu là cơ sở ban đầu để chúng em tiếp thu và trang bị những kiến thức cao hơn nữa, để làm chủ những máy móc công cụ hiện đại .
Đồ án tốt nghiệp mà chúng em được giao là “Thiết kế tay máy 3 bậc tự do ”
Trong quá trình thiết kế đồ án với sự hướng dẫn tận tình của thầy cô giáo và nỗ lực của bản thân, đến nay nhiệm vụ của chúng em đã hoàn thành, mặc dù rất cố gắn trong quá trình tìm hiểu, tính toán và thiết kế nhưng chắc chắn không thể tránh khỏi được những sai sót. Chúng em rất mong được sự chỉ bảo của các thầy giáo trong bộ môn để đồ án được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn sự quan tâm hướng dẫn tận tình của thầy:
Trần Đnh Sơn vă câc thầy, cô giáo trong khoa cơ khí trường Đại học Bách Khoa Đà Nẵng
Chúng em xin hứa sau khi bảo vệ thành công đồ án tốt nghiệp ra trường sẽ tiếp tục tìm tòi học hỏi, kết hợp giữa lý thuyết với thực tế để hoàn thành tốt nhiệm vụ được giao. Một lần nữa chúng em xin chân thành cảm ơn sự động viên của ba mẹ, sự giúp đở của các bạn trong lớp đã chỉ bày để hoàn thành tốt đồ án này!!!
79 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3532 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Thiết kế tay máy 3 bậc tự do, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ip.
5.1.1.2 Lịch sử phát triển của vi điều khiển:
Bộ vi điều khiển thực ra là một loại vi xử lí trong tập hợp các bộ vi xử lý nói chung. Bộ vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 1970 do sự phát triển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-Oxide-Semiconductor), mức độ tích hợp của các linh kiện bán dẫn trong một chip ngày càng cao.
5.1.1.3 Cấu trúc bên trong của bộ vi điều khiển:
IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặt điểm sau :
4 kbyte ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)
128 byte RAM
4 port I/0 8 bit
Hai bộ định thời 16 bits
Giao tiếp nối tiếp
64KB không gian bộ nhớ chương trình ngoài l
64 KB không gian bộ nhớ dữ liệu ngoài
bộ xử lí luận lí (thao tác trên các bit đơn)
210 bit được địa chỉ hóa
Bộ nhân / chia 4s
TXD* RXD*
T1*
T2*
P0 P1 P2 P3
INT\*1
INT\*0
TIMER2
TIMER1
PORT nối tiềp
EA\ RST PSEN ALE
Các ́thanh ghi khác
128 byte Ram
Rom
4K-8051
OK-8031
Timer1
Timer2
Điều khiển ngắt
Điều khiển bus
CPU
Port nối tiếp
Các port I\O
Tạo dao động
Hình 5.1. Cấu trúc bên trong của họ 8051
CPU(Central processing unit) là phần chính của vi điều khiển 8051/8031:
Thanh ghi tích lũy A
Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
Đơn vị logic học (ALU : Arithmetic Logical Unit )
Từ trạng thái chương trình (PSW : Prorgam Status Word)
Bốn băng thanh ghi
Con trỏ ngăn xếp
Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời gian và logic.
Bộ dao động: tạo tín hiệu giữ nhịp cho CPU.
Bộ điều khiển ngắt: xữ lý các tín hiệu ngắt và các biến cố bên ngoài.
Timer 1,2: Hai bộ định thời 16 bit hoạt động như bộ đếm.
Port 0, Port 1, Port 2, Port 3: giao tiếp với các thiết bị ngoại vi.
Port nối tiếp: Giao tiếp với computer, ứng dụng trong mạng VĐK, thông qua cổng com của máy tính.
Các thanh ghi: dùng để lưu trử data trong quá trình xử lý.
5.1.2.Chức năng các chân vi điều khiển:
Hình 5.2. Sơ đồ chân AT89C51.
Vi điều khiển 8051 có 32 trong 40 chân có chức năng như là các cổng I/O, trong đoa 24 chân được sử dụng với hai mục đích. Nghĩa là ngoài chức năng cổng I/O, mỗi chân có công dụng kép này có thể là một đường điều khiển của Bus địa chỉ hay Bus dữ liệu hoặc là mỗi chân hoạt động một cách độc lập để giao tiếp với các thiết đơn bit như là công tắc, LED, transistor…
Port0: là port có 2 chức năng ở trên chân từ 32 đến 39 của MC 8051. Trong các thiết kế cỡ nhỏ không dùng bộ nhớ ngoài, P0 được sử dụng như là những cổng I/O. Còn trong các thiết kế lớn có yêu cầu một số lượng đáng kể bộ nhớ ngoài thì PO trở thành các đường truyền dữ liệu và 8 bit thấp của bus địa chỉ.
Port1 : Port1 là một port I/O chuyên dụng trên các chân 1-8 của MC8051. Chúng được sử dụng với một múc đích duy nhất là giao tiếp với các thiết bị ngoài khi cần thiết.
Port2 : Port2 là một cổng có công dụng kép trên các chân 21 – 28 của MC 8051. Ngoài chức năng I/O, các chân này dùng làm 8 bit cao của bus địa chỉ cho những mô hình thiết kế có bộ nhớ chương trình ROM ngoài hoặc bộ nhớ dữ liệu RAM có dung lượng lớn hơn 256 byte.
Port3 : Port3 là một cổng có công dụng kép trên các chân 10 – 17 của MC 8051. Ngoài chức năng là cổng I/O, những chân này kiêm luôn nhiều chức năng khác nữa liên quan đến nhiều tính năng đặc biệt của MC 8051, được mô tả trong bảng sau :
Bit
Tên
Chức năng chuyển đổi
P3.0
RxD
Nhận data cho port nối tiếp.
P3.1
TxD
Xuất data cho port nối tiếp
P3.2
INT0
Ngắt ngoài 0.
P3.3
INT1
Ngắt ngòai 1.
P3.4
T0
Ngỏ vào ngắt ngoài 0.
P3.5
T1
Ngỏ vào của timer 1.
P3.6
WR
Tín hiệu ghi bộ nhớ ngoài.
P3.7
RD
Tín hiệu đọc bộ nhớ dữ liệu ngoài.
PSEN (Program Store Enable ) : 8051 có 4 tín hiệu điều khiển. PSEN là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép truy xuất bộ nhớ chương trình mở rộng và thường được nối đến chân OE (Output Enable) của một EPROM để cho phép đọc các byte mã lệnh của chương trình. Tín hiệu PSEN ở mức thấp trong suốt phạm vi quá trình của một lệnh.
PSEN sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhị phân của chương trình được đọc từ EPROM qua bus và được chốt vào thanh ghi lệnh của 8051 để giải mã lệnh. Khi thi hành chương trình trong ROM nội PSEN sẽ ở mức cao.
ALE (Address Latch Enable ) :
ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nữa đầu của chu kỳ bộ nhớ. Sau đó, các đường Port 0 dùng để xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của chu kỳ bộ nhớ.
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à nguồn xung nhịp cho các hệ thống. Nếu xung trên 8051 là 12MHz thì ALE có tần số 2MHz. Chân này cũng được làm ngõ vào cho xung lập trình cho EPROM trong 8051.
EA (External Access) :
Tín hiệu vào EA trên chân 31 thường được nối lên mức cao (+5V) hoặc mức thấp (GND).
RST (Reset)
Ngõ vào RST trên: chân 9 là ngõ reset của 8051. Khi tín hiệu này được đưa lên mức cao (trong ít nhất 2 chu kỳ máy ), các thanh ghi trong 8051 được đưa vào những giá trị thích hợp để khởi động hệ thống.
OSC:
Như đã thấy trong các hình trên, 8051 có một bộ dao động trên chip. Nó thường được nối với thạch anh giữa hai chân 18 và 19. Tần số thạch anh thông thường là 12MHz.
POWER:
8051 vận hành với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND) được nối vào chân 20.
5.1.3.Tổ chức bộ nhớ của bộ vi điều khiển 8051:
8051 có bộ nhớ theo cấu trúc Harvard : có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu. Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong 8051, dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu.
Bộ nhớ bên trong bao gồm ROM (8051) và RAM trên chip. RAM trên chip bao gồm nhiều 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.
5.1.3.1. Chi tiết về bộ nhớ RAM trên chip :
RAM bên trong chip 8051 được phân chia như sau:
RAM theo bit
Bank 3
Bank 2
Bank 1 (Stack)
Default Register
Bank for R0-R7
R7
R6
R4
R3
R5
R2
R0
R1
RAM đa mục
đích
7FH
30H
2FH
1FH
18H
17H
0FH
10H
08H
07H
00H
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
…
…
78
79
7A
7B
7C
7D
7E
7F
Hình 5.3. Tóm tắt bộ nhớ dữ liệu bên trong chip.
Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp. Ví dụ, để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích lũy lệnh sau sẽ được dùng :
MOV A, 5FH
Lệnh này di chuyển một byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (5FH). Đích nhận dữ liệu được ngầm xác định trong mã lệnh là thanh ghi tích lũy A.
RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay R1. Ví dụ, sau khi thi hành cùng nhiệm vụ như lệnh đơn ở trên:
MOV R0, #5FH
MOV A, @R0
Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0 và lệnh thứ hai dùng địa gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy.
RAM địa chỉ hóa từng bit :
8051 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H đến 2FH, và phần còn lại trong các thanh ghi chức năng đặc biệt.
Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH. Các địa chỉ này được truy xuất như các byte hoặc các bit phụ thuộc vào lệnh được dùng. Ví dụ, để đặt bit 67H, ta dùng lệnh sau :
SETB 67H
Ở đây địa chỉ bit 67H là bit có trọng số lớn nhất (MSB) ở địa chỉ byte 2CH, lệnh trên sẽ không tác động đến các bit khác của byte này.
5.1.3.2. Các bank thanh ghi:
MC 8051 cung cấp 32 byte thấp nhất của bộ nhớ dữ liệu nội là dành cho các bank thanh ghi. 8 thanh ghi (R0 đến R7) ở vị trí cuối cùng của RAM và theo mặc định (sau khi Reset hệ thống) các thanh ghi này ở các địa chỉ 00H-07H, tiếp đó là bank 1, bank 2 và bank 3. Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào thanh ghi tích lũy:
MOV A,R5
Đây là lệnh một byte dùng địa chỉ thanh ghi. Tất nhiên, thao tác tương tự có thể được thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai:
MOV A,05H
Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh tương ứng dùng địa chỉ trực tiếp. Các giá trị dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này.
5.1.3.3. Các thanh ghi có chức năng đặc biệt:
Các thanh ghi nội của 8051 được truy xuất ngầm định bởi bộ lệnh. Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1. Tác động này được ngầm định trong mã lệnh.
Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Rgister) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH. Chú ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 địa chỉ SFR là được định nghĩa.
Ngoại trừ tích lũy (A) có thể được truy xuất ngầm như đã nói, đa số các SFR được truy xuất dùng địa chỉ trực tiếp. chú ý rằng một vài SFR có thể được địa chỉ hóa bit hoặc byte. Khi thiết kế phải thận trọng khi truy xuất bit và byte.
Ví dụ lệnh sau: SETB 0E0H
Sẽ Set bit 0 trong thanh ghi tích lũy, các bit khác không thay đổi. Ta thấy rằng E0H đồng thời là địa chỉ byte của thanh ghi tích lũy và là địa chỉ bit có trọng số nhỏ nhất trong thanh ghi tích lũy. Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là có hiệu quả.
3.1.3.4. Từ trạng thái chương trình(PWS):
Bit
Ký hiệu
Địa chỉ
Ý nghĩa.
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
CY
AC
F0
RS1
RS0
OV
P
D7H
D6H
D5H
D4H
D3H
D2H
D1H
D0H
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Bit 1 chọn bank thanh ghi
Bit chọn bank thanh ghi.
Cờ tràn
Dự trữ
Cờ Parity chẵn
Cờ nhớ (CY) có công dụng kép. Thông thường nó được dùng cho các lệnh toán học: nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn phép trừ . Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh sau:
ADD A,#1
Sẽ trả về thanh ghi tích lũy kết qủa 00H và set cờ nhớ trong PSW.
Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lý thi hành trên bit. Ví dụ, lệnh sẽ AND bit 25H với cờ nhớ và đặt kết qủa trở vào cờ nhớ:
ANL C,25H
Cờ nhớ phụ AC:
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết qủa của 4 bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trị cộng được là số BCD, thì sau lệnh cộng cần có DA A( hiệu chỉnh thập phân thanh ghi tích lũy) để mang kết quả lớn hơn 9 trở về tâm từ 09.
Cờ zero F0: Cờ F0 là một bit cờ đa dụng dành các ứng dụng của người dùng.
Các bit chọn bank thanh ghi:
Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghi được tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần. Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy:
SETB RS1
SETB RS0
MOV A,R7
Khi chương trình được hợp dịch các địa chỉ bit đúng được thay thế cho các ký hiệu “RS1” và “RS0”. Vậy lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H.
Cờ Tràn:
Cờ tràn (OV) được set một lệnh cộng hoặc trừ nếu có một phép toán bị tràn. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết qủa của nó có nằm trong tầm xác định không. Khi các số không dấu được cộng, bit OV có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ hơn –128 sẽ set bit OV.
Thanh ghi B:
Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả 16 bit trong A (byte thấp) và B (byte cao). Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và phần dư trong B. Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng. Nó được địa chỉ hóa từng bit bằng các địa chỉ bit F0H đến F7H.
Con trỏ ngăn xếp:
Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ dọc dữ liệu và làm giảm SP. Ngăn xếp của 8051 được giữ trong RAM nội và được giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp. chúng là 128 byte đầu của 8051.
Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây được dùng: MOV SP,#5FH
Con trỏ dữ liệu:
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài, đây là một thanh ghi 16 bit ở địa chỉ 82H( byte thấp) và 83H (byte cao). Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H:
MOV A,#55H
MOV DPTR,#1000H
MOVX @DPTR,A
Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy, lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bit 1000H vào con trỏ dữ liệu. Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR (1000H).
Các thanh ghi port xuất nhập:
Các port của 8051/8031 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90 H, Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H. Tất cả các Port đều được địa chỉ hóa từng bit. Điều đó cung cấp một khả năng giao tiếp thuận lợi.
Các thanh ghi timer:
8051 chứa 2 bộ định thời đếm 16 bit được dùng trong việc định thời hoặc đếm sự kiện. Timer 0 ở địa chỉ 8AH (TL0:byte thấp) và 8CH (TH0:byte cao).
Timer 1 ở địa chỉ 8BH (TL1:byte thấp) và 8DH (TH1: byte cao).
Việc vận vận hành timer được set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H. Chỉ có TCON được địa chỉ hóa từng bit.
Các thanh ghi port nối tiếp:
8051 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (có bộ chuyển đổi A/D, các thanh ghi dịch..). Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền và nhận. Khi truyền dữ liệu thì ghi lên SBUf, khi nhận dữ liệu thì đọc từ SBUF. Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (SCON) được địa chỉ hóa từng bit ở địa chỉ 98H.
Các thanh ghi ngắt:
8051 có cấu 5 nguồn ngắt, 2 mức ưu tiên. Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng việc ghi vào thanh ghi cho phép ngắt (IE) ở địa chỉ 8AH một giá trị phù hợp. Cả hai thanh ghi được địa chỉ hóa từng bit.
Các thanh ghi điều khiển công suất:
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển. Ở thanh ghi này ta cần chú ý ở bít PCON.7 nếu bít này được set thì tốc độ baud sẽ được tăng gấp đôi ở các mode 1, mode 2, mode 3.
5.1.4. Công tắc Reset:
8051 được reset bằng cách giữ chân RST ở mức cao ít nhất trong 2 chu kỳ máy và trả nó về múc thấp. RST có thể được kích khi cấp điện dùng một mạch R-C.
Hình 5.4. Mạch Reset.
Thanh ghi
Nội dung
Đếm chương trình
Tích lũy
B
PSW
SP
DPTR
Port 0-3
IP
IE
Các thanh ghi định thời
SCON
SBUF
PCON(HMOS)
PCON(CMOS)
0000H
00H
00H
00H
07H
0000H
FFH
XXX00000B
0XX00000B
00H
00H
00H
0XXXXXXB
0XXX0000B
Bảng 5.5. Trạng thái các thanh ghi sau khi bị Reset.
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình, nó được đặt lại 0000H. Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở địa chỉ đầu tiên trong bộ nhớ trong chương trình: địa chỉ 0000H. Nội dung của RAM trên chip không bị thay đổi bởi lệnh reset.
5.1.5. Hoạt động của bộ định thời:
Một định nghĩa đơn giản của timer là một chuỗi các flip-flop chia đôi tần số nối tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp. Ngõ ra của tần số cuối làm nguồn xung nhịp cho flip-flop báo tràn của timer (flip-flop cờ). Giá trị nhị phân trong các flip-flop của timer có thể xem như số đếm số xung nhịp (hoặc các sự kiện) từ khi khởi động timer. Ví dụ timer 16 bit sẽ đếm lên từ 0000H đến FFFFH. Cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H.
8051 có 2 timer 16 bit, mỗi timer có bốn cách làm việc. Người ta sử dụng các timer để : định khoảng thời gian, đếm sự kiện hoặc tạo tốc độ baud cho port nối tiếp trong 8051.
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở một khoảng đều đặn và đặt cờ tràn timer. Cờ được dùng để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi các sự kiện ra các ngõ ra. Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ : đo độ rộng xung).
Đếm sự kiện dùng để xác định số lần xảy ra của một sự kiện. Một sự kiện là bất cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của 8051. Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho port nối tiếp trong 8051.Truy xuất timer của 8051 dùng 6 thanh ghi chức năng đặc biệt cho trong bảng sau:
SFR
MỤC ĐÍCH
ĐỊA CHỈ
Địa chỉ hoá từng bit
TCON
TMOD
TL0
TL1
TH0
TH1
Điều khiển timer
Chế độ timer
Byte thấp của timer 0
Byte thấp của timer 1
Byte cao của timer 0
Byte cao của timer 1
88H
89H
8AH
8BH
8CH
8DH
Có
Không
Không
Không
Không
Không
Bảng 5.6. Thanh ghi chức năng đặc biệt dùng timer.
Thanh ghi chế độ timer TMOD:
TMOD chứa hai nhóm 4 bit dùng đặt chế độ làm việc cho timer0 và timer1.
Bit
Tên
Timer
Mô tả
7
GATE
1
Bit (Mở) cổng, khi lên 1 timer chỉ chạy khi INT1 ở mức cao.
6
C/T
1
Bit chọn chế độ Counter/ timer.
5
M1
1
Bít 1 của chế độ mode
4
M0
1
Bít 0 của chế độ mode
3
GATE
0
Bit (mở) cổng
2
C/T
0
Bit chọn counter/timer
1
M1
0
Bit 1 của chế độ
0
M0
0
Bit 0 của chế độ
Bảng 5.7. Chức năng của các bit nằm trong TMODE
Thanh ghi điều khiển timer (TCON):
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer 0 và timer 1.
TCON.7(TF1-8FH): Cờ báo tràn Timer 1: Đặt bởi phần cứng khi tràn, được xoá bởi phần mền hoặc phần cứng khi bộ xử lý chỉ đến chương trình phục vụ ngắt.
TCON.6(TR1-8EH): Bít điều khiển cho timer 1 chạy.
TCON.5(TF0-8DH): Cờ báo tràn timer 0.
TCON.4(TR0-8CH): Bít điều khiển timer 0 chạy.
TCON.3(IE1-8BH): Cờ ngắt 1 bên ngoài.
TCON.2(IT1-8AH): Bít quyết định mức tác động của ngắt là tác động cạnh (sườn xuống) hay tác động mức.
TCON.1(IE1-8BH): Cờ ngắt 0 bên ngoài.
TCON.0(IT1-8AH): Bít quyết định mức tác động của ngắt là tác động cạnh (sườn xuống) hay tác động mức.
Các chế độ của bộ định thời:
Chế độ 0 - chế độ timer 13 bit: để tương thích với 8048 (có trứớc 8051) ba bit cao của TLX (TL0 và/hoăc TL1) không dùng.
TLx THx
(5 bit) (8 bit)
TFx
Cờ báo tràn
Xung nhịp
Hình 5.8. Nguyên lý của bộ định thời hoạt động ở chế độ 0.
Chế độ 1- chế độ timer 16 bit: hoạt động như timer 16 bit đầy đủ. Cờ báo tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phầm mềm. MSB của giá trị trong các thanh ghi timer là bit 7 của THx và LBS là bit 0 của TLx. Các thanh ghi timer (TLx/THx) có thể được đọc hoặc ghi bất cứ lúc nào bằng phầm mềm.
TLx THx
(8bit) (8 bit)
TFx
Cờ báo tràn
Xung nhịp
Hình 5.9. Nguyên lý của bộ định thời hoạt động ở chế độ 0.
Chế độ 2- chế độ tự động nạp lại 8 bit: TLx hoạt động như một timer 8 bit, trong khi đó THx vẫn giữ nguyên giá trị được nạp. Khi số đếm tràn tứ FFH đến 00H, không những cờ timer được set mà giá trị trong THx đồng thời được nạp vào TLx. Việc đếm tiếp tục từ giá trị này lên đến FFH xuống 00H và nạp lại... Chế độ này rất thông dụng vì sự tràn timer xảy ra trong những khoảng thời gian nhất định và tuần hoàn một khi đã khởi động TMOD và THx.
TLx
(8 bit)
TFx
THx
(8 bit)
Hình 5.10. Chế độ tự động nạp lại.
Chế độ 3- chế độ tách timer: Timer 0 tách thành hai timer 8 bit (TL0 và TH0), TL0 có cờ báo tràn là TF0 và TH0 có cờ báo tràn là TF1. Timer 1 ngưng ở chế độ 3, nhưng có thể được khởi động bằng cách chuyển sang chế độ khác. Giới hạn duy nhất là cờ báo tràn TF1 không còn bị tác động khi timer 1 bị tràn vì nó đã được nối tới TH0. (Hình 5.11.)
TL1 TH1
TL0
TF0
TH0
TF1
Xung nhip
Timer
Xung nhip
Timer
Xung nhip
Timer
Hình 5.11. Chế độ bộ định thời thứ 3 .
5.1.6. Hoạt động của ngắt:
Ngắt là hoạt động ngừng tạm thời một chương trình này để thi hành một chương trình khác. Các ngắt có một vai trò quan trọng trong thiết kế và khả năng thực thi của vi điều khiển. Chúng cho phép hệ thống đáp ứng không cùng lúc tới một công việc và giải quyết một công việc đó trong khi một chương trình khác đang thực thi.
Một hệ thống được điều khiển bằng ngắt cho ảo giác là làm nhiều việc đồng thời. Dĩ nhiên CPU mỗi lần không thể thực thi một chương trình để thực thi một chương trình khác, rồi quay về chương trình đầu. khi có yêu cầu ngắt. Chương trình giải quyết ngắt được gọi lả chương trình phục vụ ngắt (ISR : Interrupt Sevice Reutine).
3.1.6.1. Tổ chức ngắt.
8051 có 5 nguồn ngắt:
2 ngắt ngoài.
2 ngắt từ timer.
1 ngắt port nối tiếp.
Tất cả các ngắt sẽ không được đặt sau khi reset hệ thống và cho phép ngắt riêng rẽ bởi phần mềm.
Cho phép và không cho phép ngắt:
Mỗi nguồn ngắt được cho phép hoặc không cho phép từng ngắt một qua thanh ghi chức năng đặt biệt cố định địa chỉ bit IE (Interrupt Enable : cho phép ngắt) ở địa chỉ A8H. Cũng như các bit cho phép mỗi nguồn ngắt, có một bit cho phép hoặc cấm toàn bộ được xóa để cấm tất cả các ngắt hoặc được đặt lên 1 để cho phép tất cả các ngắt.
Bit
Ký hiệu
Địa chỉ bit
Mô tả(1: cho phép, 0: Cấm)
IE.7
IE.6
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0
EA
-
ET5
E5
ET1
EX1
ET0
EX0
AFH
AEH
ADH
ACH
ABH
AAH
A9H
A8H
Cho phép hoặc cấm toàn bộ
Không được định nghĩa
Cho phép ngắt từ timer 2 (8052)
Cho phép ngắt Port nối tiếp
Cho phép ngắt tử timer 1
Cho phép ngắt ngoài 1
Cho phép ngắt từ timer 0
Cho phép ngắt ngoài 0
Bảng 5.12. Thanh ghi ngắt IE.
Ưu tiên ngắt:
Mỗi nguồn ngắt được lập trình riêng vào một trong hai mức ưu tiên qua thanh ghi chức năng đặc biệt được địa chỉ bit IP (Interrupt Priority : ưu tiên ngắt) ở địa chỉ B8H.
Bit
Ký hiệu
Địa chỉ bit
Môtả (1=mức ưu tiên cao, 0 mức thấp)
IP.7
IP.6
IP.5
IP.4
IP.3
IP.2
IP.1
IP.0
PT2
PS
PT1
PX1
PT0
PX0
BDH
BCH
BBH
BAH
B9H
B8H
Không được định nghĩa.
Không được định nghĩa.
Ưu tiên cho ngắt từ timer 2 (8052).
Ưu tiên cho ngắt Port nối tiếp.
Ưu tiên cho ngắt timer 1.
Ưu tiên cho ngắt ngoài 1.
Ưu tiên cho ngắt timer 0.
Ưu tiên cho ngắt ngoài 0.
Bảng 5.13. Thanh ghi ưu tiên ngắt IP.
Các ngắt ưu tiên được xóa sau khi reset hệ thống để đặt tất cả các ngắt ở mức ưu tiên thấp hơn.
Xử lý ngắt:
Khi có một ngắt xẩy ra và được CPU chấp nhận, chương trình chính bị ngắt quãng. Những hoạt động sau xẩy ra:
Thi hành hoàn chỉnh lệnh đang hiện hành.
Cất địa chỉ vào ngăn xếp.
Trạng thái ngắt hiện hành được cất bên trong.
Các ngắt được chặn tại mức của ngắt.
Nạp vào PC địa chỉ Vector của ISR.
ISR thực thi.
ISR thực thi và đáp ứng ngắt. ISR hoàn tất bằng lệnh RETI. Điều này làm lấy lại giá trị cũ của PC từ ngăn xếp và lấy lại trạng thái ngắt cũ. Chương trình lại tiếp tục thi hành tại nơi mà nó dừng.
Các Vector ngắt:
Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là Vector ngắt. Nó là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt. Các Vector ngắt được cho ở bảng sau:
Ngắt
Cờ
Địa chỉ Vector
Reset hệ thống
Bên ngoài 0
Timer 0
Bên ngoài 1
Timer 1
Port nối tiếp
RST
IE0
TF0
IE1
TF1
TI hoặc RI
0000H
0003H
000BH
0013H
001BH
0023H
Bảng 5.14. Các cờ ngắt.
Vector reset hệ thống (RST ở địa chỉ 0000H) nó giống như một ngắt. Nó ngắt chương trình chính và tải vào PC một giá trị mới.
Khi chỉ đến một ngắt “cờ gây ngắt tự động bị xóa bởi phần cứng, trừ ra R1, T1 cho các ngắt cổng nối tiếp. Vì có hai nguồn có thể có cho ngắt này, không thực tế để CPU xóa cờ ngắt này. Các bit phải được kiểm tra trong ISR để xác định nguồn ngắt và cờ tạo ngắt sẽ được xóa bằng phần mềm.
5.1.7. Các ngắt của AT89C51:
5.1.7.1. Các ngắt timer:
Các ngắt timer có địa chỉ Vector ngắt là 000BH (timer 0) và 001BH (timer 1). Ngắt timer xẩy ra khi các thanh ghi timer (TLx - THx) tràn và set cờ báo tràn (TFx) lên 1. Các cờ timer (TFx) không bị xóa bằng phần mềm. Khi cho phép các ngắt, TFx tự động bị xóa bằng phần cứng khi CPU chuyển đến ngắt.
5.1.7.2. Các ngắt cổng nối tiếp:
Ngắt cổng nối tiếp xẩy ra khi hoặc cờ phát (TI) hoặc cờ ngắt thu (RI) được đặt lên 1. Ngắt phát xẩy ra khi một ký tự đã được nhận xong và đang đợi trong SBUF để được đọc.
Các ngắt cổng nối tiếp khác với các ngắt timer. Cờ gây ra ngắt cổng nối tiếp không bị xóa bằng phần cứng khi CPU chuyển tới ngắt. Do có hai nguồn ngắt cổng nối tiếp TI và RI.
Nguồn ngắt phải được xác định trong ISR và cờ tạo ngắt sẽ được xóa bằng phần mềm. Các ngắt timer cờ ngắt cờ ngắt được xóa bằng phần cứng khi CPU hướng tới ISR.
5.1.7.3. Các ngắt ngoài:
Các ngắt ngoài xẩy ra khi có một mức thấp hoặc cạnh xuống trên chân INT0 hoặc INT1 của vi điều khiển. Đây là chức năng chuyển đổi của các bit Port3. (Port 3.2 và Port 3.3).
Các cờ tạo ngắt này là các bit IE0 và IE1 trong TCON. Khi quyền điều khiển đã chuyển đến ISR, cờ tạo ra ngắt chỉ được xóa nếu ngắt được tích cực bằng cạnh xuống. Nếu ngắt được tích cực theo mức, thì nguồn yêu cầu ngắt bên ngoài sẽ điều khiển mức của cờ thay cho phần cứng.
Sự lựa chọn ngắt tích cực mức thấp hay tích cực cạnh xuống được lập trình qua các bit IT0 và IT1 trong TCON. Nếu IT1 = 0, ngắt ngoài 1 được tác động bằng múc thấp ở chân IT1. Nếu IT1 = 1 ngắt ngoài 1 sẽ được tác động bằng cạnh xuống. trong chế độ này, nếu các mẫu liên tiếp trên chân INT1 chỉ mức cao trong một chu kỳ và chỉ mức thấp trong chu kỳ kế, cờ yêu cầu ngắt IE1 trong TCON được đặt lên1
Nếu ngắt ngoài được tác động bằng cạnh xuống thì nguồn bên ngoài phải giữ chân tác động ở mức cao tối thiểu một chu kỳ và giữ nó ở mức thấp thêm một chu kỳ nữa để đảm bảo phát hiện được cạnh xuống. Nếu ngắt ngoài được tác động theo mức thì nguồn bên ngoài phải giữ tín hiệu yêu cầu tác động cho đến khi ngắt được yêu cầu được thật sự tạo ra và không tác động yêu cầu ngắt trước khi ISR được hoàn tất . Nếu không một ngắt khác sẽ được lặp lại.
5.2.THIẾT KẾ PHẦN ĐIỆN TỬ ĐIỀU KHIỂN TAY MÁY:
5.2.1. Mạch nguồn cho cơ hệ:
Hình 5.15. Mạch nguồn cho AT89C51.
5.2.1.1. Mục đích của thiết kế mạch nguồn:
Như ta đã biết thì mỗi một sản phẩm điện tử làm ra nó có các tiêu chuẩn nhất định, Mà yếu tố quan trọng nhất mà chúng ta cần quan tâm đó là nguồn điện sử dụng như thế nào, đây là một yếu tố quan trọng không thể thiếu được bởi vì khi không có nguồn năng lượng cung cấp cho sản phẩm thì hầu như mọi sản phẩm làm ra điều là phế phẩm. Chi phí để tập trung đầu tư phần nguồn điện trong các sản phẩm điện tử là rất lớn: nó phải đáp ứng được một số yêu cầu sau:
Đáp ứng được công suất làm việc cho sản phẩm tạo ra.
Nguồn điện phải ổn định, chống sóc cho các linh kiện điện tử làm cho sản phẩm làm ra được bển hơn.
Đầu vào của các nguồn cung cấp phải phù hợp với các thông số mà ngành điện lực của quốc gia đó sử dụng, ví dụ như đáp ứng tần số, điện áp ở lưới điện quốc gia chẳn hạn…
5.2.1.2. Mạch nguồn thi công ở trên:
Nguồn điện mà chúng em sử dụng nguồn máy tính có điện áp là 12VDC, dòng điện qua là 3(A).
Để cho vi điều khiển có thể hoạt động được thì điện áp cung cấp cho chíp AT89C51 là 5V, và dòng cần thiết chỉ vài mmA mà thôi vậy ta phải sử dụng 2 con IC ổn áp LM7809 và LM7805 để thực hiện điều chế ra điện áp theo yêu cầu.
Sụt áp rơi trên 2 con IC ổn áp này là 3VDC . Nhưng để tránh sóc cho 2 con IC ổn áp này ta cần có biện pháp bảo vệ đó là:
Hình 5.16. Cách thức bảo vệ cho IC ổn áp.
Diode ở trên có mục đích ngăn chặn không cho cá nhiễu đánh thủng LM7805, ghim điện áp phân cực ngựơc là 0,7 V.
Ngoài ra nó còn có mục đích là chống cháy cho LM7805 khi người sử dụng đấu lộn dây cung cấp nguồn điện.
Chúng ta để ý ở trên có điện áp lấy ra là 12VDC lấy ra từ đầu vào của bình Ac qui, với lý do là để có thể đủ dòng cung cấp cho mạnh công suất điều khiển động cơ hoạt động thì nó phải lấy ra trực tiếp ở ngỏ vào, không thể lấy ra ở ngỏ ra con IC LM7809 bởi vì áp lúc này đã là 9VDC, dòng chỉ còn lại vài mmA, chúng ta phải chú ý đến điều này khi thiết kế mạch.
Sử dụng tụ điện để tạo sự ổn định cho mạch:
Tụ điện 2200được sử dụng ở các ngỏ vào của các con IC ổn áp với mục đích là tạo điện áp ổn định nghĩa là nâng cao công suất của dòng 1 chiều, bởi vì nếu ở bán kỳ dương của dòng xoay chiều tụ sẽ được nạp điện nhưng trong khoảng chuyển biến từ bán kỳ dương sang bán kỳ âm thì sẽ có một vùng điện áp từ (0,7-0,7) làm cho Ic ổn áp mất tác dụng, nhưng khi ta mắc tụ điện vào sẽ khắc phục được nhược điểm này đó là khi tụ nạp điện ở bán kỳ dương rồi thì khi có sự sụt áp ở bán kỳ tiếp theo, tụ điện này sẽ xã điện áp làm cho Ic ổn áp luôn hoạt đông tránh được hiện tượng treo trạng thái ở trên.
Tụ 104 có tác dụng củng không kém phần quan trọng đó là: Một tính chất mà chúng ta hầu như ai củng biết đó là tụ điện giấy không cho dòng điện một chiều chạy qua, đây là một yếu tố đặc trưng của tụ điện kiểu này, nó sẽ có công dụng là ngăn chặn nhiễu gây ra từ bên ngoài( ví dụ như các xung gây ra bởi động cơ điện, các tín hiệu âm thanh bên ngoài ). Làm thoát nhiễu là một yếu tố rất quan trọng bởi vì ta biết các họ vi điều khiển sẽ dễ dàng bị tác động bởi nhiễu làm cho các chức năng điều khiển hoạt động không đúng nữa, vì vậy làm cho cơ hệ hoạt động kém ổn định, có nhiều cách để triệt được nhiễu nhưng một trong các biện pháp rẽ tiền và có hiệu quả với các ứng dụng nhỏ.
Một yếu tố củng không kém phần quan trọng đó là tín hiệu: Một mạch điều khiển không thể coi là đầy dủ khi người sử dụng không biết được là ở đâu có tín hiệu, ở đau không có tín hiệu điều này là một đặc điểm để nhận dạng, khi người thiết kế phải truy tìm bệnh khi mạch điện có vấn đề nó sẽ làm cho công việc giải quết các sự cố được nhanh chóng hơn, mà đôi khi chỉ cần một tín hiệu của led là ta đã có thể bắt bệnh được rồi.
Ví dụ như ở trên led đỏ không sáng ta sẽ có một vài suy luận như sau:
Trước tiên ta dùng đồng hồ đo ở trạng thái đang cấp điện, đặt đồng hồ ở thang đo điện áp thích hợp. Nếu đo điện áp ở ngỏ ra của LM89C51 với đất mà có điện thì chuyển sang phương án tiếp theo là: ta thử cắt nguồn điện, sau đó để đồng hồ ở thang đo điện trở rồi kiểm tra xem con led mà ta gắn vào mạch đã đúng cực chưa, nếu kiểm tra trên vẫn đúng thì ta chuyển sang phương án kiểm tra tiếp theo đó là xem mạch của mình có bị đức chổ nào không bằng cách sử dụng đồng hồ đo, nếu phương án kiêm tra trên vẫn chưa thu được kết quả gì thì ta tiếp tục kiểm tra bằng cách thử đo điện trở ở các mối hàn, để dạt được yêu cầu thì điện trở các mối hàn nối với GND phải nhỏ và dính chắt. Đó là qui trình suy luận Logic mà một nhà thiết kế mạch phải nghỉ đến trong quá trình thiết kế, hiệu chỉnh các tình huốn bất chợt xảy ra (rất quan trọng).
5.2.2. Mạch vi điều khiển:
Hình 5.17. Mạch vi điều khiển tổng quát.
5.2.2.1. Cấu hình để cho chip AT89C51 hoạt động:
Một số đặc trưng:
Như đã phân tích ở phần trên thì mỗi một loại chip lại có một số tiêu chuẩn nhất định. AT89C51 cũng vậy:
Áp cung cấp cho vi điều khiển hoạt động là 5VDC.
Cổng P0 có cấu tạo đặc biệt do vậy nếu bạn muốn P0 vừa làm nhiệm vụ nhận tín hiệu, vừa xuất data thì ta phải mắt thêm điện trở thanh ở ngoài để cung cấp thêm dòng.
Bộ dao động: để có thể thực hiện được chương trình, tìm nạp và thi hành mã lệnh thì mỗi loại chíp có một bộ dao động riêng, nó do nhà sản xuất qui định. Xung dao động thường là do thạnh anh tạo nên, tinh thể thạch anh có tính chất là tự nó tạo nên những xung clock. Một số loại chíp khác nó có thể được cung cấp xung clock bằng các mạch dao động bên ngoài ví dụ như mạch dao động RC chẵn hạn.
Tần số cần thiết cho AT89C51 hoạt động là 12Mhz, ở trên ta sử dụng thạnh anh dao động với tần số 11,0592Mhz, với lý do là để khắc phục các sai số về tần số ở chế độ truyền nối tiếp so với tốc độ Baud của máy tính.
Các tụ giấy với giá trị 33PF để cách ly chống nhiễu cho xung clock.
Mạch reset: dùng để thiết lập lại trạng thái bang đầu cho AT89C51.
Ta cần phải để ý rằng các chíp vi điều khiển điều để mở khã năng kết nối thêm bộ nhớ data ở bên ngoài với các ứng dụng mà lượng bộ nhớ không vượt quá 4Kbyte thì điều này không thực sự cần thiết.
Củng chính vì lý do đó mà ở trên mà một số chân ở chip vi điều khiển không được sử dụng hết. Ta cần quan tâm đến chân 31(). Chân này được nối lên với nguồn 5VDC thì chương trình thực thi lệnh trong bộ nhớ nội. Nếu chân này được nối với GND thì thực thi chương trình ở bộ nhớ ngoài. Người thiết kế phải chú ý đến đặc điểm này.
5.2.3. Mạch giao tiếp máy tính: ( Hình 5.18.)
Chuẩn truyền thông nối tiếp giữa chip AT89C51 và máy tính được thực hiện thông qua linh kiện MAX232. Ta sử dụng cổng com để kết nối.
Sơ đồ trên mô tả cách thức liên kết các chân của MAX232 với cổng DB9, và chân của AT89C51. Chân số 9(OUT) của MAX232 được nối với chân đọc P3.0(RxD) của chip AT89C51.
5.2.4 Modul công suất:
5.2.5.1. Điều khiển động cơ điện 1 chiều ở cơ cấu kẹp:
Yêu cầu đặt ra: Để cho quá trình điều khiển động cơ DC được dễ dàng thì mạch điều khiển phải đạt được một số yêu cầu sau:
Đóng ngắt động cơ được dễ dàng.
Có thể điều khiển cho động cơ đảo chiều quay.
Đáp ứng đủ dòng và công suất cho động cơ hoạt động bình thường.
Để thực hiện được điều đó ta sử dụng Role để tiến hành làm đảo chiều quay của động cơ. Sử dụng FET để đóng ngắt động cơ.
Hình 5.17. Khối điều khiển công suất động cơ 1 chiều.
Giải thích nguyên lý hoạt động và mục đích của các linh kiện có trong mạch :
Bình thường khi mới cấp nguồn thì ĐKROLE ở mức 1 làm cho BJT C1815 dẫn làm sụt áp ngõ ra Vce của C1815 =0,2(V) coi như gần =0(V) làm cho con C2229 tắt => không có dòng đổ vào cuộn dây của RELAY(RELAY nằm ở tiếp điểm ban đầu 5-1;6-2).
Khi ĐKROLE ở mức 0 thì làm cho C1815 tắt, áp rơi phần lớn trên ngỏ ra của C1815=>C2229 dẫn bảo hoà vậy có dòng đổ xuống RELAY(RELAY nằm ở tiếp điểm thứ 2: 5-3;6-4).
Lý do để sử dụng BJT C2229 là: con ic này có hệ số khuếch đại lớn làm cho dòng IC đổ qua BJT củng như qua cuộn dây của RELAY lớn, yếu tố này quết định đến là việc đóng ngắt Relay có được dễ dàng hay không.
Sử dụng con IC C1815 ở trên có mục đích: trường hợp con IC C2229 bị đánh thủng thì phần lớn dòng đổ về vi điều khiển sẽ rất lớn, có nguy cơ phá huỹ vi điều khiển. IC C1815 sẽ có mục đích bảo vệ trong trường hợp trên.
Diode ở cuộn dây Relay có mục đích bảo vệ: bởi vì ta biết rằng khi có dòng ngược xuất hiện ở cuộn từ cảm sẽ dẫn đến dòng đi qua Fet rất lớn làm cho Fet dễ bị dánh thủng ta mắt diode ở đây để hạn chế dòng ngược đó.
Bình thường DKDC ở mức 1 thì con C1815 dẫn làm cho áp rơi trên VGS của IRF 540 nhỏ không đủ để phân cực cho FET dẫn => động cơ ngừng hoạt động.
Khi DKDC ở mức 0 thì C1815 tắt làm cho áp rơi trên VGS lớn =>FET dẫn mạnh làm cho động cơ chuyển động.
Hình 5.18. Mối quan hệ giửa ID ,với VDS .
Qua trang datasheetarchiver.com ta tra được thông số của FET và thấy rằng khi VGS =10V thì dòng đổ qua Fet là rất lớn =>coi như động cơ dẫn mạnh.
5.2.2.2. Driver điều khiển động cơ bước:
Phần này trình bày về mạch dẫn động khâu cuối của động cơ bước. Mạch này tập trung vào một mạch phát đơn, đóng ngắt dòng điện trong cuộn dây của động cơ, đồng thời điều khiển chiều dòng điện. Mạch điện được nối trực tiếp với cuộn dây và cấp nguồn của động cơ, mạch được điều khiển bởi một hệ thống số quyết định khi nào công tắc đóng hay ngắt.
Bộ điều khiển điển hình của động cơ bước biến từ trở dựa theo nguyên tắc như sau:
Hình 5.19. Mô hình điều khiển động cơ bước.
Trên hình 5.19. các hộp ký hiệu cho công tắc, bộ điều khiển (controller - không thể hiện trên hình) chịu trách nhiệm cung cấp tín hiệu điều khiển đóng mở công tắc tại từng thời điểm thích hợp để quay động cơ. Trong nhiều trường hợp, chúng ta phải thiết kế bộ điều khiển, có thể là một máy tính hoặc một mạch điều khiển giao tiếp lập trình được, với phần mềm trực tiếp phát tín hiệu điều khiển đóng mở, nhưng trong một số trường hợp khác mạch điều khiển được thiết kế kèm theo động cơ, và đôi khi được cho miễn phí.
Cuộn dây, lõi solenoid của động cơ hoặc các chi tiết tương tự đều là các tải cảm ứng. Như vậy, dòng điện qua cuộn dây không thể đóng ngắt tức thời mà không
làm áp tăng vọt đột ngột. Khi công tắc điều khiển cuộn dây đóng, cho dòng điện đi qua, làm dòng điện tăng chậm. Khi công tắc mở, sự tăng mạnh điện áp có thể làm hư công tắc trừ khi ta biết cách giải quyết thích hợp.
Có hai cách cơ bản để xử lý sự tăng điện áp này, đó là mắc song song với cuộn dây một diod hoặc một tụ điện. Hình 5.20. minh họa hai cách này:
Hình 5.20.
Bộ điều khiển điển hình động cơ bước đơn cực thay đổi theo sơ đồ:
Hình 5.21.
Trên hình 5.21, hộp biểu diễn các công tắc và một bộ điều khiển (không thể hiện trên hình) chịu trách nhiệm cung cấp tín hiệu điều khiển đóng mở công tắc vào thời điểm thích hợp để quay động cơ. Bộ điều khiển thường là máy tính hay một mạch điều khiển lập trình được, với phần mềm trực tiếp phát ra tín hiệu cần thiết để điều khiển công tắc.
Trong các mạch điện ở phần trên, chúng ta không quan tâm đến các công tắc và các tín hiệu điều khiển. Bất kỳ kỹ thuật đóng ngắt nào từ cầu dao đến MOSFETS cũng đều dùng được hết! Hình 5.22. là một vài cách mắc cho mỗi loại công tắc, bao gồm cả cuộn dây của động cơ và diod bảo vệ phục vụ cho mục đích đóng ngắt kể trên:
Hình 5.22.
Mỗi công tắc trên hình 5.22. đều tương thích với đầu vào TTL. Nguồn 5V sử dụng cho mạch logic, bao gồm open-collector driver 7407 như trên hình. Nguồn điện cho động cơ, thường từ 5V – 24V, không cần độ chính xác cao. Ta cần chú ý rằng các mạch đóng ngắt các nguồn này phải thích hợp cho việc dẫn động các cuộn
dây, động cơ DC, các tải cảm ứng khác và cả các động cơ bước.
Transistor SK3180 trên hình 5.22. là một mạch darlington công suất có độ lợi dòng hơn 1000, do đó dòng 10mA qua điện trở hiệu chỉnh 470 Ohm sẽ đủ lớn để qua transistor điều chỉnh dòng vài Ampe qua cuộn dây của động cơ. Bộ đệm 7407 dùng điều khiển darlington được thay thế bởi bất kỳ con chip open-collector điện thế cao nào mà nó có thể điều khiển ở mức tối thiểu 10mA. Ngay cả trong trường hợp transistor hư, open collector này sẽ giúp bảo vệ phần còn lại của mạch logic khỏi nguồn của động cơ.
IC IRL540 trên hình 5.22. là một power field effect transistor. Nó có thể chịu được dòng điện lên tới 20A và nó bị đánh thủng ở 100V, do đó con chip này có
thể hấp thu đỉnh nhọn của độ tự cảm mà không cần diode bảo vệ nếu nó được gắn với một bộ tản nhiệt đủ lớn. Transistor này có thời gian đóng ngắt rất nhanh nên các diode bảo vệ cũng phải nhanh tương ứng hoặc được chia nhỏ bới các tụ điện. Điều này đặc biệt cần thiết cho các diode bảo vệ transistor chống lại phân cực ngược. Trong trường hợp transistor bị hư, diode zener và điện trở 100 Ohm sẽ bảo vệ mạch TTL. Điện trở 100 Ohm còn đóng vai trò làm chậm thời gian đóng mở của transistor.
Nói chung lại tuỳ loại động cơ bước mà ta có phương án làm mạch vi điều khiển riêng cho phù hợp.
Hình 5.23. Driver cho động cơ bước đơn cực.
Thông số động cơ bước sử dụng trong tay máy:
Động cơ bước đơn cực nam châm vĩnh cữu đơn cực.
Góc bước là 1,80 .
Áp rơi trên mỗi pha là 3,5(V)
Dòng qua 1,7 A
Hình 5.24.
Hình dáng của động cơ bước sử dụng trong đồ án.
Xét mạch điều khiển động cơ bước ở trên :
Vì động cơ bước có thông số như vậy mà để có thể đạt được điện áp và dòng thì ta phải mắt thêm điện trở để tạo nên dòng theo yêu cầu của nhà sản xuất. Ta sẽ đi tìm giá trị điện trở này:
Điện áp cung cấp là 12VDC trong khi đó áp rơi trên 1 cực của động cơ bước là 3,5VDC vậy nên áp rơi trên điện trở là 12-3,5= 8,5VDC.
Tìm điện trở: I chạy qua động cơ là 1,7 A. do vậy:
R = 8,5/1,7=5 (ohm)
Tìm công suất rơi trên điện trở:
P=RI2 =5*1,72 = 14,45 W.
Để giảm công suất xuống ½ ta cải tiến bằng cách mắt // 2 điện trở có giá trị bằng nhau với giá trị là 10 Ohm, 10W.
Điều này chỉ đúng trong quá trình lập trình với chuỗi xung đơn nếu ta cấp chuỗi xung kép thì dòng đòi hỏi để cung cấp cho động cơ hoạt động phải lớn hơn (cụ thể là gấp đôi dòng hồi nãy).
Để có được điều đó ta cũng tính toán như vậy => cần chọn điện trở 4,7 Ohm, 10W.
5.2.5 Mạch công tắc hành trình và bàn phím:
Để hạn chế port cho vi điều khiển chúng em dùng ic giải mã 74151 để dùng cho công tắc hành trình và mạch bàn phím.
Chương 6: trình điỀu khiỂn Robot
RS BIT P3.6
RW BIT P3.5
E BIT P3.4
DCB_X1 DATA 30H
DCB_X2 DATA 31H
DCB_X3 DATA 32H
DCB_X4 DATA 33H
DCB_Y1 DATA 34H
DCB_Y2 DATA 35H
DCB_Y3 DATA 36H
DCB_Y4 DATA 37H
DCB_Z1 DATA 38H
DCB_Z2 DATA 39H
DCB_Z3 DATA 3AH
DCB_Z4 DATA 3BH
RV DATA 3CH
THANH DATA 3DH
ROLE_KEP BIT P1.6
DC_KEP BIT P1.7
ORG 0000H
JMP START
ORG 0030H
START:
MOV P2,#0H
CLR ROLE_KEP
MOV DPTR,#BANGMA
JMP QUA
MOV R7,#33H
SET_X:
MOV P2,#03H
JNB P3.7,SET_Y
CALL X_LUI
SET_Y:
MOV P2,#04H
JNB P3.7,SET_Z
CALL Y_LUI
SET_Z:
MOV P2,#05H
JNB P3.7,DA_SET
CALL Z_LUI
DA_SET:
MOV P2,#03H
JB P3.7,SET_X
MOV P2,#04H
JB P3.7,SET_Y
MOV P2,#05H
JB P3.7,SET_Z
MOV 2,#0H
QUA:
MOV A,#38H ; giao tiep 8 bit, hien thi 2 hang, ki tu 5X8
ACALL COMMAND
MOV A,#01H ;tat hien thi con tro tro ve goc trai
ACALL COMMAND
MOV A,#0EH ;bat man hinh hien thi, con tro ko nhap nhay
ACALL COMMAND
MOV A,#06H ;con tro ve dau dong ben trai, AC tang dan
ACALL COMMAND
MOV A,#80H ;con tro den dia chi 00
ACALL COMMAND
MOV R0,#0 SO XUNG TUONH UNG THAP PHAN X
MOV R1,#0 ;SO XUNG TUONG UNG X
MOV R2,#0 SO XUNG TUONG UNG THAP PHAN Y
MOV R3,#0 ;SO XUNG TUONG UNG Y
; MOV IE,#81H
MOV R7,#33H
CALL HIENTHI_LCD
MOV RV,#0
MOV THANH,#255
KT_KEYPAD:
ANL P1,#0F8H
JB P3.3,K2
JMP KEP_VAT
K2:
ANL P1,#0F8H
ORL P1,#01H
JB P3.3,K3
JMP NHA_VAT
K3:
ANL P1,#0F8H
ORL P1,#02H
JB P1.3,K4
CALL X_TIEN
K4:
ANL P1,#0F8H
ORL P1,#03H
JB P1.3,K5
CALL X_LUI
K5:
ANL P1,#0F8H
ORL P1,#04H
JB P3.3,K6
CALL Y_TIEN
K6:
ANL P1,#0F8H
ORL P1,#05H
JB P3.3,K7
CALL Y_LUI
K7:
ANL P1,#0F8H
ORL P1,#06H
JB P3.3,K8
CALL Z_TIEN
K8:
ANL P1,#0F8H
ORL P1,#07H
JB P3.3,K9
CALL Z_LUI
K9:
ANL P1,#0F8H
ORL P1,#0H
JB P3.7,K10
CALL LUU_GIA_TRI_1
K10:
ANL P1,#0F8H
ORL P1,#01H
JB P3.7,KT_KEYPAD
JMP AU_TO
;-----------------------------------
X_LUI:
MOV A,R7
ANL A,#0FH
CJNE A,#0CH,XUNG2_XLUI
MOV P2,#09H
CALL DELAY
MOV A,R7
ANL A,#0F0H
ORL A,#09H
MOV R7,A
JMP S_X_LUI
XUNG2_XLUI:
CJNE A,#09H,XUNG3_XLUI
MOV P2,#03H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0F0H
ORL A,#03H
MOV R7,A
DEC R0
DEC R0
DEC R0
JMP S_X_LUI
XUNG3_XLUI:
CJNE A,#03H,XUNG4_XLUI
MOV P2,#06H
CALL DELAY
MOV A,R7
ANL A,#0F0H
ORL A,#06H
MOV R7,A
JMP S_X_LUI
XUNG4_XLUI:
MOV P2,#0CH
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0F0H
ORL A,#0CH
MOV R7,A
DEC R0
DEC R0
DEC R0
S_X_LUI:
CALL DELAY
CALL DELAY
CALL DELAY
MOV P2,#0H
CLR C
MOV A,R0
CJNE A,#253,X_AM_2
MOV R0,#97
DEC R1
RET
X_AM_2:
CJNE A,#254,X_AM_1
MOV R0,#98
DEC R1
RET
X_AM_1:
CJNE A,#255,KT_X_LUI
MOV R0,#99
DEC R1
RET
KT_X_LUI:
RET
;-------------------------
Y_TIEN:
MOV A,R7
ANL A,#0F0H
CJNE A,#0C0H,XUNG2_YTIEN
MOV P2,#60H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#60H
MOV R7,A
JMP S_Y_TIEN
XUNG2_YTIEN:
CJNE A,#90H,XUNG3_YTIEN
MOV P2,#0C0H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#0C0H
MOV R7,A
INC R2
INC R2
INC R2
JMP S_Y_TIEN
XUNG3_YTIEN:
CJNE A,#30H,XUNG4_YTIEN
MOV P2,#90H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#90H
MOV R7,A
JMP S_Y_TIEN
XUNG4_YTIEN:
MOV P2,#30H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#30H
INC R2
INC R2
INC R2
MOV R7,A
S_Y_TIEN:
CALL DELAY
CALL DELAY
CALL DELAY
MOV P2,#0H
MOV A,R2
SUBB A,#100
JC KT_Y_TIEN
MOV R2,A
INC R3
KT_Y_TIEN:
CLR C
RET
;-------------------------
X_TIEN:
MOV A,R7
ANL A,#0FH
CJNE A,#0CH,XUNG2_XTIEN
MOV P2,#06H
CALL DELAY
MOV A,R7
ANL A,#0F0H
ORL A,#06H
MOV R7,A
JMP S_X_TIEN
XUNG2_XTIEN:
CJNE A,#09H,XUNG3_XTIEN
MOV P2,#0CH
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0F0H
ORL A,#0CH
MOV R7,A
INC R0
INC R0
INC R0
JMP S_X_TIEN
XUNG3_XTIEN:
CJNE A,#03H,XUNG4_XTIEN
MOV P2,#09H
CALL DELAY
MOV A,R7
ANL A,#0F0H
ORL A,#09H
MOV R7,A
JMP S_X_TIEN
XUNG4_XTIEN:
MOV P2,#03H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0F0H
ORL A,#03H
MOV R7,A
INC R0
INC R0
INC R0
S_X_TIEN:
CALL DELAY
CALL DELAY
CALL DELAY
MOV P2,#0H
MOV A,R0
SUBB A,#100
JC KT_X_TIEN
MOV R0,A
INC R1
KT_X_TIEN:
CLR C
RET
;------------------------
Y_LUI:
MOV A,R7
ANL A,#0F0H
CJNE A,#0C0H,XUNG2_YLUI
MOV P2,#90H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#90H
MOV R7,A
JMP S_Y_LUI
XUNG2_YLUI:
CJNE A,#90H,XUNG3_YLUI
MOV P2,#30H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#30H
MOV R7,A
DEC R2
DEC R2
DEC R2
JMP S_Y_LUI
XUNG3_YLUI:
CJNE A,#30H,XUNG4_YLUI
MOV P2,#60H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#60H
MOV R7,A
JMP S_Y_LUI
XUNG4_YLUI:
MOV P2,#0C0H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#0C0H
DEC R2
DEC R2
DEC R2
MOV R7,A
S_Y_LUI:
CALL DELAY
CALL DELAY
CALL DELAY
MOV P2,#0H
CLR C
MOV A,R2
CJNE A,#253,Y_AM_2
MOV R2,#97
DEC R3
RET
Y_AM_2:
CJNE A,#254,Y_AM_1
MOV R2,#98
DEC R3
RET
Y_AM_1:
CJNE A,#255,KT_Y_LUI
MOV R2,#99
DEC R3
RET
KT_Y_LUI:
RET
;-------------------------------
Z_TIEN:
MOV A,R7
ANL A,#0F0H
CJNE A,#0C0H,XUNG2_ZTIEN
MOV P1,#60H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#60H
MOV R7,A
JMP S_Z_TIEN
XUNG2_ZTIEN:
CJNE A,#90H,XUNG3_ZTIEN
MOV P1,#0C0H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#0C0H
MOV R7,A
INC R4
INC R4
INC R4
JMP S_Z_TIEN
XUNG3_ZTIEN:
CJNE A,#30H,XUNG4_ZTIEN
MOV P1,#90H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#90H
MOV R7,A
JMP S_Z_TIEN
XUNG4_ZTIEN:
MOV P1,#30H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#30H
INC R4
INC R4
INC R4
MOV R7,A
S_Z_TIEN:
CALL DELAY
CALL DELAY
CALL DELAY
MOV P1,#0H
MOV A,R4
SUBB A,#100
JC KT_Z_TIEN
MOV R4,A
INC R5
KT_Z_TIEN:
CLR C
RET
;--------------------------------------
Z_LUI:
MOV A,R7
ANL A,#0F0H
CJNE A,#0C0H,XUNG2_ZLUI
MOV P1,#90H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#90H
MOV R7,A
JMP S_Z_LUI
XUNG2_ZLUI:
CJNE A,#90H,XUNG3_ZLUI
MOV P1,#30H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#30H
MOV R7,A
DEC R4
DEC R4
DEC R4
JMP S_Z_LUI
XUNG3_ZLUI:
CJNE A,#30H,XUNG4_ZLUI
MOV P1,#60H
CALL DELAY
MOV A,R7
ANL A,#0FH
ORL A,#60H
MOV R7,A
JMP S_Z_LUI
XUNG4_ZLUI:
MOV P1,#0C0H
CALL HIENTHI_LCD
MOV A,R7
ANL A,#0FH
ORL A,#0C0H
DEC R4
DEC R4
DEC R4
MOV R7,A
S_Z_LUI:
CALL DELAY
CALL DELAY
CALL DELAY
MOV P1,#0H
CLR C
MOV A,R4
CJNE A,#253,Z_AM_2
MOV R4,#97
DEC R3
RET
Z_AM_2:
CJNE A,#254,Z_AM_1
MOV R4,#98
DEC R5
RET
Z_AM_1:
CJNE A,#255,KT_Z_LUI
MOV R4,#99
DEC R5
RET
KT_Z_LUI:
RET
;-------------------------------------
KEP_VAT:
SETB ROLE_KEP
CLR DC_KEP
MOV P2,#2H
JB P3.7,$
SETB DC_KEP
JMP K2
NHA_VAT:
CLR ROLE_KEP
CLR DC_KEP
MOV P2,#3H
JB P3.7,$
SETB DC_KEP
JMP K3
;----------------------------------------
LUU_GIA_TRI_1:
MOV A,RV
CJNE A,#0,LUU_GIA_TRI_2
MOV DCB_X1,R1
MOV DCB_X2,R0
; MOV DCB_Y1,R3
; MOV DCB_Y2,R2
; MOV DCB_Z1,R5
; MOV DCB_Z2,R4
MOV RV,#1
MOV A,#"O"
ACALL HIENTHI
MOV A,#"K"
ACALL HIENTHI
MOV A,#"1"
ACALL HIENTHI
JNB P3.7,$
RET
LUU_GIA_TRI_2:
MOV DCB_X3,R1
MOV DCB_X4,R0
; MOV DCB_Y3,R3
; MOV DCB_Y4,R2
; MOV DCB_Z3,R5
; MOV DCB_Z4,R4
MOV RV,#2
MOV A,#"O"
ACALL HIENTHI
MOV A,#"K"
ACALL HIENTHI
MOV A,#"2"
ACALL HIENTHI
JNB P3.7,$
RET
;----------------------------------------------------------------------------
NHAY_KT_KEYPAD:
JMP KT_KEYPAD
AU_TO:
MOV A,RV
CJNE A,#2H,NHAY_KT_KEYPAD
AUTO_LUI:
MOV A,R1
CJNE A,DCB_X1,AUTO_X_LUI
MOV A,R0
CJNE A,DCB_X2,AUTO_X_LUI
MOV P0,#0
CALL DELAY
CALL DELAY
CALL DELAY
JMP AUTO_TIEN
AUTO_X_LUI:
CALL X_LUI
JMP AUTO_LUI
AUTO_TIEN:
MOV A,R1
CJNE A,DCB_X3,AUTO_X_TIEN
MOV A,R0
CJNE A,DCB_X4,AUTO_X_TIEN
MOV P0,#0
CALL DELAY
CALL DELAY
CALL DELAY
JMP LAP
AUTO_X_TIEN:
CALL X_TIEN
JMP AUTO_TIEN
LAP:
DJNZ THANH,AUTO_LUI
JMP $
;------------------------------------------------------------
HIENTHI_LCD:
MOV A,#01H
ACALL COMMAND
MOV A,#0EH
ACALL COMMAND
MOV A,#"X"
ACALL HIENTHI
MOV A,#"="
ACALL HIENTHI
MOV A,R1
MOV B,#100
DIV AB
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,B
MOV B,#10
DIV AB
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,B
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,#"."
ACALL HIENTHI
MOV A,R0
MOV B,#10
DIV AB
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,B
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,#0C0H
ACALL COMMAND
MOV A,#"Y"
ACALL HIENTHI
MOV A,#"="
ACALL HIENTHI
MOV A,R3
MOV B,#100
DIV AB
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,B
MOV B,#10
DIV AB
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,B
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,#"."
ACALL HIENTHI
MOV A,R2
MOV B,#10
DIV AB
MOVC A,@A+DPTR
ACALL HIENTHI
MOV A,B
MOVC A,@A+DPTR
ACALL HIENTHI
RET
;----------------
BANGMA:
DB "0","1","2","3","4","5","6","7","8","9"
;------------------
DELAY:
MOV R6,#250
L2: DJNZ R6,L2
RET
;--------------------
COMMAND:
ACALL READY
MOV P1,A
CLR RS
CLR RW
SETB E
CLR E
RET
;------------------------------
HIENTHI:
ACALL READY
MOV P1,A
SETB RS
CLR RW
SETB E
CLR E
RET
;--------------------------------
READY:
SETB P1.7
CLR RS
SETB RW
BACK:
CLR E
SETB E
JB P1.7,BACK
RET
END
Các file đính kèm theo tài liệu này:
- Thiết kế tay máy 3 bậc tự do (thuyết minh).doc