Jump to content

    
Sign in to follow this  
grek81

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

Recommended Posts

В программе 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);

}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this