Chuột (Mouse)
Chuột thường được sử dụng trong máy vi tính là một thiết bị đầu vào điều khiển nhất là trong các hệ điều hành và phần mền đồ hoạ
có nhiều loại chuột :
Chuột quang.Dùng tín hiệu ánh sáng phản xạ từ màn chuột (Mouse pad)để đo chuyển động.
Chuột cơ dùng viên bi sắt phủ cao su để đo chuyển động
+ loại di trên mặt bàn
+ loại dùng tay lăn viên bi (track ball)
Loại thông dụng nhất hiện nay là laọi chuột cơ
Hình 3-5: Cấu tạo chuột cơ học
Cấu tạo và nguyên tắc hoạt động
a/ Cấu tạo gồm một quả bóng xoay bằng kim loại có phủ lớp cao su, được một lò xo ép vào hai trục nằm theo hai hướng Xvà Y thẳng góc nhau hộp nhựa để đưa tin về toạ độ (X,Y) Đầu mỗi trục có một bánh xe
b/ họat động: Khi di chuyển chuột trên bàn di chuột,viên bi di chuỷên theo.Viên bi này tí sát vào hai trục X,Y làm cho hai bánh xe trên trục quay theo các hướng xác định.Các bộ phận cảm biến ở hai bên phía bánh xe nhận được sự thay đổi đó xẽ sinh ra sung tương ứng.Dựa vào chế độ,hình dạng sung thay đổi,hướng di chuyển con trỏ chuột trên màn hình cũng được thay đổi.Trên mach điều khiển của con chuột cũng có một mạch điện tử.Mạch này sẽ biến đổi dạng sung thành những tín hiệu tương ứng đưa vào máy,và bản mạch này có khả năng nhận biết ddược sự nhấn phím tren các nút nhấn của chuột và vì vậy có thể điều khiển được các hoạt động của chuột.
Sự ghép nối: Chuột gép nối vào MainBoard thông qua cổng COM và cổng PS/2
Phương pháp tác động
1. Muốn sử dụng chuột trong hệ diều hành và các ứng dụng trước tiên ta phải nạp các trình điều khiển chuột,
Để nạp cá trình điều kiển chuột trong môi trường DOS thường thực hiện theo hai cách sau:
- Chèn vào tệp Config.sys một dòng lệnh sau DEVICE=[path\]mouse.sys
- Chạy trình điều khiển chuột Mouse.com tại dấu nhắc của DOS
2. Tác động bằng ngắt (33 h)
Hàm 00: Khởi tạo driver cho chuột
vào AX = 00h
Ra AX = FFFF nếu chuột chưa được cài đặt
AX = 0000h nếu như chuột được khởi động
BX = số nút bấm
Hàm 01h Hiện con trỏ chuột
vào AX = 01h
Ra không
Hàm 02h Dấu con trỏ chuột
Vào AX= 02h
Ra không
Hàm 03h: Đọc vị trí con trỏ chuột trạng thái nút bấm
vào AX = 03h
Ra CX =vị trí ngang Graph (0<=X<=639, 0<=y<=399)
DX= vị trí dọc Text (0<=X<=639, 0<=y<=199)
BX = trạng thái nút bấm bit 0 =1 mút trái nhấn
bit 1= 1 nút phải được nhấn
bit 2=1 nút giữa được nhấn
Hàm 04h đặt con trỏ chuột về vị trí h\nhất định
vào AX =04h
Ra CX= vị trí ngang
DX= vị trí dọc
Hàm 05 Nhận thông tin về trạng thái nút nhấn
Vào: AX =05h
BX = nút nhấn bit 0 =1 mút trái nhấn
bit 1= 1 nút phải được nhấn
bit 2=1 nút giữa được nhấn
ra: BX = số lần nhấn nút
CX =vị trí ngang lần cuối cùng dược nhấn
DX = vị trí dọc
AX = trạng thái nút nhấn bit 0 =1 mút trái nhấn
bit 1= 1 nút phải được nhấn
bit 2=1 nút giữa được nhấn
Hàm 06 nhận thông tin về trạng thái nút nhả
Vào AX =06h
BX =nút nhả bit 0 =1 mút trái nhả
bit 1= 1 nút phải được nhả
bit 2=1 nút giữa được nhả
ra BX = số lần nút nhả
CX =vị trí ngang lần cuối cùng dược nhả
DX = vị trí dọc
AX = trạng thái nút nhấn bit 0 =1 mút trái nhả
bit 1= 1 nút phải được nhả
bit 2=1 nút giữa được nhả
Hàm 09h: định nghĩa con trỏ trong chế độ đồ thị
vào AH=09h
BX = Khoảng cách từ điểm làm chuẩn tới điểm bên phải bảng
CX = Khoảng cách từ điểm làm chuẩn tới điểm bên trái bảng
ES:DX =con trỏ tới bảng định nghĩa hình dạng con chuột trong RAM
Ra kkhông
Bảng gồm 64 byte 32 byte đầu được and và 32 cuối được or với mẫu hiện thời
Ví dụ: Chương trình sử dụng chuột trong chế độ Text
Program chuot;
Uses crt,dos;
Var
r:registers;
x,y:byte;
st1,st2:string;
Procedure MouseInit;
Begin
with r do
begin
ax:=0;
Intr($33,r);
If(ax=0) then writeln('Chua cai dat chuot');
end;
End;
Procedure Show;
Begin
r.ax:=1;
Intr($33,r);
End;
Procedure Hide;
Begin
r.ax:=2;
Intr($33,r);
End;
Procedure vtchuot(x1,y1:byte);
Begin
gotoxy(70,1);
write(x1,':',y1);
End;
Procedure tron;
var
r:integer;
cv,dt:real;
Begin
write('anh chi nhap ban kinh hinh tron');
readln(r);
cv:=pi*2*r;
dt:=pi*r*r;
gotoxy(10,12);
Writeln('dien tich va chu vi hinh tron la: ',cv:5,':',dt:5);
readln;
End;
Procedure vuong;
var
r:integer;
cv,dt:real;
Begin
write('anh chi nhap ban do dai hinh vuong');
readln(r);
cv:=4*r;
dt:=r*r;
gotoxy(10,10);
Writeln('dien tich va chu vi hinh vuong la: ',cv:5,':',dt:5);
readln;
End;
Procedure tbay;
Begin
clrscr;
st1:='Tinh vi va dien tich hinh tron';
st2:='Tinh vi va dien tich hinh vuong';
gotoxy(20,11);Write(st1);
gotoxy(20,12);Write(st2);
End;
Begin
clrscr;
MouseInit;
Show;
tbay;
Repeat
with r do
Begin
ax:=3;
intr($33,r);
x:=cx shr 3+1;
y:= dx shr 3+1;
vtchuot(x,y);
if((bx and 0001)=001)and ((x>=20) or(x<=20+length(st1)))
and (y=11) then
Begin
clrscr; tron; tbay;
End;
if((bx and 0001)=001)and ((x>=20) or(x<=20+length(st2)))
and (y=12) then
Begin
clrscr; vuong; tbay;
End;
until (r.bx and 0002)=0002;
hide;
End.