Например TDA7294

Форум РадиоКот • Просмотр темы - Автогенератор кода для семисегментных индикаторов
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 15, 2025 02:40:25

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


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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Сб фев 09, 2013 23:51:10 
Первый раз сказал Мяу!

Зарегистрирован: Пн сен 27, 2010 22:38:52
Сообщений: 39
Рейтинг сообщения: 0
Вчера надоело в очередной раз пересчитывать коды для символов семисегментника (в связи с очередной другой схемой с нестандартным подключением) и написал программу, предназначенную для облегчения этого процесса.
...
Теперь вот.. то ли поделится, то ли похвастаться... (совсем чуть-чуть, ведь тут хоть есть те, кто поймут о чем речь. Не жене ведь хвастаться.. :) ) но в основном спросить - встречал ли кто похожее. Или я опять, как всегда "изобрел" никому не нужный велосипед :)
А форум Радиокота мной часто читаем (в основном только читаем) и очень уважаем, поэтому мнение тутошних уважаемых котов мне будет знать весьма ценно.

http://luckytech.ru/Uploads/7sgLED.zip

А это краткое описание.

Вчитывался в названия разделов форума - этот показался наиболее подходящим. Если же не туда - прошу больно когтями не царапать...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Вс фев 10, 2013 03:48:52 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 621
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3764
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Полезная програмка. Я раньше для себя тоже что-то подобное делал. Но Ваша более красивая.
http://mcs.uwsuper.edu/sb/Electronics/7seg.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Сб фев 23, 2013 15:50:02 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 15
Зарегистрирован: Пт сен 08, 2006 01:06:13
Сообщений: 53
Рейтинг сообщения: 0
Позволю и себе тихонько мяукнуть: очень, очень пребета для вычисления кодов семисегментных индикаторов. Пока реализована только основная функциональность. Генерируются коды HEX DEC BIN для индикаторов с ОК и ОА. Предусмотрена возможность подключения к одному порту нескольких сегментов для генерации ограниченного набора символов, напр. 0 и 1. В таком случае сегменты b и c подключаются, скажем, к порту 0, а сегменты a d e f к порту 1, остальные сегменты назначаются на неиспользуемый порт контроллера.
Сильно не пинайте - сам ни разу не программер.


Вложения:
7LED_Calc.rar [191.71 KiB]
Скачиваний: 373

_________________
Все, что выходит из-под рук японца, будь то сковородная ручка или магнитофон, должно быть произведением искусства.
©Коносукэ Мацусита
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Сб фев 23, 2013 16:02:46 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
Нормальная программа. Всё в ней есть на любой вкус.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Сб фев 23, 2013 16:29:25 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
И чего я раньше не видел ваших программок......

А я так приспособился:
Код:
#define SegA (1<<6)                                /*подключение сегментов дисплея*/
#define SegB (1<<0)
#define SegC (1<<2)
#define SegD (1<<4)
#define SegE (1<<5)
#define SegF (1<<7)
#define SegG (1<<1)
#define SegH (1<<3)

char SimbMass [] PROGMEM = {                       //символьный массив (не используются K,M,W,X,Z)
    (SegA|SegB|SegC|SegD|SegE|SegF),            //0
    (SegB|SegC),                                //1
    (SegA|SegB|SegD|SegE|SegG),                    //2
    (SegA|SegB|SegC|SegD|SegG),                    //3    
    (SegB|SegC|SegF|SegG),                        //4
    (SegA|SegC|SegD|SegF|SegG),                    //5    
    (SegA|SegC|SegD|SegE|SegF|SegG),            //6
    (SegA|SegB|SegC),                            //7
    (SegA|SegB|SegC|SegD|SegE|SegF|SegG),        //8
    (SegA|SegB|SegC|SegD|SegF|SegG),            //9
    (0),                                        //Space
    (SegA|SegB|SegC|SegE|SegF|SegG),            //
    (SegC|SegD|SegE|SegF|SegG),                    //B
    (SegD|SegE|SegG),                            //C
    (SegB|SegC|SegD|SegE|SegG),                    //D
    (SegA|SegD|SegE|SegF|SegG),                    //E
    (SegA|SegE|SegF|SegG),                        //F 
    (SegA|SegC|SegD|SegE|SegF),                    //G
    (SegC|SegE|SegF|SegG),                        //H
    (SegC),                                        //I 
    (SegB|SegC|SegD|SegE),                        //J
    (0),                                    //K 
    (SegD|SegE|SegF),                            //L
    (0),                                    //M
    (SegC|SegE|SegG),                            //N
    (SegC|SegD|SegE|SegG),                        //O
    (SegA|SegB|SegE|SegF|SegG),                    //P
    (SegA|SegB|SegC|SegF|SegG),                    //Q
    (SegE|SegG),                                //R
    (SegA|SegC|SegD|SegF|SegG),                    //S
    (SegD|SegE|SegF|SegG),                        //T
    (SegC|SegD|SegE),                            //U
    (SegC|SegD|SegE),                            //V
    (0),                                    //W
    (0),                                    //X
    (SegB|SegC|SegD|SegF|SegG),                    //Y
    (0),                                    //Z
    (SegE|SegF),                                //[
    (SegB|SegE|SegG),                            ///                            
    (SegB|SegC),                                //]
    (SegG),                                        //-
    (SegD)};                                    //_      

Просто меняю в дефайнах номера выводов и все.....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Сб фев 23, 2013 17:14:22 
Прорезались зубы

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Пт май 18, 2012 23:12:23
Сообщений: 249
Рейтинг сообщения: 0
для 8/17 сегментов: http://ukpyr.narod.ru/ind_led.htm?lang=rus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Сб фев 23, 2013 17:25:01 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 15
Зарегистрирован: Пт сен 08, 2006 01:06:13
Сообщений: 53
Рейтинг сообщения: 0
Подобные: тыц и тыц
Раньше почему-то не нашел...

_________________
Все, что выходит из-под рук японца, будь то сковородная ручка или магнитофон, должно быть произведением искусства.
©Коносукэ Мацусита


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Сб фев 23, 2013 20:53:59 
Прорезались зубы

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Пт май 18, 2012 23:12:23
Сообщений: 249
Рейтинг сообщения: 0
я бы не сказал что подобные - нельзя сравнивать онлайн-редактор, работающий на любой системе без установки, с Windows-only бинарниками


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Вс фев 24, 2013 14:46:42 
Вымогатель припоя

Зарегистрирован: Сб фев 19, 2011 18:04:08
Сообщений: 513
Откуда: Татарстан, пос. Актюбинский
Рейтинг сообщения: 0
shads писал(а):
И чего я раньше не видел ваших программок......

Поддерживаю
Спойлер
Код:

#define seg_A  PORTB_Bit3
#define seg_B  PORTB_Bit6
#define seg_C  PORTC_Bit1
#define seg_D  PORTD_Bit7
#define seg_E  PORTB_Bit1
#define seg_F  PORTD_Bit1
#define seg_G  PORTD_Bit5
#define seg_DP PORTB_Bit5

#define seg_1  PORTC_Bit0
#define seg_2  PORTB_Bit4
#define seg_3  PORTB_Bit2
#define seg_4  PORTB_Bit0
#define seg_5  PORTD_Bit6
#define seg_6  PORTB_Bit7
#define seg_7  PORTD_Bit2
#define seg_8  PORTD_Bit0

#define seg_out_A  DDRB_Bit3
#define seg_out_B  DDRB_Bit6
#define seg_out_C  DDRC_Bit1
#define seg_out_D  DDRD_Bit7
#define seg_out_E  DDRB_Bit1
#define seg_out_F  DDRD_Bit1
#define seg_out_G  DDRD_Bit5
#define seg_out_DP DDRB_Bit5

#define seg_out_1  DDRC_Bit0
#define seg_out_2  DDRB_Bit4
#define seg_out_3  DDRB_Bit2
#define seg_out_4  DDRB_Bit0
#define seg_out_5  DDRD_Bit6
#define seg_out_6  DDRB_Bit7
#define seg_out_7  DDRD_Bit2
#define seg_out_8  DDRD_Bit0


#define segpins(a,b,c,d,e,f,g) ((a<<0)|(b<<1)|(c<<2)|(d<<3)|(e<<4)|(f<<5)|(g<<6))
const unsigned char __flash SEG_CODE [20] =
{
segpins(1,1,1,1,1,1,0),//0
segpins(0,1,1,0,0,0,0),//1
segpins(1,1,0,1,1,0,1),//2
segpins(1,1,1,1,0,0,1),//3
segpins(0,1,1,0,0,1,1),//4
segpins(1,0,1,1,0,1,1),//5
segpins(1,0,1,1,1,1,1),//6
segpins(1,1,1,0,0,0,0),//7
segpins(1,1,1,1,1,1,1),//8
segpins(1,1,1,1,0,1,1),//9
segpins(1,1,1,0,1,1,1),//A
segpins(0,0,1,1,1,1,0),//b
segpins(1,0,0,1,1,1,0),//C
segpins(0,1,1,1,0,1,1),//d
segpins(1,0,0,1,1,1,1),//E
segpins(1,0,0,0,1,1,1),//F
segpins(0,0,0,0,0,0,1), //-  16
segpins(0,0,1,0,1,0,1), //-  n 17
segpins(0,0,0,0,0,0,0), //-  18
};



void LED_DRIVER(unsigned char num,unsigned char data)
{

seg_A  = 0;
seg_B  = 0;
seg_C  = 0;
seg_D  = 0;
seg_E  = 0;
seg_F  = 0;
seg_G  = 0;
seg_DP = 0;

num ^= 0xFF;

seg_1 = num;
num>>=1;
seg_2 = num;
num>>=1;
seg_3 = num;
num>>=1;
seg_4 = num;
num>>=1;
seg_5 = num;
num>>=1;
seg_6 = num;
num>>=1;
seg_7 = num;
num>>=1;
seg_8 = num;


seg_A = data;
data>>=1;
seg_B = data;
data>>=1;
seg_C = data;
data>>=1;
seg_D = data;
data>>=1;
seg_E = data;
data>>=1;
seg_F= data;
data>>=1;
seg_G = data;
data>>=1;
seg_DP = data;

}

void INIT_LED_PORT(unsigned char num,unsigned char data)
{

seg_out_1 = num ;
num>>=1;
seg_out_2 = num ;
num>>=1;
seg_out_3 = num ;
num>>=1;
seg_out_4 = num ;
num>>=1;
seg_out_5 = num ;
num>>=1;
seg_out_6 = num ;
num>>=1;
seg_out_7 = num ;
num>>=1;
seg_out_8 = num ;


seg_out_A = data;
data>>=1;
seg_out_B = data;
data>>=1;
seg_out_C = data;
data>>=1;
seg_out_D = data;
data>>=1;
seg_out_E = data;
data>>=1;
seg_out_F= data;
data>>=1;
seg_out_G = data;
data>>=1;
seg_out_DP = data;

}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автогенератор кода для семисегментных индикаторов
СообщениеДобавлено: Вс фев 24, 2013 15:49:01 
Первый раз сказал Мяу!

Зарегистрирован: Пн сен 27, 2010 22:38:52
Сообщений: 39
Рейтинг сообщения: 0
Ух, какая туча идей и полезных ссылок :)
значит не зря "похвастался" прогой...


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

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


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

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


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

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


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