Тема 23

Принцип на работа на клавиатурата.


страницата се нуждае от дописване/преглеждане


Устройство на клавиатурата

key.PNG

Клавиатурата се състои от клавиши, всеки от които е разположен върху контакт (ключ). По механичен път - чрез пружини, гумени подложки, еластична пластмаса1 - клавишът се поддържа вдигнат, съответно контактът - отворен. При натиск върху клавиша ключът се затваря. Клавишите са разположени в наборно поле - мрежа от проводници: за всеки ред и за всеки стълб от клавиатурата има по един проводник. По проводниците на редовете периодично, в синхронизирана поредица, се пуска електричен импулс и се следи дали той ще се появи на някой стълбов проводник. Така се отчита натиск и еднозначно се определя натиснатият клавиш.

Логика на работата

keyboard_field.PNG

В клавиатурата има микропроцесорно управление, със собствена RAM памет и буфер. В паметта се пази текущото състояние на наборното поле. Ако при две последователни сканирания се установи разлика в състоянието на даден а позиция, се отчита - натиск или отпускане на съответния клавиш. Отчита се и времето, през което клавишът е бил натиснат/отпуснат. Преди да се отчете натиск/отпускане, трябва да преминат 2 последователни сканирания, които да потвърдят този факт. Това се налага, тъй като механичните контакти често дават грешки или неясни резултати, които трябва да се избегнат. Сканиранията се извършват през интервал от няколко милисекунди.

Всеки клавиш има 7-битов позиционен код, по който устройствата извън клавиатурата разбират кой клавиш е бил натиснат/отпуснат. Седем бита са достатъчни за 128 клавиша, а стандартното наборно поле е със 101/102. Когато се отчете събитие, се генерира 8-битов код - позиционният код плюс допълнителен бит за състояние (натиснат/отпуснат). Тези кодове се записват в опашков (FIFO - First In, First Out) буфер, за по-нататъшно изпращане. Ако буферът се препълни, следващите кодове спират да се вкарват в него, и системата "писка".

След клавиатурата

keyboard_controller.PNG2

Стандартанта клавиатура има 4-проводен кабел: +5V - захранване, 0V - нула ("земя"), Данни, Синхро-импулс. Кодовете на клавишите се подават последователно, бит по бит, по проводника за данни, като логическа единица се кодира с високо ниво сигнал, а нула - с ниско. Съвременната клавиатура има двупосочна връзка с компютъра. Възможно е, например, подаването на Reset-сигнал, който "нулира" клавиатурата и изчиства RAM до начално състояние.

Контролерът на клавиатурата се намира в дънната платка. Той има 3 еднобайтови регистъра: Команди (регистър за управление), Състояние, Данни - 3 фиксирани еднобайтови адреси във входно-изходното адресно пространство. Когато контролерът очаква сигнал (тоест, в готовност е), при натискане на клавиш неговият код постъпва в регистъра за данни. Контролерът подава прекъсване по високоприоритетната линия IRQ1 към контролера на прекъсванията. Ако прекъсванията не са маскирани, прави се прекъсване и се извиква програма - клавиатурен драйвър. Тя знае адресите ("портовете") на регистрите3. Драйвърът прочита регистъра Състояние, прочита Данни, нулира Данни, записва в Команди бит, указващ, че е готов за следващо четене, по стойността на Данни (позиционният код и състоянието на клавиша) образува ASCII-код, който предава нататък, и връща управлението. При образуването на ASCII-кода се отчита състоянието и на други, модифициращи клавиш клавиши, като Shift, Ctrl, Alt. Ако, например, е натиснат клавиш Shift, драйвърът минава в състояние "горен регистър" ("uppercase"). ASCII-кодът зависи също така от активната в дадения момент ASCII таблица.

Важни подробности

В клавиатурата не се образуват ASCII-кодове.4
Чрез драйверите на клавиатурата могат да се трансформират значенията на клавишите. (Phonetic, English,..)

По-особен случай са USB клавиатурите, което не използват прекъсвания, а кадри (frames), и не чакат да им се предаде управление.

Лоша идея е да се държат течности като кафе или кола покрай клавиатурите, тъй като при случайно разливане, те могат да разядат или слепят контактите.5

Полезна информация

Позиционни кодове и скан-кодове
Как работи клавиатурата в HowStuffWorks.com

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License