You are on page 1of 97

Chương1:

Thuyết minh
Thiết kế và vận hành mô hình
máy đo và cắt chiều dài.
I.Giới thiệu chung:
1.1 .Sơ đồ nguyên lý mô hình máy đo và cắt chiều dài:

1.2. Bộ điều khiển mô hình máy cắt dùng để điều khiển 1 động cơ điện 1
chiều cùng với con lăn kéo chiều dài đối tượng cần cắt được cuộn trong
Robbin , động cơ chạy với tốc độ tùy thuộc chiều dài, thời gian cài đặt. Điều
khiển 1 dao cắt để cắt đối tượng khi động cơ đã kéo đúng chiều dài. Trong
quá trình mô hình vận hành tín hiệu phản hồi được lấy về từ Encoder đưa vào
bộ điều khiển xử lý, xuất tín hiệu điều khiển động cơ và dao cắt.
1.3. Bộ điều khiển sử dụng điện áp +5V lấy từ điện áp 220v(50Hz) qua bộ
chỉnh lưu áp .
1.4. Động cơ điện 1 chiều để kéo đối tượng sử dụng áp+ 24V, kích tư +
24V, vì động cơ củ nên thông số không đầy đủ. Một dao cắt được làm từ Role
sử dụng áp +110V.
1.5.Ngoài ra trong mô hình còn sử dụng hệ thống hãm bằng cơ khí gắn
liền với Robbin.
II.Nguyên lí làm việc:
1.1 Nguyên lí làm việc của thiết bị điều khiển mô hình máy cắt
mô tả trong hình dưới đây:

Hình 2: Sơ đồ nguyên lý bộ điều khiển máy đo và cắt.


Trong đó:
Udk1: Điện áp điều khiển mạch động lực động cơ, có dạng áp
xung với chu kì T cố định, T1 thay đổi tùy NFP
Udk2 : Điện áp điều khiển Relay đóng ngắt dao.
NFP : Sốxung phản hồi về từ Encoder.
NSP : Số xung đặt tương ứng với chiều dài cần cắt.
Umax : Điện áp cung cấp cho mạch động lực điều khiển động
cơ.
Vi trí đặt : Chiều dài, thời gian cần đo và cắt đối tượng.
Khối hiển thị, bàn phím: khối hiển thị hiển thị chiều dài, số
lần cắt. Khối bàn phím nhập chiều dài, thời gian thực hiện 1 lần cắt.
Khối điều khiển: Nhận tín hiệu từ Bàn phím, số xung NFP
phản hồi từ Encoder. Đồng thời xuất tín hiệu điều khiển Led 7 đoạn, tín
hiệu Udk1, Udk2 điều khiển động cơ, dao cắt.
1.2.Điều khiển động cơ: Nguyên lí điều khiển theo sai lệch của bộ điều
khiển được thực hiện trong khối điều khiển. Các tín hiệu được tổng hợp bằng
phương trình sau:

100 KP.EN
DUTY _ CYCLE  (1)
U max

Trong đó:
Kp: hệ số khuyếch đại tỉ lệ theo phương pháp điều khiển
vòng kín PID mà trong trường hợp này ta chỉ sử dụng khâu P. Hệ số KP phụ
thuộc vào đặc tính động cơ.
EN : Sai số giữa tín hiệu đặt và tín hiệu phản hồi.

EN = NSP – NFP. (2)

DUTY_CYCLE : Ta gọi là chu kì nhiệm vụ. Nó được định


nghĩa như sau:

100T 1
DUTY _ CYCLE  (3)
T

Tín hiệu điều khiển Udk1 được tạo ra nhờ bộ điều khiển số. Nó có dạng
xung với tần số T cố định. Biên độ thay đổi giữa 2 mức 0V, 5V. Khi
DUTY_CYCLE thay đổi thì áp ra mạch động lực Udc cung cấp cho động
cơ thay đổi khi đó tốc độ động cơ thay đổi theo.
Dựa vào biểu thức (1), Kp không đổi , DUTY_CYCLE thay đổi theo
EN :

EN = 0, DUTY_CYCLE = 0 , Udc =0 , động cơ dừng.


EN=NSP, DUTY_CYCLE = 100 , Udc= Umax , động cơ hoạt
động ở chế độ định mức.

U max T 1
Ta có: Udc  (4)
T

1.3. Điều khiển dao cắt: Dao cắt đóng ngắt theo Udk2.
Udk2 là tín hiệu số giống như Udk1 , khi DUTY_CYCLE = 0, Udk2
=0, Relay hở, dao cắt đóng xuống. Khi DUTY_CYCLE > 0, Relay đóng
dao được kéo lên.
1.4. Đặc tuyến điều khiển động cơ có dạng sau:
Điều khiển đo chiều dài thực chất là điều khiển vị trí. Điều khiển cho
động cơ quay tới góc quay xác định mà không có vọt lố do tính chất của
máy.
Đặc tuyến cần điều khiển có dạng sau:

Có rất nhiều phương pháp điều khiển để đạt được đặc tính mong muốn
như hình 3, đạt độ chính xác cao mà giá thành lại rẻ, như phương pháp PID
tương tự, số, điều khiển mờ v.v. Phương pháp PID bằng thực nghiệm của
Zeigler và Nichols , đòi hỏi cần có các thiết bị đo chính xác và các điều kiện
nghiêm ngặt đưa hệ thống vào chế độ dao động lúc đó chúng ta mới xác định
các thông số của bộ điều khiển, nếu ta biết đối tượng ta là gì thì rất dễ dàng
điều khiển. Phương pháp điều khiển mờ ta không cần xác định đối tượng của ta
như thế nào, ta chỉ cần dựa vào kinh nghiệm điều khiển đối tượng, ta thành lập
bộ luật điều khiển và tùy thuộc vào tình huống mà hệ thống đưa ra 1 luật trong
bộ luật điều khiển đối tượng. Bộ điều khiển càng chính xác nếu người điều
khiển có nhiều kinh nghiệm. Các phương pháp này được trình bày chi tiết hơn
ở chương sau. Do hạn chế về thời gian, thiết bị đo, kinh nghiệm với luận văn
này chỉ sử dụng phương pháp điều khiển P số.
Phương pháp P số ta phải xác định KP trong biểu thức (1) . Khi KP đã
xác định ta có giá trị DUTY_CYCLE thay đổi theo EN.
Điều cần quan tâm lúc này là làm thế nào để xác định KP.
Ta có:

100 KP.NSP
0  DUTY_CYCLE  .
U max

Mà ta có 0  DUTY_CYCLE  100 mới có nghĩa với tín hiệu điều


khiển Udk1 do đó:

100 KP.NSP U max


 1 hay KP  .
U max NSP

U max
KP  . (4)
NSP

Dựa vào (4) ta có nhận xét sau:


NSP càng lớn nếu KP càng nhỏ. Nếu vị trí đặt càng nhỏ mà NSP
càng lớn thì sai số càng nhỏ. Do dó thông thường hệ số KP rất nhỏ. Để tiến
hành điều khiển ta chọn 1 vài hệ số KP tùy chọn nào đó đưa vào bộ điều khiển
cho mạch hoạt động quan sát ngõ ra nếu có sai số thì ta tiến hành thay đổi hệ
số KP sao cho đạt kết quả với sai số cho phép. Ta có đặc tuyến
DUTY_CYCLE có dạng sau:
ta định nghĩa :

T 'T '1
HSTGG 
T'

Trong đó HSTGG :Hệ số thời gian giảm


T’ : Thời gian đặt cho mỗi lần cắt
T’1 : Thời gian mà ta gán DUTY_CYCLE là hằng số lớn hơn 0. Dựa
vào đặc tuyến này ta có thể hình dung quá trình điều rất rõ ràng.
Giả sử ta chọn DUTY_CYCLE = 100 trong khoảng thời gian T’1,
Khi thời gian còn xa T’ thì ta cho động cơ hoạt động với điện áp định mức
nghĩa là chạy với tốc độ cho phép tối đa. Khi thời gian lớn hơn T’1 và tiến gần
đến T’ nghĩa là gần đến giá trị mong muốn, thì ta tiến hành giảm
DUTY_CYCLE theo qui luật nào đó để khi đến giá trị đặt thì DUTY_CYCLE
= 0, lúc đó động cơ dừng. Tùy vào đặc tính động cơ như thế nào mà ta chọn
HSTGG hay hệ số góc K cho phù hợp.

Tại t=0 tacó DUTY_CYCLE:


100 KP.NSP
D=
U max

Tại t=T’1

100 KP.EN
d1  (5)
U max

100 KP.NFP
d1  D  
U max

T' (T 'T '1)


K  
100.KP.NFP.U max 100.KP.EN .U max
(6)

Từ ( 5) ta có:

NFP
HSTGG  (7)
NSP  NFP

Từ (5) và (7) ta có:

d1.U max .(1  HSTGG )


KP  (8)
100.NSP

Trong đó:
d1 :Ta chọn tùy ý tùy thuộc vào thời gian đặt, tốc độ kéo đối
tượng.
HSTGG: Phụ thuộc vào quán tính của động cơ.

0  d1  100, 0  HSTGG  1

Ví dụ: Ta muốn động cơ quay đến giá trị 5000 xung tính theo ngõ ra
Encoder , trong thời gian 5 giây .
Ta có: T’=5s, NSP=5000xung, Umax=24V, xác định KP ?
Giải:
Chọn d1=100, HSTGG=0.5.
KP=(100*24(1+0.5))/(100*5000) = 36/5000 (V/vòng).

Với các số liệu trên thì quá trình điều khiển diễn ra như sau.
Trong thời gian 2,5s đầu tiên động cơ chạy với tốc độ tương ứng áp đặt
vào 24V. 2,5s còn lại tốc độ động cơ sẽ giảm cho đến khi dừng hẳn thì lúc này
thời gian cũng vừa đủ 5s.
Như đã trình bày sử dụng phương pháp điều khiển số khâu P
Lưu đồ giải thuật khâu hiệu chỉnh P:(trình bày phần sau).
Chương trình điều khiển được viết bằng ngôn ngữ máy cho vi xử lý 8952.
Điện áp Udk1 được lấy từ PC0 của 8255 kết nối với Vi xử lý. Điện áp
này được đưa đến mạch động lực điều khiển điện áp cung cấp cho động cơ.
Udk1 có dạng hình 2, được tạo ra bằng phần mềm có lưu đồ giải thuật (trình
bày phần sau).
NFP số xung phản hồi về qua mạch đếm xung số xung chứa tối đa trong
2 byte, ngõ ra mạch đếm xung đưa vào PortA(byte thấp) và PortB(Byte cao)
8255. Sau đó đưa vào vi xử lí thông qua mạch chốt.
Lưu đồ giải thuật đọc xung phản hồi( trình bày phần sau).
Dữ liệu cần đặt được lấy vào thông qua các phím nhấn. Lưu đồ giải thuật
đọc 1 phím nhập dữ liệu vào (trình bày phần sau):
Sau khi đã có các dữ liệu vào ta tiến hành tính toán đưa ra
DYTU_CYCLE, tạo áp Udk1, đồng thời ta cũng cho hiển thị chiều dài, số
lượng cần cắt trong quá trình hoạt động. Chương trình thực hiện nhiều công
việc cùng lúc ,vừa phải đếm xung phản hồi, vừa tạo áp Udk1 liên tục, vừa phải
hiển thị Led, đồng thời phải thường xuyên phải kiểm tra phím nhấn. Lưu đồ
giải thuật toàn bộ chương trình :
III.Các lưu đồ giải thuật điều khiển hệ thống:
Dựa vào các lưu đồ này ta tiến hành thiết kế mạch cứng và viết chương
trình điều khiển.
Chương 2.
Thiết kế phần cứng.
Khối điều khiển bao gồm mạch giao tiếp giữaVi Xử Lí với RAM
(62256), mạch giao tiếp máy tính qua IC 75176, mạch mở rộng Port qua IC
8255. Quá trình giải mã địa chỉ tránh xung đột khi giao tiếp với các khối trên
nhờ IC chốt 74573 và IC 74138.

1) Mạch vi xử lí:
 P0 được nối với JP6 ,chức năng I/O.
 Chân 9 nối mạch Reset. Khi chân Reset được nhấn Mạch vi xử
lí trở về trạng thái như lúc mới cấp nguồn.
 Chân 31 nối JP1 có 2 chế độ:
 Khi JP2 nối cho Vi xử lí chạy chương trình trong ROM ngoài.
 Khi JP2 không nối cho vi xử lí chạy chương trình trong ROM
nội.
 Chân 12 ->15 nối đến JP11. Khi cần sử dụng ngắt ta nối đến
các chân nối này.
 Chân 18, 19 : Nối mạch dao động:
 Mạch gồm 2 tụ điện C1, C2 30 pF và thạch anh 11.059 MHz,
tạo cho Vi Xử Lí có tần số hoạt động 12MHz, khi 2 tụ điện
thay đổi thì tần số dao động vi xử lí thay đổi theo.
 Chân 10,11: Giao tiếp nối tiếp. Mức áp 1 vào ra là 5V, mức áp
vào ra là 0V.
U14

40
JP6
P1.0 P1.0 1 39 AD0
P1.1 1 2 P1.1 2 P1.0/T2 P0.0 38 AD1
3 4 P1.1/T2-EX P0.1

VCC
P1.2 P1.2 3 37 AD2
P1.3 5 6 P1.3 4 P1.2 P0.2 36 AD3
P1.4 7 8 P1.4 5 P1.3 P0.3 35 AD4
P1.5 9 10 P1.5 6 P1.4 P0.4 34 AD5
P1.6 11 12 P1.6 7 P1.5 P0.5 33 AD6
P1.7 13 14 P1.7 8 P1.6 P0.6 32 AD7
15 16 P1.7 P0.7
PORT1 21 A8
P2.0 22 A9
C4 10u P2.1 23 A10
9 P2.2 24 A11
R1 RST P2.3 25 A12
100 S1 P2.4 26 A13
P2.5 27 A14
31 P2.6 28 A15
EA/VPP P2.7
T1 15 17 /RD
R2 T0 14 T1 RD 16 /WR
8.2k /INT1 13 TO WR 29 /P SEN
/INT0 12 INT1 PSEN 30 ALE
INTO ALE/P R
18
X2 11 TX
19 TXD 10 RX
X1 RXD

GND
R3
1 2 AT89C52

20
4.7k JP1 X1
1
VCC 2
1 .059MEG
C1 C2
30p 30p
JP11
/INT0 /INT0
/INT1 1 2 /INT1
T0 3 4 T0
T1 5 6 T1
7 8

Sơ đồ kết nối mạch vi xử lí


 Chân 10 nối với chân 4 IC 75176, có chức năng thu.
 Chân 11 nối với chân 1 IC 75176, có chức năng phát.
 Ngỏ ra IC 75176 mức áp vi sai (0 - 200mV).
 Các chân /RD(16) nối đến chân /OE(22) của RAM và chân
/RD(6) của 8255 có tác dụng đọc Data về từ ngoại vi, /WR(17)
nối chân /WE của RAM và nối tới chân /WR(36) của 8255
trong quá trình xuất Data thì các chân này tích cực, cả hai chân
đều tích cực mức thấp.
 P0 : Trong chu kì truyền, truyền Data và địa chỉ, ngỏ ra mắc
điện trở kéo lên. Từ P0.0 ->P0.7 nối đến 8 đầu điện trở 10K
đầu kia nối lên nguồn, sau đó nối đến JP12 khi cần sử dụng
cho mục đích khác, nối đến ngỏ vào (chân 2->9) IC 74573, nối
đến ngỏ vào địa chỉ RAM.
 P2 :3 chân (P2.5,P2.6,P2.7) nối đến ngỏ vào tương ứng
A,B,C(1,2,3) IC 74138. Các chân P2.0-> P2.6 nối ngỏ vào địa
chỉ RAM.
 Chân ALE nối chân LE IC74573, khi ALE tích cực địa chỉ
được truyền qua. Khi ALE mức thấp, địa chỉ ngỏ ra giử nguyên
cho đến khi ALE tích cực lại.
Xác lập địa chỉ cho mỗi khối trên :
2) Khối tạo địa chỉ: gồm IC 74573, IC 74138, IC7400:
Hình vẽ minh họa quá trình truy xuất data qua IC chốt:

 IC 74138 các chân G2A(4),G2B(5) tích cực mức thấp trong


trường hợp này ta nối Mass.
 Chân G1(6) tích cực mức cao, được nối lên nguồn. Không nhất
thiết phải nối lên nguồn G1, nối Mass G2A, G2B, trong những
trường hợp khác ta còn có thể sử dụng chúng để kết hợp việc
giải mã địa chỉ.
 Chân /OE (1) IC 74573 tích cực mức thấp ta cho nối Mass.
 Chân LE(11) nối ALE Vi Xử lí, chức năng chốt, Xác nhận địa
chỉ.
 Byte địa chỉ thấp được chốt giử qua IC 74373. Các đường địa
chỉ thấp đưa vào ngỏ vào IC 74573.
Ngỏ ra IC 74138: có các địa chỉ nền sau :

 Y0: 0000H
 Y1: 2000H
 Y2: 4000H
 Y3: 6000H
 Y4: 8000H
 Y5: A000H
 Y6: C000H
 Y7: E000H

Được tạo ra từ 3 bit cao nhất của Byte địa chỉ cao(P2) của Vi xử Lí .
Kết hợp ngỏ ra chốt địa chỉ IC 74573, 8 bit địa chỉ thấp và các ngỏ còn lại
của P2 (P2.0->P2.5) .
 YI: A15:A16:A17
 P2.4 ->P2.0: A14-> A8
 D7->D0: A7->A0
Địa chỉ truy xuất ứng với từng ngỏ ra YI:

 Y0: P2.4 ->P2.0: D7->D0: 1000H->1FFFH


 Y1 P2.4 ->P2.0: D7->D0: 2000H->3FFFH
 Y2 P2.4 ->P2.0: D7->D0: 400H ->5FFFH
 Y3 P2.4 ->P2.0: D7->D0: 6000H->7FFFH
 Y4 P2.4 ->P2.0: D7->D0: 8000H->9FFFH
 Y5 P2.4 ->P2.0: D7->D0: A00H ->BFFFH
 Y6 P2.4 ->P2.0: D7->D0: C000H->DFFFH
 Y7 P2.4 ->P2.0: D7->D0: E000H->FFFFH
R10

VCC

JP12
AD0 VCC AD0
AD1 1 2 AD1
3 4

20
AD2 AD2 U21
AD3 5 6 AD3 AD0 2 19 A0
AD4 7 8 AD4 AD1 3 D0 Q0 18 A1
9 10 D1 Q1

VCC
AD5 AD5 AD2 4 17 A2
AD6 1 12 AD6 AD3 5 D2 Q2 16 A3
AD7 13 14 AD7 AD4 6 D3 Q3 15 A4
15 16 AD5 7 D4 Q4 14 A5
AD6 8 D5 Q5 13 A6
AD7 9 D6 Q6 12 A7
D7 Q7
JP13 ALE 11 1
LE OE

GND
A8 A8
A9 1 2 A9 74AC573
A10 3 4 A10

10
A11 5 6 A11
A12 7 8 A12
A13 9 10 A13
A14 1 12 A14
A15 13 14 A15
15 16

VCC
16

U20 JP10
A13 1 15 0000 -1FFFH
A14 2 A Y0 14 2000-3FFFH 1 2
B Y1 3 4
VCC

A15 3 13 4000-5FFFH /CS1


C Y2 12 6000-7FFFH 5 6
Y3 11 8000-9FFFH 7 8
6 Y4 10 A000-BFFFH 9 10
VCC 4 G1 Y5 9 C000-DFFFH 11 12
5 G2A Y6 7 E000-FFFFH 13 14
G2B Y7 15 16
GND

74LS138 SELECTADD
8

sơ đồ nguyên lí mạch tạo địa chỉ

3) Khối tạo địa chỉ:


 8 đường Data nối P0 Vi xử lí.
 2 chân /WR, /RD nối với /WR, /RD vi xử lý.
 A1,A0 nối ngỏ ra IC 74573.
 Chân Reset nối Mass .
 Ngỏ vào chọn chip (/CS) nối Y2.
 Port A:4000H
 Port B: 4001H
 PortC: 4002H
 Thanh ghi điều khiển:4003H.
Trong quá trình xuất Data, khi đã đúng địa chỉ, và chân /WR được
chuyển xuống mức 0, lúc đó Data được xuất bởi 8255.
Trong quá trình nhận Data về, khi đã đúng địa chỉ, và chân /RD chuyển
mức thì Data được nhận về từ 8255.
VCC

26
U18 JP9
AD0 34 4 PA0 PA0
AD1 33 D0 PA0 3 PA1 1 2 PA1
D1 PA1 3 4

VCC
AD2 32 2 PA2 PA2
AD3 31 D2 PA2 1 PA3 5 6 PA3
AD4 30 D3 PA3 40 PA4 7 8 PA4
AD5 29 D4 PA4 39 PA5 9 10 PA5
AD6 28 D5 PA5 38 PA6 11 12 PA6
AD7 27 D6 PA6 37 PA7 13 14 PA7
D7 PA7 15 16

A0 9 JP8
A1 8 A0 18 PB0 PB0
A1 PB0 19 PB1 1 2 PB1
PB1 20 PB2 3 4 PB2
/RD 5 PB2 21 PB3 5 6 PB3
/WR 36 RD PB3 22 PB4 7 8 PB4
WR PB4 23 PB5 9 10 PB5
PB5 24 PB6 11 12 PB6
PB6 25 PB7 13 14 PB7
PB7 15 16
JP7
14 PC0 PC0
PC0 15 PC1 1 2 PC1
/CS1 6 PC1 16 PC2 3 4 PC2
CS PC2 17 PC3 5 6 PC3
35 PC3 13 PC4 7 8 PC4
7 RESET PC4 12 PC5 9 10 PC5
GND PC5 11 PC6 11 12 PC6
PC6 10 PC7 13 14 PC7
PC7 15 16
8255

4) Khối giao tiếp Vi xử lý và RAM(62256):


RAM dung lượng 32K ngoại có địa chỉ truy xuất
8000H->FFFFH.
8 đường địa chỉ (D1->D8) nối đến P0 vi xử lí, (A0-A7) nối (Q0->Q7) IC 74573,
(A9->A14 nối P2.0->P2.6 vi xử lí), /WE nối /WR, /0E nối /RD vi xử lí. Tín hiệu
chọn địa chỉ lấy từ chân 6 IC 7400 , đưa vào chân /CE, với điều kiện ngỏ vào 4,
5 IC 7400 cùng nối P2.7(A15).
U6
A0 10 11 AD0
A1 9 A0 D1 12 AD1
A1 D2

/A8
VCC A2 8 13 AD2
A3 7 A2 D3 15 AD3
A4 6 A3 D4 16 AD4
A5 5 A4 D5 17 AD5
A6 4 A5 D6 18 AD6
A7 3 A6 D7 19 AD7
A7 D8

14
11
U17 A8 25 BACKUP
1 A9 24 A8 28
2 12 A10 21 A9 VCC
13 A8 A11 23 A10 27 /WR
3 A12 2 A11 WE
A13 26 A12 22
10 74LS00 A15 A14 1 A13 OE
4 A14
9 5
8000-FFFFH
20
/PSEN

CE

GND
8

7
6

KM 62256A

14
/RD

JP14

/RD 4 3
2 1

5) Khối đếm xung:

IC1393A
C1 1 3 D4 VCC
VCC 14 A QA 4 D5 U12 JP5 JP2
GND VCC QB VCC VCC CLR
20

7 5 D6
CLR 2 GND QC 6 D7 D0 2 19 AD0 AD0 1 2 AD0 CLR 1
CLR QD C2 D1 3 1D 1Q 18 AD1 AD1 3 4 AD1 2
2D 2Q 5 6
VCC

D2 4 17 AD2 AD2 AD2


D3 5 3D 3Q 16 AD3 AD3 7 8 AD3
IC1393B JP3
C2 13 1 D8 D4 6 4D 4Q 15 AD4 AD4 9 10 AD4 CS1
VCC 14 A QA 10 D9 D5 7 5D 5Q 14 AD5 AD5 1 12 AD5 CS2 1
GND 7 VCC QB 9 D10 D6 8 6D 6Q 13 AD6 AD6 13 14 AD6 2
12 GND QC 8 D11 D7 9 7D 7Q 12 AD7 AD7 15 16 AD7
CLR QD 8D 8Q GND 17 18 GND
C3 1 19 20
GND 1 LE 10 GND
IC2393A JP4
COUNTER 1 3 D0 OE GND COUNTER
VCC 14 A QA 4 D1 COUNTER 1
GND 7 VCC QB 5 D2 CS2 2
2 GND QC 6 D3 CS1 U13 VCC JP6
CLR QD
20

74HC573/SO
C1 D8 2 19 AD8 AD8 1 2 AD8
D9 3 1D 1Q 18 AD9 AD9 3 4 AD9
IC2393B
2D 2Q 5 6
VCC

C3 13 1 D12 D10 4 17 AD10 AD10 AD10


VCC 14 A QA 10 D13 D11 5 3D 3Q 16 AD11 AD11 7 8 AD11
GND 7 VCC QB 9 D14 D12 6 4D 4Q 15 AD12 AD12 9 10 AD12
12 GND QC 8 D15 D13 7 5D 5Q 14 AD13 AD13 1 12 AD13
CLR QD D14 8 6D 6Q 13 AD14 AD14 13 14 AD14
D15 9 7D 7Q 12 AD15 AD15 15 16 AD15
8D 8Q 17 18
JP1
VCC 1 19 20
GND 1 GND 1 LE 10 GND
2 OE GND

74HC573/SO

Gồm 2 IC 74393, 2 IC chốt 74573. Mạch chỉ có tác dụng đếm lên, khi
tràn tự động trở về 0. Ngỏ Counter đưa xung cần đếm vào. Ngỏ CLR có
nhiệm vụ xóa tất cả ngỏ ra 74393 về 0, tích cực mức 0 có dạng xung, 2 ngỏ
vào chốt CS1, CS2 có nhiệm vụ lấy đúng 1 giá trị tại 1 thời điểm, cả 2
chân ở mức 0 khi chốt.
Chú ý: Cần phải mắc thêm điện trở kéo lên ở ngỏ ra 2 IC 74573, tránh nhiễu
khi đọc vào. Ngỏ ra mạch đếm nối vào Port A,B của 8255.
6) Khối hiển thị:

o Gồm 6 LED 7 đoạn, IC 74247 giải mã từ số BCD sang mã LED 7 đoạn.


o 1 IC giải mã địa chỉ 74138. Các Transistor(Tr) C828 kéo LED. Mạch
được thiết kế theo phương pháp quét không chốt, quét vòng 6 led ,chu kì
quét 1 LED không lớn hơn 20mS, đảm bảo cho LED không có hiện tượng
nháy.
o Các tín hiệu thực hiện việc quét LED chứa trong BUS truyền 8 bit hay
chứa trong 1 thanh ghi. Với 4 bit thấp chứa Data cần xuất, 4 bit này phải là
số BCD, 3 bit cao chứa thông tin về vị trí LED cần quét. Toàn bộ nội dung
trong thanh ghi này là Data và vị trí 1 LED tại 1 thời điểm xác định.
o Data được đưa đến JP1 ,4 bit thấp được đưa đến ngỏ vào có tên 1, 2, 4, 8
IC 74247 ngỏ ra IC này gồm 8 Bit tương ứng mã LED 7 đoạn, sau đó 8
ngỏ ra có tên này được đến tương ứng với tên mỗi LED. 3 bit cao kế tiếp
đưa đến chân ABC IC 74138 theo thứ tự bit. Tại 1 thời điểm thì trong tất
cả. Ngỏ ra chỉ có 1 ngỏ ra mức 0, do đó ta đã có thể cung cấp Data cho 1
Led nào đó mà không sợ phải có sự cùng Data cho nhiều led ,Vì dòng ngỏ
ra IC74138 không đủ cho việc kéo Led, nên Ta phải dùng thêm các
Transistor (Tr) để kéo Led. Vì phải kéo 6 led nên ta cần đến 6 transistor.
Sáu ngỏ ra 6 Tr này nối đến chân nguồn dương của LED 7 đoạn Anot
Chung.
o Chú ý: Trong quá trình lắp mạch vào ta phải xác định đúng chân của các
Transitor (ECB) tránh trường hợp mắc nhầm chân dẫn đến mạch không
chạy mặc dù ta thiết kế đúng. Tùy từng loại IC mà thứ tự chân khác nhau.
Trên thị trường có một số loại Tr thông dụng mà ta cần phải nắm rỏ tránh
việc đáng tiếc xảy ra. Ở đây trình bày một vài Tr thông dụng .

7) Khối bàn phím:


o Gồm sáu phím, 1 đầu phím nối Mass, 1 đầu phím nối nguồn, chọn 1 điểm
tùy ý để lấy Data sao cho khi phím nhấn thì điểm này xuống Mức 0. Sáu
điểm cần chọn nối vào JP2 .
8) Khối Mạch động lực :
o Khối này gồm các Tr nối Darlington mục đích tăng dòng ngỏ ra, có các
Optron cách li các cấp điện áp. Ap sử dụng gồm áp 5V, 24V, mạch được
nối sao cho cặp Darlington tầng cuối thay phiên đóng ngắt , ngỏ ra cuối
này có điện áp thay đổi tùy vào sai lệch thời gian dẫn mỗi Tr trong 1 chu
kì T cố định.

o Điện áp đưa vào PC0, giả sử tại 1 thời điểm PC0 mức 1, lúc đó Q1 dẫn, Q2
ngắt vì điện áp mức 0 do phải qua cổng đảo. Q1 dẫn , Optron 1 dẫn, cặp
Darlington phía trên dẩn, kéo ngỏ ra lên áp 24V. Giả sử tại 1 thời điểm
PC0 mức 0, lúc đó Q2 dẫn do phải qua cổng đảo, Q1 ngắt vì điện áp mức
0. Q2 dẫn, Optron 2 dẫn, cặp Darlington dưới dẩn, kéo ngỏ ra xuống 0V.
o Quá trình cứ tiếp diễn như vậy trong 1 chu kì, ta có áp ra là áp biến đổi. Mà
đối tượng sử dụng áp này là động cơ 1 chiều, do đó cần phải xác định chu
kì đóng ngắt thích hợp, sao cho động cơ nhìn điện áp này là điện áp 1 chiều
với các điều kiện cho phép.
+24V
+5v

R3

220 4N35
1 4 Q5
R7
2 120K D718
Q1
R1 D3
PC0 C828 N5404
A617

3
10k Q4
R4
+5v +24V
1K
D1 R3
4007
220
0 0 00
4N35 Udk1
1 4

3
R8 Q6
U13A R2 Q3 I4
1 2 828 H1061
1k
7404
10k D718
Q7
R10
D2 120k D4
N5404
4007

0 00 00

9) Mạch đóng ngắt dao:


+5v +12v +110v

R5 220 K1 K2
4 4
4N35 3 3
1 4 1 1
2 2
2
RELAY SPST RELAY SPST
R8 Q6
3

R2 Q3 I4
PC4 Udk2 828 H1061
1k
10k
R10
D2 120k

4007

0 01 01 02

o Mô hình dao cắt là 1 Relay 110V do đó ta thiết kế 1 mạch điều


khiển Relay này. Khi Relay đóng tương ứng với dao cắt, ngược lại dao không
cắt.
o Để đóng ngắt Relay này ta điều khiển đóng ngắt 1 Reley có cấp điện áp
nhỏ hơn, Relay này cần áp 12V. Vì áp Udk2 lấy từ PC4 8255 mức áp
TTL nên không thể điều khiển trực tiếp , mà phải qua Optron cách ly 2
cấp điện áp. Vì Relay 12v có dòng lớn nên ta không thể dùng C828 điều
khiển mà phải dùng Tr có dòng lớn hơn H1061. Khi áp Udk2 mức thấp Q1
ngắt, Relay 12V ngắt, dao cắt. Khi Khi áp Udk2 mức cao Q1 ngắt, Relay
12V ngắt, dao kéo lên.
Chương 3:
ĐIỀU CHỈNH VỊ TRÍ ĐỘNG CƠ DC
I. Khái niệm :
Hệ thống truyền động điều khiển vị trí thuộc loại hệ thống được sử dụng
rộng rãi trong công nghiệp như trong cơ cấu truyền động cho tay máy, người
máy, cơ cấu ăn dao cắt gọt kim loại, quay anten, kính viễn vọng ,……… Tùy
thuộc vào cơ cấu mà công suất truyền động nằm trong dải rộng từ hàng chục W
đến hàng trăm KW.
Trong hệ điều khiển vị trí 1 đại lượng điều khiển (lượng đặt w ) có ý
nghĩa quan trọng quyết định cấu trúc điều khiển hệ thống thường lượng điều
khiển w là một hàm của thời gian, có thể là một hàm nhảy cấp, hàm tuyền tính
hoặc hàm tuyến tính từng đoạn theo thời gian, hàm Parabol và hàm điều hoà.
Tuỳ thụoc vào lượng điều khiển mà ta có hệ truyền động điều khiển vị trí cho cơ
cấu chuyển dịch và hệ truyền động điều khiển vị trí theo chế độ bám .
Trong hệ thống điều khiển vị trí chuyển dịch trong các chỉ tiêu chất lượng
chung người ta quan tâm nhiều đến độ tác động nhanh của hệ. Điều này có liên
quan đến giãn đồ tối ưu về tốc độ (t), gia tốc a(t) và vị trí (t). Để xây dựng hệ
điêu khiển người ta dựa trên quy luật tối ưu tác động nhanh truyền động điện
trên nghiên cứu quỹ đạo pha chuyển động.
II. Điều khiển vị trí dùng các vòng phản hồi :
Nếu theo phương pháp này thì việc điều khiển vị trí sử dụng ba vòng phản
hồi : vùng vị trí ở vòng ngoài cùng tạo tín hiệu đặt cho vòng tốc độ, ngỏ ra vòng
tốc độ lại là tín hiệu đặt cho vòng dòng điện.
Tín hiệu vị trí được xác định từ bộ giải mã vị trí là tín hiệu hồi tiếp cho
vòng vị trí được khuếch đại rồi trở thành giá trị đặt cho vòng tốc độ.
Tín hiệu sai lệch tốc độ được điều khuếch đại bởi bộ khuếch đại có giới hạn
(II) rồi trở thành giá trị đặt cho vòng dòng điện.
Sai lệch dòng điện (dưới dạng điện áp đặt ) được khuếch đại bởi bộ khuếch
đại (III) rồi đưa vào điều khiển bộ biến đổi tạo điện áp phần ứng thích hợp. Việc
đưa thêm vòng dòng điện vào có tác dụng tránh sự tăng giảm dòng điện quá áp khi
khởi động và khi sai lệch vận tốn lớn.
III. Thuật toán điều khiển PID:
Nhiều năm trước đây, bộ điều khiển PID được xem là bộ điều khiển lý
tưởng đối với các đối tượng có mô hình liên tục. Bộ PID thực sự là bộ điều khiển
động mà việc thay đổi các tham số của bộ điều khiển có khả năng làm thay đổi
đặc tính động và tĩnh của hệ thống điều khiển tự động.
Bộ điều khiển PID thực chất làthiết bị điều khiển thực hiện luật điều
khiển được mô tả bằng phương trình sau :

t
1 .
U (t )  K P e(t )   e(t )d  T D e(t )
T I 0

( 6.1 )

Trong đó e(t) là tín hiệu vào, u(t) là tín hiệu ra của bộ điều khiển, kp là hệ
số khuếch đại của luật điều khiển, T1 hằng số thời gian tích phân và TD là hằng số
thời gian vi phân.
Đối với hệ thống có độ dự trữ ổn định lớn, nếu muốn tăng độ chính xác
điều khiển ta chỉ cần tăng hệ số khuếch đại của luật điều khiển tỉ lệ [7].
Hệ thống sẽ không có sai lệch tĩnh khi tín hiệu vào là hàm bậc thang đơn
vị và hằng số thời gain tích phân TI được chọn khác không. Luật điều khiển tích
phân còn gọi là điều khiển chậm sau vì sai số điều khiển được tích lũy cho đến
khi đủ lớn thì quyết định điều khiển mới được đưa ra.
Tăng khả năng tác động nhanh của hệ, giảm bớt thời gian quá điều chỉnh
bằng cách thay đổi hằng số thời gian của luật điều khiển vi phân, còn được gọi là
điều khiển vượt trước.
Luật điều khiển trong phương trình (6.1) thường còn được biểu diễn dưới
dạng hàm truyền đạt như sau:
 T D P)  k i (1  T D1 p)(1  T D 2 p)
1
W ÑK ( p)  K P (1  (
TIP p
6.2 )

Từ năm 1975 trở lại đây, do sự phát triển không ngừng của kỹ thuật điện
tử và kỹ thuật vi xử lý, các PID số ngày càng được sử dụng rộng rãi trong công
nghiệp. PID số được mô tả qua phương trình vi sai phân sau:

u u
k k 1
 r 0 ek  r1 ek 1  r 2 ek 2 ( 6.3 )

hoặc bằng hàm truyền dạt gián đoạn:

1 2
W ( z )  r 0  r1 z  r 2 z
*

( 6.4 )
1  z 1

Với bộ điều khiển PID, người sử dụng dễ dàng tích hợp các luật điều
khiển khác như luật điều khiển tỉ lệ ( luật P ), điều khiển tỉ lệ-tích phân ( luật
PI ), luật điều khiển tỉ lệ-vi phân ( luật PD ). Bộ điều khiển PID luôn là một phần
tử không thể thay thế được trong các quá trình tự động khống chế nhiệt độ, mức,
tốc độ… Ngay cả khi lý thuyết điều khiển tự động hiện đại được ứng dụng vào
việc thiết kế, các bộ điều khiển như bộ diều khiển mờ, bộ điều khiển Nơron, bộ
điều khiển bền vững thì việc kết hợp giữa các phương pháp điều khiển hiện đại
và bộ điều khiển PID kinh điển vẫn đem lại những hiệu quả bất ngờ mà không có
khả năng đem lại.
Một trong những ứng dụng của bộ điều khiển PID trong điều khiển thích
nghi và điều khiển mờ là thường xuyên phải chỉnh lại các tham số của nó cho
phù hợp với sự thay đổi không biết trước của đối tượng cũng như của môi trường
nhằm đảm bảo được các chỉ tiêu chất lượng đã đề ra cho hệ thống. Nếu như ta đã
tự động hóa được công việc thay đổi tham số này thì bộ điều khiển PID đó sẽ là
một bộ điều khiển bền vững với mọi tác động của nhiễu nội cũng như nhiễu
ngoại lên hệ thống .
Cũng chính vì vậy mà các thiết bị điều khiển quá trình như DSC Disbute
Control system, PLC Programable Logic Control, PSC Process Control System
của các hãng sản xuất thiết bị tự động trên thế giới không thể thiếu được module
điều khiển PID hoặc cứng hoặc mềm.
Để sử dụng tốt các module này, người thiết kế phải nắm được các phương
pháp chọn luật điều khiển và các tham số cho bộ điều khiển.
Bộ điều khiển PID vi tích phân tỷ lệ rất hay dùng trong các hệ thống điều
khiển công nghiệp vì nó có ưu điểm sau : PID là sự kết hợp những ưu điểm của 3
khâu P, PI , PD trước hết ta cần tìm hiểu chức năng của từng khâu :
1. Điều khiển PID liên tục :
Điều khiển PID là cấu trúc điều khiển thông dụng nhất trong các quy trình
điều khiển . đầu ra của điều khiển là tổng hợp của ba thành phần:
 Thành phần thứ nhất up(t) là tỷ lệ giữa sai số đầu ra của hệ thống
thực với giá trị tham chiếu (giá trị đặt).
 Thành phần thứ hai uI(t) là tích phân theo thời gian của sai số .
 Thành phần thứ ba uD(t) là đạo hàm của sai số .
Hàm điều khiển :
 1 de 
u (t )  u 0  K e(t ) 
 Ti  e( )d  T
d   u 0  u p (t )  u I (t )  u D (t )
d 

Thông số K là độ lợi của điều khiển, TI là tích phân thời gian và  là biến tích
phân. Giá trị u0 là giá trị xác định trung bình biên độ tín hiệu xác thực .
Một vài quy trình điều khiển đặt biệt là quy trình cũ có khoảng tỷ lệ đặt thay
vì độ lợi điều khiển. Khoảng tỷ lệ được xác định là PB=100/K . định nghĩa chỉ áp
dụng khi K là không thứ nguyên.
Công thức của hàm điều khiển không chỉ giới hạn thực tế ở đầu ra. Điều
khiển sẽ đạt trạng thái bão hoà khi ngõ ra đạt giới hạn vật lý u max hoặc umin . Trong
thực tế ngõ ra của tỷ điều khiển tỷ lệ như sau :

Phần tích phân của hàm điều khiển được dùng để khử sai số của trạng thái
ổn định. Chức năng của nó có thể được giải thích bằng trực giác như sau : Giả sử
hệ thống ở trạng thái ổn định vì vậy tất cả các tín hiệu đều là hằng số, đặt biệt là
e(t) và u(t) . Trạng thái ổn định chỉ được duy trì nếu tích phân u I(t) là hằng số,
mặt khác u(t) có thể thay đổi . Điều này chỉ có thể xảy ra nếu e(t) bằng 0
Hàm điều khiển cũng có thể được biểu diễn theo phép biến đổi Laplace
như sau :
U ( s )  U 0 ( s )  U ( s )  U I ( s )  U D ( s )

 1  E (s)
U ( s )  U 0 ( s )  K 1   Td S  E ( s )  K (1  T1 s  T1Td s 2 )
 Ti S  T1 s

Bậc của tỷ số nhỏ hơn bậc của mẫu số và độ lợi của hàm điều khiển tiến
về vô cùng ở tần số cao. Đây là hệ quả của giới hạn đạo hàm. Trong thực tế đạo
hàm khó có thể đạt được chính xác, nhưng có thể coi một cách gần đúng đối với
hệ thống bậc nhất với hằng số thời gian Tf
 1 Td s 
U ( s )  U p ( s )  U 1 ( s )  U D ( s )  K 1    E ( s)
 T1 s 1  T f s 
Td
Tf  với N = 5  10. Độ lợi phần đạo hàm điều khiển có giới hạn là
N
KN ở tần số cao. Hàm PID được viết lại như sau :
 
T1 s (1  T f s)U ( s)  K T1 s(1  T f s )  1  T f s  T1T f s 2 E ( s )
Đây là trường hợp đặt biệt của điều khiển thông thường. Chia cho T ITf ,
PID được viết lại như sau :
s
R(s)  s 2 
Tf

 T  2  
S ( s )  T ( s )  K 1  d s  K  1  1 s  K
 T  T 
 f   f T1  TI T f

Đặc tính giới hạn của điều khiển PID : điều khiển PID được áp dụng thành
công trong hầu hết các tiến trình điều khiển .
Thời trễ : Thời trễ luôn xãy ra trong thực tế. Thời rễ làm chp thông tin của
quá trình điều khiển truền tới bộ điều khiển trễ hơn so với mong muốn, do đó
thông tin bị mất ý nghĩa. Thời trễ giới hạn đặt tính của hệ thống nào có thời trễ
được điều khiển bởi PID thường hoạt động châm hơn.
2. Dạng rời rạc của bộ điều khiển PID
Bộ điều khiển trong hệ thống số cần được rời rạc ở một vài mức. Bộ điều
khiển liên tục sẽ được rời rạc ở dạng số thích hợp . Trong việc thiết kế bộ điều
khiển liên tục, thì chính nó cũng được rời rạc. Cho hệ số lấy mẫu ngắn bên trong
thời gian vi phân có thể được xấp xỉ bởi một sai phân có giới hạn và tích phân
qua việc lấy tổng. Chúng ta sẽ quan tâm mỗi dạng ở một thời điểm, sai số được
tính toán ở mỗi khoảng lấy mẫu.
e(kh) = u(kh) – y(kh)
Chu kỳ lấy mẫu h được xem như một hằng số và những sự biến đổi tín
hiệu trong suốt thời gian lấy mẫu thì không quan tâm.
3. Sự hiệu chỉnh thực tế của bộ điều khiển :
Một chu kỳ lấu mẫu quá dài có thể ảnh hưởng đến việc điều khiển hồi tiếp
như bị nhiễu. Một trường hợp đặt biệt là nếu chu kỳ lấu mẫu lâu hơn thời gian
đáp ứng của quá trình thì nhiễu có thể ảnh hưởng đến quá trình xử lý và sẽ mất
trước khi bộ điều khiển có thể nhận được một hoạt động chính xác . vì vậy một
điều rất quan trọng là quan tâm đến động học và đặc tính nhiễu cũng ảnh hưởng
đến sự lựa chọn chu kỳ lấy mẫu .
Trong việc xử lý tín hiệu mục đích là lấy mẫu tín hiệu và phục hồi nó từ
dạng thời gian rời rạc. Lý thuyết lấy mẫu không xem thời gian tính toán là mối
quan tâm để làm cấu trúc lại thời gian, tín hiệu được lấy mẫu có thể mất thời
gian khá lâu. Nói thêm nữa là ta giả sử tín hiệu được chu kỳ hoá. Trong những
ứng dụng điều khiển các tín hiệu thường không theo chu kỳ và thời gian tính
toán cho việc cấu trúc trúc lại tín hiệu bị giới hạn .
4. Chức năng cụ thể của các thành phần trong PID:
Khâu hiệu chỉnh tích phân tỷ lệ (P)
Được đưa vào hệ thống nhằm làm giảm sai số xác lập, với đầu vào thay
đổi theo hàm nấc sẽ gây vọt lố cao do đó vị trí sẽ không đúng theo yêu cầu .
Đây là bộ điều khiển mà biến đặt tỷ lệ với độ sai lệch từ điểm đặt bên
trong dãy tỷ lệ cho phạm vi vị trí đặt.
Khi vị trí hiện tại thấo hơn mức giới hạn thấp nhất của dãy tỷ lệ, biến đặt
là 100%. Khi vị trí trong dãy tỷ lệ, biến đặt giảm dần tỷ lệ với độ lệch và giảm
50%. Khi vị trí hiện tại bằng với điểm đặt và không có lệch. Khi đó khâu P cho
phép điều khiển vị trí phẳng với nhấp nhô nhỏ hơn điều khiển ON_OFF.
Điều khiển tỷ lệ chia thời gian:
Thiết bị ngỏ ra dạng xung ở trạng thái ON_OFF có thể dùng thiết bị ngõ
ra của bộ điều khiển vị trí. Những ngõ ra này gồm : Relay output, SSR(solid
State Relay)output và voltage Output. Nếu như thiết bị này dùng để lặp trạng
thái ON_ OFF trong dải tỷ lệ ở chu kỳ như hình trên thì thời gian T on ở ngõ ra tỷ
lệ với độ lệch .
Tỷ số từ lúc ON tới lúc OFF là 1:1 và biến là 50 0/0 khi chu kỳ relay
ngõ ra từ lúc ON tới OFF với vị trí điều khiển bằng điểm đặt .Một chu kỳ từ ON
tới OFF của thiết bị ngõ ra được gọi là chu kỳ tỷ lệ và hoạt động điều khiển theo
chu kỳ tỷ lệ được gọi là hoạt động điều khiển chia tỷ lệ thời gian .

Khâu điều khiển vi phân D:


Được đòi hỏi phải bù, được thực hiện đúng với biến tỷ lệ, mức nghiên của
độ lệch được chỉ ra ở hình dưới đây:
Bước đáp ứng :
Tỷ số thời gian : tỷ số thời gian là số biểu diễn độ dài của quá trình hoạt
động. Đây là thời gian đòi hỏi biến đặt của tỷ số hoạt động đạt được giống như
biến đặt trong hoạt động hiệu chỉnh khi xảy ra thay đổi độ dốc trong độ lệch. Tuỳ
theo tỷ số thời gian : nếu số thời gian dài hơn , vi phân linh hoạt hơn.
Hiệu ứng vi phân:
Trường hợp độ lệch xảy ra đột ngột trong bộ chia tỷ lệ. Trước tiên On hoặc
OFF thời gian của Output Relay kéo dài bằng việc chỉnh đến điểm đặt sớm hơn .
Vì hiệu ứng của điều khiển này tương tự như tỷ số hoạt động được xem như là
hiệu ứng vi phân.
Khâu tích phân I:
Điều khiển hoạt động I: Độ lệch tăng bởi sự tương quan giữa vị trí đặt
của hệ điều khiển và vị trí hiện tại và giữ sau khi hệ thống điều khiển đạt trạng
thái bền. Sự lệch này gọi là sai số. Nếu như sai số xảy ra trong bộ điều khiển mà
chỉ thực hiện điều khiển tỷ lệ thì nó thiếu chính xác. Giảm và loại sai số để vị trí
điều khiển hợp với điểm đặt.
Thời gian Reset :
Thời gian reset là số diễn tả quá trình hoạt động reset. Đây là thời gian đòi
hỏi biến bộ điều khiển tích phân bằng với biến đặt bộ điều khiển tỷ lệ khi độ lệch
lấy thay đổi từng bước. Do đó thời gian reset ngắn, ảnh hưởng rất nhiều đến hoạt
động Reset. Tuy nhiên thời gian reset quá ngắn mà thực hiện quá nhanh có thể
gây ra hunting
Khâu tích phân tỷ lệ (PI) :
Khâu tích phân tỷ lệ trở thành vô sai. Muốn tăng chính xác của hệ thống
ta phaỉo tăng hệ số khuếch đại. Song đối với hệ thống thực sẽ bị hạn chế và sự có
mặt của khâu PI là bắt buộc .
Khâu PID :
Các bộ hiệu chỉnh PID được ứng dụng nhiều dưới dạng thiết kế điều khiển
hay thuật toán phần mềm.
1
GC ( s )  K p (1   Td s
Ti s
Ki
Hay GC ( s )  K p   Kd s
s
Nếu tín hiệu vào là sai số e(t), tín hiệu ra là áp điều khiển u(t) thì :
 1 de(t ) 
u (t )  K p e(t ) 
 Ti
 e(t )d (t )  T
d
dt 

5.1 Xác định các tham số cho bộ điều khiển PID :


Luật điều khiển thường đươc chọn trên cơ sở đã xác định được mô hình
toán học của đối tượng phải phù hợp với đối tượng cũng như thõa mãn các yêu
cầu của bài toán thiết kế.
Trong trường hợp mô hình toán học của dối tượng không xác định được
có thể luật điều khiển va các tham số của bộ điều khiển theo phương pháp thục
nghiệm, hệ thống phải đảm bảo thoã mãn một số điều kiện.
5.1.1 Phương pháp Reinisch
Phương pháp thiết kế thuật điều khiển của Reinisch dựa trên cơ sở mô
hình toán học của đối tượng đã xác định một cách tường minh. Mô hình động
học của đối tượng được đưa về 2 dạng cơ bản sau:
1) Dạng khâu nguyên hàm với mô hình đặc trưng :

( 6.5 )

Với Ti là các số thực thõa mãn T1 >= T2 >= Tn >= 0 và hằng số thời gian
trễ Tt là một số thực hữu hạn không âm. Không mất tính tổng quát nếu ta giả
thiết T1 là hằng số thời gian lớn nhất và T2 là hằng số thời gian lớn thứ hai.
Nếu 0 <= b <= T3 thì bộ điều khiển thích hợp sẽ là P hoặc PI. Trong
trường hợp 0 <= b <= T4 người ta thường chọn bộ điều khiển PD hoặc PID.
2) Dạng khâu động học có thành phần tích phân
(1  bp )e T t (1  bp )e T t
p
W ( P )  k idt n
= k idt
p (1  p T i )
n

i 1
p(1  a1  ...  a n p)
(6.6)
Với những điều kiện hạn chế giống như (6.5).
Để thuận lợi cho việc thiết kế hệ thống với luật điều khiển I cho đối tượng
dạng 1 và không có luật điều khiển I cho đối tượng 2, Reinisch đã đề nghị
đưa hàm truyền phải có của hệ hở về dạng gần đúng sau:

1
W ( p)  ( 6.7 )
pT (1  c1 p  c2 p)

với 2 trường hợp phân biệt c2 = 0 hoặ c2 # 0. tham số T được tính bởi:

(6.8)

và c1 được xác định từ các tham số của đối tượng như sau :

c1  T I  b  T t  a1  b  T t
i 1

(6.9)

Tham số ki của bộ điều khiển PID sẽ được xác định từ T theo (6.8). Các
tham số TD1, TD2 còn lại thì được tính đơn giản là TD1=T1 và TD2=T2.
Điều khiển đối tượng dạng 1
Để chọn T cho đối tượng dạng1 ta đi từ độ quá điều chỉnh cực đại mong
muốn max thông qua hệ số chỉnh định  = f(max) theo công thức :

1
T  c1 => k  ( 6.10 )
i
k c
dt 1

1) Cho trường hợp ( 6.7 ) có c2 = 0, hệ số chỉnh định  được tính theo:


4 ln 2  max
 ( 6.11 )
 2  ln 2  max

2) Cho trường hợp ( 6.7 ) có c2 # 0 thì


 = a + c

với a và c xác định từ max theo bảng dưới, hằng số  có thể được xác
định theo các cách :

a)   c22 nếu bộ điều khiển được sử dụng là I. ( 6.12 )


c 1
,

b) c 2
,2
nếu bộ điều khiển được sử dụng là P hoặc PI. ( 6.13 )
c 1
,,

c)  c 2
,, 2
nếu bộ điều khiển được sử dụng là PD hoặc PID (
c 1
6,14 ).
trong đó:

c  a  b T
, ,,
1 1 1
, c  c T , c  c T T
1 1 1 1 1 1 2
( 6.15 )

2
T , c,2  c2  T 1 c1, ,
c a T
2
 (  b )(
2 a  b )  1
2 1
t

,, , ,,
c  c T c T c
2 2 1 1 2 1
( 6.16 )
Ví dụ 1: cho 1 đối tượng thuộc dạng 1( theo phương trình (6.5)) với
mô hình:
6 p

W ( p)  e
(1  16 p  40 p)

Hãy thiết kế luật điều khiển và chọn tham số sao cho độ quá điều chỉnh
max không vượt quá 10%.
Để điều khiển đối tượng trên ta có thể sử dụng các bộ điều khiển I, P hoặc
PI.
Theo như bảng trên thì yêu cầu max <= 10% dẫn đến  = 1,4 và c=1. hơn
nữa đối tượng có các tham số kdt =1, b=0, a1=14s, a2=40s2, T1=10s, T2 = 4s và
T=6. Bởi vậy theo (6.15) và (6.16) thì c1=20s, c1’= 10s, c1=6s, c2’=98 s2, c2”=74
s2. Suy ra  có những giá trị sau:

   c22 = 0.495 nếu bộ điều khiển được sử dụng làI.


c 1
,

 c 2
,2
=0.98 nếu bộ điều khiển được sử dụng làP hoặc PI.
c 1
Giả sử rằng ta sử dụng bộ điều khiển I. Vậy thì do  = a + c = 1.9 nên từ
(6.10) ta có k1=0,03 và TD1=TD2=0
Nếu bộ điều khiển mà ta sử dụnglà PI thì các tham số cần xác định của bộ
điều khiển làki và TD1. Từ  = a + c =2,38 ta suy ra được k1=0,05 và TD1=TD2=0.
Điều khiển đối tượng dạng 2
Ưu điểm của phương pháp Reinisch là ngay cả trong trường hợp đối
tượng có thành phần tích phân ( dạng 2 ), các giá trị cần thiết cho công việc tính
toán tham số bộ điều khiển như c1, c1’, c1”, c2, c2’, c2” cũng được tính giống như
cho đối tượng dạng 1.
Đối với vấn đề điều khiển đối tượng dạng 2, Reinisch đề xuất sử dụng bộ
điều khiển P hoặc PD ( không có I ) và do đó theo công thức hàm truyền đạt
(6.2) của bộ điều khiển thì chỉ còn 2 tham số kp và TD là phải xác định.
Với những giá trị trung gian c1, c1’, c1”, c2, c2’, c2”, tính theo (6.12) /
(6.16), ta có  :

a)   c22 nếu bộ điều khiển được sử dụng là P(6.17)


c 1
,

b) c 2
,2
nếu bộ điều khiển được sử dụng là PD. (6.18)
c 1
Từ đó suy ra :
1
1) k  cho bộ điều khiển P.
i
k c
idt 1

1
2) k i
 ,, và TD=T1 cho bộ điều khiển PD.
k idt c1 
trong đó  = a + c và a,c được tính từđộ quá điều chỉnh cực đại mong
muốn max theo bảng cho trong trường hợp (6.7)
Ví dụ 2: Tìm bộ điều khiển cho đối tượng thuộc dạng 2 với mô hình:

6 p

W ( p)  e
p(1  16 p  40 p)

để max  10%. Giống như ở ví dụ 1, các giá trị trung gian là c1=20s, c1’=
10s, c1=6s, c2=198 s2, c2’=98 s2, c2”=74 s2. Bởi vậy nếu chọn bộ điều khiển
PD thì

,,

 c 2
=2.05 hay  =3,45
,, 2
c1

và do đó
kp=0,05 , TD=10.
Phương pháp thực nghiệm
Trong trường hợp không thể xây dựng phương pháp mô hình cho đối
tượng thì phương pháp thiết kế thích hợp là phương pháp thực nghiệm. Thực
nghiệm chỉ có thể tiến hành nếu hệ thống đảm bảo điều kiện: khi đưa trạng thái
làm việc của hệ đến biên giới ổn định thì mọi giá trị của tín hiệu trong hệ thống
điều phải nằm trong giới hạn cho phép.
Phương pháp Zeigler và Nichols
Trước khi tiến hành thực nghiệm, hệ thống phải được lắp đặt theo sơ đồ ở
hình 6.1, bao gồm đối tượng và bộ điều khiển theo luật PID. Sau khi lắp đặt
xong, thực nghiệm được tiến hành theo các bước sau :
1) Cho hệ thống làm việc ở biên giới ổn định
_ Điều khiển đối tượng theo luật P, tức là cho TD  0 và T1  .
_ Tăng hệ số khuếch đại kp của luật điều khiển P cho đến khi hệ thống ở
biên giới ổn định. Xác định hệ số kpth và chu kỳ dao động tới hạn Tth.

2) Chọn luật điều khiển và tính toán tham số từ kpth, Tth theo bảng sau:
Luật điều
k p
T I
T
khiển D
T
k T
th
pth th
Luật P 0.5
Luật PI 0.45 0.8
Luật PID 0.6 0.5 .12

Trong nhiều trường hợp, việc xác định chu kỳ dao động riêng gặp khó
khăn và không đảm bảo độ chính xác thì phương pháp giới thiệu sau đây sẽ khắc
phục nhược điểm đó.
Phương pháp Jassen và Offerein
Thực nghiệm theo phương pháp này tiến hành theo các bước sau đây:
1) Cho hệ thống làm việc ở biên giới ổn định
_ Điều khiển đối tượng theo luật P ( TD  0 và T1   )
_Xác định hệ số kpth
2) Chọn tham số cho luật PI
_ Cho hệ làm việc với luật PI và hệ số kp = 0,45kpth, T1 tùy chọn
_ Giảm hằng số thời gian tích phân T1 cho đến khi hệ thống làm việc ở
biên giới ổn định. Xác định hằng số thời gian tích phân TIth ở chế độ
này.
1
_ Chọn T D 
3 T D max
,T1 = 3TIth
3) Chọn luật điều khiển PID
_ Cho hệ thống làm việc theo luật PID với kp = k pth -  (  đủ nhỏ ), TD
và T1 tùy chọn.
_ Tăng hằng số thời gian vi phân cho đến khi hệ thống đạt được độ quá
điều chỉnh cực đại lớn nhất max  max. Xác định TDMAX.
_ Chọn TD = 1/3 TDMAX và T1= 4,5TD.
_Giảm kp cho đến khi hệ thống đạt được đặc tính động học mong muốn.
IV. Điều khiển vị trí dùng logic mờ :
Các phương pháp kinh điển đã điều khiển được các đối tượng kỹ thuật rất
hoàn thiện và đặt tính động học của toàn bộ hệ thống rất tốt. Nhưng để xử lý
thêm các tín hiệu đo và tăng thêm khả năng chuẩn đoán cho hệ thống, cần thay
thế ở bước đầu tiên bộ điều khiển kinh điển bằng bộ điều khiển mờ và phát triển
thêm hệ điều khiển dựa trên cơ sở của bộ điều khiển mở này 9ể có được các tính
chất điều khiển mong muốn. Cùng với logic mờ các bộ điều khiển chung cho
phép tạo ra một khả năng điều khiển đối tượng phong phú và đa dạng. Bộ điều
khiển vị trí dùng logic mờ có thể được xây dựng trên cơ sở bộ điều khiển PI mờ.
Đầu vào của hệ thống là tín hiệu sai lệch vị trí và đấu ra là điện áp điều khiển U c
cung cấp cho mạch tạo xung điều rộng.
Hệ mờ nhận 2 tín hiệu vào là sai lệch vị trí và sai phân sai lệch .
Sau khi tiến hành mờ hoá 2 biến vào này, dựa trên bảng luật điều khiển hệ
mờ sẽ quyết định nên tăng hay giảm điện áp điều khiển thông qua biến ra vi phân
điện áp.
Khâu tích phân sẽ làm nhiệm vụ tính ra điện áp điều khiển U chính xác để
cấp cho mạch tạo xung điều rộng.
Công việc thiết kế sẽ bao gồm việc chọn tập mờ cho 3 biến ngôn ngữ vào ra
và xây dựng bảng luật điều khiển thích hợp.

CHƯƠNG 4:
A. ĐỘNG CƠ DC
Tuỳ theo cách kích thích từ, động cơ điện một chiều có những đặt tính làm
việc và đặt tính động cơ khác nhau. Trong các đặt tính đó thì đặt tính quan trọng nhất là
đặt tính cơ. Đó là đặt tính biểu thị quan hệ giữa tốc độ quay và moment =f(M).
I.Đặt tính cơ của động cơ DC kích từ độc lập hoặc
kích từ kích thích song song:
1. Phương trình đặt tính cơ
Mạch kích từ thường được mắc song song với mạch phần ứng nguồn điện
một chiều có công suất lớn. Động cơ được gọi là động cơ kích từ song song:

Khi mạch điện phần ứng và mạch điện kích từ được mắc vào hai nguồn
điện một chiều độc lập thì động cơ đó được gọi là động cơ lích từ độc lập:

Trong cả hai sơ đồ kích từ song song và kích từ độc lập, phương trình điện
áp phần ứng động cơ đều có dạng :
Uư = Eư + (Rư + Rf ) Iư
Trong đó :
Uư : Điện áp phần ứng(V)
Eư : Sức điện động phần ứng (V)
Rư : Điện trở cuộn dây phần ứng ()
rư : Điện trở cuộn dây phần ứng
rcf : Điện trở cuộn cực từ phụ
rb : Điện trở cuộn bù
rct : Điện trở tiếp xúc của chổi điện.
Rf : Điện trở phụ kích từ trong mạch phần ứng()
Iư : Dòng điện mạch phần ứng (A)
Sức điện động Eư của phần ứng động cơ được xác định theo biểu thức :
Eư = (pN)/(2a)= K
Trong đó : p : số đôi cực từ chính
N : số thanh dẫn tác dụng của cuộn dây phần ứng
A : số đôi mạch nhánh song song của cuộn dây
phần ứng
 : từ thông kích từ dưới một cực từ(Wb)
 : tốc độ góc (rad/s)
K : hệ số cấu tạo của động cơcó biểu thức :
pN
K 
2a
mặt khác ta có:
2a

60
do đó từ biểu thức (2) ta có:
pN 2a
E . . (3)
2a 60
pN
E n
60a
vậy : E ư = Ke  n
với : Ke : hệ số sức điện động của động cơ.
pN
Eö 
60a
Từ (1) và (2) ta có:
U u Ru  R f
  Iu (4)
K K
Biểu thức (4) là đặc tính cơ điện của động cơ.
Mặt khác moment điện từ Mđt của động cơ được xác định bởi :
Mđt = KIư
M dt
Suy ra : Iu 
k
Thay giá trị Iư vào (4) ta được :
U u ( Ru  R f )
  M dt (6)
K ( K ) 2
Nếu bỏ qua các tổn thất cơ và tổn thất thép thì moment cơ trên trục động
cơ bằng moment điện từ, ta ký hiệu là M, nghĩa là: Mđt = Mcơ = M

U u ( Ru  R f )
  M
K ( K ) 2
Đây là phương trình đặc tính cơ của động cơ điện một chiều kích từ độc
lập.
Giả thiết phản ứng phần ứng được bù đủ, từ thông = const, thì các
phương trình đặt tính cơ điện (4) và phương trình đặt tính cơ (7) là tuyến tính.
Đồ thị của chung được biểu diễn trên hình a và b

Theo các đồ thị trên, Iư = hoặc M= 0 ta có :


Uu
  0
K
0 : được gọi là tốc độ không tải lý tưởng của động cơ. Còn khi = 0 ta
có:
U
Iu   I nm
Ru  R f

và M = KInm =Mnm
Inm : được goọi là dòng điện ngắn mạch.
Mặc khác, phương trình đặc tính (4) , (7) cũng có thể viết dưới dạng:
U u RI u
    0  
K K
Uu RM
    0  
K (K ) 2
Trong đó : R = Rư + Rf
Uu
0 
K
RI u RM
  
K ( K ) 2
 : được gọi làđộ sụt tốc đống với giá trị của M
2. Xét ảnh hưởng của các tham số đến đặt tính cơ:
Từ phương trình đặc tính cơ (7) ta thấy có 3 tham số cơ bản ảnh hưởng đến
đặc tính cơ:
 Từ thông động cơ
 Điện áp phần ứng Uư
 Điện trở phần ứng động cơ.
a. Anh hưởng của điện trở phần ứng :
Giả thiết : Uư =Uđm = const
Và :  = đm =const
Muốn thay đổi điện trở phần ứng ta nối thêm điện trở phụ R f vào mạch
phần ứng. Trong trường hợp này tốc độ không tải lý tưởng.
U dm
0   const
K dm
Độ cứng của đặc tính cơ :
M ( K dm ) 2
   Var
 Ru  R f

Khi Rf càng lớn,  càng nhỏ nghĩa là đặc tính cơ càng dốc. Ưng với R f = 0
ta có đặc tính cơ tự nhiên :
( K dm ) 2
 TN  
Ru
NT có giá trị lớn nhất nên đặc tính cơ tự nhiên có độ cứng hơn tất cả các
đường đặc tính có điện trở phụ. Như vậy khi thay đổi điện trở phụ R f ta được
một họ đặc tính biến trở có dạng như hình vẽ. Ưng với một phụ tải M c nào đó,
nếu Rf càng lớn thì tốc độ động cơ càng giảm, đồng thời dòng điện ngắn mạch và
moment ngắn mạch càng giảm. Cho nên người ta thường dùng phương pháp này
để hạn chế dòng điện và điều chỉnh tốc độ động cơ phía dưới tốc độ cơ bản.
b. Anh hưởng của điện áp phần ứng:
Giả thiết từ thông :  = đm =const
Điện trở phần ứng : Rư = const
Khi thay đổi điện áp theo hướng giảm so với Uđm ta có :
Ux
Tốc độ không tải : 0   Var
K dm
( K dm ) 2
Độ cứng đặc tính cơ :  TN  =const
Ru
Như vậy khi thay đổi điện áp đặt vào phần ứng động cơ ta được một họ
đặc tính cơ song song với đặc tính cơ tự nhiên như hình vẽ.
Ta thấy rằng khi thay đổi điện áp (giảm áp ) thì moment ngắn mạch, dòng
điện ngắn mạch của động cơ giảm và tốc độ động cơ cũng giảm ứng với một phụ
tải nhất định. Do đó phương pháp này cũng để điều chỉnh tốc độ động cơ và hạn
chế dòng điện khi khởi động.
c. Anh hưởng của từ thông :

Giả thiết điện áo phần ứng : Uư = Uđm = const


Điện trở phần ứng : Rư = const
Muốn thay đổi từ thông ta thay đổi dòng điện Ikt kích từ động cơ. Trong
trường hợp này :
U dm
Tốc độ không tải :  ox   Var
K
( K ) 2
Độ cứng đặc tính cơ :    Var
Ru
Do cấu tạo của động cơ điện, thực tế thường điều chỉnh giảm từ thông.
Nên khi từ thông giảm thì 0x tăng, còn  sẽ giảm. Ta có một họ đặc tính cơ với
0x tăng và độ cứng của đặc tính giảm dần khi giảm từ thông.
U dm
Dòng điện ngắn mạch : I nm   const
Ru
Moment ngắn mạch : Mnm = KInm = Var
Các đặt tính cơ điện và đặc tính cơ của động cơ khi giảm từ thông được
biệu diễn trên hình trên.
Với mạng moment phụ tải Mc thích hợp với chế độ làm việc của động cơ
thì khi giảm từ thông tốc độ động cơ tăng lên.
II. Đặc tính cơ của động cơ kích từ nối tiếp :
Động cơ DC kích từ nối tiếp có cuộn kích từ mắc nối tiếp với cuộn dây phần
ứng. Do đó cuộn dây kích từ có tiết kiệm lớn, điện trở nhỏ, số vòng ít và chế tạo dễ
dàng. Sơ đồ nguyên lý động cơ kích từ nối tiếp được mô tả như sau:

Ỏ động cơ điện một chiều kích từ nối tiếp, dòng điện kích từ chính là
dòng điện phần ứng Ikt = Iư= I
Phương trình đặc tính cơ : Uư = Eư + IưRư = K + IưRư
Trong đó: Rư = rư + rctf + rct + rkt
Từ phương trình trên ta có biểu thức :
U u RI u
 
K K
Uu R M
  u 2
K ( K )
Vì : M = KIư
Từ thông  iến đổi phụ thuộc vào dòng điện trong mạch kích từ phụ
thuộc vào đặc tính từ hoá ( đường 1). Đây là một đường phi tuyến, để đơn giản ta
có thể giả thiết từ thông  phụ thuộc tuyến tính theo dòng điện kích từ như ở
đường (2).
Trong một phạm vi khá rộng ta có thể biểu thị :
 = K Ikt
Với : K là hệ số tỷ lệ- chỉ là hằng số trong vùng I< 0.8 I đm, còn khi I>(.8
0.9)Iđm thì hơi giảm xuống do ảnh hưởng bão hoà của mạch từ.

Nếu phản ứng được bù đủ, nghĩa là Ikt = Iư thì :


 = K I ư
Từ phương trình (1) và phương trình (4) ta có :
Uu R A
   1 B
KK  I u KK  I
Trong phương trình trên ta đã đặt :
Uu
A
KK 
R
và B
KK
M
Ta cũng có : Iu 
KK 

Từ phương trình (5) và (6) ta có thể rút ra :


A1 KK  A2
 B B
M M
Trong đó : A2  A1 KK 

Biểu thức (5) chính là phương trình đặt tính cơ điện của động cơ và (5) là
phương trình đặc tính cơ của động cơ. Đặc tính cơ điện của động cơ một chiều
kích từ nối tiếp:

Đặc tính cơ của động cơ điện một chiều kích từ nối tiếp :

Từ đồ thị ta thấy các đặc tính này có dạng Hyperbol và mềm ở phạm vi
dòng điện có giá trị nhỏ hơn định mức. Ơ vùng dòng điện lớn, do mạch bão hoà
nên từ thông hầu như không đổi và đặc tính có dạng gần như tuyến tính.
Giả thiết động cơ không tải (I=0, M=0) thì tốc độ không tải lý tưởng sẽ vô
cùng lớn. Nhưng thực tế do có ma sát, các tổn thất phụ và động cơ có từ dư ( dư
= 210)đm nên khi không tải thì tốc độ không tải của động cơ vẫn có giá trị là:
Uu

K dm
Tốc độ ot này thường rất lớn s với tốc độ định mức, nên thực tế không
cho phép động cơ một chiều kích từ nối tiếp làm việc ở chế độ không tải.
Ngoài ra nhìn vào đặc tính cơ của động cơ một chiều kích từ nối tiếp và
cấu tạo của nó ta có nhận xét sau :
 Đặc tính của động cơ một chiều kích từ nối tiếp mềm
và độ cứng thay đổi theo phụ tải. Do đó thông số tốc độ của động cơ ta có thể
biết được sự thay đổi của phụ tải. Tuy nhiên không nên sử dụng động cơ này cho
những truyền động có yêu cầu ổn định cao mà nên sử dụng nó cho những truyền
động có yêu cầu tốc độ.
 Động cơ kích từ nối tiếp có khả năng quá tải lớn vè
Moment. Nhờ cuộn kích từ nối tiếp nên ở vùng dòng điện phần ứng lớn hơn định
mức thì từ thông động cơ lớn hơn định mức, do đó moment của nó tăng nhanh
hơn với sự tăng dòng điện. Như vậy với mức độ quá dòng điện như nhau thì
động cơ một chiều kích từ nối tiếp có khả năng quá tải về môment và khả năng
khởi động tốt hơn động cơ một chiều kích từ độc lập. Nhờ có ưu điểm đó mà
động cơ kích từ nối tiếp rất thích hợp cho những truyền động làm việc thường có
quá tải lớn và yêu cầu moment khởi động lớn như máy nâng vận chuyển, máy
cán thép .
 Vì từ thông của động cơ chỉ phụ thuộc vào dòng điện
phần ứng nên khả năng chụi tải của động cơ không bị ảnh hưởng bởi sụt áp của
lưới điện. Loại động cơ này thích hợp cho những truyền động dùng ngành giao
thông có đường cung cấp điện dài.
III. Các phương pháp điều chỉnh tốc độ động cơ điện
một chiều :
1. Vấn đề điều chỉnh tốc độ
Hầu hết các máy sản xuất đều đòi hỏi phải có nhiều cấp độ khác nhau. Việc
chọn cấp tốc độ là do yêu cầu thực tế đặt ra. Về phương diện này động cơ điện một
chiều có nhiều ưu việc hơn so với các loại động cơ khác. Đó chính là đặc tính điều
chỉnh tốc độ dễ dàng nhờ đó mà có cấu trúc mạch điều khiển động lực khá đơn giản và
đồng thời việc điều chỉnh có chất lượng tốt.
2. Điều chỉnh tốc độ bằng cách thay đổi từ thông  :
Điều chỉnh từ thông kích thích cảu động cơ điện một chiều chính là điều chỉnh
moment điện từ M=k.Iư và sức điện động Eư k  Iư của động cơ.
Đối với động cơ kích từ nối tiếp thì từ thông  có thể thay đổi bằng những phương
pháp sau đây:
 Mắc Sun dây cuộn kích thích bằng một điện trở:

 Thay đổi số vòng dây của dây cuốn kích từ.

 Mắc sun dây cuốn phần ứng :

Nếu dòng điện kích từ lúc đầu là I t = I thì dòng điện kích thích sau khi áp
dụng các biện pháp trên sẽ giảm xuống còn It = KI với hệ số k :
Rst
K 1 : Nếu mắc Sun dây cuốn kích thích
Rt  Rst

 't
K 1 : Nếu thay đổi số vòng dây của dây cuốn kích thích
t
Do đó :  = KKI < đm = KI
Phương pháp này chỉ điều chỉnh được  < đm và tốc độ sẽ thay đổi được
trong vùng trên định mức và đường đăc tính se nằm về phía trên của đặc tính tự
nhiên.
Nếu mắc Sun phần ứng thì tổng trở của toàn mạch về phía trên sẽ giảm đi,
dòng điện I = It và từ thông  tăng lên và tốc độ quay sẽ giảm xuống. Rõ ràng
phương pháp này điều chỉnh được tốc độ dưói vùng định mức và đường đặc tính
cơ tương ứng nằm ở phía dưới của đặc tính cơ tự nhiên. Vì R t rất bé nên Rsư hầu
như đặt dưới toàn bộ điện áp của mạch nên tổn hao rất lớn và hiệu suất động cơ
giảm đi nhiều. Mặt khác hiệu quả của hiệu chỉnh tốc độ bằng cách tăng từ thông
 còn bị hạn chế bởi sự bảo hoà của mạch từ nên phương pháp này ít được sử
dụng.
3. Điều chỉnh tốc độ bằng cách thêm điện trở vào mạch phần
ứng

Phương pháp điều chỉnh này chỉ điều chỉnh được tốc độ dưới tốc độ định
mức và kèm theo tổn hao trên điện trở phụ nên làm giảm hiệu suất của động cơ
nên ít được sử dụng
4. Điều chỉnh tốc độ bằng cách thay đổi điện áp phần ứng :
Phương pháp này chỉ điều chỉnh được tốc độ dưới tốc độ định mức và
không cho phép tăng địen áp quá định mức nhưng lại giữ được hiệu suất cao do
không gây tổn hao khi điều chỉnh. Phương pháp này dùng bộ biến đổi phức tạp
như cần có thiết bị nguồn như máy phát điện một chiều kích từ độc lập, các bộ
điều khiển dùng phương pháp chỉnh lưu …
5. Điều chỉnh tốc độ bằng phương điều rộng xung :
Điều áp bao gồm những xung có độ rộng thay đổi được và biên độ là
hằng số. Yêu cầu làm mạch có khả năng đóng ngắt tần số cao, có thể đóng ngắt
cho từng ngắt khác nhau. Các loại mạch này thích hợp cho mạch động lực dùng
Transistor công suất, việc ngắt nhiều lần, nếu ta thay đổi được sóng hài bậc cao.
Trong các phương pháp điều chỉnh tốc độ động cơ điện một chiều, ta nhận
thấy để điều chỉnh tốc độ cần có dãi điều chỉnh rộng, đòi hỏi chất lượng điều chỉnh
tốc độ cao. Do đó chọn phương pháp điều chỉnh tốc độ động cơ bằng phương pháp
điều rộng xung là thay đổi được tON và fxung = 1/T = const.

B. Bộ giải mã vị trí
I. Encoder số :
- Mỗi một Encoder số bao gồm một đĩa tròn với các vạch kẻ mẫu ở
trên. Các vạch mẫu này được đọc bởi các đầu cảm biến. Đĩa này thường đi kèm
với trục quay của nó, trục này làm quay những mẫu phát ra tín hiệu cho mỗi vị
trí nhận được. Cách ghi các mã trên đĩa phụ thuộc vào các mẫu trên nó.
- Phân loại theo cấu tạo vật lý thì hiện nay Encoder thường có 3 loại :
Encoder tiếp xúc, Encoder từ trừơng và Encoder quay.
1. Encoder tiếp xúc :
- Điểm tiếp xúc thực tế của loại Encoder này là giữa đĩa và đầu đọc
thông qua chổi than. Loại này có nhược điểm là tạo ra ma sát, hao mòn, bụi
bẩn do mọt than, xuất hiện điện trở tiếp xúc, gây ra rung động… làm giảm
độ chính xác và tuổi thọ.
- Độ phân giải của Encoder phụ thuộc vào đường rãnh và độ chính xác
nhỏ nhất của một rãnh có thể có được trên đĩa, độ phân giải có thể đạt 10
rãnh trên đĩa, Độ phân giải có thể tăng lên bằng cách ghép nhiều tầng đĩa
hoặc dùng bộ đếm lên/xuống cho trạng thái cao nhất của bit.
2. Encoder từ trường :
Đối với Encoder từ trường thì đĩa quay của nó được tráng một lớp
vật liệu từ, trong đó những vạch mẫu không được phủ. Các vạch này được đọc
bằng một đầu đọc nam châm. Rõ ràng với ưu điểm này thì Encoder từ trường có
tuổi thọ cao hơn Encoder tiếp xúc.
3. Encoder quang :
Encoder quang là loại thông dụng nhất nhờ có độ chính xác cao và
dùng ánh sáng của bàn dẫn. Encoder có 3 bộ phận : đĩa Segment có những phần
trong suốt cho ánh sáng đi qua và những phần không cho ánh sáng đi qua, một
nguồn sáng cùng với một hệ thống hỗ trợ chiếu sáng, bộ phân cảm biến ánh sáng
( Photocell ).
Hầu hết Encoder được sản xuất với độ chính xác cao, một Segment
có bề dày xấp xỉ 12 micros. Độ phân giải của Encoder quang thông thường
có thể đạt đến 14 bits.
Hiện nay trên thị trường có 2 loại Encoder số :
Bộ giải mã tuyệt đối ( Absolute Encoder ) :
Là loại thiết bị mã hóa mà các tín hiệu mã đầu ra song song để chỉ thị góc quay
tuyệt đối của trục. Loại này không cần bộ đếm để điếm xung mà vẫn có thể biết góc
quay của trục thiết bị mã hóa.
Cũng giống như nhiều loại Encoder khác, bộ giải mã tuyệt đối gồm một
đĩa tròn, trên đó có những khoảng trong suốt và đục. Anh sáng có thể xuyên qua
những phần trong suốt đến bộ cảm biến quang ( Photo transistor ), khi đĩa quay
thì bộ cảm biế bật lên 1 và phần ánh sáng bị chặn bởi những phần đục làm cảm
biến quang xuống 0. Như vậy cảm biến quang sẽ tạo thành những xung tuần tự:
Khi thiết bị mã hóa này được sử dụng với cùng một thiết bị khác, thì vị trí
0 của trục xem như góc tọa độ. Khi trục của thiết bị mã hóa quay về tọa độ góc
này thì góc quay có thể được hiển thị trên bộ chỉ thị của máy. Tín hiệu đầu ra của
thiết bị mã hóa không bị ảnh hưởng bởi nhiễu của thiết bị đóng, ngắt và không
yêu cầu điều chỉnh góc quay chính xác. Hơn nữa, thậm chí nếu tín hiệu mã hóa
đầu ra không thể đọc vì trục quay quá nhanh, thì góc quay chính xác được ghi
khi tốc độ quay giảm xuống, hoặc ngay khi nguồn cho thiết bị mã hóa bị ngắt.
Thêm nữa, mã hóa sẽ không hoạt động do sự rung động của các thiết bịsử dụng
nó.
Loại thiết bị mã hóa tuyệt đối, có độ phân giải cao hơn và cho ra các
giá trị thay đổi trong phạm vi rộng hơn so với thiết bị mã hóa tăng dần
( Incremental Encoder ).
Thiết bị mã hóa tăng dần ( Incremental Encoder )
Là loại thiết bị mã hóa có dãy xung ra phù hợp với góc của trục quay.
Thiết bị mã hóa này không có xung ra khi trục không làm việc. Do đó cần có
một bộ đếm để xung ra.
Thiết bị mã hóa cho biết vị trí của trục quay bằng số xung được đếm.
Dạng thiết bị mã hóa này chỉ có 1 hay 2 kênh ngõ ra :
+Loại 1 chiều ( chỉ có đầu kênh A ) là loại chỉ sinh ra xung khi trục
quay.
+Loại 2 chiều ( có đầu ra kênh A và B ) cũng có thể cho biết chiều
của trục quay, nghĩa là thuận chiều kim đồng hồ. Ngoài ra còn có đầu
dây trung tính ( xung Z ) cho mỗi vòng quay, có nghĩa là nếu quay được
1 vòng thì xung Z lên 1.
- khi đĩa quay theo chiều kim đồng hồ
-Khi đĩa quay theo chiều kim đồng hồ thì xung track 1 (B) trễ pha
hơn xung track 2 (A).
-Ngược lại, khi đĩa quay ngược chiều kim đồng hồ thì xung track 1
(B) nhanh pha hơn xung track 2 (A).
*Quay thuận chiều kim đồng hồ :
Đầu A vượt quá B ( độ lệch pha ) = 90 +- 45 (T/4 +- T/8)
*Quay ngược chiều kim đồng hồ :

Một số thuật ngữ cơ bản để xác định Encoder:


*Điện áp nguồn : Điện áp đặt trên 2 đầu Encoder.
*Dòng tiêu thụ : Dòng điện lớn nhất có thể chạy qua Encoder khi đặt điện
áp nguồn.
*Tần số đáp ứng cực đại :
-Là tần số lớn nhất mà thiết bị mã hóa quay có thể đáp ứng. Với
dạng mã hóa tăng dần, tần số này tương ứng với xung ra trong 1 giây. Vì
vậy thiết bị phải thỏa mãn quan hệ sau :
( Số vòng quay + 60 vòng/phút ) x độ phân giải <= tần số đáp ứng lớn nhất
*Momen quán tính :
-Là moment của quán tính trục quay. Moment quán tính càng nhỏ trục
được dừng càng nhanh và êm.
*Đầu ra A và B:
Đối với thiết bị mã hóa 2 chiều thì người ta sử dụng 2 đầu ra song
song để xác định trục quay theo chiều kim đồng hồ(CCW) dựa trên độ lệch pha
của đầu ra A và B. Mặc dù độ lệch pha lý tưởng90 +- 0 song sai số cho phép đến
+-45. Ngoài ra còn có xung chuẩnở đầu ra cho mỗi vòng quay của trục thiết bị,
chức năng chỉ thị 0 này cùng với thiết bị mã hóa dạng số được dùng để đặt tại
điểm 0 của một bộ đếm nối bên ngoài hoặc trạng thái nghỉ của bộ nhận biết vị
trí.
*Độ phân giải:
Đối với loại mã hóa tăng dần, thì thuật ngữ này ứng với số
xung đầu ra cho mỗi vòng quay của trục.
*Tải trọng trục:
Là tải lớn nhất mà trục có thể chịu được. Tải trọng có ảnh hưởng trực tiếp
đến tuổi thọ của trục.
*Tốc độ quay:
Là tốc độ quay lớn nhất mà thết bị mã hóa có thể chịu đựng về mặt cơ học.
Moment khởi động :

Là Moment cần để khởi động trục quay từ trạng thái nghỉ, Moment khởi
động càng nhỏ thì trục quay càng êm.

Chương 5: Phụ lục.


A. GIỚI THIỆU VI XỬ LÝ AT89C52

1. VI ĐIỀU KHIỂN HỌ MCS-51MCS-51tm
Là họ vi điều khiển do hãng intel sản xuất vào đầu những năm 80 và ngày
nay đã trở thành một chuẩn trong công nghiệp. bắt đầu từ ic tiêu biểu là 8051 đã
cho thấy khả năng thích hợp với những ứng dụng mang tính điều khiển. việc xử
lí trên byte và các phép toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng
nhiều chế độ truy xuất dữ liệu nhanh trên ram nội. tập lệnh cung cấp một bản
tiện dụng của những lệnh số học 8 bit gồm cả lệnh nhân và lệnh chia. nó cung
cấp những hỗ trợ mở rộng on-chip dùng cho những biến 1 bit như là kiểu dữ liệu
riêng cho phép quản lí và kiểm tra bit trực tiếp trong điều khiển và những hệ
thống logic đòi hỏi xử lí luận lí.
Sau đây là bảng so sánh các IC trong họ MCS-51TM :
TÊN LINH BỘ NHỚ CHƯƠNG BỘ NHỚ DỮ LIỆU TIMER
KIỆN TRÌNH ON CHIP ON CHIP
8051 4 KB MROM 128 Bytes 2
8031 0 KB 128 Bytes 2
8751 4 KB EPROM 128 Bytes 2
8951 4 KB Flash ROM 128 bytes 2
8052 8 KB MROM 256 Bytes 3
8032 0 KB 256 Bytes 3
8752 8 KB EPROM 256 Bytes 3
8952 8 KB Flash ROM 256 Bytes 3

2. VI ĐIỀU KHIỂN AT89C52


Do họ MCS-51TM đã trở thành chuẩn công nghiệp nên có rất nhiều hãng
sản xuất ra nó, điển hình là ATMEL Corporation. Hãng này đã kết hợp rất nhiều
tính năng dựa trên nền tảng kỹ thuật của mình để tạo ra các vi điều khiển tương
thích với MCS-51TM nhưng mạnh mẽ hơn.
AT89C52 là một vi điều khiển 8 bit do ATMEL sản xuất, chế tạo theo
công nghệ CMOS, có chất lượng cao, công suất thấp với 8 KB Flash (flash
programmable and erasable read only memory). Thiết bị này được chế tạo bằng
cách sử dụng kỹ thuật bộ nhớ không bốc hơi mật độ cao của ATMEL và tương
thích với chuẩn công nghiệp MCS-51TM về tập lệnh và các chân ra. Flash on-chip
cho phép bộ nhớ lập trình được lập trình trong hệ thống bởi một lập trình viên
bình thường. Bằng cách nối 1 CPU 8 bit với một Flash trên một chip đơn,
AT89C52 là một vi điều khiển mạnh (có công suất lớn), cung cấp một sự linh
động cao và giải pháp về giá cả đối với nhiều ứng dụng vi điều khiển.
Các đặc điểm chủ yếu của AT89C52 :
 Tương thích hoàn toàn với họ MCS-51TM của Intel.
 Bộ nhớ chương trình 8K Byte thuộc loại Flash Memory.Độ bền : 1000 lần
ghi/xóa.
 Tần số hoạt động : 0 Hz đến 24 MHz.3 chế độ khóa bộ nhớ.
 256 x 8-Bit RAM nội.32 đường I/O lập trình được (4 port).
 3 timer/counter 16-bit.8 nguồn ngắt.
 Chế độ hạ nguồn và chế độ lười tiêu tốn công suất thấp.
2.1. Cấu tạo chân
Tùy theo khả năng (về kinh tế, kỹ thuật, …) mà các nhà sản xuất các sản
phẩm ứng dụng có thể chọn một trong 3 kiểu chân do ATMEL đưa ra.

2.2. Sơ đồ khối
2.3. Mô tả chức năng của các chân

Vcc : áp nguồn.
GND : đất.
Port 0 : là một port I/O 8-bit hai
chiều, cực máng hở. Khi xuất ra,
mỗi chân port có thể lái 8 đầu vào
TTL. Nếu ghi các mức 1 ra các
chân port thì các chân này có thể
dùng như các đầu vào trở kháng
cao.
Port 0 cũng có thể được cấu hình
thành một bus multiplex giữa địa
chỉ thấp và dữ liệu khi truy cập
chương trình hay dữ liệu từ bên
ngoài. Trong chế độ này, port 0 có
điện trở pullup nội.
Port 0 cũng nhận các byte mã
chương trình khi lập trình Flash và
xuất ra mã chương trình khi kiểm
tra, khi đó cần có điện trở pullup bên ngoài.
Port 1 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 1 có thể
lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên
do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập, những
chân của port 1 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Hơn nữa, P1.0 và P1.1 có thể được dùng như là đầu vào bộ đếm
timer/counter 2 bên ngoài (P1.0/T2) và xung kích (P1.1/T2EX).
Port 1 cũng nhận những byte địa chỉ thấp trong khi lập trình Flash và
trong khi kiểm tra Flash .
Port 2 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 2 có thể
lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên
do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập, những
chân của port 2 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Port 2 phát byte địa chỉ cao trong khi nhận lệnh từ bộ nhớ chương trình
ngoài và trong lúc truy xuất đến bộ nhớ dữ liệu ngoài mà có sử dụng địa chỉ 16
bit (MOVX A, @DPTR). Trong ứng dụng này nó dùng điện trở nội kéo lên
mạnh khi xuất 1. Khi truy xuất bộ nhớ dữ liệu ngoài dùng địa chỉ 8 bit, port 2 sẽ
phát nội dung của thanh ghi P2
Port 2 cũng nhận byte địa chỉ cao trong lúc lập trình Flash và trong lúc kiểm
tra Flash.
Port 3 : là một port I/O 8-bit hai chiều có pullup nội. Đầu ra port 3 có thể
lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên
do có điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập, những
chân của port 3 bị kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
Port 3 cũng có những chức năng của họ MSC-51 được iệt kê ở
bảng sau:
BIT TÊN ĐỊA CHỈ BIT CHỨC NĂNG THAY THẾ
P3.0 RXD B0H Nhận dừ liệu cho port nối tiếp
P3.1 TXD B1H Truyền dừ liệu cho port nối tiếp
P3.2 INT0 B2H Ngắt ngoài 0
P3.3 INT1 B3H Ngắt ngoài 1
P3.4 T0 B4H Ngõ vào từ bên ngoài cho timer/counter 0
P3.5 T1 B5H Ngõ vào từ bên ngoài cho timer/counter 1
P3.6 WR B6H Xung ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Xung đọc bộ nhớ dữ liệu ngoài
Port 3 cũng nhận vài tín hiệu điều khiển trong lúc lập trình Flash và trong
lúc kiểm tra Flash.
RST : là ngõ vào Reset. Khi ngõ này được đưa lên cao (trong ít nhất hai
chu kì máy), các thanh ghi bên trong AT89C51 được tải những giá trị thích hợp
để khởi động hệ thống.
ALE/PROG (Address Latch Enable) : ALE là xung xuất cho phép chốt byte
địa chỉ thấp khi truy cập bộ nhớ ngoài. Chân này còn là ngõ vào của xung lập
trình (PROG) khi lập trình Flash.
Trong hoạt động bình thường, ALE được phát xung với tần số 1/6 tần số dao
động on-chip và có thể được dùng như xung thời gian chuẩn bên ngoài. Tuy
nhiên, cần chú ý là một xung ALE sẽ bị mất khi truy cập bộ nhớ ngoài.
Có thể hủy bỏ chức năng của ALE bằng cách set bit 0 của thanh ghi ở vị trí
8EH. Một khi bit này được set, ALE chỉ tích cực khi có lệnh MOVX hoặc
MOVC. Nếu không có các lệnh này thì ALE ở mức cao. Việc set bit 0 của
thanh ghi ở vị trí 8EH không làm ảnh hưởng đến vi điều khiển khi truy cập bộ
nhớ ngoài.

PSEN (Program Store Enable) : PSEN là xung strobe báo hiệu việc đọc bộ
nhớ chương trình ngoài, PSEN tích cực hai lần (mức thấp) mỗi chu kì máy,
ngoại trừ hai xung PSEN bị mất khi truy xuất dữ liệu ngoài. Khi thi hành
chương trình trong RAM nội, PSEN sẽ ở mức thụ động (mức cao).
EA/VPP (External Access) : EA là ngõ vào để cho phép truy xuất bộ nhớ
chương trình từ bên ngoài khi được nối với GND. Khi EA được treo lên nguồn
VCC, chương trình sẽ được thực thi trong ROM nội. Chân này cũng nhận điện
áp 12v (VPP) trong khi lập trình Flash.
XTAL1 : Đầu vào của bộ khuếch đại dao động đảo và cũng là đầu vào đến
mạch tạo xung clock nội.
XTAL2 : Đầu ra của bộ khuếch đại dao động đảo.
2.4. Các thanh ghi chức năng (SFR-Special Funtion Reisters)
AT89C52 có 26 thanh ghi chức năng được thiết kế như là một thành phần
của RAM on-chip. Do đó mỗi thanh ghi có một địa chỉ của nó, nằm trong vùng
từ 80H đến FFH. Tuy nhiên, vùng này cũng là vùng bộ nhớ nên việc truy cập các
thanh ghi này thông qua các lệnh dùng định vị trực tiếp khác với việc truy cập
vùng nhớ dùng định vị gián tiếp.
Bảng vị trí các thanh ghi chức năng :
Chú ý là không phải tất cả các địa chỉ đều có các thanh ghi, những địa chỉ không
có thanh ghi này có thể không có trên chip. Đọc những địa chỉ này sẽ có những giá
trị ngẫu nhiên và ghi những giá tri này có những tác động không xác định trước.
Phần mềm của người dùng không nên ghi những giá trị 1 đến các vị trí này, bởi vì
chúng có thể được dùng trong tương lai. Trong trường hợp đó, giá trị của các bit
luôn là 0.
Ngoài những thanh ghi tương tự 8051, AT89C52 có thêm :
Các thanh ghi Timer 2 các bit điều khiển và trạng thái chứa trong thanh ghi
T2CON và T2MOD cho Timer 2. Cặp thanh ghi RCAP2H và RCAP2L là những
thanh ghi Capture/Reload trong chế độ capture 16 bit hay chế độ auto-reload 16
bit.

Ký hiệu Chức năng


TF2 Cờ tràn Timer 2, set khi Timer 2 tràn và phải được clear bằng phần
mềm. TF2 sẽ không set khi RCLK = 1 hoặc TCLK = 1.
EXF2 Cờ ngoài của Timer 2, set khi xảy ra capture hoặc reload do T2EX
xuống thấp và EXEN2 = 1. Nếu ngắt Timer 2 được kích hoạt, EXF2
= 1 sẽ làm CPU trỏ đến ISR của Timer 2. EXF2 phải được xóa bằng
phần mềm. EXF2 không gây nên ngắt trong chế độ đếm lên/xuống
(DCEN = 1).
RCLK Kích hoạt xung clock bộ thu. Khi set, các xung tràn Timer 2 sẽ là
xung clock cho bộ thu port nối tiếp trong mode 1 và 3. RCLK = 0
thì bộ thu port nối tiếp sẽ dùng các xung tràn của Timer 1.
TCLK Kích hoạt xung clock bộ phát. Khi set, các xung tràn Timer 2 sẽ là
xung clock cho bộ phát port nối tiếp trong mode 1 và 3. TCLK = 0
thì bộ phát port nối tiếp sẽ dùng các xung tràn của Timer 1.
EXEN2 Kích hoạt bên ngoài. Khi set, cho phép capture hay reload khi
T2EX xuống thấp (nếu Timer 2 không sử dụng cho port nối tiếp).
EXEN2 = 0 làm cho Timer 2 bỏ qua các sự kiện trên T2EX.
TR2 Khởi động/Dừng Timer 2. TR2 = 1 làm khởi động Timer 2.
C/T2 Bit lựa chọn timer hay counter. C/T2 = 0 : timer. C/T2 = 1 : counter
đếm sự kiện bên ngoài (kích cạnh xuống).
CP/RL2 Lựa chọn capture hay reload. CP/RL2 = 1: capture xảy ra khi T2EX
xuống thấp nếu EXEN2 = 1. CP/RL2 = 0 : reload xảy ra khi Timer
2 tràn hoặc khi T2EX xuống thấp nếu EXEN2 = 1. Nếu TCLK hay
RCLK = 1, bit này bị bỏ qua và timer bị ép vào chế độ reload khi
Timer 2 tràn.
Các thanh ghi ngắt tập các bit riêng lẻ cho phép ngắt chứa trong thanh
ghi IE. Thiết lập hai mức ưu tiên cho 6 nguồn ngắt bằng cách set các bit thanh
ghi IP.
2.5. Bộ nhớ dữ liệu
AT89C52 có 256 byte bộ nhớ RAM on-chip. Trong đó, 128 byte trên có
cùng địa chỉ với vùng thanh ghi chức năng nhưng có cấu tạo vật lý riêng biệt.
Khi một lệnh truy cập một vị trí nội có địa chỉ trên 7FH, chế độ địa chỉ nó
sử dụng sẽ báo cho CPU biết vùng địa chỉ nào nó cần truy cập : RAM hay SFR.
Các lệnh dùng địa chỉ trực tiếp sẽ truy cập vùng SFR. Ví dụ như lệnh sau đây sẽ
truy cập SFR ở địa chỉ 0A0H (port 2)
MOV 0A0H,#data
Lệnh dùng địa chỉ gián tiếp sẽ truy cập 128 byte trên của
RAM. Ví dụ như cũng truy cập địa chỉ 0A0H nhưng gián tiếp
thông qua R0.
MOV R0,#0A0H
MOV @R0,#data
Chú ý rằng các tác vụ của stack vốn đã sử dụng địa chỉ gián tiếp
nên vùng 128 byte trên của RAM rất tiện dụng để làm vùng stack.
2.6. Đặc tính bộ dao động
XTAL1 là đầu vào và đầu ra tương ứng của bộ khuếch đại đảo
được dùng làm bộ dao động nội on-chip. Có thể dùng thạch anh
hay bộ cộng hưởng ceramic đều được.
Để lái vi điều khiển từ nguồn xung clock bên ngoài, XTAL2 phải
được để trống trong khi XTAL1 nối đến nguồn lái. Không có yêu
cầu gì về duty cycle nhưng phải chú ý đến thời gian tối đa và tối thiểu của mức
điện áp cao cũng như mức điện áp thấp.
2.7. Chế độ lười
Trong chế độ lười, CPU rơi vào trạng thái “ngủ” trong khi tất cả thiết bị ngoại vi
vẫn còn tích cực. Chế độ này được tạo ra bằng phần mềm. Nội dung của RAM on-
chip và giá trị của các SFR vẫn được giữ nguyên. Kết thúc chế độ lười bằng cách
kích hoạt một ngắt hoặc reset phần cứng.
Chú rằng khi kết thúc chế độ lười bằng cách reset phần cứng thì thông thường vi
điều khiển sẽ gọi lại chương trình mà nó vừa thoát, cho đến hai chu kỳ máy trước
khi thuật toán reset chiếm quyền điều khiển. Phần cứng cấm truy cập RAM nội
trong trường hợp này nhưng không cấm truy cập đến các chân port, do đó có thể
xảy ra những trường hợp không mong muốn. Để loại bỏ trường hợp này, lệnh ngay
sau lệnh gọi chế độ lười không nên là lệnh ghi port hay ghi bộ nhớ ngoài.
2.8. Chế độ hạ nguồn
Trong chế độ hạ nguồn, bộ dao động ngừng, và lệnh gọi hạ nguồn là lệnh cuối
cùng được thực thi. RAM on-chip và SFR duy trì giá trị của nó cho đến khi kết
thúc chế độ hạ nguồn.
Kết thúc chế độ hạ nguồn chỉ bằng một cách duy nhất : reset phần cứng. Reset sẽ
tạo lại giá trị cho SFR nhưng không thay đổi nội dung của RAM on-chip. Không
nên reset trước khi Vcc phục hồi mức điện áp thông thường của nó và phải giữ đủ
lâu để bộ dao động phục hồi và ổn định.
2.9. Trạng thái của một số chân trong chế độ lười và chế độ hạ
nguồn

IX. TẬP LỆNH CỦA 89C51:


AT89C51 có 255 lệnh chia thành các nhóm lệnh:
+ Nhóm lệnh chuyển dời
+ Nhóm lệnh số học
+ Nhóm lệnh logic
+ Nhóm lệnh chuyển điều khiển
Sau đây là tập lệnh cơ bản của vi xử lý AT89C51:
Các chỉ dẩn thiết lập lệnh
Rn : Thanh ghi R0 đến R7
Data : 8 bit địa chỉ vùng dữ liệu bên trong
@Ri : Định chỉ gián tiếp qua R0 hay R1
#data : Hằng số 8 bit
#data16 : Hằng số 16 bit
addr 16 : 16 bit địa chỉ đích
addr 11 : 11 bit địa chỉ đích
rel : Ofset 8 bit có dấu
bit : Bit được định địa chỉ trực tiếp
a) Nhóm lệnh xử lý số học :
ADD A,Rn (1 byte,1chu kỳ máy): (A) = (A)+(Rn)
ADD A,data (2;1) : (A) = (A) + (data)
ADD A,@Ri (1;1) : (A) = (A) + ((Ri))
ADD A,#data (2;1) : (A) = ( A) + #data
ADDC A,Rn (1;1) : (A) = ( A) + (C) +(Rn)
ADDC A,data ( 2;1) : (A) = (A) + (C) + (data)
ADDC A,@Ri (1;1) : (A) = (A) + ((Ri)) + (C)
ADDC A,#data ( 2;1) : (A) = (A) + (C) + #data
SUBB A,Rn (1;1) : (A) = (A) - (C)- (Rn)
SUBB A,data (2;1) : (A) = (A) - (C) -( data)
SUBB A,@Ri (1;1) : (A) =(A) -(C) -((Ri))
SUBB A,#data (2;1) : (A) = (A) - (C) - #data
INC A (1;1) : (A) = (A) +1
INC Rn (1;1) : (Rn) = (Rn) +1
INC data (2;1) : (data) = (data) +1
INC @Ri (1;1) : ((Ri)) =((Ri))+1
DEC A (1;1) : (A) =(A) – 1
DEC Rn (1;1) : (Rn) =(Rn) -1
DEC data (2;1) : (data) =(data) –1
DEC @Ri (1;1) : ((Ri)) =((Ri)) –1
INC DPTR (1;2) : (DPTR) =(DPTR) +1
MUL AB (1;4) : (A) = byte cao của (A) * (B)
(B) = byte thấp của (A)* (B)
DIV AB (1;4) : chia (A) cho (B) ,kết quả:
( A) = thương số
(B) = số dư
DA A (1;1) : hiệu chỉnh thập phân thanh ghi A
b) Nhóm lệnh luận lý:
ANL A,Rn (1;1) : (A) =(A) and (Rn)
ANL A,data (2;1) : (A) =(A) and (data)
ANL A,@Ri (1;1) : (A) = (A) and ((Ri))
ANL A,#data (2;1) : (A) = (A) and #data
ANL data,A (2;1) : (data) = (data) and (A)
ANL data,#data (3;2) : (data) =(data) and #data
ANL C,bit (2;2) : (C) =(C) and (bit)
ANL C, bit (2;2) : (C) =(C) and not (bit)
ORL A,Rn (1;1) : (A) = (A) or (Rn)
ORL A,data (2;1) : (A) = (A) or data
ORL A,@Ri (1;1) : (A) = (A) or ((Ri))
ORL A,#data (2;1) : (A) = (A) or #data
ORL data,A (2;1) : (data) = (data) or (A)
ORL data,#data(3;2) : (data ) = (data) or # data
ORL C,bit (2;2) : (C) = (C) or bit
ORL C,/bit (2;2) : (C) = (C) or not bit
XRL A,Rn (1;1) : (A) =(A) xor (Rn)
XRL A,data (2;1) : (A) = (A) xor (data)
XRL A,@Ri (1;1) : (A) = (A) xor ((Ri))
XRL A,#data (2;1) : (A) = (A) xor #data
XRL data,A (2;1) : (data) = (data) xor (A)
XRL data,#data(3;2) : (data) = (data) xor #data
SETB C (1;1) : (C) =1
SET bit (2;1) : (bit) = 1
CLR A (1;1) : (A) = 0
CLR bit (2;1) : (bit) =0
CLR C (1;1) : (C) = 0
CPL A (1;1) : (A) = not (A)
CPL C (1;1) : (C) = not (C)
CPL bit (2;1) : (bit) = not (bit)
RL A (1;1) : quay trái nội dung thanh ghi A
RLC A (1;1) : quay trái nội dung thanh ghi A
RR A (1;1) : quay phải nội dung thanh ghi A
RRC A (1;1) : quay phải nội dung thanh ghi A
qua cờ nhớ
SWAP A (1;1) : quay trái nội dung thanh ghi A
một nibble
c) Nhóm lệnh chuyển dữ liệu :
MOV A,Rn (1;1) : (A) =(Rn)
MOV A,data (2;1) : (A) = (data)
MOV A,@Ri (1;1) : (A) = ((Ri))
MOV A,#data (2;1) : (A) = #data
MOV Rn,A (1;1) : (Rn) = (A)
MOV Rn,data (2;2) : (Rn) = (data)
MOV Rn,#data (2;1) : (Rn) = #data
MOV data,A (2;1) :(data) = (A)
MOV data,Rn (2;2) : (data) = (Rn)
MOV data,data (3;2) : (data) = (data)
MOV data,@Ri (2;2) : (data) = ((Ri))
MOV data,#data (3;2) : (data) = #data
MOV @Ri,A (1;1) : ((Ri)) = (A)
MOV @Ri,data (2;2) : ((Ri)) = (data)
MOV @Ri,#data (2;1) : ((Ri)) = #data
MOV DPTR,#data16 (3;2) : (DPTR) = #data16
MOV C,bit (2;1) : (C) = (bit)
MOV bit,C (2;2) : (bit) = (C)
MOVC A,@A+DPTR (1;2) : (A) = ((A)+(DPTR))
MOVC A,@A+PC (1;2) : (A) = ((A)+(PC))
MOVX A,@Ri (1;2) : chuyển dữ liệu ngoài 8 bít
vào thanh ghi A .
MOVX A,@DPTR (1;2) : chuyển dữ kiệu ngoài 16 bit vào
thanh ghi A.
MOVX @Ri,A (1;2) : chuyển nội dung thanh ghi A ra dữ
liệu ngoài 8 bit địa chỉ.
MOVX @DPTR,A (1;2) : chuyển nội dung thanh ghi A ra dữ
liệu ngoài 16 bit địa chỉ.
PUSH data (2;2) : (SP) =(SP) +1
((SP)) = (data)
POP data (2;2) : (data) = ((SP))
(SP) = (SP) -1
XCH A,Rn (1;1) : trao đổi dữ liệu giữa thanh ghi Rn
và thanh ghi A.
XCH A,data (2;1) : trao đổi giửa thanh ghi A và data.
XCH A,@Ri (1;1) : trao đổi giữa thanh ghi A và một
dữ liệu gián tiếp.
XCHD A,@Ri (1;1) : trao đổi giữa nibble thấp
của thanh ghi A và nibble thấp của byte dữ liệu gián tiếp.
d) Nhóm lệnh chuyển điều khiển :
ACALL addr11 (2;2) : Gọi chương trình con dùng địa
chỉ tuyệt đối.
LCALL addr16 (3;2) : Gọi chươnhg trình con dùng địa chỉ dài.
RET (1;2) : Trở về từ lệnh gọi chương trình
con
RETI (1;2) :Trở về từ lệnh gọi ngắt
AJMP addr11 (2;2) : Nhảy tuyệt đối
LJMP addr16 (3;2) : Nhảy dài
SJMP rel (2;2) : Nhảy ngắn
JMP @A+DPTR (1;2) : Nhảy gián tiếp từ con trỏ dữ liệu
JZ rel (2;2) : Nhảy nếu A bằng 0
JNZ rel (2;2) : Nhảy nếu A không bằng không
JC rel (2;2) : Nhảy nếu cờ nhớ được đặt
JNC rel (2;2) : Nhảy nếucờ nhớ không được đặt
JB bit,rel (3;2) : Nhảy tương đối nếu bit trực tiếp được đặt
JNB bit,rel (3;2) : Nhảy nếu bit không được đặt
JBC bit, rel (3;2) : Nhảy tương đối nếu bit trực tiếp được
đặt rồi xóa bit
CJNE A,data,rel (3;2) : So sánh dữ liệu trực tiếp với A
và nhảy nếu không bằng
CJNE A,#data,rel (3;2) : So sánh dữ liệu ức thời với Avà nhảy nếu
không bằng
CJNE Rn,#data,rel (3;2) : So sánh dữ liệu tức thời với (Rn) và nhảy
nếu không bằng
CJNE @Ri,#data,rel (3;2) : So sánh dữ liệu tức thời với
dữ liệu gián tiếp và nhảy nếu không bằng
DJNZ Rn,rel (2;2) : Giảm thanh ghi Rn và nhảy nếu
không bằng không
DJNZ data,rel (3;2) : Giảm dữ liệu trực tiếp và nhảy
nếu không bằng
B. GIỚI THIỆU CÁC IC SỬ DỤNG TRONG ĐỀ TÀI

I. PPI 8255 ( Programing Peripheral Interface ):
II. U 1
3 4 4
3 3 D 0 P A 0 3
3 2 D 1 P A 1 2
3 1 D 2 P A 2 1
3 0 D 3 P A 3 4 0
2 9 D 4 P A 4 3 9
2 8 D 5 P A 5 3 8
2 7 D 6 P A 6 3 7
D 7 P A 7
5 1 8
3 6 R D P B 0 1 9
9 W R P B 1 2 0
8 A 0 P B 2 2 1
3 5 A 1 P B 3 2 2
6 R E S E T P B 4 2 3
C S P B 5 2 4
P B 6 2 5
P B 7
1 4
P C 0 1 5
P C 1 1 6
P C 2 1 7
P C 3 1 3
P C 4 1 2
P C 5 1 1
P C 6 1 0
P C 7
Cấu trúc tổng quát: 8 2 5 5

Điều khiển Nhóm A


nhóm A Port A PA0PA7

Bus data
D0D7
Đệm Nhóm A PC4P C7
data ½ port C

Nhóm B
½ port C PC0PC3
RD
Kiểm
WR
soát đọc
CS
ghi
RST
A1 Điều khiển Nhóm B
nhóm B Port B PB0PB7
A2

- Bộ đệm truyền data : Bộ đệm 8 bit , hai chiều , ba trạng thái dùng để giao tiếp
bus data 8255 với bus data CPU.
- Bộ kiểm soát đọc ghi : kiểm soát tất cả sự truyền đạt bên trong và ngoài của từ
điều khiển và data nhận tín hiệu A0,A1 từ bus địa chỉ , các tín hiệu RD ,WR,
CS, RST từ bus địa chỉ phát ra các lệnh cho hai nhóm A và B

WR
- Khối từ điều khiển : Để điều khiển hoạt động hai nhóm A và B ta phải xuất từ
điều khiển đến thanh ghi điều khiển 8255 , từ điều khiển bao gồm các thông tin
về chọn mode , set bit ,reset bit… Nó sẽ khỏi động cấu hình hoạt động cho
8255, thanh ghi điều khiển chỉ ghi vào chứ không đọc ra được.
CS
- Các port : 8255 gồm 3 port , ký hiệu A,B,C, mỗi port gồm 8 bit có thể lập trình
được để xác định chế độ hoạt động thích hợp, các port A và B gồm bộ đệm
chốt ngõ ra 8 bit và chốt ngõ vào 8 bit. Port C có chốt ngõ ra 8bit và đệm
không chốt ngõ vào 8 bit , port C được phân ra làm hai phần : 4 bit cao
PC4PC7 cùng với port A hình thành nhóm A, bốn bit thấp PC0PC4 cùng
port B hình thành nhóm B .
- Các tín hiệu điều khiển :
+ CS :chọn chip , tích cực mức 0
PB0 + RD :đọc data , tích cực mức 0
P + WR : ghi data, tích cực mức 0
+ RST : Reset, xóa các thanh ghi điều điều khiển và các port A,
B7 B ,C về mode nhập , tích cực mức 1.
+ Chọn mode:
A1 A0 port
0 0 A
RTS 0 1 B
1 0 C
1 1 từ điều khiển
- Nguồn cung cấp : 5V
 8255 có nhiều mode làm việc , tuy nhiên mode là mode được sử dụng phổ
biến trong các ứng dụng của nó, đây là mode xuất nhập đơn giản : các port có thể được
lập trình là ngõ vào hay ngõ ra.

D7 D6 D5 D4 D3 D2 D1 D0

PCPC3
A0 0:out put, 1: input
A1
Port B
RD 0:output, 1: input

Mode nhóm B:
O:mode 0, 1:mode 1
Chọn mode
0: BSR mode PC4PC7
1: I/O mode 0:output,1 : input

Port A
0:output, 1: input

WR Mode nhóm A
00:mode0,01:mode 1
CS

 Khởi động 8255:


Để hoạt động đầu tiên ta phải khởi động 8255: khởi động 8255 là
ghivào từ điều khiển một giá trị thích hợp để chọn mode làm việc , qui định ngõ
vào , ngõ ra cho các port.
Từ điều khiển : ( hình vẽ trên )
PB0
II. RAM 62256:
P Bộ nhớ Ram thường được dùng trong các thiết bị tính để cất giữ các kết
quả trung gian hay kết quả tạm thời trong khi thực hiện các chương trình điều
B7
khiển.
- Dung lượng :32kbyte.
- Từ D0 D7 :Data
- RTS
Từ A0A14 : Địa chỉ
- Chân /CE: cho phép RAM xuất nhập data .
- Chân /WE =0 : cho phép RAM ghi data
- Chân /OE = 0 : cho phép RAM xuất data.
 Sơ đồ chân linh kiện :
U6
10 11
9 A0 D1 12
8 A1 D2 13
7 A2 D3 15
6 A3 D4 16
5 A4 D5 17
4 A5 D6 18
3 A6 D7 19
25 A7 D8
24 A8 28
21 A9 VCC
23 A10 27
2 A11 WE
26 A12 22
A0 1 A13
A14
OE

A1
14
20 GND
CE
RAM 62256

III. IC 75176:
Là IC chuyển đổi tín hiệu điện áp so với mass thành tín hiệu điện áp vi sai .
 Sơ đồ chân linh kiện :
4 1
2 D I R O 6
3 R E A 7
D E B
8
+VC C
WR 75176
IV. MAX 232:
CS Là vi mạch chuyển đổi tín hiệu theo chuẩn RS232 sang chuẩn TTL và ngược lại.
Trong thực tế có rất nhiều vi mạch chuyển đổi từ RS_232 sang TTL và ngược
lại. Thế nhưng MAX232 có ưư điểm hơn các vi mạch khác và rất phổ biến hiện nay, ưu
điểm của MAX 232 là chỉ sử dụng nguồn đơn cực +5V.
Bên trong MAX 232 có một bộ nhân đôi điện áp để tạo ra điện áp +10V và một
bộ tạo ra điện áp âm. Như vậy nó tạo ra bộ nguồn +/10V,đáp ứng được mức điện áp cho
RS_232.
 Sơ đồ chân linh kiện :
13 12
8 R 1 IN R 1O U T 9
11 R 2 IN R 2O U T 14
PB0 10 T 1 IN T1O U T 7
T 2 IN T2O U T
P
1
3 C +
C 1-
B7 4
C 2+
5
2 C 2-
6 V +
V -
Giải thích tín hiệu : M A X232
RTS
 R2IN: ngõ vào RS_232 R2OUT: ngõ ra TTL
 T2OUT: ngõ ra RS_232T2IN: ngõ vào TTL
 R1IN: ngõ vàoRS_232R1OUT: ngõ ra TTL
 T1OUT : ngõ ra RS_232T1 IN :ngõ vào TTL
 C1+, C1: tụ C1= 10F bên ngoài
 C2+, C2: tụ C2= 10F bên ngoài
 +V: nguồn +10V
 V: nguồn 10V
 VCC,GND: nguồn cung cấp đơn cực +5V
V. IC 74573 :
Là IC chốt có ngõ ra 3 trạng thái.
 sơ đồ chân và bảng sự thật :
A0
A1
2 19
3 D 1 Q 1 18
4 D 2 Q 2 17 OC C Input (D) Output (Q)
5 D 3 Q 3 16
D 4 Q 4 L H H H
6 15
D 5 Q 5 L H L L
7 14
8 D 6 Q 6 13 L L X Q1
9 D 7 Q 7 12 H X X Z
D 8 Q 8
11
1 C
O C

VI. IC 74138
S N 7 :4 A S 5 7 3

Là IC giải mã 3 sang 8. Có ngõ ra tích cực mức thấp


 Sơ đồ chân và bảng sự thật :

1 15
2 A Y 0 14
3 B Y 1 13
C Y 2 12
Y 3 11
6 Y 4 10
4 G1 Y 5 9
5 G 2A Y 6 7
G 2B Y 7
74LS138
INPUTS
OUTPUTS
ENABLE SELECT
G1 G2 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
X H X X X H H H H H H H H
L X X X X H H H H H H H H
H L L L L L H H H H H H H
H L L L H H L H H H H H H
H L L H L H H L H H H H H
H L L H H H H H L H H H H
H L H L L H H H H L H H H
H L H L H H H H H H L H H
H L H H L H H H H H H L H
H L H H L H H H H H H H L

VII . IC74LS393.
U ?A
1 3
A Q A 4
Q B 5
2 Q C 6
C LR Q D
74LS393

IC này có 2 kênh 1, mỗi kênh là 1 bộ đếm 4 bit, được dùng làm bộ đếm,
chia tần số, các ứng dụng khác. Mỗi bộ đếm chứa 4 Fiplop bên trong. Các
Fiplop này được kích cạnh xuống vào ngõ A.
C. Chương trình điều khiển
PORTA1 EQU 4000H
PORTB1 EQU 4001H
PORTC1 EQU 4002H
CTRWL1 EQU 4003H
AL EQU 30H
AH EQU 31H
BL EQU 32H
BH EQU 33H
XL EQU 34H
XH EQU 35H
YL EQU 36H
YH EQU 37H
ZL EQU 38H
ZH EQU 39H
TEMP EQU 40H
KPL EQU 41H
KPH EQU 42H
EORL EQU 43H
EORH EQU 44H
DUTY_CYCLE EQU 45H
PULSL EQU 46H
PULSH EQU 47H
PULFL EQU 48H
PULFH EQU 49H
CONSTN EQU 50H
CONSTD EQU 51H
TEMP2L EQU 52H
TEMP2H EQU 53H
TEMP3L EQU 54H
TEMP3H EQU 55H
CL EQU 56H
CH EQU 57H
CBC EQU 58H
DU EQU 59H
TEMP4L EQU 60H
SCKP1 EQU 61H
SCKP2 EQU 62H
LD1L EQU 63H
LD1H EQU 64H
CDAIT EQU 65H
CDAIC EQU 66H
SLCATT EQU 67H
SLCATC EQU 68H
TGCATT EQU 69H
TGCATC EQU 6AH
ORG 0000H
JMP MAIN
ORG 001BH
LJMP ISR_TOKP
ORG 0030H
MAIN: CALL NAP_DULIEU
CALL INIT
SETB TF1
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;DIEU KHIENDONG CO, DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
AGAIN: CALL PWM
CALL DISPLAY
JNB 03H,AGAIN
CLR ET1
MOV A,#80H
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; NGAT DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOV DPTR,#CTRWL1
MOVX @DPTR,A
INC 3EH
MOV A,3EH
CJNE A,SLCATT,AGAIN4
AGAIN4: JNC AGAIN3
MOV A,3EH
MOV B,#10
DIV AB
SWAPA
ORL A,B
MOV 3CH,A
MOV 6EH,#100
AGAIN1: CALL PWM
CALL DISPLAY
MOV 6FH,#100
DJNZ 6FH,$
DJNZ 6EH,AGAIN1
MOV DPTR,#CTRWL1
MOV A,#02H
MOVX @DPTR,A
MOV A,#03H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; DONG DAO CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MOV A,#90H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
CLR 03H
SETB ET1
JMP AGAIN
AGAIN3: MOV A,#80H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
CALL PWM
CALL DISPLAY
SJMP AGAIN3
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
INIT: MOV TMOD,#11H
MOV TH1,#HIGH(-10000)
MOV TL1,#LOW(-10000)
SETB TR1
MOV IE,#88H
MOV A,#100
MOV B,#24
DIV AB
CLR 00H
CLR 01H
CLR 02H
CLR 03H
CLR 10H
CLR 11H
CLR 12H
CLR 13H
CLR 14H
CLR 15H
SETB 30H
CLR 31H
CALL DKD
MOV 5AH,#1
MOV 5BH,#0
MOV 5CH,#0
MOV 5DH,#0
MOV 5EH,#0
MOV 5FH,#0
MOV 7CH,#0
MOV 7DH,#2 ;VI TRI LED TRUY
XUAT
MOV 7EH,#0
MOV 7FH,#0
MOV 3CH,#0
MOV 3EH,#0
MOV DUTY_CYCLE,#0
MOV 3DH,#1
MOV 4AH,#40H
MOV 4BH,#30H
MOV 4CH,#20H
MOV 4DH,#10H
MOV 4EH,#60H
MOV 4FH,#50H
MOV R0,#3AH
MOV R1,#4AH
MOV R3,#0
MOV CONSTN,A
MOV CONSTD,B
MOV PULSL,CDAIT
MOV PULSH,CDAIC
MOV PULFL,#00H
MOV PULFH,#00H
MOV KPL,#1
MOV KPH,#0
MOV A,#92H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV A,#05H
MOVX @DPTR,A
MOV A,#07H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
MOV A,#03H
MOVX @DPTR,A
MOV A,#02H
MOVX @DPTR,A
MOV A,#90H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; CT NGAT ISR_TOKP
;DOC XUNG,TINH TOAN DUTY_CYCLE
;CHU KI NGAT 10mS
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ISR_TOKP: CLR TR1
MOV TL1,#LOW(-10000)
MOV TH1,#HIGH(-10000)
SETB TR1
CALL DOC_XUNG
MOV PULFL,R6
MOV PULFH,R7
MOV XL,PULSL
MOV XH,PULSH
MOV YL,PULFL
MOV YH,PULFH
CALL SUBB16
MOV EORL,ZL
MOV EORH,ZH
MOV AL,EORL
MOV AH,EORH
MOV BL,#0
MOV BH,#0
CALL COMPAB
JNB 01H,EXIT7
JMP LABEL
EXIT7: LJMP EXIT2
;LENH THUC HIEN KHI A>B
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;TEMP2:=TEMP2H:TEMP2L:=E[N]*KP
LABEL: MOV XL,EORL
MOV XH,EORH
MOV YL,KPL
MOV YH,KPH
CALL MUL_16
MOV TEMP2L,ZL
MOV TEMP2H,ZH
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;(CONST:=CONSTD:CONSTN:=100/(Umax=24))*TEMP2
MOV XL,ZL
MOV XH,ZH
MOV YL,CONSTN
MOV YH,#0
CALL MUL_16
MOV TEMP3L,ZL
MOV TEMP3H,ZH
MOV XL,TEMP2L
MOV XH,TEMP2H
MOV YL,CONSTD
MOV YH,#0
CALL MUL_16
MOV R6,ZL
MOV R7,ZH
MOV B,#24
CALL DIV_16_8
MOV XL,R6
MOV XH,R7
MOV YL,TEMP3L
MOV YH,TEMP3H
CALL ADD16
;TRUONG HOP TREN TINH VOI KP=(1....9)
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;DUOI DAY SE TINH THEM CHO SO CHIA CUA KP
MOV CL,#1
MOV CH,#0
MOV XL,ZL
MOV XH,ZH
MOV CBC,SCKP1
CALL TG_DUNG
MOV CL,#1
MOV CH,#0
MOV XL,ZL
MOV XH,ZH
MOV CBC,SCKP2
CALL TG_DUNG
MOV DUTY_CYCLE,ZL
MOV AL,DUTY_CYCLE
MOV AH,#0
MOV BL,#50
MOV BH,#0
CLR 01H
CALL COMPAB
CLR 00H
CLR 02H
JNB 01H,LABEL2
MOV DUTY_CYCLE,LD1T
CLR 01H
LABEL2: MOV R5,DUTY_CYCLE
CJNE R5,#7,STOP
STOP: JNC EXIT2
MOV DUTY_CYCLE,#0
CLR ET1
SETB 03H
JMP EXIT4
CLR 01H
EXIT2: JNB 02H,EXIT3
;LENH THUC HIEN KHI A<B
MOV DUTY_CYCLE,#0
CLR 02H
EXIT3: JNB 00H,EXIT4
;LENH THUC HIEN KHI A=B
MOV DUTY_CYCLE,#0
CLR 00H
EXIT4: MOV R7,#0
MOV R6,DUTY_CYCLE
ACALL BINTOBCD
CALL CDL
RETI
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON DOC_XUNG
;DOC XUNG TU PORTA,B CUA 8255
; NGO RA PC1,PC2,PC3 DIEU KHIEN XOA,CHOT XUNG KHI LAY XUNG
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DOC_XUNG: MOV A,#04H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV A,#06H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV DPTR,#PORTA1
MOVX A,@DPTR
MOV R6,A
MOV A,#05H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
MOV DPTR,#PORTB1
MOVX A,@DPTR
MOV R7,A
MOV A,#07H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
RET
;*****************************************************************
;CHUONG TRINH CON DIEU RONG XUNG
; CHU KI DIEU RONG T= 200*R3uS
; T1\T*100= DUTY_CYCLE
;THOI GIAN THUC THI LA 1324uS
;*****************************************************************
PWM: MOV R2, DUTY_CYCLE
CJNE R2,#01H,MAIN_L2
MAIN_L2: JC MAIN_L3
MOV A,#01H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
ACALL DELAY
MAIN_L3: MOV A,#100
SUBB A,DUTY_CYCLE
MOV R2,A
CJNE R2,#01H,MAIN_L4
MAIN_L4: JC MAIN_L5
MOV A,#00H
MOV DPTR,#CTRWL1
MOVX @DPTR,A
ACALL DELAY
MAIN_L5: RET
;*****************************************************************
DELAY: MOV R3,#5
DELAY_L1: DJNZ R3,DELAY_L1
DJNZ R2,DELAY
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Chuong trinh so sanh 2 so 16 bit
; A=AHAL B=BHBL
; IF A>B THEN 00 =1
; IF A<B THEN 01 =1
; IF A=B THEN 02 =1
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
COMPAB: MOV A,AH
CJNE A,BH,BIGGER
MOV A,AL
CJNE A,BL,BIGGER
SETB 00H ; A=B
JMP EXIT
BIGGER: JC SMALLER
SETB 01H
JMP EXIT
SMALLER: JNC EXIT
SETB 02H
EXIT: RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;Chuong trinh cong 2 so 16 bit
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X+Y
; Z=ZH_ZL
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ADD16: MOV A,XL
ADD A,YL
MOV ZL,A
MOV A,XH
ADDC A,YH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH TRU HAI SO NGUYEN 16 BIT
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X-Y
; Z=ZH_ZL
;*****************************************************************
SUBB16: MOV A,XL
SUBB A,YL
MOV ZL,A
MOV A,XH
SUBB A,YH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH NHAN HAI SO NGUYEN 16 BIT
;INPUT X=XH_XL
; Y=YH_YL
;OUT PUT Z=X*Y
; Z=ZH_ZL
;*****************************************************************
MUL_16: MOV A,XL
MOV TEMP,A
MOV B,YL
MUL AB
MOV ZL,A
MOV A,YL
XCH A,B
XCH A,XH
MUL AB
ADD A,XH
MOV XH,A
MOV A,XH
MOV A,YH
MOV B,TEMP
MUL AB
ADD A,XH
MOV ZH,A
RET
;*****************************************************************
;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT
;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B
;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU
;*****************************************************************
DIV_16_8: PUSH 02H
PUSH ACC
MOV R2,#16
CLR A
DIVIDE: XCH A,R6
CLR C
RLC A
XCH A,R6
XCH A,R7
RLC A
XCH A,R7
RLC A
CJNE A,B,NOT_EQUAL
SJMP A_GREATER_EQ_B
NOT_EQUAL: JC BELOW
A_GREATER_EQ_B:
SUBB A,B
XCH A,R6
ORL A,#1
XCH A,R6
BELOW: DJNZ R2,DIVIDE
XCH A,B
POP ACC
POP 02H
RET
;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** ***
;CT CON DELAY 1000US, DUNG TIMER 0
;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** ***
DELAY1: MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** **
; CTC BINTOBCD
; CHUYEN DOI TU SO NHI PHAN 16 BIT (<9999) SANG SO BCD
;INPUT : R7:R6 = SO NHI PHAN 16 BIT
;OUTPUT: R7:R6 = SO BCD, R7:R6=NGHIN,TRAM ,CHUC ,DON VI
; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** **
BINTOBCD:
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV_16_8
PUSH B
MOV B,#10
ACALL DIV_16_8
PUSH B
MOV B,#10
MOV A,R6
DIV AB
PUSH B
SWAP A
POP B
ORL A,B
MOV R7,A
POP ACC
SWAP A
POP B
ORL A,B
MOV R6,A
POP B
POP ACC
RET
;*****************************************************************
;CT CON CDT,CDC,XUAT PHUC VU XUAT LED
;*****************************************************************
CDT: MOV A,@R0
ANL A,#0FH
RET
CDC: MOV A,@R0
SWAP A
ANL A,#0FH
RET
XUAT: ORL A,@R1
MOV P1,A
RET
;*****************************************************************
;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT
;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B
;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU
;KET QUA SAI SO(O SO DU B) DOI VOI SO LE LON HON 128
;*****************************************************************
DIV_16_81: PUSH ACC
MOV A,B
JNB ACC.7,NH128
JNB ACC.0,EVEN
INC A
CJNE A,#0,EVEN
MOV A,#0FEH
EVEN: MOV B,#2
DIV AB
MOV B,A
MOV TEMP4L,A
CALL DIV_16_8
MOV DU,B
MOV B,#2
CALL DIV_16_8
MOV A,B
JZ LAMT1
MOV A,TEMP4L
ADD A,DU
MOV B,A
LAMT1: POP ACC
JMP EXIT5
NH128: CALL DIV_16_8
POP ACC
EXIT5: RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON TG_DUNG
;Chuong trinh tinh (A/B)*C=A1*C+B1*C/B=A1*C+A2*C+E(sai so) (C<B)
;INPUT: A=XL:XH, B=B, C:YL:YH
;OUTPUT: PHAN NGUYEN:ZL:ZH, PHAN DU B
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TG_DUNG: MOV R6,XL
MOV R7,XH
MOV B,CBC
CALL DIV_16_81
MOV XL,R6
MOV XH,R7
MOV TEMP3L,B
MOV YL,CL
MOV YH,CH
CALL MUL_16
MOV TEMP2L,ZL
MOV TEMP2H,ZH
MOV XL,TEMP3L
MOV XH,#0
MOV YL,CL
MOV YH,CH
CALL MUL_16
MOV R6,ZL
MOV R7,ZH
MOV B,CBC
CALL DIV_16_81
MOV XL,R6
MOV XH,R7
MOV TEMP3H,B
MOV YL,TEMP2L
MOV YH,TEMP2H
CALL ADD16
MOV B,TEMP3H
RET
CDL: MOV 3AH,R6
MOV 3BH,R7
RET
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;CT CON HIEN THI CHIEU DAI KHI CAT
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DISPLAY: MOV A,3DH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,ELSE
CALL CDC
CALL XUAT
INC R0
JMP BQ1
ELSE: CALL CDT
CALL XUAT
BQ1: INC R1
INC 3DH
MOV A,3DH
CJNE A,#7,ELSE1
MOV 3DH,#1
MOV R0,#3AH
MOV R1,#4AH
ELSE1: RET
DKD: CLR 26H
CLR 25H
CLR 24H
CLR 23H
CLR 22H
CLR 21H
MOV 7AH,#200
MOV 7BH,#200
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
CHUONG TRINH CON NAP XUAT DU LIEU
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
NAP_DULIEU: NOP
QUETPHIM: MOV R2,#100
BACK0: JB P2.2,PHIM_1
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
; TANG GIA TRI CAC LED(3->6) : 0 ->9->0
;TANG GIA TRI CAC LED(2) : 0 ->4->0
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
DJNZ R2,BACK0
MOV A,7DH
ADD A,#59H
MOV R0,A
INC @R0
MOV A,@R0
CJNE A,#10,$+7
JC $+4
MOV @R0,#0
CJNE R0,#5BH,$+10
CJNE A,#5,$+7
JC $+4
MOV @R0,#0
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 6 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_1: JNB 26H,QLED6ON
MOV A,5FH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED6OFF
CLR 26H
MOV 7BH,#200
QLED6ON: MOV A,5FH
ORL A,#40H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#6,QLED6OFF
DJNZ 7AH,QLED6OFF
MOV 7AH,#200
SETB 26H
QLED6OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;GIAM GIA TRI CAC LED(3->6) : 9 ->0->9
;GIAM GIA TRI CAC LED(2) : 4 ->0->4
;XUAT LAI DATA DA NHAP THEO THU TU GIAM DAN THEO TUNG
CHE ;DO
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK1: JB P2.3,PHIM_2
DJNZ R2,BACK1
MOV A,7DH
ADD A,#59H
MOV R0,A
DEC @R0
MOV A,@R0
CJNE A,#255,$+5
MOV @R0,#9
CJNE R0,#5BH,$+8
CJNE A,#255,$+5
MOV @R0,#4
MOV A,7DH
CJNE A,#2,$+7
JNB 30H,$+4
CALL XUATDATA
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 5 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_2: JNB 25H,QLED5ON
MOV A,5EH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED5OFF
CLR 25H
MOV 7BH,#200
QLED5ON: MOV A,5EH
ORL A,#30H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#5,QLED5OFF
DJNZ 7AH,QLED5OFF
MOV 7AH,#200
SETB 25H
QLED5OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHON LED TU PHAI SANG TRAI : 6->2->6
;LED DUOC CHON NHAP NHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK2: JB P2.4,PHIM_3
DJNZ R2,BACK2
DEC 7DH
CALL DKD
MOV A,7DH
CJNE A,#2,$+8
MOV 5AH,#1
SETB 30H
JMP $+5
MOV 5AH,#0
CLR 30H
MOV A,7DH
CJNE A,#1,$+5
MOV 7DH,#6
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED 4 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_3: JNB 24H,QLED4ON
MOV A,5DH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED4OFF
CLR 24H
MOV 7BH,#200
QLED4ON: MOV A,5DH
ORL A,#20H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#4,QLED4OFF
DJNZ 7AH,QLED4OFF
MOV 7AH,#200
SETB 24H
QLED4OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHON LED TU TRAI SANGPHAI : 2->6->2
;LED DUOC CHON NHAP NHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK3: JB P2.5,PHIM_4
DJNZ R2,BACK3
INC 7DH
CALL DKD
MOV A,7DH
CJNE A,#2,ST11
MOV 5AH,#1
SETB 30H
ST11: MOV 5AH,#0
CLR 30H
MOV A,7DH
CJNE A,#7,ST
MOV 7DH,#2
ST: NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED3 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_4: JNB 23H,QLED3ON
MOV A,5CH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED3OFF
CLR 23H
MOV 7BH,#200
QLED3ON: MOV A,5CH
ORL A,#10H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#3,QLED3OFF
DJNZ 7AH,QLED3OFF
MOV 7AH,#200
SETB 23H
QLED3OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;LUU GIA TRI CAN NAP THEO TUNG CHE DO
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK4: JB P2.6,PHIM_5
DJNZ R2,BACK4
INC 5AH
MOV A,5AH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,$+8
MOV 5AH,#0
CLR 30H
JMP $+7
MOV 5AH,#1
SETB 30H
CALL NAPDATA
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED2 : NHAP NHAYKHI DUOC CHON
; : KHONG NHAP NHAY KHI DUOC KHONG CHON
; CHI DINH CHE DO TU : 0->4
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
PHIM_5: JNB 22H,QLED2ON
MOV A,5BH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED2OFF
CLR 22H
MOV 7BH,#200
QLED2ON: MOV A,5BH
ORL A,#60H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#2,QLED2OFF
DJNZ 7AH,QLED2OFF
MOV 7AH,#200
SETB 22H
QLED2OFF: MOV R2,#100
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
; KET HOP VOI LED1=1 THOAT KHOI CHUONG TRINH NHAP DATA
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
BACK5: JB P2.7,THOAT
DJNZ R2,BACK5
INC 7FH
MOV A,7FH
MOV B,#2
DIV AB
MOV A,B
CJNE A,#0,$+8
MOV 7FH,#0
CLR 31H
JMP $+5
MOV 7FH,#1
SETB 31H
NOP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;HIEN THI LED1 : GOM 2 GIA TRI (0,1)
; 0: NAP GIA TRI ,0->1 :LUU GIA TRI
; 1:KET HOP VOI PHIM 5 XEM DATA DA NHAP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
THOAT: JNB 21H,QLED1ON
MOV A,5AH
ORL A,#00H
MOV P1,A
ACALL DELAY1
DJNZ 7BH,QLED1OFF
CLR 21H
MOV 7BH,#200
QLED1ON: MOV A,5AH
ORL A,#50H
MOV P1,A
ACALL DELAY1
MOV A,7DH
CJNE A,#1,QLED1OFF
DJNZ 7AH,QLED1OFF
MOV 7AH,#200
SETB 21H
QLED1OFF: JNB 30H,$+3
JMP $+4
JMP QUETPHIM
JNB 31H,TTQP1
CLR 30H
CLR 31H
MOV 7EH,#0
MOV 7FH,#0
JMP $+3
TTQP1: JMP QUETPHIM
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHUONG TRINH CON NHAP DATA
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
NAPDATA: MOV A,5BH
CJNE A,#0,NAPDATA0
MOV A,5EH
SWAP A
ORL A,5FH
MOV LENGTHL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV LENGTHH,A
NAPDATA0: MOV A,5BH
CJNE A,#1,NAPDATA1
MOV A,5EH
SWAP A
ORL A,5FH
MOV TGCCL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV TGCCH,A
NAPDATA1: MOV A,5BH
CJNE A,#2,NAPDATA2
MOV A,5EH
SWAP A
ORL A,5FH
MOV SLCCL,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV SLCCH,A
NAPDATA2: MOV A,5BH
CJNE A,#3,NAPDATA3
MOV A,5EH
SWAP A
ORL A,5FH
MOV SCKP1,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV SCKP2,A
NAPDATA3: MOV A,5BH
CJNE A,#4,NAPDATA4
MOV A,5EH
SWAP A
ORL A,5FH
MOV LD1L,A
MOV A,5CH
SWAP A
ORL A,5DH
MOV LD1H,A
NAPDATA4: NOP
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CHUONG TRINH CON XUAT DATA DA NHAP
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
XUATDATA: MOV A,5BH
CJNE A,#0,XUATDATA0
MOV A,LENGTHL
ANL A,#0FH
MOV 5FH,A
MOV A,LENGTHL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,LENGTHH
ANL A,#0FH
MOV 5DH,A
MOV A,LENGTHH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA0: MOV A,5BH
CJNE A,#1,XUATDATA1
MOV A,TGCCL
ANL A,#0FH
MOV 5FH,A
MOV A,TGCCL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,TGCCH
ANL A,#0FH
MOV 5DH,A
MOV A,TGCCH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA1: MOV A,5BH
CJNE A,#2,XUATDATA2
MOV A,SLCCL
ANL A,#0FH
MOV 5FH,A
MOV A,SLCCL
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,SLCCH
ANL A,#0FH
MOV 5DH,A
MOV A,SLCCH
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA2: MOV A,5BH
CJNE A,#3,XUATDATA3
MOV A,SCKP1
ANL A,#0FH
MOV 5FH,A
MOV A,SCKP1
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,SCKP2
ANL A,#0FH
MOV 5DH,A
MOV A,SCKP2
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA3: MOV A,5BH
CJNE A,#4,XUATDATA4
MOV A,LD1L
ANL A,#0FH
MOV 5FH,A
MOV A,LD1L
SWAP A
ANL A,#0FH
MOV 5EH,A
MOV A,LD1H
ANL A,#0FH
MOV 5DH,A
MOV A,LD1H
SWAP A
ANL A,#0FH
MOV 5CH,A
XUATDATA4: NOP
RET
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
;CT CON KIEM TRA 2 NUT STOP/START,PAUSE KHI CT DANG CHAY
;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
Q1P: MOV R3,#100
BACK7: JB P2.7,EXITQ2P
DJNZ 2,BACK7
SETB 31H
EXITQ2P: NOP
RET
END

You might also like