Giao tiếp cách ly dùng relay... Giao tiếp công suất bằng SSR – Solid State Relay... Sơ đồ cấu tạo Stepper Motor... Góc quay của động cơ bước - Stepper Motor... Các loại St
Trang 1Ghép nối với vào ra
Input / Output
Peripheral Interfacing
Phạm Thế Duy
(ptduy@yahoo.com)
Trang 2Các khái niệm chung
Trang 3Các cổng vào ra
Là thiết bị ngăn cách giữa BUS dữ liệu và các thiết bị ngoại vi Các cổng vào ra sẽ mở để CPU giao tiếp với thiết bị ngoại vi khi CPU cấp đúng địa chỉ của nó
Là các vi mạch tích hợp giao tiếp với BUS dữ liệu của CPU bằng cổng 03 trạng thái
Trang 4Phân loại các cổng vào ra.
Theo kiểu truyền dữ liệu:
Vào ra song song.
Vào ra nối tiếp.
Theo tín hiệu truyền:
Vào ra số
Vào ra tương tự: ADC, DAC
Theo cơ chế hoạt động của vào ra:
Vào ra cơ bản.
Vào ra lập trình.
Theo phương pháp điều khiển của CPU:
Vào ra theo phương pháp quét vòng: polling
Vào ra theo ngắt: Interrupt.
Vào ra bằng thâm nhập trực tiếp bộ nhớ: DMA – Direct Memory Access.
Trang 5Các thiết bị ngoại vi
Các thiết bị chỉ vào
Các thiết bị chỉ ra
Các thiết bị vừa vào vừa ra
Giống như bộ nhớ các cổng vào ra sẽ được CPU định vị bằng một vi trí cố định gọi là địa chỉ cổng
Khác với bộ nhớ mỗi chip vào ra chỉ có một hoặc một vài địa chỉ
Trang 6Các cổng ra
Giống như bộ nhớ, CPU có thể ghi dữ liệu tới các cổng ra
Khi ghi dữ liệu tới bộ nhớ sử dụng
lệnh MOV [BX],AL
Khi ghi dữ liệu tới vào ra sử dụng lệnh OUT DX,AL
Trang 7Các cổng vào
Giống như bộ nhớ, CPU có thể đọc dữ liệu từ các cổng vào
Khi đọc dữ liệu tới bộ nhớ sử dụng
lệnh MOV AL,[BX]
Khi đọc dữ liệu tới vào ra sử dụng
lệnh IN AL,DX
Trang 8Địa chỉ hoá bộ nhớ và vào ra
Bộ nhớ và vào ra:
Có thể truy cập bằng cùng một lệnh hoặc khác lệnh.
Địa chỉ hoá bằng toàn bộ hoặc một phần BUS địa chỉ.
Có thể sử dụng chung các tín hiệu điều khiển hoặc sử dụng riêng các tín hiệu điều khiển.
Có thể nhiều hơn hoặc 216 cổng.
Vào ra có thể truy cập bằng không gian địa chỉ dành cho bộ nhớ.
Trang 9Hai dạng của lệnh IN/OUT
Dạng 2
IN AL, DX Hoặc
OUT DX, AL
Trang 10Cổng vào ra 8 và 16 bit
Với 8088 :
OUT DX, AX ; AX = 76A9H
Cấp địa chỉ và ALE
Ghi byte thấp (A9), IOW
Định thời ghi
Cấp địa chỉ (649) và ALE
Định thời ghi
Với 8086 :
OUT DX, AX ; AX = 76A9H
Cấp địa chỉ và ALE
Ghi một từ (76A9), IOW
Định thời ghi
Trang 11Các cổng vào ra cơ bản
Trang 12Thực hiện cổng ra đơn giản
Sử dụng 8 đèn LED
Trang 13D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
: mov al,55h out dx, al :
: :
Trang 14Thực hiện cổng ra đơn giản
Sử dụng 8 đèn LED
Các LED sẽ sáng theo giá trị trên BUS dữ liệu, sẽ không điều khiển được theo ý muốn
Cần sử dụng vi mạch ra và bộ giải mã địa chỉ sao cho LED chỉ được cấp dữ liệu khi CPU cấp đúng địa chỉ bằng lệnh OUT (giả sử chúng ta cần địa chỉ là F000H)
Trang 15Sử dụnng 74LS245 và bộ giải mã địa chỉ
: mov al, 55H mov dx, F000H out dx, al
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
A0 A1 A2 A3 A4 A5 A6 A7
E DIR 5V
A 1 5
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1 A
0 IOW
Trang 16Thực hiện cổng ra đơn giản
Sử dụng cổng đệm 74245 dữ liệu sẽ bị mất sau khi thực hiện lệnh OUT, do cổng đóng lại
Làm sao để LED vẫn sáng?
Vẫn sử dụng chip vào ra và bộ giải mã để dữ liệu chỉ cung cấp tới LED khi CPU cung cấp đúng địa chỉ bằng lệnh OUT, nhưng chip cần có chức năng giữ lại dữ liệu cho tới khi có lệnh OUT kế tiếp
Trang 17Sử dụng 74LS373 và bộ giải mã địa chỉ
: mov al, 55 mov dx, F000 out dx, al :
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A
0 IOW
74LS373
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7
OE LE
Trang 18Thực hiện cổng vào đơn giản
Sử dụng 8 phím nhấn
Cần sử dụng vi mạch ra và bộ giải mã địa chỉ sao cho các phím chỉ đọc bằng lệnh IN với đúng địa chỉ của cổng (giả sử chúng ta cần địa chỉ là F000H)
Làm thế nào để giao tiếp các phím nhấn với hệ thống CPU ?
Trang 19Sử dụng 74LS245 và bộ giải mã địa chỉ
: mov dx, F000H
in al, dx :
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A0 A1 A2 A3 A4 A5 A6 A7
E DIR
Có thể sử dụng chung một địa chỉ cho một cổng vào và một cổng ra?
Trang 20Điều khiển đọc phím nhấn
Quét vòng – Polling
Ngắt - Interrupt
Trang 21Quét vòng
mov dx, F000
in al, dx L1: cmp al, FF
je L1 : :
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
A0 A1 A2 A3 A4 A5 A6 A7
E DIR
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A
0 IOR
5V
Trang 22Output Port Design
Q0
OC G
Trang 23Input Port Design
T1 – T4 of IN AL, 5FH ?
D0
D7
Q0 74LS244
Q7
OC
Trang 24
Ví dụ về giao tiếp DIP - SW
Trang 25Ví dụ về giao tiếp LED
Trang 26Tăng công suất giao tiếp cho các cổng ra.
Các thiết bị ra cần có mức điện áp và dòng điện thích hợp.
Với các ngõ ra TTL:
Về điện áp: 0 – 0.4V cho logic 0; 2.4 – 5V cho logic 1.
Về dòng điện: 0 – 2mA cho mức 0 và 0 tới (-400uA) cho mức 1.
Trang 27Giao tiếp cách ly dùng relay
Trang 28Giao tiếp công suất bằng
SSR – Solid State Relay
Trang 29Vào ra song song
lập trình 8255
Trang 30Chip hỗ trợ vào ra song
song lập trình 8255
Có thể chọn nhiều chế độ hoạt động khác nhau bằng chương trình
Dữ liệu vào ra kèm theo các tín hiệu bắt tay
Có nhiều cổng giao tiếp tích hợp trong một chip
Trang 318255 – Sơ đồ khối
Trang 328255 – Kết nôi với hệ thống
Trang 338255 – Kết nối với hệ thống
Trang 348255 PPI
Trang 358255 – Từ điều khiển lập
xoá bit cổng C
Trang 36Ví dụ về lập trình bit cổng C
Lập trình 8255 với yêu cầu sau:
A) lập PC2 lên mức cao.
B) Sử dụng PC6 tạo ra xung vuông với 66% duty cycle
Trang 378255 – Từ điều khiển chế độ
Trang 388255 – Các chế độ làm việc
Trang 398255 – Định thời out chế độ 0
Trang 408255 – Định thời in chế độ 0
Trang 41Example - Port addresses
Trang 42Solution
Trang 43Example – Programming 8255
Trang 44Solution
Trang 458255 – Chế độ 1
Trang 468255 – Định thời đọc chế độ 1
Trang 47Tác động tín hiệu đọc chế độ 1
Trang 488255 – Định thời ghi chế độ 1
Trang 49Tác động tín hiệu ghi chế độ 1
Trang 508255 – Kết nối tín hiệu chế độ 1
OBFBSTBB
Trang 51Chế độ 2 của 8255
Trang 52MODE 2 Operation
Trang 53Ngắt và Quét vòng Interrupt vs Polling
Trang 54Kiểm tra trạng thái để quét vòng
Using status to Poll
Trang 55Giải
Trang 56Bản đồ vào ra của máy tính IBM PC IO MAP
Trang 57Giải mã địa chỉ bằng 74138
Trang 58Địa chỉ của 8255 trong máy tính.
Trang 59Sử dụng các cổng của 8255 trong PC
MOV AL,99H OUT 63, AL
Trang 60Kết nối dữ liệu trong các hệ thống
8088
Dữ liệu được truyền theo byte
Dung lượng nhớ 1MB sẽ là 1M x 8-bits
Dữ liệu có thể truyền theo từng từ (word)
Dung lượng nhớ 1MB sẽ là 512kB x 16-bits
Dữ liệu truyền theo từ
Dung lượng nhớ 16MB sẽ là 8MB x 16-bits
Trang 61Dữ liệu 32 và 64 bit
– Dữ liệu truyền theo 4 byte
– Dung lượng nhớ 4GB là 1GB x 32-bits
– Dữ liệu truyền theo 4 từ.
– Dung lượng nhớ 4GB là 512MB x64-bits
Trang 62Little Endian / Big Endian
với 68000:
MOVE.W #513, D0 ; chuyển giá trị 513 vào 16 bit thấp của D0 MOVE.W D0,4 ; chứa từ thấp của D0 vào ô nhớ 4
với 80x86:
MOV AX,513 ; nạp AX (16 bits), giá trị 513
MOV [4],AX ; chứa AX vào ô nhớ 4
Trang 63Các hệ thống vi xử lý tổ chức bộ
nhớ 16 bit
Bus dữ liệu 16-bit Khi sử dụng
cả Bus để truy cập dữ liệu.
1M bộ nhớ sẽ là: 512K * 16 bit
Khi bộ nhớ theo byte được gán
theo từng từ
Truy cập các địa chỉ chẵn
Ví dụ: ô nhớ [4H] chứa 0102H
và ô nhớ [6H] chứa 0304H Điều gì xảy ra khi Mov AX,[4]?
Điều gì xảy ra khi Mov AX,[5]?
Motorola family of the MC680x0 forbids non-aligned access
Trang 64Chọn bank bộ nhớ
8086/186/286/386SX có 16 đường dữ liệu D15-D0
SRAM 6264 chỉ có 8 đường dữ liệu I/O7 – I/O0
Cần tổ chức bộ nhớ theo bank “Memory Bank”
1 SRAM để chứa các dữ liệu với địa chỉ chẵn “Even Addresses” (… 0
2 )
1 SRAM để chứa các dữ liệu với địa chỉ lẻ “Odd” Addresses” (… 1 3 )
8086 có đường điều khiển BHE– (Bank High Enable)
Được sử dụng cùng với A0 để xác định dạng truy cập bộ nhớ:
Trang 65Giao tiếp hai bộ nhớ 512KB với vi xử lý 8088 (review)
A18 A0 :
D7 D0 :
MEMR MEMW
00001 95
: 20020
20021 20022 20023
7FFFD 7FFFE 7FFFF
29 12 7D 13
19 25 36
:
:
:
A18 A0 :
D7 D0 :
RD WR CS
97 00000
00001 D4
: 20020
20021 20022 20023
7FFFD 7FFFE 7FFFF
A3 92 45 33
2C 98 12
:
:
:
A18 A0 :
D7 D0 :
RD WR CS
Trang 66Giao tiếp hai bộ nhớ 512KB với vi xử lý 8086
A19 A1 :
D7 D0 :
MEMR MEMW
XXXX
BP
ES DS SS
CX BX AX
XXXX XXXX
XXXX 4000
0000 0023 3F1C
FCA1
SP
DX
XXXX CS
SI
XXXX
XXXX IP
XXXX DI
A0
23 00000
: 20020
20021 20022 20023
7FFFD 7FFFE 7FFFF
29 12 7D 13
19 25 36
:
:
:
A18 A0 :
D7 D0 :
RD WR CS
97 00000
: 20020
20021 20022 20023
7FFFD 7FFFE 7FFFF
A3 92 45 33
2C 98 12
:
:
:
A18 A0 :
RD WR CS
D15 D8 :
D7 D0 :
BHE#
How to connect data lines?
How to connect address lines?
What about chip select?
Trang 67Giải mã chọn bank bộ nhớ
Trang 68Giao tiếp các bộ vào ra 8 bit với bus
dữ liệu 16 bit.
Giải quyết ?
Giải pháp 1:
1) sử dụng hai bộ vào
ra riêng
Địa chỉ chẵn cho mộ
chip và địa chỉ lẻ cho
chip còn lại
Lệnh OUT port#, AX
sẽ cung cấp dữ liệu tới
cả hai chip.
Trang 69Giao tiếp các bộ vào ra 8 bit với
bus dữ liệu 16 bit.
Giải pháp 2: Sử dụng bộ copier Hi/Lo
• Hi/Lo copier chép dữ liệu từ D8-D15 tới D0-D7
• Hi/Lo copier chép dữ liệu từ D0-D7 tới D8-D15
Trang 70Hi/Lo Copier trong PC
Trang 71Bus mở rộng ISA trong PC
Chỉ có 16-bit (ngay cả khi sử dụng CPU 32-bit hoặc cao hơn)
Tốc độ giới hạn tới 8MHz
Trang 72Linear Select Address Decoding
What is the address range and aliases?
Trang 73Buffering Selected IO Address Range
Range of addresses?
Blocking others.
Trang 74Lập trình vào ra với C và Basic
Trang 75Ví dụ
Trang 76Ví dụ chương trình quét vòng
Viết chương trình làm các LED sáng chạy từ dưới lên trên khi bắt đầu chạy Khi phím thấp nhất được nhấn, LED sẽ thay đổi hướng sáng Khi phím cao nhất được nhấn, chương trình sẽ kết thúc
Trang 77Sơ đồ kết nối mạ̣ch
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A0 A1 A2 A3 A4 A5 A6 A7
E DIR
A 1 5
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A
9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 IOW
74LS373
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7
OE LE
Trang 78Xem xét về hoạt động của chương trình
je L6 test al, 01 jnz L5
xor ah, 0FFh jmp L6
L5: test al, 80h
jz L7 L6: mov al, bl jmp L1
L7:
Trang 79Vấn đề gì xảy ra khi nhiều quá trình quét vòng
thực hiện trong cùng một chương trình?
Quét các LED sáng sẽ tốn một khoảng thời gian nhất định
Người sử dụng có thể sẽ nhấn và rời tay khỏi phím trước khi các LED được quét xong Tức là trước khi thực hiện lệnh in al, dx
Và vi xử lý sẽ không biết người sử dụng đã nhấn phím
Trang 80Vấn đề với chương trình quét vòng.
mov dx, F000 mov ah, 00 mov al, 01
L1: out dx, al
mov cx, FFFFh L2: dec cx
jnz L2 cmp ah, 00 jne L3
rol al, 1 cmp al, 01 jne L1
jmp L4 L3: ror al, 1
cmp al, 80h jne L1
L4: mov bl, al
in al, dx cmp al, FFh
je L6 test al, 01 jnz L5
xor ah, FFh jmp L6
L5: test al, 80h
jz L7 L6: mov al, bl jmp L1
L7:
Trang 81Một số ứng dụng
vào ra song song
Trang 82Bộ hiển thị LED 7 đoạn
d p
a
g
e b
g
d p d
a c f
d
a c
g f e
d p
b
e
a d
d p
b
g f c
d p
a
e b
g
c f
d
f
d p g
b e d c
a
c a
d p e b
g f d
Trang 83Bộ hiển thị LED 7 đoạn
Trang 84Điều khiển LED sáng
Chọn LED1 – Cấp mã sáng cho LED1- Tạo trễ để LED sáng
Không chọn LED1 (không chọn LED nào để tắt hết các LED
Tiếp tục với LED2 … cho tới LED8
Trang 85Hiển thị trên LED ma trận
Hình 5.43: Cấu tạo đèn hiển thị LED ma trận.
Trang 86Kết nối bàn phím ma trận
D7
D0 Hình 5.40: Kết nối bàn phím dạng ma trận.
Trang 87Kết nối bàn phím ma trận
1 1 1 0
0 1 1 1
Trang 88Kết nối bàn phím ma trận
Đọc vào từ các hàng = 1111 thì không có phím nào được nhấn
Nếu có phím nhấn (hàng khác 1111) sẽ quét
phím bằng cách tuần tự cho các cột bằng 0 và đọc vào từ các hàng
Giá trị phím nhấn sẽ tương ứng với giá trị out ra cột và in vào từ hàng
Trang 89Kết nối bàn phím ma trận
Trang 90Giao tiếp với các bộ hiển thị LCD.
Giá thành hạ
Có thể hiển thị số, ký tự, hình vẽ
Được tích hợp sẵn bộ điều khiển làm tươi
Dễ dàng lập trình
Trang 91Mô tả chân các bộ LCD
Trang 92Các mã lệnh lập trình cho LCD
Trang 93Vi du sơ đồ kết nối với LCD
Trang 94Ví dụ lập trình cho LCD
Trang 95Lập trình gởi dữ liệu tới LCD
Trang 96Các địa chỉ cho LCD
Trang 97Định thời của LCD
Trang 98Các lệnh của LCD
Trang 99Động cơ bước -Stepper Motors
Cho phép điều khiển vi trí chính xác bằng cách điều
khiển động cơ quay theo các góc nhất định một các dễ dàng.
Trang 100Sơ đồ cấu tạo Stepper Motor
Trang 101Góc quay của động cơ bước
- Stepper Motor
Trang 102Các thuật ngữ - Terminology
Bước trên giây - Steps per second, RPM
Số cực - Number of teeth
4-step, wave drive 4-step, 8-step
Tốc độ động cơ - Motor speed (SPS)
Moment giữ - Holding torque
Trang 103Các loại Stepper Motor
Trang 104Variable Reluctance Motors
Trang 105Variable Reluctance Motors
Đây thường là loại động cơ 4 dây – dây chung để cấp nguồn +V các cuộn dây sẽ được cấp điện thông qua các đầu dây còn lại
Trong hình là động cơ loại 30o
Rotor có 4 cực từ (poles) và stator có 6
Ví dụ:
Trang 106Variable Reluctance Motors
Để động cơ quay chúng ta cần cấp điện
cho các cuộn dây theo trình tự sau:
Trang 107Động cơ đơn cực
Unipolar Motors
Trang 109Dạng sóng kích thích cơ bản
Basic Actuation Wave Forms
Trang 110Động cơ đơn cực Unipolar Motors
thịch hai động cơ như sau:
W1a - 1100110011001100110011001
W1b - 0011001100110011001100110
W2a - 0110011001100110011001100
W2b - 1001100110011001100110011
hai vòng nhưng với moment tăng gấp 1.4
lần và công suất tăng hai lần.
Trang 111Dạng sóng tăng moment-Enhanced Waveforms
Trang 112Unipolar Motors
Hai dạng kích thích động cơ đơn cực khác
nhau, Kết hợp giữa hai kiểu kích thích chúng ta sẽ điều khiển động cơ quay theo nửa bước.
W1a - 11000001110000011100000111
W1b - 00011100000111000001110000
W2a - 01110000011100000111000001
W2b - 00000111000001110000011100
Trang 113Mạ̣ch điều khiển động cơ
Motor Control Circuits
dụng loại Transistor Darlington Arrays họ ULN200x để cấp điện cho các cuộn dây
Trang 114Kết nối giao tiếp với Stepper Motors
Trang 115Tạo vector điều khiển Vector Generation
Giải pháp phần cứng
Thiết kế bằng mạch Logic
Trạng thái máy - State machine
Giải pháp phần mềm
Bộ vi xử lý và cổng ra
Định thời xuất dữ liệu.
Trang 116Ví dụ
Trang 117Giao tiếp tương tự
ADC -Analogue to Digiatal Converter.DAC – Digital to Analogue Converter
Trang 118Digital to Analog Converter Mạch ADC 4 bit đơn giản
V r e f = - 5 V
+ -
R 2 R
R 3 R
R 4 R
R 5 R