Страница 1 из 1

Работа с ЖКИ на базе контроллера ML-1001(TIC9153). Как?

Добавлено: Сб ноя 14, 2009 22:16:54
Alex_NEMO
Привет!
Коллеги, кто работал с такими индикаторами, подскажите как выводить информацию на них? По выводам (Load, DIn, DClk) они похожи на индикаторы типа HT161x, а по "коду", есть ли отличия?
Если можно, примерчик использования на С или Bascom-AVR.
В идеале - контроллер типа Тини2313/Мега8/48, одна кнопка, и вывод на TIC9153: в цикле - 1-е нажатие выводим "1-А", 2-е нажатие - "1-В", 3-е нажатие - "1-С" и так далее "по кольцу".

Добавлено: Вс ноя 15, 2009 06:10:56
akl
Здравствуйте. Применял TIC33 с ML1001. От TIC9153 отличаются дополнительным входом LCLK, на который при работе нужно подавать НЧ меандр. Индикаторы мне нравятся. Так выглядит счетчик времени наработки на TIC33. Если нужно, могу выложить код управления на ASM для MSP430. К сожалению сями и сями с плюсями не владею. :cry:

Добавлено: Вс ноя 15, 2009 09:52:54
Alex_NEMO
akl писал(а):Здравствуйте. Применял TIC33 с ML1001. От TIC9153 отличаются дополнительным входом LCLK, на который при работе нужно подавать НЧ меандр. Индикаторы мне нравятся. Так выглядит счетчик времени наработки на TIC33. Если нужно, могу выложить код управления на ASM для MSP430. К сожалению сями и сями с плюсями не владею. :cry:
Приборчик замечательный у Вас, и самое главное - весьма компактный. За код, конечно, спасибо, но я в Асме - "ни в зуб ногой", тем более, под другой проц... На Си проще было бы...

Добавлено: Вс ноя 15, 2009 11:08:03
abc
http://xdevs.com/e107_*самореклама*/content/c ... content.21

За паролем к архиву обращайтесь к автору. Он, кстати, и на этом форуме присутствует.

Добавлено: Пн ноя 16, 2009 18:21:13
Alex_NEMO
abc писал(а):http://xdevs.com/e107_*самореклама*/content/content.php?content.21

За паролем к архиву обращайтесь к автору. Он, кстати, и на этом форуме присутствует.
За ссылку спасибо - уже натыкался я на неё...
А вот ребята с сайта молчат... И, по моему, не факт, что ответят...

Добавлено: Вт ноя 17, 2009 17:24:52
SergeBS
Alex_NEMO писал(а): За ссылку спасибо - уже натыкался я на неё...
А вот ребята с сайта молчат... И, по моему, не факт, что ответят...
А что отвечать-то? Скачиваешь даташит на ML1001 и все ясно. Там все просто как гвоздь.
Пример библиотеки:
//функции работы с TIC9153
#include <avr>
#include <util>
#include <stdlib>

//порт - подключение
#define TICDDR DDRC
#define TICPORT PORTC
#define DCLK PC3
#define DIN PC4
#define LOAD PC5

//сегментное отображение цифр и букв
#define CharA 0x77
#define CharC 0x0F
#define CharF 0x27
#define CharU 0x5E
#define Charb 0x3E
#define Charh 0x36
#define Charo 0x3C
#define Charu 0x1C
#define Dot 0x80

#define Minus 0x20
#define Dig0 0x5F
#define Dig1 0x50
#define Dig2 0x6D
#define Dig3 0x79
#define Dig4 0x72
#define Dig5 0x3B
#define Dig6 0x3F
#define Dig7 0x51
#define Dig8 0x7F
#define Dig9 0x7B


//вывод байта на TIC9153
void ByteOut(unsigned char data)
{
for (uint8_t cnt = 0; cnt < 8; cnt++)
{
// бит данных
if (data & 0x80)
{
TICPORT |= (1<<DIN);
}
else
{
TICPORT &= ~(1<<DIN);
}
//строб
TICPORT |= (1<<DCLK> 1000000)
_delay_us(1);
#endif
data <<= 1;
TICPORT &= ~(1<<DCLK);
//сдвиг
}
}

//data register strobe
void DataStrob(void)
{
TICPORT |= (1<<LOAD> 1000000)
_delay_us(1);
#endif
//#endif
TICPORT &= ~(1<<LOAD);
}

ByteOut - впихиваешь данные, не помню, слева направо или справа налево байтики смещаются (дома проект, в конторе только проба осталась, по которой определил сегменты - нарисуешь буковки/ цифирки - увидишь в каком порядке идут)
DataStrob(void) - они становятся видны. Из сдвигового - в дата-регистр - регистр отображения вписываются.
Полчаса экспериментов. :)))

Добавлено: Вт ноя 17, 2009 21:10:09
Alex_NEMO
SergeBS писал(а): А что отвечать-то? Скачиваешь даташит на ML1001 и все ясно. Там все просто как гвоздь...
Полчаса экспериментов. :)))
Спасибо, добрый человек! У меня опыта почти 0. Долго репу чесал бы, а потом, скорее всего, "забил" бы. Спасибо, бым вьезжать!

Как "увязать" кол-во нажатий на кнопку с тем, что выводим на дисплей? Т.е. кнопка, каждое нажатие - перебор, с отображением на дисплее: "1-А." > "2-А." > "3-А.", и далее, "по кольцу".
Цикл, инкремент. счетчик (от 0 до 2-х), типа 0 - "1-А.", 1 - "2-А.", 2 - "3-А." - так?

Ещё вопрос - а как правильно сегменты то кодируются? И как точка?
Если как в даташите на TIC9153, то какое-то смещение что ли есть?
смотрю строку "#define Dig0 0x5F", в битовом раскладе это будет 01011111. Будет что-то вроде большой русской буквы "У", повернутой по вертикали на 180 гр. Просто хочу разобраться и понять как кодируется, и как свои символы, если надо, добавить!!!

Добавлено: Ср ноя 18, 2009 06:24:53
akl
Здравствуйте. Вот попробовал нарисовать как кодируется 0 в индикаторе с драйвером ML1001. Структура кодировки для других знакомест аналогична. SEG80...SEG73 всегда кодируются 0 и всегда передаются.

Добавлено: Ср ноя 18, 2009 07:05:15
headshotbacs
Не буду говорить ничего лишнего. Просто прочитай внимательно даташит. И все станет ясно как принцип работы роторного испарителя.

Добавлено: Ср ноя 18, 2009 09:20:06
SergeBS
akl писал(а):SEG80...SEG73 всегда кодируются 0 и всегда передаются.
Неверно. Еще раз: принимает сдвиговый регистр. Хоть бит ему посылай. Стробом LOAD его содержание переписывается в регистр данных и отображается. Т.е. можно послать 1 байт и сдвинуть строку на 1 знакоместо. Проверено. Сдвигать на 1 бит не вижу смысла. Но тоже можно.
А эти сегменты - просто последние и ничего не отображают - нет знакоместа.
Ещё вопрос - а как правильно сегменты то кодируются? И как точка?
Если как в даташите на TIC9153, то какое-то смещение что ли есть?
смотрю строку "#define Dig0 0x5F", в битовом раскладе это будет 01011111. Будет что-то вроде большой русской буквы "У", повернутой по вертикали на 180 гр. Просто хочу разобраться и понять как кодируется, и как свои символы, если надо, добавить!!!
Насчет кодировки: что такое dot - перевести?
Что такое minus, dig0 ... dig9 объяснять? За минуту рисуется соответствие сегмент-бит в байте посылки. И нефиг приплетать что-то непонятно откуда взятое типа "будет буква У". Будет 0.

Добавлено: Ср ноя 18, 2009 10:08:25
SergeBS
Кодировка 2:
//сегментное отображение цифр и букв
#define CharA 0xEE
#define CharC 0xF0
#define CharF 0xE4
#define CharU 0x7A
#define Charb 0x7C
#define Chard 0x3E
#define Charh 0x6C
#define Charo 0x3C
#define Charr 0x24
#define Chart 0x74
#define Charu 0x38
#define Dot 0x01

#define Minus 0x04
#define Dig0 0xFA
#define Dig1 0x0A
#define Dig2 0xB6
#define Dig3 0x9E
#define Dig4 0x4E
#define Dig5 0xDC
#define Dig6 0xFC
#define Dig7 0x8A
#define Dig8 0xFE
#define Dig9 0xDE

Т.е. как на рисунке от AKL.
В общем одна - если байт со старшего бита пихать, а другая - если с младшего. Какая откуда - не помню. Обе валяются в черновиках случайно на флешке оставшихся. Короче пробуйте.
Все что могу - дома посмотреть на работающий макет, если не забуду. Чтобы сообразить какая для чего.

Добавлено: Ср ноя 18, 2009 10:48:49
Alex_NEMO
SergeBS писал(а):Насчет кодировки: что такое dot - перевести?
Что такое minus, dig0 ... dig9 объяснять? За минуту рисуется соответствие сегмент-бит в байте посылки. И нефиг приплетать что-то непонятно откуда взятое типа "будет буква У". Будет 0.
SergeBS, не кипятитесь вы так! Dot и т.д. переводить/обьяснять не надо - английский учил в свое время! Я просто сперва не догнал, как в 8-ми битной посылке кодируется каждый сегмент и точка! Теперь - понятно, спасибо Вам и akl, за его рисунок!
Мне и хотелось узнать, что знакоместо (8 бит) кодируется так от мл. к ст. разр: сег.D, сег.E, сег.F, сег.A, сег.B, сег.G, сег.C, "точка", а не как я сперва думал: сег.A, сег.B, сег.C, сег.D, сег.E, сег.F, сег.G, "точка"
Исходя из этого, dot(точка) - 1000 0000 или 0x80.
Теперь все понятно! СПАСИБО большое!

Добавлено: Сб дек 19, 2009 08:33:33
kolyay
akl писал(а):Здравствуйте. Применял TIC33 с ML1001.
Не в тему спрошу: А что за девайс использован в качестве подставки на рисунке? С ртутным счетчиком наработки.

Добавлено: Сб дек 19, 2009 14:45:05
akl
Склероз мне подсказывает, что это был Г3-118.