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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Способы вывода данных на семисегментный индикатор

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

Закладки
Опции темы

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

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

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

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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot