Принцип применим и в других случаях: ниже: 8-LED 7-SEG дисплеем на MAX7219 управляю по 2 пина. Сл. один пин MC остается свободным для использования в будущем .
Что мне не нравится: номиналы элементов RC-цепь и/или время паузы между импульсами в коде зависят от тактовой частоты. Но после нескольких попыток - работает и на симуляторе, и на реальном устройстве.
Продолжаем экономить на спичках. Речь об DS2408. О подключении LCD по стандартному 1-Wire протоколу. Конечно проще всего взять листинг последовательности байт команд HD44780. Но что-то не находится он в удобно-читаемом виде. Поэтому пошел по пути безысходности, то бишь снифферинга. Накатал на Протеусе типа виртуальный Логический анализатор. Просмотрел работу штатной проги для LiquidCrictal_I2C. Содрал команд - lcd.begin / cursor / noCursor / blink / noBlink/ Прогнал сквозь виртуальный DS2408 - работают. Так они выглядят - см. скетч.
На очереди остальные. Если найдется желающий присоединиться - буду рад. Тема конечно мало-полезная, но можно будет создать еще одну библиотеку. Может кому сгодится. Если, конечно, раньше не найдется готовая библа LCD для 1-Wire !!! )))). С уважением. ПС. Поскольку 1-Wire устройства - адресуемые, можно навешивать кучу дисплеев на один провод.
Моя идея оказалась фикс по банальной причине - продавец вздул цену за эту сраную DS2408 выше фантастики. Но мой труд не бесполезен. Знать код "ногодрыгов" управления чем-либо - полезное дело. Так что продолжу до победного конца. Обязательно полюбопытствую вашу тему. Есть уже рабочая прога 1-Wire ---> LCD конвертора для PIC-а (или Тини - они ничем не хуже) ? У меня их немало валяется. Работал с ними успешно до Ардуин. Но тогда мне эта тема как-то в голову не приходила.
...Выбирайте свой МК и пишите код как диспл. драйвер по 1-wire. Только ... дешевле по I2c на PCF8574 не будет .
Благодаря Вам, дешевое решение я уже нашел. Которое на 74HC595. Причем готовое с библиотекой !!! Дешевле по-моему там уже просто некуда. То что на линию больше одного LCD там не посадишь. Вот это - недостаток ! ))))) ПС. Но похоже не все так печально. Попозже отпишусь.
С 1-wie из предыдущего сообщения: передаю по TX и получаю номер в RX и печат на LCD. С некоторыми изменениями о задержках можно использовать. Для упрощения теста нет ID и команд. Но бы добавил проверку целостности данных, напр. CRC.
,
TX:
Код:
void main() {
while (TRUE) { onewire_reset(); onewire_write(123);
delay_ms(1000); } }
RX:
Код:
void main() { lcd_init();
while (TRUE) { if (!input(ONE_WIRE_PIN)) { onewire_reset(); int8_t c = onewire_read();
Все-таки МК для 1-Wire --> LCD конвертора - расточительно и сложно по сравнению с 74HC595. Более того - в библиотеке <ShiftRegLCD123.h> теперь есть управление двумя свободными пинами - backlightOn / backlightOff и buzzerOn / buzzerOff. Небольшое усложнение схемы конвертора позволяет посадить до 4 LCD в одну линию. Конечно это решение не для распределенной системы, но в локальной системе - вполне прокатит.
В последнее время даже для хобби предпочитаю МК с множеством пинов. И новые МК намного дешевле старых типов, со многими вн. ресурсами для будущего использования.
В последнее время даже для хобби предпочитаю МК с множеством пинов. И новые МК намного дешевле старых типов, со многими вн. ресурсами для будущего использования.
Это точно. Я как увидел цену на допотопную DS2408 - согласен с вами без сомнений.
Уважаемые гуру. Как синтаксически правильно передать текстовый аргумент ("Ariadna") в функцию void LCD_print(string) ? А если не затруднит - приведите требуемый код. С уважением.
Пишу библиотеку одно-проводного LCD. Мы общались на эту тему. С вашей помощью тогда нашел схему (74НС595, резисторы, диоды, конденсаторы) и отличную библу под нее. Точно такая как стандартная. Но схема медленная и ненадежная. А библиотека только под нее. Сейчас хочу сделать на одновибраторах. Она намного быстрее, надежнее, и нисколько не дороже. Но надо библиотеку. Написал функции низкого уровня. В том числе функцию вывода ОДНОГО символа. //---------- void LCD_Write(uint8_t ASCII_code) {
ds.write(CurrAtr | 0x0D); // установка кода символа. Младшая тетрада. Сигнал E=HIGH delay(DelTime); // ds.write(CurrAtr | 0x09); // установка кода символа. Младшая тетрада. Сигнал E=LOW delay(DelTime); // } //---------- Теперь надо более сложные. Здесь главное - чтоб было однотипно как в стандартной библиотеке. Именно поэтому мне и надо чтоб работало стандартное LCD_print("xxxxxxx").
Последний раз редактировалось Ariadna-on-Line Пн сен 25, 2023 19:41:16, всего редактировалось 1 раз.
Возьмите из кода то, что хотите, а поместите "упакованным" в библиотеку на потом, после нормальной работы. Все уже сделано, особенно с этими часто используемыми устройствами.
Возьмите из кода то, что хотите, а поместите "упакованным" в библиотеку на потом, после нормальной работы. Все уже сделано, особенно с этими часто используемыми устройствами.
Мне из железного кода ничего не надо. Уже всё есть. Нужно заставить работать функцию с текстовым аргументом
LCD_print("Ariadna"); // Использовать только двойные апострофы //==== void LCD_print(char* str) { //Только так
char *ptrB = (char*)str; for (int i = 0; i < strlen(str); i++) { char z = *(ptrB + i); LCD_Write(z); } } //---------- Убил пол-дня. А оказалось не сложно. Вопрос: Какие еще функции желательно добавить в библиотеку помимо стандартных ?
В декабре сделал гербер-файлы и заказал в Китае печатки для переходников о которых данная тема. Сегодня получил. 24 дня от заказа да еще в НГ праздники. Выглядят замечательно. Осталось найти свои косяки. )))))) Потом выложу впечатления.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения