Tải bản đầy đủ (.doc) (66 trang)

Nghiên cứu chế tạo mạch điều khiển cho động cơ bước

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (942.11 KB, 66 trang )

Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN.
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
Hưng Yên, Ngày12 tháng 05 năm 2011
Giáo viên hướng dẫn:

1


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
MỤC LỤC


LỜI NÓI ĐẦU
TỔNG QUAN ĐỀ TÀI
1. Mục tiêu của đề tài.
2. Yêu cầu của đề tài.
3. Phương pháp nghiên cứu.
4. Kết quả dự kiến.
CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN.
1.1 Giới thiệu chung về vi điều khiển AT89C51.
1.2 Tổ chức bộ nhớ.
1.3 Chức năng một số thanh ghi đặc biệt của 89C51.
1.4 Khởi tạo thời gian và bộ đếm (Time /Counter)..
1.5 Bộ nhớ trung tâm của hệ Vi xử lý.
CHƯƠNG II: GIỚI THIỆU VỀ ĐỘNG CƠ BƯỚC
2.1 Giới thiệu chung về động cơ bước.
2.2 Phân loại động cơ bước.
2.3 Một số thông số và khái niệm.
2.4 Các chế độ điều khiển động cơ bước.
2.5 Hình ảnh ứng dụng của động cơ bước
CHƯƠNG III: THIẾT KẾ ,THI CÔNG MẠCH PHẦN CỨNG
3.1 Sơ đồ khối và chức năng từng khối
3.2 Sơ đồ mạch điện.
3.3 Phương pháp điều khiển.
3.4 Thiết kế chương trình điều khiển.
3.5 Kết luận và kiến nghị.
Danh mục tài liệu.

2


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước


LỜI NÓI ĐẦU
Sau một thời gian học tập trên giảng đường của trường Đại Học Sư Phạm Kỹ
Thuật Hưng Yên nói chung hay khoa Điện-Điện Tử nói riêng ,chúng em đã tiếp thu được
những kiến thức khoa học và công nghệ ,cùng với kinh nghiệm thực tế ,chúng em đã có
cơ hội chuyển những kiến thức lý thuyết đã học được thành sản phẩm thực tế qua đề tài
đồ án môn học tích hợp mức một ,với nội dung là “ Nghiên cứu ,chế tạo mạch điều khiển
động cơ bước” ,dùng vi điều khiển.
Trong quá trình thực hiện đề tài nêu trên ,chúng em đã nhận được sự quan tâm và
chỉ bảo tận tình của thầy Bùi Văn Dân ,cùng với sự giúp đỡ của bạn bè chúng em đã hoàn
thành được sản phẩm của mình .
Song với khả năng được học tập nghiên cứu và tự nghiên cứu còn hạn chế về nội
dung và kiến thức trong phạm vi đồ án ,sẽ không tránh khỏi những thiếu sót và hạn
chế .Thông qua đồ án này ,chúng em rất mong được các thầy cô chỉ bảo thêm, để chúng
em có điều kiện nâng cao trình độ ,hiểu biết cũng như kỹ năng của bản thân.Chúng em rất
mong được tiếp thu những ý kiến đóng góp của các thầy cô!
Chúng em xin chân thành cảm ơn!

3


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
TỔNG QUAN VỀ ĐỀ TÀI
1.Mục tiêu của đề tài
Mục tiêu của đề tài là: tạo ra một mô hình điều khiển cho ba động cơ bước, mô hình điều
khiển này có thể làm mô hình thí nghiệm cho các sinh viên nghiên cứu để tìm hiểu về cấu
tạo, nguyên lý hoạt động cũng như các phương pháp điều khiển hoạt động cho động cơ
bước. Đặc biệt là việc điều khiển cho động cơ bước sử dụng vi điều khiển AT89C51.

2.Yêu cầu của đề tài

-

Chế tạo Driver cho động cơ bước

-

Sử dụng vi điều khiển 89C51

-

Số động cơ điều khiển là:03

-

Chương trình điều khiển có thể thay đổi được.

3.Phương pháp nghiên cứu
-

Đưa ra ý tưởng thiết kế (ứng dụng vi điều khiển).

-

Thiết kế mạch phần cứng điều khiển: kết nối vi điều khiển, điều khiển hoạt động
của ba động cơ.

-

Viết chương trình điều khiển.


-

Vận hành mô hình và sửa lỗi:

-

Cả ba thành viên tham gia đồ làm đồ án cùng nhau tập chung nghiên cứu, thảo
luận các vấn đề lý thuyết có liên quan và cùng tiến hành thực hành để hoàn thành
đề tài.

4.Kết quả dự kiến
-

Hoàn thành mô hình đề tài đảm bảo đáp ứng được đầy đủ các yêu cầu đã được đề
ra.

4


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN.
1.1 Giới thiệu chung về vi điều khiển AT89C51
1.1.1 Sơ đồ khối
External
Interrupts
Interrut
Control

128
Bytes

RAM

4K
FLASH

Timer 1
Timer 0

Counter
Inputs

CPU

OSC

Bus
Control

4 I/O Ports

Serial
Ports
TxD RxD

/WR /RD
P0 P2 P1 P3
Address/Data

Hình 1.2. Sơ đồ khối VĐK
AT89C51

 AT89C51 là vi điều
khiển doAtmel sản xuất, chế tạo theo công nghệ CMOS có
các đặc tính như sau:
-

4 Kb PEROM (Flash Programmable and Erasable Read Only Memory ), Có khả
năng tới 100 chu kỳ xóa.

-

Tần số hoạt động từ: 0Hz đến 24 MHz

-

mức khóa bộ nhớ lập trình.

-

128 Byte RAM nội.

-

Port xuất /nhập I/O 8 bit.
5


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
-

2 bộ Timer/counter 16 Bit.


-

6 nguồn ngắt.

-

Giao tiếp nối tiếp điều khiển bằng phần cứng.

-

64 KB vùng nhớ mã ngoài

-

64 KB vùng nhớ dữ liệu ngoài.

-

Cho phép xử lý bit.

-

210 vị trí nhớ có thể định vị bit.

-

chu kỳ máy (4 µs đối với thạch anh 12MHz) cho hoạt động nhân hoặc chia.

-


Có các chế độ nghỉ (Low-power Idle) và chế độ nguồn giảm (Power-down).

1.1.2 Sơ đồ chân tín hiệu của 80C51 và 89C51.
P1.0 -P1.1-P1.2-P1.3-P1.4-P1.5-P1.6-P1.7-RST-(RxD) P3.0-(TxD) P3.1-(/INT0) P3.2-(/INT1) P3.3-(T0) P3.4-(T1) P3.5-(/Wr) P3.6-(/Rd) P3.7-XTAL2-XTAL1-GND--

1

40

2

39

3

38

4

37

5

36

6

35


7

34

8

33

9

32

10

31

11

30

12

29

--Vcc
--P0.0 (AD0)
--P0.1 (AD1)
--P0.2 (AD2)
--P0.3 (AD3)
--P0.4 (AD4)

--P0.5 (AD5)
--P0.6 (AD6)
--P0.7 (AD7)
--/EA/Vpp
--ALE/(/PROG)
--/PSEN
--P2.7 (A15)
--P2.6 (A14)
--P2.5 (A13)
--P2.4 (A12)
--P2.3 (A11)
--P2.2 (A10)
--P2.1 (A9)
--P2.0 (A8)

Hình 1.3.Các chân của vi điều khiển
13

28

14

27

15

6

26


16

25

17

24


18

23

19

22

Đề tài:Nghiên cứu chế tạo
mạch điều khiển cho
động cơ bước
20
21
1.1.3 Chức năng của các chân :
a. Các port:
 Port 0:
-

Port 0 (chân 32-39) có 2 chức năng:
Chức năng IO (xuất / nhập): dùng cho các thiết kế nhỏ. Tuy nhiên, khi dùng
chức năng này thì Port 0 phải dùng thêm các điện trở kéo lên (pull-up), giá trị

của điện trở phụ thuộc vào thành phần kết nối với Port.

-

Khi dùng làm ngõ ra, Port 0 có thể kéo được 8 ngõ TTL.

-

Khi dùng làm ngõ vào, Port 0 phải được set mức logic 1 trước đó.
Chức năng địa chỉ / dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi phải sử
dụng bộ nhớ ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus địa chỉ (8 bit
thấp).

-

Ngoài ra khi lập trình cho AT89C51, Port 0 còn dùng để nhận mã khi lập trình
và xuất mà khi kiểm tra (quá trình kiểm tra đòi hỏi phải có điện trở kéo lên).

 Port 1:
-

Port1 (chân 1 – 8) chỉ có một chức năng là IO, không dùng cho mục đích khác
(chỉ trong 8032/8052/8952 thì dùng thêm P1.0 và P1.1 cho bộ định thời thứ
3). Tại Port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài.

-

Port 1 có khả năng kéo được 4 ngõ TTL và còn dùng làm 8 bit địa chỉ thấp
trong quá trình lập trình hay kiểm tra.


-

Khi dùng làm ngõ vào, Port 1 phải được set mức logic 1 trước đó.

 Port 2:
-

Port 2 (chân 21 – 28) là port có 2 chức năng:

-

Chức năng IO (xuất / nhập): có khả năng kéo được 4 ngõ TTL.
Chức năng địa chỉ: dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài có địa chỉ16
bit. Khi đó, Port 2 không được dùng cho mục đích IO.

-

Khi dùng làm ngõ vào, Port 2 phải được set mức logic 1 trước đó.

-

Khi lập trình, Port 2 dùng làm 8 bit địa chỉ cao hay một số tín hiệu điều khiển.
7


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
 Port 3:
-

Port 3 (chân 10 – 17) là port có 2 chức năng:

Chức năng IO: có khả năng kéo được 4 ngõ TTL.
Khi dùng làm ngõ vào, Port 3 phải được set mức logic 1 trước đó.
Chức năng khác: mô tả như bảng 1
Bảng 1.1: Chức năng các chân của Port 3
Bit Tên
P3.0 RxD
P3.1 TxD

Chức năng
Ngõ vào port nối tiếp
Ngõ ra port nối tiếp

P3.2 INT0 Ngắt ngoài 0
P3.3 INT1 Ngắt ngoài 1
P3.4 T0
Ngõ vào của bộ định thời 0
P3.5 T1
Ngõ vào của bộ định thời 1
P3.6 WR

Tín hiệu điều khiển ghi dữ liệu lên bộ nhớ
ngoài.

P3.7 RD

Tín hiệu điều khiển đọc từ bộ nhớ dữ liệu
ngoài.

b. Các chân tín hiệu điều khiển:
 Nguồn:

-

Chân 40: VCC = 5V± 20%

-

Chân 20: GND

 PSEN (Program Store Enable):
-

PSEN (chân 29) cho phép đọc bộ nhớ chương trình mở rộng đối với các ứng
dụng sử dụng ROM ngoài, thường được nối đến chân OC (Out put Control ) của
ROM để đọc các byte mã lệnh. PSEN sẽ ở mức logic 0 trong thời gian AT89C51
lấy lệnh. Trong quá trình này , PSEN sẽ tích cực 2 lần trong một chu kỳ máy.

-

Mã lệnh của chương trình được đọc từ ROM thông qua bus dữ liệu (Port0) và
bus địa chỉ (Port0 + Port2).

-

Khi 8951 thi hành chương trình trong ROM nội, PSEN sẽ ở mức logic 1.
8


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
 ALE/ PROG (Address Latch Enable / Program):
-


ALE/ PROG (chân 30) cho phép tách các đường địa chỉ và dữ liệu tại Port 0
khi truy xuất bộ nhớ ngoài. ALE thường nối chân Clock của IC chốt
(74373.74573).

-

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àm các tín hiệu clock cho các phần khác của hệ thống. Xung này có
thể cấm bằng cách set bit 0 của SFR tại địa chỉ 8Eh lên 1. Khi đó, ALE chỉ có tác
dụng khi dùng làm ngõ vào xung lập trình cho ROM nội ( PROG ).

-

EA/VPP (External Access):

-

EA (chân 31) dùng để cho phép thực thi chương trình từ ROM ngoài. Khi nối
chân 31 với Vcc, AT89C51 sẽ thực thi chương trình từ ROM nội (tối đa
8KB),ngượclại thì thực thi từ ROM ngoài (tối đa 64KB).

-

Ngoài ra chân EA được lấy làm chân cấp nguồn 12V lập trình cho ROM.

 RST (Reset):
-

RST (chân 9) cho phép reset AT89C51 khi ngõ vào tín hiệu đưa lên mức

1
trong ít nhất là 2 chu kỳ máy.

 Bộ tạo dao động X1,X2:
-

Ngõ vào và ngõ ra bộ dao động, khi sử dụng có thể chỉ cần kết nối thêm thạch
anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử
dụng cho AT89C51 là 12Mhz.

9


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
Hình 1.3 – Sơ đồ kết nối thạch anh

1.2 Tổ chức bộ nhớ.
1.2.1 Bộ nhớ chương trình và bộ nhớ dữ liệu
Tất cả các bộ Flash Microcontrollers của Atmel đều tổ chức các vùng địa chỉ tách
biệt đối với bộ nhớ chương trình và bộ nhớ dữ liệu, được mô tả ở hình dưới đây. Các
vùng nhớ chương trình và dữ liệu tách biệt cho phép bộ nhớ dữ liệu được truy cập bởi địa
chỉ 8 bit, có thể được lưu trữ với tốc độ cao và được vận hành bởi một bộ CPU 8 bit. Tuy
nhiên, địa chỉ bộ nhớ dữ liệu 16 bit cũng có thể được tạo ra thông qua thanh ghi con trỏ
dữ liệu (DPTR).
Bộ nhớ chương trình có thể chỉ được đọc. Chúng có thể là bộ nhớ chương trình 64
Kbyte có khả năng định địa chỉ trực tiếp. Để đọc nội dung từ bộ nhớ chương trình ngoài,
cần xác định trạng thái phù hợp cho chân /PSEN.
Bộ nhớ dữ liệu chiếm 1 vùng địa chỉ riêng biệt so với bộ nhớ chương trình. 64 Kbyte bộ
nhớ ngoài có thể được định địa chỉ trực tiếp trong vùng bộ nhớ dữ liệu ngoài. CPU tạo ra
tín hiệu đọc và ghi (/RD, /WR) để truy cập bộ nhớ dữ liệu ngoài. Bộ nhớ chương trình

ngoài và bộ nhớ dữ liệu ngoài có thể được kết hợp bởi các tín hiệu /RD và /PSEN để đưa
vào 1 cổng AND và sử dụng đầu ra của cổng này để đọc nội dung từ bộ nhớ dữ
liệu/chương trình ngoài.

10


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước

1.2.1.1 Bộ nhớ chương trình nội trú.
Bộ nhớ chương trình của AT89C51 được tổ chức như thể hiện ở hình trên. Không
gian nhớ cực đại của bộ nhớ này chiếm 64 Kbyte, được định địa chỉ từ 0000h đến FFFFh,
trong đó có 4 Kbyte Flash nội trú bên trong nó và được định địa chỉ từ 0000h đến 0FFFh.
Do đó có thể mở rộng thêm 60 Kbyte bộ nhớ chương trình bên ngoài, được định địa chỉ
từ 1000h đến FFFFh. Tuy nhiên bộ VĐK này cũng có thể sử dung toàn bộ bộ nhớ chương
trình ngoài bao gồm 64 Kbyte được định địa chỉ từ 0000h đến FFFFh.
Cũng từ hình trên ta thấy, thông qua việc chọn mức logic cho bit /EA có thể lựa
chọn để truy cập bộ nhớ chương trình nội trú (4Kb), bộ nhớ chương trình mở rộng ngoại
trú (60Kb), hoặc toàn bộ bộ nhớ chương trình ngoại trú bên ngoài On-chip (64Kb). Cụ
thể, khi /EA = 1 thì bộ VĐK sử dụng cả bộ nhớ chương trình nội trú và ngoại trú. Ngược
lại, khi /EA = 0 thì bộ VĐK chỉ sử dụng bộ nhớ chương trình ngoại trú.
Mỗi khi được Reset, bộ VĐK sẽ truy cập bộ nhớ chương trình tại địa chỉ khởi đầu
là 0000h, sau đó nếu cơ chế ngắt được sử dụng thì nó sẽ truy cập tới địa chỉ quy định
trong bảng vecter ngắt.
Khi truy cập bộ nhớ chương trình, bộ VĐK sử dụng xung chọn /PSEN để điều
khiển. Nếu on-chip làm việc với bộ nhớ chương trình nội trú thì chân phát ra xung
chọn /PSEN không sử dụng. Nếu bộ VĐK làm việc với bộ nhớ chương trình ngoại trú thì
11



Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
chân phát ra xung chọn /PSEN được sử dụng. Khi đó nếu /PSEN = 0 thì cho phép bộ
VĐK đọc bộ nhớ chương trình ngoài, ngược lại nếu /PSEN = 1 thì bộ VĐK chỉ làm việc
với bộ nhớ chương trình nội trú.

1.2.1.2 Bộ nhớ dữ liệu nội trú.

AT89C51 có bộ nhớ dữ liệu chiếm một khoảng không gian bộ nhớ độc lập với bộ
nhớ chương trình. Dung lượng của RAM nội trú ở họ VĐK này là 128 Byte, được định
địa chỉ từ 00h đến 7Fh. Phạm vi địa chỉ từ 80h đến FFh dành cho SFR. Tuy nhiên bộ
VĐK cũng có thể làm việc với RAM ngoại trú có dung lượng cực đại là 64 Kbyte được
định địa chỉ từ 0000h đến FFFFh.
+Vùng nhớ 128 Byte thấp
Vùng nhớ 128 Byte thấp được định địa chỉ từ 00h đến 7Fh, được chia thành 3
vùng con như thể hiện ở hình 2.10.
- Vùng thứ nhất có độ lớn 32 Byte được định địa chỉ từ 00h đến 1Fh bao gồm 4
băng thanh ghi ( băng 0...băng 3), mỗi băng có 8 thanh ghi 8 bit. Các thanh ghi trong mỗi
băng có tên gọi từ R0 đến R7. Vùng RAM này được truy cập bằng địa chỉ trực tiếp mức
Byte, và quá trình chọn để sử dung băng thanh ghi nào là tùy thuộc vào việc lựa chon giá
trị cho RS1 và RS0 trong PSW.
- Vùng thứ 2 có độ lớn 16 Byte được định địa chỉ từ 20h đến 2Fh, cho phép truy
cập trực tiếp bằng địa chỉ mức bit. Bộ VĐK cung cấp các lệnh có khả năng truy cập tới
vùng nhớ 128 bit này (nếu truy cập ở dạng mức bit thì vùng này có địa chỉ được định từ
00h đến 7Fh) ở mức bit. ở vùng nhớ này, địa chỉ được truy xuất dưới dạng Byte hay Bit
tuỳ vào lệnh cụ thể. Chẳng hạn, để đặt bit tại địa chỉ 5Fh có mức logic 1, ta thực hiện
12


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
lệnh: SETB 5Fh . Sau khi thực hiện lệnh này, mặc dầu 5Fh là địa chỉ bit cao nhất trong

Byte có địa chỉ 2Bh, nhưng nó không làm ảnh hưởng tới các bit khác trong Byte này.
Đây là ưu điểm rõ nét của các bộ VĐK khi thực hiện việc truy xuất các bit riêng rẽ
thông qua phần mềm. Các bit có thể đựơc đặt, xoá, hay thực hiện chức năng AND,
OR...chỉ thông qua 1 lệnh. Ngoài ra các cổng xuất/nhập cũng có thể được định địa chỉ
dạng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập
đơn bit.
- Vùng nhớ còn lại gồm 80 Byte có địa chỉ từ 30h đến 7Fh được dành riêng cho
người sử dụng để lưu trữ dữ liệu. Đây có thể xem là vùng RAM đa mục đích. Có thể truy
cập vùng nhớ này bằng địa chỉ trực tiếp hoặc gián tiếp thông qua các thanh ghi (R0 hoặc
R1) ở dạng mức Byte.

13


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước

RAM

1.2.2 Bộ nhớ chương trình ngoài và bộ nhớ dữ liệu ngoại trú.
1.2.2.1Bộ nhớ chương trình ngoại trú.

14


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước

Truy cập bộ nhớ chương trình ngoài
Bộ nhớ chương trình ngoài là bộ nhớ chỉ đọc, được cho phép bởi tín hiệu /PSEN.
Khi có một EPROM ngoài việc sử dụng, cả P0 và P2 đều không còn là các cổng I/O nữa.
Khi bộ vi điều khiển truy cập bộ nhớ chương trình ngoại trú, nó luôn sử dụng kênh địa

chỉ 16 bit thông qua P0 và P2.
Một chu kỳ máy của bộ vi điều khiển có 12 chu kỳ dao động. Nếu bộ dao động
trên chíp có tần số 12MHz, thì một chu kỳ máy dài 1µs . Trong một chu kỳ máy điển
hình, ALE có hai xung và hai byte của lệnh được đọc từ bộ nhớ chương trình (nếu lệnh
chỉ có một byte thì byte thứ hai được loại bỏ). Khi truy cập bộ nhớ chương trình ngoại
trú, bộ vi điều khiển phát ra hai xung chốt địa chỉ trong mỗi chu kỳ máy. Mỗi xung chốt
tồn tại trong hai chu kỳ dao động từ P2 - S1 đến P1 – S2, và từ P2 – S4 đến P1 – S5.
Để địa chỉ hoá bộ nhớ chương trình ngoại trú, byte thấp của địa chỉ (A0…A7) từ
bộ đếm chương trình của bộ vi điều khiển được xuất qua cổng P0 tại các trạng thái S2 và
S5 của chu kỳ máy, byte cao của địa chỉ (A8…A15) từ bộ đếm chương trình được xuất
qua cổng P2 trong khoảng thời gian của cả chu kỳ máy. Tiếp theo xung chốt, bộ vi điều
khiển phát ra xung chọn /PSEN. Mỗi chu kỳ máy của chu kỳ lệnh gồm hai xung chọn,
mỗi xung chọn tồn tại trong 3 chu kỳ dao động từ P1 – S3 đến hết P1 – S4 và từ P1 – S6
đến hết P1 – S1 của chu kỳ máy tiếp theo. Trong khoảng thời gian phát xung chọn thì
byte mã lệnh được đọc từ bộ nhớ chương trình để nhập và on chip.

1.3 Chức năng một số thanh ghi đặc biệt của 89C51.
15


ti:Nghiờn cu ch to mch iu khin cho ng c bc
1.3.1Chc nng ca cỏc thanh ghi c bit.
SFR m nhim cỏc chc nng khỏc nhau trong b On- chip. Chỳng nm RAM
bờn trong On- chip, chim vựng khụng gian trong b nh 128 Byte c nh i ch t
80h n FFh .
Cu trỳc ca SFR bao gm cỏc chc nng th hin theo bng sau :
Symboy

Name


Addess

Rest Values

*ACC

Thanh ghi tích luỹ.

0F0h

00000000b

*B

Thanh ghi B.

0F0h

00000000b

*PSW

Từ trạngthái chơng trình.

0D0h

00000000b

SP


Con trỏ ngăn xếp .

81h

00000111b

DPH

Byte cao của con trỏ dữ liệu 0

83h

00000000b

DPL

Byte thấp của con trỏ dữ liệu 0

82h

00000000b

*P0

Cổng 0

80h

11111111b


*P1

Cổng 1.

90h

11111111b

*P2

Cổng 2.

0A09h

11111111b

*P3

Cổng 3.

0B0h

11111111b

*IP

TG điêù khiển ngắt u tiên .

0B8h


Xxx00000b

*IE

TG điếu khiển cho phép ngắt

0A8h

0xx00000b

TMOD

Điều khiển kiểu Time/ counter

89h

00000000b

*TCON

TG điều khiển kiểu Time/ counter

88hh

00000000b

TH0

Byte cao của Time / Counter 0


8Ch

00000000b

TL0

Byte thấp của Time / Counter 0

8Ah

00000000b

TH1

Byte cao của Time / Counter 1.

8Dh

00000000b

TL1

Byte thấp của Time / Counter 1

8Bh

00000000b

*SCON


Serial Control.

98h

00000000b

SBUF

Serial Data Buffer.

99h

Indeterminate

PCON

Power Control

87h

0xxx0000b

Cỏc thanh ghi cú chc nng c bit.

16


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
Các thanh ghi trong AT89C51 được định dạng như một phần của RAM trên chíp.
Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ không có lợi khi

đặt chúng vào trong RAM trên chip). Đó là lý do để AT89C51 có nhiều thanh ghi. Cũng
như R0 đến R7, có 21 thanh ghi chức năng đặc biệt ở vùng trên của RAM nội, từ địa chỉ
80H đến FFH. Chú ý rằng hầu hết đị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 luỹ 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ỉ hoá bit hoặc
byte. Người thiết kế phải thận trọng khi truy xuất bit và byte.

a. Thanh ghi trạng thái chương trình PSW (Program Status Word)
Từ trạng chương (PSW) ở địa chỉ D0H chứa các bit trạng thái như bảng tóm tắt
sau:
Bit
PSW.7
PSW.6
PSW.5
PSW.4

Ký hiệu
CY
AC
F0
RS1

Địa chỉ
D7H
D6H
D5H
D4H

PSW.3


RS0

D3H

PSW.2
OV
PSW.1
PSW.0
P
Từ trạng thái chương trình


D2H
D1H
D0H

Ý nghĩa
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Bit 1 chọn thanh ghi
Bit chọn băng thanh ghi
00 = bank 0; địa chỉ 00H - 07H
01 = bank; địa chỉ 08H – 0FH
10 = bank 2; địa chỉ 10H – 17H
11 = back 3; địa chỉ 18H – 1FH
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 sét 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 luỹ chứa FFH, thì lệnh sau: ADD A,#1
Sẽ trở về thanh ghi tích luỹ kết quả 00H và set cờ nhớ trong PSW

17


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
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.
• Cờ nhớ phụ:
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp trong
khoảng OAH đến OFH. 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 luỹ) để mang kết quả lớn hơn 9 trở về tâm từ
0 đến 9.


Cờ 0
Cờ 0 (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 xoá sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần



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 quả 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.

b. Thanh ghi B
Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi tích luỹ 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ả kết quả nguyên trong A và phần nguyên trong B. Thanh ghi B cũng có thể xem như
thanh ghi đệm đa dụng. Nó được địa chỉ hoá tong bit bằng các địa chỉ bit FOH đến F7H.

c. 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 sẽ làm tăng SP trước khi ghi
18


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ dọc dữ liệu làm giảm SP. Ngăn xếp của
AT89C51 đượ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 AT89C51.

d. Con trỏ dữ liệu.
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16

bit ở địa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao).

e. Các thanh ghi port xuất nhập.
Các port của AT89C51 bao gồm Port0 ở địa chỉ 80H, Port1 ở địa chỉ 90H, port2 ở
địa chỉ A0H và port3 ở địa chỉ B0H. Tất cả các port đều được địa chỉ hoá tong bit. Điều
đó cung cấp một khả năng giao tiếp thuận lợi.

f. Các thanh ghi port nối tiếp.
AT89C51 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. 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
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ỉ hoá từng bit) ở địa chỉ 98H.
g. Các thanh ghi ngắt.

AT89C51 có cấu trúc 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 thanh ghi cho phép ngắt (IE) ở địa chỉ 8AH.
Cả hai thanh ghi được địa chỉ hoá tưng bit.
1.4 Khối tạo thời gian và bộ đếm (Time/ Counter)
On - chip AT89C51 có 2 thanh ghi Time/ Counter dài 16 bit, đó là : Time 0;
Time1.
Khi thanh ghi Time/ Counter làm việc ở kiểu Time, sau mỗi xhu kỳ máy nội dung
trong thanh ghi được gia tăng thêm một đơn vị. Vì vậy thanh ghi này đếm số chu kỳ
máy. Một chu kỳ có 12 dao động ,do đó tốc độ đếm của thanh ghi là 1/12 tần số dao
động.
19


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước

Khi thanh ghi làm việc ở kiểu Counter, xung nhịp bên ngoài được đưa vào vào để
đếm ở T0 hoặc T. Nội dung thanh ghi được tăng lên khi có sự chuyển trạng thái từ 1 về 0
tại chân đầu vào ngoài T0 hoặc T1. Xung nhịp ở đầu ngòai được lấy mẫu tại thời điểm
S5P2 của mỗi chu kỳ máy. Khi quá trình lấy mẫu phát hiện ra mức cao ở 1 chu kỳ và
mức thấp ở chu kỳ tiếp theo, thì bộ đếm được tăng lên . Giá trị mới của bộ đếm xuất hiện
trong thanh ghi tại thời điểm S3P1 của chu kỳ máy sau khi sự chuyển trạng thái đã được
phát hiện. Vì vậy để nội dung của thanh ghi tăng lên 1 đơn vị phải mất 2 chu kỳ máy, nên
tốc độ đếm tối đa là 1/24 tần số dao động. Không có sự giới hạn số vòng thực hiện của tín
hiệu ở đầu vào ngoài, nhưng nó sẽ giữ ít nhất 1 chu kỳ máy đầy đủ để đảm bảo chắc chắn
rằng một mức đã cho được lấy mẫu ít nhất 1 lần nữa trước khi thay đổi.

1.4.1 Time 0 và Time 1
Trong AT 89 C51. Chức năng Time hay Counter được chọn lựa bởi các bit điều
khiển trong thanh ghi TMOD. Hai bộ Time/ Counter này có 4 chế độ hoạt động, được lựa
chọn bởi cặp bit ( M1, M0) trong TN0D. Chế độ 0, 1 và 2 giống nhau cho các chức năng
Timer/ Counter , nhưng chế độ 3 thì khác . Bốn chế độ hoạt động được mô tả như sau:

a. Chế độ 0:
Cả 2 bộ Time 0 và 1 ở chế độ có cấu hình như một thanh ghi 13 bit, bao gồm 8 bit
của thanh ghi THx và 5 bit thấp của TLx. 3 bit cao của TLx không xác định chắc chắn,
nên được làm ngơ .
Khi hoạt động ở chức năng thời gian thì bit C/(T) = 0 do vậy xung nhịp từ bộ dao động
nội, qua bộ chia tần ra tần số cho ra tần số f = f ocs/12 được đưa vào bộ đếm trong thanh
ghi Time/ Counter. Khi hoạt động ở chức năng bộ đếm thì bit C/ (T)

20


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước


b. Chế độ 1
Hoạt động tương tự như chế độ 0, chỉ khác thanh ghi Time/ Counter được sử dụng
cả 16 bit.Xung nhịp được kết hợp với các thanh ghi thời gian byte thấp và byte cao (TH1
và TL1). Khi xung clock được nhận , bộ Time sẽ đếm tăng lên: 0000h, 0001h, 0002,….
Khi hiện tượng tràn xẩy ra ,cờ tràn sẽ chuyển FFFFh về 0000h, và bộ Time tiếp tục đếm.
Cờ tràn của Time 1 là bit TF1 ở trong TCON, nó được đọc và ghi ở phần mềm :

c. Chế độ 2
Chế độ hoạt động cũng tương tự như độ trên, nhưng nó được tổ chức như bộ 8 bit
(TL1) với chế độ tự động nạp lại. Khi xảy ra hiện tượng tràn ở TL1, không chỉ thiết lập
bit TF1 mà còn tự động nạp lại cho phép nội dung của TH1, đã được thiết lập ở phần
mềm. Quá trình nạp lại cho phép nội dung của TH1 không bị thay đổi. Chế độ hoạt động
được mô tả như sau :

21


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước

d. Chế độ 3
Ở chế độ này chức năng của Time/ Counter 0 và chức năng của Time/ Counter 1
khác nhau. Bộ Time 1 ở chế độ 3 chỉ chứa chức năng đếm của nó, kết qủa giống khi đặt
TR1 = 0. Bộ Time 0 ở chế độ 3 thiết lập TH0, TL0 như là hai bộ đếm riêng biệt .
Chế độ 3 thường dung khi yêu cầu cần có bộ thời gian hoặc bộ đếm ngoài 8 bit.
Chế độ hoạt động như sau:

1.4.2 .Hoạt động 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 ban đầ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: Interrup Sevice Reutine).
22


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
1.4.2.1 Tổ chức ngắt.
Ở AT89C51 có 5 nguồn ngắt:
-

2 ngắt ngoài.

-

2 ngắ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 đặc biệt cố định địa chỉ bit IE (Intereup 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
xoá để cấm tất cả ngắt hoặc được đặt lên 1 để cho phép tất cả các ngắt

Bit
IE.7
IE.6
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0

Ký hiệu
EA
EA
ET5
E5
ET1
EX1
ET0
EX0

địa chỉ
AFH
AEH
ADH
ACH
ABH
AAH
A9H
A8H


Mô tả (1 = cho phép, 0 = cấm)
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

Tóm tắt thanh ghi 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 (Interrup Pritority: ưu tiên ngắt) ở địa chỉ B8H.
Bit
IP.7
IP.6
IP.5
IP.4
IP.3
IP.2
IP.1

Ký hiệu

địa chỉ

PT2
PS
PT1

PX1
PT0

BDH
BCH
BBH
BAH
B9H

Mô tả (1 = cho phép, 0 = cấm)
Không được định nghĩa
Không được định nghĩa
Ưu tiên ngắt từ timer 2 (8052)
Ưu tiên ngắt port nối tiếp
Ưu tiên ngắt từ timer 1
Ưu tiên ngắt ngoài 1
Ưu tiên ngắt từ timer 0
23


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
IP.0
PX0
Tóm tắt thanh ghi IP

B8H

Ưu tiên ngắt ngoài 0

Các ngắt ưu tiên được xoá sau khi reset hệ thống để đặt tất cả các ngắt ở mức ưu

tiên thấp hơn.

1.4.2 .2 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 thi hành
- Các DC 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 DC vào địa chỉ vector 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 lai 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

RST

0000H

Bên ngoài 0


IE0

0003H

Timer 0

TF0

000BH

Bên ngoài 1

IE1

0013H

Timer 1

TF1

001BH

Port nối tiếp

TI hoặc RI

0023H

Các vector ngắt

24


Đề tài:Nghiên cứu chế tạo mạch điều khiển cho động cơ bước
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ị xoá bới phần cứng, trừ ra RI và TI
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
xoá 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 xoá bằng phần mềm.

1.4.3 Các ngắt của AT89C51.


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, ITHx) tràn và set cờ báo tràn (TFx) lên 1. Các
cờ timer (TFx) không bị xoá bằng phần mềm. Khi cho phép các ngắt, TFx tự động bị xoá
bằng phần cứng khi CPU chuyển đến ngắt.


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 (KI) đượ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 SBUP để đượ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ị xoá bằng phần cứng khi CPU chuyển tới ngắt. Do có hai nguông 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 xoá bằng phần

mềm. Các ngắt timer cờ ngát được xoá bằng phần cứng khi CPU hướng tới ISR.
 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 port 3. (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 xoá nếu ngắt được tích cực bằng cạnh xuống.

25


×