Например TDA7294

Форум РадиоКот • Просмотр темы - Подключить LCD к МК по 1-проводному интерфейсу.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 22, 2025 11:38:30

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 61 ]    , , 3,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Вт авг 29, 2023 15:21:13 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Принцип применим и в других случаях: ниже: 8-LED 7-SEG дисплеем на MAX7219 управляю по 2 пина.
Сл. один пин MC остается свободным для использования в будущем :music: .

Что мне не нравится: номиналы элементов RC-цепь и/или время паузы между импульсами в коде зависят от тактовой частоты. Но после нескольких попыток - работает и на симуляторе, и на реальном устройстве.

Изображение,
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Чт авг 31, 2023 19:55:33 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
Продолжаем экономить на спичках.
Речь об DS2408. О подключении LCD по стандартному 1-Wire протоколу. Конечно проще всего взять листинг последовательности байт команд HD44780. Но что-то не находится он в удобно-читаемом виде. Поэтому пошел по пути безысходности, то бишь снифферинга. Накатал на Протеусе типа виртуальный Логический анализатор. Просмотрел работу штатной проги для LiquidCrictal_I2C. Содрал команд - lcd.begin / cursor / noCursor / blink / noBlink/ Прогнал сквозь виртуальный DS2408 - работают. Так они выглядят - см. скетч.

На очереди остальные. Если найдется желающий присоединиться - буду рад. Тема конечно мало-полезная, но можно будет создать еще одну библиотеку. Может кому сгодится. Если, конечно, раньше не найдется готовая библа LCD для 1-Wire !!! )))). С уважением.
ПС. Поскольку 1-Wire устройства - адресуемые, можно навешивать кучу дисплеев на один провод.


Вложения:
More functions.txt [1.96 KiB]
Скачиваний: 53
VLA.png [27.17 KiB]
Скачиваний: 52
DS2408_Alternative.ino.txt [3.47 KiB]
Скачиваний: 64
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пт сен 01, 2023 15:28:49 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Все ближе и ближе подходим к моей любимой схеме: LCD на одном проводе ... только в схеме дисплей еще ... и без питания :)) .

Изображение

One wire brings power & data to LCD module
https://www.radiolocman.com/shem/schema ... ?di=153552


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пт сен 01, 2023 16:56:46 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
Моя идея оказалась фикс по банальной причине - продавец вздул цену за эту сраную DS2408 выше фантастики. Но мой труд не бесполезен. Знать код "ногодрыгов" управления чем-либо - полезное дело. Так что продолжу до победного конца. Обязательно полюбопытствую вашу тему. Есть уже рабочая прога 1-Wire ---> LCD конвертора для PIC-а (или Тини - они ничем не хуже) ? У меня их немало валяется. Работал с ними успешно до Ардуин. Но тогда мне эта тема как-то в голову не приходила.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пт сен 01, 2023 17:28:21 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Использую 1wire.c. (Иногда и отключаю прерывания во время выполнения).
из интернет: DS18B20 1-wire Driver for CCS C
http://solar-blogg.blogspot.com/2009/04 ... ccs-c.html

Выбирайте свой МК и пишите код как диспл. драйвер по 1-wire. Только ... дешевле по I2c на PCF8574 не будет :).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пт сен 01, 2023 23:50:26 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
...Выбирайте свой МК и пишите код как диспл. драйвер по 1-wire. Только ... дешевле по I2c на PCF8574 не будет :).
Благодаря Вам, дешевое решение я уже нашел. Которое на 74HC595. Причем готовое с библиотекой !!! Дешевле по-моему там уже просто некуда. То что на линию больше одного LCD там не посадишь. Вот это - недостаток ! )))))
ПС. Но похоже не все так печально. Попозже отпишусь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Сб сен 02, 2023 08:18:23 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
С 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();
     
      lcd_gotoxy(1, 1);
      printf(lcd_putc, "%u", c);
   
      lcd_putc(' ');
      lcd_putc(' ');
    }
  }
}


В помощь:
Wikipedia: 1-Wire
Microchip: AN3699, Using ATtiny817 to Emulate a 1-Wire® Device


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Вс сен 03, 2023 13:00:39 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
Все-таки МК для 1-Wire --> LCD конвертора - расточительно и сложно по сравнению с 74HC595. Более того - в библиотеке <ShiftRegLCD123.h> теперь есть управление двумя свободными пинами - backlightOn / backlightOff и buzzerOn / buzzerOff. Небольшое усложнение схемы конвертора позволяет посадить до 4 LCD в одну линию. Конечно это решение не для распределенной системы, но в локальной системе - вполне прокатит.


Вложения:
1Wire.png [33.95 KiB]
Скачиваний: 67
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Вс сен 03, 2023 14:31:56 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
В последнее время даже для хобби предпочитаю МК с множеством пинов. И новые МК намного дешевле старых типов, со многими вн. ресурсами для будущего использования.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Вс сен 03, 2023 15:00:13 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
В последнее время даже для хобби предпочитаю МК с множеством пинов. И новые МК намного дешевле старых типов, со многими вн. ресурсами для будущего использования.
Это точно. Я как увидел цену на допотопную DS2408 - согласен с вами без сомнений.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пн сен 25, 2023 13:02:54 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
void setup() {
LCD_print("Ariadna");
}
//======
void loop() {
}
//======
void LCD_print(string) {
Serial.print(string);
......
for (i =0; i<stringLength; i++) {
LCD_Write(byte(i));
}
}

Уважаемые гуру. Как синтаксически правильно передать текстовый аргумент ("Ariadna") в функцию void LCD_print(string) ? А если не затруднит - приведите требуемый код. С уважением.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пн сен 25, 2023 14:41:18 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Код:
void LCD_print(String str) {
  Serial.print(str);

  for (i = 0; i < str.length(); i++) {
    LCD_Write(byte(i));
  }
}

---
За print внутр. библиотеку LiquidCrystal() и клас String к lcd и Serial.print почему бы не использовать?
Код:
void LCD_print(String str) {
  Serial.print(str);
  lcd.print(str);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пн сен 25, 2023 18:57:53 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
Пишу библиотеку одно-проводного LCD. Мы общались на эту тему. С вашей помощью тогда нашел схему (74НС595, резисторы, диоды, конденсаторы) и отличную библу под нее. Точно такая как стандартная. Но схема медленная и ненадежная. А библиотека только под нее. Сейчас хочу сделать на одновибраторах. Она намного быстрее, надежнее, и нисколько не дороже. Но надо библиотеку. Написал функции низкого уровня. В том числе функцию вывода ОДНОГО символа.
//----------
void LCD_Write(uint8_t ASCII_code) {

uint8_t CurrAtr = ASCII_code & 0xF0; // Обнуляем младшую тетраду

ds.write(CurrAtr | 0x0D); // установка кода символа. Старшая тетрада. Сигнал E=HIGH
delay(DelTime); // Пауза для отработки строба 74HC595
ds.write(CurrAtr | 0x09); // установка кода символа. Старшая тетрада. Сигнал E=LOW
delay(DelTime); //

CurrAtr = ASCII_code << 4; //Выделяем младшую тетраду

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 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пн сен 25, 2023 19:39:41 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
LCD16x2 Interfacing with AVR ATmega16/ATmega32
Interfacing LCD16x2 with AVR ATmega16/ATmega32 in 4-bit mode

Возьмите из кода то, что хотите, а поместите "упакованным" в библиотеку на потом, после нормальной работы. Все уже сделано, особенно с этими часто используемыми устройствами.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пн сен 25, 2023 20:10:30 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
Возьмите из кода то, что хотите, а поместите "упакованным" в библиотеку на потом, после нормальной работы. Все уже сделано, особенно с этими часто используемыми устройствами.
Мне из железного кода ничего не надо. Уже всё есть. Нужно заставить работать функцию с текстовым аргументом


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Пн сен 25, 2023 20:17:52 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1808
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
... Нужно заставить работать функцию с текстовым аргументом

Строка 62:
Код:
void LCD_String (char *str)   /* Send string to LCD function */
...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Вт сен 26, 2023 19:48:46 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
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);
}
}
//----------
Убил пол-дня. А оказалось не сложно.
Вопрос: Какие еще функции желательно добавить в библиотеку помимо стандартных ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Ср сен 27, 2023 07:56:38 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1310
Рейтинг сообщения: 0
Ужос.
Код:
void LCD_print(char* str) {
  while (*str)
    LCD_Write(*str++);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Ср сен 27, 2023 14:29:54 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
Спасибо. Работает. Где вы раньше были ))).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключить LCD к МК по 1-проводному интерфейсу.
СообщениеДобавлено: Сб янв 06, 2024 15:25:06 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 227
Зарегистрирован: Вс май 13, 2012 00:01:54
Сообщений: 1443
Рейтинг сообщения: 0
В декабре сделал гербер-файлы и заказал в Китае печатки для переходников о которых данная тема. Сегодня получил. 24 дня от заказа да еще в НГ праздники. Выглядят замечательно. Осталось найти свои косяки. )))))) Потом выложу впечатления.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 61 ]    , , 3,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y