Jump to content

    

Инициализация 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);

}

Share this post


Link to post
Share on other sites

если получится , то отпишите, мне тоже интересно.

Share this post


Link to post
Share on other sites

Отпишусь,занимаюсь этим вопросом.В инете что то ничего не нашел

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this