giỚi thiỆu vỀ vi ĐiỀu khiỂn at89c51 · pdf filechi phí và rất linh...

68
GII THIU VVI ĐIỀU KHIN AT89C51

Upload: vutruc

Post on 02-Feb-2018

233 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51

Page 2: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

1

CHƯƠNG I: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51

I. MÔ TẢ: AT9C51 là một hệ vi tính 8 bit đơn chíp CMOS có hiệu suất cao,công suất

nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoá được lập trình được.

Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích

hợp cao của Atmel.

Chip AT89C51 cũng tương thích với tập lệnh và các chân ra của chuẩn

công nghiệp MCS-51. Flash trên chip này cho phép bộ nhớ chương trình được lập

trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung qui ước.

Bằng cách kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể, Atmel

89C51 là một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về

chi phí và rất linh hoạt đối với các ứng dụng điều khiển.

AT89C51 có các đặc trưng sau: 4Kbyte Flash, 128 byte Ram, 32 đường

xuất nhập, hai bộ định thời / đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5

nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock

trên chip.

Ngoài ra AT8951 được thiết kế với logic tĩnh cho hoạt đông có tần số giảm

xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm.

Chế độ nghĩ dừng CPU trong khi vẫn cho phép RAM, các bộ định thời /

đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động.

Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao

động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến

khi có reset cứng tiếp theo.

Các đặc điểm của 8951 được tóm tắt như sau:

4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi

xoá

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

Page 3: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

2

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

2 bộ Timer/counter 16 Bit

128 Byte RAM nội.

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

Giao tiếp nối tiếp.

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

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

Xử lý Boolean (hoạt động trên bit đơn).

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

4 s cho hoạt động nhân hoặc chia.

II. CAÙC CAÁU HÌNH CHAÂN RA:

1/ SÔ ÑOÀ KHOÁI CUÛA AT89C51:

Page 4: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

3

2/ SƠ LƯỢC CÁC CHÂN CỦA AT89C51

*MÔ TẢ CÁC CHÂN:

-VCC: chân cung cấp điện.

-GND: chân nối đất.

-Port 0: gồm 8 chân 32-39 (P0.0…P0,7)

Port 0 là port có 2 chức năng. Trong các thiết kế cỡ nhỏ không dùng bộ nhớ

mở rộng nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ

mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu.

-Port1: chân 1-8 (P1.0…P1.7)

Port 1 là port IO. Có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần.

Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các

thiết bị bên ngoài.

-Port 2: chân 21-28 (P2.0….P2.7)

Page 5: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

4

Port 2 là port có tác dụng kép. Được dùng như các đường xuất nhập hoặc

byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.

-Port 3: chân 10-17 (P3.0…P3.7)

Port 3 là port xuất nhập 8 bit 2 chiều có các điện trở kéo lên bên trong. Các

chân của port này có nhiều chức năng, các công dụng chuyển đổi có lien hệ với

các đặc tính đặc biệt của 8951

-RST:

Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao

động đang hoạt động sẽ reset AT89C51.

-ALE/ PROG

Xung của ngõ ra cho phép chốt địa chỉ ALE (address latch enable) cho

phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài. Chân này

cũng được dùng làm ngõ vào xung lập trình ( PROG ) trong thời gian lập trình

Flash.

Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số bằng

1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích

định thời từ bên ngoài và tạo xung clock. Tuy nhiên cần lưu ý là một xung ALE sẽ

bị bỏ qua trong mỗi chu kỳ truy xuất bộ nhớ dữ liệu ngoài.

Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vô hiệu hoá

bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ byte là 8EH. Khi

bit này được set, ALE chỉ tích cực tring thời gian thực thi lệnh MOVX hoặc

MOVC. Ngược lại chân này sẽ được kéo lên mức cao. Việc set bit không cho phép

hoạt động chốt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển

đang chế độ thực thi chương trình ngoài.

- PSEN :

Chân cho phép bộ nhớ chương trình PSEN (program store enable) điều

khiển truy xuất bộ nhớ chuơng trình ngoài. Khi AT89C51 đang thực thi chương

trình trong bộ nhớ chương trình ngoài, PSEN tích cực 2 lần cho mỗi chu kỳ máy,

Page 6: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

5

ngoại trừ trường hợp 2 tác động của PSEN bị bỏ qua cho mỗi truy xuất bộ nhớ dữ

liệu ngoài.

- EA / Vpp:

Chân cho phép truy xuất bộ nhớ ngoài EA (external access enable) phải

được nối với GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vị trí nhớ

của bộ nhớ chương trình ngoài, bắt đầu từ địa chỉ 0000H cho đến FFFFH. Tuy

nhiên cần lưu ý là nếu có bit khoá 1(clock bit 1) được lập trình, EA sẽ được chốt

bên trong khi reset.

EA nên nối với Vcc để thực thi chương trình trong chip.

Chân EA / Vpp còn nhận điện áp cho phép lập trình Vpp trong thời gian

lập trình cho Flash, điện áp này cấp cho các bộ phận có yêu cầu điện áp 12V.

-XTAL 1:

Ngõ vào đến mạch khuyếch đại đảo dao động và ngõ vào đến mạch tạo

xung clock bên trong chip.

-XTAL 2:

Ngõ ra từ mạch khuyết đại đảo của mạch dao động.

Hình: Mạch dao động

III. CẤU TRÚC RAM NỘI CỦA 8951:

Bản đồ bộ nhớ Data trên Chip như sau:

Page 7: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

6

7F FF

F0 F7 F6 F5 F4 F3 F2 F1 F0 B

RAM đa dụng

E0 E7 E6 E5 E4 E

3

E2 E1 E0 ACC

D0 D7 D6 D5 D4 D

3

D2 D1 D0 PSW

30 B8 - - - BC B

B

B

A

B9 B8 IP

2F 7F 7E 7D 7C 7B 7A 79 78

2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P.3

2D 6F 6E 6D 6C 6B 6A 69 68

2C 67 66 65 64 63 62 61 60 A8 AF AC A

B

A

A

A9 A8 IE

2B 5F 5E 5D 5C 5B 5A 59 58

2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2

29 4F 4E 4D 4C 4B 4A 49 48

28 47 46 45 44 43 42 41 40 99 không được địa chỉ hoá bit SBUF

27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON

26 37 36 35 34 33 32 31 30

25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1

24 27 26 25 24 23 22 21 20

23 1F 1E 1D 1C 1B 1A 19 18 8D không được địa chỉ hoá bit TH1

Địa chỉ byte

Địa chỉ bit Địa chỉ bit

Địa chỉ byte

Page 8: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

7

22 17 16 15 14 13 12 11 10 8C không được địa chỉ hoá bit TH0

21 0F 0E 0D 0C 0B 0A 09 08 8B không được địa chỉ hoá bit TL1

20 07 06 05 04 03 02 01 00 8A không được địa chỉ hoá bit TL0

1F Bank 3 89 không được địa chỉ hoá bit TMO

D

18 88 8F 8E 8D 8C 8B 8A 89 88 TCO

N

17 Bank 2 87 không được địa chỉ hoá bit PCON

10

0F Bank 1 83 không được địa chỉ hoá bit DPH

08 82 không được địa chỉ hoá bit DPL

07 Bank thanh ghi 0 81 không được địa chỉ hoá bit SP

00 (mặc định cho R0 -R7) 88 87 86 85 84 83 82 81 80 P0

RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT

- AT8951 có 128 byte RAM nội có địa chỉ từ 00H đến FFH

1/ Vùng bank thanh ghi:

-Bao gồm 32 byte bắt đầu từ 00H1FH được chia thành 4 bank, mỗi bank bao

gồm 8 thanh ghi:

+ Bank 0: từ 00H07H

+ Bank 1: từ 08H0FH

+ Bank 2: từ 10H17H

+ Bank 3: từ 18H1FH

- Mỗi bank gồm 8 thanh ghi từ R0R7.

Bank 0: R0=00H; R1=01H…

Bank 1: R0=08H; R1=09H…

- Tại một thời điểm chương trình chỉ có thể hoạt động với 1 bank thanh ghi mặc

định là bank 0.

2/ Vùng RAM định vị bit:

Page 9: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

8

- Gồm 16 byte có địa chỉ từ 20H2FH trong vùng này ta có thể tác động tới từng

bit. Có nghĩa la có thể set bit đó lên 1 hoặc clear bit đó về 0.

- Có 128 bit trong vùng RAM định vị bit có địa chỉ từ 00H7FH.

3/ Vùng RAM đa dụng:

Có địa chỉ từ 30H7FH(80 byte) có thể sử dụng làm bất cứ công việc gì trong

chương trình.

4/ Vùng các thanh ghi đặc biệt:

Có dịa chỉ từ 80HFFH.

- Thanh ghi tích luỹ A (ACC: Accumulartor) là thanh ghi trung gian thường được

sử dụng để chứa lưu giá trị trong các lệnh chương trình có địa chỉ là E0H.

Vd:

Mov A, #3FH

Lấy 3FH đưa vào A.

Mov A, 3FH

Lấy nội dung của 3FH đưa vào A.

- Thanh ghi B: có địa chỉ là F)H là thanh ghi được dùng kết hợp với thanh ghi A

trong các phép toán.

Vd:

Mul AB

Nhân thanh ghi A và B với nhau, đươc kết quả đưa vào A.

Div AB

Chia A với B, kết quả đưa vào A, số dư đưa vào B.

- Thanh ghi PSW (Program status word):

Là thanh ghi chứa trạng thái của chương trình.

Page 10: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

9

Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như sau:

BIT SYMBOL ADDRESS DESCRIPTION

PSW.7 CY D7H Cary Flag

PSW.6 AC D6H Auxiliary Cary Flag

PSW.5 F0 D5H Flag 0

PSW4 RS1 D4H Register Bank Select 1

PSW.3 RS0 D3H Register Bank Select 0

00=Bank 0; address 00H07H

01=Bank 1; address 08H0FH

10=Bank 2; address 10H17H

11=Bank 3; address 18H1FH

PSW.2 OV D2H Overlow Flag

PSW.1 - D1H Reserved

PSW.0 P DOH Even Parity Flag

CY: là cờ nhớ, CY sẽ set lên 1 khi thực hiện phép cộng có xảy ra nhớ,

hoăc khi thực hiện phép trừ có xảy ra mượn.

AC (Auxiliary carrier) là cờ nhớ phụ khi cộng các số BCD. Cờ nhớ phụ

sẽ set lên 1 nếu kết quả của 4 bit thấp nằm trong khoảng từ 0AH đến

0FH.

F0: là cờ nhớ dành cho người sử dụng.

RS1, RS0: quyết định dãy thanh ghi tích cực. Chúng được xoá sau khi

reset hệ thống và được thay đối bởi phần mềm khi cần thiết.

Page 11: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

10

RS1 RS0 BANK

0 0 0

0 1 1

1 0 2

1 1 3

Dựa vào bảng trên ta có thể chọn thanh ghi bank nào muốn chọn.

OV (Over flow): sẽ set lên 1 khi thực hiên phép toán với số có dấu có

xáy ra tràn.

P (Parity): là bit kiểm tra chẳn lẽ, bit P sẽ bằng 0 hoặc 1 theo dạng

parity chẵn với nội dung của thanh ghi A

- Con trỏ Ngăn xếp SP (Stack Pointer):

+ Con trỏ ngăn xếp là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ

của của byte dữ liệu hiện hành trên đỉnh ngăn xếp. Các lệnh trên ngăn xếp bao

gồm các lệnh cất dữ liệu vào ngăn xếp (PUSH) và lấy dữ liệu ra khỏi ngăn xếp

(POP). 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 ra khỏi ngăn xếp sẽ làm giảm SP. Ngăn xếp của 8031/8051 được giữ trong

RAM nội và 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 8951.

+ Để khởi động SP với ngăn xếp bắt đầu tại địa chỉ 60H, các lệnh sau đây

được dùng:

MOV SP, #5F

Page 12: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

11

+ Với lệnh trên thì ngăn xếp của 8951 chỉ có 32 byte vì địa chỉ cao nhất

của RAM trên chip là 7FH. Sỡ dĩ giá trị 5FH được nạp vào SP vì SP tăng lên 60H

trước khi cất byte dữ liệu.

- Thanh ghi con trỏ dữ liệu Data Pointer (DPTR):

Là thanh ghi 16 bit kết hợp của 2 thanh ghi 8 bit là DPH và DPL

Thanh ghi DPTR thường được dùng để lưu các địa chỉ 16 bit, thông thường là các

địa chỉ khi truy xuất bộ nhớ ngoài.

- Các thanh ghi xuất nhập Port:

Các Port của 8951 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 này đều có thể truy xuất từng bit

nên rất thuận tiện trong khả năng giao tiếp.

8951 chứa một Port nối tiếp 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 giao tiếp nối tiếp với các IC khác. Một thanh ghi đệm dử

liệu nối tiếp (SBUF) ở địa chỉ 99H sẽdữ cảhai dữ liệu truyền và dữ liệu nhập. Khi

truyền dữ liệu ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF. Các mode vận 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.

- Thanh ghi điều khiển nguồn PCON (Power control Register):

Thanh ghi PCON không có bit định vị. Nó ở địa chỉ 87H chứa nhiều bit

điều khiển. Thanh ghi PCON được tóm tắt như sau:

Bit 7 (SMOD): Bit có tốc độ Baud ở mode 1, 2, 3 ở Port nối tiếp khi set.

Bit 6, 5, 4: Không có địa chỉ.

Bit 3 (GF1): Bit cờ đa năng 1.

DPH DPL

Page 13: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

12

Bit 2 (GF0): Bit cờ đa năng 2.

Bit 1 (PD): Set để khởi động mode Power Down và thoát để reset.

Bit 0 (IDL): Set để khởi động mode Idle và thoát khi ngắt mạch hoặc

reset.

Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cả các

IC họ MSC-51 nhưng chỉ được thi hành trong sự biên dịch của CMOS.

IV. BỘ NHỚ NGOÀI

- 8951 có khả năng mở rông bộ nhớ lên đến 64K byte bộ nhớ chương trình và 64k

byte bộ nhớ dữ liệu ngoài. Do đó có thể dùng thêm RAM và ROM nếu cần.

- Khi dùng bộ nhớ ngoài, Port0 không còn chức năng I/O nữa. Nó được kết hợp

giữa bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để chốt byte

của bus địa chỉ chỉ khi bắt đầu mỗi chu kỳ bộ nhớ. Port được cho là byte cao của

bus địa chỉ.

Truy xuất bộ nhớ mã ngoài (Acessing External Code Memory):

- Bộ nhớ chương trình bên ngoài là bộ nhớ ROM được cho phép của tín

hiệu PSEN\. Sự kết nối phần cứng của bộ nhớ EPROM như sau:

Hình : Accessing External Code Memory (Truy xuất bộ nhớ mã ngoài)

Port 0 EA ALE Port 2 PSEN

8951

D0 D7

A0 A7 A8 A15 OE

74HC373 O D

G EPROM

Page 14: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

13

- Trong một chu kỳ máy tiêu biểu, tín hiệu ALE tích cực 2 lần. Lần thứ nhất

cho phép 74HC373 mở cổng chốt địa chỉ byte thấp, khi ALE xuống 0 thì byte thấp và

byte cao của bộ đếm chương trình đều có nhưng EPROM chưa xuất vì PSEN\ chưa

tích cực, khi tín hiệu lên một trở lại thì Port 0 đã có dữ liệu là Opcode. ALE tích cực

lần thứ hai được giải thích tương tự và byte 2 được đọc từ bộ nhớ chương trình. Nếu

lệnh đang hiện hành là lệnh 1 byte thì CPU chỉ đọc Opcode, còn byte thứ hai bỏ đi.

Truy xuất bộ nhớ dữ liệu ngoài (Accessing External Data Memory):

- Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được đọc hoặc ghi khi được

cho phép của tín hiệu RD\ và WR. Hai tín hiệu này nằm ở chân P3.7 (RD) và P3.6

(WR). Lệnh MOVX được dùng để truy xuất bộ nhớ dữ liệu ngoài và dùng một bộ

đệm dữ liệu 16 bit (DPTR), R0 hoặc R1 như là một thanh ghi địa chỉ.

- Các RAM có thể giao tiếp với 8951 tương tự cách thức như EPROM

ngoại trừ chân RD\ của 8951 nối với chân OE\ (Output Enable) của RAM và chân

WR\ của 8951 nối với chânWE \của RAM. Sự nối các bus địa chỉ và dữ liệu tương

tự như cách nối của EPROM.

Port 0 EA\ ALE Port 2

RD\ WR\

8951

D0 D7

A0 A7

A8 A15

OE\ WE\

74HC373 O D

G

RAM

Page 15: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

14

Sự giải mã địa chỉ (Address Decoding):

- Sự giải mã địa chỉ là một yêu cầu tất yếu để chọn EPROM, RAM, 8279,

… Sự giải mã địa chỉ đối với 8951 để chọn các vùng nhớ ngoài như các vi điều

khiển. Nếu các con EPROM hoặc RAM 8K được dùng thì các bus địa chỉ phải

được giải mã để chọn các IC nhớ nằm trong phạm vi giới hạn 8K: 0000H1FFFH,

2000H3FFFH, …

- Một cách cụ thể, IC giải mã 74HC138 được dùng với những ngõ ra của nó

được nối với những ngõ vào chọn Chip CS (Chip Select) trên những IC nhớ

EPROM, RAM, … Hình sau đây cho phép kết nối nhiều EPROM và RAM.

Hình : Address Decoding (Giải mã địa chỉ)

-Vậy một chương trình có thể được tải vào RAM bằng cách xem nó như bộ

nhớ dữ liệu và thi hành chương trình băng cách xem nó như bộ nhớ chương trình.

Page 16: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

15

V. CÁC LỆNH ĐIỀU KHIỂN:

8951 chia ra 2 nhóm lệnh chính:

Các lệnh số học.

Lệnh logic.

Dịch chuyển dữ liệu.

Luân lý.

Rẽ nhánh chương trình.

Từng kiểu lệnh được mô tả như sau:

1 Các lệnh số học (Arithmetic Instrustion):

ADD A, <src, byte>

ADD A, Rn : (A) (A) + (Rn)

ADD A, direct : (A) (A) + (direct)

ADD A, @ Ri : (A) (A) + ((Ri))

ADD A, # data : (A) (A) + # data

ADDC A, Rn : (A) (A) + (C) + (Rn)

ADDC A, direct : (A) (A) + (C) + (direct)

ADDC A, @ Ri : (A) (A) + (C) + ((Ri))

ADDC A, # data : (A) (A) + (C) + # data

SUBB A, <src, byte>

SUBB A, Rn : (A) (A) - (C) - (Rn)

SUBB A, direct : (A) (A) - (C) - (direct)

SUBB A, @ Ri : (A) (A) - (C) - ((Ri))

Page 17: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

16

SUBB A, # data : (A) (A) - (C) - # data

INC <byte>

INC A : (A) (A) + 1

INC direct : (direct) (direct) + 1

INC Ri : ((Ri)) ((Ri)) + 1

INC Rn : (Rn) (Rn) + 1

INC DPTR : (DPTR) (DPTR) + 1

DEC <byte>

DEC A : (A) (A) - 1

DEC direct : (direct) (direct) - 1

DEC @Ri : ((Ri)) ((Ri)) - 1

DEC Rn : (Rn) (Rn) - 1

MULL AB : (A) LOW [(A) x (B)] ; có ảnh hưởng

cờ OV

: (B) HIGH [(A) x (B)] ; cờ Cary được

xóa.

DIV AB : (A) Integer Result of [(A)/(B)]; cờ OV

: (B) Remainder of [(A)/(B)]; cờ Carry

xóa

DA A : Điều chỉnh thanh ghi A thành số BCD đúng

trong phép cộng BCD (thường DA A đi

kèm với ADD, ADDC)

Nếu [(A3-A0)>9] v [(AC)=1] (A3A0) (A3A0) + 6.

Page 18: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

17

Nếu [(A7-A4)>9] v [(C)=1] (A7A4) (A7A4) + 6.

2 Các hoạt động logic (Logic Operation) :

Các hoạt động logic được tóm tắt như sau :

ANL <dest - byte> <src - byte>

ANL A, Rn : (A) (A) AND (Rn).

ANL A, direct : (A) (A) AND (direct).

ANL A,@ Ri : (A) (A) AND ((Ri)).

ANL A, # data : (A) (A) AND (# data).

ANL direct, A : (direct) (direct) AND (A).

ANL direct, # data : (direct) (direct) AND # data.

ORL <dest - byte> <src - byte>

ORL A, Rn : (A) (A) OR (Rn).

ORL A, direct : (A) (A) OR (direct).

ORL A,@ Ri : (A) (A) OR ((Ri)).

ORL A, # data : (A) (A) OR # data.

ORL direct, A : (direct) (direct) OR (A).

ORL direct, # data : (direct) (direct) OR # data.

XRL <dest - byte> <src - byte>

XRL A, Rn : (A) (A) (Rn).

XRL A, direct : (A) (A) (direct).

XRL A,@ Ri : (A) (A) ((Ri)).

XRL A, # data : (A) (A) # data.

Page 19: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

18

XRL direct, A : (direct) (direct) (A).

XRL direct, # data : (direct) (direct) # data.

y = a b = ab + ab

CLR A : (A) 0

CLR C : (C) 0

CLR Bit : (Bit) 0

RL A : Quay vòng thanh ghi A qua trái 1 bit

RLC A : Quay vòng thanh ghi A qua trái 1 bit có

cờ Carry

RR A : Quay vòng thanh ghi A qua phải 1 bit

RRC A : Quay vòng thanh ghi A qua phải 1 bit có

cờ Carry

SWAP A : Đổi chổ 4 bit thấp v 4 bit cao của A cho

nhau (A3A0)(A7A4).

3 Các lệnh rẽ nhánh :

Sau đây là sự tóm tắt từng hoạt động của lệnh nhảy.

JC rel : Nhảy đến “rel” nếu cờ Carry C = 1.

JNC rel : Nhảy đến “rel” nếu cờ Carry C = 0.

JB bit, rel : Nhảy đến “rel” nếu (bit) = 1.

JNB bit, rel : Nhảy đến “rel” nếu (bit) = 0.

JBC bit, rel : Nhảy đến “rel” nếu bit = 1 v xĩa bit.

ACALL addr11 : Lệnh gọi tuyệt đối trong page 2K.

LCALL addr16 : Lệnh gọi di chương trình con trong 64K.

Page 20: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

19

RET : Kết thúc chương trình con trở về chương trình chính.

RETI : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính

hoạt động tương tự như RET.

AJMP Addr11 : Nhảy tuyệt đối không điều kiện trong 2K.

LJMP Addr16 : Nhảy đi không điều kiện trong 64K

Hoạt động tương tự lệnh LCALL.

SJMP rel : Nhảy ngắn không điều kiện trong (-128127) byte

JMP @ A + DPTR:Nhảy không điều kiện đến địa chỉ (A) + (DPTR)

(PC) (A) + (DPTR)

JZ rel : Nhảy đến A = 0. Thực hành lệnh kế nếu A 0.

JNZ rel : Nhảy đến A 0. Thực hành lệnh kế nếu A = 0.

CJNE A, direct, rel : So sánh và nhảy đến A direct

(A) < (direct) C = 1

(A) > (direct) C = 0

(A) = (direct). Thực hành lệnh kế tiếp

CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel.

CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel.

CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel.

DJNE Rn, rel : Giảm Rn nhảy nếu Rn 0.

DJNZ direct, rel : Tương tự lệnh DJNZ Rn, rel.

4 Các lệnh dịch chuyển dữ liệu :

Tất cả các lệnh dịch chuyển đểu khôg ảnh hưởng đến cờ. Hoạt động của

từng lệnh được tóm tắt như sau :

Page 21: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

20

MOV A,Rn : (A) (Rn)

MOV A, direct : (A) (direct)

MOV A, @ Ri : (A) ((Ri))

MOV A, # data : (A) # data

MOV Rn, A : (Rn) (A)

MOV Rn, direct : (Rn) (direct)

MOV Rn, # data : (Rn) # data

MOV direct, A : (direct) (A)

MOV direct, Rn : (direct) (Rn)

MOV direct, direct : (direct) (direct)

MOV direct, @ Ri : (direct) ((Ri))

MOV direct, # data : (direct) data

MOV @ Ri, A : ((Ri)) (A)

MOV @ Ri, direct : ((Ri)) (direct)

MOV @ Ri, # data : ((Ri)) # data

MOV DPTR, # data16 : (DPTR) # data16

MOV A, @ A + DPTR : (A) (A) + (DPTR)

MOV @ A + PC : (PC) (PC) + 1

(A) (A) + (PC)

MOVX A, @ Ri : (A) ((Ri))

MOVX A, @ DPTR : (A) ((DPTR))

MOVX @ Ri, A : ((Ri)) (A)

Page 22: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

21

MOVX @ DPTR, A : ((DPTR)) (A)

PUSH direct : Cất dữ liệu vô Stack

POP direct : Lấy từ Stack ra direct

XCH A, Rn : Đổi chổ nội dung của A với Rn

(A) (Rn)

XCH A, direct : (A) (direct)

XCH A, @ Ri : (A) ((Ri))

XCHD A, @ Ri : Đổi chổ 4 bit thấp của (A) với ((Ri))

(A3A0) ((Ri3Ri0))

5 Các lệnh luận lý (Boolean Instruction) :

Hoạt động của các lệnh luận lý được tóm tắt như sau :

CLR C : Xóa cờ Carry xuống 0. Có ảnh hưởng cờ Carry.

CLR BIT : Xóa bit xuống 0. Không ảnh hưởng cờ Carry

SET C : Set cờ Carry ln 1. Có ảnh hưởng cờ Carry.

SET BIT : Set bit lên 1. Không ảnh hưởng cờ Carry.

CPL C : Đảo bit cờ Carry. Có ảnh hưởng cờ Carry.

CPL BIT : Đảo bit. Không ảnh hưởng cờ Carry.

ANL C, BIT : (C) (C) AND (BIT): Có ảnh hưởng cờ Carry.

ANL C, /BIT : (C) (C) AND NOT (BIT): không ảnh hưởng cờ Carry

ORL C, BIT : (C) (C) OR (BIT): Tác động cờ Carry.

ORL C, /BIT : (C) (C) OR NOT (BIT): Tác động cờ Carry.

MOV C, BIT : (C) (BIT): Cờ Carry bị tác động.

Page 23: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

22

MOV BIT, C : (BIT) (C): Không ảnh hưởng cờ Carry.

VI. BỘ ĐỊNH THỜI (TIMER)

1/ Khái niệm:

AT89C51 có 2 bộ timer:

- Timer 0: là một bộ đếm lên tuần tự 16 bit, giá trị đếm chứa trong 2 thanh ghi

TH0, TL0.

- Timer 1: là một bộ đếm tuần tự 16 bit chứa trong TH1 và TL1.

2/ Các thanh ghi của bộ Timer:

- Thanh ghi TMOD (Time mode) là thanh ghi 8 bit.

Bit Name Timer Description

7 GATE 1 Khi GATE = 1, Timer chỉ làm việc khi INT1=1

6 C/T 1 Bit cho đếm sự kiện hay ghi giờ

C/T = 1 : Đếm sự kiện

C/T = 0 : Ghi giờ đều đặn

5 M1 1 Bit chọn mode của Timer 1

4 M0 1 Bit chọn mode của Timer 1

3 GATE 0 Bit cổng của Timer 0

2 C/T 0 Bit chọn Counter/Timer của Timer 0

1 M1 0 Bit chọn mode của Timer 0

0 M0 0 Bit chọn mode của Timer 0

Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1.

Page 24: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

23

M1 M0 MODE DESCRIPTION

0 0 0 Mode Timer 13 bit (mode 8048)

0 1 1 Mode Timer 16 bit

1 0 2 Mode tự động nạp 8 bit

1 1 3 Mode Timer tách ra :

Timer 0 : TL0 là Timer 8 bit được điều khiển bởi

các bit của Timer 0. TH0 tương tự nhưng được điều

khiển bởi các bit của mode Timer 1.

Timer 1 : Được ngừng lại.

- Thanh ghi TCON (Timer control)

Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer 0

và Timer 1. Thanh ghi TCON có bit định vị. Hoạt động của từng bit được tóm tắt

như sau:

Bit Symbol Bit Address Description

TCON.7 TF1 8FH Cờ tràn Timer 1 được set bởi phần cứng ở

sự tràn, được xóabởi phần mềm hoặc bởi

phần cứng khi các vectơxử lý đến thủ tục

phục vụ ngắt ISR

TCON.6 TR1 8EH Bit điều khiển chạy Timer 1 được set

hoặc xóa bởi phần mềm để chạy hoặc

Page 25: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

24

ngưng chạy Timer.

TCON.5 TF0 8DH Cờ tràn Timer 0(hoạt động tương tự TF1)

TCON.4 TR0 8CH Bit điều khiển chạy Timer 0 (giống TR1)

TCON.3 IE1 8BH Cờ kiểu ngắt 1 ngoài. Khi cạnh xuống xuất

hiện trên INT1 thì IE1 được xóa bởi phần

mềm hoặc phần cứng khi CPU định hướng

đến thủ tục phục vụ ngắt ngoài.

TCON.2 IT1 8AH Cờ kiểu ngắt 1 ngoài được set hoặc xóa

bằng phấn mềm bởi cạnh kích hoạt bởi sự

ngắt ngoài.

TCON.1 IE0 89H Cờ cạnh ngắt 0 ngoài

TCON IT0 88H Cờ kiểu ngắt 0 ngoài.

3/ Các chế độ hoạt động của Timer:

- Mode 0: gồm 8 bit của thanh ghi THx, 5 bit của thanh ghi TLx. (Rất ít được sử

dụng)

Over flow

- Mode 1: bộ Timer là bộ đếm gồm 16 bit.

Gồm 8 bit của thanh ghi THx và 8 bit của thanh ghi TLx.

Đếm giá trị từ 0 đền 216-1=65535

TLx (5 bit) THx (8 bit) TFx Timer Clock

Page 26: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

25

Với mode 1 bộ timer không tự động nạp lại giá trị đếm sau mỗi lần tràn. Do đó sau

mỗi lần tràn ta phải nạp lại giá trị đặt cho timer.

- Mode 2: là chế độ tự động nạp lại. Bộ timer là bộ đếm 8 bit chứa trong thanh ghi

THx. Thanh ghi THx không thực hiện nhiệm vụ đếm, mà chỉ nạp lại giá trị cho

thanh ghi TLx sau mỗi lần tràn.

- Mode 3:

+Mode 3 là mode Timer tách ra và là sự khác biệt cho mỗi Timer.

+Timer 0 ở mode 3 được chia là 2 timer 8 bit. TL0 và TH0 hoạt động như

những Timer riêng lẻ với sự tràn sẽ set các bit TL0 và TF1 tương ứng.

+Timer 1 bị dừng lại ở mode 3, nhưng có thể được khởi động bởi việc ngắt

nó vào một trong các mode khác. Chỉ có nhược điểm là cờ tràn TF1 của Timer 1

không bị ảnh hưởng bởi các sự tràn của Timer 1 bởi vì TF1 được nối với TH0.

+Mode 3 cung cấp 1 Timer ngoại 8 bit là Timer thứ ba của 8951. Khi vào

Timer 0 ở mode 3, Timer có thể hoạt động hoặc tắt bởi sự ngắt nó ra ngoài và vào

trong mode của chính nó hoặc có thể được dùng bởi Port nối tiếp như là một máy

phát tốc độ Baud, hoặc nó có thể dùng trong hướng nào đó mà không sử dụng

Interrupt.

Page 27: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

26

CHƯƠNG II : TÌM HIỂU ĐỘNG CƠ BƯỚC I. KHÁI QUÁT:

Động cơ bước cho phép xác định vị trí mà không cần dùng mạch hối

tiếp. Động cơ bước khác động cơ bình thường ở chổ, trục giữa của chúng

không quay tự do, mà quay theo từng bước khi các cuộn dây của chúng được

cấp nguồn theo thứ tự thích hợp.

Bước của động cơ (giá trị của góc giữa hai vị trí ổn định kề nhau của

Roto) càng nhỏ thì độ chính xác trong điều khiển càng cao. Bước của

động cơ phụ thuộc vào số cuộn dây phần ứng, số cực của Stato, số răng

của Roto và phương pháp điều khiển bước đủ hoặc điều khiển nữa bước.

Tùy theo yêu cầu về độ chính xác và kết cấu của động cơ, mà bước của

động cơ thay đổi trong giới hạn từ 1800 - 0,180. Trong đó: động cơ bước

nam châm vĩnh cửu dạng cực móng và có từ trở thay đổi từ 60 - 450, động

cơ bước có từ trở thay đổi có góc bước nằm trong giới hạn từ: 1,80- 300,

và động cơ bước hỗn hợp có góc bước thay đổi trong khoảng 0,360 - 150.

Các giá trị góc của các loại động cơ kể trên được tính trong chế độ điều

khiển bước đủ.

Chiều quay của động cơ bước không phụ thuộc vào chiều dòng điện chạy

trong các cuộn dây phần ứng, mà phụ thuộc vào thứ tự cuộn dây phần ứng

được cấp xung điều khiển. Nhiệm vụ này do bộ chuyển phát thực hiện.

Số cuộn dây phần ứng (hay cò gọi là cuộn dây pha) của động cơ bước được

chế tạo từ 2 - 5 cuộn dây pha (hay còn gọi là bối dây) và được đặt đối diện

nhau trong các rãnh ở Stato. Đối với cuộn dây phải có hai cuộn dây thì chỉ

dùng cho điều khiển lưỡng cực (cuộn dây có cực tính thay đổi), với 4 cuộn

dây có thể dùng cho cả hai chế độ điều khiển lưỡng cực và điều khiển đơn

cực.

II. PHÂN LOẠI ĐỘNG CƠ BƯỚC:

Động cơ bước được phân thành các loại như sau:

Page 28: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

27

1) Động cơ bước nam châm vĩnh cữu:

Cấu trúc:

Các cuộn dây quấn trên stator, roto là nam châm vĩnh cữu, giống động cơ

AC đồng bộ.

Phân loại: đơn cực và lưỡng cực

- Đơn cực:là động cơ có chiều dòng điện qua mỗi cuộn dây không đổi.

- Lưỡng cực là động cơ có chiều dòng điện qua mỗi cuộn dây thay

đổi.

2) Động cơ bước có từ trở biến thiên:

Cấu trúc:

Roto làm bằng sắt nhẹ, số cực của roto ít hơn số cực của stato, mỗi cuộn

dây được quấn trên 2 cục của stato đối diện nhau.

Hay còn gọi là động cơ phản kháng. Kiểu động cơ này có góc nằm trong

giới hạn từ 1,80 300 trong chế độ điều khiển bước đủ, mômen hãm từ 1 50 Ncm,

tần số khởi động lớn nhất là 1 Khz, và tần số làm việc lớn nhất trong điều kiện

Page 29: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

28

không tải là 20 Khz. Stato được chế tạo thành dạng răng với bước cực s, roto của

động cơ cũng được chế tạo thành dạng răng có bước cực r.

3) Động cơ bước loại hỗn hợp:

Hay còn gọi là động cơ bước cảm ứng, có góc bước thay đổi trong khoảng

0,36 - 150 trong chế độ bước đủ, mômen hãm từ 3 - 1000 Ncm, tần số khởi động

lớn nhất là 40 khz. Trong các loại động cơ bước kể trên thì động cơ bước hổn hợp

được sử dụng nhiều hơn cả. Vì loại động cơ này kết hợp các ưu điểm của hai loại

động cơ trên đó là: Động cơ nam châm vĩnh Cửu với dạng cực móng, và động cơ

có từ trở thay đổi.

Cấu tạo của động cơ bước thay đổi hổn hợp là sự kết hợp giữa động cơ

bước nam châm vĩnh cữu và động cơ bước có từ trở thay đổi. Phần Stato được cấu

tạo hoàn toàn giống Stator của động cơ bước có từ trở thay đổi. Trên các cực của

Stato được đặt các cuộn dây pha, mỗi cuộn dây pha được quấn thành 4 cuộn dây

hoặc được quấn thành 2 cuộn dây đặt xen kẻ nhau để hình thành lên các cực N và

S đồng thời đối diện với mỗi cực của bối dây là răng của Roto và cũng được đặt

xen kẽ giữa hai vành răng số 3 của Roto.

Động cơ hổn hợp cũng được chế tạo với 2, 4 và 5 pha, động cơ 2 và 4 pha

thường cho góc bước từ s = 0,90 - 150 cò động cơ 5 pha thường có có góc

bước từ s = 0,180 - 0,270 .

Bước răng của Roto được xác định bằng biểu thức sau:

ZrZrr

03602

Trong đó: Zr là số răng của Roto

Page 30: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

29

Góc bước của động cơ là tỷ số giữa bước răng r và số pha m của động cơ

khi cuộn dây được điều khiển lưỡng cực :

mr

s

Động cơ hổn hợp có tần số bước và độ phân giải cao, có mômen quay và

mômen hãm lớn.

Trong chế tạo động cơ bước ngoài ba loại chính kể trên, để có góc bước

thay rất nhỏ người ta còn chế tạo động cơ bước từ trở thay đổi có nhiều

tầng, kết cấu của loại này được trình bày ở hình .

Loại động cơ này thường được chế tạo 2, 3, 4 tầng trình bầy kết cấu của

động cơ bước từ trở thay đổi có ba tầng. Trong mỗi tầng số răng của Stato

và Roto giống nhau. Vị trí răng của 3 Stato được đặt giống nhau và được cố

định trên trục Roto, nhưng vị trí răng của 3 Stato được đặt lệch nhau 1/3

bước răng.

Góc lệch giữa hai tầng kề nhau được xác định bằng biểu thức sau:

Zrmmr 0360

Nếu Roto có Zr = 12 răng thì góc lệch nhau giữa hai tầng kề nhau là 100 Khi có một xung dòng điện điều khiển đặt vào tầng 1 thì răng của Roto và

Stato đối đỉnh nhau (vì từ thông chỉ khép kín tại vị trí có từ trở nhỏ nhất).

Lúc này răng của Roto và Stato ở tầng 2 lệch nhau 1 góc là 100, còn răng

của Roto và Stato ở tầng 3 lệch nhau là 200. Cắt xung dòng điện điều khiển

vào tầng 1 và các xung dòng điện điều khiển vào tầng thì Roto của tầng 2

quay một góc 100 để đỉnh răng của Roto trùng với đỉnh răng của stato ở

tầng 2, lúc này răng của Roto và Stato của tầng 3 lệch nhau một góc là 100

so với tầng 2. Quá trình điều khiển tiếp tục cho tới khi trở lại tầng 1. Cuối

cùng ta có quá trình điều khiển theo trình tự 1-2-3-1

III. PHƯƠNG PHÁP ĐIỀU KHIỂN ĐỦ BƯỚC VÀ NỬA BƯỚC:

1. Phương pháp điều khiển nguyên bước:

Page 31: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

30

Thể hiện trình tự điều khiển bước đủ của dộng cơ bước nam châm vĩnh cửu

được từ hóa với các cực từ xen kẽ. Nguyên lý làm việc của động cơ bước là dựa

trên sự tác động tương hổ giữa từ trường của Stato và Roto, hình thành mômen

điện từ làm quay Roto đi một góc nhất định.

Bảng làm việc của chế độ nguyên bước:

Nếu ta điều khiển động cơ theo như bảng trên, chuyển mạch tuần tự từ

bước 1 đến bước 4. Động cơ sẽ làm việc ở chế độ nguyên bước như sau

Dạng điều khiển này được gọi là điều khiển bước đủ hay còn gọi là điều

khiển đối xứng.

Page 32: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

31

2. Phương pháp điều khiển nửa bước:

Thể hiện trình tự điều khiển nửa bước, quá trình điều khiển nửa bước

tương tự như quá trình điều khiển bước đủ, nhưng trình tự chuyển mạch các cuộn

dây điều khiển như bảng sau:

Với việc điều khiển nửa bước, mỗi bước của động cơ quay được nhỏ hơn ở

chế độ nguyên bước. Như ta thấy, với cung 1 loại động cơ, nếu họat động ở chế độ

nguyên bước, thì chỉ cần 4 bước để thực hiện 1 vong quay, còn ở chế độ nữa bước

là 8.

Xét về yêu cầu đảm bảo độ chính xác trong điều khiển, thì phương pháp

điều khiển nửa bước dễ dàng đáp ứng hơn, nhưng bộ chuyển phát xung điều khiển

phức tạp hơn nhiều so với phương pháp điều khiển bước đủ.

Page 33: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

32

IV. NGUYÊN LÝ HOẠT ĐỘNG CỦA ĐỘNG CƠ BƯỚC

1. Động cơ nam châm vĩnh cửu:

Nguyên lý làm việc của động cơ này là dựa vào tác động của một trường điện

từ trên một mômen điện từ, tức là tác động giữa một trường điện từ và một hoặc

Page 34: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

33

nhiều nam châm vĩnh cửu. Roto của động cơ tạo thành một hoặc nhiều cặp từ và

mômen điện từ của nam châm được dặt thẳng hàng trên từ trường quay do các

cuộn dây tạo nên.

Xét cấu trúc của động cơ bước nam châm vĩnh cửu như:

Động cơ có hai cuộn dây lắp ở hai cực của Stato, và một nam châm vĩnh

cửu ở Roto. Khi kích thích một cuộn dây của Stato (đồng thời ngắt điện cuộn kia)

sẽ tạo nên hai cực Bắc (North) và Nam (South) của nam châm. Roto sẽ thẳng đứng

với hướng từ trường

Nếu ta cho dòng điện vào cuộn dây W1 thì vị trí 1 và 3 của Stato tương ứng

sẽ là cực Nam và cực Bắc.

Giả sử trục của nam châm vĩnh cửu của Roto đang lệch với trục 1-3 một

góc dưới tác dụng của lực hút do các cực trái dấu của nam châm sẽ sinh ra một

lực quay Roto về vị trí 1, vị trí này gọi là vị trí cân bằng. Sau đó cho dòng điện I2

vào cuộn dây W2 (lúc này dòng điện ở cuộn W1 bị ngắt), thanh nam châm sẽ quay

nhanh đến vị trí 2 một góc 900 nếu việc cấp điện liên tục và tuần tự vào cuộn dây

W1, W2, W1, W2, …. Và đảo chiều dòng điện sau mỗi bước, thanh nam châm sẽ

quay thành những vòng tròn, từ một phần tư vòng tròn đến một phần tư vòng tròn

khác.

Các cuộn dây của Stato gọi là các pha. Động cơ bước có thể có nhiều pha:

2, 3, 4, 5 pha, nó được cấp điện cuộn này sang cuộn khác với việc đảo chiều dòng

điện sau mỗi bước quay. Chiều các động cơ phụ thuộc vào thứ tự cung cấp điện

cho các cuộn dây và hướng của từ trường.

2. Động cơ bước từ trở thay đổi:

Nguyên lý làm việc của động cơ bước từ trở thay đổi dựa trên cơ sở định

luật cảm ứng điện từ, tức là dựa trên sự tác động giữa một trường điện từ và một

Roto có từ trở thay đổi theo góc quay.

Roto động cơ điện được chế tạo bằng vật liệu dẫn từ, trên bề mặt Roto

thường có nhiều răng. Mỗi răng của Roto hoặc của Stato gọi là một cực. Trên hai

cực đối diện được mắc nối tiếp hai cuộn dây (ví dụ như cuộn dây AA') tạo thành

Page 35: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

34

một phần của động cơ. Như vậy động cơ như hình vẽ có ba pha A, B, C, từ trở

thay đổi theo góc quay của răng. Khi các răng của Roto đứng thẳng hàng với các

cực của Stato, từ trở ở đó sẽ nhỏ nhất. Nếu ta cho dòng điện chạy vào cuộn dây

BB' nó sẽ tạo nên từ trường kéo cực gần nó nhất của roto và làm Roto quay một

góc 300 theo chiều ngược chiều kim đồng hồ. Nếu dòng điện được đưa vào cuộn

dây CC', Roto lại tiếp tục quay một góc 300 nữa … Các cuộn dây AA', BB', CC '

gọi là các pha.

Hướng quay của động cơ không phụ thuộc vào chiều của dòng điện mà phụ

thuộc vào thứ tự cấp điện cho cuộn dây. Nhiệm vụ này do các mạch logic trong bộ

chuyển phát thực hiện. Với cách thay đổi thứ tự hoặc thay đổi cách kích thích các

cuộn dây ta cũng làm thay đổi các vị trí góc quay.

Động cơ bước có từ trở thay đổi có chuyển động êm, số bước lớn và tần số

làm việc cũng khá lớn (từ 2 đến 5 Khz).

Một số công thức tính cho động cơ bước từ trở thay đổi:

Nr : Số răng roto

Ns : Số răng stato

Np : Số pha

Pr : Góc độ răng roto

s : Góc bước

Rs : Giá trị bước

X = Ns/Np : số răng stato cho một pha

- Góc độ răng giữa hai răng kề nhau được xác định như sau :

Nr

0360Pr ; Pr

3600

Ps

- Góc bước được xác định bởi biểu thức :

NpNr

s.

3600

(độ / bước)

- Giá trị bước

Page 36: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

35

sRs

360

- Nếu tần số xung là f thì tốc độ Roto là:

6.6069 s

NrNpf

Rsf

(vòng / phút)

- Số răng Roto cho một pha:

1

NpNrX

3. Động cơ hổn hợp:

Động cơ hổn hợp là sự kết hợp nguyên tắt làm việc của động cơ có bước

nam châm vĩnh cửu và động cơ bước có từ trở thay đổi nhằm có được đặt tính tốt

nhất của hai loại kể trên là momen lớn và số bước lớn.

Động cơ gồm hai nửa Roto (1) và (2). Nửa(1) có nhiều răng trên Roto, nửa

(2) là nam châm vĩnh cửu. Do đó có sự kết hợp giữa hai phần nên tạo ra sự kích

thích roto mạnh hơn. Động cơ loại này có số bước đạt đến 400 bước, nhưng giá

thành đắt.

4. Động cơ nhiều Stato:

Động cơ gồm nhiều stato trên cùng một trục. Nếu ta dịch chuyển stato đi

một góc đồng thời giữ Roto thẳng hàng hoặc ngược lại có bước rất nhỏ. Khi cung

cấp điện cho stato một cách liên tục, ta sẽ có một động cơ (quay liên tục), đặc tính

của nó không tốt bằng động cơ có từ trở thay đội.

V. ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC:

Page 37: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

36

Điều khiển động cơ bước do một thiết bị điện tử gọi là bộ chuyển

phát thực hiện. nó bao gồm các chức năng sau đây:

Tạo các xung với các tần số khác nhau.

Chuyển đổi các phần cho phù hợp với thứ tự kích.

Làm giảm dao động cơ học.

Bộ điều khiển đưa ra các tín hiệu điều khiển đến mạch công suất của

động cơ. Bộ điều khiển đưa ra tín hiệu quay thuận, quay ngược, hay đứng

yên.. Bộ điều khiển ở đậy ta sử dụng vi điều khiển 8951.

Dưới đây là mạch công suất của động cơ:

Ta có thể sử dung transistor hay motfet, để điều khiển động cơ. Khi

T dẫn, dòng điện từ nguồn chạy thẳng xuống đất, không có dòng điện qua

cuôn dây, khi T không dẫn, dòng điện chạy qua cuôn dây của động cơ bước.

Tương tự ta kích tuần tự các cuôn dây còn lại, động cơ sẽ quay, động cơ sẽ

quay ngược lại nếu ta kích theo thứ tự ngược lại.

Ở vị trí khóa của động cơ bước, ta cho dòng diện chạy qua tất cả các

cuộn dây của động cơ. Lúc đó động cơ sẽ không chuyển động, va bị khóa

cứng ở vị trí đó.

Page 38: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

37

Ứng dụng:

Do mạch điều khiển đơn giản, không phức tạp như cac loại động cơ khác,

lại chính xác. Nên động cơ bước được sử dụng nhiều trong cac ứng dụng

công nghiệp như: máy in, đồng hồ v.v….

Một số động cơ thường gặp

Page 39: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

38

CHƯƠNG III : TÌM HIỂU VỀ ANTENA I.CHỨC NĂNG ANTENA :

Anten là bộ phận đầu tiên trong hệ thống. Có nhiều loại khác nhau,

việc lựa chọn Anten cho đúng với kênh sóng, bố trí lắp đặt cho đúng kỹ

thuật, dùng dây cáp truyền sóng đúng tổng trở. Những yếu tố này quyết định

khả năng nhận sóng điện của Anten.

Anten có 2 loại là UHF và VHF :

VHF : very high fequency có dải tần thu được từ 30 – 300 MHZ.

UHF: ultra high fequency có dải tần thu được từ 300MHZ – 32GHz

Nhiệm vụ của Anten:

Thu tín hiệu cao tần RF được gửi từ đài phát.

Đáp ứng được băng thông giữa hình và tiếng.

Đáp ứng được độ lợi cho biên độ tín hiệu lớn nhất là tín hiệu truyền

hình màu ở nơi xa đài phát.

II.CẤU TẠO ANTEN YAGI: Anten thông dụng và tiện lợi nhất hiện nay là Anten YAGI. Yagi là

tên một nhà bác học người Nhật đã sáng chế ra loại Anten này. Cùng góp

công với YAGI còn có UDA cũng là người Nhật, nên cóp tài liệu gọi là

Anten UDA_YAGI.

Anten có 3 thành phần chính:

a. Chấn tử thu sóng

Thường dùng ngẫu cực có hình vòng cung dẹt. Dây Anten được mắc ở

hai bên đọan hở ra của vòng cung dẹt. Chấn tử thu sóng là bộ phận

chính của Anten.

b. Chấn tử hướng sóng:

Gồm 1 hay nhiều ống nhôm có chiều dài ngắn hơn chấn tử thu sóng

được đặt ở phía trước hướng về đài truyền hình. Những chấn tử hướng

Page 40: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

39

sóng có chiều dài càng ngắn thì đặt trước mũi Anten, cón những chấn tử

dài hơn thì càng gần chấn tử thu sóng hơn.

c. Chấn tử phản sóng:

Có chiều dài lớn hơn cả, gồm 1 hay nhiều nhánh tạo thành dàn đặt ngay

sau chấn tử thu sóng. Chấn tử phản sóng có nhiệm vụ phản dội vào chấn

tử thu sóng làm tăng hệ số khuyếch đại.

Page 41: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

40

CHƯƠNG IV: TIẾN TRÌNH THƯC HIỆN I. MẠCH KÍCH CÔNG SUẤT:

Để điều khiển động cơ bước ta sử dụng mạch sau:

Ta sử dụng 1 transistor loại pnp (TIP 127), và 4 Motfet IRF540.

Để động cơ bước họat động cần dòng ic = 1.6A

mAicib 6.11000

6.11000

Ta chọn kR 56.1

7.091

Vậy ta chọn R1 và R2 là 10k

Linh kiện Motfet, là loại linh kiện đóng ngắt nhanh và tổn hao do đóng ngắt thấp.

Điều khiển kích đóng ngắt bằng xung điện áp ở mạch cổng. Do đó khi có điện áp

đặt vào 2 cực G và S thì Motfet dẫn. ngược lại, khi VGS=0 thì Motfet ngắt.

II. MẠCH HIỂN THỊ RA LED 7 ĐOẠN :

Page 42: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

41

Đây là mạch hiển thị số ra Led 7 đoạn. Do động cơ bước chỉ quay từ 0 đến 3600,

nên ta chỉ sử dụng 3 Led 7 đoạn.

Ở mạch này ta sử dung IC giải mã BCD 7447. Ở đấu vào của 7447 ta đưa vào số

đếm (thập phân, hay số hex), IC 7447 sẽ cho ra mã số tương ứng đến Led 7 đoạn.

Gọi i là dòng điện chạy qua Led, ta chọn i = 10mA

Ta sử dung transistor A1015 để điều khiển đóng ngắt Led.

48010

8.455

2.055

2.0mA

RRR

Vcci . Ta chon R5= 330

1.010010

icib .mA

Led 7 đoạn có 7 led nhỏ, vậy ib=0.7mA

kib

VccRb 67.0

7.057.0

.ta chọn Rb=1k

III. SƠ ĐỒ MẠCH ĐIỀU KHIỂN:

Page 43: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

42

VCC

VCC VCCVCC

VCC

VCC

VCC

VCC

x2

x1

x1x2

L4

CA

B0

D

A

B6

B

B3

G

G

E

E

D

F

A

F B

B5

D

B

D CA G

B4

B1

EE

C

C F

B2

B F

L3L2

B0B1B2B3B4B5B6

L1L2L3L4

Q2

A1015

23

1 Q4

A1015

23

1Q3

A1015

23

1

U1

AT89C51

9

1819

29

3031

40

12345678

2122232425262728

1011121314151617

3938373635343332

RST

XTAL2XTAL1

PSEN

ALE/PROGEA/VPP

VC

C

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INTOP3.3/INT1

P3.4/TOP3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

LED1LED7SEG

7 6 4 2 1 9 10

3

8

5

A B C D E F G

CM

CM

DP

LED2LED7SEG

7 6 4 2 1 9 10

3

8

5

A B C D E F G

CM

CM

DP

LED3LED7SEG

7 6 4 2 1 9 10

3

8

5

A B C D E F G

CM

CM

DP

C310uf

R6

100

C1

33p

SW1

reset1 2

Y111.059C2

33p

U2

74LS47

7126453

1312111091514

1248BI/RBORBILT

ABCDEFG

R31k

R21k

R41k

JP4

HEADER 3

123

JP2

HEADER 212

U3LM7806C/TO

1 3

2

IN OUT

GN

D

- +

D4

diode bridge

2

1

3

4JP5

HEADER 2

12

R104K7

SW2

CONG TAC HANH TRINH

12

C42200uf

C510uf

R5

330

1234567 8

91011121314

R710K

JP3

ban phim

12345678

JP6

ACQUY6V

12

+ C62000UF

D5

DIODE

IV. BÁO CÁO KẾT QUẢ ĐẠT ĐƯỢC:

Sau khi hoàn thành Anten xoay có nhớ sử dụng động cơ bước, đã đạt được những

kết quả sau:

Khác với các Anten xoay và lưu vị trí trên thi trường, sử dụng động cơ DC. Anten

này có thể xoay đến bất kỳ vị trí nào, chỉ cần đặt 1 lúc nhiều vị trí cần đến, sau đó

cho động cơ chạy. Động cơ sẽ dừng đúng từng vị trí mà đã đặt trước đó.

Tiện lợi khi sử dụng động cơ bước là mạch điều khiển đơn giản và không cần

mạch hồi tiếp như động cơ servo, mà cũng có thể đến đúng vị trí ta cần.

Để Anten đứng yên khi không sử dụng, ta sử dung bình Acquy, để cấp nguồn điện

giữ cho động cơ đứng yên. Đồng thời sử dụng nguồn điện này để nuôi vi điều

khiển. Để nhớ các vị trí ta đặt.

Hướng dẫn sử dụng Anten:

Khi có nguồn cấp cho Anten, Anten sẽ xoay đến đến khi đụng vào công tắc hành

trình, động cơ sẽ dừng lại, ta đặt vị trí đó là 00.

Nút Run: cho phép Anten xoay.

Page 44: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

43

Nút Stop: Anten dừng lại.

Nút Set: nhấn vào nút set, sau đó dặt vị trí cho Anten.

Nút Save: khi đặt xong vị trí đầu tiên, nhấn save để lưu lại vị trí đó.

Nút Change: thay đổi chiều quay cho Anten.

Nút Clr: để xóa số khi nhấn sai.

V. CHƯƠNG TRÌNH: #include <sfr51.inc>

LED1 BIT P2.5

LED2 BIT P2.6

LED3 BIT P2.7

TRAM EQU 3CH

CHUC EQU 3BH

DONVI EQU 3AH

TRAM1 EQU 51H

CHUC1 EQU 52H

DONVI1 EQU 53H

SO1 EQU 35H

SO2 EQU 36H

SO3 EQU 37H

HANG_TRAM EQU 3DH

HANG_CHUC EQU 3EH

HANG_DONVI EQU 3FH

SOBUOC EQU 39H;LUU SO BUOC DONG CO BUOC DUOC

STEP BIT P1.3; PORT CHO PHEP DONG CO CHAY

MOC BIT P0.3;CONG TAC HANH TRINH,XAC DINH DIEM GOC BAN

DAU

STOP BIT 20H.0

CHIEUQUAY BIT 20H.1

Page 45: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

44

SAVE BIT 20H.5

DEM BIT 20H.3

DAT BIT 20H.2

ORG 0

MAIN: MOV TMOD,#00000001B

MOV TRAM1,#0

MOV CHUC1,#0

MOV DONVI1,#0

MOV SO1,#00H

MOV SO2,#00H

MOV SO3,#00H

MOV SOBUOC,#00H

MOV HANG_DONVI,#00H

MOV HANG_TRAM,#00H

MOV HANG_CHUC,#00H

MOV DONVI,#00H

MOV CHUC,#00H

MOV TRAM,#00H

MOV 34H,#00H

MOV 39H,#0FFH

MOV 41H,#0

MOV 42H,#00H

MOV 43H,#0FFH

MOV 44H,#0FFH

MOV 45H,#0FFH

MOV 46H,#0FFH

MOV 47H,#0FFH

MOV 48H,#0FFH

MOV 49H,#0FFH

Page 46: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

45

MOV 4AH,#0FFH

MOV 4BH,#0FFH

MOV 4CH,#0FFH

MOV 5CH,#0

MOV 5DH,#0

MOV 20H,#0

MOV 22H,#0

MOV R5,#0

MOV R6,#10

MOV 11H,#0

;-----------------------------------------------------------------------------

LOOP:

ACALL QUETPHIM

ACALL HIENTHI

ACALL HIENTHI1

ACALL KIEMTRAPHIM

ACALL DOISANGDO

ACALL QUAY1

SJMP LOOP

;-----------------------------------------------------------------------------

KIEMTRAPHIM:;KIEM TRA PHIM NAO DUOC NHAN

MOV A,10H ;0 NHO 10H =1:PHIM DA DUOC NHAN

CJNE A,#1,SUTDOWN ;NEU KHONG CO PHIM NAO DUOC NHAN

THI THOAT KHOI CHUONG TRINH

MOV 10H,#0

MOV A,32H

CJNE A,#0AH,TIEP1 ;NEU PHIM= 0AH,THI CHO BIT STOP=1

SETB STOP ;DONG CO DUNG LAI

Page 47: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

46

TIEP1: CJNE A,#0BH,TIEP2 ;NEU PHIM=0BH,THI CHO BIT STOP=0

MOV SO1,#0 ;DONG CO CHAY

MOV SO2,#0

MOV SO3,#0

CLR STOP

CLR 22H.0

MOV P1,38H

TIEP2: CJNE A,#0CH,TIEP3 ;NEU PHIM=0CH,THI GOI CHUONG

TRINH LUU_VI_TRI

ACALL LUU_VI_TRI

MOV SO1,#0

MOV SO2,#0

MOV SO3,#0

TIEP3: CJNE A,#0DH,TIEP4 ;NEU PHIM=0DH,THI DAO BIT

CHIEUQUAY

SETB STOP ;CHIEU QUAY DONG CO SE THAY DOI

JNB MOC,SUTDOWN

CPL CHIEUQUAY

CLR 22H.0

CLR STOP

TIEP4: CJNE A,#0EH,TIEP5 ;NEU PHIM=0EH,BIT DAT=1

SETB STOP ;DAT VI TRI CHO DONG CO

SETB DAT

SETB 22H.0

TIEP5: CJNE A,#0FH,TIEP6 ;NEU PHIM=0FH

Page 48: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

47

JNB DAT,TIEP6

MOV SO3,SO2

MOV SO2,SO1

MOV SO1,#0

TIEP6: CJNE A,#10,XUONGHANG;CHON NHUNG PHIM <10,DE DAT VI

TRI

XUONGHANG: JNC SUTDOWN

JNB DAT,SUTDOWN

INC 42H

MOV A,42H

CJNE A,#4,NHAPSO

MOV SO1,#0

MOV SO2,#0

MOV SO3,#0

MOV 42H,#1

NHAPSO:

MOV SO1,SO2

MOV SO2,SO3

MOV SO3,32H

ACALL KIEMTRADO

ACALL QUYRASOBUOC

SUTDOWN: NOP

RET

;-----------------------------------------------------------------------------

QUAY1:

QUAY:

JB STOP,NHAY2

Page 49: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

48

JB CHIEUQUAY,NHAY0

INC R5

CJNE R5,#8,NHAY6

MOV R5,#0

SJMP NHAY6

NHAY0: DEC R5

CJNE R5,#0FFH,NHAY6

MOV R5,#7

NHAY6:

CLR STEP

NHAY1: MOV DPTR,#STEPCODE

MOV A,R5

MOVC A,@A+DPTR

MOV P1,A

ORL A,#08H

MOV 38H,A

ACALL DOCSOBUOC

ACALL DOISANGDO

ACALL DELAY

SETB DEM

JNB 22H.1,NHAY4

JNB MOC,NHAY9

CLR 22H.1

SJMP NHAY9

NHAY4: JNB MOC,NHAY8

NHAY9:ACALL QUETPHIM

ACALL KIEMTRAPHIM

ACALL SO_SANH

Page 50: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

49

SJMP QUAY

NHAY8: SETB 22H.1

CPL CHIEUQUAY

NHAY2: SETB 20H.4

ACALL LAY_TOA_DO_GOC

SETB STOP

SETB STEP

MOV P1,#11111000B

NOP

RET

;----------------------------------------------------------------------------

DOCSOBUOC:

JNB 20H.4,OUT1

JNB CHIEUQUAY,GIAM

JNB DEM,OUT1

CLR DEM

INC DONVI

INC 41H

MOV A,41H

CJNE A,#200,TANGSOBUOC

SETB 22H.3

MOV 41H,#0

TANGSOBUOC: MOV A,DONVI

CJNE A,#10,OUT1

MOV DONVI,#0

INC CHUC

MOV A,CHUC

CJNE A,#10,OUT1

MOV CHUC,#0

Page 51: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

50

INC TRAM

MOV A,TRAM

SJMP OUT1

GIAM: JNB DEM,OUT1

CLR DEM

DEC DONVI

DEC 41H

MOV A,41H

CJNE A,#0FFH,GIAMSOBUOC

CLR 22H.3

MOV 41H,#199

GIAMSOBUOC:

MOV A,DONVI

CJNE A,#0FFH,OUT1

MOV DONVI,#9

DEC CHUC

MOV A,CHUC

CJNE A,#0FFH,OUT1

MOV CHUC,#9

DEC TRAM

MOV A,TRAM

SJMP OUT1

OUT1: NOP

RET

;-----------------------------------------------------------------------------

QUYRASOBUOC:

MOV A,SO1

MOV B,#10

MUL AB

Page 52: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

51

ADD A,SO2

MOV B,#9

DIV AB

MOV HANG_TRAM,A

MOV A,B

MOV B,#10

MUL AB

ADD A,SO3

MOV B,#9

DIV AB

MOV HANG_CHUC,A

MOV A,B

MOV B,#10

MUL AB

MOV B,#9

DIV AB

MOV HANG_DONVI,A

MOV A,B

CJNE A,#5,LAMTIEP1

LAMTIEP1: JC LAMTIEP2

INC HANG_DONVI

;QUY RA SO BUOC

LAMTIEP2: MOV A,HANG_TRAM

CJNE A,#2,LAMTIEP3

LAMTIEP3: JNC LAMTIEP4

CLR 22H.2

MOV A,HANG_TRAM

MOV B,#100

MUL AB

Page 53: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

52

MOV SOBUOC,A

MOV A,HANG_CHUC

MOV B,#10

MUL AB

ADD A,SOBUOC

ADD A,HANG_DONVI

MOV SOBUOC,A

SJMP LAMTIEP5

LAMTIEP4: SETB 22H.2

SUBB A,#2

MOV B,#100

MUL AB

MOV SOBUOC,A

MOV A,HANG_CHUC

MOV B,#10

MUL AB

ADD A,SOBUOC

ADD A,HANG_DONVI

MOV SOBUOC,A

LAMTIEP5: NOP

RET

;.............................................................................

SO_SANH:

JNB 20H.4,JUMP12

JB 22H.3,JUMP7

MOV A,43H

SUBB A,41H

CJNE A,#00H,JUMP3

Page 54: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

53

SETB STOP

JUMP3: MOV A,44H

SUBB A,41H

CJNE A,#00H,JUMP4

SETB STOP

JUMP4: MOV A,45H

SUBB A,41H

CJNE A,#00H,JUMP5

SETB STOP

JUMP5: MOV A,46H

SUBB A,41H

CJNE A,#00H,JUMP6

SETB STOP

JUMP6: MOV A,47H

SUBB A,41H

CJNE A,#00H,JUMP12

SETB STOP

SJMP JUMP12

JUMP7: MOV A,48H

SUBB A,41H

CJNE A,#00H,JUMP8

SETB STOP

JUMP8: MOV A,49H

SUBB A,41H

CJNE A,#00H,JUMP9

SETB STOP

JUMP9: MOV A,4AH

SUBB A,41H

CJNE A,#00H,JUMP10

Page 55: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

54

SETB STOP

JUMP10: MOV A,4BH

SUBB A,41H

CJNE A,#00H,JUMP11

SETB STOP

JUMP11: MOV A,4CH

SUBB A,41H

CJNE A,#00H,JUMP12

SETB STOP

JUMP12:

NOP

RET

;-----------------------------------------------------------------------------

LUU_VI_TRI:MOV 42H,#0

JB 22H.2,JUMP1

MOV 43H,44H

MOV 44H,45H

MOV 45H,46H

MOV 46H,47H

MOV 47H,SOBUOC

SJMP JUMP0

JUMP1: MOV 48H,49H

MOV 49H,4AH

MOV 4AH,4BH

MOV 4BH,4CH

MOV 4CH,SOBUOC

JUMP0: NOP

RET

Page 56: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

55

;CHUONG TRINH QUET PHIM-------------------------------------------------------

QUETPHIM: JNB 20H.4,QUIT

PUSH ACC

CLR 79H

MOV A,P3

ANL A,#0FH

CJNE A,#0FH,KETTHUC

QUETLAI:

MOV 30H,#0

MOV 31H,#0

MOV R7,#01111111B

QUET: MOV P3,R7

JNB P3.0,LUUPHIM

INC 31H

JNB P3.1,LUUPHIM

INC 31H

JNB P3.2,LUUPHIM

INC 31H

JNB P3.3,LUUPHIM

MOV 31H,#0

INC 30H

MOV A,30H

XRL A,#4

JZ KETTHUC

MOV A,R7

RR A

MOV R7,A

SJMP QUET

LUUPHIM: MOV B,P3

Page 57: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

56

MOV R0,#90H

ACALL CHONGNAY

JNB 78H,QUETLAI

MOV A,31H

RL A

RL A

ORL A,30H

MOV DPTR,#KEYTAB; CHI DEN BANG DICH

MOVC A,@A+DPTR; LAY KY TU DUOC DICH

MOV 32H,A

mov 10h,#1

SETB 79H

KETTHUC: MOV P3,#0FFH

POP ACC

QUIT: NOP

RET

CHONGNAY:

CLR 78H

MOV 33H,#200

KTRALAI1: MOV 34H,#2

KTRALAI:

LCALL HIENTHI

LCALL HIENTHI1

MOV A,@R0

JZ THOAT0

XRL A,B

DJNZ 34H,KTRALAI

DJNZ 33H,KTRALAI1

SETB 78H

Page 58: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

57

THOAT0:

NOP

RET

;CHUONG TRINH HIEN THI------------------------------------------------------------

HIENTHI: JB 22H.0,L3

JNB STOP,L0

MOV A,TRAM1

ORL A,#0F0H

MOV P2,A

CLR LED3

ACALL DELAY100

SETB LED3

MOV A,CHUC1

ORL A,#0F0H

MOV P2,A

CLR LED2

ACALL DELAY100

SETB LED2

MOV A,DONVI1

ORL A,#0F0H

MOV P2,A

CLR LED1

ACALL DELAY100

SETB LED1

SJMP L3

L0: MOV P2,#00H

ACALL DELAY100

ACALL DELAY100

MOV P2,#0FH

Page 59: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

58

L3: NOP

RET

;-----------------------------------------------------------------------------------

HIENTHI1: JNB 22H.0,L1

MOV A,SO1

ORL A,#0F0H

MOV P2,A

CLR LED3

ACALL DELAY100

SETB LED3

MOV A,SO2

ORL A,#0F0H

MOV P2,A

CLR LED2

ACALL DELAY100

SETB LED2

MOV A,SO3

ORL A,#0F0H

MOV P2,A

JNB 20H.7,L2

CLR LED1

ACALL DELAY100

SETB LED1

INC 5CH

MOV A,5CH

CJNE A,#100,L1

MOV 5CH,#0

INC 5DH

MOV A,5DH

Page 60: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

59

CJNE A,#5,L1

MOV 5DH,#0

CPL 20H.7

SJMP L1

L2: SETB LED1

ACALL DELAY100

INC 5CH

MOV A,5CH

CJNE A,#100,L1

MOV 5CH,#0

INC 5DH

MOV A,5DH

CJNE A,#5,L1

MOV 5DH,#0

CPL 20H.7

L1: NOP

RET

;-----------------------------------------------------------------------------------

; CHUONG TRINH DOI SANG DO

DOISANGDO:

MOV A,DONVI

MOV B,#9

MUL AB

MOV B,#10

DIV AB

MOV 50H,A

MOV A,B

CJNE A,#5,NEXT1

NEXT1: JC NEXT2

Page 61: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

60

INC 50H

NEXT2: MOV A,CHUC

MOV B,#9

MUL AB

ADD A,50H

MOV B,#10

DIV AB

MOV 50H,A

MOV DONVI1,B

MOV A,TRAM

MOV B,#9

MUL AB

ADD A,50H

MOV B,#10

DIV AB

MOV CHUC1,B

MOV TRAM1,A

RET

;----------------------------------------------------------------------------------

KIEMTRADO:

LAMLAI1: MOV A,SO1

CJNE A,#4,LAMTIEP6

LAMTIEP6: JC LAMTIEP7

SUBB A,#3

MOV SO1,A

SJMP LAMLAI1

LAMTIEP7: CJNE A,#3,LAMTIEP9

LAMLAI2: MOV A,SO2

CJNE A,#7,LAMTIEP8

Page 62: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

61

LAMTIEP8: JC LAMTIEP9

MOV SO1,#0

SUBB A,#6

MOV SO2,A

SJMP LAMLAI2

LAMTIEP9: NOP

RET

;-----------------------------------------------------------------------------------

LAY_TOA_DO_GOC:

JB MOC,THOAT_CHUONGTRINH

JB 22H.3,THOAT_CHUONGTRINH

MOV 41H,#0

MOV DONVI,#0

MOV CHUC,#0

MOV TRAM,#0

THOAT_CHUONGTRINH:NOP

RET

;-----------------------------------------------------------------------------------

DELAY:

LAP: MOV TH0,#HIGH(-10000)

MOV TL0,#LOW(-10000)

SETB TR0

QUAY_LAI:JB TF0,XOA_CO_TRAN

LCALL QUETPHIM

LCALL HIENTHI

LCALL HIENTHI1

LCALL KIEMTRAPHIM

SJMP QUAY_LAI

XOA_CO_TRAN: CLR TR0

Page 63: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

62

CLR TF0

DJNZ R6,LAP

MOV R6,#10

RET

STEPCODE:

DB 10H,30H,20H,60H,40H,C0H,80H,90H

KEYTAB:

DB 00H,04H,08H,0CH

DB 01H,05H,09H,0DH

DB 02H,06H,0AH,0EH

DB 03H,07H,0BH,0FH

DELAY100:

MOV R3,#100

DJNZ R3,$

RET

END

VI. LƯU ĐỒ GIẢI THUẬT:

1 Chương trình chính:

Page 64: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

63

2 Chương trình KIEMTRAPHIM:

Page 65: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

64

3 Chương trình DOISANGDO:

Page 66: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

65

4 Chương trình QUAY:

Page 67: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

66

5 Chương trình QUETPHIM:

Page 68: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51 · PDF filechi phí và rất linh hoạt đối với các ứng dụng điều khiển. AT89C51 có ... chỉ sẽ không có tác

67