Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Способы вывода данных на семисегментный индикатор

Непрочитано 28.07.2011, 12:15  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Сообщение от Easyrider83 Посмотреть сообщение
Динамическая индикация делается на прерываниях! Забудьте про паузу.
А на прерываниях все и сделано
Запустите файлик протеус, и Вы поймете что я хочу сделать.
Реклама:
artyomugr вне форума  
Непрочитано 28.07.2011, 12:16  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Регулятор уровня? Работает, вроде.
Easyrider83 вне форума  
Непрочитано 28.07.2011, 12:19  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Сообщение от Easyrider83 Посмотреть сообщение
Регулятор уровня? Работает, вроде.
Там не только регулятор уровня..
Работает там сейчас все, я просто хочу сделать меню с эфектом бегущей строки
так чтоб старые данные сдвигались а новые данные толкали их..
artyomugr вне форума  
Непрочитано 28.07.2011, 12:21  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Сообщение от MisterDi Посмотреть сообщение
Читайте Кеннигана и Ричи. Они рулез (с)
Код:
while (1){
//сдвиг буфера на 1 символ
for (i=led_buff_size-1;i›0;i--) { led_buff[i+1]=led_buff[i]; }
//чтение нового символа из отображаемой строки  
led_buff[0]=read_next_char();
//задержка
delay_ms(100);
}
вышенаписанное не проверял, могут быть ошибки любого типа, особенно в условиях цикла for.
Извините, пропустил Ваше сообщение, вот почему то с фор оператором у меня досих пор проблемы...
спасибо Вам огромное сейчас буду разбирать код.
artyomugr вне форума  
Непрочитано 28.07.2011, 12:26  
Prototup
Прописка
 
Аватар для Prototup
 
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
Prototup на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Прикинь, сам писал, работает как часы, привожу функции, прототипы подпишешь сам и вставь зти функции в программу куда тебе надо...
Функции заточены под D триггеры, кот. завязаны на семисегментники по типовой схеме...
#use standard_io (A)
#use standard_io (B)

unsigned int8 datum;//Промежуточная переменная хранения
//one,tens,fractions
unsigned int16 SUM;
#define SH_CP PIN_B1 //выход для тактовых импульсов
#define DS PIN_B6 //последовательный выход данных
#define ST_CP PIN_B2//выход для защёлкивания данных
#define ST_CP_R PIN_B4//выход для защёлкивания данных результата
unsigned int8 CONST digits [10] = {0x3F, 0x6,0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x7,0x7F, 0x6F};
/*---OUT_NUMB FOR INDIKATORS---*/
/*--------Запись в 74HC595---------*/

void out_cifra (unsigned int8 datum)

{
int K; /* переменная счётчик циклов*/


for (K=0; K‹=7; K++)
{
if (!(datum&0x80)) {output_low (DS);}
else {output_high(DS);}
output_high (SH_CP);
output_low (SH_CP);
datum=datum‹‹1;
}

return;
}
/* Cуммирующая функция вычисления и вывода на индикаторы числа*/
void out_token (unsigned int16 SUM)
{
unsigned int8 one=0;//единицы
unsigned int8 tens=0;// десятки
unsigned int8 fractions=0;//десятые доли
unsigned int8 edinici=0;
unsigned int8 desatki=0;
unsigned int8 sotni=0;

while (SUM ›=100)
{
tens++;
SUM -=100;
};
while (SUM ›= 10)
{
one++;
SUM -= 10;
fractions=SUM;
};


/*---------------------Convert-конвертация из двоичного в код семисегментника*/
edinici=digits [fractions];
desatki=digits [one];
sotni=digits [tens];

/*---Вывод конвертированных данных на соотв. индикаторы---*/




datum=edinici;

out_cifra (datum);


datum=desatki;

out_cifra (datum);


datum=sotni;

out_cifra (datum);


}
//Не забудь дёрнуть ногами, для обновления информации
output_high (ST_CP_R ); /* Cмена информации на всех индикаторах /
output_low (ST_CP_R );
Примеров много, погугли...
Конечно, лучше с схемой, ну немогу, надо бежать на рынок за новым смесителем, а то жена убивает ужо....
И ещё раз - программа и схема - вещи не разлучимые!

Последний раз редактировалось Prototup; 29.07.2011 в 13:08.
Prototup вне форума  
Непрочитано 28.07.2011, 12:50  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Сообщение от Prototup Посмотреть сообщение
Прикинь, сам писал, работает как часы, привожу функции, прототипы подпишешь сам и вставь зти функции в программу куда тебе надо...
Функции заточены под D триггеры, кот. завязаны на семисегментники по типовой схеме...
#use standard_io (A)
#use standard_io (B)

unsigned int8 datum;//Промежуточная переменная хранения
//one,tens,fractions
unsigned int16 SUM;
#define SH_CP PIN_B1 //выход для тактовых импульсов
#define DS PIN_B6 //последовательный выход данных
#define ST_CP PIN_B2//выход для защёлкивания данных
#define ST_CP_R PIN_B4//выход для защёлкивания данных результата

/*---OUT_NUMB FOR INDIKATORS---*/
/*--------Запись в 74HC595---------*/

void out_cifra (unsigned int8 datum)

{
int K; /* переменная счётчик циклов*/


for (K=0; K‹=7; K++)
{
if (!(datum&0x80)) {output_low (DS);}
else {output_high(DS);}
output_high (SH_CP);
output_low (SH_CP);
datum=datum‹‹1;
}

return;
}
/* Cуммирующая функция вычисления и вывода на индикаторы числа*/
void out_token (unsigned int16 SUM)
{
unsigned int8 one=0;//единицы
unsigned int8 tens=0;// десятки
unsigned int8 fractions=0;//десятые доли
unsigned int8 edinici=0;
unsigned int8 desatki=0;
unsigned int8 sotni=0;

while (SUM ›=100)
{
tens++;
SUM -=100;
};
while (SUM ›= 10)
{
one++;
SUM -= 10;
fractions=SUM;
};


/*---------------------Convert-конвертация из двоичного в код семисегментника*/
edinici=digits [fractions];
desatki=digits [one];
sotni=digits [tens];

/*---Вывод конвертированных данных на соотв. индикаторы---*/




datum=edinici;

out_cifra (datum);


datum=desatki;

out_cifra (datum);


datum=sotni;

out_cifra (datum);


}
//Не забудь дёрнуть ногами, для обновления информации
output_high (ST_CP_R ); /* Cмена информации на всех индикаторах /
output_low (ST_CP_R );
Примеров много, погугли...
Конечно, лучше с схемой, ну немогу, надо бежать на рынок за новым смесителем, а то жена убивает ужо....
И ещё раз - программа и схема - вещи не разлучимые!

Интиресный код
А индикация получается не динамическая?
artyomugr вне форума  
Непрочитано 28.07.2011, 14:09  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Индикация явно не динамика. Вывод через сдвиговые регистры с зящелкой на выходе. Да и код конечно... особенно это:
Код:
while (SUM ›=100)
{
tens++;
SUM -=100;
};
while (SUM ›= 10)
{
one++;
SUM -= 10;
fractions=SUM;
};
делить на 100 и на десять методом вычитания это ЖЕСТЬ!! Вообще с СИ сеть операторы: "/"разделить, "%"взять остаток деления .
heady69 вне форума  
Непрочитано 28.07.2011, 14:12  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

heady69, много проще через BCD формат все сделать
Easyrider83 вне форума  
Непрочитано 28.07.2011, 14:16  
heady69
Прописка
 
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
heady69 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Сообщение от Easyrider83 Посмотреть сообщение
heady69, много проще через BCD формат все сделать
Согласен,тоже вариант не плохой.
heady69 вне форума  
Непрочитано 28.07.2011, 14:19  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

Я вообще стараюсь избегать деления на восьмибитных камнях. На 2,4,8.. делю сдвигом. В остальном лучше обходить стороной такую математику.
Easyrider83 вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Методика и способы воостановления данных diman_the_best Ремонт оргтехники 0 25.10.2010 00:20


Часовой пояс GMT +4, время: 18:04.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.