реклама на сайте
подробности

 
 
> Инициализация LCD HDM32GS12Y-3 proteus
grek81
сообщение Oct 2 2009, 15:45
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 8-01-09
Пользователь №: 43 036



В программе 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);
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016