IO Devices 1
CẤU TRÚC MÁY TÍNH
Các thiết bị xuất nhập
Bàn phím
Màn hình
Chuột
Các giao tiếp ngoại vi
Giao tiếp song song
Giao tiếp nối tiếp
USB
IO Devices 2
BÀN PHÍM _ KEYBOARD
Các kiểu bàn phím: các máy tính IBM và tương
thích sử dụng các kiểu bàn phím sau:
Bàn phím XT chuẩn
83 phím:
5 đầu nối DIN
truyền nối tiếp 1
chiều
IO Devices 4
Cấu trúc và giao tiếp bàn phím
Mỗi phím là 1 chuyển mạch
switch, tạo ra một tiếp xúc điện
khi ấn phím
Các loại nút phổ biến:
Pure mechanical
Foam element
Rubber dome
Membrane
Cáp bàn phím được nối đến chip
ngoại vi 8255A
Bộ điều khiển bàn phím thường
là chip 8042, 8048, 8049, 8741,
8742, 6868, 6805.
Khi chip điều khiển nhận được
yêu cầu từ bàn phím, chip này
gửi tín hiệu ngắt IRQ1 và truyền
dữ liệu vào CPU
IO Devices 5
Kết nối bàn phím
Ví dụ:
nhấn SHIFT: make-code = 12
Nhấn A: make-code = 1C
Nhả A: break-code = F0, 1C
Nhả SHIFT: break-code = F0, 12
Mã được truyền nối tiếp từng byte, với khung
truyền 11bit
IO Devices 7
Bảng scan-code
Scan code bàn phím loại 83 phím
Scan-code bàn phím loại 102 phím
IO Devices 8
Giao tiếp bàn phím
Bàn phím PS2 giao tiếp bằng giao thức nối
tiếp bất đồng bộ 2 chiều
Xung clock được phát bởi bàn phím, tần số
khoảng 10-16.7kHz
Các trạng thái hoạt động:
Data=high, clock=high: trạng thái rảnh
Kiểm tra bus đang ở trạng thái rảnh
Clock ở mức cao ít nhất 50us trước khi bàn
phím gửi data
Bàn phím gửi data từng khung dữ liệu
11bit
Dữ liệu được đọc tại cạnh xuống của clock
Máy chủ có thể cấm giao tiếp bằng cách
kéo clock xuống thấp
Khi clock được giải phóng, bàn phím lại
truyền tiếp dữ liệu chưa hoàn chỉnh
Dữ liệu từ keyboard đến PC
IO Devices 10
2. Truyền dữ liệu từ máy chủ đến bàn
phím:
Các bước thực hiện:
máy chủ cấm truyền từ bàn phím đến
bằng cách kéo clock xuống thấp
máy chủ kéo data xuống thấp và giải
phóng clock báo hiệu bàn phím phát xung
clock bắt đầu truyền dữ liệu
Dữ liệu được đọc tại cạnh lên của clock
2 -> 0.50s
3 -> 0.75s
4 -> 1.00s
Ví dụ: lệnh sau được đặt trong
Autoexec.bat
MODE CON: RATE=32 DELAY=1
IO Devices 12
Truy xuất bàn phím qua DOS
Có thể truy xuất bàn phím qua một số
hàm của DOS với ngắt INT 21h: 01h,
06h, 07h, 08h, 0ah, 0bh, 3fh.
Chương trình ví dụ: đọc 80 ký tự vào
buffer
char *ch_input(void)
{ char *buffer, *string;
union REGS inregs, outregs;
buffer = (char*) malloc(82);/* tạo buffer */
*buffer = 80; /* byte đầu chỉ số lượng ký tự */
Inregs.h.ah = 0x0ah;
inregs.x.dx = FP_OFF(buffer);
int86(0x21,&inregs,&outregs);
string = buffer+2;
return(string)
}
Bit 2 (SYSF): 1-self test successful; 0-power
on reset
Bit 1 (INPB): 1-CPU data in input buffer;0-
input buffer empty
Bit 0 (OUTB): 1-keyboard controller data in
output buffer; 0-output buffer empty
IO Devices 14
Lập trình bàn phím trực tiếp
qua Port (tt)
Control register (8 bit): gồm 17 lệnh
theo bảng lệnh sau
Code Command
a7h
a8h
a9h
aah
abh
adh
aeh
c0h
c1h
c2h
d0h
d1h
d2h
d3h
Ví dụ: ghi byte 01h vào output port
OUT 64h, d1h ;pass code for the controller command
;write output port
wait:
IN al, 64h ;read status register
TEST al, 02h ;check whether input buffer is full
JNZ wait ;input buffer full thus wait
OUT 60h,01h ;pass data byte 01h for the controller
;command
IO Devices 16
Thiết kế giao tiếp bàn phím
L C D - H D 4 4 7 8 0
D B 0
D B 1
D B 2
D B 3
D B 4
D B 5
D B 6
V D D
V S S
E N
R S
R / W
V E E
D B 7
1 2 M H z
V C C
5 V
7
8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1 3
1 1
1 2
1 0
1 4
3 6
3 5
3 4
3 9
3 8
3 7
1 7
1 6
1 5
3 3
3 2
R S T
X T A L 2
X T A L 1
G N D
P 0 . 2 / A D 2
P 3 . 7
P 3 . 6
P 3 . 5
P 0 . 6 / A D 6
P 0 . 7 / A D 7
R e s e t
5 V
1. N/C
2. Data
3. +5V (VCC)
4. GND
5. N/C
6. Clock
Thiết kế minh hoạ: giao tiếp bàn phím với AT89C51
•
Chân Data nối P3.4
•
Chân Clock nối P3.2
•
Dữ liệu thu được từ bàn phím sẽ hiển thị trên LCD điều
khiển ở P1
IO Devices 17
Câu hỏi ôn tập
1. Nêu đặc điểm các thế hệ bàn phím
2. Trình bày giao thức truyền giữa bàn
phím và PC
3. Mã scan-code là gì? Nếu bấm phím sau
thì bàn phím sẽ truyền mã gì đến PC:
1. Nhấn và nhả Delete