Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN μP8951

I. KIT KTCT_μp8951:

KIT thí nghiệm gồm 10 module được bố trí như trên hình 1.

1/- MICROCONTROLLER WITH EXTERNAL RAM:

Là khối điều khiển trung tâm gồm một vi điều khiển AT89C51 có nối kết với RAM ngoài và một vi điều khiển AT89C2051. AT89C51 có thể chạy bằng bộ nhớ trong (internal memory, dung lượng 4Kb) hoặc chạy bằng bộ nhớ ngoài (external memory, dung lượng 8Kb).

Các socket trên module này bao gồm: TÊN CHỨC NĂNG

JP7: P1_CPU JP8: P3_CPU JP3: P2_ADDRESS JP1: DATA_CPU JP2: DECODE2_LCD JP4: DECODE1_8255 JP3: P1_89C2051 JP4: P3_89C2051 PORT 1, CPU 89C51 PORT 3, CPU 89C51 PORT 2, CPU 89C51 PORT 0, CPU 89C51 PORT 0, CPU 89C51 Tín hiệu giải mã cho PPI 8255A PORT 1, CPU 89C2051 PORT 3, CPU 89C2051

2/- PPI 8255A:

Module giao tiếp song song, gồm các socket sau: CHỨC NĂNG TÊN

DATA BUS, 8255A Các tín hiệu điều khiển 8255A PORT A, 8255A PORT B, 8255A PORT C, 8255A PORT C, 8255A

Trang 1

JP9: DATA_8255 JP10: CTRL_8255 JP11: PA_8255 JP12: PB_8255 JB13: PC1_8255 JB14: PC2_8255

P h ò n g t h í n g h i ệ m T ự đ ộ n g

h o á

– V

i đ i ề u

k h i ể n

T r a n g 2

T à i l i ệ u t h í n g h i ệ m V

i đ i ề u k h i ể n

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

3/- COUNTER:

Gồm một socket: JP15: COUNTER, cung cấp xung cho mạch đếm, dùng để mô phỏng cho bài thí nghiệm đếm sản phẩm.

4/- MATRIX LED 8x5: Module ma trận LED 8 hàng, 5 cột, các bit hàng và cột đều tác động ở mức cao . Các socket bao gồm:

TÊN CHỨC NĂNG

JP24: DATA_MATRIX JP25: CATHOD BLUE JP26: CATHOD RED 8 ĐƯỜNG DATA MATRẬN LED 5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED XANH 5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED ĐỎ

5/- LED _ LCD TC1602A: Gồm 8 led đơn, 5 ly màu đỏ, tác động ở mức cao và một LCD TC1602A, module gồm các socket sau:

CHỨC NĂNG

TÊN JP27: DATA LED JP22: DATA LCD JP23: CONTROL_LCD 8 BIT ĐIỀU KHIỂN LED ĐƠN 8 BIT DATA CỦA LCD ĐƯỜNG ĐIỀU KHIỂN ĐỌC/ GHI LCD

6/- LED 7 ĐOẠN: Module gồm 8 led 7 đoạn cathod chung, các đường DATA và điều khiển đều tác động ở mức cao. Các socket:

CHỨC NĂNG

TÊN JP20: DATA_LED7S. JP21: CONTROL_LED7S 8 BIT DATA CỦA LED 7 ĐOẠN 8 BIT ĐIỀU KHIỂN LED

Trang 3

7/- STEP MOTOR: Gồm một động cơ bước và mạch điều khiển, có một socket: JP28: STEP_MOTOR, các đường điều khiển tác động cao. 8/- CONTROL_KEYBOARD: Gồm 4 phím nhấn, có một socket: JP29: DATA_SW

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

9/- DAC0808: Gồm một mạch DAC 8 bit sử dụng IC DAC0808, ngõ ra của mạch được nối với một LED 5 ly, dùng để điều khiển độ sáng của LED theo giá trị số ở ngõ vào. Module có một socket:

JP18: DATA_DAC, gồm 8 bit data của bộ biến đổi số – tương tự. 10/- ADC0804: Gồm mộ ADC 8 bit sử dụng IC ADC0804, ngõ vào tương tự là bộ cảm biến nhiệt độ dùng LM335, module gồm 2 socket:

TÊN CHỨC NĂNG

JP16: DATA_ADC JP17: CONTROL_ADC 8 BIT NGÕ RA SỐ CÁC ĐƯỜNG TÍN HIỆU ĐIỀU KHIỂN

Trang 4

II. SƠ ĐỒ NGUYÊN LÝ CÁC KHỐI:

P h ò n g t h í

U1

AT89C51

U4

6264

JP1

U2

JP7

JP3

U P C _ 1 P

D A T A _ C P U

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

A0 A1 A2 A3 A4 A5 A6 A7

D0 D1 D2 D3 D4 D5 D6 D7

A8 A9 A10 A11 A12 A13 A14 A15

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

39 38 37 36 35 34 33 32

2 5 6 9 12 15 16 19

3 4 7 8 13 14 17 18

11 12 13 15 16 17 18 19

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

D0 D1 D2 D3 D4 D5 D6 D7

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

P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

D0 D1 D2 D3 D4 D5 D6 D7

D0 D1 D2 D3 D4 D5 D6 D7

P 2 _ A D D R E S S

11 1

LE OE

A8 A9 A10 A11 A12

10 9 8 7 6 5 4 3 25 24 21 23 2

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12

SN74LS374

n g h i ệ m T ự đ ộ n g h o á

WR

RD WR Y2 A0 A1

U P C _ 3 P

RD WR T1 T0 INT1 INT0 TXD RXD

8 7 6 5 4 3 2 1

17 16 15 14 13 12 11 10

22 27 20 26

– V

OE WE CS1 CS2

P3.7/RD P3.6/WR P3.5/T1 P3.4/T0 P3.3/INT1 P3.2/INT0 P3.1/TXD P3.0/RXD

21 22 23 24 25 26 27 28

VCC

P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15

i

1 2 3 4 5 6 7 8

11,0592Mhz

JP4D E C O D E 1 _ 8 2 5 5

19

JP8

XTAL1

Y 1

/

18

30 29

T S R

P P V A E

đ i ề u

XTAL2

ALE/PROG PSEN

(0000H - 1FFFH)

9

1 3

VCC

R67

C6

C5

10K

k h i ể n

A13 A14 A15

1 2 3

A B C

10p

33p

PSEN

1

T E S E R

3

RD

RESET SW

2

6 4 5

G1 G2A G2B

R19

R28

15 14 13 12 11 10 9 7

100

10K

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8

Y 0 Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7

SW1

U6A

74LS08

C7 10uF/50V

1

2

U5

74LS138

VCC

MEMORY SELECTION

VCC

VCC

T r a n g 5

0

1

2

3

4

5

6

7

.

.

.

.

.

.

.

.

0 D

1 D

2 D

3 D

4 D

5 D

6 D

7 D

5 1 A

4 1 A

3 1 A

2 1 A

1 1 A

0 1 A

9 A

8 A

0 T

1 T

R W

D R

1 P

1 P

1 P

1 P

1 P

1 P

1 P

1 P

RN7

10K

RN6

10K

0 T N

1 T N

D17

D19

D X R

D X T

I

I

READY

DATA LOAD

1 2 3 45 6 78 9

1 2 34 5 67 8 9

1 23 4 5 67 8 9

12 3 4 56 7 89

123456789

1 23 4 5 67 8 9

R63 270

R64 270

VCC

RN2

RN3

RN4

RN5

10K

10K

10K

10K

JP6

U23

6

8

R59

2K2

TXD

U6B

U6C

7408

7408

R60

2K2

JP5

RXD

U20

D B 9 _ 2 (

R61

TXD1 RXD1

8 7 6 5 4 3 2 1

11 9 8 7 6 3 2

2K2

1 5 0 2 C 9 8 _ 3 P

P3.7 P3.5/T1 P3.4/T0 P3.3/INT1 P3.2/INT0 P3.1/TXD P3.0/RXD

l

TXD1

M a e )

4 5

0 9 1

7 8

T2OUT R2IN

1 6 2 7 3 8 4 9 5

Y 2

R62 2K2

RXD1

11 12 10 9

5 4

XTAL1 XTAL2

11,0592Mhz

T1IN R1OUT T2IN R2OUT

C O M P O R T 2 0 5 1

1

19 18 17 16 15 14 13 12

8 7 6 5 4 3 2 1

P 1 _ 8 9 C 2 0 5 1

RST/VPP

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1/AIN1 P1.0/AIN0

C8

C9

0 . 1 P

1 . 1 P

C15

C23

RESET

10uF

10uF

10p

10p

AT89C2051

1 3 4 5 2 6

14 13

T1OUT R1IN

C1+ C1- C2+ C2- V+ V-

C10

C11

T à i l i ệ u t h í n g h i ệ m V

MAX232

10uF

10uF

l

D B 9 _ 1 ( F e m a e )

Title

1 6 2 7 3 8 4 9 5

P C I N T E R F A C E

MICROCONTROLLER WITH EXTERNAL RAM Rev

Size B

Document Number

Date:

Monday , July 24, 2006

Sheet

1

1

of

i đ i ề u k h i ể n

R48

U3

330

JP9

JP11

R47

R50

2K7

270

VCC

P h ò n g t h í n g h i ệ m T ự đ ộ n g h o á

P A _ 8 2 5 5

D18

1

4

– V

D A T A _ 8 2 5 5

1 2 3 4 5 6 7 8

34 33 32 31 30 29 28 27

4 3 2 1 40 39 38 37

1 2 3 4 5 6 7 8

U18

4 8

D0 D1 D2 D3 D4 D5 D6 D7

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7

LED

OPTO

7

DSCHG

i đ i ề u

JP12

T S R

C C V

2

5

JP10

R49

4K7

k h i ể n

5

3

OUT

CV

Q14 C828

18 19 20 21 22 23 24 25

1 2 3 4 5 6 7 8

6 2

P B _ 8 2 5 5

PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

THR TRG

C4

5 36 6 9 8 35

RD WR CS A0 A1 RESET

JP13

LM555

104

R46

1 2 3 4 5 6 7 8

47K

D E C O D E _ 8 2 5 5

T r a n g 6

1 2 3 4 5 6 7 8

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

14 15 16 17 13 12 11 10

1 2 3 4 5 6 7 8

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

P C 1 _ 8 2 5 5

C3 470uF

JP14

8255

J15 COUNTER

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

1 2 3 4 5 6 7 8

PPI-8255A

P C 2 _ 8 2 5 5

T à i l i ệ u t h í n g h i ệ m V

i đ i ề u k h i ể n

DATA_LED7S

U13

74LS244

LED1

LED2

LED3

LED4

LED5

LED6

LED7

LED8

JP20

R20 150 X 8

P h ò n g t h í

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

1 2 3 4 5 6 7 8

2 4 6 8 11 13 15 17

18 16 14 12 9 7 5 3

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

2 C

2 C

2 C

2 C

2 C

2 C

2 C

2 C

A1 A2 A3 A4 A5 A6 A7 A8

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8

3 8

3 8

3 8

3 8

3 8

3 8

3 8

3 8

1 19

1OE 2OE

JP21

U12

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

18 17 16 15 14 13 12 11

IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8

OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8

n g h i ệ m T ự đ ộ n g h o á – V

S 7 D E L _ L O R T N O C

10

COM

VCC

ULN2803

5VDC

MLED1

LCD1

R31

R30

D9

D10

D11

D12

D13

D14

D15

D16

15K

15K

MATRIX LED 8x5

W2

W1

Q6

Q5

LED

LED

LED

LED

LED

LED

LED

LED

i đ i ề u k h i ể n

4007 X 8

A1013

A1013

C28

104

C27

104

THIS IS THE LCD

16

D23

P M A

W1

2 LINES x 16 CHARACTERS L

15

D24

W2

R33

R32

15K

15K

W4

R38 270

R39 270

R40 270

R41 270

R42 270

R43 270

R44 270

R45 270

17

D25

Q7

Q8

W3

W3

/

C29

104

S C

T S N O C

D N G

C C V

A K

0 D

1 D

2 D

3 D

4 D

5 D

6 D

7 D

S R

W R

A1013

A1013

14

D26

C30

104

W4

0 78 9 1

1 1

2 1

3 1

4 1

4 5 6 3

1 2

5 1

6 1

8

D27

W5

R35

R34

5

D28

15K

15K

W6

VCC

Q9

Q10

W5

W6

6

D29

C31

104

W7

A1013

A1013

C32

104

T r a n g

9

D30

R65 5/3W

W8

7

R10

10K

8 1

7 1

6 1

5 1

4 1

3 1

2 1

1 1

R37

R36

15K

15K

W7

Q13

VCC

Q11

Q12

U17

W8

C33

104

A1013

A1013

A1013

ULN2803

1 T U O

2 T U O

3 T U O

4 T U O

5 T U O

6 T U O

7 T U O

8 T U O

R66

4K7

C34

104

1 B

2 B

3 B

4 B

5 B

1 R

2 R

3 R

4 R

5 R

1 N

2 N

3 N

4 N

5 N

6 N

7 N

8 N

1 2 3 45 6 78

1 23 4 5 67 8

I

I

I

I

I

I

I

I

M O C

3 1 21

2 1

0 1

8 1

1 34 7 1

JP23

12VDC

12 3 4 56 7 8

0 1

JP22

DATA_LCD

CONTROL_LCD

W1 W2 W3 W4 W5 W6 W7 W8

12 3 4 56 7 8

1 2 3 45 6 78 9

8 1

7 1

6 1

5 1

4 1

3 1

2 1

1 1

JP27

U16

8 1

7 1

6 1

5 1

4 1

3 1

2 1

1 1

8 1

7 1

6 1

5 1

4 1

3 1

2 1

1 1

ULN2803

1 T U O

2 T U O

3 T U O

4 T U O

5 T U O

6 T U O

7 T U O

8 T U O

U14

U15

DATA_LED

ULN2803

ULN2803

1 T U O

2 T U O

3 T U O

4 T U O

5 T U O

6 T U O

7 T U O

8 T U O

1 T U O

2 T U O

3 T U O

4 T U O

5 T U O

6 T U O

7 T U O

8 T U O

RN1

1 N

2 N

3 N

4 N

5 N

6 N

7 N

8 N

I

I

I

I

I

I

I

I

M O C

10K

1 N

2 N

3 N

4 N

5 N

6 N

7 N

8 N

1 N

2 N

3 N

4 N

5 N

6 N

7 N

8 N

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

M O C

M O C

1 23 4 56 7 8

0 1

1 2 3 45 6 7 8

1 23 4 5 67 8

0 1

0 1

1 23 4 56 7 8

1 2 3 45 6 7 8

1 23 4 5 67 8

Title

JP24

JP25

JP26

T à i l i ệ u t h í n g h i ệ m V

Rev

Size B

MATRIX 8x5 AND LCD Document Number

DATA_MATRIX

CATHOD BLUE

CATHOD RED

Date:

Monday , July 24, 2006

Sheet

1

1

of

i đ i ề u k h i ể n

VCC

VCC

MG1

1 2 3

R15 270

R16 270

R17 220

R18 270

4 5 6

D5

D6

D7

D8

MOTOR STEPPER

LED4

LED3

LED2

LED1

P h ò n g t h í n g h i ệ m T ự đ ộ n g h o á – V

D1

D2

D3

D4

i đ i ề u

4007

4007

4007

4007

k h i ể n

R11

4K7

Q1 TIP122

Q2 TIP122

Q3 TIP122

Q4 TIP122

JP28

R12

4K7

T r a n g 8

R13

4K7

1 2 3 4 5 6 7 8

R O T O M _ P E T S

R14

4K7

T à i l i ệ u t h í n g h i ệ m V

i đ i ề u k h i ể n

P h ò n g

t h í

INC

DEC

MODE

ENTER

JP29

n g h i ệ m T ự đ ộ n g

h o á

– V

D A T A _ S W

1 2 3 4 5 6 7 8

C19

C20

C21

C22

i đ i ề u

101

101

101

101

k h i ể n

T r a n g 9

T à i l i ệ u t h í n g h i ệ m V

i đ i ề u k h i ể n

P h ò n g t h í

-12VDC

R29

10

VCC

VCC

U21

DAC0808

D20

C13

n g h i ệ m T ự đ ộ n g h o á

3 1

C12

4007

JP18

104

1

– V

100uF

GND

D22

C14

i

C C V

LED

104

3

đ i ề u

VEE

16

COMPS

R56

VCC

2K7

k h i ể n

4

Iout

C A D _ A T A D

8 7 6 5 4 3 2 1

12 11 10 9 8 7 6 5

D0 D1 D2 D3 D4 D5 D6 D7

R58 150

2

U22B

R68 270

4

U22A

JR4558

4

- Iout F E R V

+ F E R V

6

JR4558

-

7

2

-

4 1

5 1

1

5

+

3

+

8

+12VDC

R69

R55

R53

8

T r a n g 1 0

R51 2K7

R52 10

820

2K7

10K

R57 2K7

D21

R54

5V1

JP19

C17

C16 CAP

5K

2 1

104

DAC_OUT

T à i l i ệ u t h í n g h i ệ m V

i đ i ề u k h i ể n

P h ò n g t h í

VCC

R5 1K

R6 1K

VCC

R4 1K

C2

VCC

100uF/25V

n g h i ệ m T ự đ ộ n g h o á

2

8

U8B

JR4558

U7

JP16

R3 470K

U9

5

– V

+

7

i

+ S V

LM35

3

6 7

6

-

ADJ

+IN -IN

VCC

đ i ề u

R1

9

VREF/2

4

D N G

1K

k h i ể n

R7 1K

19 4

CLKR CLKIN

1

D A T A _ A D C

18 17 16 15 14 13 12 11

1 2 3 4 5 6 7 8

DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7

-VCC VCC

C1

5

U8A

VCC

8

INTR

2 3 1

R9

JR4558

RD WR CS

3

1nF

+

1

1K

R2 10K

2

-

ADC0804

T r a n g 1 1

4 -VCC

JP17

R8 1K

1 2 3 4 5 6 7 8

C O N T R O L _ A D C

T à i l i ệ u t h í n g h i ệ m V

i đ i ề u k h i ể n

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

II. THIẾT BỊ GHI CHƯƠNG TRÌNH TVT_V1.1:

40 21 1 20

20 11 1 10

Thiết bị dùng để ghi chương trình vào bộ nhớ Flash ROM của các vi điều khiển họ 89C51/2051. Trên thiết bị có một đế kẹp 40 chân, và một đế kẹp 20 chân. Vi điều khiển cần ghi chương trình được đặt vào đúng vị trí của đế kẹp (mỗi thời điểm chỉ cho phép cắm một IC trên thiết bị), cấp nguồn cho thiết bị và kết nối với máy tính để sử dụng. Sơ đồ chân các đế kẹp như hình sau:

Trang 12

III. PHẦN MỀM ĐIỀU KHIỂN: Giao diện chương trình:

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

Gồm các menu: - Comport: cho phép chọn cổng COM1 hoặc cổng COM2 để giao tiếp với

- ChipSelect: cho phép chọn loại CPU để ghi chương trình vào bộ nhớ trong

+ clr_Unlock: xóa và ghi chương trình không khóa, tức là chương - ProType: chọn kiểu ghi chương trình

+ clr_Lock: xóa và ghi chương trình với 3 bit khóa, chương trình đã

+ Compare: so sánh nội dung bộ nhớ CPU với vùng đệm của

+ Read: đọc nội dung bộ nhớ Flash ROM của CPU và lưu vào vùng

+ Clear: Xóa bộ nhớ CPU.

ngoại vi. (Flach ROM) trình sau khi ghi vào bộ nhớ CPU có thể đọc ngược trở ra. ghi vào không thể đọc ra được. chương trình. đệm chương trình. Tất cả các thao tác trên khi được chọn trong menu ProType sẽ tác động lên nút lệnh nằm trong khung Flash ROM, để thực thi thao tác vừa chọn, ta click chuột vào nút lệnh này.

Trang 13

- Emulator: Cho phép truyền nhận từng byte giữa PC và thiết bị với tốc độ truyền nhận 4800bps. Xem hình sau:

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

Khi nhập vào khung T. Byte một giá trị (số hoặc chữ) và click chuột vào nút

1/- Sử dụng phần mềm soạn thảo chương trình:

Từ giao diện của chương trình trên PC, click chuột vào nút lệnh EDIT ASM,

Trang 14

Khi nhấn nút START sẽ kích hoạt trạng thái sẵn sàng nhận của chương trình. Nếu có một Byte được nhận thì giá trị byte này sẽ được hiển thị trong khung R. Byte và đồng thời được vẽ trên khung Picture ở trên. TRANS., byte dữ liệu này sẽ được truyền đi. phần mềm soạn thảo sẽ được kích hoạt. Xem cửa sổ trang sau. Để soạn thảo chương trình, thực hiện lệnh File-> New, và nhập các dòng lệnh của chương trình vào trang màn hình soan thảo. Kết thúc một chương trình hợp ngữ cho MOS51 bằng lệnh END. File được lưu vào đĩa với phần mở rộng mặc định *.a51.

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

Xem kết quả biên dịch chương trình vào windows->Ouputs.

2/- Thao tác ghi chương trình vào Flash ROM của CPU:

- Nối kết đường truyền từ cổng COM của PC và cổng giao tiếp của thiết bị ghi - Mở nguồn cho thiết bị, khi thấy LED chỉ thị trên thiết bị nhấp nháy tức là thiết

- Click chuột vào nút lệnh thao tác trong khung Flash ROM (ở góc dưới bên

- Kiểm tra lại nội dung vừa ghi (thao tác này không cần thiết): chọn thao tác

3/- Thao tác ghi và thực hiện chương trình ở bộ nhớ RAM của CPU:

- Đặt CPU 89C51 (đã có chương trình giao tiếp với PC) vào đúng vị trí của đế

Trang 15

Để biên dịch chương trình và kiểm tra các lỗi cú pháp trong quá trình dịch ta chọn lệnh Winsdow-> Tile (hiển thị cửa sổ kết quả trong quá trình biện dịch), và dịch chương trình bằng lệnh Assemble->Assemble hoặc nhấn phím CTRL_F7. Nếu chương trình không có lỗi sẽ tạo ra được file *.HEX. bị đã sẵn sàng. Nếu LED tắt hoặc sáng hẳn thì tắt nguồn 15 giây và mở lại. - Đặt CPU cần nạp vào đúng đế kẹp và đúng vị trí chân trên đế. - Chọn cổng giao tiếp (mặc định khi vừa khởi động chương trình trên PC là COM1) - Chọn loại CPU từ menu ChipSelect - Chọn thao tác thực hiện trong ProType - Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ (file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm. Số byte của file sẽ được hiển thị trong ô nằm ở góc dưới phải của chương trình. phải của cửa sổ chương trình) Compare từ menu ProType và click chuột vào nút lệnh thao tác. kẹp trong module MICROCONTROLER WITH EXTERNAL RAM - Bật SW chọn bộ nhớ trong module này về vị trí INT. MEMORY

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

- Nhấn SW RESET và kiểm tra đèn LED tín hiệu READY, nếu đèn nhấp nháy

- Nối cáp tín hiệu giữa cổng COM máy PC với cổng giao tiếp PC INTERFACE

4/- Một số lưu ý khi sử dụng thiết bị:

Trang 16

thì hệ thống sẵn sàng cho việc truyền/nhận dữ liệu. trên module - Kích hoạt chương trình trên máy PC, chọn cổng COM (1 hoặc 2) - Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ (file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm. Số byte của file sẽ được hiển thị trong ô nằm ở góc dưới phải của chương trình. - Click chuột vào nút WRITE_RAM. Nếu đường truyền bị lỗi thì sẽ hiển thị câu thông báo “Time out”, khi đó nhấn SW RESET trên mudule và thực hiện hiện lại thao tác này. Do CPU 89C51 có thể thực hiện chương trình từ bộ nhớ trong hoặc bộ nhớ ngoài nhờ SW Memory Selection, nên khi sử dụng ở chế độ bộ nhớ trong phải hết sức cẩn thận khi sử dụng PORT P2, vì các tín hiệu của port này dùng làm các tín hiệu giải mã địa chỉ cho bộ nhớ ngoài (0000H - 1FFFH), nếu các trạng thái của các bit P2.7, P2.6, P2.5 = 000B thì bộ nhớ ngoài sẽ được chọn, khi đó dễ dẫn đến xung đột dữ liệu giữa các bit của port P0 với các bit data của bộ nhớ ngoài RAM.

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 01: SỬ DỤNG TẬP LỆNH 8951

I. MỤC ĐÍCH YÊU CẦU:

Giúp sinh viên làm quen với thiết bị và tìm hiểu một số nhóm lệnh quan trọng trong tập lệnh của 8951

II. CHUẨN BỊ THÍ NGHIỆM: - Bộ thí nghiệm DHC_uPC8951 - Máy tính - Kiểm tra cable truyền - Xem các module: microcontroller, led đơn III. TIẾN TRÌNH THÍ NGHIỆM:

1/- Nhóm lệnh di chuyển dữ liệu, lệnh nhảy:

a/- Nối mạch thí nghiệm:

Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P1.0 đến P1.7, các led đều tác động ở mức cao.

; P1 <- 11111111B, các led đều sáng ; gọi chương trình trì hoãn DELAY ; P1 <- 00000000B, các led đều tắt

MOV P1,#0FFH CALL DELAY MOV P1,#00H CALL DELAY LJMP MAIN ; nhảy đến MAIN để lập lại quá trình vô hạn

; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255

; (cid:217) X: DJNZ R7,X

Trang 17

b/- Viết chương các trình ứng dụng: Chương trình 1.1: Chớp tắt 8 led vô hạn lần MAIN: DELAY: LAP: MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP ; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

RET ; kết thúc chương trình con. END

Chương trình 1.2: giống nội dung chương trình 01 nhưng lặp lại quá trình 10

- LỆNH 1 - LỆNH 2 - Hướng dẫn: MOV Ri, # 255)> NHÃN:

- LỆNH n DJNZ Ri,

MOV R7,#10

; P1 <- 11111111B, các led đều sáng ; gọi chương trình trì hoãn DELAY ; P1 <- 00000000B, các led đều tắt

MOV P1,#0FFH CALL DELAY MOV P1,#00H CALL DELAY DJNZ R7,MAIN SJMP $ ; ; “dừng chương trình”

; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255

; (cid:217) X: DJNZ R7,X

- Chương trình: MAIN: DELAY: LAP: MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP DJNZ R6, LAP 07 POP 06 POP RET ; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con.

Trang 18

NHẮC LẠI: Ri, : Ri là một trong các thanh ghi từ R0 -> R7, lệnh giảm nội DJNZ dung thanh ghi Ri một đơn vị, nếu Ri > 0 thì nhảy đến NHÃN chỉ định, ngược lại sẽ chuyển sang thực hiện kế tiếp. lần. END BÀI TẬP SV: Chương trình 1.3: Hiển thị 1 led sáng, dịch dần từ D1 đến D8 vô hạn lần

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

6. Chương trình 1.4: Hiển thị 1 led sáng, dịch dần từ D8 đến D1 với số lần lặp là

2/- Nhóm lệnh quay vòng:

a/- Nối mạch thí nghiệm:

Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đều tác động ở mức cao.

MOV A,#01H

MOV P1, A RL A CALL DELAY LJMP BEGIN

; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255

; (cid:217) X: DJNZ R7,X

; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET b/- Viết các chương trình ứng dụng: Chương trình 1.5: viết chương trình dịch một led sáng từ D1 (cid:198) D8: MAIN: BEGIN: DELAY: LAP: END

MOV A,#80H

MOV P1, A A RR CALL DELAY LJMP BEGIN

Trang 19

Chương trình 1.6: viết chương trình dịch một led sáng từ D8 (cid:198) D1: MAIN: BEGIN: DELAY: ; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

MOV R6,#255

; (cid:217) X: DJNZ R7,X

; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET

MOV A,#01H

SETB C MOV P1, A RLC A CALL DELAY JNC BEGIN LJMP MAIN

; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255

; (cid:217) X: DJNZ R7,X

; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. LAP: END Chương trình 1.7: viết chương trình sáng dần các led từ D1 (cid:198) D8: MAIN: BEGIN: DELAY: LAP: END MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET

MOV A,#80H

Trang 20

Chương trình 1.8: viết chương trình sáng dần các led từ D8 (cid:198) D1: MAIN: BEGIN: SETB C MOV P1, A RRC A CALL DELAY JNC BEGIN LJMP MAIN

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255

; (cid:217) X: DJNZ R7,X

; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET DELAY: LAP: END

BÀI TẬP: Chương trình 1.9: viết chương trình tắt dần các led từ D1 (cid:198) D8

Chương trình 1.10: viết chương trình tắt dần các led từ D8 (cid:198) D1

Chương trình 1.11: viết chương trình tắt dần các led từ D8 (cid:198) D1, thực hiện lặp lại 20 lần.

3/- Nhóm lệnh toán học:

a/- Nối mạch thí nghiệm:

Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đều tác động ở mức cao.

b/- Viết các chương trình ứng dụng:

Chương trình 1.12: Viết chương trình cộng 2 số sau: 12 + 34, hiển thị kết quả

MOV A,#12 ADD A,#34 MOV P1,A SJMP $

Chương trình 1.13: Viết chương trình cộng 2 số sau: 12 + 34, hiển thị kết quả

Trang 21

trên các led. MAIN: END trên các led. MAIN: MOV A,#12

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

SETB C ADDC A,#34 MOV P1,A SJMP $

So sánh kết quả của chương trình 1 và chương trình 2.

Chương trình 1.14: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả

AB

MOV A,#17 MOV B,#3 DIV MOV P1,A SJMP $

AB

MOV A,#17 MOV B,#3 DIV MOV P1,B SJMP $

MOV A,#7 MOV B,#14 MUL AB MOV P1,A SJMP $

Trang 22

END (phần nguyên) trên các led. MAIN: END Chương trình 1.15: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả (phần dư) trên các led. MAIN: END Chương trình 1.16: Viết chương trình nhân 2 số 23 cho 14, hiển thị kết quả (byte thấp) trên các led. MAIN: END Chương trình 1.17: Viết chương trình nhân 2 số 23 cho 14, hiển thị kết quả (byte cao) trên các led. MAIN: MOV A,#7

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

Trang 23

MOV B,#14 MUL AB MOV P1,B SJMP $ END

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 02: LED 7 ĐOẠN VÀ BÀN PHÍM

Giúp sinh viên tìm hiểu cách hiển thị thông tin trên led 7 đoạn bằng phương

I. MỤC ĐÍCH: pháp quét và xử lý thông tin trên bàn phím điều khiển. II. CHUẨN BỊ THÍ NGHIỆM:

- Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch điều khiển led 7 đoạn và bàn phím.

- 74244 là IC đệm một chiều 8 bit với ngõ vào là Ai và ngõ ra là Yi tương ứng: Trong sơ đồ mạch:

AI X 0 1 YI Z 0 1

OUT1

IN1

GND

- 2803 là IC đệm đảo công suất, bên trong gồm một dãy 8 transistor có cấu trúc OE 1 0 0 X: mức logic 1 hoặc 0 Z: trạng thái cách ly (tổng trở cao) như sau:

dòng điện IC cực đại là 500mA, chân GND của 8 transistor được nối chung và

- LED 7 đoạn sử dụng trong mạch là loại cathod chung có cấu trúc như sau:

Trang 24

đưa ra tại chân số 9 của IC.

INC

DEC

MODE

ENTER

a

P h ò n g t h í n g h i ệ m T ự đ ộ n g h o á

JP29

a

b

d

e

f

g

c

i

f

b

– V

t n o p

g

i đ i ề u

D A T A _ S W

1 2 3 4 5 6 7 8

C19

C20

C21

C22

e

c

k h i ể n

101

101

101

101

d

point

COM

T r a n g 2 5

DATA_LED7S

LED1

LED2

LED3

LED4

LED5

LED6

LED7

LED8

U13

74LS244

JP20

R20 150 X 8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

S1 S2 S3 S4 S5 S6 S7 S8

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

7 6 4 2 1 9 10 5

1 2 3 4 5 6 7 8

2 4 6 8 11 13 15 17

18 16 14 12 9 7 5 3

2 C

2 C

2 C

2 C

2 C

2 C

2 C

2 C

Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

a b c d e f g 1 p C

A1 A2 A3 A4 A5 A6 A7 A8

3 8

3 8

3 8

3 8

3 8

3 8

3 8

3 8

1 19

1OE 2OE

JP21

U12

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

18 17 16 15 14 13 12 11

OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8

IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8

S 7 D E L _ L O R T N O C

10

COM

ULN2803

T à i l i ệ u t h í n g h i ệ m V

i đ i ề u k h i ể n

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

III. TIẾN TRÌNH THÍ NGHIỆM:

- Nối JP29(DATA_SW) của bàn phím với P3_CPU (port 3 của 8951) - Nối P1_CPU với JP20 (DATA_LED7S) - Nối P2_ADDRESS với JP21 (CONTROL_LED7S)

Chương trình 2.1: viết chương trình hiển thị số 5 trên LED1:

1/- Viết chương trình hiển thị thông tin trên led 7 đoạn: SỐ D5 f D4 e D3 D D2 c

1 0 1 1 6DH

0 1 2 3 4 5 6 7 8 9 D7 p 0 D6 G 1 D1 b 0 D0 Giá trị HEX a 1

; tắt các led ; đặt DATA số 5 ra P1 ; mở nguồn led1 MOV MOV MOV SJMP P2,#00H P1,#6DH P2,#01H $ MAIN: END

; tắt các led P2,#00H MOV

Trang 26

Chương trình 2.2: viết chương trình hiển thị số 54 trên 2 LED 7 và 8 HƯỚNG DẪN: theo sơ đồ nguyên lý ở trên, ta thấy không thể hiển thị 2 thông tin khác nhau trên 2 led tại cùng thời điểm. Do đó: tại mỗi thời điểm (khoảng vài ms) ta hiển thị thông tin trên 1 led, sau đó tắt led và chuyển sang hiển thị thông tin khác trên led kế tiếp. Thực hiện quá trình này liên tục, do hiện tượng lưu ảnh của mắt sẽ thấy hai thông tin được hiển thị đồng thời. MAIN: BEGIN: ; đặt DATA 5 ra P1 ; mở nguồn led 7 ; trì hoãn để mắt lưu ảnh thông tin P1,#6DH P2.6 DELAY MOV SETB CALL

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

; tắt nguồn led 7 ; đặt thông tin DATA 4 ra P1 ; mở nguồn led 8 ; trì hoãn để mắt lưu ảnh ; tắt nguồn led 8 ; lặp lại quá trình vô hạn ; chương trình DELAY ~ 1ms

P2.6 P1,#66H P2.7 DELAY P2.7 BEGIN 07H R7,#100 $ 07H CLR MOV SETB CALL CLR LJMP PUSH MOV DJNZ POP RET DELAY: END

MOVC A,@A+DPTR ; là lệnh gán vào thanh ghi A nội dung ô nhớ

EQU ; khai báo biến CNT tại ô nhớ RAM 127

; tắt các led ; khởi động biến đếm = 0 P2,#00H CNT,#0 DPTR,#MA_7S ; lấy địa chỉ đầu bảng mã 7 đoạn MOV MOV MOV

; đổi nội dung CNT ra mã 7 đoạn ; đặt mã 7 đoạn ra P1 ; mở nguồn led8 ; trì hoãn ; tăng nội dung biến

; nếu biến < 10 thì tiếp tục hiện thi( ; nếu biến = 10 thì gán về 0 A,CNT A,@A+DPTR P1,A P2.7 DELAY CNT A,CNT A,#10,BEGIN CNT,#0 BEGIN MOV MOVC MOV SETB CALL INC MOV CJNE MOV LJMP

; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255

; (cid:217) X: DJNZ R7,X

Trang 27

Chương trình 2.3: viết chương trình hiển thị các số tăng dần từ 0 (cid:198)9 trên led 8 HƯỚNG DẪN: chương trình có địa chỉ = (nội dung hiện tại của A + nội dung thanh ghi DPTR), ví dụ: A = 20 và DPTR = 1000 => A (cid:205) (1020); lệnh này trong chương trình sau dùng để đổi nội dung một ô nhớ (có giá trị từ 0 đến 9) sang mã 7 đoạn của số đó. 127 CNT MAIN: BEGIN: DELAY: LAP: MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP ; lấy lại giá trị cũ của R7 trong ngăn xếp

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

POP RET ; lấy lại giá trị cũ của R6 trong ngăn xếp ; kết thúc chương trình con. 06 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH MA_7S: END

Chương trình 2.5: viết chương trình hiển thị các số tăng dần từ 00 – 99 trên 2

127 EQU 126 125 EQU

ACC B A,CNT B,#10 AB CHUC,A DONVI,B B ACC DOI_SO: PUSH PUSH MOV MOV DIV MOV MOV POP POP RET

2/- Thực hành điều khiển các phím: phím SW1 nối chân P3.0; SW2 nối chân

JNB

Trang 28

BÀI TẬP: Chương trình 2.4: viết chương trình hiển thị: 15-10-06 trên 8 led led 1 và 2. HƯỚNG DẪN: dùng 1 ô nhớ chứa số đếm, trước khi hiển thị nội dung ô nhớ, ta phải đổi ra thành 2 số thập phân (0 -9), sau đó lần lượt đổi từng số thập phân sang mã 7 đoạn và quét trên 2 led : CNT DONVI EQU CHUC . . . P3.1; SW3 nối chân P3.2; SW4 nối chân P3.3 Chương trình 2.6: Viết chương trình thực hiện: - Nhấn SW1: hiển thị số 3 trên led8 - Nhấn SW2: hiển thị số 7 trên led8 - Nhấn SW3: tắt các thông tin đang hiển thị bit, để kiểm tra phím nhấn; ví dụ: HƯỚNG DẪN: dùng lệnh JNB P3.0, HIENTHI3 ; nếu SW1 nhấn thì logic tại P3.0 là 0, nên lệnh này thỏa điều kiện nhảy đến nhãn HIENTHI3, ngược lại sẽ thực hiện lệnh kế tiếp. SW1 ; khai báo kiểu BIT: SW1 (cid:217) P3.0 P3.0 BIT

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BIT BIT P3.1 P3.2

MOV P2,#00H SETB P2.7 ; tắt các led ; mở nguồn led8

; nếu SW1 nhấn thì (cid:198) HT3

SW1,HT3 SW2,HT7 SW3,TAT JNB JNB JNB LJMP BEGIN

MOV P1,#4FH LJMP BEGIN ; hiển thị số 7 ; trở về tiếp tục kiểm tra phím

MOV P1,#07H LJMP BEGIN

MOV P2,#00H LJMP BEGIN

SW2 SW3 MAIN: BEGIN: SW1: SW2: SW3: END Chương trình 2.7: Viết chương trình thực hiện:

- Nhấn SW1: tăng nội dung hiển thị một đơn vị trên led1 (0-1-2-3-4-5…9-0) - Nhấn SW2: giảm nội dung hiển thị một đơn vị trên led1 (9-8-7…2-1-0-9)

127 P3.0 P3.1 CNT SW1 SW2 EQU BIT BIT

P2,#00H P2.0 CNT,#0 MOV SETB MOV

Trang 29

SW1,TANG SW2,GIAM A,CNT A,@A+DPTR P1,A BEGIN JNB JNB MOV MOVC MOV LJMP HƯỚNG DẪN: dùng một ô nhớ chứa số đếm, khi nhấn SW1, tăng nội dung ô nhớ, sau đó trì hoãn một thời gian (chờ nhấc tay khỏi phím, thời gian này thường chọn từ 100ms -> 500ms); khi nhấn SW2, giảm nội dung ô nhớ 1 đơn vị, sau đó trì hoãn; nếu không phím nào được nhấn thì đổi nội dung ô nhớ sang mã led 7 đoạn và hiển thị. MAIN: BEGIN: TANG:

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

INC MOV CJNE MOV CNT A,CNT A,#10,TROVE CNT,#0

CALL LJMP DELAY BEGIN

DEC MOV CJNE MOV LJMP CNT A,CNT A,#255,TROVE CNT,#0 TROVE TROVE: GIAM:

; cất nội dung R5 vào ngăn xếp ; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 05 PUSH 06 PUSH 07 MOV R5,#2

MOV R6,#255

; (cid:217) X: DJNZ R7,X

; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R6 trong ngăn xếp ; lấy lại giá trị cũ của R5 trong ngăn xếp ; kết thúc chương trình con. 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP DJNZ R5,LAP1 07 POP 06 POP 05 POP RET DB DELAY: LAP1: LAP: MA_7S: END

Trang 30

BÀI TẬP: Chương trình 2.8: giống chương trình 1 nhưng hiển thị các số thay đổi trong khoảng 00 – 99.

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 03: TIMER 8951 & PPI8255A

Giúp sinh viên tìm hiểu về timer trong 8951 và IC giao tiếp song song có lập

I. MỤC ĐÍCH: trình điều khiển PPI8255A. II. CHUẨN BỊ THÍ NGHIỆM:

- Bộ thí nghiệm DHC-uP8951 - Máy tính - Kiểm tra cable truyền - Xem các module: microcontroller, PPI8255 và led 7 đoạn (cid:34) Tìm hiểu cấu trúc timer trong vi điều khiển: Vi điều khiển 89C51 có hai thanh ghi timer/counter 16 bit. Các thanh ghi này có thể hoạt động ở một trong hai trạng thái timer hoặc counter. Mỗi thanh ghi gồm 2 thanh ghi 8 bit ghép lại:

PULSE INPUT

THx : 8 BIT

TLx : 8 BIT

Cấu trúc của bộ Timer/ Counter trong 89C51 như hình sau.

Hoạt động của bộ Timer/Counter được điều khiển bởi hai thanh ghi TCON và TMOD

Trang 31

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

1. Thanh ghi TCON (timer control): Là thanh ghi 8 bit, có thể truy xuất byte hoặc bit

3

7

6

5

4

2

1

0

TF0

IE1

IE0

TF1

TR1

TR0

IT1

IT0

• TF1: báo trạng thái tràn cho bộ Timer/Counter1 • TR1: điều khiển cấp xung cho bộ Timer/Counter1 • TF0: báo trạng thái tràn cho bộ Timer/Counter0 • TR0: điều khiển cấp xung cho bộ Timer/Counter0 •

IE1: không liên quan đến hoạt động của Timer/Counter, bit này dùng để báo trạng thái ngắt ngoài 1 (khi trạng thái logic thay đổi từ 1 xuống 0 tại chân 13 vi điều khiển bit này được đặt lên mức logic 1) IT1: không liên quan đến hoạt động của Timer/Counter, bit này cho phép tác động ngắt ngoài 1 bằng cạnh xuống (default IT1 = 0, tác động ngắt bằng mức thấp) IE0: không liên quan đến hoạt động của Timer/Counter, bit này dùng để báo trạng thái ngắt ngoài 0 (khi trạng thái logic thay đổi từ 1 xuống 0 tại chân 12 vi điều khiển bit này được đặt lên mức logic 1) IT0: không liên quan đến hoạt động của Timer/Counter, bit này cho phép tác động ngắt ngoài 0 bằng cạnh xuống (default IT1 = 0, tác động ngắt bằng mức thấp)

2. Thanh ghi TMOD (timer mode): Là thanh ghi 8 bit, chỉ có thể truy xuất byte

3

7

6

5

4

2

1

0

M1

GATE

C/T

M1

GATE

C/T

M0

M0

ÑIEÀU KHIEÅN TIMER 1

ÑIEÀU KHIEÅN TIMER 0

• GATE, C/T: điều khiển trạng thái hoạt động cho Timer/Counter (xem sơ đồ ở trên) • M1, M0: chọn chế độ hoạt động cho Timer/Counter

M1 0 0 1 1

M0 0 1 0 1

CHẾ ĐỘ (MODE) 0 1 2 3

MÔ TẢ Timer/Counter 13 bit Timer/Counter 16 bit Timer/Counter 8 bit, auto reload Timer/Counter 8 bit

a/- Chế độ 0:

Trang 32

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

PULSE INPUT

THx : 8 BIT

TLx : 5 BIT

TFx

Thanh ghi THx và TLx kết hợp tạo thành bộ Timer/Counter 13 bit, khi tràn 13 bit thì cờ TFx sẽ đặt lên logic 1. b/- Chế độ 1:

PULSE INPUT

THx : 8 BIT

TLx : 8 BIT

TFx

c/- Chế độ 2:

PULSE INPUT

TLx : 8 BIT

TFx

OVERFLOW

THx : 8 BIT

TLx được nạp giá trị ban đầu từ THx và bắt đầu đếm từ giá trị này khi có xung ở ngõ vào, khi tràn thì TFx sẽ đặt lên logic 1 đồng thời kích hoạt bộ khóa để nạp giá trị trong THx vào TLx. d/- Chế độ 3:

PULSE INPUT

TF0

TL0 : 8 BIT

OSC:12

TH0 : 8 BIT

TF1

TR1

Trong chế độ này, TH1 và TL1 không được sử dụng thay vào đó là TH0 và TL0 hoạt động như 2 bộ Timer 8 bit (TL0) và Timer/Counter 8 bit (TL0). Tuy nhiên, tín hiệu mở xung cho TH0 không phải là TR0 mà là TR1.

Trang 33

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

(cid:34) Tìm hiểu PPI8255A: xem sơ đồ mạch trang sau:

U24

4 3 2 1 40 39 38 37

DATA BUS

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7

PA PB PC

34 33 32 31 30 29 28 27

D0 D1 D2 D3 D4 D5 D6 D7

18 19 20 21 22 23 24 25

PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

9 8

A0 A1

35 5 36 6

14 15 16 17 13 12 11 10

RESET RD WR CS

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

8255

CONTROL REGISTER (CR)

- CS (chip select): tác động thấp cho phép 8255 làm việc, khi CS = 1, tất cả các tín hiệu ở tổng trở cao.

- D0 –D7: data bus, cho phép 8255 giao tiếp với hệ thống. - PA0-PA7: 8 chân của port A - PB0-PB7: 8 chân của port B - PC0-PC7: 8 chân của port C, có thể chia làm 2 nhóm: PCL gồm các chân PC0 đến PC3, và PCH gồm các chân PC4 đến PC7.

- A1, A0: các chân địa chỉ. Tại mỗi thời điểm, data bus chỉ có thể giao tiếp dữ liệu với PA hoặc PB hoặc PC hoặc CR phụ thuộc vào vị trí của chuyển mạch, vị trí của chuyển mạch được quyết định bởi tín hiệu địa chỉ:

A1 0 0 1 1 A0 0 1 0 1

GIAO TIẾP DATA BUS --- PA DATA BUS --- PB DATA BUS --- PC DATA BUS --- CR - RD (read): tín hiệu cho phép đọc, tác động thấp, cho phép chuyển dữ liệu từ một trong các port đến data bus

- WR(write): tín hiệu ghi, tác động thấp, cho phép chuyển dữ liệu từ data bus đến một trong các port hoặc đến CR.

Trang 34

- RESET: tác động cao, cho phép xóa nội dung cài đặt chế độ hoạt động 8255. Khi sử dụng 8255, trước hết phải xác lập cấu hình bằng cách ghi vào CR một giá trị thích hợp tuỳ theo chế độ làm việc, ở chế độ I/O nội dung CR như sau:

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

7

6

5

3

2

1

0

4

ACT

0

PB

PCL

PA

0

PCH

0

Địa chỉ các PORT PPI8255 trong hệ thống: trong đó: - ACT: là bit active, có giá trị 1 - bit 5 và bit 6 = 0 - bit 2 = 0 - PA điều khiển port A, PB điều khiển port B, PCL điều khiển 4 chân thấp của PC, PCH điều khiển 4 chân cao của port C; các bit này nếu đặt ở logic 1 thì các port tương ứng sẽ là port nhập (không cho phép xuất dữ liệu từ data bus sang), nếu các bit này là 0 thì các port tương ứng sẽ là port xuất (không thể đọc được dữ liệu từ các port này), ví dụ: muốn định cấu hình ban đầu cho 8255 với PA xuất, PB xuất, PCL xuất, PCH nhập thì phải ghi vào CR một byte có giá trị là: 10001000b = 88H.

ĐỊA CHỈ 2000H 2001H 2002H 2003H GIAO TIẾP DATA BUS --- PA DATA BUS --- PB DATA BUS --- PC DATA BUS --- CR

III. TIẾN TRÌNH THÍ NGHIỆM:

1/-Viết chương trình sử dụng timer (tính toán timer sử dụng thạch anh 12Mhz): - Nối JP7 với JP27 - Kiểm tra cable truyền

A,#0 P1,A

; dịch bit 1 vào A để sáng dần các led

CALL DL_200MS C SETB A RLC JNC BEGIN SJMP MAIN

02 TMOD,#01H R2,#20 PUSH MOV MOV ; lặp lại 20 lần

Trang 35

Chương trình 3.1: Viết chương trình hiển thị các led sáng dần từ D1 đến D8, với thời gian Delay 200ms, sử dụng timer0, mode 1 MAIN: MOV BEGIN: MOV DL_200MS: X1: TH0,#HIGH(-10000) TL0,#LOW(-10000) TR0 MOV MOV SETB

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

TF0 TF0,$ R2,X1 02 CLR JNB DJNZ POP RET

Chương trình 3.2: tương tự chương trình 3.1, nhưng dùng timer0, mode2 Chương trình 3.3: tương tự chương trình 3.1, nhưng dùng timer0, mode3 Chương trình 3.4: tương tự chương trình 3.1, nhưng thời gian delay là 500ms, dùng timer1, mode1

1/-Viết chương trình điều khiển PPI8255: - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 (led 7 đoạn) - Nối JP12 với JP21 (led 7 đoạn)

DPTR,#2003H

@DPTR,A

DISPLAY BEGIN

Trang 36

Chương trình 3.5: Viết chương trình hiển thị các số từ 0 đến 7 trên các led 7 đoạn MAIN: MOV TMOD,#11H MOV MOV A,#89H ; 10001001, PC: NHAP, PA: XUAT, PB:XUAT MOVX BEGIN: CALL LJMP DISPLAY: PUSH A MOV A,#3FH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#01H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#06H MOV DPTR,#2000H MOVX @DPTR,A MOV A,#02H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

Trang 37

MOV A,#5BH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#04H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#00H MOVX @DPTR,A MOV A,#4FH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#08H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#66H MOV DPTR,#2000H MOVX @DPTR,A MOV A,#10H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#6DH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#20H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#00H MOVX @DPTR,A MOV A,#7DH MOV DPTR,#2000H MOVX @DPTR,A MOV A,#40H MOV DPTR,#2001H MOVX @DPTR,A

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

A

00

00

Trang 38

CALL DELAY MOV A,#0 MOVX @DPTR,A MOV A,#07 MOV DPTR,#2000H MOVX @DPTR,A MOV A,#80H MOV DPTR,#2001H MOVX @DPTR,A CALL DELAY MOV A,#0 MOVX @DPTR,A POP RET DELAY: PUSH MOV R0,#100 DJNZ R0,$ POP RET MA_7D: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END Chương trình 3.6: Viết chương trình hiển thị NGÀY-THÁNG-NĂM trên 8 led 7 đoạn. Chương trình 3.7: Viết chương trình hiển thị GIỜ-PHÚT-GIÂY trên 8 led

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 04: NGẮT (INTERRUPT)

Giúp sinh viên tìm hiểu và sử dụng các ngắt trong 8951: ngắt timer, ngắt ngoài

I. MỤC ĐÍCH: và ngắt truyền thông nối tiếp. II. CHUẨN BỊ THÍ NGHIỆM:

- Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, led 7 đoạn, bàn phím, counter

DANH SÁCH CÁC NGẮT TRONG 8951:

- Ngắt ngoài 0:

0003H Địa chỉ vector ngắt Khai báo sử dụng ngắt

Sự kiện ngắt: - SETB EA - SETB EX0 - SETB IT0 (ngắt cạnh) Xuất hiện cạnh xuống (hoặc mức thấp) tại chân INT0

- Ngắt timer0:

000BH Địa chỉ vector ngắt Khai báo sử dụng ngắt

Sự kiện ngắt - SETB EA - SETB ET0 Tràn timer 0

- Ngắt ngoài 1:

00013H Địa chỉ vector ngắt Khai báo sử dụng ngắt

Trang 39

Sự kiện ngắt: - SETB EA - SETB EX1 - SETB IT1 (ngắt cạnh) Xuất hiện cạnh xuống (hoặc mức thấp) tại chân INT1

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

- Ngắt timer1:

0001BH Địa chỉ vector ngắt Khai báo sử dụng ngắt

Sự kiện ngắt - SETB EA - SETB ET1 Tràn timer 1

- Ngắt truyền thông (truyền/nhận UART):

00023H Địa chỉ vector ngắt Khai báo sử dụng ngắt

Sự kiện ngắt - SETB EA - SETB ES Nhận được một byte hoặc truyền xong một byte trong SBUF

Tốc độ truyền nhận MODE autoreload (timer1)

- TH1 = -3 ; 9600bps - TH1 = -6 ; 4800bps - TH1 = -12 ; 2400bps - TH1 = -24 ; 1200bps

KHAI BÁO NGẮT

Sự kiện ngắt

Vector ngắt: . . RETI

SƠ ĐỒ CHƯƠNG TRÌNH KHI CÓ SỬ DỤNG NGẮT:

Trang 40

III. TIẾN TRÌNH THÍ NGHIỆM: 1/- Ngắt timer 0: - Nối JP7 với JP20 - Nối JP3 với JP21 Chương trình 4.1: Viết chương trình hiển thị các số tăng dần từ 00-99 trên 2 led 7 và 8 (sử dụng ngắt timer0 để quét led)

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

LJMP MAIN ORG 000BH LJMP QUET_LED

MOV TMOD,#11H MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) MOV CNT,#0 MOV R0,#LED7 MOV POS,#40H SETB EA SETB ET0 SETB TR0

CALL HEX_7S CALL DL_300MS INC CNT MOV A,CNT CJNE A,#100,BEGIN MOV CNT,#0 LJMP BEGIN CNT EQU 120 LED7 EQU 121 LED8 EQU 122 POS EQU 123 MAIN: BEGIN:

HEX_7S: . . RET

DL_300MS: . . RET

; tắt các led

Trang 41

;-------chương trình đổi số hex sang 2 mã 7 đoạn đặt vào LED1, LED2----- ;------chương trình delay 300ms dùng timer1------------------------------------- ; -------chương trình ngắt timer0---------------------------------------------------- PUSH PSW PUSH ACC MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) MOV P2,#00H MOV DPTR,#LED_7S MOV A,@R0 MOV P1,A MOV A,POS QUET_LED:

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

A

MOV P2,A RL MOV POS,A INC R0 CJNE R0,#123,EXIT MOV R0,#LED7 MOV POS,#40H

POP ACC POP PSW RETI DB ….

EXIT: LED_7S: END Chương trình 4.2: Viết chương trình điều khiển đèn giao thông với các thông số: thời gian đèn xanh: 15s, thời gian đèn vàng 3 giây (dùng ngắt timer0) 2/- Ngắt ngoài 01:

- Nối JP7 với JP20 - Nối JP3 với JP21 - Nối JP8 với JP15

CNT EQU 127 LED1 EQU 126 LED2 EQU 125 LED3 EQU 124 LED4 EQU 123 LED5 EQU 122 LED6 EQU 121 LED7 EQU 120 LED8 EQU 119 POS EQU 118 LJMP MAIN ORG 000BH LJMP QUET_LED ORG 0013H LJMP COUNTER

Trang 42

Chương trình 4.3: Viết chương trình đếm số xung tạo ra bởi mạch COUNTER, hiển thị số đếm trên 8 led dạng: cnt—000 (dùng ngắt ngoài 1 để đếm và ngắt timer0 để quét led) MAIN: MOV TMOD,#11H MOV CNT,#0 MOV POS,#01H MOV R0,#LED1 SETB EA SETB IT1

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

SETB EX1 SETB ET0 . . .

INC CNT RETI

;------chương trình ngắt ngoài 1-------------------------------- COUNTER: 3/- Ngắt truyền thông:

- Nối JP7 với JP27 - Nối JP3 với JP29

Chương trình 4.4: Viết chương trình thực hiện:

- Nhấn SW1: tăng nội dung ô nhớ 1 đơn vị, hiển thị ra led đơn và truyền về máy tính

Trang 43

- Nhấn SW2 giảm nội dung ô nhớ một đơn vị, hiển thị ra led và truyền về PC - Chương trình cho phép nhận 4 byte truyền đến từ PC và hiển thị ra led (tốc độ truyền 4800bps,n,8,1; sử dụng ngắt truyền thông)

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 05: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC

Giúp sinh viên tìm hiểu stepper motor và điều khiển hoạt động của động cơ này.

I. MỤC ĐÍCH: II. CHUẨN BỊ THÍ NGHIỆM:

- Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, led 7 đoạn, PPI8255, bàn phím, stepper motor

MG1

1 2 3

4 5 6

STEPPER MOTOR

CẤU TẠO MOTOR BƯỚC:

Gồm 4 cuộn dây: 1-2, 2-3, 4-5 và 5-6, tất cả có cùng số vòng dây và được chia thành 2 cuộn cách ly, sơ đồ mạch điều khiển như hình trang sau.

Nghịch

Thuận

CHIỀU QUAY

- Điều khiển một bước (1.8 độ): T1 1 0 0 0 1 T2 0 1 0 0 0 T3 0 0 1 0 0 T4 0 0 0 1 0

Trang 44

Ti = 0: transistor ngưng dẫn Ti = 1: transistor dẫn bão hoà

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

VCC

VCC

MG1

R15 270

R16 270

R17 220

R18 270

1 2 3

4 5 6

MOTOR STEPPER

D5

D6

D7

D8

LED4

LED3

LED2

LED1

D1

D2

D3

D4

4007

4007

4007

4007

R11

4K7

Q1 TIP122

Q2 TIP122

Q3 TIP122

Q4 TIP122

JP28

R12

4K7

R13

4K7

1 2 3 4 5 6 7 8

R O T O M _ P E T S

R14

4K7

Nghịch

Thuận

CHIỀU QUAY

- Điều khiển nửa bước (0.9 độ): T1 1 1 1 0 0 T2 0 0 1 1 1 T3 0 0 0 0 1 T4 1 0 0 0 0

0 0 1 0

0 0 1 1

0 0 0 1

1 0 0 1

Ti = 0: transistor ngưng dẫn Ti = 1: transistor dẫn bão hoà

III. TIẾN TRÌNH THÍ NGHIỆM:

Trang 45

- Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 (led 7 đoạn) - Nối JP12 với JP21 (led 7 đoạn) - Nối JP8 với JP29 - Nối JP7 với JP28

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

MOV MOV R2,#4 A,#01H

P1,A

MOV CALL DL_50MS A RL R2, BEGIN DJNZ LJMP MAIN

R2,#0 DPTR,#DU_LIEU MOV MOV

P1,A

MOV A, R2 MOVC A,@A+DPTR MOV CALL DL_500MS R2 INC CJNE R2,#8,BEGIN LJMP MAIN

Chương trình 5.1: Viết chương trình điều khiển động cơ quay thuận (quay từng bước) với tốc độ 6 vòng/ phút MAIN: BEGIN: ;-----chương trình delay 50ms dùng timer 0------------------------------ DL_50MS: . . RET END Chương trình 5.2: Giảm từng bước thời gian delay của CT5.1, cho biết tốc độ quay nhanh nhất của động cơ bước này. Chương trình 5.3: Chương trình điều khiển động cơ quay thuận (nửa bước). MAIN: BEGIN: ;-----chương trình delay 500ms dùng timer 1------------------------------ DL_500MS: . . RET DU_LIEU: DB ………. END

Trang 46

Chương trình 5.4: Viết chương trình thực hiện: - Nhấn SW1: quay thuận (1 bước) - Nhấn SW2: quay nghịch (1 bước)

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

- Nhấn SW3: dừng (mặc định: động cơ dừng)

Trang 47

Chương trình 5.5: Viết chương trình cho phép nhập vào số bước (lưu trong một ô nhớ RAM) dùng SW1 (tăng 10 đơn vị ), SW2 (giảm một đơn vị), nội dung ô nhớ hiển thị trên LED1-LED8: Count. 000; nhấn SW3 động cơ quay thuận với số bước đã đặt; nhấn SW4 động cớ quay nghịch với số bước đã đặt; trong khi quay, số đếm trên các LED giảm dần, khi giảm đến 0 thì động cơ dừng; trong khi quay: không cho phép thao tác phím.

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 06: ĐIỀU KHIỂN MA TRẬN LED

Giúp sinh viên tìm hiểu led ma trận 2 màu và phương pháp hiển thị thông tin

I. MỤC ĐÍCH: nhiều màu trên led. II. CHUẨN BỊ THÍ NGHIỆM:

- Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, led ma trận , PPI8255, bàn phím.

SƠ ĐỒ MẠCH: xem trang sau Hiển thị chữ J trên ma trận LED:

Hàng 01 Hàng 02 Hàng 03 Hàng 04 Hàng 05 Hàng 06 Hàng 07 Hàng 08 Cột 1 1 0 0 0 0 0 1 0 Cột 2 1 0 0 0 0 0 0 1 Cột 3 1 1 1 1 1 1 1 0 Cột 4 1 0 0 0 0 0 0 0 Cột 5 1 0 0 0 0 0 0 0

Trang 48

DATA_MATRIX = 41H, 81H, 7FH, 01H, 01H CATHODE_BLUE: 01H, 02H, 04H, 08H, 10H, hiển thị màu xanh CATHODE_RED: 01H, 02H, 04H, 08H, 10H, hiển thị màu đỏ

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

5VDC

MLED1

R31

R30

15K

15K

MATRIX LED 8x5

W2

W1

Q6

Q5

4007 X 8

A1013

A1013

C28

104

C27

104

D23

16

W1

D24

15

W2

R32

R33

15K

15K

W4

D25

Q7

17

Q8

W3

W3

C29

104

A1013

A1013

D26

14

C30

104

W4

D27

8

W5

R34

R35

D28

5

15K

15K

W6

Q9

Q10

W5

W6

D29

C31

104

6

W7

A1013

A1013

C32

104

D30

9

W8

R36

R37

15K

15K

W7

Q11

Q12

W8

C33

104

A1013

A1013

C34

104

1 B

2 B

3 B

4 B

5 B

1 R

2 R

3 R

4 R

5 R

3 1 2 1

2 1

0 1

8 1

1 3 4 7 1

12VDC

W1 W2 W3 W4 W5 W6 W7 W8

1 2 3 4 5 6 7 8 9

8 1

7 1

6 1

5 1

4 1

3 1

2 1

1 1

8 1

7 1

6 1

5 1

4 1

3 1

2 1

1 1

8 1

7 1

6 1

5 1

4 1

3 1

2 1

1 1

U16

U14

U15

ULN2803

1 T U O

2 T U O

3 T U O

4 T U O

5 T U O

6 T U O

7 T U O

8 T U O

ULN2803

ULN2803

1 T U O

2 T U O

3 T U O

4 T U O

5 T U O

6 T U O

7 T U O

8 T U O

1 T U O

2 T U O

3 T U O

4 T U O

5 T U O

6 T U O

7 T U O

8 T U O

RN1

1 N

2 N

3 N

4 N

5 N

6 N

7 N

8 N

I

I

I

I

I

I

I

I

M O C

1 N

2 N

3 N

4 N

5 N

6 N

7 N

8 N

1 N

2 N

3 N

4 N

5 N

6 N

7 N

8 N

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

I

M O C

M O C

10K

1 2 3 4 5 6 7 8

0 1

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

0 1

0 1

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

JP25

JP26

JP24

CATHOD BLUE

CATHOD RED

DATA_MATRIX

III. TIẾN TRÌNH THÍ NGHIỆM:

- Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP8 với JP29 - Nối JP11 với JP25 - Nối JP12 với JP26 - Nối JP13 với JP24 Chương trình 6.1: Viết chương trình hiển thị chữ J màu xanh trên ma trận LED. 127

MOV

POS,#0 DPTR,#2003H A,#80H ; ñònh caáu hình 8255 vôùi caùc port ñeàu

Trang 49

POS EQU MAIN: MOV MOV xuaát MOVX @DPTR,A BEGIN:

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

A,#0h DPTR,#2002H ; PC = 0 @DPTR,A ; TAT LED

A,POS DPTR,#COT A,@A+DPTR DPTR,#2000H ; PA = 01H @DPTR,A

A,POS DPTR,#DU_LIEU A,@A+DPTR DPTR,#2002H ; PC = DATA @DPTR,A

DELAY POS A,POS A,#5,BEGIN POS,#0 BEGIN

41H, 81H, 7FH, 01H,01H 01H, 02H, 04H, 08H, 10H

; ******************************************** MOV MOV MOVX MOV MOV MOVC MOV MOVX MOV MOV MOVC MOV MOVX CALL INC MOV CJNE MOV LJMP ;------------------------delay--------------------------------- DELAY: MOV TMOD,#01H MOV TH0,#HIGH(-100) MOV TL0,#LOW(-100) SETB TR0 CLR TF0 JNB TF0,$ CLR TR0 RET ;---------------------------------------------------------------- DU_LIEU: DB COT: DB END Chương trình 6.2: Hiển thị chữ A màu đỏ trêm ma trận led Chương trình 6.3: Hiển thị chữ H màu cam trên MT led Chương trình 6.4: hiển thị các số tăng dần từ 0 – 9 trên ma trận led (dùng ngắt timer 0 để quét led), thời gian tăng số là 0.5 giây (dùng timer 1)

Trang 50

Chương trình 6.5: Viết chương trình hiển thị chữ T trên ma trận led, chương trình cho phép thay đổi thời gian quét màu đỏ (dùng SW1), thời gian quét màu xanh (dùng SW2) để tạo hiệu ứng TRUE COLOR.

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 07: LCD TC1602A

Giúp sinh viên tìm hiểu LCD và viết chương trình giao tiếp LCD

I. MỤC ĐÍCH: II. CHUẨN BỊ THÍ NGHIỆM:

- Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, LCD, bàn phím.

LCD1

SƠ ĐỒ MẠCH:

THIS IS THE LCD

P M A

2 LINES x 16 CHARACTERS L

/

S C

T S N O C

D N G

C C V

A K

0 D

1 D

2 D

3 D

4 D

5 D

6 D

7 D

S R

W R

0 7 8 9 1

1 1

2 1

3 1

4 1

4 5 6 3

1 2

5 1

6 1

VCC

R65 5/3W

R10

10K

Q13

VCC

A1013

R66

4K7

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

JP23

JP22

DATA_LCD

CONTROL_LCD

- CONST: contrast, chỉnh độ tương phản (độ sáng của hình ảnh trên LCD)

- CS: chip selection, tác động bằng cạnh xuống, cho phép chốt dữ liệu

- RS: register selection, chọn thanh ghi lệnh (RS=0) hoặc thanh ghi dữ liệu (RS = 1)

- R/W: chân đọc/ghi

- D7 – D0: data bus, hai hướng

Trang 51

- A, K: anod và cathode của đèn sáng nền của LCD

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

Tập lệnh LCD:

TẬP LỆNH (MÃ HEX) Chức năng

01H Xóa màn hình hiển thị

02H Trở về đầu dòng

04H Dịch con trỏ sang trái

06H Dịch con trỏ sang phải

05H Dịch hiển thị sang phải

07H Dịch hiển thị sang trái

08H Tắt con trỏ, tắt hiển thị

0AH Tắt hiển thị, bật con trỏ

0CH Bật hiển thị, tắt con trỏ

0EH Bật hiển thị, nhấp nháy con trỏ

0FH Tắt hiển thị, nhấp nháy con trỏ

10H Dịch vị trí con trỏ sang trái

14H Dịch vị trí con trỏ sang phải

18H Dịch toàn bộ hiển thị sang trái

1CH Dịch toàn bộ hiển thị sang phải

80H Đưa con trỏ về đầu dòng 1

C0H Đưa con trỏ về đầu dòng 2

38H Xác lập chế độ 2 dòng và độ phân giải chữ 5x7

III. TIẾN TRÌNH THÍ NGHIỆM

- Nối JP7 với JP22

- Nối JP8 với JP23

- Nối JP3 với JP29

Chương trình 7.1: Viết chương trình hiển thị

“K. DIEN-DIEN TU” - dòng 1

“PTN TDH-VDK” - dòng 2

trên LCD

Trang 52

; = = = = = = = = = = = = = = = = = ; P1.0 - > D0 ; P1.1 - > D1

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

; P1.2 - > D2 ; . . . ; P1.7 - > D7 ; P3.0 - > Enable ; P3.1 - > RS ; P3.2 - > RW ;*******************************************************

P3.4 P3.2 P3.3 P3.5 BIT BIT BIT BIT

; bật đèn background LCD ;RS low ;RW low ;Enable

TH0,#HIGH(-50000) ; DELAY 50ms ; đặt chế độ 2 dòng EN RS RW LAMP ;---------------------------------------------------------------------------------- MAIN:

; bật hiển thị

;xoá màn hình

CLR LAMP clr RS clr RW setb EN mov TMOD,#01h mov TL0,#LOW(-50000) mov MOV p1,#38h call GHI_LENH call GHI_LENH call Delay MOV p1,#0ch call GHI_LENH call GHI_LENH MOV p1,#01h call GHI_LENH call GHI_LENH call DONG_01 call DONH_02 sjmp $ ;------------------------------------------------------------------- write: push acc

write1:

acc mov a,#0 movc a,@a+dptr cjne a,#2,write_data ; asc = 2: kết thúc pop ret

Trang 53

write_data: MOV p1,A

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

call GHI_DATA inc dptr sjmp write1 ;-------------------------------------------------------------------- delay:

clr TF0 setb TR0 jnb TF0,$ clr TR0 ret ;----------------------------------------------- DONG_01: ; đưa con trỏ về đầu dòng 01

MOV p1,#080h call GHI_LENH mov dptr,#DT_DONG1 call write ret ;------------------------------------------------- DONG_02: ; đưa con trỏ về đầu dòng 02

MOV p1,#0c0h call GHI_LENH mov dptr,#DT_DONG2 call write ret ;-------------------------------------------------- GHI_LENH:

clr RS clr RW clr EN nop setb EN ret GHI_DATA:

Trang 54

setb RS nop wait: clr RW clr EN nop setb EN nop

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

MOV p1,#0ffh ;configure port1 to input mode setb RW clr RS clr EN nop setb EN

; kiểm tra bit 7: busy flag ; chôø

MOV A,p1 anl a,#80h cjne a,#00h,wait1 nop nop nop nop nop nop ret ; kieåm tra Busy Flag nop wait1: DT_DONG1: db ' K. DIEN-DIEN TU', 02H DT_DONG2: db ' PTN TDH-VDK ', 02H

Trang 55

end Chương trình 7.2: Viết chương trình hiển thị NGÀY-THÁNG-NĂM trên dòng 01 và GIỜ-PHÚT-GIÂY trên dòng 02.

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

BÀI 08: ADC-DAC

Giúp sinh viên tìm hiểu thiết bị biến đổi tương tự – số và số tương tự 8 bit:

I. MỤC ĐÍCH: ADC0804 và ADC0808 II. CHUẨN BỊ THÍ NGHIỆM:

- Bộ thí nghiệm DHC-uPC8951 - Máy tính - Kiểm tra cable truyền - Xem sơ đồ mạch trên các module: microcontroller, LCD, bàn phím, module ADC và DAC.

VCC

R5 1K

R6 330

VCC

R4 1K

C2

VCC

100uF/25V

2

8

R3 470K

U8B

JR4558

U7

JP16

U9

5

+

7

+ S V

LM35

3

6 7

6

-

+IN -IN

ADJ

VCC

R1

9

VREF/2

4

D N G

1K

19 4

R7 1K

CLKR CLKIN

1

SƠ ĐỒ MẠCH ADC:

D A T A _ A D C

18 17 16 15 14 13 12 11

1 2 3 4 5 6 7 8

DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7

-VCC VCC

C1

5

U8A

VCC

8

INTR

R9

2 3 1

JR4558

RD WR CS

3

1nF

+

1

1K

R2 10K

2

-

ADC0804

4 -VCC

JP17

R8 1K

1 2 3 4 5 6 7 8

C O N T R O L _ A D C

KÝ HIỆU NGÕ VÀO/RA VREF

CLKIN/CLKR

NGÕ VÀO VIN+ VIN- WR RD DB7 –DB0 NGÕ RA INTR

CHỨC NĂNG Ngõ vào điện áp chuẩn,cho phép chỉnh thang đo. Các ngõ vào cho mạch dao động RC Ngõ vào đo + Ngõ vào đo - Ngõ vào khởi động ADC ( START) Ngõ vào điều khiển đọc số liệu. Ngõ ra dữ liệu số 8 bit Ngõ ra báo tín hiệu biến đổi đã sẳn sàng (EOC: end of converter).

Trang 56

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

ADC biến đổi điện áp :

VIN = VIN + - VIN -

IN

255

Thành giá trị số 8 bit ở ngõ ra:

V V

REF

N =

Trong đó: Vref = R6*VCC/(R5+R6)

-12VDC

R29

VCC

10

VCC

U21

DAC0808

D20

C13

3 1

C12

4007

JP18

104

1

100uF

GND

D22

C14

C C V

LED

104

3

VEE

16

COMPS

R56

VCC

2K7

4

Iout

8 7 6 5 4 3 2 1

12 11 10 9 8 7 6 5

SƠ ĐỒ MẠCH DAC:

C A D _ A T A D

D0 D1 D2 D3 D4 D5 D6 D7

R58 150

2

U22B

R68 270

4

U22A

JR4558

4

- Iout F E R V

+ F E R V

6

JR4558

-

7

2

-

4 1

5 1

1

5

+

3

+

8

R55

+12VDC

R69

R53

8

R51 2K7

R52 10

820

10K

2K7

R57 2K7

D21

R54

5V1

JP19

C17

C16 CAP

5K

2 1

104

DAC_OUT

- D7-D0: 8 bit số ngõ vào

- Vref+, Vref-: các chân điện áp chuẩn

- Vout = (D7/2 + D6/4 +…+ D0/256)*Vref hoặc

Vout = N*Vref/255

III. TIẾN TRÌNH THÍ NGHIỆM

1/- ADC0804:

Trang 57

- Nối JP7 với JP16 - Nối JP8 với JP17 - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 - Nối JP12 với JP21

Phòng thí nghiệm Tự động hoá – Vi điều khiển

Tài liệu thí nghiệm Vi điều khiển

Chương trình 8.1: Viết chương trình đọc giá trị ADC và hiển thị trên 6 led 7 đoạn (led3 – led8): 000doC (chỉnh biến trở để nhiệt độ đo được đúng với nhiệt độ phòng)

Chương trình 8.2: Viết chương trình cho phép lấy mẫu nhiệt độ (1s một mẫu) và truyền về PC (tốc độ 4800bps,n,8,1) để khảo sát sự thay đổi nhiệt độ trong phòng thí nghiệm. Trên giao diện chương trình máy tính chọn Emulator và click START để bắt đầu (chương trình cho phép vẽ các giá trị nhiệt độ nhận được trên đồ thị)

2/- DAC0808:

- Nối JP7 với JP18 - Nối JP8 với JP29 - Nối JP1 với JP9 - Nối JP4 với JP10 - Nối JP11 với JP20 - Nối JP12 với JP21

Chương trình 8.3: Viết chương trình cho phép nhập vào một số 0 – 255 bằng SW1 (tăng 10 đơn vị) và SW2 (giảm 1 đơn vị), hiển thị trên 3 led 6,7,8. Nhấn SW3 để xuất ra ngõ vào ADC, quan sát trạng thái sáng của led ở ngõ ra DAC và dùng VOM để đo điện áp.

Trang 58

Chương trình 8.4: Viết chương trình cho phép nhận một byte truyền từ PC (4800,n,8,1) và xuất ra DAC.