Tải bản đầy đủ - 0 (trang)
CHƯƠNG II: PHẦN CƠ SỞ THỰC HÀNH 22

CHƯƠNG II: PHẦN CƠ SỞ THỰC HÀNH 22

Tải bản đầy đủ - 0trang

ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 10 -



2.1.2 Nhiệm vụ của các khối....................................................................25

2.2. CHƯƠNG TRÌNH ĐIỀU KHIỂN.............................................................28

2.2.1. Lưu đồ giải thuật.............................................................................28

2.2.2. Đoạn chương trình..........................................................................28



Chương I

CƠ SỞ LÝ THUYẾT

1.1 : Dẫn nhập:

Cùng với sự ứng dụng của kĩ thuật điện tử ngày nay càng rộng

rãi và đi đơi với nó là sự ra đời của cơng nghệ vi điều khiển lập trình,

đã góp phần giải quyết được bài toán nan giải, đơn giản là thay đổi

được chức năng hoạt động của mạch cũng như của hệ thống điều

khiển dễ dàng mà không cần phải thay đổ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

GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG - 11 -



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 (InApplication 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 (InSystem 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

GVHD : Th.s TRẦN NGUN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 12 -



* 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:

GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 13 -



– 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

ngồ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 13ung 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):

GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 14 -



+ SS : 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 ngồ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 ngồi và

khi truy cập bộ nhớ dữ liệu ngồ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



GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 15 -



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 ngồ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 – INT0 (Chân nhập): Ngõ vào ngắt ngoài 0.

P3.3 – INT1 (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 – WR (Chân xuất): Điều khiển ghi vào bộ nhớ dữ liệu ngoài.

P3.7 – RD (Chân xuất): Điều khiển đọc từ bộ nhớ dữ liệu ngoài.

– PSEN (Program Store Enable): Chân 29, chân xuất / nhập.

Khi sử dụng bộ nhớ chương trình trong chip, PSEN không hoạt động

(mức cao). Khi sử dụng bộ nhớ chương trình ngồi, PSEN được tích cực 2 lần

trong mỗi chu kì máy, ngoại trừ sự khích hoạt PSEN được bỏ qua trong khi kết

nối bộ nhớ chương trình ngồi . Sự thay đổi cưỡng bức mức cao sang thấp trên

PSEN 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 ngồ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 PSEN đượ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 ngồi, còn khơng thì Vi điều khiển

sẽ vào chế độ hoạt động bình thường.

GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 16 -



– EA (External Access Enable): Chân 31, chân nhập.

Chân EA 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 ngồi. EA 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 EA , 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 EA có thể chịu đựng điện áp đến 12V.

– ALE/PROG (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 ( PROG ) 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 ngồ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

ALE/PROG .



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).



GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 17 -



Q 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ó q 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



GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 18 -



đí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 ngồ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:



GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 19 -



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

C/ T 2 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.



GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



ĐỒ ÁN I : XE ROBOT ĐIỀU KHIỂN BẰNG BÁNH XÍCH



TRANG- 20 -



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ả



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.



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 ngồ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



RCLK



Cờ xung thu. Khi RCLK = 1, UART 20ung Timer 2 tạo xung thu

trong chế độ 1 và 3. Khi RCLK = 0, Timer 1 được sử dụng tạo

xung thu.



TCLK



Cờ xung truyền. Khi RCLK = 1, UART 20ung 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 20ung 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



7



6



5



4



GVHD : Th.s TRẦN NGUYÊN BẢO TRÂN



SVTH : TRẦN THẾ PHƯƠNG

TRẦN ĐĂNG KHOA

NGUYỄN VIẾT HÙNG



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

CHƯƠNG II: PHẦN CƠ SỞ THỰC HÀNH 22

Tải bản đầy đủ ngay(0 tr)

×