Главная » Статьи » Cтатьи |
Введение Продолжаем третью часть статьи по графическому индикатору WG12864B-YGH-VN, в которой научимся выводит отдельно символы и целые строки. Напишем программу по выводу символа на экран. Результатом выполнения программы будет слово test:
Первый результат. Выводим символ Функция принимает 4 параметра: character – код символа по кодировке ASCII. Например U – 0x55 (85), 7 – 0x73 (55). Эти коды можно посмотреть, открыв таблицу символов Windows
(нужно выбрать из списка набор символов строчку Windows: кириллица и в строке состояния посмотреть hex код символа). x, y – координаты вывода одного символа. Это означает, в каком месте экрана будет выведен один символ. Inv – инвертирование вывода символа. • Если inv = 0, то темный символ на светлом фоне. • Если inv = 255, то светлый символ на темном фоне. Полный код функции: Мы знаем что дисплей WG12864B-YGH-VN имеет два контроллера и соответственно два полуэкрана. В область полуэкрана 64*64 можно вывести 10 символов. Однако есть нюанс: последний символ приходится на границу полуэкрана. Чтобы исключить данный нюанс, нужно сделать так, чтобы символ выводился от левого края с небольшим отступом, например, 4 точки. Этот вариант организован в функции goto_xy: x, y – Указываем координаты вывода символа. Как видно, функция принимает 2 аргумента и возвращает результат: в каком полуэкране выводить символы. Полный код функции: В операторе if(){}else{} проверяем, если х<10, то переменной cs присваивается значение 0, переменной textcs присваивается 0, в противном случае переменной cs присваивается значение 1, переменной textcs присваивается 64. Вся основная расчетная математика является аргументом функции glcd_xy, которую рассматривали ранее. Это часть кода позволяет автоматически переходить на новую строку по мере заполнения. Я думаю объяснения не нужны... Основным элементом функции является оператор цикла с постусловием do{}while();, в котором происходит взаимодействие функции write_data_glcd с двухмерным массивов символов charsets[160][6]: Он эквивалентен такой записи: Разберемся, как функция взаимодействует с двухмерным массивом, в котором содержатся символы, цифры, латиница и кирилица. Немного вспомним или освоим, что же такое многомерный массив. Это массив массивов, т.е. массив, элементами которого являются массивы. Размерность массива – это количество индексов, используемых для ссылки на конкретный элемент массива. Двухмерный массив charsets, который содержится в заголовочном файле GenerateCode.h содержит 160 индексов, указывающих на массивы из 6-ти элементов по 1 байту:
Размер символов данного массива я выбрал 7х6 – 6-ой байт имеет 0х00. В процессе работы с массивом символов 7х5, возникла проблема вывода символов с инверсией: между белыми символами с черным заполнением вокруг, получались белые полоски, и текст выглядел так:
Пробовал множество манипуляций с функциями вывода символа и строки, но так истинна и не открылась, поэтому остановился с размерами 7х6. С массивом 7х6 все получалось отлично (да и какая разница, текст выводится в полнее исправно):
Первым индексом массива является символ пробела, потом восклицательный знак и т.д. Как оговаривалось выше, все символы Windows имеют кодировку ASCII. Для того, чтобы связать массив символов с кодировкой Win-символов используются два оператора if с проверкой диапазона кода символа: Если код Win-символа меньше 0х7F, то от переменной character вычитаем число 0х20 и получаем индекс массива charsets. В следующем операторе проверяем если код Win-символа больше 0хBF, то от переменной character вычитаем число 0х60 и получаем индекс массива charsets: - Charsets = 0x48 (72), значит будем вычитать 0х20 (32), и в итоге получим число 40 – индекс массива символа H (англ.) - Charsets = 0xE5 (229), значит будем вычитать 0х60 (96), и в итоге получим число 133 – индекс массива символа е (русс.) по коду: Как видно, совершенно не сложно, простое вычисление чисел. Второй результат. Выводим строки Поскольку мы разобрались как выводить символ, разберемся как выводить строку. Основная программа по выводу строковой информации на экран:
Можно создавать, что-то типа Справки или помощь по описанию и использованию устройства. Ну в общем-то, все что хотел предоставить по графическому дисплею WG12864B-YGH-VN, то и предоставил, настолько насколько хватило знаний, терпения, и не желания это держать в себе. Кто дошел до конца третьей части статьи (соответственно с прочтенными двумя) огромное спасибо, что не оставили без внимания! Файлы library_wg12864_cvavr.rar | |
Просмотров: 20046 | Комментарии: 14 | | |
Всего комментариев: 14 | 1 2 » | ||||||||
| |||||||||
1-10 11-12 | |||||||||