Страница 2 из 2

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

Добавлено: Вт окт 16, 2012 06:06:07
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);
	}
    }
...я же хотел просто загонять длинную строку, а МК в программе сам ее разбивал по алгоритму :)

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

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