Перейти к содержанию
    

Инициализация LCD HDM32GS12Y-3 proteus

В программе Proteus есть LCD монитор HDM32GS12Y-3,ни как не могу его инициализировать.Использую CodeVision мега 32.То есть хотелось бы написать программу для графического LCD 122x32,но ни как не получается.Не могу понять инициализировался LCD или нет.Хотелось бы нарисовать точку в определенном месте,но никак не могу.

LCD_CONTROL_DDR=0xFF;// óñòàíàâëèâàåì PORTA â âûõîäû

LCD_DATA_DDR=0xFF; // óñòàíàâëèâàåì PORTC â âûõîäû

SetBit(LCD_CONTROL_PORT, E);//Íà÷àëüíîå çíà÷åíèå ñèãíàëà èíäèêàòîðó

ClrBit(LCD_CONTROL_PORT, RES);// âûâîä RES â ñîñòîÿíèè ëîãè÷åñêîãî “0”

delay_us(20);

SetBit(LCD_CONTROL_PORT, RES);// óñòàíàâëèâàåì íà RES = 1;

delay_ms(2);

SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1

ClrBit(LCD_CONTROL_PORT, E2);

WriteCode(0xE2);//Reset

ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2

SetBit(LCD_CONTROL_PORT, E2);

WriteCode(0xE2);//Reset

 

 

SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1

ClrBit(LCD_CONTROL_PORT, E2);

WriteCode(0xEE);//ReadModifyWrite off

ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2

SetBit(LCD_CONTROL_PORT, E2);

WriteCode(0xEE);//ReadModifyWrite off

 

 

SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1

ClrBit(LCD_CONTROL_PORT, E2);

WriteCode(0xA4);//Âêëþ÷èòü îáû÷íûé ðåæèì

ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2

SetBit(LCD_CONTROL_PORT, E2);

WriteCode(0xA4);//Âêëþ÷èòü îáû÷íûé ðåæèì

 

 

SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1

ClrBit(LCD_CONTROL_PORT, E2);

WriteCode(0xA9);//Âêëþ÷èòü îáû÷íûé ðåæèì

ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2

SetBit(LCD_CONTROL_PORT, E2);

WriteCode(0xA9);//Âêëþ÷èòü îáû÷íûé ðåæèì

 

 

SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1

ClrBit(LCD_CONTROL_PORT, E2);

WriteCode(0xC0);//Âåðõíþþ ñòðîêó íà 0

ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2

SetBit(LCD_CONTROL_PORT, E2);

WriteCode(0xC0);//Âåðõíþþ ñòðîêó íà 0

 

 

SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1

ClrBit(LCD_CONTROL_PORT, E2);

WriteCode(0xA1);//Invert scan RAM

ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2

SetBit(LCD_CONTROL_PORT, E2);

WriteCode(0xA0);//NonInvert scan RAM

 

 

SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1

ClrBit(LCD_CONTROL_PORT, E2);

WriteCode(0xAF);//Display on

ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2

SetBit(LCD_CONTROL_PORT, E2);

WriteCode(0xAF);//Display on

 

 

и точку рисую вот так но ничего не получается,либо каких то непонятных 2 точки

*Ôóíêöèÿ êîòîðàÿ ðåñóåò íà ýêðàíå 1 ïèêñåë*/

void LCD_PUT_PIXEL(byte x, byte y){

//Îáüÿâëÿåì ïåðåìåííûå

byte bite;

byte page;

byte data, data2;

//Âûõîä åñëè òî÷êà ëåæèò âíå ýêðàíà

if((x>MAX_X)|(y>MAX_Y)) return;

//Âûáèðàåì êðèñòàëë

if(x>=61){

ClrBit(LCD_CONTROL_PORT, E1);

SetBit(LCD_CONTROL_PORT, E2);

x=x-61;

}

else{

ClrBit(LCD_CONTROL_PORT, E2);

SetBit(LCD_CONTROL_PORT, E1);

}

//page-íîìåð ñòðàíèöû

page=y/4;

//bite-Íîìåð áàéòà êîòîðûé íàì ïðåäñòîèò âûâåñòè

bite=y%4;

//Óñòàíàâëèâàåì ñòðàíèöó è àäðåññ

LCD_SET_PAGE(page);

LCD_SET_ADDRESS(x);

//×èòàåì áàéò ñ LCD(2 öèêëà ò.ê. â ïåðâîì ìóñîð)

data=ReadData();

data=ReadData();

//Â çàâèñèìîñòè îò ìåòîäà âûâîäà âûâîäèì íàø ïèêñåë.

// Àäðåññ ñòðàíèöû íå ìåíÿëñÿ, ïîýòîìó åãî íå óñòàíàâëèâàåì

switch(met){

case MET_OR : { data=data|(1<<bite); break;}

case MET_XOR : {data=data^(1<<bite); break;}

}

LCD_SET_ADDRESS(x);

WriteData(data);

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...