24/05/2018, 14:10

Bàn phím

0 Là một TBNV dùng để đưa tin(lệnh hay dữ liệu)vào MVT cơ bản nhất dưới dạng mã lệnh chuẩn ASCII(American Standard Codefor Infomation Interchange) Cấu tạo và nguyên tắc ...

0

Là một TBNV dùng để đưa tin(lệnh hay dữ liệu)vào MVT cơ bản nhất dưới dạng mã lệnh chuẩn ASCII(American Standard Codefor Infomation Interchange)

Cấu tạo và nguyên tắc hoạt động

1/ Cấu tạo các phím trên bàn phím có thể cấu theo các loại sau:

a) Loại tiếp xúc bằng tiếp điểm trực tiếp

Ưu điểm :đơn giản dễ chế tạo

Nhược điểm: độ nhạy kém, tiếp điểm chóng mòn (vì hay bị đánh tia lửa địên)

b) Phím điện cảm

Dựa trên nguyên lí thay dổi điện trường

Khi phím được nhấn khoảng cách ba má sít lại gần nhau làm thay đổi cường độ điện trường

Ưu điểm: độ nhạy cao

Nhược điểm cần một thiết bị điện tử để đảm nhận dạng phím nhấn nên giá thành cao

c/ phím điện cảm:

Khi phím được nhấn, lõi thép cọ sát vào nhau tạo ra một xuất điện động cảm ứng và sinh ra dòng điện cảm ứng.

Khi có dòng điện cảm ứng,mã tín hiệu thay đổi vì vậy biết phím nào được nhấn

Ưu điểm độ nhạy cao

Nhược điểm chế tạo phức tạp

d/ Phím màng mỏng:

Mạch in được chế tạo tích hợp ngay trên một tấm mika hoặc pherit.

ưu điểm đơn giản độ nhạy cao

a/tiếp xúc d/ điện dung c/điện cảm

Hình 3-1: Ccác kiểu cấu tạo của bàn phím

2/ Mã quét (Scan) của bàn phím:

Các lối ra của sơ đồ cấu tạo mã quét cho các bàn phím phải được đưa vào máy tính để nhận biết là phím đã được nhấn hay nhả

Để rút ngắn số lượng đường dây nối vào máy vi tính và đặc biệt khi số phím lớn hơn 16 hoặc 32,người ta phải mã hoá thứ tự các phím nhấn (0,1,2,...,n) từ dạng thập phân thành dạng nhị phân 0000,0001,00010,...,1111hay dạng thập lục phân.

Ở một sơ đồ đếm quét khi có một phím được tiếp xúc,việc đếm dừng tại số tự của phím đã được nhấn và sau khi nhả. Muốn tạo mã ASCII cho một bàn phím người ta dùng một vi mạch để xử lí

Hình 3-2: Sơ đồ cấu tạo mã quét phím + phát hiện và ghi lần lượt các tín hiệu 1 của các cột khác nhau của ma trận (qua bộ giải mã 3 - 8)

+ Đọc các giá trị hàng của ma trận rồi biến đổi song song thành nối tiếp để truyền vào máy vi tính

3/ Bộ đệm bàn phím

Bộ đệm bàn phím là một vùng nhớ chứachứa các phím đã được nhấn nhưng chưa được chơưng trình sử dụng. Một phím được nhấn chứa trong một từ vói byte cao chứa mã Scan,byte thấp chứa mã ASCII (nếu phím đó là mã ASCII).trong bộ đệm không lưu các phím dịch nhưng có thể lưu lại tổ hợp phím

4/ sơ đồ nguyên lý hoạt động của bàn phím được trình bày như trong hình 28 bao gồm các phần sau: (A) bộ toạ dao động cho bàn phím

(B) Các bít điều khiển đếm số nhị phân : (C) mạch giải mã nhận các tín hiệu điều khiển và nạp dữ liẹu vào máy : (D) Mạch logic OR : (E) Mạch dồn kênh : (F) Bộ giải mã cột : (G) Phần tử chống dung

Hình 3-3: Sơ đồ nguyên lí hoạt động của bàn phím 5/ Sơ đồ ghép nối bàn phím và máy vi tính

Sơ đồ gồm ba phần

  • Phần nối với máy tính có 8042 Bộ giải mã bàn phím và bộ nguồn nuôi với địên áp +5V
  • các đường dây nối Bao gồm các đừơng dây nguồn các đường trạng thái,các đường dữ liệu
  • bàn phím bao gồm

chíp 8048 là trung tâm điều khiển của bàn phím,tạo ra mã quét nhận dạng các phím được bấm và gửi sang cho mạch giải mã các tín hiệu đèn: kiểm tra trạng thái sẵn sàng của bàn phím

Hình 3-4: Sơ đồ ghép nối bàn phím với máy tính ma trận phím Tổ hợp các phím theo hàng và cột

Phương pháp tác động

a/ Tác động bằng lệnh của DOS

Trong MS_DOS có thể sử dụng các lệnh để thay đổi độ trễ khi nhấn phím,thay đổi mã ASCII của phím (ví dụ thay dổi chữ S thành chữ K...) và có các tệp.sys cho phép cài đặt chương trình điều khiển bàn phím..

d/ Tác động bằng lập trình ngắt:

Để viết một chương trình ngắt cho bàn phím,ta có thể tác động đến các hàm của ngắt 21h (DOS) hoặc là ngắt 16h (BIOS)

Ngắt 21h

Hàm 01h:đọc một kí tự từ bàn phím và hiển thị kí tự ra màn hình

Hàm 06h vào ra trực tiếp bàn phím và màn hình

Vào AH=06h

DL=kí tự Mã ASCII (DL=ffh thì AL sẵn sàng nhận kí tự,ngược lại đa ra màn hình)

Ra: AL=kí tự bàn phím khi FZ =0;

Hàm 07h vào từ bàn phím không hiện ra màn hình

vào AH =07h

ra AL=ký tự (Al=0) đọc mã quét

Hàm 08 chức năng tương tự hàm 07nhưng chịu sự tác động của Ctrl +B

Hàm 0Ah Nhập chuỗi kí tự vào phần đệm của,kết thúc nhấn phím ENTER

vào AH=0Ah

DS:DX trỏ tới địa chỉ vùng đệm

ra không

Hàm 0Bh

vào AH=0Bh

ra AL =FFh sẵn sàng

AL =00h chưa sẵn sàng

Hàm 0Ch xoá bàn phím gọi 1 trong 5 hàm 1,6,7,8,A

vào AH=0Ch

AL= tên hàm

Ra không

Hàm 33hKhiểm tra trạng thái Ctrl +B

vào AH=33h

AL=00h (để xác định trạng thái Ctrl+B)

=01h (để thiết lập trạng thái Ctrl+B)

DL =00h (Ctrl+B là OFF)

=01h (Ctrl+B là ON)

ra DL= trạng thái hiện tại

DL =00h (Ctrl+B là OFF)

=01h (Ctrl+B là ON)

* Ngắt 16h: Ngắt bàn phím

Hàm 00h Đọc một kí tự

vào AH =00h

Ra AL = mã ASCII kí tự được nhấn

với các phím chức năng AL=00h

AH = mã quét của các phím nhấn

Hàm 01h kiểm tra trạng thái sẵn sàng của bàn phím

vào ah=01h

Ra ZF =1 (không có kí tự nào trong vùng đệm)

=0 (có kí tự)khi đó:

phím mở rộng:

AL =0 mã bàn phím mở rộng

AH = Mã Scan phím

mã phím thường

AL = mã ASCII của phím (bàn phím thường)

AH =mã Scan phím

Hàm 02h Kiểm tra trạng thái của bàn phím (nhận biết phím điều kiển)

vào AH=02h

ra AL= trạng thái phím

7 6 5 4 3 2 1 0
Insert Caps Lock Num lock Scrool lock Alt Ctrl Shift right Shift left

Các bít có thể bằng 0 hoặc 1 phím được nhấn

Hàm 03h đặt thời gian trì hoãn bàn phím

vào AH=03h

AL=05h

BH=mã thời gian trì hoãn (0=250ms,1=500ms,2=750ms,3=1s)

BL=mã thời gian lập phím(00h1fh)

ra không

Hàm 05 Ghi kí tự lên vùng đệm bàn phím

vào AH =05h

CH =mã quét(=0;không dùng)

CL = Mã ASCII

Ra AH=0 thành công

=1 thất bại

Hàm 10h Đọc kí tự từ bàn phím (101 phím)

vào AH=10h

ra AL=mã ASCII

AH= mã quét

Hàm 11h báo kí tực sẵn sàng hay chưa (101 phím)

vào AH=11h

Ra AL=0 chưa sẵn sàng

=1 sẵn sàng

Ví dụ: Nhập vào hoặc là tổ hợp phím từ bàn phím

  • kiểm tra tổ hợp phím nhập vào.Nếu là Ctrl + kí tự thì thônng báo có phím Ctrl và kí tự tương ứng

Program vd;

Uses dos,crt;

Var

r:REGISTERS; c:byte;

Begin

with r do

Begin

ah:=0;

intr($16,r);

c:=al;

ah:=2;

intr($16,r);

if((al and 4) =4) then

if((Al and 64)=4) then

Write(‘Nhan Ctrl +’,shr(c+64))

else Write(‘Nhan Ctrl +’,chr(c+96))

else Write(‘Nhan Ctrl +’,chr(c));

End;

readln;

End.

0