Например TDA7294

РадиоКот >Лаборатория >Цифровые устройства >

Подключаем МТ-12864-2YLG.

Автор - lexmulya.
Опубликовано 27.12.2007.

В радиолюбительской практике нередко бывает необходимо выводить как текстовую, так и графическую информацию. Графические дисплеи на мой взгляд удобнее т.к. используя их у радиолюбителя большие возможности по сравнению со знакосинтезирующими дисплеями и индикаторами. Это могут быть и всевозможные графические рисунки, графики и непосредственно сам текст. Для своих экспериментов я выбрал графический ЛСД МТ-12864 от отечественной компании МЕЛТ. Дисплей содержит в себе непосредственно ЖК панель разрешением 128 на 64 пиксела и контроллер управления КБ145ВГ4.
Блок схема индикатора:

Блог-схема

Как видно из блок схемы ЖК панелью управляет два контроллера аналогичных KS0108. Каждый из них отвечает за свою область экрана размером 64х64 пиксела. Выбор 1-го или 2-го контроллера осуществляется подачей логической единицы на выводы Е1 иЕ2 соответственно. Писать можно в оба кристалла сразу(Е1=1, Е2=1), но чтение можно производить только из одного из них.
Принципиальная схема:

Принципиальная схема
Таблицо

Для выбора контрастности используется схема:

Переменный резистор

Для подключения я использовал компьютерный шлейф и напаянный на ЖК разьем, что повысило удобство работы.

Фотко 1

Система команд управления стандартна для KS0108 и здесь я ее приводить не буду.
Управление дисплеем осуществляется микроконтроллером ATmega32 (кварц на 12 МГЦ) посредством программы написанной на языке Си. Мной использовалась среда разработки CodeVision AVR.

Описание файлов проекта
config.h - файл настроек
driver.h и driver.с - содержат коды непосредственного взаимодействия с ЖК.
macros.h - мои макросы.
gl.c - содержит функции работы с графикой
text.c - содержит функции работы с текстом
sym.h - файл со шрифтами для ЖК написанный molchec"ом. Мной только изменено что этот массив храниться во флеше и не засоряет ОЗУ
main.c - файл основной программы

За настройки портов отвечает файл config.h

//К каким ногам подключены порты дисплея.
#define A0 0
#define RDWR 1
#define E 2
#define E1 3
#define E2 4
#define RES 5
//Расположение флагов на шине
#define BUSY 7
#define ONOFF 5
#define RESET 4
//Какой порт за что отвечает
#define LCD_DATA_PORT PORTC
#define LCD_DATA_DDR DDRC
#define LCD_DATA_PIN PINC
#define LCD_CONTROL_PORT PORTA
#define LCD_CONTROL_DDR DDRA

Для выбора метода вывода в файле driver.h есть несколько констант:

#define MET_OR 0
#define MET_XOR 1
#define MET_NOT_OR 2
#define MET_NOT_XOR 3

В данном примере реализован алгоритм опроса занятости контроллера KS0108, что несомненно повышает скорость вывода на ЖК, но использование различных методов вывода все же несколько тормозит вывод, хотя все же это быстрее чем алгоритм с задержками.
Пример работы драйвера:

void main(void){ //Начальная установка дисплея
LCD_INIT();
//Очистка экрана. Лучше когда включен MET_OR
met=MET_OR;
LCD_CLS();
//Вывод линий
for(i=0; i<64; i++) LCD_LINE(i, 15, 63, 63);
//Вывод окружности методом XOR
met=MET_XOR;
LCD_CIRCLE(63, 63, 63);
//Вывод двух сток из флеша
met=MET_NOT_XOR;
LCD_PUTSF(56,28,"radiokot");

met=MET_XOR;
LCD_PUTSF(50,50,"radiokot"); }

Вот что получилось на экране:

Фотко 2

Файлы:
Прошивка с исходниками

Вопросы, как обычно, складываем тут.


Как вам эта статья?

Заработало ли это устройство у вас?

10 0 0
1 0 0