[an error occurred while processing this directive]
Давно это было...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Al Volovich 18 января 2005 г. 13:25
В ответ на: to Al Volovich отправлено back 18 января 2005 г. 12:04

Помочь может:
1. Уменьшение длины шлейфа
2. Отделение в шлейфе линий данных от линий управления парой линий GND для уменьшения наводок с линий данных на линии управления
3. Можно попробовать пуллапные резисторы поставить НА СТОРОНЕ ЖКИ на линии управления 2-6кОм
Больше вроде ничего особо не помню про него
Процедуры работы с ним, может поможет:


void LCDInit(void) //инициализирует контроллер ЖКИ
{
SSCEN = 0; //отключаем SPI
LCDOn = 1; //отрубаем LCD
DLCDOn = 1; //порт - на выход
InitLCDPins();
LCDOn = 0; //включаем ЖКИ

/* while((ReadLCDStat()&0x03)==0); //устанавливаем начальный адрес текста
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x40);*/

while((ReadLCDStat()&0x03)==0); //устанавливаем адрес начала графики 0000
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x42);

/* while((ReadLCDStat()&0x03)==0); //устанавливаем область вывода текста
WriteLCDData(LCDWidth/8);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x41);*/

while((ReadLCDStat()&0x03)==0); //устанавливаем область вывода графики
WriteLCDData(LCDWidth/8);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x43);

/*while((ReadLCDStat()&0x03)==0); //устанавливаем смещение
WriteLCDData(0x02);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x22);*/

while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x80); //Режим

while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x98); //Включаем графику, выключаем текст

LCDOn = 1;

}

void InitLCDPins(void) //Инициализирует ноги для работы с LCD
{
LCD_RD = LCD_WR = LCD_CD = 1;
DLCD_RD = DLCD_WR = DLCD_CD = 1;
}

ubyte ReadLCDStat(void) //считывает и возвращает статус LCD
{
ubyte ttt;
LCD_CD = 1; //читаем в режиме команд
DP3 &= 0xFC03; //настраиваем шину данных на ввод
LCD_RD = 0;
ttt = (P3&0x03FC)>>2;
LCD_RD = 1;
return ttt;
}

void WriteLCDData(ubyte Data) //передает данные в LCD
{
LCD_CD = 0;
DP3 |= 0x03FC; //настраиваем шину на вывод
LCD_WR = 0;
P3 = (P3&0xFC00)|(Data << 2); //выставляем данные
LCD_WR = 1; //защелкиваем их
}

void WriteLCDCommand(ubyte Data) //передает данные в LCD
{
LCD_CD = 1;
DP3 |= 0x03FC; //настраиваем шину на вывод
P3 = (P3&0xFC00)|(Data << 2); //выставляем данные
LCD_WR = 0;
LCD_WR = 1; //защелкиваем их
}

void LCDRefresh(void) //обновляет содержимое экрана
{
uword Counter;
uword cnt;

InitLCDPins();
LCDOn = 0; //включаем LCD

while((ReadLCDStat()&0x03)==0); //устанавливаем начальный адрес
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDData(0);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0x24);
while((ReadLCDStat()&0x03)==0); //ждем готовности контроллера
WriteLCDCommand(0xB0); //команда потоковой передачи данных

for (Counter=0;Counter cnt = 0;
while((ReadLCDStat()&0x08)==0)if(cnt++==32768)return; //ждем готовности контроллера
WriteLCDData(VideoRAM[Counter]); //передаем данные
};

while((ReadLCDStat()&0x08)==0); //ждем готовности контроллера
WriteLCDCommand(0xB2); //Завершаем передачу

LCDOn = 1; //выключаем LCD
}


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru