реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Поделитесь примером динамической индикации на Си, Хочется сделать правильно
Pyku_He_oTTyda
сообщение Sep 20 2006, 17:27
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Собственно вопрос в названии темы. Алгоритм понятен, но хочется посмотреть, как делают профи.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 20 2006, 20:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Pyku_He_oTTyda @ Sep 20 2006, 20:27) *
Собственно вопрос в названии темы. Алгоритм понятен, но хочется посмотреть, как делают профи.


Так несколько зависит от схемы. smile.gif Намекни хоть чего динамическая индикация?

А вааще всё примитивно до безобразия. Единственно что надо учитывать, это время рассасывания заряда если плечо длинное. А то засветка получается.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Sep 21 2006, 06:27
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Pyku_He_oTTyda @ Sep 20 2006, 20:27) *
Собственно вопрос в названии темы. Алгоритм понятен, но хочется посмотреть, как делают профи.

По динамической индикации говорилось уже много.
Вы сделали поиск по форуму (во второй строке наверху страницы есть слово Поиск) слова "динамическая"?
Go to the top of the page
 
+Quote Post
ALexx
сообщение Sep 21 2006, 07:36
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 22-09-04
Из: Burbach, Germany
Пользователь №: 704



Цитата(Pyku_He_oTTyda @ Sep 20 2006, 20:27) *
Собственно вопрос в названии темы. Алгоритм понятен, но хочется посмотреть, как делают профи.


На роль МегаПрофи не претендую, но делал это так (см. прилагаемые файлы)
Устройство - 14-циферный светодиодный дисплей. Цифры - с общими анодами.
В приложении - схема и программа для устройства.
Сделано на AT89C2051, но код может быть перенесен на АВР.
Отображение - в таймерном прерывании Timer0_int, которое возникает с частотой приблизительно 14 х 50Гц = 700Гц (дабы не видеть мигания)

P.S. 2Гуру: Сильно не пинать - писал это года 4 назад - взял как есть. В настоящее время работают сотни данных устройств во всех концах государства великого :-))

Не ту схему прикрепил. Теперь правильная!

Сообщение отредактировал ALexx - Sep 21 2006, 08:00
Прикрепленные файлы
Прикрепленный файл  disp1.rar ( 70.36 килобайт ) Кол-во скачиваний: 984
 
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Sep 21 2006, 09:47
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Спасибо, буду смотреть!

К сожалению по поиску смотрел, по запросу "Динамическая индикация" выкидывает одну "воду": http://electronix.ru/forum/index.php?act=S...%EA%E0%F6%E8%FF


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Sep 21 2006, 10:00
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



А устройсто простое (тестер):
некий привод для запорного механизма на трубе (для крана), у которого на борту 8 или 10 битный АЦП.
Коробочка связана по двум линяям по 485, по одной линии в привод идут СИ, по другой возвращаются данные.
Задача вывести на трехэлементный семисегментник значение кода, получаемого от устройства.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Shurmas
сообщение Sep 21 2006, 12:09
Сообщение #7


Местный
***

Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332



у АВР есть АпНоут с динамической индикацией.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Sep 21 2006, 12:44
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Shurmas
ну -ну, только он на *.asm


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Семён
сообщение Sep 21 2006, 12:49
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



примерно так создаю индикацию. Сразу извеняюсь если, чтото забыл но общий принцип следующий:

// знакогенератор для анодов(какие сигменты зажигать)
unsigned char __flash indicator[]={0X7E,0X30,0X6D,0X79,0X33,0X5b,0X5F,0X70,0X7F,0X7B,0X4E};
// выбор номера разряда (
unsigned char __flash catodIn[]={0XF7,0XFB,0XFD,0XFE,0XEF,0XDF};
//буфер индикатора
unsigned char buferInd[6];
unsigned char __flash *p_ind;

// функция записи в индикатор
void IndicatorSave(unsigned char par1,unsigned char par2,unsigned char par3,unsigned char par4,unsigned char par5,unsigned char par6);

// так записываю в индикатор
void IndicatorSave(unsigned char par1,unsigned char par2,unsigned char par3,unsigned char par4,unsigned char par5,unsigned char par6)
{
buferInd[0]=par6;
buferInd[1]=par5;
buferInd[2]=par4;
buferInd[3]=par3;
buferInd[4]=par2;
buferInd[5]=par1; //первый символ
}

//далее обслуживаю индикатор примерно так
INDI_PORT=0; //гасим сигменты чтобы не было мерцания

// далее идет код обслуживания клавиатуры
.
.
.
//выбераю новую позициюпозицию знакоместа
ind.catod++;
if(ind.catod==5)
{
ind.catod=0;
}

//включаю новое знакоместо
CATOD_PORT=catodIn[ind.catod];


// включаю сегменты согласно знакоместу
INDI_PORT=*(p_ind+buferInd[ind.catod]);

Примерно так


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Alexander Storm
сообщение Sep 21 2006, 12:50
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 17-09-06
Из: Kyiv
Пользователь №: 20 469



Цитата(Pyku_He_oTTyda @ Sep 21 2006, 13:00) *
А устройсто простое (тестер):
некий привод для запорного механизма на трубе (для крана), у которого на борту 8 или 10 битный АЦП.
Коробочка связана по двум линяям по 485, по одной линии в привод идут СИ, по другой возвращаются данные.
Задача вывести на трехэлементный семисегментник значение кода, получаемого от устройства.

Создаешь кодовую таблицу от своих сегментов. Типа как:
Код
const uchar KodePage[] = {0x7E, 0x06, 0xDA, 0x9E, 0xA6, 0xBC, 0xFC, 0x0E,
                     0xFE, 0xBE, 0xEE, 0xF4, 0x78, 0xD6, 0xF8, 0xE8,
                     0x10, 0xE6, 0x80, 0x16, 0x70, 0xC4, 0xD4, 0xEA,
                     0xC0, 0xAA, 0xF0, 0x76, 0x54, 0xB6, 0x6E, 0x00};

Создаешь переменную для буфера, типа: uchar LcdBuff[]={0,0,0};
Можешь вместо 0 инициальные значения написать (на загрузку покажет smile.gif)
А затем по таймеру выкидываешь по одному разряду. Только частоту прерывания таймера подбери чтоб не мигала.

Вот кусок от драйвера ЖКИ, у тебя почти тоже самое будет:

Код
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
TimeX++;          //Для анализа времени вывода по SPI

switch(TimeX&0xF)
{
///---------------Группа операций вывода на LCD
case 0:{ //Out LCD Data - main Out
              wPB.o_LCD = 0;//800us
            PORTB = *(uchar *) &wPB;
              break;};// end case 2
case 4:{//Out LCD Data - main Out
         SPDR = LcdBuff[--LCD_PTR];
         if (!LCD_PTR) {LCD_PTR = 24;};  
         break;};// end case 2
case 14:{//Out LCD - Formirovanie signala LOAD
           wPB.o_LCD = (LCD_PTR&0x07)?0:1;
          PORTB = *(uchar *) &wPB;          
           break;};//end case 34
};//end switch
PORTB ^=0x02;
TCNT0 = 0xD7; //reload counter value
}
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Sep 22 2006, 12:33
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Всем спасибо большое! Буду разбиратся)


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01455 секунд с 7
ELECTRONIX ©2004-2016