[an error occurred while processing this directive]
Тем кто работал со знакосинтезирующими ЖКИ 20х4 и 40х2 на KS0066. Вопрос - ответ
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Al Volovich 25 января 2005 г. 12:24

При работе вылезла проблема такая: когда пытаюсь установить курсор в позицию в нижнем правом углу, он этого не делает. То есть если адрес > 0x60, то он устанавливается по адресу 0х60. При этом если выводить целиком строку, то в те "недоступные" для установки курсора позиции символы выводятся нормально. Мыкался я мыкался, и нашел решение, мягко говоря, нетрадиционным способом: если нужно поставить курсор в позицию > 0x60, то я ставлю курсор в позицию 0х60, а потом сдвигами курсора перегоняю его куда мне надо. Сталкивался ли кто-нибудь с такой проблемой, и как ее решали?
Тексты функции установки курсора:
Та, которая работает по всем адресам не более 0х60 нормально, а после 0х60 не устанавливает курсор почему-то:


GotoXY(ubyte col, ubyte line) //перемещает курсор в указанную позицию 0,0 - левый верх
{
if(line&0x01)col+=0x40;
if(line&0x02)col+=LCDCol;

LCDRS=0;
LCDRW=0;
LCDEn=1;
OutPort=SetDDRAM|col;
LCDEn=0;
while(BusyLCD()==1);
}


Та, которая работает везде, но сделано через зад:

GotoXY(ubyte col, ubyte line) //перемещает курсор в указанную позицию 0,0 - левый верх
{
if(line&0x01)col+=0x40;
if(line&0x02)col+=LCDCol;
if(col>0x60){
line = col-0x60;
col = 0x60;
}else line = 0xFF;//Признак того, что коррекцию правого нижнего угла делать не нужно

LCDRS=0;
LCDRW=0;
LCDEn=1;
OutPort=SetDDRAM|col;
LCDEn=0;
while(BusyLCD()==1);

if(line==0xFF)return;//если целевая позиция <60 - выход
while(line!=0){//сдвигаем курсор до нужной позиции
InstructionLCD(CursorShift|Shift_RL);
while(BusyLCD()==1);
line--;
}
}


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru