Dimas19904 Опубликовано 26 февраля, 2007 Поделиться Опубликовано 26 февраля, 2007 (изменено) Всем привет. Я бы хотел здесь задавать свои глупые вопросы, а кому не сложно то пожалуйста помоите мне. МК я использую ATmega8 и другие из этой серии. Язык исключительно си. Все это мне надо не для курсовых. Мой вопрос: Мне надо программу которая могла бы передавать и принимать через USART. В интернете ничего подходящего я не смог найти. Если у кого есть выложите пожалуйста программу (можно ссылку) или отправьте на Radiomax08@mail.ru Изменено 26 февраля, 2007 пользователем Dimas19904 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
admin Опубликовано 26 февраля, 2007 Поделиться Опубликовано 26 февраля, 2007 Читаем правила форума. Пункт II.1 0 VK | Дзен | Telegram | OK Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
URY Опубликовано 27 февраля, 2007 Поделиться Опубликовано 27 февраля, 2007 Источник для совсем ленивых http://forum.cxem.net/ 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Dimas19904 Опубликовано 28 февраля, 2007 Автор Поделиться Опубликовано 28 февраля, 2007 Источник для совсем ленивых http://forum.cxem.net/ Этим курсом я пользуюсь давненько, просто не мог разобраться с регистрами USART т.к. они у мк AT90 и ATmega (что касается USART ) отличаются. Вчера я наконец то разобрался с регистрами USART у мк ATmega и написал свою программу, которая передает символы через USART на пк. Пробовал пока-что на протеусе, на железе пока не могу т.к. нет деталей. Но это не главное. Вот моя программа: #include <mega8.h> #include <stdio.h> #include <delay.h> char i; void main(void) { i=123; delay_ms(1000); while(1){ UCSRB=0x00; UBRRL=0x19; UCSRB=0x08; printf("Test\n"); printf("i= ",i); delay_ms(1000); } } Но в ней как я понимаю после вывода на терминал слова "Test", курсор должен переходить на новую строку, но этого не происходит. И еще как можно вывести значение некой переменной (в данной программе это переменная "i") на терминал(пк)? не могу понять . Помогите кто может Заранее благодарен . 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IGRISE Опубликовано 28 февраля, 2007 Поделиться Опубликовано 28 февраля, 2007 А ты хотябы пробовал help по CodeVisionAVR почитать....??? А, ...??? Ну скажем например про форматированый вывод...??? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 28 февраля, 2007 Автор Поделиться Опубликовано 28 февраля, 2007 А ты хотябы пробовал help по CodeVisionAVR почитать....??? А, ...??? Ну скажем например про форматированый вывод...??? Что-то я там ничего не нашел?? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 3 марта, 2007 Автор Поделиться Опубликовано 3 марта, 2007 У кого нибудь есть идеи связанные с переносом 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IGRISE Опубликовано 3 марта, 2007 Поделиться Опубликовано 3 марта, 2007 Плохо ищешь... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 3 марта, 2007 Автор Поделиться Опубликовано 3 марта, 2007 (изменено) Похоже протеус гонит при симуляции... Пробовал эту же программу на VMLAB там все нормально работает Изменено 3 марта, 2007 пользователем Dimas19904 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 7 марта, 2007 Автор Поделиться Опубликовано 7 марта, 2007 Решил разобраться с выводом информации на lcd дисплей. Мне прислали программу, которая выводит на дисплей сообщение "Hello World" Я сделал, что-бы выводимое сообщение "бегало" по дисплею. Кто-нибудь подскажите как сделать бегущую строку, т.е. мне нужно чтобы символы, которые заходят за пределы экрана появлялись в начале этой же строки и так бесконечно. Вот мой код: #include <mega8.h> #include <delay.h> #asm .equ __lcd_port=0x12;PORTD #endasm // include the LCD driver routines #include <lcd.h> void main(void) { int i =0; lcd_init(20); while (1) { // задержка 300млс delay_ms(300); lcd_clear(); i++; if (i > 9) { i =0; } lcd_putsf(" "); // Стирание предыдушей записи lcd_gotoxy( i,0); lcd_putsf("HELLO WORLD"); } } Индикатор я использую на основе чипа HD44780 20x2 Заранее благодарен 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 8 марта, 2007 Автор Поделиться Опубликовано 8 марта, 2007 Неужели никто неподскажет как сделать бегущую строку на LCD дисплеи??? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 8 марта, 2007 Поделиться Опубликовано 8 марта, 2007 по идее смысл такой... сдвигаем влево на 1 символ сиволы в строке запомнив первый дописываемв строку первый и выводимзадержка снова сдвиг и вывод.... как это на сях сделать я щас не придумаю ... думай разбирайся как в си сделать сдвиг символа в троке ... 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 10 марта, 2007 Автор Поделиться Опубликовано 10 марта, 2007 по идее смысл такой... сдвигаем влево на 1 символ сиволы в строке запомнив первый дописываемв строку первый и выводимзадержка снова сдвиг и вывод.... как это на сях сделать я щас не придумаю ... думай разбирайся как в си сделать сдвиг символа в троке ... Что-то немогу понять, как ето все написать на си ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 14 марта, 2007 Автор Поделиться Опубликовано 14 марта, 2007 по идее смысл такой... сдвигаем влево на 1 символ сиволы в строке запомнив первый дописываемв строку первый и выводимзадержка снова сдвиг и вывод.... как это на сях сделать я щас не придумаю ... думай разбирайся как в си сделать сдвиг символа в троке ... Что-то немогу понять, как ето все написать на си ? Кто-нибудь подскажите как сделать бегущую строку? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
AndyBig Опубликовано 15 марта, 2007 Поделиться Опубликовано 15 марта, 2007 Пипец... Я понимаю - задают вопросы когда не могут найти источник необходимой информации. Но просить подумать за себя - меня это вводит в шок... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 17 марта, 2007 Автор Поделиться Опубликовано 17 марта, 2007 Пипец... Я понимаю - задают вопросы когда не могут найти источник необходимой информации. Но просить подумать за себя - меня это вводит в шок... Вообще то я занимаюсь изучением языка Си не так уж давно. по идее смысл такой... сдвигаем влево на 1 символ сиволы в строке запомнив первый дописываемв строку первый и выводимзадержка снова сдвиг и вывод.... как это на сях сделать я щас не придумаю ... думай разбирайся как в си сделать сдвиг символа в троке ... С lcd-дисплеями я начал работать не так уж давно. Программу которую я приводил выше - это моя первая программа, написаная для lcd-дисплея. Как сделать сдвиг в обычных цифрах(числах)- это легко, а вот как сделать это с символом - этого я пока никак немогу понять. Это и есть мой вопрос. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
AndyBig Опубликовано 17 марта, 2007 Поделиться Опубликовано 17 марта, 2007 Вообще то я занимаюсь изучением языка Си не так уж давно. Для ответа на твой вопрос не нужно знать каких-то я зыков программирования. Надо просто придумать сам алгоритм, типа "запоминаем первый символ, затем берем второй символ и помещаем его на место первого, потом третий на место второго и так до последнего, после чего на место последнего символа ставим запомненный первый". Вот тебе и все циклическое смещение строки на символ влево. Если и теперь не можешь переложить все это на Си - учите язык. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 17 марта, 2007 Автор Поделиться Опубликовано 17 марта, 2007 (изменено) Вообще то я занимаюсь изучением языка Си не так уж давно. Для ответа на твой вопрос не нужно знать каких-то я зыков программирования. Надо просто придумать сам алгоритм, типа "запоминаем первый символ, затем берем второй символ и помещаем его на место первого, потом третий на место второго и так до последнего, после чего на место последнего символа ставим запомненный первый". Вот тебе и все циклическое смещение строки на символ влево. Если и теперь не можешь переложить все это на Си - учите язык. запоминаем первый символ, затем берем второй символ и помещаем его на место первого, потом третий на место второго и так до последнего, после чего на место последнего символа ставим запомненный первый" Все это переложить на си я думаю смогу. Вопрос в другом КАКИМ СПОСОБОМ НА СИ МОЖНО РАСДЕЛИТЬ СЛОВА НА СИМВОЛЫ??? Собственно говоря мне это и непонятно?! Плизз кто-нибудь подскажите очень надо!!! Заранее благодарен. Изменено 17 марта, 2007 пользователем Dimas19904 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
YURGIN Опубликовано 17 марта, 2007 Поделиться Опубликовано 17 марта, 2007 (изменено) Вообще то я занимаюсь изучением языка Си не так уж давно. Для ответа на твой вопрос не нужно знать каких-то я зыков программирования. Надо просто придумать сам алгоритм, типа "запоминаем первый символ, затем берем второй символ и помещаем его на место первого, потом третий на место второго и так до последнего, после чего на место последнего символа ставим запомненный первый". Вот тебе и все циклическое смещение строки на символ влево. Если и теперь не можешь переложить все это на Си - учите язык. запоминаем первый символ, затем берем второй символ и помещаем его на место первого, потом третий на место второго и так до последнего, после чего на место последнего символа ставим запомненный первый" Все это переложить на си я думаю смогу. Вопрос в другом КАКИМ СПОСОБОМ НА СИ МОЖНО РАСДЕЛИТЬ СЛОВА НА СИМВОЛЫ??? Собственно говоря мне это и непонятно?! Плизз кто-нибудь подскажите очень надо!!! Заранее благодарен. ВОТ ТУТ ПОСМОТРИ, МОЖЕТ ЧТО НАЙДЕШ http://www.mikrocontroller.net/articles/AV...meines_zum_UART И ТУТ http://homepage.hispeed.ch/peterfleury/avr-software.html И ЭТО http://mayak-bit.narod.ru/rs485.html Изменено 17 марта, 2007 пользователем YURGIN 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
AndyBig Опубликовано 17 марта, 2007 Поделиться Опубликовано 17 марта, 2007 Обычно возникают противоположные вопросы - как набор символов строки разбить на слова ) Это же самые основы Си, почему бы не почитать любой самоучитель по языку, коих валом и в бумажном и в электронном виде? Раздел "Строки"... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
retcom Опубликовано 23 марта, 2007 Поделиться Опубликовано 23 марта, 2007 Вот тебе разбиение на чистом С++, переложи на МК: #include<iostream.h> int main() { char *a = "my string"; char b[9]; for(int i=0; i<9; i++) { b[i]=a[i]; cout<<b[i]<<endl; } return 0; } Короче, когда освоишь дискретку, поймешь, какая ерунда тот код, который ты не мог сделать сам. Совет: Существуют задачи. Зборники задач по С или С++. Скачай в инете. И делай. Сквозь лень, непонятность и слезы (даже стихами уже заговорил). Все через это проходят. Терпение и труд все перетрут. Главное не язык, а машинная логика. Выучить ее невозможно. Она только нарабатывается. Практикой. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 14 апреля, 2007 Автор Поделиться Опубликовано 14 апреля, 2007 Доброго времени суток всем!!! Написал программу термометра с использованием датчика DS18B20 для вывода значения температуры использовал динамическую индикацию Вот собственно и мой код: #include <mega8.h> #include <ds1820.h> #include <1wire.h> #include <math.h> #asm .equ __w1_port=0x15;PORTC .equ __w1_bit=2 #endasm flash unsigned char ind[10]={0b10111011,0b10000010,0b01011011,0b11001011,0b11100010, 0b11101001,0b11111001,0b10000011,0b11111011,0b11101011}; unsigned char indt[6]={0,0,0,0,0,0},rom_code[8][9]; unsigned long number; unsigned int n,k,i,result,devices,u,temp; //************************************************************************************* void d_ind(void) { //Динамическая индикация for(i=0;i<=5;i++) { indt[i]=number%10; number/=10; } for (i=0;i<=5;i++) { n=indt[i]; PORTD=~ind[n]; switch(i) { case 0: result=2; break; case 1: result=4; break; case 2: result=8; break; case 3: result=16; break; case 4: result=32; break; case 5: result=1;break; } PORTB=result; k=0; while(k<800)k++; PORTD=0xfb; PORTB=0x00; } //for } //************************************************************************************** void main(void) { DDRD=0xfb; DDRB=0xff; devices=w1_search(0xf0,rom_code); if (devices) { while (1){ temp=ds1820_temperature_10(&rom_code[0,0]); number=temp; d_ind(); } } else while (1){ number=123456; d_ind();} } //main После прошивки мк индикаторы моргают при этом отображая температуру. кварц я использую на 4мГц Кто-нибудь подскажите как это устранить Заранее спасибо 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 16 апреля, 2007 Автор Поделиться Опубликовано 16 апреля, 2007 Куда все пропали?? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimas19904 Опубликовано 21 мая, 2007 Автор Поделиться Опубликовано 21 мая, 2007 Доброго времени суток всем. Вот переделал свою программу термометра на lcd - дисплей. Мне надо так чтобы при температуре равной 0`C на дисплее отображалось не 0.0, а скажем так 000.00 т.е. как я понимаю отключить гашение незначащегося нуля. Вот мой код: #include <mega8.h> #include <delay.h> #include <stdio.h> #include <math.h> #asm .equ __lcd_port=0x12;PORTD #endasm #include <lcd.h> unsigned char lcd_buffer1[20],rom_code[8][9]; #asm .equ __w1_port=0x15;PORTC .equ __w1_bit=2 #endasm #include <1wire.h> #include <ds1820.h> void main(void){ unsigned long temp; lcd_init(20); w1_search(0xf0,rom_code); while (1){ temp=ds1820_temperature_10(&rom_code[0,0]); lcd_clear(); sprintf(lcd_buffer1,"t= %i.%i\xdfC\x7e",temp/100,abs(temp%100)); lcd_gotoxy(1,0); lcd_puts(lcd_buffer1); } } Заранее благодарен. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Duhas Опубликовано 21 мая, 2007 Поделиться Опубликовано 21 мая, 2007 по идее можно покопавшись с форматированным выводом все сделать.. там насколько я помню можно указать колво знаков и до и после запятой... ищи в книжкаф по си, мне щас даже посмотреть некуда дома ремонт 0 «Как сердцу выразить себя? … Мысль изреченная есть ложь!» Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.