"Язык Си для МК" прочитать и сделать как там написано.Stalker46 писал(а):1. а как сделать так, чтобы сразу все зажглись?
С чего начать программировать микроконтроллеры?
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
- Реклама
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Ну с этого там страница начинается !Stalker46 писал(а):Хорошо... я читаю, но этого еще не дошел...
до чегод вы дошли ? До заголовка чтоль.
А если они будут загораться поочереди, с тактовой частотой, это вас не устроит?:shock:Stalker46 писал(а):1. а как сделать так, чтобы сразу все зажглись?
Для этого и мега 8 подойдёт.2. У меня есть матрица светодиодная 8х8. Всего получается 64 светодиода. для этого подойдет МК Мега 16.
А зачем подключать каждый светодиод отдельно?:shock: Существует динамическая индикация (Вот тут можно немного почитать, как это сделать: http://radiokot.ru/articles/21/ . Внимательно посмотри схему, как это подключается). Для этого вполне можно задействовать примерно 16 - 18 выводов на все светодиоды.А у 16 Меги все порты уже забиты на светодиоды.
Теоретически можно, но как это на практике получится, хз. То, что подсоединино к выводу (когда он в режиме выхода), может шунтировать вывод, когда он в режиме входа.(мне толком не сказали правильный ответ, можно ли перенастроить в процессе написания программы, назначения портов...)
Сейчас попробовал, получилось.
А оставшиеся 6 выводов дисплея для чего нужны?
Графические дисплеи то-же так подключаются? И то-же используется только 10 выводов?
- Реклама
Подскажите такую штуку:
Нужно вывести на LCD значение переменной x.
Например:
int x;
x=1;
lcd_gotoxy(0,0);
lcd_putsf("%d", x); // Прочитал, что для того, чтобы вывести значение переменной, нужна команда %d
Но на последней строке получается ошибка, и пишет, что типа очень много аргументов в функции call...
А как нужно?
Нужно вывести на LCD значение переменной x.
Например:
int x;
x=1;
lcd_gotoxy(0,0);
lcd_putsf("%d", x); // Прочитал, что для того, чтобы вывести значение переменной, нужна команда %d
Но на последней строке получается ошибка, и пишет, что типа очень много аргументов в функции call...
А как нужно?
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Отлично !SeregaT писал(а):Сейчас попробовал, получилось.
Они разные. Некоторые вот так:SeregaT писал(а):Графические дисплеи то-же так подключаются? И то-же используется только 10 выводов?
http://kazus.ru/forum/topic_10496-0-asc-40.html
Для других больше проводников надо.
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Да прям как там и написано:SeregaT писал(а): lcd_putsf("%d", x);
А как нужно?
Смотрите:
Примеры вывода различных чисел и строк и преобразование чисел в строки для вывода на USART и на LCD, в том числе и чисел с плавающей точкой - float, есть в Архив с проектами CVAVR и VMLAB
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
Вот Директива
#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; //
}
)
это как бы фрагмент программы.
В поле кода написал А, и ничего не вышло. Эта директива же заменяет некоторые единицы языка Си на идентификаторы.
В данном случае идентификатор у меня А. Что нетак?
#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; //
}
)
это как бы фрагмент программы.
В поле кода написал А, и ничего не вышло. Эта директива же заменяет некоторые единицы языка Си на идентификаторы.
В данном случае идентификатор у меня А. Что нетак?
Не умеешь - не берись, но не взявшись не научишься...
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
посмотрите как дефайнить в "Язык Си для МК" или в примерах CVAVR
в Help
в Help
Что-то не могу найти того, что мне надо (по поводу вывода переменной).ikarab писал(а): Смотрите:Примеры вывода различных чисел и строк и преобразование чисел в строки для вывода на USART и на LCD, в том числе и чисел с плавающей точкой - float, есть в Архив с проектами CVAVR и VMLAB
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
сделал также, но ни получается.
он выдает ошибку на следующую строку.
Вот как я делаю:
#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; //
но компил. выдает ошибку
он выдает ошибку на следующую строку.
Вот как я делаю:
#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; //
но компил. выдает ошибку
Не умеешь - не берись, но не взявшись не научишься...
- Сообщения: 828
- Зарегистрирован: Пн мар 16, 2009 21:40:57
Подумайте - какого размера ваша переменная. Сколько в ней символов.SeregaT писал(а):не могу найти того, что мне надо (по поводу вывода переменной).
Ну например 1 символ
А что такое USART? Надо ли мне это для работы с LCD?
P.S. Всёравно никак не могу значение переменной вывести. Всегда выдаёт ошибку: Error: F:\AVR\AVR-projects\CVA\LCD2\LCD2.c(131): too many arguments in function call
А что такое USART? Надо ли мне это для работы с LCD?
P.S. Всёравно никак не могу значение переменной вывести. Всегда выдаёт ошибку: Error: F:\AVR\AVR-projects\CVA\LCD2\LCD2.c(131): too many arguments in function call
Вот примерный код:
Пожалуйста, приведите пример, как вывести значение переменной b на LCD? (в моём примере ошибка: too many arguments in function call )#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);
};
}
voltage=read_adc(0)
sprintf(lcd_buffer,"U=%i.%01dV", voltage/10, voltage%10);
lcd_clear();
lcd_puts(lcd_buffer);
это из одного из моих первых проектов
, по поводу что можно по другому (меньше объем кода) не критикуйте, знаю. зато так понятно новичку
sprintf(lcd_buffer,"U=%i.%01dV", voltage/10, voltage%10);
lcd_clear();
lcd_puts(lcd_buffer);
это из одного из моих первых проектов
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
в каком смысле назначить?
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Да просто пишет ошибку: Error: c(45): undefined symbol 'sprintf'
И на lcd_buffer то-же ругается: Error: c(47): undefined symbol 'lcd_buffer'
И на lcd_buffer то-же ругается: Error: c(47): undefined symbol 'lcd_buffer'
Код: Выделить всё
#include <lcd> абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны


