1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Tài liệu Học nhanh về điều khiển pdf

22 441 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giao tiếp với PPI8255
Định dạng
Số trang 22
Dung lượng 292,74 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Từng port có thể được lập trình là input hay output một cách linh hoạt bằng phần mềm so sánh với việc thiết kế I/O port dùng 74LS244 và 74LS373 ở chương 1 → input hay output được thi

Trang 1

3 Thiết kế – ứng dụng

3.1 Giao tiếp với PPI8255

3.1.1 Giới thiệu PPI8255

- PPI: programmable peripheral interface – giao tiếp

ngoại vi lập trình được

- Dùng 8255 để mở rộng I/O Từng port có thể được

lập trình là input hay output một cách linh hoạt bằng

phần mềm (so sánh với việc thiết kế I/O port dùng

74LS244 và 74LS373 ở chương 1 → input hay

output được thiết kế “cứng”, cố định)

/RD: Read (Nối với /RD (P3.7) của 8051.)

/WR: Write (Nối với /WR của 8051.)

RESET: khởi động lại 8255 (Thường được nối với mạch reset của 8051 hoặc GND /CS: chọn chip.)

A0, A1: địa chỉ port (Nối với bus địa chỉ.)

/CS A1 A0 Mô tả

0 0 0 Port A

0 0 1 Port B

0 1 0 Port C

0 1 1 Từ điều khiển (control word)

1 × × 8255 không được chọn

- Thanh ghi điều khiển:

o Hoạt động I/O (D7 = 1)

PCL

0: output 1: input

PB 0: output 1: input

Mode0: mode 0 1: mode 1

PCH

0: output 1: input

PA0: output 1: input

Mode 00: mode 0 01: mode 1 1X: mode 2

D0

1

Trang 2

D0 X

X X

0

Chọn bit ở port C

- Hoạt động I/O cơ bản có 3 mode:

o Mode 0: I/O đơn giản

o Mode 1: I/O có bắt tay

o Mode 2: bus 2 chiều

3.1.2 Thiết kế - Giao tiếp

Trang 3

Thieát keá 1

+5V

D0 D2 D4 D5 D7

D0 D2 D4 D5 D7

D0 D2 D4 D5 D7

A14 A15

A9 A8

A11 A13

A0 A2 A4 A5 A7

A0

A13 A15

U6

8255

34 32 30 29 27

5 36

9

35 6

4 2 40 39 37 18 20 22 24 14 16 13 12 10

D0 D2 D4 D6

RD WR

A0

RESET CS

PA0 PA2 PA4 PA6

PB0 PB2 PB4 PB5 PB7 PC0 PC2 PC3 PC5 PC7

J4

1 3 4 6 8

J3

1 3 5 6 8

J2

1 3 5 7

U1

AT89C51

19 29

XTAL1 PSEN

U3

74LS373

3 7 13 14 18

1 11

2 6 12 15 19

D0 D2 D4 D6

OC G

Q0 Q2 Q4 Q6

U2

74LS138

1 3 6 5

15 13 12 10 9

A B

G1 G2A G2B

Y0 Y1 Y3 Y5 Y7

Ñòa chæ 8255 (base addr.): 4000h (16 bit)

D0 D2 D4 D6

D0 D2 D4 D6

A0 A2 A4 A6

15 13 11 9

A C

G1 G2A

Y0 Y2 Y4 Y6

U6

8255

34 32 30 28

5 36

9

35 6

4 2 40 38 18 20 22 24 14 15 17 12 10

D0 D2 D3 D5 D7

RD WR

A0

RESET CS

PA0 PA2 PA3 PA5 PA7 PB0 PB1 PB3 PB5 PB7 PC0 PC2 PC4 PC6

J4

1 3 5 7

J3

1 2 4 6 8

J2

1 3 4 6 8

U1

AT89C51

19 29

XTAL1 PSEN

U3

74LS373

3 7 13 17

1 11

2 6 12 16

D0 D2 D3 D5 D7 OC G

Q0 Q2 Q3 Q5 Q7

Ñòa chæ 8255 (base addr.): 40h (8 bit)

Trang 4

VD1: Khởi động 8255:

PA xuất, PB xuất, PC xuất → Từ điều khiển: 80h

PA xuất, PB nhập, PC xuất → Từ điều khiển: 82h

PA xuất, PB nhập, PC nhập → Từ điều khiển: 8Bh

VD2: Viết chương trình

- Khởi động 8255: PA xuất, PB nhập, PC nhập

- Liên tục đọc dữ liệu từ Port 1 của 8951, xuất dữ liệu đó ra 8255

Chương trình cho sơ đồ ‘Thiết kế 1’:

Trang 5

3.2 Giao tiếp với LED 7 đoạn

Trang 6

Queùt LED

p g e

p f

e c

p f

d c

+5V

7 6 4 2 1 9 10

8 3

5

A B C D E F G

A1 A2

P

LED1 7 6 4 2 1 9 10

8 3

5

A B C D E F G

A1 A2

P

LED2 7 6 4 2 1 9 10

8 3

5

A B C D E F G

Q1 A1015

Q2 A1015

Q3 A1015

VD: Hieån thò ‘123’ leân LED 7 ñoaïn

MOV P3,#0FFh ; tắt tất cả các LED

BEGIN: MOV P2,#0B0h ; xuất ra P2 mã của '3'

CLR P3.0 ; bật LED1

ACALL DELAY ; delay

SETB P3.0 ; tắt LED1

MOV P2,#0A4h ; xuất ra P2 mã của '2'

CLR P3.1 ; bật LED2

ACALL DELAY ; delay

SETB P3.1 ; tắt LED2

MOV P2,#0F9h ; xuất ra P2 mã của '1'

CLR P3.2 ; bật LED3

ACALL DELAY ; delay

SETB P3.2 ; tắt LED3

Trang 7

MOV TMOD,#06h ; counter 0, mode 2

RET

BIN2BCD:

Trang 8

Thieát keá 3 port xuaát ra LED

Ñòa chæ (8-bit): LED1: A0h

D0 D1 D2 D3 D4 D5 D6 D7

D0 D1 D2 D3 D4 D5 D6 D7

A0 A1 A2 A3 A4 A5 A6 A7

D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7

LED2

7 6 4 2 1 9 10

8 3

A B C D E F G

A1 A2

LED3

7 6 4 2 1 9 10

8 3

A B C D E F G

A1 A2

LED1

7 6 4 2 1 9 10

8 3

A B C D E F G

A1 A2

30

31

1 2 3 4 5 6 7 8

RST

XTAL2 XTAL1 PSEN

ALE/PROG

EA/VPP

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

1 2 3 6 4 5

15 14 13 12 11 10 9 7

A B C G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

U6

74LS373

3 4 7 8 13 14 17 18

1 11

2 5 6 9 12 15 16 19

D0 D1 D2 D3 D4 D5 D6 D7 OC G

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

7402

R4 470x8

Trang 9

3.3 Giao tieáp vôùi baøn phím hex

U1

AT89C51

9 18 19 29

30

31

1 2 3 4 5 6 7 8

RST XTAL2 XTAL1 PSEN

ALE/PROG

EA/VPP

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

1 5 9 D A 6 2

E

B F

3 7

; Bàn phím hex nối vào P1

; Chuơng trình hiển thị phím nhấn ra LED 7 đoạn

; P1.0-P1.3: columns

; P1.4-P1.7: rows

; Địa chỉ LED: A000h

Trang 10

+5V Analog Input

1 2 3 4 5 6 7 8 21

R2 10K

2 U2

ADC0804

6 7 9

11 12 13 14 15 16 17 18

19 4 5

1 2 3

+IN -IN VREF/2

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

CLKR CLKIN INTR

CS RD WR

R1 10K C1 150p

ADC0804 là bộ chuyển đổi tương tự sang số 8 bit

Xét sơ đồ như hình:

- Điện trở 10K và tụ 150pF nối với đầu vào CLKR và CLKIN như hình → bộ phát xung nhịp bên trong tạo tần số hoạt động là 640KHz

- Một lần biến đổi được bắt đầu bằng một xung START (tích cực mức thấp) ngắn hạn ở ngõ vào /WR Sau thời gian biến đổi khoảng 100µs, ngõ ra /INTR chuyển sang LOW báo hiệu là kết thúc quá trình biến đổi (EOC – End of Conversion) VD: Đọc AD từ port 1, lưu vào ô nhớ 40h và xuất ra Port 2

Trang 11

JB P3.0,$ ;chờ biến đổi xong

MOV A,P1 ;đọc data vào A

MOV 40h,A ;lưu vào ô nhớ 40h

MOV P2,A ;xuất ra P2

SJMP LOOP

3.5 Giao tieáp vôùi maøn hình LCD

+5V

+5V U1

AT89C51

9 18 19 29

30

31

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28

10 11 12 13 14 15 16 17

39 38 37 36 35 34 33 32

RST XTAL2 XTAL1 PSEN

ALE/PROG

EA/VPP

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

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

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

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

5 6

7 8 9 10 11 12 13 14

Contrast RS

R/W EN

D0 D1 D2 D3 D4 D5 D6

0 0 0 0 0 0 0 1 ID S Set Cursor Move Direction ID: increment the cursor after each

byte written to display is set S: shift the display when each byte

is written to display

0 0 0 0 0 0 1 D C B Enable Display/Cursor D: display on(1)/ off(0)

C: cursor on(1) / off(0) B: cursor blink on(1)/ off(0)

0 0 0 0 0 1 SC RL - - Move Cursor / Shift Display SC: display shift on(1)/ off(0)

RL: direction shift righ(1)/ left(0)

0 0 0 0 1 DL N F - - Set Interface Length DL: set data length 8(1)/ 4(0)

N: number of line 1(0)/ 2(1) F: character font 5x10(1)/ 5x7(0)

0 0 0 1 A A A A A A Move Cursor into CG RAM A: ađress

0 0 1 A A A A A A A Move Cursor to Display A: ađress

0 1 BF - - - Poll Busy Flag BF: this bit is set while the LCD is

processing

1 0 D D D D D D D D Write a Character on the

Display at the Current Cursor Position

D: data

1 1 D D D D D D D D Read the Character on the

Display at the Current Cursor Position

D: data

Trang 12

VD: Xuaát ra LCD chuoãi “Hello”

CSTROBE: ;command strobe

ACALL READY ;is LCD readỷ

MOV P1,A ;xuất mã lệnh

DSTROBE: ;data strobe

ACALL READY ;is LCD readỷ

MOV P1,A ;xuất dữ liệu

SETB RS ;RS=1 for data

CLR RW ;R/W=0 to write to LCD

SETB E ;E=1 -> tạo cạnh xuống

CLR E ;E=0, chốt

RET

; kiểm tra cờ BF

READY: SETB P1.7 ;P1.7: input

CLR RS ;RS=0: thanh ghi lệnh

Trang 13

VD2: Ñoïc baøn phím Hex → xuaát ra LCD

ACALL READY ;is LCD readỷ

MOV P1,A ;xuất mã lệnh

ACALL READY ;is LCD readỷ

MOV P1,A ;xuất dữ liệu ra P1 SETB RS ;RS=1: dữ liệu

Trang 14

CONT: MOV P2,A ; nối col i -> GND

MOV A,P2 ; đọc row

JNB ACC.4,ROW_0 ; xét xem row nàỏ JNB ACC.5,ROW_1

JNB ACC.6,ROW_2

JNB ACC.7,ROW_3

RL A ; chuẩn bị nối GND

INC R7 ; cột tiếp theo

CJNE R7,#4,CONT ; lần luợt nối GND 4 cột SJMP SCAN ; quay lại quét từ cột 0 ROW_0: MOV A,R7 ; Row=0, Col=R7

Trang 15

4 Lập trình hợp ngữ

4.1 Một số cấu trúc lập trình

Nhảy có điều kiện:

bit = 1 JNB bit, rel JB bit, rel / JBC bit, rel

Rn = 0 DJNZ Rn, rel

direct = 0 DJNZ direct, rel

A ≠ direct CJNE A, direct, rel

A ≠ #data CJNE A, #data, rel

Rn ≠ #data CJNE Rn, #data, rel

@Ri ≠ #data CJNE @Ri, #data, rel

Nhảy không điều kiện: AJMP, LJMP, SJMP

Cấu trúc “repeat… until”

repeat <action> until <condition>

REPEAT: <action>

JUMP_if_not_<condition>,REPEAT

Cấu trúc “while… do”

while <condition> do <action>

START: JUMP_if_not_<condition>,STOP

<action>

SJMP START

STOP:

Cấu trúc “if… then… else”

if <condition> then <action 1> else <action 2>

Trang 16

Cấu trúc “case… of…”

4.2 Một số ví dụ

VD1: LED nhấp nháy

29 30 31

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17

39 38 37 36 35 34 33 32

RST

XTAL2 XTAL1

PSEN ALE/PROG EA/VPP

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

P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INTO P3.3/INT1 P3.4/TO P3.5/T1 P3.6/WR P3.7/RD

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

12MHz C2

Trang 17

29 30 31

1 2 3 4 5 6 7 8

21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17

39 38 37 36 35 34 33 32

RST

XTAL2 XTAL1

PSEN ALE/PROG EA/VPP

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

P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INTO P3.3/INT1 P3.4/TO P3.5/T1 P3.6/WR P3.7/RD

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

12MHz C2

Trang 18

SJMP LOOP DELAY: MOV R6, #0FFh LP2: MOV R7, #0FFh LP1: DJNZ R7, LP1

RET

Trang 19

Ôn tập

Chương 1: Khái niệm cơ bản

- Sơ đồ khối một hệ vi xử lý tổng quát

- Bộ nhớ: ROM (các loại?), RAM

o Các chân địa chỉ: số chân ↔ dung lượng

o Các chân dữ liệu

o Các chân điều khiển: RAM có /OE và /WE, ROM chỉ có /OE Trong hệ vi xử lý: /OE ↔ /RD, /WE ↔ /WR

o Địa chỉ chip nhớ = địa chỉ làm cho chân /CS (/CE) tích cực → mạch giải mã địa chỉ

- Giải mã địa chỉ: toàn phần, một phần

o Bus địa chỉ có 16-bit, chip nhớ có n chân địa chỉ:

ƒ (16-n) đường tín hiệu đưa vào mạch GMĐC → GM toàn phần,

ƒ ít hơn (16-n) đường tín hiệu đưa vào mạch GMĐC → GM một phần

o Mạch GMĐC: thường dùng 74LS138, 74LS139, các cổng Logic

- Thiết kế port nhập (dùng 74LS244), port xuất (dùng 74LS373)

Yêu cầu chương 1:

- Nhìn sơ đồ → xác định địa chỉ

- Bản đồ địa chỉ → vẽ sơ đồ (thiết kế)

Chương 2: Họ VĐK 8051

- Đặc tính kỹ thuật:

o Không gian bộ nhớ dữ liệu: 64KB, không gian bộ nhớ chương trình: 64KB (Bộ nhớ on-chip 89C51: 128 byte RAM, 4K EEPROM.)

o 4 port I/O 2 chiều

o 2 timer

o 1 port nối tiếp

o 5 nguồn ngắt

- Truy xuất ô nhớ → phải biết các kiểu định địa chỉ (cách chỉ định ô nhớ)

- Truy xuất RAM nội? Truy xuất bộ nhớ dữ liệu mở rộng (RAM ngoài)? Truy xuất bộ nhớ chương trình?

- Một số lệnh thường dùng (các lệnh trong các ví dụ)

- Kết hợp các lệnh nhảy để thực hiện các cấu trúc: repeat … until, while … do, if

… then … else, …

- Timer:

o Thanh ghi TMOD? Các bit: TFi, TRi (thanh ghi TCON)?

o Dùng timer để định thời như thế nào?

- Sử dụng port: muốn 1 port là input thì làm như thế nào?

- Port nối tiếp:

Trang 20

o Thanh ghi SCON?

o Dùng Timer 1 để tạo baud rate → xác định trị nạp cho TH1?

o Xuất một ký tự ra port nối tiếp?

o Nhận một ký tự từ port nối tiếp?

- Ngắt:

o Thanh ghi IE, IP? Các bit: ITi?

o Bảng vector ngắt?

o Cấu trúc một chương trình có sử dụng ngắt?

Yêu cầu chương 2 :

Viết chương trình cho 8051:

- Tra bảng

- Truy xuất RAM ngoài, RAM trong

- Copy khối dữ liệu

- Đổi binary → BCD

- Delay (ngắn/dài) không dùng Timer

- Delay (ngắn/dài) dùng Timer

- Phát/thu 1 ký tự qua port nối tiếp

- Trình phục vụ ngắt thu/phát dữ liệu qua port nối tiếp

- Tạo xung vuông dùng ngắt

- Xử lý ngắt ngoài tác động mức/cạnh

Chương 3: Ứng dụng

- Cách quét LED 7 đoạn

- Các cách đọc A/D

- Cách quét bàn phím HEX

- Khởi động 8255 Đọc/xuất dữ liệu qua các port A, B, C (mode 0)

Trang 21

Tóm tắt

Sinh viên nên tự lập bảng tóm tắt:

- Bảng tổng kết các lệnh nhảy

bit = 1 JNB bit, rel JB bit, rel / JBC bit, rel

Rn = 0 DJNZ Rn, rel

direct = 0 DJNZ direct, rel

A ≠ direct CJNE A, direct, rel

A ≠ #data CJNE A, #data, rel

Rn ≠ #data CJNE Rn, #data, rel

@Ri ≠ #data CJNE @Ri, #data, rel

- Các thanh ghi SFR

- Công thức tính giá trị nạp cho TH1 để tạo baud rate cho port nối tiếp

Trang 22

- Thanh ghi điều khiển 8255 ở mode 0:

- Bảng mã LED 7 đoạn

Hiển thị Anod chung Cathode chung

Ngày đăng: 11/12/2013, 14:15

HÌNH ẢNH LIÊN QUAN

Queùt LED a a - Tài liệu Học nhanh về điều khiển pdf
ue ùt LED a a (Trang 6)
MOV DPTR,#LED7SEG ; DPTR trỏ đến bảng mã LED - Tài liệu Học nhanh về điều khiển pdf
7 SEG ; DPTR trỏ đến bảng mã LED (Trang 6)
; tra bảng, đổi BCD -&gt; LED7 đoạn MOV A,40h             - Tài liệu Học nhanh về điều khiển pdf
tra bảng, đổi BCD -&gt; LED7 đoạn MOV A,40h (Trang 7)
- Ñieän trôû 10K vaø tuï 150pF noái vôùi ñaàu vaøo CLKR vaø CLKIN nhö hình → boä phaùt xung nhòp beân trong taïo taàn soá hoaït ñoäng laø 640KHz - Tài liệu Học nhanh về điều khiển pdf
ie än trôû 10K vaø tuï 150pF noái vôùi ñaàu vaøo CLKR vaø CLKIN nhö hình → boä phaùt xung nhòp beân trong taïo taàn soá hoaït ñoäng laø 640KHz (Trang 10)
3.5 Giao tieáp vôùi maøn hình LCD - Tài liệu Học nhanh về điều khiển pdf
3.5 Giao tieáp vôùi maøn hình LCD (Trang 11)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w