Xem mẫu

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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