Термометр с индикатором TIC55.

Автор — Иван Гаврилов
Опубликовано 01.12.2009.

Собирая различные устройства, мы не редко сталкиваемся с проблемой выбора способа отображения (вывода) информации, речь идет об индикаторах для вывода чисел, символов или знаков. Как правило, выбор обусловлен несколькими критериями. Я не буду касаться вопроса выбора, так как это уже отдельная статья получается. Не к конкретному применению, а скорее на перспективу, я решил изучить индикатор TIC55. Надо отметить, что в ходе работы, мой коллега сказал — …что бы Гаврилов ни собирал, все равно термометр получится. Да, и в конечном итоге, когда разобрался с индикатором, я решил сделать термометр в баню. Термометр — мерят температуру, фиксирует максимальную, которую через некоторое время сбрасывает (приравнивает к текущей).

Индикатор TIC55 на базе чипа ML1001 — большой последовательный сдвиговый регистр. Каждая ячейка регистра — это один сегмент. Для управления имеется три вывода: LOAD — загрузка данных, DIN — данные, DCLK — тактирование. Загрузка и вывод данных происходит следующим образом, начинаем тактировать индикатор, и с каждым тактом устанавливаем «0″ или «1″ на выводе DIN. «0″ — сегмент выключен, «1″ — сегмент включен. После 80 тактов, кратковременно устанавливаем «1″ на LOAD. Загрузка закончена, индикатор отобразит все, что мы в него загрузили. Не смотря на то, что общее количество сегментов у этого индикатора 72, загрузить необходимо 80.

Итак, после изучения теории была написана библиотека для работы с индикатором.

Функции библиотеки:

tic_set_char(unsigned char Data, unsigned char Pos);

Заполнение буфера экрана

tic_print_num(unsigned int Num, unsigned char Pos);

Вывод числа

tic_clear(void);

Очистка экрана

tic_send(void);

Посылка буфера

tic_print_char(unsigned char Char, unsigned char Pos);

Вывод символа в позицию

Ножки для управления индикатором определяются при помощи define непосредственно в самой библиотеке. Часть таблицы символов индикатора в библиотеке закомментирована из-за экономии места, микроконтроллер ATtiny25, самая первая версия программы (компилятор CodeVisionAVR) занимала 1023 слова из 1024 возможных : вместе с термометром. В принципе можно было бы и успокоится, но я хотел еще реализовать небольшое энергосбережение, пришлось экономить, была урезана таблица символов и родная CodeVisionAVR библиотека для работы с DS18B20. Описывать программу не вижу ни какого смысла, программа предельно проста, очень короткая и максимально закомментирована. Отдельно хочу отметить, что в погоне за энергосбережением я выяснил, что нельзя ножки микроконтроллера, которыми управляется индикатор подвешивать в воздухе, он «обижается». Поэтому перед переходом в режим standby, выводы для управления индикатором делаем входом с подтяжкой.
Схема принципиальная.

Библиотека и программа в целом, не претендует на призовое место. Может кому-то пригодиться, а кого-то сподвигнит к написанию своей библиотеки.
Ну и фоток немножко:

Файлы:
Печатная плата в формате SL 5.0.
Исходник прошивки и библиотеки.

2 комментариев

  1. hex —

    :040000000EC0FECF61
    :10000400FDCFFCCFFBCFFACFF9CFF8CFF7CFF6CFA8
    :10001400F5CFF4CFF3CFF2CFF1CFF894EE27ECBBCA
    :10002400E5BFF8E1A895A4B7A77FA4BFF1BDE1BDE2
    :100034008DE0A2E0ED938A95E9F780E8A0E6ED93E0
    :100044008A95E9F7E0E0E1BBE2BBE3BBEFEDEDBF8E
    :10005400C0E800C0E0E8E6BDE0E0E6BDE8BBE7BB21
    :10006400EABDE3BFE2BFE9BDE8BDE7BDE0BFECBD6B
    :10007400EFBDEEBDEBBDEDBDEBBFE5BFE9BFEDB937
    :10008400E0E8E8B9E0E0E3B9E4BBE6B9FFCFFFCFCD
    :00000001FF

    fuse bits — не чіпати

  2. Приветствую всех! bidavova к большому сожалению прошивка не пошла! КОНТРОЛЛЕР ПРОШИЛСЯ НОРМАЛЬНО. Может быть проблема с фузами? буду копать дальше…хотя кроме 6 деталей в схеме ничего нет, все равно спасибо за помощь! smile