А выводить на дисплей очень просто!! (siemens C75/ME75)
Для этого сделаны готовые макросы.
Инициализация дисплея- Макрос "_____lcd_INIT"
в параметрах ничего НЕ задаётся;
Очистка области дисплея- Макрос " _____lcd_CLEAR"
в параметрах задаются:
* Координаты по осям X, Y (верхний левый угол очищаемой области - начало);
* Координаты по осям X, Y (нижний правый угол очищаемой области - конец);
место, которое очищаем, заливается фоновым цветом!!!
Выбор Основного цвета и Фонового цвета- Макрос "_____lcd_COLOR"
в параметрах задаются:
* R, G,B-составляющие основонго цвета, которым рисуется линия, прямоугольник, пиксель, текст;
* R, G,B-составляющие фонового цвета, который используется как фоновый цвет для рисования букв;
(всего 256 цветов – RRRGGGBB кодирование);
пример:
первые три значения- основной цвет;
вторые три значения- фоновый цвет;
значения можно изменять от 0 до 7;
0-цвет не горит, 7-горит на полную;
0, 7, 0, 0, 0, 2
(осн.) (фонов.)
0-красный, 7-зелёный, 0-синий, 0-фон красный, 0-фон зелёный, 2-фон синий;
В данном примере цвет линий/букв будет зелёный, цвет фона синий в треть-накала;
Рисование Линии- Макрос "_____lcd_LINE"
в параметрах задаются:
* Координаты по осям X, Y (начало линии);
* Координаты по осям X, Y (конец линии);
(цвет линии задаётся макросом "_____lcd_COLOR");
(линии можно рисовать только горизонтально, либо только вертикально, по диагонали линии рисоваться не будут - не реализовано);
Рисование Прямоугольника (рамки)- Макрос "_____lcd_RECTANGLE" (в параметрах указать 0)
в параметрах задаются:
* Координаты по осям X, Y (верхний левый угол прямоугольника);
* Координаты по осям X, Y (нижний правый угол прямоугольника);
* Флаг заливки цветом (0- прямоугольник без заливки);
(цвет прямоугольника-рамки задаётся макросом "_____lcd_COLOR");
Рисование Закрашенного цветом прямоугольника- Макрос "_____lcd_RECTANGLE" (в параметрах указать 1)
в параметрах задаются:
* Координаты по осям X, Y (верхний левый угол прямоугольника);
* Координаты по осям X, Y (нижний правый угол прямоугольника);
* Флаг заливки цветом (1- прямоугольник с заливкой);
(цвет прямоугольника задаётся макросом "_____lcd_COLOR");
Рисование Пикселя- Макрос "_____lcd_PIXEL"
в параметрах задаются:
* Координаты по осям X, Y (по этим координатам будет нарисован пиксель);
* Флаг выбора цвета (0- фоновый; 1- основной);
(цвет пикселя задаётся макросом "_____lcd_COLOR");
(пиксель можно рисовать как обычным, так и фоновым цветом);
(для рисования основным цветом нужно установить параметр select_color = 1);
(для рисования фоновым цветом нужно установить параметр select_color = 0);
Печать текста- Макрос "_____lcd_TEXT"
в параметрах задаются:
* Координаты, с которых будет НАЧИНАТЬСЯ вывод текста (верхний левый угол первой буквы);
* Текст, который будет выведен на дисплей;
(цвет текста и цвет фона задаётся макросом "_____lcd_COLOR");
Печать числа- Макрос "_____lcd_NUMBER"
в параметрах задаются:
* Координаты, с которых будет НАЧИНАТЬСЯ вывод числа (верхний левый угол первой цифры);
* Число, которое будет выведено на дисплей;
(цвет текста и цвет фона задаётся макросом "_____lcd_COLOR");
ОБЩАЯ ИНФОРМАЦИЯ.
Я преследовал цель создания удобночитаемого крупного шрифта, а также использования старого ненужного дисплея от «SIEMENS C75 ME75».
Размер символа был выбран 12 пикселей в высоту, и 8 пикселей в ширину (мелкие шрифты сделать проще, но смотреть на них при таком маленьком экране я не собираюсь, и вам не советую… глаза только сломаете…).
Расстояние между символами (по горизонтали)- 1 пиксель.
Расстояние между строками (по вертикали)- произвольное.
Всего получилось 13 строк по 14 символов в каждой (всего 182 символа).
Особо желающие могут написать свои шрифты, но не советую этим заниматься (дело долгое и нудное).
Питание микроконтроллера и дисплея одинаковое (3,3v), поэтому никакого согласования уровней ненужно (хотя дисплей лучше запитать от напряжения 2,9v, и сделать простейшее согласование на резисторах- дольше прослужит =).
Протокол работы написан свой (software-SPI), поэтому нет «привязки» к конкретному микроконтроллеру, можно использовать любой, у которого хватит памяти, и подключать дисплей к любым свободным контактам микроконтроллера.
Не задействовано никаких таймеров, что также не влияет на «привязку» к какому-то конкретному микроконтроллеру.
Полная поддержка ASCII-символов (кроме русских букв, хотя можно сделать и их, размер кода увеличится на пару КилоБайт).
Макрос для печати символа по ASCII-коду делать не стал, ибо не вижу в нём смысла. Русский шрифт же всё равно не делал, а английский шрифт и символы и так можно вывести на дисплей без проблем.
Для тех кто хочет понять как я закодировал пиксели в программный код:
Каждая строка символа = 8 пикселей = 8 бит = 1 байт (каждая строка занимает 1 байт памяти микроконтроллера).
Символы у меня 8x12, следовательно использовано 12 строк (каждый символ занимает 12 байт памяти микроконтроллера).
Для хранения всех символов я применил 12 массивов.
В каждом массиве 128 элементов (= количеству элементов в ASCII-таблице).
И вот, символы выводятся строками (сверху-вниз), в каждой строке выводятся пиксели (слева-направо).
Картинка-пример, поясняющая как выводятся пиксели:
****************************
1, 2, 3, 4, 5, 6, 7, 8,
9,10,11,12,13,14,15,16,
17,18,..................
........................
........................
89,90,91,92,93,94,95,96.
****************************
Первая строка хранится в массиве_1, вторая хранится в массиве_2, ..., двенадцатая хранится в массиве_12.
Номер ячейки массива равен номеру ASCII-кода выводимого символа.
Например, маленькая английская буква "a" имеет ASCII-код 97, следовательно данные для вывода берутся из всех 12-ти массивов, ТОЛЬКО из 97-х ячеек!!!
Первая строка выводится из массива_1, ..., двенадцатая выводится из массива_12.
Чтобы поредактировать шрифты...
Я долго думал, где же брать шрифты. Выбор пал на программу «Siemens CE»- редактор шрифтов для телефонов Siemens.
Её я выбрал потому, что она имеет удобный интерфейс, а также я с ней ранее был уже знаком (правил шрифты на телефонах).
Шрифты честно содраны из сименса A52, только треть всех символов немного переделана (чтобы помещалось в размер 8x12).
Итак, проделываем следующие действия:
Открываем программу.
File-> Open. Выбираем фуллфлеш "ff a52 (1689).bin".
"Options"-> поставить галку "Font tables". Внизу появятся таблицы шрифров.
Внизу справа выбрать "English-Latin 0000". Откроется английский шрифт.
Слева находятся кнопочки. Надо нажать кнопку "L" в столбике "eng" (самая верхняя кнопка).
Шрифт станет жирным. Левой кнопкой мыши выбираем нужный символ, правой кнопкой мыши листаем следующие символы (несколько страниц).
Мы попали в редактор символов.
Чтобы отредактировать символ, нужно щёлкать мышкой на пиксели.
Левая кнопка мыши засвечивает пиксель, правая кнопка мыши гасит пиксель.
После редактирования необходимо нажать на кнопку "Write" (расположена вверху окна программы).
После чего надо сохранить фуллфлеш. File-> Save-> Сохранить.
Готово.


