…простите, а вы не подскажите, как пройти в библиотеку?
Небольшая предыстория
Прежде, я уже имел радость работать с индикатором TIC-55 и в одной из своих статей описывал работу с ним. Библиотека была написана на CodeVisionAVR. Но, к сожалению, я, так и не ее довел до ума. Про библиотеки хочется отметить, что редко удается найти что-нибудь готовое, а если найдешь, то сложно приспособить для себя.Очень сложно разобраться в чужом коде, тем более новичкам, к которым, я отношу и себя. Мне, прежде всего хотелось довести библиотеку до ума, для того что бы через год, самому себе не ломать голову, как оно работает? И для того что бы могли пользоваться другие. Заодно решил попробовать свои силы в AVR Studio 5.0, ну и как следствие, библиотека написана на AVR Studio 5.0
Содержание статьи / Table Of Contents
↑ Аппаратная часть
Оба индикатора изготовлены по технологии COG (chip on glass).
Для управления имеют три линии: DIN – данные, DCLC – тактирование и LOAD – загрузка/вывод данных. Индикатор можно представить как большой сдвиговый регистр, где каждая ячейка регистра это – сегмент индикатора, «1» - сегмент отображается, «0» - сегмент не отображается. Запись в индикатор происходит следующим образом: на вывод «DIN» устанавливается нужный логический уровень для отображения или гашения символа, затем на короткое время, устанавливаем на вывод «DCLK» логический уровень «1». И так пока не заполним весь регистр. По окончании записи на короткое время, на вывод «LOAD» устанавливаем логический уровень «1». Ниже приведена диаграмма работы.
↑ Программная часть
Как вы понимаете, у сдвигового регистра нельзя поменять только один бит. Этот факт накладывает одно несущественное ограничение, приходиться каждый раз, записывать весь регистр. Для этого в библиотеке организован буфер индикатора. Вывод буфера побитно, осуществляет функция tic55-send/tic3321_send. Собственно на этом заканчивается одинаковая часть библиотек, далее, я коротко расскажу про каждую библиотеку в отдельности.↑ TIC-55
Функции библиотеки:tic55_init – инициализация порта,
tic55_send – посылка буфера,
tic55_setbuff – функция заполнения буфера,
tic55_putnum – вывод числа,
tic55_putchar – вывод символа,
tic55_putstr – вывод строки,
tic55_clear – очистка индикатора.
Заголовочный файл:
Определители порта вывода
LCD_PORT, LCD_DDR – порт, к которому подключен индикатор.
LOAD_PIN, DATA_PIN, DCLK_PIN – выводы порта, к которым подключен индикатор, назначать можно любые в рамках назначенного порта.
CHAR_INCLUDES – определяет, будет ли подключен дополнительный набор символов, где не нужно можно отключить для экономии памяти, или просто оставить в этом наборе необходимые символы, остальные закомментировать.
Прототипы функций:
void tic55_putnum(unsigned int Num, unsigned char Pos);
- вывод числа типа unsigned int начиная с позиции Pos от 0 до 7 слева на право.
void tic55_clear(void);
- очистка дисплея.
void tic55_putchar(unsigned char Char, unsigned char Pos);
- вывод символа из набора в позицию Pos.
void tic55_putstr(char* Str, unsigned char Pos);
- вывод строки в позицию Pos.
void tic55_init(void);
- инициализация порта индикатора.
Думаю, что данный набор функций, позволит в достаточной мере управлять этим индикатором. Отдельно хочется рассказать про вывод точек и спецсимволов(галочек) под знакоместом, я называю их подчеркиванием. Установка точки или подчеркивания осуществляется через функцию tic55_putchar(‘,’, Pos) и tic55_putchar(‘_’, Pos) соответственно. Вывод производится после вывода числа символа или строки. Гашение выведенной точки или подчеркивания, производится повторным выводом в эту же позицию. После вывода числа, символа или строки, в позиции, куда ранее выводились точки/подчеркивания - погасит выведенные точки/подчеркивания.
↑ TIC-3321
Для себя я решил, что для индикатора в три разряда, нет смысла вывода дополнительных символов, так как в большинстве случаев, применения этого индикатора – вывод числа. Поэтому я убрал из библиотеки таблицу дополнительных символов, а так же функции putchar и putstr. Функция вывода числа в качестве параметра не содержит позиции, число выводится с крайней правой позиции. В качестве параметра вместе с числом в функцию передаются флаги установки точек и двоеточия, знака числа и добавочногонуля.
Функции библиотеки:
tic55_init – посылка буфера,
tic55_send – посылка буфера,
tic55_setbuff – функция заполнения буфера,
tic55_putnum – вывод числа,
tic55_clear – очистка индикатора.
Заголовочный файл:
Определители порта вывода
LCD_PORT, LCD_DDR – порт, к которому подключен индикатор.
LOAD_PIN, DATA_PIN, DCLK_PIN – выводы порта, к которым подключен индикатор, назначать можно любые в рамках назначенного порта.
Определители дополнительных параметров выводимого числа:
NO_PARAM – передаваемые параметры отсутствуют,
FIRST_DOT – установка первой точки,
SECOND_DOT – установка второй точки,
COLON – установка двоеточия,
ADD_NULL – вывод добавочного нуля,
MINUS – вывод знака «–».
Прототипы функций:
void tic55_putnum(unsigned int Num, unsigned char AddParam);
- вывод числа типа unsigned int, флаги дополнительных параметров
void tic55_clear(void);
- очистка дисплея.
void tic55_init(void);
- инициализация порта индикатора.
Ключевые моменты обеих библиотек прокомментированы.
↑ Небольшой видеоролик с демонстрацией работы
↑ Даташиты
🎁custom_ampire.pdf 203.59 Kb ⇣ 102🎁ml1001.pdf 843.87 Kb ⇣ 91
🎁tic55.pdf 288.16 Kb ⇣ 102
🎁tic3321.pdf 203.02 Kb ⇣ 87
↑ Файлы проектов в AVR Studio 5.0 и проекты Proteus 7.8 sp2 с моделями индикаторов
🎁arhiv.zip 199.35 Kb ⇣ 131↑ P.S.
Вот, как-то так… пробуем, ищем баги, предлагаем/улучшаем. Насколько мне удалось создать «удобоваримую» библиотеку, судить вам. Вообще, предлагаю создавать нашу – Датагорскую коллекцию библиотек для работы с различной периферией микроконтроллеров. Например: DS18b20, знакосинтезирующий дисплей на HD44780 и еще много чего…Если же данная затея в рамках Датагории будет поддержана, то у меня есть в планах создание библиотек для приема RC5 кода и подключения PS/2 клавиатуры, заготовки уже есть.
↑ Файлы проекта для CodeVisionAVR
Уже ближе к моменту размещения статьи на сайте, я подумал, что было бы не плохо заточить библиотеку и под CodeVisionAVR, а то получается что пользователи CodeVisionAVR остаются «за бортом». Вам останется только переопределить имя среды в заголовочном файле. Ну и конечно же, я приложил проект для CodeVisionAVR.🎁cvavr.zip 165.83 Kb ⇣ 118
В общем, подумано – сделано, пользуйтесь на здоровье!!!
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.