Изучение принципов построения, технических характеристик и параметров клавиатуры ПЭВМ

Страницы работы

Фрагмент текста работы

Лабораторная работа № 1.

Клавиатура IBM PC.

Цель работы: изучение принципов построения, технических характеристик и параметров клавиатуры ПЭВМ.

Задача:

1.  Составить программу, выполняющую следующие процедуры: а) выполнение команды установки задержки и периода автоповтора;

б) чтение Scan и ASCII-кода нажимаемой клавиши;

2.  Снять осциллограммы сигналов на контактах CLK и DATA, для трех значений задержки и периода автоповтора.

3.  Определить Scan и ASCII - коды пяти клавиш (произвольных) программным способом и снять осциллограммы Scan-кодов клавиш по сигналу DATA.

Основные принципы работы клавиатуры.

Рис. 1. Упрощенная схема клавиатуры.

Микроконтроллер клавиатуры опрашивает состояние клавиатуры: факт нажатия и номер нажатой клавиши - скан-код (Scan Code).

Данные кодируются 1 байтом, 7 бит в котором – скан-код, а восьмой бит – признак нажатия или отжатия. Передача кода производится последовательно, начиная с младшего бита. 

Формат передачи данных бывает 2-х типов:

·  9-битный (1 – стартовый и 8 – данные );

·  11-битный (добавляется бит паритета – контроль четности, а также стоповый бит).

Подключается клавиатура к компьютеру посредством кабеля с разъемом: DIN (5 pin, Male) - вариант AT или Mini DIN (6 pin, Male) - вариант PS/2.

Разъем Mini DIN имеет следующие линии интерфейса: CLOCK (сихронизация), DATA (данные), RESET (сброс), GND (земля), UCC (питание).

Когда скан-код поступает в контроллер клавиатуры, то инициализируется аппаратное прерывание (IRQ1), процессор прекращает свою работу и выполняет процедуру, анализирующую скан-код, входящей в состав ROM BIOS. При поступлении скан-кода от клавиш <Alt>, <Ctrl> или <Shift>, <CapsLock> изменение статуса записывается в RAM. Во всех остальных случаях скан-код трансформируется в код символа специальной программой по специальным таблицам: ДКОИ, КОИ-7, ASCII. Введенный код помещается в буфер клавиатуры, организованый по принципу FIFO (первый вошел - первый вышел). Контроллер на материнской плате может не только принимать, но и передавать данные, чтобы сообщить клавиатуре различные параметры, например, частоту повтора нажатой клавиши и задержку.

Каждая клавиша генерирует два типа скан-кодов: код нажатия, когда клавиша нажимается, и код освобождения, когда клавиша отпускается. Для PC класса AT используется одна и та же цепочка битов для кодов нажатия и кодов освобождения, но коды освобождения состоят из двух байтов, первый из которых всегда равен 0F0H. Для PC XT-генерации код освобождения на 128 больше кода нажатия (седьмой бит равен 1).

Для работы с клавиатурой типа PC/XT используются порты с адресами 60h и 61h.

Выполнение работы:

1.  Написаны программы, позволяющие устанавливать задержки и период автоповтора, а также определять скан-код и ASCII-код нажатой клавиши.

2.   

Таблица кодов нажатых клавиш.

Скан - кодов

ASCII – кодов

P

112

L

108

K

107

M

109

Вывод: В ходе проведения лабораторной работы был рассмотрен принцип построение клавиатуры. Написаны программы для  работы с параметрами клавиатуры и определения значений кодов нажатых клавиш. А также сняты осциллограммы сигналов работы клавиатуры при различных режимах ее работы.

Листинг программной части:

1.  выполнение команды установки задержки и периода автоповтора.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <iostream.h>

void main() {

int i,dalay,reload;

char *string;

printf("Устновка задержки и периода автоповтора.");

printf("\nУстновка задержки:\n"

"-- 0 - 250 mc\n"

"-- 1 - 500 mc\n"

"-- 2 - 750 mc\n"

"-- 3 - 1000 mc");

printf("\nУстновка периода автоповтора:\n"

"-- 0 - 30\n"

"-- 1 - 26.7\n"

"-- 2 - 24\n"

"-- 3 - 20\n"

"-- 4 - 15\n"

"-- 5 - 10\n"

"-- 6 - 9.2\n"

"-- 7 - 7.5\n"

"-- 8 - 5\n"

"-- 9 - 2\n");

cin >> dalay;

cin >> reload;

if (dalay==0) { if(reload==0) {outp(0x60,0xf3);outp(0x60,0x00);}

if(reload==1) {outp(0x60,0xf3);outp(0x60,1);}

if(reload==2) {outp(0x60,0xf3);outp(0x60,2);}

if(reload==3) {outp(0x60,0xf3);outp(0x60,4);}

if(reload==4) {outp(0x60,0xf3);outp(0x60,8);}

if(reload==5) {outp(0x60,0xf3);outp(0x60,0x0f);}

if(reload==6) {outp(0x60,0xf3);outp(0x60,0x0d);}

if(reload==7) {outp(0x60,0xf3);outp(0x60,0x10);}

if(reload==8) {outp(0x60,0xf3);outp(0x60,0x14);}

if(reload==9) {outp(0x60,0xf3);outp(0x60,0x1f);}};

if (dalay==1) { if(reload==0) {outp(0x60,0xf3);outp(0x60,0x20);}

if(reload==1) {outp(0x60,0xf3);outp(0x60,0x21);}

if(reload==2) {outp(0x60,0xf3);outp(0x60,0x22);}

if(reload==3) {outp(0x60,0xf3);outp(0x60,0x24);}

if(reload==4) {outp(0x60,0xf3);outp(0x60,0x28);}

if(reload==5) {outp(0x60,0xf3);outp(0x60,0x2f);}

if(reload==6) {outp(0x60,0xf3);outp(0x60,0x2d);}

if(reload==7) {outp(0x60,0xf3);outp(0x60,0x30);}

if(reload==8) {outp(0x60,0xf3);outp(0x60,0x34);}

if(reload==9) {outp(0x60,0xf3);outp(0x60,0x3f);}};

if (dalay==2) { if(reload==0) {outp(0x60,0xf3);outp(0x60,0x40

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
67 Kb
Скачали:
0