» » » Библиотеки для подключения COG-индикаторов TIC-55 и TIC-3321 к микроконтроллерам AVR

 
 
 
4

Библиотеки для подключения COG-индикаторов TIC-55 и TIC-3321 к микроконтроллерам AVR

Разместил Discover 4 декабря 2011. Просмотров: 16 128

…простите, а вы не подскажите, как пройти в библиотеку?

Небольшая предыстория

Прежде, я уже имел радость работать с индикатором TIC-55 и в одной из своих статей описывал работу с ним. Библиотека была написана на CodeVisionAVR. Но, к сожалению, я, так и не ее довел до ума. Про библиотеки хочется отметить, что редко удается найти что-нибудь готовое, а если найдешь, то сложно приспособить для себя.

Очень сложно разобраться в чужом коде, тем более новичкам, к которым, я отношу и себя. Мне, прежде всего хотелось довести библиотеку до ума, для того что бы через год, самому себе не ломать голову, как оно работает? И для того что бы могли пользоваться другие. Заодно решил попробовать свои силы в AVR Studio 5.0, ну и как следствие, библиотека написана на AVR Studio 5.0

Аппаратная часть


TIC-3321


TIC-55

Оба индикатора изготовлены по технологии 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 загружен 78 раз.
ml1001.pdf | Файл 843,87 Kb загружен 64 раз.
tic55.pdf | Файл 288,16 Kb загружен 78 раз.
tic3321.pdf | Файл 203,02 Kb загружен 65 раз.

Файлы проектов в AVR Studio 5.0 и проекты Proteus 7.8 sp2 с моделями индикаторов

arhiv.zip | Файл 199,35 Kb загружен 92 раз.

P.S.

Вот, как-то так… пробуем, ищем баги, предлагаем/улучшаем. Насколько мне удалось создать «удобоваримую» библиотеку, судить вам. Вообще, предлагаю создавать нашу – Датагорскую коллекцию библиотек для работы с различной периферией микроконтроллеров. Например: DS18b20, знакосинтезирующий дисплей на HD44780 и еще много чего…
Если же данная затея в рамках Датагории будет поддержана, то у меня есть в планах создание библиотек для приема RC5 кода и подключения PS/2 клавиатуры, заготовки уже есть.

Файлы проекта для CodeVisionAVR

Уже ближе к моменту размещения статьи на сайте, я подумал, что было бы не плохо заточить библиотеку и под CodeVisionAVR, а то получается что пользователи CodeVisionAVR остаются «за бортом». Вам останется только переопределить имя среды в заголовочном файле. Ну и конечно же, я приложил проект для CodeVisionAVR.
cvavr.zip | Файл 165,83 Kb загружен 90 раз.

В общем, подумано – сделано, пользуйтесь на здоровье!!!
Иван Гаврилов (Discover)
Вологодская обл. Череповецкий р-н, п.Тоншалово
Профиль Discover
Дата рождения: 13.09.1977.
Работаю в компании "Нординкрафт" , электрик по совместительству в своем ТСЖ.
С паяльником с 12 лет.
Интересы: паяльник, работа, фото, лес.
C 2007г занимаюсь микроконтроллерами AVR.

Напаяно уже много чего, всего и не припомню.
 

Понравилось? Палец вверх!

  • всего лайков: 16

Поделись с друзьями!

Связанные материалы:


Схема на Датагоре. Новая статья Трансивер 2,4 ГГц Nordic Semiconductor nRF24L01. Перевод таблиц даташита, пояснения и коды для организации сети... Wireless Transceiver Module NRF24L01+ 2.4GHz, 4 шт. на Али Привет, датагорцы! Выкладываю перевод...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 2... Продолжаем разговор. Как-то раз мы с пацанами решили соединить радио-модуль «nRF24L01+» вот с таким...
Схема на Датагоре. Новая статья Возвращаясь к напечатанному. Стрелочный индикатор на микроконтроллере Attyny13... В поисках чего бы ещё собрать в плане изучения МК, нашел датагорскую статью «Стрелочный индикатор...
Схема на Датагоре. Новая статья Термометр + термостат на микроконтроллере PIC16F876 и датчиках DS18B20... История этого термометра началась в далёком 2011 году. Мне понадобилось в подвале частного дома, в...
Схема на Датагоре. Новая статья Цифровой регулятор громкости с опторазвязкой цифровой и аналоговой части... Фото 1. Собранный регулятор Думаю, каждый, кто занимался сборкой усилителя, сталкивался с выбором...
Схема на Датагоре. Новая статья Программа ForMC в помощь программисту микроконтроллеров... Программа называется ForMC, изначально предназначалась для МК AVR. В ней объединены несколько...
Схема на Датагоре. Новая статья Универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)... Занялся я конструированием нового устройства и встал вопрос — на чем отображать данные....
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 7... Поговорим о прерываниях. Слово прерывание говорит само за себя, происходит остановка какого —...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 3... Мы научились включать и выключать светодиоды, а как сделать, чтобы они сами заморгали? Понятно, что...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 2... Пишем первую программу!Большинство начинают с мигания светодиодов, и мы не исключение. Если...
Схема на Датагоре. Новая статья Микроконтроллеры. Связь с внешним миром. Часть 1. Клавиатура... Очень давно обещал продолжить цикл статей по работе с микроконтроллерами, но не было физической...
Схема на Датагоре. Новая статья Анатомия микроконтроллеров ATmega - 3. Прерывания.... Итак, наши светодиоды мигают, но мы не можем никак повлиять на программу, давайте добавим в схему...
<
  • Главный редактор
4 декабря 2011 09:20

Игорь Петрович Котов / Datagor

Цитата
  • С нами с 25.02.2011
  • Ушёл в реал Пользователь offline
  • 1 652 комментария
  • 265 публикаций
 
  • 0
Уважаемый Иван, спасибо за отличный почин и полезное предложение!
По вашей идее создан подраздел "Библиотеки кодов" в разделе "Микроконтроллеры".

Если предполагаете регулярно публиковаться - готов создать ваш авторский раздел/журнал.
Пишите в личку.

<
  • Кандидат
4 декабря 2011 17:29

Михаил / Dust112

Цитата
  • С нами с 22.05.2011
  • Ушёл в реал Пользователь offline
  • 14 комментариев
  • 1 публикация
 
  • 0
Я сталкнуля с индикатором TIC-80, когда делал уличный термометр в корпусе от глюкометра. В нем используется этот же протокол обмена.

<
  • Гражданин
5 декабря 2011 17:54

Дмитрий / dvkhorzov1976

Цитата
  • С нами с 20.03.2009
  • Ушёл в реал Пользователь offline
  • 15 комментариев
  • 0 публикаций
 
  • 0
Как говорится, сон в руку!Только начал разрабатывать устройство и отверг индикатор TIC-80 из-за того, что не хотелось долго "заморачиваться" с протоколом обмена.Теперь изменю свое мнение. Спасибо, Иван, хороша, полезная статья!

<
  • Гражданин
6 октября 2013 10:12

Александр / alx32

Цитата
  • С нами с 26.06.2008
  • Ушёл в реал Пользователь offline
  • 35 комментариев
  • 8 публикаций
 
  • 0
Я как-то заморачивался с индикатором TIC8148, насколько я знаю это аналог TIC55, только побольше, и функцию вывода присобачил на ассемблере. Правда сделал массив данных: 8 байт - коды символов + 1 байт - боложение точки (или точек) + 1 байт - положение галочки (или галочек), положение точек и галочек задавалось побитно.
P.S. Правда это всё на avr-gcc.

Добавление комментария


Налетай! Паяльники, станции, жала с доставкой
  • smilelolbyewinkyahoocoollaughing
    crazybadcryingsadirefulsickstraight
    ballooncakegooddrinksmailbombsun
    nightrainstarscolddashguitar-manhandshake
    musicnegativenopardonshoksleepunknown
    wackoyawnblushbullyhashsmokingwhew
Скопируйте текст вашего комментария на случай неверного ответа на контрольный вопрос.