Порт LCD дисплея

Процессорная система «DE2-70 Media Computer» включает порт, соединённый с жидкокристаллическим дисплеем LCD на плате DE2-70. Дисплей включает память для хранения символьных данных. Как показано на рис. 3.24, общая ёмкость памяти составляет 40х2=80 символов. Первые 16 символов, хранимых в каждой строке этой памяти, видимы на экране, а оставшиеся 24 символа не видимы на экране. Каждая ячейка в памяти может быть доступна с помощью координат (x,y) в семиразрядном адресе, как показано на рис. 3.25. В соответствии с этой схемой, верхняя и нижняя строки дисплея начинаются с адресов 0х00 и 0х40, соответственно, как показано на рис. 3.24. Программируемый интерфейс для LCD дисплея показан на рис. 3.26. Он включает регистр команд, который используется для управления дисплеем LCD и регистр данных, который используется для отправки символьных данных для отображения их на дисплее. Данные могут быть отправлены на дисплей, как ASCII коды, которые автоматически преобразуются дисплеем LCD в отображаемые символы, используя встроенный шрифт. Некоторые из команд, поддерживаемых символьным дисплеем, показаны в таблице 3.2. Первая команда, которая идентифицируется посредством установки бита 7 регистра управления в единицу, используется для установки курсора в заданное положение. Семиразрядное поле адреса задает координаты курсора. После того, как положение курсора будет задано, символ может быть отображен в этой позиции экрана LCD посредством записи его ASСII кода в регистр данных.

 

Рис. 3.24 – 16х2 символьный дисплей

Рис. 3.25 – Адресация

символьного дисплея

Рис. 3.26 – Регистры LCD дисплея

После завершения операции записи данных в регистр данных, символьный дисплей автоматически перемещает положение курсора на одну позицию вправо. Последовательность символов может быть выведена на дисплей посредством записи каждого символа последовательно в регистр данных LCD. Как показано на рис. 3.24, символьный дисплей включает 40 позиций в каждой строке. Когда курсор достигнет адреса 0х0F в верхней строке, следующие 24 символа сохраняются в позициях, которые не видимы на экране. После записи 40 символов в верхнюю строку, положение курсора переместиться на нижнюю строку по адресу 0х40. После заполнения нижней строки, курсор переместиться назад по адресу 0х00 в начало верхней строки.

Жидкокристаллический дисплей LCD обладает способностью сдвигать своё содержимое на одну позицию влево или вправо. Как показано в табл. 3.2 команда для сдвига влево - 0х18, а команда для сдвига вправо - 0х1С. Выполнение этих команд приведет к одновременному сдвигу двух строк на экране на одну позицию. Когда символы выдвигаются за пределы строки вправо, они циклически помещаются в её начало. Аналогично в другую сторону. Для выключения мерцания курсора на дисплее используется команда 0х0С. Для включения – команда 0х0F. Дисплей может быть очищен и курсор установлен в начало верхней строки, посредством использования команды 0х01.

Фрагмент программы на языке С, в котором используется LCD дисплей, приведён в листинге 18. Программа вначале устанавливает курсор в положение (x,y), затем записывает строку, оканчивающуюся нулевым байтом, для отображения на символьном дисплее. Этот фрагмент входит в состав программы «Media», о которой упоминалось ранее.

 

Таблица 3.2

Команды LCD дисплея

Команды LCD дисплея b7 b6-0
Установить курсор Адрес
Сдвинуть дисплей влево
Сдвинуть дисплей вправо
Выключить мерцание курсора
Включить мерцание курсора
Очистить дисплей

 

Листинг 18. Фрагмент кода, в котором используется LCD дисплей

volatile char *LCD_display_ptr = (char *) 0x10003050; //базовый адрес lcd дисплея

int x, y;

char *text_ptr;

char instruction;

instruction = x;

if (y!=0)

instruction |=0x40; //записываем значение позиции курсора (начало нижней строки)

instruction |=0x80; //команда установки курсора

*(LCD_display_ptr) = instruction; //записываем команду по адресу lcd дисплея

while(*(text_ptr))

{

*(LCD_display_ptr+1) = *(text_ptr); //выводим символ на дисплей

++text_ptr;

}


3.4.5. Порт PS/2

Процессорная система «DE2-70 Media Computer» включает два PS/2 порта, которые могут быть соединены со стандартными клавиатурой и мышью. Каждый порт содержит 256 байтный FIFO буфер, который хранит данные, получаемые из PS/2 устройства. Программный интерфейс PS/2 порта состоит из двух регистров, как показано на рис. 3.27.

 

Рис. 3.27 – Регистры РS/2 порта

 

Регистр данных можно считывать и записывать. Если в считанном из регистра данных слове 15-ый бит (RVALID) равен 1, то это означает, что данные в буфере чтения FIFO присутствовали. Следовательно, они могут быть взяты из младших восьми разрядов считанного из регистра данных слова. В это же время, считанное из поля RAVAIL значение, будет отображать число оставшихся в буфере FIFO символов, с учетом только что прочитанного. Каждый раз после чтения символа из буфера FIFO, поле RAVAIL автоматически уменьшается на единицу. Запись в регистр данных может быть использована для отправки команды, представленной в младшем байте, в PS/2 устройство.

Регистр управления может быть использован для разрешения прерываний процессора от PS/2 порта, посредством установки поля RE в 1. Когда это поле установлено, PS/2 порт будет формировать запрос прерывания, если RAVAIL больше 0. Об этой ситуации будет сигнализировать разряд RI, который будет установлен в 1. Этот разряд может быть очищен посредством чтения из PS/2 порта. Бит CE в регистре управления используется для указания ошибки, если она возникает при отправке команды в PS/2 устройство.

Фрагмент программы на языке С, в котором используется PS/2 порт, приведён в листинге 19. Программа читает содержимое регистра данных, затем выделяет бит RVALID и, если он установлен, то сохраняет данные. В противном случае ожидает установки этого бита. Последние три байта данных, полученных от PS/2 порта, сохраняются в переменных byte1, byte2, byte3. Рассмотренный фрагмент является составной частью большей программы Media, входящей в приложение Altera Monitor Program.

 

Листинг 19. Фрагмент программы, в котором используется PS/2 порт

volatile int *PS2_ptr = (int *) 0x10000100; //базовый адрес PS/2 порта

int PS2_data, RVALID;

char byte1=0, byte2=0, byte3=0;

PS2_data = *(PS2_ptr); //читаем содержимое регистра данных PS/2 порта

RVALID = PS2_data & 0x8000; //извлекаем бит RVALID

if (RVALID) //если в буфере имеются новые данные

{

/*Сохраняем последние 3 байта данных*/

byte1 = byte2;

byte2 = byte3;

byte3 = PS2_data & 0xFF;

}

 


3.4.6. Второй PS/2 порт

Процессорная система «DE2-70 Media Computer» включает второй PS/2 порт, что позволяет использовать в ней одновременно и клавиатуру и мышь. Для этого понадобится соединитель Y-типа, через который можно подсоединить к стенду клавиатуру и мышь. Второй PS/2 порт имеет такие же регистры, как и первый, только адрес его регистра данных 0x10000108 и адрес регистра управления 1x000010C.

 








Дата добавления: 2015-05-30; просмотров: 941;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.011 сек.