Jump to content
admin

Видеокурс По Avr-Микроконтроллерам Для Начинающих

Recommended Posts

попробуйте для начлаа без черточек! идите от простого к сложному!

Share this post


Link to post
Share on other sites

мигающий четырёхугольник я сделал но не как не пойму как его сделать чтоб он рос с низу в верх а потом в низ

Share this post


Link to post
Share on other sites

точка отсчета у него левый нижний угол. меняя координату етой точки меняем положение фигуры

пример

for (int i=0;i<5;i++)
{
Lcd_rect(10, 20+i, 5, 5, PIXEL_ON);
}

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

попробовал ваш вариант и ничего не получилось буква( i )только добавляло пиксели к квадрату

но я нашёл свою ошибку не там поставил вот такую скобку { и всё заработало

спасибо за подсказку

Share this post


Link to post
Share on other sites

Dimka_ibn_Mishka Что то у меня кирилица не работает

У меня такаеже фигня пробовал протеус 7.10 ; 7.7

пробовал русифициров и не русифицированную

обновлял библиотеку с русскими символами в протеусе не помогло

пробовал другие проекты с другими дисплеями РУССКИХ БУКВ НЕТ!

Вопрос остается открытым из-за чего такая фигня?

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

Вопрос справедлив. Необходимо найти обще у вас и первого кто пожаловался!

Учитывая что бибилиотеки попробовали и проверили перед тем как выложить несколько человек и у всех все работает - нужно искать ошибку у вас на пк.

Давайте начнем еще раз.

У кого ошибка с русским текстом - предоставьте следующие данные

OS:

Локаль/

Версия протеуса

Версия студии

кроме того в командной строке выполните

echo ТЕСТ

ну и до кучи попробуйте поменять в реестре ключи

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\

С

1250 REG_SZ c_1250.nls

1252 REG_SZ c_1252.nls

1253 REG_SZ c_1253.nls

НА

1250 REG_SZ c_1251.nls

1252 REG_SZ c_1251.nls

1253 REG_SZ c_1251.nls

Перезагрузите ПК и проверьте.

Edited by kobraz

Share this post


Link to post
Share on other sites

простите не очень силен в компьютерах но кажется вы имели в виду вот это

а что касается реестра то ключей я там таких не нашел в папке HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\ лежит еще несколько папок

post-180832-0-31064200-1398694007.jpg

post-180832-0-25502600-1398694020.jpg

Share this post


Link to post
Share on other sites

Посмотрите в CodePage

ОС: какая операционка?

Но судя по опыту у обоих авторов с проблемами кодировки стоит ХР - при чем не чистая, а какая-то сборка...

Пробуйте таки через реестр. Других идей пока нет.

Share this post


Link to post
Share on other sites

да нет у меня стоит 7 то что сборка не отрицаю ставил win7 максимальная а после обновления 1,5 года назад стала эта

((спасибо с нами возитесь другой бы послал давно))

Edited by ГИП_ПОТАМ

Share this post


Link to post
Share on other sites

Так ребят!

Я понял - тут мы щас разведем сады гоморы... давайте тему не будем забивать - кто не стремный ко мне в приват с тимвьввером - подключусь посмотрим. О решении отпишем!

Share this post


Link to post
Share on other sites

вот что у меня получилось

//Atmega8A - используемый микроконтроллер
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
//объявим  библиотеку
#include "n5110.h"
void presets(){
Lcd_init();
Lcd_clear();
Lcd_update();

}
int main(void)
{  
presets();
while(1)
   for (int i=0;i<27;i++)

  { Lcd_prints( 2, 1, FONT_1X, (unsigned char*)PSTR("40") );
   Lcd_prints( 2, 2, FONT_1X, (unsigned char*)PSTR("30") );
   Lcd_prints( 2, 3, FONT_1X, (unsigned char*)PSTR("20") );
   Lcd_prints( 2, 4, FONT_1X, (unsigned char*)PSTR("10") );
   Lcd_line( 29,  45,  29, 15, PIXEL_ON );
 Lcd_line( 35,  45,  35, 15, PIXEL_ON );
 Lcd_line( 35,  14,  25, 14, PIXEL_ON );
 Lcd_line( 29,  22,  25, 22, PIXEL_ON );
 Lcd_line( 29,  30,  25, 30, PIXEL_ON );
 Lcd_line( 29,  38,  25, 38, PIXEL_ON );

 Lcd_rect(30, 45, 5+i, 5, PIXEL_ON);
  _delay_ms(200);
  Lcd_update();


 }
}

теперь примерно правильно ?

и как зациклить подъём столбика ?

Share this post


Link to post
Share on other sites

Ну насколько я понял вы хотите что бы по кругу бегал уровень?

Если так то в самом простом для понимания случае можно сделать вот так

Хотя конечно есть множество более изящных решений

//Atmega8A - используемый микроконтроллер
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
//объявим  библиотеку
#include "n5110.h"
void presets(){
Lcd_init();
Lcd_clear();
Lcd_update();
}
int main(void)
{
presets();
while(1)
 {
  Lcd_clear();
  Lcd_prints( 2, 1, FONT_1X, (unsigned char*)PSTR("40") );
  Lcd_prints( 2, 2, FONT_1X, (unsigned char*)PSTR("30") );
  Lcd_prints( 2, 3, FONT_1X, (unsigned char*)PSTR("20") );
  Lcd_prints( 2, 4, FONT_1X, (unsigned char*)PSTR("10") );
  Lcd_line( 29,  45,  29, 15, PIXEL_ON );
  Lcd_line( 35,  45,  35, 15, PIXEL_ON );
  Lcd_line( 35,  14,  25, 14, PIXEL_ON );
  Lcd_line( 29,  22,  25, 22, PIXEL_ON );
  Lcd_line( 29,  30,  25, 30, PIXEL_ON );
  Lcd_line( 29,  38,  25, 38, PIXEL_ON );
  for (int i=0;i<27;i++)
   {
   Lcd_rect(30, 45, 5+i, 5, PIXEL_ON);
   _delay_ms(200);
   Lcd_update();
   }
  Lcd_update();
 }

}

Share this post


Link to post
Share on other sites

можно сказать что так

но я пытался сделать что как подымается и в два раза медленней опускается

пака над этим работаю но без успешно

Share this post


Link to post
Share on other sites

после цикла который рисует прямоугольники - добавьте еще один но уже в обратную сторону и пихел_офф

Share this post


Link to post
Share on other sites

вот так примерно ?

//Atmega8A - используемый микроконтроллер
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
//объявим  библиотеку
#include "n5110.h"
void presets(){
Lcd_init();
Lcd_clear();
Lcd_update();

}
int main(void)
{  
presets();
while(1)


  { Lcd_clear();
   Lcd_prints( 2, 1, FONT_1X, (unsigned char*)PSTR("40") );
   Lcd_prints( 2, 2, FONT_1X, (unsigned char*)PSTR("30") );
   Lcd_prints( 2, 3, FONT_1X, (unsigned char*)PSTR("20") );
   Lcd_prints( 2, 4, FONT_1X, (unsigned char*)PSTR("10") );
   Lcd_line( 29,  45,  29, 15, PIXEL_ON );
 Lcd_line( 35,  45,  35, 15, PIXEL_ON );
 Lcd_line( 35,  14,  25, 14, PIXEL_ON );
 Lcd_line( 29,  22,  25, 22, PIXEL_ON );
 Lcd_line( 29,  30,  25, 30, PIXEL_ON );
 Lcd_line( 29,  38,  25, 38, PIXEL_ON );
 for (int i=0;i<27;i++)
 {Lcd_rect(30, 45, 5+i, 5, PIXEL_ON);
  _delay_ms(200);
  Lcd_rect(30, 45, 30-i, 5, PIXEL_OFF);
  _delay_ms(200);
  Lcd_update();
  }


  Lcd_update();


}

}

но что то не работает

а когда в скобках пишу это задание то ошибку при компиляции пишет

с минусом I писать можно ??

Share this post


Link to post
Share on other sites

вы неправильно оперируете циклами.

даю подсказку

{Lcd_rect(30, 45, 5+i, 5, PIXEL_ON);//отправили в буфер нарисовать точку

_delay_ms(200);//подождали

Lcd_rect(30, 45, 30-i, 5, PIXEL_OFF); // отпраили в буфер - удалить точку

_delay_ms(200); //подождали

Lcd_update();//вывели то что получилось на екран

}

вам нужно два цикла первый отисовал - второй очистил/ первый нарастающий второй спадающий - и перестаньте угадывать! пробуйте думайте

Share this post


Link to post
Share on other sites

Если я правильно понял речь идет о дисплее 3310. Могу дать ссылку http://mcom.com.ua/t...ka?keyword=3310

А вообще лучше переходить на 1280, он еще дешевле и есть везде в продаже.

Edited by andryxa

Share this post


Link to post
Share on other sites

Разницы нет на каком учится, хоть на 6300. Принцип работы у всех одинаковый.

Share this post


Link to post
Share on other sites

согласен когда знаешь что делать то всегда кажется что это просто

я вот раньше вообще не занимался программирование

то есть чужие программы заливал в микрухи

но всегда хотелось узнать как это и попробовать самому

хотя я понимаю что с меня не получится хорошего программиста

этому надо было учится с 20 лет или того раньше

как говорится дорога ложка к обеду :)

но думаю и надеюсь что что то простенькое у меня получится

если хватит терпения учителя

Share this post


Link to post
Share on other sites

тут главное терпение ученика....

научиться можно чему угодно! Мне тоже не стать программистом. Я айтишник по професии а по документам повар кондитер! Немного програмлю на питоне! С - заставляет каждый раз сжимать зубы и хрустеть деснами. Но ето лутче чем крошить гранит науки пытаясь в 30 лет освоить асамблер. Ну и все зависит от того что вы хотите видеть в результате! Просто в таком возрасте учится быстро не получается не потому что старый - или поздно а потому что как правило уже есть работа жена дети собака - и на учебу остается только время из личного отдыха... как то так :)

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
×
×
  • Create New...