роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  


 Страниц (1): [1]   

> Описание: Языки программирования
PupaJr
Отправлено: 12 Апреля, 2018 - 15:01:02
Post Id


Рядовой


Сообщений всего: 2
Дата рег-ции: Апр. 2018  





Доброго дня.
HT PICC18 9.83, MPLAB8.87, PIC18F25K22.
Для вывода изображений на экран LCD используется стандартная процедура перебора колонок и строк 64х64. В соответствии с этим созданы 2хмерные массивы изображений со своими названиями но одинакового размера - точно под экран LCD.
При изменении ситуации надо выдать ту или иную картинку на экран.
В идеале так:
CODE:

Const char Ekran1 [64][64]
{ {0x00,........0x63} // 1 строка
.....
{0x00,........} // 64 cтрока
};
Const char Ekran2 [64][64]
{ {0x00,........0x63} // 1 строка битовых данных
.....
{0x00,........} // 64 cтрока
};
WriteLCD(Ekran1); // выдали первый экран
DelaySec(3); // пауза
WriteLCD(Ekran2); // выдали второй экран
DelaySec(3);
....
....
....

Процедура вывода:
CODE:

for(p=0; p<8; p++) //Цикл по всем 8-ми страницам индикатора
{
WriteCode6464(p|0xB8);//Установка текущей страницы
WriteCode6464(0x40);//Установка текущего адреса для записи данных в 0
for(c=0; c<64; c++) //Цикл вывода данных
{
WriteData6464(Ekran1[p][c]);//Вывод очередного байта в индикатор
};
};

Как можно это сделать? Понимаю что через указатели - но не соображу... Грустный
 
 Top
Predator Супермодератор
Отправлено: 12 Апреля, 2018 - 16:14:59
Post Id


Супермодератор


Сообщений всего: 1115
Дата рег-ции: Июль 2012  





как-то так
CODE:

char* pmass;
pmass=&Ekran1

WriteLCD(pmass);


а вы уверены, что хотите отдать 32k памяти под прорисовку 8-ми экранов?
 
 Top
PupaJr
Отправлено: 12 Апреля, 2018 - 16:28:12
Post Id


Рядовой


Сообщений всего: 2
Дата рег-ции: Апр. 2018  





Спасибо.
Я получу указатель, передам его, а как принять его ??
и
CODE:
pmass=&Ekran1
без указания размерности???
Как в процедуре
CODE:
WriteLCD

мне брать данные 2х мерные с указателя? - последовательно перечисляя их?
64х64 это биты Улыбка, ну и не важно на данный момент.
У меня есть на плате место под внешнюю епромку Улыбка
 
 Top
Predator Супермодератор
Отправлено: 12 Апреля, 2018 - 16:33:23
Post Id


Супермодератор


Сообщений всего: 1115
Дата рег-ции: Июль 2012  





CODE:

char Ekran1 [64][64]

это байты
дальше в переменной pmass будет адрес первого элемента размером char (объявлено char* pmass)

CODE:

void WriteLCD( char* adr00)
{
char byte00, byte 01;
adr01=adr00+1;
byte00=*adr00;
byte01=*adr01;
}
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown