Страница 35 из 115

Добавлено: Сб мар 28, 2009 18:06:44
ikarab
Stalker46 писал(а):1. а как сделать так, чтобы сразу все зажглись?
"Язык Си для МК" прочитать и сделать как там написано.

Добавлено: Сб мар 28, 2009 18:16:03
Arlleex
Хорошо... я читаю, но этого еще не дошел... :oops:

Добавлено: Сб мар 28, 2009 18:32:06
ikarab
Stalker46 писал(а):Хорошо... я читаю, но этого еще не дошел... :oops:
Ну с этого там страница начинается !

до чегод вы дошли ? До заголовка чтоль.

Добавлено: Сб мар 28, 2009 19:19:36
SeregaT
Stalker46 писал(а):1. а как сделать так, чтобы сразу все зажглись?
А если они будут загораться поочереди, с тактовой частотой, это вас не устроит?:shock:
2. У меня есть матрица светодиодная 8х8. Всего получается 64 светодиода. для этого подойдет МК Мега 16.
Для этого и мега 8 подойдёт.
А у 16 Меги все порты уже забиты на светодиоды.
А зачем подключать каждый светодиод отдельно?:shock: Существует динамическая индикация (Вот тут можно немного почитать, как это сделать: http://radiokot.ru/articles/21/ . Внимательно посмотри схему, как это подключается). Для этого вполне можно задействовать примерно 16 - 18 выводов на все светодиоды.
(мне толком не сказали правильный ответ, можно ли перенастроить в процессе написания программы, назначения портов...)
Теоретически можно, но как это на практике получится, хз. То, что подсоединино к выводу (когда он в режиме выхода), может шунтировать вывод, когда он в режиме входа.

Добавлено: Вс мар 29, 2009 07:44:32
SeregaT
Сейчас попробовал, получилось.
А оставшиеся 6 выводов дисплея для чего нужны?
Графические дисплеи то-же так подключаются? И то-же используется только 10 выводов?

Добавлено: Вс мар 29, 2009 13:24:36
SeregaT
Подскажите такую штуку:
Нужно вывести на LCD значение переменной x.
Например:
int x;
x=1;
lcd_gotoxy(0,0);
lcd_putsf("%d", x); // Прочитал, что для того, чтобы вывести значение переменной, нужна команда %d
Но на последней строке получается ошибка, и пишет, что типа очень много аргументов в функции call...
А как нужно?

Добавлено: Вс мар 29, 2009 13:36:06
ikarab
Отлично !
SeregaT писал(а):Графические дисплеи то-же так подключаются? И то-же используется только 10 выводов?
Они разные. Некоторые вот так:
http://kazus.ru/forum/topic_10496-0-asc-40.html
Для других больше проводников надо.

Добавлено: Вс мар 29, 2009 13:41:00
ikarab
SeregaT писал(а): lcd_putsf("%d", x);
А как нужно?
Да прям как там и написано:
Смотрите:
Примеры вывода различных чисел и строк и преобразование чисел в строки для вывода на USART и на LCD, в том числе и чисел с плавающей точкой - float, есть в Архив с проектами CVAVR и VMLAB

Добавлено: Вс мар 29, 2009 13:56:34
Arlleex
Вот Директива
#define
Я прописал, что
#define A (#define A (
{ while (PINC.0==0); //


PORTA.1=1; //
PORTA.2=1; //


while (PINC.1==0); //

PORTA.0=1; //
PORTA.1=1; //
PORTA.3=1; //
PORTA.4=1; //
PORTA.5=1; //
}
)

это как бы фрагмент программы.
В поле кода написал А, и ничего не вышло. Эта директива же заменяет некоторые единицы языка Си на идентификаторы.
В данном случае идентификатор у меня А. Что нетак?

Добавлено: Вс мар 29, 2009 14:08:36
ikarab
посмотрите как дефайнить в "Язык Си для МК" или в примерах CVAVR
в Help

Добавлено: Вс мар 29, 2009 15:02:10
SeregaT
ikarab писал(а): Смотрите:
Примеры вывода различных чисел и строк и преобразование чисел в строки для вывода на USART и на LCD, в том числе и чисел с плавающей точкой - float, есть в Архив с проектами CVAVR и VMLAB
Что-то не могу найти того, что мне надо (по поводу вывода переменной).

Добавлено: Вс мар 29, 2009 15:16:03
Arlleex
сделал также, но ни получается.
он выдает ошибку на следующую строку.

Вот как я делаю:

#define deystvie (PORTA.1=1; //
PORTA.2=1; //


while (PINC.1==0); //

PORTA.0=1; //
PORTA.1=1; //
PORTA.3=1; //
PORTA.4=1; //
PORTA.5=1; //)




в поле кода ввожу

deystvie; //
но компил. выдает ошибку

Добавлено: Вс мар 29, 2009 15:29:48
ikarab
SeregaT писал(а):не могу найти того, что мне надо (по поводу вывода переменной).
Подумайте - какого размера ваша переменная. Сколько в ней символов.

Добавлено: Вс мар 29, 2009 16:42:47
SeregaT
Ну например 1 символ
А что такое USART? Надо ли мне это для работы с LCD?
P.S. Всёравно никак не могу значение переменной вывести. Всегда выдаёт ошибку: Error: F:\AVR\AVR-projects\CVA\LCD2\LCD2.c(131): too many arguments in function call

Добавлено: Вс мар 29, 2009 19:35:54
SeregaT
Вот примерный код:
#include <mega16>
#include <delay>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd>

// Declare your global variables here

void main(void)
{
// LCD module initialization
lcd_init(8);

while (1)
{
int a, b;
a=4;
b=++a;
lcd_putsf("b = %d", b);
};
}
Пожалуйста, приведите пример, как вывести значение переменной b на LCD? (в моём примере ошибка: too many arguments in function call )

Добавлено: Вс мар 29, 2009 20:04:16
sema
voltage=read_adc(0)
sprintf(lcd_buffer,"U=%i.%01dV", voltage/10, voltage%10);
lcd_clear();
lcd_puts(lcd_buffer);

это из одного из моих первых проектов :), по поводу что можно по другому (меньше объем кода) не критикуйте, знаю. зато так понятно новичку

Добавлено: Вс мар 29, 2009 20:09:50
SeregaT
А как назначать этот sprintf?

Добавлено: Вс мар 29, 2009 20:15:02
sema
в каком смысле назначить?

Добавлено: Вс мар 29, 2009 20:17:40
SeregaT
Да просто пишет ошибку: Error: c(45): undefined symbol 'sprintf'
И на lcd_buffer то-же ругается: Error: c(47): undefined symbol 'lcd_buffer'

Добавлено: Вс мар 29, 2009 20:20:14
sema

Код: Выделить всё

#include <lcd>