Các dãy thanh ghi: gồm 4 dãy thanh ghi, mỗi day thanh ghi chứa 8 thanh ghi. Địa chỉ truy xuất từ 00H đến 1FH. Kiểu truy xuất dữ liệu là trực tiếp, gián tiếp và thanh ghi. Vùng này cho phép truy xuất dữ liệu nhanh, lệnh truy xuất đơn giản và ngắn gọn. Ở chế độ mặc định thì dãy thanh ghi tích cực là dãy thanh ghi 0. Có thể thay đổi dãy tích cực bằng cách thay đổi các bit chọn dãy thanh ghi RS1 và RS0 trong thanh ghi PSW. Nếu chương trình chỉ sử dụng dãy thanh ghi 0 thì ta có thể sử dụng vùng nhớ từ 08H đến 1FH cho các mục đích khác. Nhưng nếu trong chương trình có sử dụng các dãy thanh ghi khác thì phải cẩn thận khi sử dụng vùng nhớ này làm vùng nhớ dữ liệu.
33 trang |
Chia sẻ: lethao | Lượt xem: 1767 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Đề tài Xe robot điều khiển bằng bánh xích, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hay đổi phần cứng, khi đó ta chỉ cần thay đổi phần mềm lập trình là làm được.
Cụ thể ở đồ án này nhóm em giới thiệu ứng dụng của chip vi điều khiển họ 8951 mà điển hình là chip 89V51, đây là chip đời sau của họ 8051. Dùng vào Robot điều khiển bằng tay đơn giản, đây là một ứng dụng nhỏ của vi điều khiển dùng trong lĩnh vưc tự động hóa. Mục đích tìm hiểu và ứng dụng họ Vi Điều Khiển nhằm tạo ra những sản phẩm, thiết bị tiên tiến hơn ứng dụng vào thực tế làm tăng năng xuất …Ngoài ra tập đồ án này cũng có thể dùng làm tài liệu tham khảo cho các bạn khóa sau nâng cao ứng dụng của Chip vi điều khiển.
1.2 : Chip vi điều khiển 89V51:
1.2.1 : Khái quát chung:
89V51RB2/RC2/RD2 thuộc họ vi điều khiển 80C51 có 64kB Flash và 1024bytes (1kB) bộ nhớ dữ liệu RAM.
Tính năng đặc biệt của 89V51RB2/RC2/RD2 là ở chế độ hoạt động mode X2. Người thiết kế có thể quy ước chạy ứng dụng của mình ở chế độ 12 chu kỳ xung nhịp trên 1 chu kỳ máy hoặc chọn chế độ X2 với 6 chu kỳ xung nhịp trên 1 chu kỳ máy.
Bộ nhớ chương trình Flash cho phép lập trình ISP hoặc/và song song. Chế độ lập trình song song được đưa ra để thích ứng với tốc độ cao, giảm thời gian và giá thành.
Bộ nhớ chương trình 89V51RB2/RC2/RD2 có tính năng IAP (In-Application Programmable), cho phép cấu hình lại bộ nhớ Flash trong khi chạy ứng dụng.
1.2.2 : Tính năng:
* Hoạt động ở 5VDC trong tầm tần số dao động đến 40MHz.
* 16/32/64 kB bộ nhớ chương trình trên chip với tính năng ISP (In-System Programming) và IAP (In-Application Programming)
* Sử dụng chế độ 12 chu kì xung nhịp (mặc định) hoặc 6 chu kỳ xung nhịp được chọn bằng phần mềm hoặc ISP
* SPI (Serial Peripheral Interface) và tăng cường UART
* 5 PCA (Programmable Counter Array) với chức năng PWM / capture/ compare 16bits.
* 4 Port I/O (xuất nhập) 8 bit. 3 Port có dòng lớn (16mA trên mỗi chân)
* 3 Timers/Couters 16 bit
* Watchdog Timer có thể lập trình được
* 8 nguồn ngắt với 4 mức độ ưu tiên.
* 2 thanh ghi DPTR
* Chế độ IEM mức thấp
* Thích hợp mức Logic của TTL và CMOS
* Phát hiện nguồn yếu
* Chế độ nguồn yếu
Hình Sơ đồ khối và sơ đồ chân của 89V51RB2/RC2/RD2
1.2.3 : Chức năng của các chân:
– Port 0: (P0.0 đến P0.7) có số chân từ 39 đến 32, Port xuất / nhập.
Port 0 là một port xuất/nhập song hướng cực máng hở 8 bit. Nếu được sử dụng như là một ngõ xuất thì mỗi chân có thể kéo 8 ngõ vào TTL. Khi mức 1 được viết vào các chân của port 0, các chân này có thể được dùng như là các ngõ nhập tổng trở cao.
Port 0 có thể được định cấu hình để hợp kênh giữa bus địa chỉ và bus dữ liệu (phần byte thấp) khi truy cập đến bộ nhớ dữ liệu và bộ nhớ chương trình ngoài. Ở chế độ này, P0 có các điện trở pullup bên trong.
Port 0 cũng nhận các byte code (byte mã chương trình) khi lập trình Flash, và xuất ra các byte code khi kiểm tra chương trình. Cần có các điện trở pullup bên ngoài khi thực hiện việc kiểm tra chương trình.
Port 1: (P1.0 đến P1.7) có số chân từ 1 đến 8, Port xuất / nhập.
–Port 1 là một port xuất/nhập song hướng 8 bit có các điện trở pullup bên trong. Các bộ đệm ngõ ra của port 1 có thể kéo hoặc cung cấp 4 ngõ nhập TTL. Khi mức 1 được viết vào các chân của port 1, chúng được kéo lên cao bởi các điện trở pullup nội và có thể được ung như là các ngõ nhập. Nếu đóng vai trò là các ngõ nhập, các chân của port 1 (được kéo xuống thấp qua các điện trở bên ngoài) sẽ cấp dòng IIL do các điện trở pullup bên trong. P1.5, P1.6, P1.7 có dòng điều khiển ra cao 16mA.
Port 1 cũng đóng vai trò là ngõ vào của địa chỉ byte thấp ở chế độ lập trình cho ROM và kiểm tra.
P1.0 – T2 (Chân xuất / nhập): Ngõ vào đếm của Timer/ Counter 2 hoặc ngõ ra xung (Clock out) từ Timer/ Counter 2.
P1.1 – T2EX (Chân nhập): Điều khiển hướng và khởi động timer/ Counter 2 ở chế độ Capture/reload.
P1.2 – ECI (Chân nhập): Ngõ vào xung nhịp. Tín hiệu này là nguồn xung nhịp ngoài cho chức năng PCA.
P1.3 – CEX0 (Chân xuất / nhập): Ngõ xuất nhập (I/O) bên ngoài của Capture/compare cho PCA Module 0.
P1.4 (Chân xuất / nhập):
+ : Chọn cổng phụ vào cho SPI.
+ CEX1: Ngõ xuất nhập (I/O) bên ngoài của Capture/compare cho PCA Module1.
P1.5 (Chân xuất / nhập):
+ MOSI: Ngõ ra chính, ngõ vào phụ cho SPI.
+ CEX2: Ngõ xuất nhập (I/O) bên ngoài của Capture/compare cho PCA Module2.
P1.6 (Chân xuất / nhập):
+ MISO: Ngõ vào chính, ngõ ra phụ cho SPI.
+ CEX3: Ngõ xuất nhập (I/O) bên ngoài của Capture/compare cho PCA Module3.
P1.7 (Chân xuất / nhập):
+ SCK: Ngõ ra chính, ngõ vào phụ cho SPI.
+ CEX4: Ngõ xuất nhập (I/O) bên ngoài của Capture/compare cho PCA Module4.
Port 2 (P2.0 đến P2.7) có số chân từ 21 đến 28, Port xuất / nhập.
Port 2 là một port xuất/nhập song hướng 8 bit có các điện trở pullup bên trong. Các bộ đệm ngõ ra của port 2 có thể kéo hoặc cung cấp 4 ngõ vào TTL. Khi các mức 1 được viết vào các chân của port 2 thì chúng được kéo lên cao bởi các điện trở pullup nội và có thể được dùng như các ngõ vào. Khi được dùng như các ngõ vào, các chân của port 2 (được kéo xuống qua các điện trở bên ngoài) sẽ cấp dòng IIL do có các điện trở pullup bên trong.
Port 2 là địa chỉ byte cao của khi đọc từ bộ nhớ chương trình ngoài và khi truy cập bộ nhớ dữ liệu ngoài dùng các địa chỉ 16 bit (MOVX @DPTR). Ở chế độ này, nó dùng các điện trở pullup nội “mạnh” khi phát ra các mức 1.
Port 2 cũng nhận các bit cao của địa chỉ và một vài tín hiệu điều khiển khi lập trình và kiểm tra bộ nhớ ROM.
Port 3 (P3.0 đến P3.7) có số chân từ 10 đến 17, Port xuất / nhập
Port 3 là một port xuất-nhập song hướng 8 bit có điện trở pullup nội bên trong. Các bộ đệm ngõ ra của port 3 có thể kéo hoặc cung cấp 4 ngõ vào TTL. Khi các mức 1 được viết vào các chân của port 3 thì chúng được kéo lên cao bởi các điện trở pullup nội và có thể được dùng như các ngõ vào. Khi được dùng như các ngõ vào, các chân của port 3 (được kéo xuống qua các điện trở bên ngoài) sẽ cấp dòng IIL do có các điện trở pullup bên trong.
Port 3 cũng nhận một số tín hiệu điều khiển và một phần bit địa chỉ cao trong quá trình lập trình và kiểm tra.
P3.0 – RXD (Chân nhập): Ngõ vào của Port nối tiếp.
P3.1 – TXD (Chân xuất): Ngõ ra của Port nối tiếp.
P3.2 – (Chân nhập): Ngõ vào ngắt ngoài 0.
P3.3 – (Chân nhập): Ngõ vào ngắt ngoài 1.
P3.4 – T0 (Chân nhập): Ngõ vào đếm của Timer/Counter 0.
P3.5 – T1 (Chân nhập): Ngõ vào đếm của Timer/Counter 1.
P3.6 – (Chân xuất): Điều khiển ghi vào bộ nhớ dữ liệu ngoài.
P3.7 – (Chân xuất): Điều khiển đọc từ bộ nhớ dữ liệu ngoài.
– (Program Store Enable): Chân 29, chân xuất / nhập.
Khi sử dụng bộ nhớ chương trình trong chip, không hoạt động (mức cao). Khi sử dụng bộ nhớ chương trình ngoài, được tích cực 2 lần trong mỗi chu kì máy, ngoại trừ sự khích hoạt được bỏ qua trong khi kết nối bộ nhớ chương trình ngoài . Sự thay đổi cưỡng bức mức cao sang thấp trên trong khi ngõ vào RST đang ở mức cao trong hơn 10 chu kì máy sẽ đưa vi điều khiển vào chế độ lập trình host từ bên ngoài.
RST (Reset): Chân 9, chân nhập.
Trong khi bộ dao động đang chạy, vi điều khiển sẽ được Reset khi đặt mức cao vào chân này trong 2 chu kỳ máy. Nếu chân được điều khiển bằng cách chuyển tiếp mức cao sang thấp trong khi chân RST giữ ở mức cao thì Vi điều khiển sẽ vào chế độ host từ bên ngoài, còn không thì Vi điều khiển sẽ vào chế độ hoạt động bình thường.
– (External Access Enable): Chân 31, chân nhập.
Chân phải được kết nối với điện áp VSS khi cho phép vi điều khiển truy cập mã từ bộ nhớ chương trình bên ngoài. phải được đưa lên điện áp VDD khi thực thi chương trình bên trong. Tuy nhiên, khóa bảo vệ level 4 sẽ vô hiệu hóa , chương trình thực thi chỉ chương thực hiện từ bộ nhớ chương trình bên trong. Chân có thể chịu đựng điện áp đến 12V.
– (Address Latch Enable): Chân 30, chân xuất / nhập.
ALE là tín hiệu ngõ ra để chốt byte thấp của địa chỉ trong khi truy cập bộ nhớ ngoài. Chân này cũng là ngõ nhập xung lập trình () khi lập trình Flash.
Khi hoạt động bình thường, ALE được phát với một tỷ lệ không đổi là 1/6 tần số bộ dao động và có thể được dùng cho các mụch đích timing và clocking bên ngoài. Một xung ALE sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài. Tuy nhiên, nếu AO được đưa lên mức 1 sẽ vô hiệu hóa chân .
XTAL1 và XTAL2: chân 18 và 19
XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại dao động nghịch được cấu hình để dùng như một bộ dao động trên chip.
– VDD và VSS: Chân nguồn và chân Gound của Vi điều khiển.
1.2.4 . Bộ nhớ:
1.2.4.1. Bộ nhớ chương trình:
89V51RB2/RC2/RD2 gồm có 2 khối bộ nhớ chương trình bên trong. Block 0 có 16/32/64 kB và được phân chia thành 128/256/512 sectors, mỗi sector gồm có 128 Bytes. Block 1 bao gồm chương trình IAP/ISP và có thể cho phép nó trở thành 8kB đầu tiên trong bộ nhớ user code. Block 0 này được kích hoạt bằng cách kết hợp Software Reset Bit (SWR) tại FCF.1 và Bank Select Bit (BSEL) tại FCF.0 (địa chỉ RAM B1H).
Quá trình tuần tự sau khi nguồn được bật, chương trình boot sẽ tự động thực thi và cố gắng lấy tín hiệu autobaud từ máy chủ. Nếu không có quá trình này xảy ra trong vòng 400ms và bit cờ SoftICE không được bật, chương trình boot sẽ tự động vào đoạn chương trình user code.
1.2.4.2. Bộ nhớ dữ liệu:
P89V51RB2/RC2/RD2 có 1 kB bộ nhớ RAM được chia thành 3 phần:
–128 Byte thấp (00H to 7FH) là địa chỉ truy xuất trực tiếp và gián tiếp. Được chia làm 3 vùng: RAM đa chức năng, RAM định địa chỉ từng bit và các dãy thanh ghi.
+ Vùng RAM đa chức năng: gồm có 80 Byte RAM. Địa chỉ truy xuất từ 30H đến 7FH. Mọi địa chỉ trên vùng RAM đa chức năng đều có thể truy xuất theo kiểu trực tiếp hoặc gián tiếp.
+ Vùng RAM định địa chỉ bit: gồm 128 bit được định địa chỉ. Địa chỉ truy xuất từ 20H đến 2FH. Kiểu truy xuất dữ liệu là trực tiếp, hoặc gián tiếp hoặc theo từng bit. Vùng RAM này cho phép xử lý từng bit dữ liệu riêng lẻ mà không ảnh hưởng đến các bit khác trong Byte.
+ Các dãy thanh ghi: gồm 4 dãy thanh ghi, mỗi day thanh ghi chứa 8 thanh ghi. Địa chỉ truy xuất từ 00H đến 1FH. Kiểu truy xuất dữ liệu là trực tiếp, gián tiếp và thanh ghi. Vùng này cho phép truy xuất dữ liệu nhanh, lệnh truy xuất đơn giản và ngắn gọn. Ở chế độ mặc định thì dãy thanh ghi tích cực là dãy thanh ghi 0. Có thể thay đổi dãy tích cực bằng cách thay đổi các bit chọn dãy thanh ghi RS1 và RS0 trong thanh ghi PSW. Nếu chương trình chỉ sử dụng dãy thanh ghi 0 thì ta có thể sử dụng vùng nhớ từ 08H đến 1FH cho các mục đích khác. Nhưng nếu trong chương trình có sử dụng các dãy thanh ghi khác thì phải cẩn thận khi sử dụng vùng nhớ này làm vùng nhớ dữ liệu.
Thanh ghi chức năng đặc biệt (special function registers) là địa chỉ chỉ truy cập trực tiếp, có địa chỉ từ 80H đến FFH.
768 Byte RAM mở rộng (000H to 2FFH) là địa chỉ truy cập gián tiếp bằng cách dùng lệnh MOVX và xóa bằng bit EXTRAM. Vùng RAM này sử dụng giống như 1 vùng RAM ngoài. Chúng ta có thể kết hợp với RAM ngoài theo 2 trường hợp bằng cách sử dụng bit EXTRAM trong thanh ghi AUXR.
Tổ chức bộ nhớ
1.2.5 : Thanh ghi:
1.2.5.1. Thanh ghi AUXR:
1.2.5.2. Thanh ghi AUXR1:
DPS (Data pointer select):
* Mức 0: DPTR0 được chọn.
* Mức 1: DPTR1 được chọn.
Sử dụng thanh ghi DPTR
1.2.5.3. Các thanh ghi và hoạt động của Bộ Timer/Counters 2:
Timer 2 là bộ Timer/Counter 16 bit, có thể hoạt động ở 2 trường hợp hoặc là Timer hoặc là Counter. Hai trường hợp này được thiết lập bằng bit trong thanh ghi T2CON. Timer 2 có 4 chế độ hoạt động: Capture, tự động nạp lại (Auto-reload) (đếm lên hoặc đếm xuống), Clock-out, và tạo tốc độ Baud. Các chế độ hoạt động của Timer 2 được chọn theo bảng sau sử dung thanh ghi T2CON và T2MOD.
89V51RB2/RC2,RD2 sử dụng 6 thanh ghi để truy suất và điều khiển Timer 2: T2CON, T2MOD, TH2, TL2, RCAP2H, RCAP2L.
1.2.5.4. Thanh ghi điều khiển Timer/Counter 2 T2CON:
Mô tả bit của thanh ghi điều khiển Timer/Counter 2 T2CON
Bit
Ký hiệu
Mô tả
7
TF2
Cờ tràn của Timer 2 được set khi Timer 2 tràn và phải được xóa bằng phần mềm. TF2 sẽ không được set khi bit RCLK hoặc TCLK ở mức 1 hoặc Timer 2 ở chế độ Clock-out.
6
EXF2
Cờ ngắt ngoài Timer 2 được thiết lập khi Timer 2 ở chế độ Reload, capture, hoặc baud-rate, cờ cho phép ngắt ngoài EXEN2 = 1 và có một sự chuyển tiếp xảy ra trên chân T2EX. Nếu ngắt Timer 2 được phép, EXF2 = 1 gây ra cho CPU một ngắt Timer 2. EXF2 phải được xóa bằng phần mềm
5
RCLK
Cờ xung thu. Khi RCLK = 1, UART ung Timer 2 tạo xung thu trong chế độ 1 và 3. Khi RCLK = 0, Timer 1 được sử dụng tạo xung thu.
4
TCLK
Cờ xung truyền. Khi RCLK = 1, UART ung Timer 2 tạo xung truyền trong chế độ 1 và 3. Khi RCLK = 0, Timer 1 được sử dụng tạo xung truyền.
3
EXEN2
Cờ cho phép ngoài của Timer 2. Khi EXEN2 = 1, nếu Timer 2 không ung làm tốc độ Baud cho Port nối tiếp thì nó cho phép lấy kết quả tức thời ở chế độ capture hoặc nạp lại thanh ghi tức thời trong chế độ reload. EXEN2 = 0 sẽ bỏ qua sự kiện trên chân T2EX.
2
TR2
Điều khiển bắt đầu/ dừng cho Timer 2. Mức 1 cho phép Timer 2 chạy.
1
Bit chọn chức năng đếm hoặc định thời cho Timer 2.
0 = bộ định thời.
1 = đếm sự kiện bên ngoài.
0
Cờ Capture/Reload. Khi thiết lập, capture sẽ xuất hiện khi có sự chuyển tiếp trên chân T2EX nếu EXEN2 = 1. Khi xóa, auto-reloads sẽ xuất hiện hoặc Timer 2 tràn hoặc có sự chuyển tiếp trên chân T2EX khi EXEN2 = 1. Khi RCLK = 1 hoặc TCLK = 1, bit này được bỏ qua, Timer tự động nạp lại khi Timer 2 tràn.
1.2.5.5. Thanh ghi T2MOD:
Mô tả bit của thanh ghi điều khiển chế độ Timer/Counter 2 T2MOD
Bit
Ký hiệu
Mô tả
1
T2OE
Cho phép ngõ ra Timer 2. Chỉ dùng trong chế độ Clock-out có thể lập trình
0
DCEN
Cho phép đếm xuống. Khi thiết lập, bit này cho phép Timer 2 cấu hình như một bộ đếm xuống.
1.2.5.6. Các chế độ của Timer/Counter 2:
Các chế độ hoạt động của Timer 2
RCLK + TCLK
TR2
T2OE
Chế độ
0
0
1
0
16 bit tự động nạp lại
0
1
1
0
16 bit Capture
0
0
1
1
Clock-out có thể lập trình
1
X
1
0
Nguồn phát tốc độ Baud
X
X
0
X
Tắt Timer 2
1.2.5.7. Thanh ghi CMOD (PCA Counter Mode):
Bit
Ký hiệu
Chức năng
7
CIDL
Điều khiển trạng thái rỗi của Counter PCA. CIDL = 0 sẽ cho Counter PCA tiếp tục hoạt động bất chấp đang trong trạng thái rỗi. CIDL = 1 sẽ lập trình cho nó không hoạt động trong trạng thái rỗi.
6
WDTE
Cho phép Watchdog Timer trên modules 4 (1: cho phép hoạt động).
2 – 1
CPS1 – CPS0
Lựa chọn nguồn xung đếm cho PCA.
0
ECF
Cho phép ngắt khi tràn Counter PCA.
Nguồn xung nhịp cho PCA được chọn từ 2 bit CPS1 và CPS2 trên thanh ghi CMOD
CPS1
CPS2
Chọn xung nhịp cho PCA
0
0
1/6 fOSC
0
1
1/2 fOSC
1
0
Tràn từ Timer 0.
1
1
Xung nhịp ngoài tại chân ECI (P1.2). Tốc độ lớn nhất 1/4 fOSC
1.2.5.8. Thanh ghi CCON (PCA Counter Control):
Bit
Kí hiệu
Chức năng
7
CF
Cờ đếm tràn PCA. Được thiết lập bằng phần cứng khi đếm tràn. CF là cờ ngắt khi ECF = 1. CF được thiết lập bằng phần cứng hoặc phần mềm nhưng chỉ xóa được bằng phần mềm.
6
CR
Bit điều khiển chạy counter PCA. Được thiết lập bằng phần mềm. 1: chạy. 0: dừng.
4
CCF4
Cờ ngắt modul PCA 4. Được thiết lập bằng phần cứng khi xuất hiện match hoặc capture. Được xóa bằng phần mềm.
3
CCF3
Cờ ngắt modul PCA 3.
2
CCF2
Cờ ngắt modul PCA 2.
1
CCF1
Cờ ngắt modul PCA 1.
0
CCF0
Cờ ngắt modul PCA 0.
Hình 1.43 – Hoạt động ngắt của PCA
1.2.5.9. Thanh ghi CCAPMn (PCA modules compare/capture):
Mỗi Modules có 1 thanh ghi, các thanh ghi bao gồm các bit điều khiển chế độ hoạt động cho mỗi modules.
Bit
Kí hiệu
Chức năng
6
ECOMn
Cho phép bộ so sánh. ECOMn = 1 cho phép chức năng so sánh.
5
CAPPn
Cho phép capture cạnh lên.
4
CAPNn
Cho phép capture cạnh xuống.
3
MATn
Khi MATn = 1, bộ đếm PCA kết hợp với thanh ghi compare/capture của Modules này để thiết lập bit CCFn tạo ra một ngắt.
2
TOGn
Đổi trạng thái ngõ ra. TOGn = 1, bộ đếm PCA kết hợp với thanh ghi compare/capture của Modules này gây ra sự đổi trạng thái trên chân CEXn.
1
PWMn
Chế độ điều chế độ rộng xung (PWM). PWMn = 1 cho phép chân CEXn dùng để điều chế độ rộng xung ngõ ra.
0
ECCFn
Cho phép ngắt CCF. Cho phép cờ ngắt CCFn compare/capture trong thanh ghi CCON hoạt động ở chế độ ngắt.
1.2.5.10. Các chế độ hoạt động của PCA:
ECOMn
CAPPn
CAPNn
MATn
TOGn
PWMn
ECCFn
Chế độ hoạt động
0
0
0
0
0
0
0
Không hoạt động.
X
1
0
0
0
0
X
Capture 16 bit kích cạnh lên trên chân CEXn
X
0
1
0
0
0
X
Capture 16 bit kích cạnh xuống trên chân CEXn
X
1
1
0
0
0
X
Capture 16 bit kích cạnh trên chân CEXn
1
0
0
1
0
0
X
Timer 16 bit
1
0
0
1
1
0
X
Ngõ ra tốc độ cao 16 bit.
1
0
0
0
0
1
0
PWM 8 bit.
1
0
0
1
X
0
X
Đồng hồ Watchdog.
1.2.6 : Chế độ Auto-reload (đếm lên hoặc đếm xuống) (Chế độ tự động nạp lại 16 bit):
Trong chế độ này, Timer 2 có thể cấu hình là Timer hoặc Counter (sử dụng bit ) và có thể lập trình để đếm lên hoặc đếm xuống (sử dụng bit DCEN). Khi Reset, DCEN = 0 và Timer 2 mặc định là đếm lên. Nếu bit DCEN được thiết lập, Timer 2 có thể đếm lên hoặc đếm xuống phụ thuộc vào trạng thái của chân T2EX.
Trong chế độ này, có 2 chế độ được chọn bằng bit EXEN2. Nếu EXEN2 = 0 thì Timer 2 đếm lên đến FFFFH và thiết lập cờ tràn (overflow flag). Đồng thời thanh ghi của Timer 2 được nạp lại với giá trị 16 bit trong RCAP2L và RCAP2H. Giá trị RCAP2L và RCAP2H bởi phần mềm.
Timer 2 trong chế độ Auto-reload (DCEN = 0)
Tần số Auto-reload khi Timer 2 đếm lên được tính như sau:
SupplyFrequency là tần số fOSC ( = 0) hoặc tần số tín hiệu trên chân T2 ( = 1)
Nếu EXEN2 = 1, nạp lại 16 bit được kích bởi cờ tràn TF2 hoặc một sự chuyển tiếp tại chân T2EX. Sự chuyển tiếp này sẽ thiết lập bit EXF2. Ngắt Timer 2, nếu cho phép sẽ gây ra ngắt khi TF2 hoặc T2EX ở mức 1.
Trong hình 2.11, DCEN = 1 và Timer 2 cho phép đếm lên hoặc đếm xuống. Chế độ này chân T2EX điều khiển hướng đếm. T2EX = 1 sẽ đếm lên. Timer 2 sẽ tràn tại FFFFH và thiết lập cờ tràn. Hoạt động ngắt sẽ xảy ra nếu cho phép ngắt. Timer tràn sẽ nạp lại giá trị 16 bit trong RCAP2L và RCAP2H vào thanh ghi TH2 và TL2. T2EX = 1 sẽ đếm xuống. Timer sẽ tràn dưới (underflow) khi TH2 và TL2 bằng giá trị của RCAP2L và RCAP2H. Timer 2 underflow thiết lập cờ TF2 và nạp giá trị FFFFH vào thanh ghi TH2 và TL2. Cờ ngắt ngoài EXF2 được chốt khi Timer 2 underdlow hoặc overflow. Bit EXF2 có thể được ung như là bit thứ 17 nếu cần.
Timer 2 trong chế độ Auto-reload (DCEN = 1)
1.2.7 Chế độ Clock-out có thể lập trình (Programmable clock-out):
Chế độ này tạo ra xung có độ rộng 50% có thể lập trình được tại chân ngõ ra T2 (chân này co 2 chức năng). Nó có thể lập trình như sau:
Tần số có thể thiết lập bằng Timer/Counter 2.
Ngõ ra là xung có độ rộng 50% thay đổi từ 122 Hz đến 8 MHz tại tần số hoạt động 16 MHz.
Cấu hình Timer/Counter 2 là nguồn phát xung, bit = 0, T20E = 1, TR2 =1 để bắt đầu hoạt động. Tần số Clock-out tùy thuộc vào tần số oscillator và giá trị nạp lại của thanh ghi Capture Timer 2 (RCAP2L và RCAP2H).
Chế độ Clock-out và chế độ baud-rate không gây ra hoạt động ngắt.
Chế độ ngõ ra tốc độ cao (High speed output mode):
Trong chế độ này, ngõ ra CEXn được kết nối với Modul PCA sẽ thay đổi mỗi khi có sự bằng nhau giữa thanh ghi PCA counter thanh ghi Capture của modul. Để chế độ hoạt động này xảy ra thì các bit TOG, MAT, và ECOM trong thanh ghi CCAPMn của modul đó phải ở mức 1.
PCA ở chế độ High speed output
1.2.9. Chế độ điều chế độ rộng xung (Pulse width modulator mode):
Tất cả các Modul đều có thể sử dụng như là ngõ ra PWM. Tần số ngõ ra được lấy từ PCA timer. Tất cả các modul sẽ có tần số ngõ ra giống nhau vì sử dụng chung PCA timer. Độ rộng xung của mỗi modul phụ thuộc vào giá trị của thanh ghi CCAPnL. Khi giá trị thanh ghi CL của thanh ghi PCA nhỏ hơn giá trị thanh ghi CCAPnL của modul thì ngõ ra sẽ ở mức thấp. Khi nó bằng hoặc lớn hơn thì ngõ ra ở mức cao. Khi CL tràn từ FFH về 00H, CCAPnL được nạp lại từ thanh ghi CCAPnH. Bit PWM và ECOM trong thanh ghi CCAPMn của modul phải ở mức 1.
Hình 1.47 – PCA ở chế độ Pulse width modulator (PWM)
1.2.10. Hoạt động ngắt:
89V51RB2/RC2/RD2 có 8 nguồn ngắt với 4 mức độ ưu tiên.
Bảng các ngắt
Mô tả
Cờ ngắt
Địa chỉ ngắt
Cho phép ngắt
Ưu tiên ngắt
Ngắt ngoài 0
IE0
0003H
EX0
PX0 – PX0H
Brown-out
––
004BH
EBO
PBO – PBOH
Timer 0
TF0
000BH
ET0
PT0 – PT0H
Ngắt ngoài 1
IE1
0013H
EX1
PX1 – PX1H
Timer 1
TF1
001BH
ET1
PT1 – PT1H
PCA
CF – CCFn
0033H
EC
PPC – PPCH
UART – SPI
TI – RI – SPIF
0023H
ES
PS – PSH
Timer 2
TF2 – EXF2
002BH
ET2
PT2 – PT2H
Cấu trúc ngắt của 89V51RB2/RC2/RD2
1.3. IC 2803:
Đây là IC đệm đảo ngõ ra dùng trong trường hợp muốn ngõ ra có mức điện áp ổn định không đổi thường được dùng ghép với ngõ ra của vi xử lý.
Thông số kỹ thuật IC 2803.
Chương II
PHẦN CƠ SỞ THỰC HÀNH
2.1 Thiết kế phần cứng.
2.1.1 Giới thiệu các thành phần của board mạch chính.
Sơ đồ nguyên lý Board mạch chính
Board Layout
2.1.2 Nhiệm vụ của các khối.
2.1.2.1 Khối Vi xử lý.
Khối này bao ngồm 1 IC Vi xử lý 89V51 kết nối với 1 cổng COM và 1 Connector 4 chân. Công dụng xử lý các DATA khi ta nạp vào Chip này thông qua Connector 4 chân,và được điều khiển từ bên ngoài thông qua cổng COM. Ngõ ra của khối này được lấy từ Port 1 (P1.2 đến P1.6) đưa đến khối OPTO và Khối RELAY để điều khiển motor.
2.1.2.2 khối nguồn.
Được cấp nguồn thông qua 2 bình ACQUY 12V. trong đó 1 bình nuôi Vi xử lý riêng biệt, 1 bình còn lại được cấp cho 2 Motor chuyển động, và cấp cho khối RELAY đóng ngắt Motor (có cầu chì bảo vệ).
2.1.2.3 Khối đệm.
Dùng IC ULN 2803.
2.1.2.4 Khối RELAY và Công suất.
2 Relay Đóng ngắt, đảo chiều quay của motor.
Khối Công Suất dùng 2 FET (IRF540).
2.1.2.5 khối cách ly.
Dùng 4 OPTO cách ly nguồn Vi xử lý và nguồn cấp cho 2 motor và Relay điều khiển.
2.2 Chương trình điều khiển.
Để lập trình cho Chip Vi điều khiển ngày nay ta có rất nhiều ngôn ngữ như: Assembly, C++, Batronix Prog-Studio...
Trong bài này Em dùng ngôn ngữ Assembly sử dụng phần mềm Batronix Prog-Studio.
2.2.1 Lưu đồ giải thuật.
LƯU ĐỒ GIẢI THUẬT
BÀN PHÍM CHƯƠNG TRÌNH
CHAY_TOI
start
Quét tất cả phím
Đặt BIT
DAO-MOTOR_PHAI=1
DAO-MOTOR_TRAI=1
Lcall
CHAY_TOI
So sánh TOC DO
với 255
T
LCALL
CHAY_TOI
Phím tới
F
Lcall
CHAY_LUI
T
LCALL
CHAY_LUI
Phím lùi
Giảm
tốc
F
Phím TOI vẫn nhấn
Phím
lùi
F
T
TƯ
Phím
tới
LCALL
CUA_PHAI
Tăng tốc
p-trái
LCALL
CUA_TRAI
F
T
Phím phải
LCALL
CUA_PHAI
CUA_TRAI
CHAY_LUI
CLR DAO_MOTOR_TRAI
SETB DAO_MOTOR_PHAI
CLR Bit DAO_MOTOR_PHAI
CLR Bit DAO_MOTOR_TRAI
So sánh TOC DO
với 255
So sánh TOC DO
với 255
F
F Giảm
tốc
Phím CUA vẫn nhấn
Phím LUI vẫn nhấn
Giảm
tốc
Giảm
tốc
T
T
TT_CUA_
TRAI
Tăng tốc
2.2.2 Đoạn chương trinh.
Include 89C51.MC
Include MOD51fx
;----
MOTORTRAI DATA CCAP0H
MOTORPHAI DATA CCAP1H
DAO_MOTOR_PHAI BIT P1.5
DAO_MOTOR_TRAI BIT P1.2
TOC_DO DATA 40H
NHO DATA 41H
GIA_TRI_T0 DATA 42H
TOI BIT P0.0
LUI BIT P0.1
TRAI BIT P0.2
PHAI BIT P0.3
; = = = = = = = = = = = = = = = = = = = = = = = = = = MAIN = = = = = = = = = = = = = = = = = = = = = = = = =
ORG 0000H
BEGIN:
MOV CMOD,#0
SETB CR
MOV CCAPM0,#01000010B
MOV CCAPM1,#01000010B
MOV P0,#ffh
MOV TOC_DO,#0
MOV GIA_TRI_T0,#0
MAIN:
JB TOI,P_LUI
LCALL CHAY_TOI
P_LUI:
JB LUI,P_TRAI
LCALL CHAY_LUI
P_TRAI:
JB TRAI,P_PHAI
LCALL CUA_TRAI
P_PHAI:
JB PHAI,MAIN
LCALL CUA_PHAI
JMP MAIN
;-----------------------------------------------------------
CUA_PHAI:
CLR DAO_MOTOR_PHAI
SETB DAO_MOTOR_TRAI
LCALL DELAY50MS
MOV MOTORPHAI,#200
MOV MOTORTRAI,#150
JNB PHAI,$
MOV MOTORPHAI,#0
MOV MOTORTRAI,#0
SETB DAO_MOTOR_PHAI
SETB DAO_MOTOR_TRAI
RET
;----------------------------------------------
CUA_TRAI:
SETB DAO_MOTOR_PHAI
CLR DAO_MOTOR_TRAI
LCALL DELAY50MS
MOV MOTORPHAI,#150
MOV MOTORTRAI,#200
JNB TRAI,$
MOV MOTORPHAI,#0
MOV MOTORTRAI,#0
SETB DAO_MOTOR_PHAI
SETB DAO_MOTOR_TRAI
RET
;----------------------------------------------
CHAY_TOI:
SETB DAO_MOTOR_PHAI
SETB DAO_MOTOR_TRAI
LCALL DELAY50MS
MOV MOTORPHAI,#200
MOV MOTORTRAI,#200
JNB TOI,$
MOV MOTORPHAI,#0
MOV MOTORTRAI,#0
SETB DAO_MOTOR_PHAI
SETB DAO_MOTOR_TRAI
RET
;----------------------------------------------
CHAY_LUI:
CLR DAO_MOTOR_PHAI
CLR DAO_MOTOR_TRAI
LCALL DELAY50MS
MOV MOTORPHAI,#200
MOV MOTORTRAI,#200
JNB LUI,$
MOV MOTORPHAI,#0
MOV MOTORTRAI,#0
SETB DAO_MOTOR_PHAI
SETB DAO_MOTOR_TRAI
RET
;---------HAM DELAY 500MS -----
DELAY50MS:
MOV R4,#5
LOOP_DELAY_50MS:
MOV R2,#50
LOOP_DELAY_50MS1:
MOV R3,#100
DJNZ R3,$
DJNZ R2,LOOP_DELAY_50MS1
DJNZ R4,LOOP_DELAY_50MS
RET
End
KẾT LUẬN
Qua khoảng thời gian hơn 4 tháng nỗ lực của mỗi sinh viên nói riêng và của nhóm chung cùng với sự hỗ trợ của giáo viên hướng đẫn, đến hôm nay chúng Em đã hoàn thành Đồ Án 1 theo yêu cầu đã đề ra:
Thực hiện mô hình xe robot bằng 6 bánh xích.
Điều khiển bằng tay.
Vượt chướng ngại vật đơn giản.
Đây là lần đầu tiên nhóm Em thực hiện đồ án nên kinh nghiệm còn nhiều hạn chế không thể tránh khỏi những sai sót trong lúc thi công.mong quý thầy cô bỏ qua và hướng dẫn thêm.
HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
Do nhu cầu thực tế các thiết bị điều khiển bằng tay sẽ gặp
Các file đính kèm theo tài liệu này:
- Xe robot điều khiển bằng bánh xích.doc