Xem mẫu
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 85
11
GIAO TIEÁP VÔÙI
BAØN PHÍM AT
11.1 KHAÙI QUAÙT VEÀ LYÙ THUYEÁT CUÛA BAØN PHÍM GIAO TIEÁP VÔÙI PC
Chöông naøy seõ giôùi thieäu veà vieäc giao tieáp vôùi baøn phím AT. Baøn phím AT
laø moät thieát bò nhaäp thoâng duïng phoå bieán maø ta thöôøng gaëp ôû caùc maùy vi tính.
Vôùi giaù thaønh khaù reû, chuùng ta coù theå coù ñöôïc moät thieát bò nhaäp vôùi nhieàu phím
leänh (101 phím töông ñöông vôùi 101 phím leänh) maø chæ caàn hai chaân tín hieäu ñeå
ñieàu khieån. Ñoù laø öu ñieåm cuûa vieäc duøng baøn phím AT ñeå laøm theát bò nhaäp.
Veà nguyeân taéc moãi khi ta nhaán moät phím treân baøn phím thì baøn phím seõ gôûi
cho maùy tính moät maõ queùt (scan code). Maõ naøy seõ ñöôïc maùy vi tính xöû lyù vaø
chuyeån ñoåi thaønh maõ ASCII maø ta ñaõ bieát. Ví duï nhö khi ta nhaán phím chöõ “A”,
thì baøn phím seõ göûi ñi moät maõ queùt laø 1Ch, vaø neáu ta cöù giöõ phím thì maõ queùt seõ
ñöôïc göûi ñi lieân tuïc cho ñeán khi phím “A” ñöôïc nhaû ra.
Beân caïnh ñoù khi ta thaû moät phím ra thì baøn phím cuõng göûi ñi moät maõ queùt
khaùc (F0h) ñeå baùo cho maùy tính bieát phím nhaán ñöôïc nhaû ra, sau ñoù laïi guûi tieáp
maõ cuûa phím nhaán ñöôïc nhaû. Vaø döïa vaøo ñieàu naøy ta coù theå bieát ñöôïc phím naøo
ñöôïc nhaán. ÖÙng vôùi moãi phím ta seõ coù moät maõ queùt khaùc nhau, vaø caùc maõ naøy laø
duy nhaát cho duø phím ñoù coù ñöôïc nhaán keøm vôùi phím Shift hay Capslock, … hay
khoâng. Ngay caû vieäc laøm saùng caùc ñeøn Num, Caps, Scroll lock khoâng phaûi laø do
ta nhaán phím treân baøn phím, maø do maùy tính giaûi maõ vaø seõ göûi nhöõng maõ ngöôïc
veà cho baøn phím ñieàu khieån vieäc baät saùng ñeøn.
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 86
Nhö vaäy khi moät phím ñöôïc nhaán thì baøn phím seõ göûi ñi maõ queùt cuûa phím
ñoù roài göûi ñi maõ F0h, ñoái vôùi caùc phím môû roäng thì maõ queùt cuûa phím ñoù ñöôïc
göûi ñi tröôùc, sau ñoù laø maõ E0h (ñeå baùo cho maùy vi tính bieát ñoù laø phím môû roäng)
roài môùi tôùi maõ F0h.
11.2 CAÙC MAÕ LEÄNH ÑEÅ GIAO TIEÁP VÔÙI BAØN PHÍM
11.2.1 Caùc maõ leänh ñöôïc göûi tôùi baøn phím
Nhöõng maõ leänh naøy ñöôïc göûi ñi töø boä phaän ñieàu khieån baøn phím (maùy tính
hoaëc trong luaän vaên naøy laø töø chip AT89C2051). Caùc leänh naøy chuû yeáu nhö laø
caùc leänh baät taét ñeøn, reset baøn phím, … Sau ñaây laø moät soá maõ leänh thoâng duïng:
Maõ EDh: Thieát laäp traïng thaùi cuûa ñeøn LED. Sau khi göûi maõ leänh naøy ñi,
baøn phím seõ gôûi laïi maõ ACK (FAh). Vaø chôø byte sau seõ quyeát ñònh trang
thaùi cuûa ñeøn. Bit 0 cho ñeøn Scroll Lock, bit 1 cho ñeøn Num Lock, bit 2 cho
ñeøn Caps Lock, caùc bit coøn laïi khoâng quan taâm.
Maõ EEh: Ñöôïc goïi laø maõ Echo, vì khi göûi maõ naøy ñi thì baøn phím cuõng seõ
göûi ngöôïc trôû laïi maõ naøy.
Maõ F0h: Thieát laäp boä maõ queùt. Khi göûi maõ naøy ñi, baøn phím seõ göûi trôû laïi
maõ ACK vaø chôø nhaän byte keá tieáp, 01-03 seõ qui ñònh boä maõ queùt ñöôïc söû
duïng. Neáu göûi 00 thì baøn phím seõ cho ta bieát boä maõ queùt ñang ñöôïc söû
duïng.
Maõ F3h: Thieát laäp thôøi gian laëp laïi cuûa phím.
Maõ F4h: Cho pheùp baøn phím hoaït ñoäng, leänh naøy seõ xoùa boä ñeäm cuûa baøn
phím.
Maõ F5h: Khoùa baøn phím.
Maõ FEh: Leänh naøy seõ yeâu caàu baøn phím göûi laïi byte cuoái cuøng maø baøn
phím vöøa göûi.
Maõ FFh: Reset baøn phím.
11.2.2 Caùc maõ leänh ñöôïc göûi ñi töø baøn phím
Maõ FAh:Maõ tín hieäu ACK.
Maõ AAh: Maõ baøn phím baùo laø ñaõ khôûi ñoäng xong.
Maõ EEh: Töông töï nhö treân.
Maõ FEh: Maõ baøn phím yeâu caàu göûi cho baøn phím byte vöøa göûi.
Maõ 00h hoaëc FFh: Maõ baùo loãi hoaëc boä ñeäm bò traøn.
11.3 CAÙC MAÕ QUEÙT CUÛA BAØN PHÍM AT
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 87
Hình 11.1 cho bieát maõ queùt cuûa töøng phím. Do maõ queùt cuûa töøng phím
khoâng theo thöù töï nhö thöù töï baûng chöõ caùi. Neân khi laäp trình ñeå chuyeån sang maõ
ASCII, ta caàn phaûi laäp moät baûng tra.
Hình 11.1 Maõ queùt cuûa töøng phím cuûa baøn phím AT
Hình 11.2 Maõ queùt cuûa caùc phím môû roäng cuûa baøn phím AT
11.4 COÅNG NOÁI CUÛA BAØN PHÍM
Baøn phím AT coù boán daây ra, trong ñoù coù hai daây nguoàn, hai daây tín hieäu.
Boán daây naøy ñöôïc noái vôùi hai loaïi coång, coång PS/2 hoaëc coång 5 Pin DIN vôùi vieäc
boá trí chaân nhö sau:
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 88
1. KBD Clock 1. KBD Clock
2. KBD Data 2. GND
3. N/C 3. KBD Data
4. GND 4. N/C
5 Pin DIN 5. +5V (VCC) PS/2 5. +5V (VCC)
6. N/C
Hình 11.3 Sô ñoà chaân ra cuûa ñaàu noái baøn phím
11.5 LAÄP TRÌNH GIAO TIEÁP VÔÙI BAØN PHÍM
11.5.1 Laäp trình göûi leänh töø baøn phím ñeán boä ñieàu khieån
Do baøn phím söû duïng hai daây tín hieäu ñeå ñieàu khieån, döõ lieäu (leänh, maõ
queùt) truyeàn töø boä ñieàu khieån cuõng nhö töø baøn phím ñeàu duøng chung ñöôøng
truyeàn, nhöng ñöôøng truyeàn töø boä ñieàu khieån tôùi baøn phím ñöôïc öu tieân hôn.
Khi hai chaân KBD Clock vaø KBD Data ôû möùc cao (raõnh-Idle), thì baøn phím
seõ töï do göûi döõ lieäu. Neáu chaân KBD Clock xuoáng möùc thaáp thì baøn phím seõ
chuaån bò ñöa döõ lieäu vaøo boä ñeäm göûi (tín hieäu chaån bò göûi – Clear to Send). Vaø
khi chaân KBD Clock leân laïi möùc cao thì boä ñeäm naøy ñöôïc göûi ra chaân KBD
Data.
Khung truyeàn goàm 11-bit döõ lieäu. Bit ñaàu tieân laø Start-bit (logic 0), tieáp
theo laø 8-bit döõ lieäu (bit LSB ñöôïc göûi ñi tröôùc), tieáp theo laø bit parity kieåm tra leû
vaø cuoái cuøng laø Stop-bit (logic 1). Moãi bit ñöôïc laáy maãu khi coù caïnh xuoáng cuûa
KBD Clock.
Hình 11.4 Khung truyeàn döõ lieäu töø baøn phím tôùi boä ñieàu khieån
Xung treân chaân KBD Clock laø do baøn phím töï taïo ra, xung naøy coù taàn soá
khoaûng 20-30KHz.
11.5.2 Laäp trình göûi leänh töø boä ñieàu khieån ñeán baøn phím
Khi boä ñieàu khieån muoán göûi leänh ñeán baøn phím, thì tröôùc heát ta seõ cho chaân
KBD Data xuoáng möùc thaáp (Request to Send). Tuy nhieân ñeå traùnh tröôøng hôïp
luùc ñoù baøn phím cuõng göûi döõ lieäu treân chaân KBD Data, ta seõ giöõ chaân KBD
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
- Thieát keá, cheá taïo vaø ñieàu khieån tay maùy Trang 89
Clock ôû möùc thaáp trong hôn 600µs, roài môùi cho chaân KBD Data xuoáng möùc thaáp
ñoàng thôøi cho chaân KBD Clock leân möùc cao.
Luùc naøy baøn phím seõ taïo xung clock treân chaân KBD Clock vaø ta seõ ñôïi
caïnh xuoáng ñaàu tieân treân chaân KBD Clock, sau ñoù ta seõ ñöa töøng bit döõ lieäu leân
chaân KBD Data. Bit naøy seõ ñöôïc baøn phím ñoïc khi coù caïnh xuoáng tieáp theo cuûa
xung clock. Ta seõ truyeàn 8-bit döõ lieäu cuøng vôùi bit parity kieåm tra leû.
Hình 11.5 Khung truyeàn döõ lieäu töø boä ñieàu khieån tôùi baøn phím
Khi bit parity ñöôïc baøn phím ñoïc thì chaân KBD Data seõ ñöôïc baøn phím ñöa
leân möùc cao vaø baøn phím seõ gôûi veà tín hieäu ACK thoâng baùo ñaõ nhaän döõ lieäu.
11.6 KEÁT LUAÄN
Coù theå thaáy baøn phím AT laø moät thieát bò nhaäp khaù tieän lôïi, chæ vôùi hai daây
tín hieäu, ta coù theå coù hôn 101 phím leänh khaùc nhau. Vôùi chöông naøy ta theå laäp
trình giao tieáp vôùi baát kyø moät baøn phím AT naøo ñeå coù moät thieát bò nhaäp tieän ích.
Ngaøy nay vaán ñeà löu tröõ döõ lieäu cuõng khaù ñöôïc quan taâm, nhaát laø vaán ñeà löu tröõ
moät khoái löông lôùn thoâng tin maø ROM, hay RAM khoâng theå ñaùp öùng noåi.
Chöông tieáp theo chuùng ta seõ tìm hieåu khaùi quaùt vieäc laäp trình giao tieáp vôùi ñóa
cöùng (HDD).
GVHD: TS. NGUYEÃN VAÊN GIAÙP SVTH: Nguyeãn Nhaät Taân-Nguyeãn Leâ Tuøng
nguon tai.lieu . vn