Например TDA7294

 Форум РадиоКот • Просмотр темы - Динамическая индикация на 74HC595
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср янв 24, 2018 12:51:08



Часовой пояс: UTC + 3 часа [ Летнее время ]


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



Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.
Автор Сообщение
Не в сети
 Заголовок сообщения: Динамическая индикация на 74HC595
СообщениеДобавлено: Ср ноя 15, 2017 04:52:41 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Запускаю симуляцию в протеусе динамическая индикация отображается "кракозябрами"(раньше дин.индикация всегда отображалась в протеусе корректно).

Вот и закралась мысль ко мне может я чего то не знаю ?(
Может кто подсказать где кроется ошибка?
Схема:

Фулл код



Код Функции динамической индикации:
Код:
//Функция включения сегментов + кодировка.
#define SEG_PORT EightOUT.ByteRegister
#define SEGA 0
#define SEGB 1
#define SEGC 2
#define SEGD 3
#define SEGE 4
#define SEGF 5
#define SEGG 6
#define SEGH 7

#define ANOD1 SevenOUT.Register.DO5
#define ANOD2 SevenOUT.Register.DO6
#define ANOD3 SevenOUT.Register.DO7

static void segchar (unsigned char seg)
{
   switch (seg)
   {
      case 0:
      SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(0<<SEGE)|(0<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
      case 1:
      SEG_PORT=(1<<SEGA)|(0<<SEGB)|(0<<SEGC)|(1<<SEGD)|(1<<SEGE)|(1<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
      case 2:
      SEG_PORT=(0<<SEGA)|(0<<SEGB)|(1<<SEGC)|(0<<SEGD)|(0<<SEGE)|(1<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
      case 3:
      SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(1<<SEGE)|(1<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
      case 4:
      SEG_PORT=(1<<SEGA)|(0<<SEGB)|(0<<SEGC)|(1<<SEGD)|(1<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
      case 5:
      SEG_PORT=(0<<SEGA)|(1<<SEGB)|(0<<SEGC)|(0<<SEGD)|(1<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
      case 6:
      SEG_PORT=(0<<SEGA)|(1<<SEGB)|(0<<SEGC)|(0<<SEGD)|(0<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
      case 7:
      SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(1<<SEGD)|(1<<SEGE)|(1<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
      case 8:
      SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(0<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
      case 9:
      SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(1<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
      case 99: //OFF Все сегменты
      SEG_PORT=(1<<SEGA)|(1<<SEGB)|(1<<SEGC)|(1<<SEGD)|(1<<SEGE)|(1<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
   }
}
volatile uint8_t data1=0;
volatile uint8_t data2=0;
volatile uint8_t AnodCount=0;

void WriteSegNumber(uint8_t Seg3,uint8_t NeberChar)
{
   data1=NeberChar%10;
   data2=NeberChar/10;
   AnodCount++;
   switch (AnodCount)
   {
      case 1:   
      segchar(data1);
      ANOD2=1;
      ANOD3=1;
      ANOD1=0;break;
      case 2:
      segchar(data2);
      ANOD1=1;
      ANOD3=1;
      ANOD2=0;break;
      case 3:
      segchar(Seg3);
      ANOD1=1;
      ANOD2=1;
      ANOD3=0;
      AnodCount = 0;break;
   }
}

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Ср ноя 15, 2017 08:22:10 
Открыл глаза

Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 59
Рейтинг сообщения: 0
У вас
Код:
SEG_PORT=(1<<SEGA)|(0<<SEGB)|(0<<SEGC)|(1<<SEGD)|(1<<SEGE)|(1<<SEGF)|(1<<SEGG)|(1<<SEGH);break;

К примеру SEGG- это 1(первый) бит, а в схеме R8ANOD G подключен на 6 бит ---- это правильно?


Вернуться наверх
 Профиль  
 
JLCPCB Prototype, Бесплатная доставка первого заказа + $2 на прототип ПП!

Крупнейший производитель печатных плат в Китае, 290,000+ заказчиков, 8,000+ он-лайн заказов в день.

Цена за 10 плат: $2 за 2-х слойную, $15 за 4-х слойную, $74 за 6-ти слойную.

LCSC Parts: Экономия до 50%, большой выбор компонентов в наличии, отправка заказа в день оплаты.

Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Ср ноя 15, 2017 08:48:35 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Это пологаю что это правильно т.к SEGG находиться в структуре :: EightOUT.ByteRegister
Код:
struct UnionBits
{
   unsigned DO0: 1;
   unsigned DO1: 1;
   unsigned DO2: 1;
   unsigned DO3: 1;
   unsigned DO4: 1;
   unsigned DO5: 1;
   unsigned DO6: 1;
   unsigned DO7: 1;
};

union Byte {
   uint8_t ByteRegister;
   struct UnionBits Register;
};
union Byte EightOUT;



и при передачи (1<<SEGG), т.е мы установим 1 в EightOUT.Register.DO6 , а это битовое поле как раз и отвечает за Q6 в регистре "R8ANOD".

Добавлено after 6 minutes 34 seconds:
Такая если конечно можно выразиться "инверсия" происходит из-за SPI и принципа работы сдвиговых регистров.
Код:
uint8_t SPI_UpdataByte(uint8_t data)
{
   uint8_t report;
   SPDR = data;
   while(!(SPSR & (1<<SPIF)));
   report = SPDR;
   return report;
}
void SpiOutRegister()
{
   SPI_PORT &= ~(1<<SPI_SS);
   OneIN.ByteRegister=SPI_UpdataByte(EightOUT.ByteRegister);
   TwoIN.ByteRegister=SPI_UpdataByte(SevenOUT.ByteRegister);
   ThreeIN.ByteRegister=SPI_UpdataByte(SixOUT.ByteRegister);
   FourIN.ByteRegister=SPI_UpdataByte(FifthOUT.ByteRegister);
   FifthIN.ByteRegister=SPI_UpdataByte(FourOUT.ByteRegister);
   SixIN.ByteRegister=SPI_UpdataByte(ThreeOUT.ByteRegister);
   SevenIN.ByteRegister=SPI_UpdataByte(TwoOUT.ByteRegister);
   EightIN.ByteRegister=SPI_UpdataByte(OneOUT.ByteRegister);
   SPI_PORT |= (1<<SPI_SS);
}

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 

Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Ср ноя 15, 2017 16:57:52 
Открыл глаза

Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 59
Рейтинг сообщения: 1
Все таки я ее заставил работать, видос


Вернуться наверх
 Профиль  
 

Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Чт ноя 16, 2017 05:24:36 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Dimon456, Поздравляю ) а исходником не поделитесь ?)

Добавлено after 35 minutes 34 seconds:
Видос как она ̶Р̶а̶б̶о̶т̶а̶е̶т̶ не работает у меня (

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Чт ноя 16, 2017 16:55:13 
Открыл глаза

Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 59
Рейтинг сообщения: 0
Исходник я не менял, он ваш полностью и всецело.

Это Протеус косячит, в реальном железе будет работать.
У китайцев же эти модули работают
Но и Протеус можно заставить корректно отображать, так сказать для отладки, надо просто


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Пт ноя 17, 2017 03:46:43 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
я тогда предполагаю что это настройки пртеуса. System->Set display options и System->Animation Options.

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Пт ноя 17, 2017 09:58:49 
Открыл глаза

Зарегистрирован: Вс дек 25, 2016 09:34:54
Сообщений: 59
Рейтинг сообщения: 0
Я же написал, странно, ну да ладно.

Нет, неверно, но если ваш компутер переваривает 100 кадр/сек, можете поставить. Я туда не лазил.

Просто отсоедините вывод OE микрух R3R и R8ANOD от общей схемы, что бы они в воздухе оказались, соедините их между собой, подсоедините это соединение OE через инвертор к точке соединения выводов ST_CP микрух R3R и R8ANOD.

Если не понятно вот схема
Еще раз говорю, исходный код тот же, ни чего не надо там менять, это только для отладки в протеусе, в реальной схеме будет работать и без этого.
Это только для вашего кода, вы неверно формируете импульс ST_CP для 74HC595, хотя этот импульс может быть верен для 74HC165 (не разбирался с ней, не знаю). Это только для протеуса. Инвертор формирует правильный импульс для вывода OE. Не зацикливайтесь на этом.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Вс ноя 19, 2017 14:42:04 
Модератор
Аватар пользователя

Карма: 131
Зарегистрирован: Сб авг 14, 2010 16:05:51
Сообщений: 12971
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
7seg писал(а):
#define SEG_PORT EightOUT.ByteRegister
#define SEGA 0
#define SEGB 1
#define SEGC 2
#define SEGD 3
#define SEGE 4
#define SEGF 5
#define SEGG 6
#define SEGH 7

#define ANOD1 SevenOUT.Register.DO5
#define ANOD2 SevenOUT.Register.DO6
#define ANOD3 SevenOUT.Register.DO7

static void segchar (unsigned char seg)
{
switch (seg)
{
case 0:
SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(0<<SEGE)|(0<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
case 1:
SEG_PORT=(1<<SEGA)|(0<<SEGB)|(0<<SEGC)|(1<<SEGD)|(1<<SEGE)|(1<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
case 2:
SEG_PORT=(0<<SEGA)|(0<<SEGB)|(1<<SEGC)|(0<<SEGD)|(0<<SEGE)|(1<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
case 3:
SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(1<<SEGE)|(1<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
case 4:
SEG_PORT=(1<<SEGA)|(0<<SEGB)|(0<<SEGC)|(1<<SEGD)|(1<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
case 5:
SEG_PORT=(0<<SEGA)|(1<<SEGB)|(0<<SEGC)|(0<<SEGD)|(1<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
case 6:
SEG_PORT=(0<<SEGA)|(1<<SEGB)|(0<<SEGC)|(0<<SEGD)|(0<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
case 7:
SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(1<<SEGD)|(1<<SEGE)|(1<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
case 8:
SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(0<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
case 9:
SEG_PORT=(0<<SEGA)|(0<<SEGB)|(0<<SEGC)|(0<<SEGD)|(1<<SEGE)|(0<<SEGF)|(0<<SEGG)|(1<<SEGH);break;
case 99: //OFF Все сегменты
SEG_PORT=(1<<SEGA)|(1<<SEGB)|(1<<SEGC)|(1<<SEGD)|(1<<SEGE)|(1<<SEGF)|(1<<SEGG)|(1<<SEGH);break;
}
}
все это до фига избыточно (как и многое другое в полном коде).
достаточно определить байты цифр - по одному байту для каждой цифры.
вот, как это сделано у меня:

; 0 - горит, 1 - потушен
; сегменты: D.CGAFBE
.equ _0 = 0b01010000
.equ _1 = 0b11011101
.equ _2 = 0b01100100
.equ _3 = 0b01000101
.equ _4 = 0b11001001
.equ _5 = 0b01000011
.equ _6 = 0b01000010
.equ _7 = 0b11010101
.equ _8 = 0b01000000
.equ _9 = 0b01000001
.equ _x = 0b11111111 ; пустое место, пробел
.equ _m = 0b11101111 ; минус

там также определены дополнительные символы, которые нужно выводить.
(сегменты в байтах идут не по порядку, а так, как было удобно разводить на плате).

далее все просто: соответственно цифре ее код (байт) отправляем прямо в порт. либо другой нужный символ.
и не нужны твои огромные навороты с объявлениями большой кучи констант и созданием комбинаций из этих констант...

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Вс ноя 19, 2017 19:24:58 
Мучитель микросхем

Карма: 3
Зарегистрирован: Ср июн 25, 2008 16:19:44
Сообщений: 450
Рейтинг сообщения: 0
Писанины много, это так. Но тут полностью работает пословица: долго запрягаем, зато быстро едем. Последующие проекты собираются гораздо быстрее. Тебе остается переопределить пины и все. Немного посложнее с микросхемами ввода-вывода. Но все равно, при шаблоне проект гораздо быстрее собрать, чем с нуля все писать.
Динамическая индикация. Расширение ввода-вывода. 74HC595. Период вывода 1 мс. Функция работает в основном цикле. Ну про свой подход в программировании я неоднократно писал.

"seven_segm_led_ind.h"


"seven_segm_led_ind.с"


Последний раз редактировалось Demiurg Пн ноя 20, 2017 04:11:42, всего редактировалось 2 раз(а).

Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Вс ноя 19, 2017 23:34:29 
Открыл глаза

Карма: -6
Зарегистрирован: Пн июл 13, 2015 14:39:11
Сообщений: 48
Откуда: Москва
Рейтинг сообщения: 0
Исправьте в название регистр 595й


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Пн ноя 20, 2017 04:12:42 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Уважаемый модератор исправьте пожалуйста ошибочку в название темы, которая была допущена мною ( .
На Динамическая индикация на 74HC595

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC597
СообщениеДобавлено: Пн ноя 20, 2017 04:14:19 
Мучитель микросхем

Карма: 3
Зарегистрирован: Ср июн 25, 2008 16:19:44
Сообщений: 450
Рейтинг сообщения: 0
Это можно и самому сделать. Правка и меняете заголовок.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC595
СообщениеДобавлено: Пн ноя 20, 2017 04:29:43 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Starichok51, в первых прошивках делал по принципу который вы описали ) но как оказалось при смени камня или печатной латы даже того же индикатора ,следовало вносить очень много правок (. Поэтому было решено написать более универсальную функцию, и теперь всё изменения кода сводиться к правке дефайнов.

Добавлено after 2 minutes 15 seconds:
Re: Динамическая индикация на 74HC597
Demiurg, к сожалению править можно только свежие посты(

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC595
СообщениеДобавлено: Пн ноя 20, 2017 07:39:21 
Модератор
Аватар пользователя

Карма: 131
Зарегистрирован: Сб авг 14, 2010 16:05:51
Сообщений: 12971
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
я исправил название.

если нужна портация под разные устройства, тогда ты прав, и я беру свои слова обратно.

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC595
СообщениеДобавлено: Пн ноя 20, 2017 07:49:16 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Не хочу создавать новую тему решил спросить тут, может кто посоветовать для прочтения книжечку/статейки про КА(конечные автоматы)?, а если в ней еще будут примеры то было бы совсем замечательно )

Добавлено after 36 seconds:
И спасибо за правку названия темы Starichok51.

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC595
СообщениеДобавлено: Пн ноя 20, 2017 08:24:57 
Мучитель микросхем

Карма: 3
Зарегистрирован: Ср июн 25, 2008 16:19:44
Сообщений: 450
Рейтинг сообщения: 0
Почему-то пропали статьи. Тут про них написано. Там же ссылка на архив статей Татарчевского. Лично я с этих статей многое почерпнул.
Ищите также Шалыто. Ну и "автоматное программирование", "конечные автоматы".


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC595
СообщениеДобавлено: Пн ноя 20, 2017 09:05:57 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Demiurg, Спасибо за Статью и автора книги, попробую проникнуться парадигмой автома́тного программи́рования )

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC595
СообщениеДобавлено: Пт ноя 24, 2017 10:41:35 
Прорезались зубы

Карма: 3
Зарегистрирован: Ср май 03, 2017 04:22:26
Сообщений: 230
Рейтинг сообщения: 0
Дабы не создавать новую тему , есть у кого на примете (твердотельные реле или гальванически развязанные ключи ) ? DIP4
На подобии KAQY214 или PVA3054NPBF.
Просто (PC817+Транзистор) слишком много места занимают (.
Характеристики нагрузки: 12..24V 100mA. Управление сдвиговые регистры или сам МК.

_________________
ICQ - 721612848
andrei23061996@gmail.com
................................................................................................................................


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Динамическая индикация на 74HC595
СообщениеДобавлено: Пт ноя 24, 2017 10:53:05 
Мучитель микросхем

Карма: 3
Зарегистрирован: Ср июн 25, 2008 16:19:44
Сообщений: 450
Рейтинг сообщения: 0
PRAB37S. Отечественные. Протон-Орел. Сам использую. Доволен. У мну есть сколько-то. Запас. Сколько не помню, надо смотреть.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2  След.



Часовой пояс: UTC + 3 часа [ Летнее время ]


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

Сейчас этот форум просматривают: Ivanoff-iv, Гефестион и гости: 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