ЛР №3 Представление символьной информации и LCD дисплей
Представление символьной информации в процессорной системе и вывод её на LCD дисплей
Для кого этот документ
- Студентам курса "Организация ЭВМ"
- Необходимое ПО: Quartus II
Цель работы
Изучить, как символьная информация представляется в памяти процессорной системы, директивы ассемблера для работы с символьной информацией, научиться выводить её на LCD дисплей стенда.
Объекты изучения
- жидкокристаллический LCD дисплей, входящий в состав стенда;
- контроллер LCD дисплея;
- приложение Intel Monitor Program (IMP) для работы со стендом, а точнее использование его для взаимодействия с периферийными устройствами.
Планируемые результаты обучения
После выполнения этой работы студенты будут знать:
- Как кодируется символьная информация в вычислительных машинах;
- Какие директивы ассемблера используются для работы с символьной информацией;
- Как формируются изображения символов, выводимых на экран LCD дисплея;
- Как выполняется взаимодействие программных компонентов с контроллером LCD.
Смогут:
- Использовать символьную информацию в своих программах;
- Находить символьную информацию в оперативной памяти процессорной системы и редактировать её;
- Выводить символьную информацию на LCD дисплей стенда, как в виде неподвижного изображения, так и в виде бегущей строки;
- Создавать специализированные символы и выводить их на LCD дисплей.
- Управлять с помощью кнопок перемещением текстовых строк на экране LCD.
Приобретут навыки:
- использования символьной информации в своих программах;
- вывода символьной информации на индикаторы, типа LCD дисплея.
Исходные файлы лабораторной работы
Файл address_map.s содержит несколько поименованных констант. Первая из них является базовым адресом LCD дисплея, а остальные представляют собой бинарные коды часто используемых команд, для управления дисплеем. Содержимое этого файла, вместе с подробными комментариями представлено в листинге 3 приложения Б.
В файле lab_lcd.s содержится заготовка программы взаимодействия процессорной системы с LCD дисплеем. Её текст вместе с подробными комментариями приведен в листинге 4.
В файле create_g.s содержится программа, демонстрирующая создание заглавной буквы «Г» с последующим выводом её на экран LCD. Листинг 5 с исходным кодом этой программы, содержится в приложении Б. Результат выполнения программы показан на рисунке 3.7.
В файле print.s, содержится процедура вывода русскоязычного текста на экран LCD. Исходный код этой процедуры, включающий подробные комментарии, представлен в листинге 6 приложения Б.
Файл RU_string.s содержит программу, демонстрирующую вывод русскоязычного сообщения на экран LCD. Листинг 7 с исходным кодом этой программы также содержится в приложении Б. Результат выполнения программы приведен на рисунке 3.8.
Подготовка к лабораторной работе
- Изучите описание LCD дисплея, входящего в состав процессорной системы DE2-115 Media Computer [13], его возможности. Включите в отчет адреса и форматы регистров управления и данных контроллера LCD дисплея, перечень основных команд, схему адресации позиций на экране дисплея и памяти в CGRAM, принцип формирования изображения на экране.
- Подготовьте коды команд для управления LCD дисплеем и коды ASCII для отображения на нём вашей фамилии, имени и отчества (для выполнения пунктов задания части 3). Включите их в отчет. Таблица кодов ASCII находится в приложении – А. ASCII коды символов текстовой строки с вашей фамилией, именем и отчеством можно взять из отчета по предыдущей лабораторной работе 2 (пункт 3.2).
- Изучите директивы ассемблера .data, .ascii, .asciz, .byte, .skip, .include. Поместите их описания в отчет.
- Уясните пункты задания, выполняемого в текущей лабораторной работе.
- Уясните логику работы программы взаимодействия с LCD дисплеем. Исходный её код содержится в файле lab_lcd.s, а листинг программы с подробными комментариями приведен в приложении – Б.
- Уясните логику работы процедуры print, выполняющей вывод русскоязычного текста на экран LCD. Исходный код её содержится в одноименном файле, а листинг 5 с подробными комментариями приведен в приложении Б.
- Выполните редактирование программы для выполнения пункта 2.7 задания и подготовьте новые исходные данные для тестирования программы, соответствующие индивидуальному варианту задания. Включите текст измененной программы с обновленными данными в отчет.
- Подготовьте изображение костяшек домино и буквы греческого алфавита для выполнения пункта 4.1 задания.
- Подготовьте программы для выполнения пунктов 4.3, 4.4, 5.1, 5.2, 7.2.
Вопросы для самоконтроля
- Что представляет собой LCD дисплей, используемый в процессорной системе?
- Каким образом выполняется вывод информации из процессорной системы на LCD дисплей?
- Как задать положение на дисплее выводимого символа?
- Какая кодировка используется для символов, отображаемых на LCD?
- Какие команды поддерживает контроллер LCD?
- Какое количество символов можно вывести на LCD дисплей?
- Что произойдет, если выполнять вывод текста за пределом первой (второй) строки?
- Какие компоненты памяти входят в состав контроллера LCD? Каково их назначение?
- Как реализовать вывод текста на LCD дисплей в режиме бегущей строки?
- Что собой представляет знакоместо?
- Как создать свои собственные символы для вывода их на экран LCD?
- Как экспериментально подобрать комфортную для восприятия скорость движения бегущей строки?
- Какие регистры используются в процессорной системе для взаимодействия с контроллером LCD? Каковы их форматы?
Порядок выполнения лабораторной работы
Часть 1. Исследование команд управления LCD дисплеем
Для выполнения первой части работы следует во вкладке Memory приложения IMP включить опцию Query all devices. Это позволит отображать во вкладке не только содержимое ячеек памяти, но и портов ввода/вывода. При выполнении записи данных в порт ввода/вывода IMP автоматически выполняет считывание из этого порта и обновление его содержимого в окне Memory, которое в случае изменения отображается красным цветом. Нажатие кнопки Refresh memory также осуществляет считывание из порта ввода/вывода. По этой причине для выполнения этой части лабораторной работы после однократного использования опции Query all devices её следует отключить и не использовать кнопку Refresh memory.
Вывод текста на LCD осуществляется путем записи информации в его регистры управления и данных, а корректность его работы проверяется путем визуального наблюдения отображаемой на LCD информации. Так как регистры управления и данных являются восьмиразрядными, то рекомендуется во вкладке Memory отображать информацию по байтам.
1.1. Выполните очистку LCD-дисплея, записывая соответствующую команду в регистр управления LCD (первая команда в таблице 3.2).
1.2. Чтобы увидеть место положения курсора отобразите его в виде мигающего прямоугольника. Используйте для этого команду настройки режима отображения (четвертая по счету в таблице 3.2). Отразите в отчете положение курсора после очистки экрана.
1.3. Отправьте в регист данных LCD порта ASCII код заглавной буквы вашей фамилии. Следует напомнить, что в IMP кодировка русскоязычных символов не поддерживается. Поэтому для выполнения этой части задания используйте буквы латинского алфавита. Наблюдайте выводимый символ на экране. Обратите внимание на изменение положения курсора после вывода первой буквы.
1.4. Попробуйте отключить курсор в виде мигающего прямоугольника. Убедитесь, что это произошло.
1.5. Вновь включите изображение курсора, но теперь уже в виде знака подчеркивания. Наблюдайте его вид на экране LCD. После этого выведите на экран LCD вторую, теперь уже строчную букву вашей фамилии.
1.6. Временно запретите вывод символов на экран LCD, используя команду настройки отображения экрана, а потом вновь разрешите.
1.7. Продолжите вывод вашей фамилии на первой строке LCD дисплея, отправляя коды символов в регистр данных LCD.
1.8. Установите курсор в начало второй строки LCD дисплея, используя последнюю команду из таблицы 1. Выведите на второй строке ваше имя, начиная с заглавной буквы. Сделайте снимок экрана LCD с выведенным текстом и поместите его в отчетные материалы.
1.9. Экспериментально определите возможности команды настройки режима вывода текста на экран LCD (третья команда в таблице 3.2). Для этого изменяйте значения битов I/D и S в этой команде. Фиксируйте ваши наблюдения в отчете. Добавьте в таблицу 3.2, сразу после исследуемой команды четыре возможных варианта её выполнения.
1.10. Экспериментально исследуйте возможности команды сдвига курсора или текста на экране LCD (пятая в таблице 3.2). Для этого изменяйте значения битов S/C и R/L в этой команде. Фиксируйте ваши наблюдения в отчете. Добавьте в таблицу 3.2, сразу после исследуемой команды четыре возможных варианта её выполнения.
1.11. Используя команду из предыдущего пункта выполните сдвиг отображаемых на экране LCD строк на одну позицию вправо.
1.12. Используя команду из пункта 1.10 выполните сдвиг отображаемых на экране LCD строк на одну позицию влево.
1.13. Поместите курсор в конец первой строки (в невидимую часть) и отправьте последовательность символов «1», «2», «3» в регистр данных LCD. Наблюдайте результат на LCD дисплее. Добавьте в отчет ваши комментарии.
1.14. Поместите курсор в конец второй строки (в невидимую часть) и отправьте последовательность символов «4», «5», «6» в регистр данных LCD. Наблюдайте результат на LCD дисплее. Добавьте в отчет ваши комментарии.
1.15. Выполните сдвиг отображаемых строк на одну позицию вправо. Наблюдайте результат на LCD дисплее. Отразите в отчете ваши соображения по поводу поведения курсора и работы LCD дисплея.
1.16. Выполните очистку LCD дисплея.
1.17. Отключите курсор.
Часть 2. Программное управление LCD дисплеем
2.1. Скомпилируйте программу lab_lcd.s и загрузите в память процессорной системы. Начните выполнять программу по шагам, осмысливая производимые ею действия. В цикле вывода текстовой строки на экран LCD в программе рекомендуется поставить контрольную точку и выполнять программу в автоматическом режиме, наблюдая вывод текста по одному символу.
2.2. После уяснения логики вывода текстовой строки на экран LCD поставьте контрольную точку на команде, выполняемой сразу после завершения цикла, а предыдущую контрольную точку удалите. Продолжите выполнение программы по шагам до цикла вывода второй текстовой строки, осмысливая выполняемые программой действия. Отразите в отчете наблюдаемый результат.
2.3. Поставьте контрольную точку в цикле вывода второй текстовой строки. Наблюдайте вывод второй строки по одному символу, продолжая выполнение программы в автоматическом режиме.
2.4. Затем поставьте контрольную точку на команде с локальной меткой 1, выполняемой сразу после выхода из этого цикла, а предыдущую контрольную точку удалите. Обратите внимание на то, как в команде условного перехода указывается переход вперед на локальную метку. Продолжите выполнение программы в автоматическом режиме. Отразите в отчете наблюдаемый результат.
2.5. Выполняйте следующие команды по шагам, наблюдая результат. Обратите внимание на то, как указывается целевой адрес в команде безусловного перехода. Используемый в ней символ точки задает адрес текущей команды. Поместите в отчет ваши комментарии, относительно поведения программы.
2.6. Запишите в счетчик команд (регистр РС в окне регистров) адрес команды, помеченной локальной меткой 2. Следует напомнить, что для этого достаточно дважды кликнуть по соответствующей строке программы во вкладке Disassembly. Текущая команда выделится желтым цветом. Поставьте контрольную точку по адресу следующей команды. Продолжите выполнение программы еще несколько раз. Наблюдайте результат и отобразите его в отчете.
2.7. После полного уяснения логики работы программы выполните её редактирование, предварительно сохранив её с новым именем, таким образом, чтобы программа выводила на первой строке LCD дисплея вашу фамилию, имя и отчество и номер группы, а на второй строке в начале слово «nachalo», в конце строки (в невидимой части) слово «konec», а в середине – все цифры заданной в соответствии с вариантом системы счисления, причем в том порядке, который указан в задании. Цифры должны размещаться, строго в середине второй строки и следовать в том порядке, который задан вашим вариантом.
Часть 3. Вывод символьной информации на LCD экран в режиме бегущей строки
3.1. Модифицируйте программу из предыдущего пункта так, чтобы информация на экране LCD выводилась в режиме бегущей строки. Используйте программную задержку. Причем экспериментально подберите её величину таким образом, чтобы выводимая на экран LCD информация была легко читаема. Поместите в отчет листинг отлаженной программы и фото, выводимой на экран LCD информации.
Часть 4. Создание специализированных символов
4.1. Создайте на листах из школьной тетради в клетку изображение восьми специализированных символов. В качестве семи символов используйте изображения половинок костяшек для игры в домино (от пусто до шестёрки). Вид костяшек дублей приведен на рисунке ниже. В качестве восьмого символа используйте одну из строчных букв греческого алфавита, номер которой в алфавите совпадает с порядковым номером студента в списке группы. Сам алфавит представлен в таблице ниже.


4.2. Выполните кодирование символов костяшек и буквы греческого алфавита кодами от 0х00 до 0х07. Причем изображению костяшки «пусто» поставьте в соответствие код, полученный путем пересчета по модулю 8 порядкового номера студента в списке группы. Остальным символам назначьте следующие значения кодов.
4.3. Напишите программу на ассемблере, которая заполняет оперативную память CGRAM знакогенератора LCD с учетом предыдущих двух пунктов.
4.4. Напишите программу, которая выводит все созданные символы слева направо с начала первой строки экрана LCD для нечетных вариантов, либо на второй строке экрана, для четных вариантов. Причем начальное смещение во второй строке экрана должно совпадать с кодом символа «пусто», вычисленным в пункте 4.2.
Часть 5. Вывод специализированных символов на экран LCD в заданной последовательности с использованием кнопок
5.1. Напишите программу, которая выводит некоторую последовательность костяшек на экран LCD, начиная с первой позиции экрана следующим образом. Каждая костяшка выводится в двух позициях. На первой строке – её верхняя половинка, на второй строке – нижняя половинка. Первой идет заданная костяшка. Следующие костяшки последовательности подбираются студентами самостоятельно так, чтобы каждая последующая костяшка продолжала начатый ряд по правилу домино. Например, для первой костяшки 1/2 следующей может быть 2/4, причем вторая костяшка должна быть перевернута, чтобы продолжить начатый ряд. Следующей может быть 4/1 и так далее по правилу домино. Допускается использование костяшек дублей. Студентам надо подобрать такую последовательность, чтобы заполнить весь экран, как видимую его часть, так и невидимую. Последовательность должна содержать 40 неповторяющих костяшек из 49 возможных. Причем последняя костяшка должна согласовываться с первой, то есть первая является продолжением последней. После выполнения программы на экране LCD мы будем видеть первые 16 костяшек последовательности.
5.2. *Внесите изменения в программу из предыдущего пункта таким образом, чтобы при нажатии кнопки KEY1 выводимые на экран строки перемещались на одну позицию вправо, а при нажатии кнопки KEY3 на одну позицию влево. Продемонстрируйте работу программы преподавателю. Сделайте несколько снимков экрана LCD и поместите их в отчетные материалы так, чтобы вся последовательность костяшек была на них видна. Потребуется не менее трех снимков.
Часть 6. Экспериментальное определение кодов букв русского алфавита
6.1. Используя директиву .asciz, определите коды букв русского алфавита, формируемые после компиляции программы в IMP, причем как прописных, так и строчных. Для этого разместите в отдельной секции данных две текстовые строки как с прописными, так и строчными буквами русского алфавита. Используя вкладку Memory Settings секцию данных разместите отдельно от кода программы в самом начале статической памяти SRAM в процессорной системе. После компиляции и загрузки программы в ОП найдите в памяти две текстовые строки с кодами букв русского алфавита. Используйте вкладку Memory и побайтовое отображение ОП. Наблюдайте коды отдельных букв кириллицы и поместите их в заранее подготовленную таблицу (приложение В). Рассмотрите варианты использования в текстовом редакторе, в котором создается или редактируется файл с буквами алфавита кодировок UTF-8 и ANSI.
Часть 7. Вывод русскоязычного текста на экран LCD
7.1. Уясните логику работы процедуры print. Её листинг, вместе с подробными комментариями приведен в приложении. Выведите на экран LCD ваши фамилию, имя и отчество с использованием прописных (заглавных) букв русского алфавита. Сделайте снимок экрана и поместите его в отчет.
7.2. *Внесите изменения в процедуру print таким образом, чтобы она смогла вывести ваши ФИО на экран LCD с использованием также и строчных букв русского алфавита. Продемонстрируйте работу программы преподавателю. Сделайте снимок экрана и поместите его в отчетные материалы.
Отчетные материалы
Отчетные материалы должны содержать:
- Цель лабораторной работы.
- Материалы, связанные с подготовкой к работе, включая теоретическую часть и исходные коды программных заготовок с именами lab_lcd.s. и print.
- Информацию по выполнению каждого пункта задания. Причем в отчете должны содержаться выполняемые вами действия, наблюдаемые результаты, и ваши объяснения. Наблюдаемые результаты должны быть подтверждены снимками экрана инструментального компьютера или снимками стенда.
- Подготовленные и отлаженные вами фрагменты программ, для выполнения пунктов 2.7, 3.1, 4.3, 4.4, 5.1, 5.2, 7.2 задания.
- Краткое заключение.
Защита лабораторной работы
Для защиты работы студенты должны продемонстрировать знания, умения и навыки, перечисленные в разделе «Планируемые результаты обучения». Выражаясь конкретнее, студенты должны уметь:
- Использовать символьную информацию в своих программах;
- Находить символьную информацию в ОП процессорной системы;
- Выводить символьную информацию на LCD дисплей, как в виде статического изображения, так и в виде бегущей строки;
- Создавать специальные символы и выводить их на экран LCD.
Примерные задания, предлагаемые студентам для защиты работы
- Напишите программу, которая периодически меняет местами выводимые на LCD символьные строки.
- В отличии от предыдущего задания программа меняет местами выводимые строки только после нажатия некоторой кнопки на стенде.
- Напишите программу, которая в зависимости от состояния указанного переключателя выводит на экран LCD некоторое сообщение, либо в начале экрана, либо в конце видимой его части.
- Напишите программу, которая периодически перемещает выводимый текст сначала в конец видимой части дисплея, затем возвращает его обратно.
- В отличии от предыдущего задания программа перемещает текст на дисплее только после нажатия некоторой кнопки на стенде.
- Напишите программу, которая периодически перемещает слово с начала первой строки в конец первой строки, затем в конец второй строки, затем в начало второй строки, затем в начало первой строки и так далее, создавая эффект кругового перемещения слова на экране по часовой стрелке.
- В отличии от предыдущего задания программа перемещает текст на экране только после нажатия некоторой кнопки на стенде.
- Напишите программу, которая выводит на первой строке LCD все символы заданного столбца таблицы ASCII, а на второй строке все символы из следующего столбца таблицы.
- В отличии от предыдущего задания номер столбца задается некоторыми переключателями.
- Напишите программу, которая выводит на экран LCD 32 символа, коды которых последовательно увеличиваются, начиная с кода, задаваемого некоторыми переключателями.
- Напишите программу, которая выводит на первой строке LCD все символы из заданной строки расширенной таблицы ASCII (256 кодов), а на второй строке все символы из следующей строки таблицы.
- Напишите программу, которая выводит на первой строке LCD строку таблицы ASCII, номер которой задается некоторыми переключателями, а на второй строке - столбец таблицы с этим же номером.
- В отличии от предыдущего задания номера строки и столбца задаются разными переключателями.
- Напишите программу, в которой выполняется перемещение строк на экране LCD вправо на одну позицию, при нажатии кнопки key1, и на одну позицию влево при нажатии кнопки key3.
- Создайте изображение заданной преподавателем буквы греческого алфавита и внесите его в память знакогенератора LCD, используя для кодирования этого символа заданный код (от 0 до 7). Внесите изменения в программу вывода ваших ФИО в режиме бегущей строки, так, чтобы заданная буква греческого алфавита размещалась в выводимой строке между фамилией и именем.
Приложения
Приложение – А
Описание порта LCD дисплея
Процессорная система «DE2-115(70) Media Computer» включает порт для взаимодействия с жидкокристаллическим дисплеем LCD стенда. Программно доступными регистрами порта являются регистр команд, используемый для управления дисплеем LCD и регистр данных, используемый для отправки символьных данных для отображения их на дисплее. Форматы этих регистров, вместе с адресами показаны на рисунке 3.3.

В состав LCD дисплея входит встроенный блок управления, который обрабатывает поступающие в LCD порт команды и три компоненты памяти DDRAM, CGROM, CGRAM.
DDRAM (Display Data RAM) — это оперативная память для записи выводимого на экран дисплея текстового сообщения. Каждой позиции на экране соответствует один байт в этой памяти. Другими словами, в памяти DDRAM размещается буфер выводимых на экран символов. Все символы, записываемые в этот буфер, выводятся на экран LCD в соответствующую позицию.
Позиции на экране адресуются с использованием двух координат (y, x), как показано на рисунке 3.4. Верхней строке соответствует координата y, равная нулю, а нижней строке координата у, равная единице. Координата х меняется в диапазоне от 0 до 39 (0х27), что соответствует 40 символам, которые можно записать в символьный буфер DDRAM для каждой строки экрана. Однако видимыми на экране LCD являются только 16 символов. Cодержимое невидимой части символьного буфера можно вывести на экран только в режиме бегущей строки, перемещая текст по экрану. Для этого предусмотрены специальные команды, о которых речь пойдет ниже.

Таким образом, для адресации 80 позиций на экране и, следовательно, байтов в символьном буфере, то есть в памяти DDRAM, используется семиразрядный счетчик адреса. Выделяемая курсором на экране LCD позиция, соответствует текущему значению счетчика адреса DDRAM. Если записать по этому адресу ASCII код символа, то сам символ будет отображен в выделенной позиции экрана.
В соответствии с рис. 3.4, диапазон адресов в DDRAM для верхней и нижней строк дисплея начинается с адресов 0х00 и 0х40, как показано на рис. 3.5. Голубым цветом показаны позиции, видимые на экране.

Следующей компонентой памяти является постоянная память CGROM (Character Generator ROM). Эта память доступна только для чтения, и её изменить нельзя. В памяти CGROM хранится таблица с изображениями символов (таблица 3.1), то есть это память знакогенератора. Когда в какую- нибудь ячейку DDRAM записывается байт с кодом символа, то из этой таблицы берется изображение соответствующего символа и прорисовывается на экране LCD.
Таблица 3.1. Таблица с изображениями встроенного в LCD шрифта

Третьей компонентой памяти является память оперативная CGRAM (Character Generator RAM). В ней тоже хранятся изображения нескольких символов, а точнее первых восьми символов первого столбца, показанного в таблице 3.1 пустым. В отличии от памяти постоянной, содержимое CGRAM можно изменять, создавая таким образом свои собственные символы. Для представления одного символа или знака используется матрица 5 на 8 пикселей. Поэтому в памяти CGRAM для представления каждого символа потребуется 8 байт, причем старшие три бита каждого байта не используются.
Адресуется память CGRAM следующим образом. Первые восемь байт, начиная с нулевого адреса, задают изображение символа c кодом 0х00 построчно, сверху вниз. Причем, установленный бит соответствует одной выделяющейся точке на экране дисплея. Затем второй символ с кодом 0х01 таким же образом, задается с помощью 8 байт, начиная с адреса 8. В последний байт с изображением символа рекомендуется записывать нули, чтобы использовать это место для корректного отображения на экране LCD мерцающего курсора в виде нижнего подчеркивания.
Размер CGRAM равен 64 байтам. По этой причине, в CGRAM может быть размещено изображение только 8 специализированных символов, причем этим символам соответствуют коды с 0х00 до 0х07. То есть, если в первые 8 байт CGRAM записать какой - либо символ, а потом записать в DDRAM нуль (код первого символа в CGRAM), то на экране прорисуется этот новый символ. Таким образом записывая в DDRAM код символа, указанный в левом столбце рисунка 3.6, можно отобразить и сам символ, изображение которого хранится в CGRAM.

В таблице 3.2 приведены команды для управления LCD дисплеем. В ней используются следующие обозначения.
I/D — инкремент или декремент счетчика адреса. По умолчанию, этот бит равен нулю и выполняется декремент счетчика. То есть каждый следующий байт будет записываться в предыдущую, n-1 ячейку DDRAM. Если установить этот бит в единицу, то будет выполняться инкремент счетчика.
S — бит сдвига экрана. Если его установить в единицу, то с каждым новым символом будет сдвигаться окно экрана, пока не достигнет конца DDRAM. Удобно использовать, когда выводится на экран большая строка, чтобы она не убежала за экран.
D — бит включения дисплея. Если очистить этот бит, то изображение исчезнет с экрана, а чтобы оно вновь появилось, в эту позицию надо записать 1.
С — бит включения курсора в виде нижнего подчеркивания. Если установить этот бит в единицу, то появится курсор в виде нижнего подчеркивания.
B — бит включения курсора в виде мигающего черного прямоугольника.
S/C — сдвиг курсора или экрана. Если ноль, то сдвигается курсор. Если единица, то текст на экране. По одному разу за команду.
R/L — определяет направление сдвига. 0 — влево, 1 — вправо.
AG — адрес в памяти знакогенератора CGRAM.
АD — адрес в памяти символьного буфера DDRAM.
Таблица 3.2. Команды управления LCD
| DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | Значение |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Очистка экрана. Счетчик адреса устанавливается в 0 позицию DDRAM. |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | — | Адресация в DDRAM. Отмена сдвигов, Счетчик адреса устанавливается в 0. |
| 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | Настройка режима вывода текста на экран. |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | Поле для самостоятельного заполнения |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | Поле для самостоятельного заполнения |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | Поле для самостоятельного заполнения |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | Поле для самостоятельного заполнения |
| 0 | 0 | 0 | 0 | 1 | D | C | B | Настройка режима отображения |
| 0 | 0 | 0 | 1 | S/C | R/L | — | — | Сдвиг курсора или текста, в зависимости от установленных битов. |
| 0 | 1 | AG | AG | AG | AG | AG | AG | Переключить адресацию на CGRAM и задать адрес в CGRAM. |
| 1 | AD | AD | AD | AD | AD | AD | AD | Переключить адресацию на DDRAM и задать адрес в DDRAM. |
Таблица 3.3. ASCII - коды символов

Приложение Б
Исходные файлы для лабораторной работы
В файле address_map.s содержатся поименованные константы. Первая из них задаёт адрес LCD порта, а остальные представляют собой часто используемые команды для управления LCD дисплеем. В дальнейшем при написании программ, работающих с LCD дисплеем, рекомендуется данный файл подключать с помощью директивы .include "имя_файла".
Листинг 3
Листинг файла address_map.s
Примечание: Код листинга 3 будет добавлен вручную.
Листинг 4
Листинг программы lab_lcd.s
Примечание: Код листинга 4 будет добавлен вручную.
Листинг 5
Листинг программы create_g.s
Примечание: Код листинга 5 будет добавлен вручную.

Листинг 6
Листинг процедуры print.s
Примечание: Код листинга 6 будет добавлен вручную.
Листинг 7
Листинг программы RU_string.s
Примечание: Код листинга 7 будет добавлен вручную.

Приложение – В
Таблица кодов букв кириллицы, заполняется студентами.
| Буква кириллицы | Код заглавной буквы (UTF-8) | Код прописной буквы (UTF-8) | Код заглавной буквы (ANSI) | Код прописной буквы (ANSI) |
|---|---|---|---|---|
| А | ||||
| Б | ||||
| В | ||||
| Г | ||||
| Д | ||||
| Е | ||||
| Ё | ||||
| Ж | ||||
| З | ||||
| И | ||||
| Й | ||||
| К | ||||
| Л | ||||
| М | ||||
| Н | ||||
| О | ||||
| П | ||||
| Р | ||||
| С | ||||
| Т | ||||
| У | ||||
| Ф | ||||
| Х | ||||
| Ц | ||||
| Ч | ||||
| Ш | ||||
| Щ | ||||
| Ъ | ||||
| Ы | ||||
| Ь | ||||
| Э | ||||
| Ю | ||||
| Я |
Чеклист выполнения
- Работа выполнена
- Отчет подготовлен