hd44780(wh1602b) AVR Си, проблема схожу с ума

Обсуждаем контроллеры компании Atmel.
EmDmAl
Открыл глаза
Сообщения: 51
Зарегистрирован: Чт мар 22, 2012 09:14:18
Откуда: Липецк

Re: hd44780(wh1602b) AVR Си, проблема схожу с ума

Сообщение EmDmAl »

uk8amk писал(а):Может я чего не понял, но зачем строку разбивать на двухмерный массив?
myString[0] - начало первого сообщения
myString[0+40] - второе сообщение и т.д.
Обращайтесь сразу к исходной строке и ничего не мудрите.

Если обращаюсь так, то мне выводит почему то отдельные символы из алфавита. Не знаю может все дело в драйвере, хотя если явно передать строку до 40 символов(чтобы уместились на одну строку), то все проходит на ура.
Моя же задача научится выводить длинные сообщения в одной строке до 255 символов.
Можно конечно сделать скажем 4 или 5 массивов по 40 символов и потом их заганять после окончания предыдущего. Но я хотел это производить с одной строкой.
Пробывал заносить в массив (myArraq) первые 40 символов, а потом пинать на lcd, только почему-то он передает в буфер всю строку(размер myArraq становится 100 символов).

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

...
        unsigned char myString[] = "Длина этого сообщение 100 символов, для тестирования вывода большой строки более 40 символов!!!!!!!";
   unsigned char i = 0;
   char myArraq[40];
   while(i < 40){
      myArraq[i] = myString[i];//Сюда заносится именно первые 40 символов
      i++;
   }
lcdPuts(myArraq);
   while(1)
    {
      _delay_ms(600);
      lcdDisplayScroll(1, LCD_SCROLL_LEFT);
   }
    }

...я же хотел просто загонять длинную строку, а МК в программе сам ее разбивал по алгоритму :)
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: hd44780(wh1602b) AVR Си, проблема схожу с ума

Сообщение uk8amk »

Для функций вывода на экран обычно в конце требуется символ окончания строки 0x00. Когда вы объявляете строку в кавычках то он добавляется автоматически. В вашей программе копирования массивов терминатора строки я не наблюдаю. Либо используйте посимвольный вывод типа lcd_putcar().
Ответить

Вернуться в «AVR»