Форум myROBOT.ru » Свободное общение » Болталочка » По поводу статьи про индикаторы

Страниц (1): [1]
 

1. СКАЗОЧНИК - 12 Мая, 2010 - 14:19:33 - перейти к сообщению
Здраствуйте, модераторы... =)
А скорее всего, nest!
Я вот тут статейку нашел
http://myrobot.ru/wiki/index.php...y.7-segIndicator
Хотел уточнить (она не дописана) на каком языке программирования надо написать код??? Просто я в ассемблере не очень понимаю пока, а вот на Си могу. И картинки вставить, только без фотографий и на АТМега8.
Хотелось бы увидеть статью законченной, да и если можно приложить руку к развитию сайта.
2. nest - 12 Мая, 2010 - 15:12:14 - перейти к сообщению
это не я делал :)
3. -dead- - 12 Мая, 2010 - 15:14:50 - перейти к сообщению
Там же история есть - некто Vek её писал.
4. mihail - 12 Мая, 2010 - 16:34:00 - перейти к сообщению
Судя по всему, дописывать эту статью никто, кроме Вас, не собирается. Полагаю, многие скажут Вам спасибо за хорошую статью.
5. ОЛЕГ - 12 Мая, 2010 - 20:38:13 - перейти к сообщению
У меня есть вся программная часть на Си.
Раздраконивание двузначного числа на первый и второй знак и вывод их на индикатор по схеме, аналогичной предложенной в статье.
Если кто-то сможет разместить это в wiki (я сам не умею Улыбка ), то я пришлю.
6. Pashgan - 12 Мая, 2010 - 23:36:54 - перейти к сообщению
Внесу свои пять копеек
http://chipenable.ru/index.php/p...-indikacija.html
7. СКАЗОЧНИК - 13 Мая, 2010 - 09:21:15 - перейти к сообщению
С вики на этом сайте я уже разбирался... =) Это все равно, что HTML весь понять для разметки страниц....
Вот я и хотел статейку оформить в ДОК формате, а чтобы тот, кто понимает как в вики выкладывать отформатировал ее туда. Конечно, я могу и сам посидеть, просто времени маловато. =)
ОЛЕГ, а можно код выложить? Очень хочу посмотреть.
(Добавление)
Pashgan пишет:
Внесу свои пять копеек
http://chipenable.ru/index.php/p...-indikacija.html


А вот это интересная статейка. Спасибо. =)
(Добавление)
Кстати, и сайт интересный тоже. Как это я на него до сих пор не наткнулся... Лошара я, наверное... =) Смущение
8. ОЛЕГ - 13 Мая, 2010 - 13:21:36 - перейти к сообщению
Вот код, который я разрабатывал самостоятельно для своих нужд и который качует у меня из проекта в проект.
К порту D У меня подключены "перекладинки", к порту С- общий вывод, анод, по-моему.


CODE:

void num(unsigned char a) //ФУНКЦИЯ ВЫВОДА ЧИСЕЛ НА ИНДИКАТОР
{
PORTD = 0b01111111;
if (a == 0) {PORTD = 0b01000000;} // 0
if (a == 1) {PORTD = 0b01011110;} // 1
if (a == 2) {PORTD = 0b00100100;} // 2
if (a == 3) {PORTD = 0b00001100;} // 3
if (a == 4) {PORTD = 0b00011010;} // 4
if (a == 5) {PORTD = 0b00001001;} // 5
if (a == 6) {PORTD = 0b00000001;} // 6
if (a == 7) {PORTD = 0b01011100;} // 7
if (a == 8) {PORTD = 0b00000000;} // 8
if (a == 9) {PORTD = 0b00001000;} // 9
}
void breakdown(unsigned char c) //ФУНКЦИЯ ОПРЕДЕЛЕНИЯ ПЕРВОГО И ВТОРОГО ЗНАКОВ В ЧИСЛЕ
{
if (c < 10) first=0; //определение первой цифры двузначного числа
if ((c < 20)&&(c > 9)) first=1;
if ((c < 30)&&(c > 19)) first=2;
if ((c < 40)&&(c > 29)) first=3;
if ((c < 50)&&(c > 39)) first=4;
if ((c < 60)&&(c > 49)) first=5;
if ((c < 70)&&(c > 59)) first=6;
if ((c < 80)&&(c > 69)) first=7;
if ((c < 90)&&(c > 79)) first=8;
if ((c < 100)&&(c > 89)) first=9;
first=first*10; //определение второй цифры двузначного числа
second = c-first;
first=first/10;
}

void indicate(unsigned char x) //ФУНКЦИЯ ИНДИКАЦИИ ЗНАКОВ НА ИНДИКАТОРЕ
{
breakdown(x);
PORTC = 0b11101110;
num(first);
delay_ms(10);
PORTC = 0b11011110;
num(second);
delay_ms(10);
PORTC = 0b11001110;
}

void main(void) //ОСНОВНАЯ ФУНКЦИЯ
{

for (i = 0; i < 70; i++) //цикл индикации нашего числа
{
indicate(наше число от 00 до 99);
}

}


Цикл for (i = 0; i < 70; i++) специально сделан в основной функции, чтобы можно было вклинить что-нибудь еще, например, опрос кнопок.
9. -dead- - 13 Мая, 2010 - 13:30:18 - перейти к сообщению
МОжно упростить в коде, вместо:

if (c < 10) first=0; //определение первой цифры двузначного числа
if ((c < 20)&&(c > 9)) first=1;
if ((c < 30)&&(c > 19)) first=2;
if ((c < 40)&&(c > 29)) first=3;
if ((c < 50)&&(c > 39)) first=4;
if ((c < 60)&&(c > 49)) first=5;
if ((c < 70)&&(c > 59)) first=6;
if ((c < 80)&&(c > 69)) first=7;
if ((c < 90)&&(c > 79)) first=8;
if ((c < 100)&&(c > 89)) first=9;

написать:
first=0; //определение первой цифры двузначного числа
if (c > 9) first=1;
if (c > 19) first=2;
if (c > 29) first=3;
if (c > 39) first=4;
if (c > 49) first=5;
if (c > 59) first=6;
if (c > 69) first=7;
if (c > 79) first=8;
if (c > 89) first=9;
10. nest - 13 Мая, 2010 - 13:30:57 - перейти к сообщению

вот бы оформляли аккуратненько и клали в вику ... :)
11. -dead- - 13 Мая, 2010 - 13:32:44 - перейти к сообщению
Или вообще:
first=0;
while((first+1)*10<=c)first++;
(Добавление)
Еще наверное можно сделать так, раз все равно деление пользуется:

first=c/10;
second=c%10;

Вроде должно работать Улыбка))
12. mihail - 13 Мая, 2010 - 17:55:50 - перейти к сообщению
To СКАЗОЧНИК

Лучше, сохраните статью в .rtf

Если желающих больше нет, могу попробовать оформить статью в wiki.

Думаю все получится Улыбка
13. ОЛЕГ - 13 Мая, 2010 - 20:29:00 - перейти к сообщению
-dead- пишет:
МОжно упростить в коде, вместо

Спасибо, я не подумал. Улыбка