/*-----------------------------------------------------------------------*/
void putcommands(unsigned char d) {
DDRP = 0xFF; //установить порт PORT P на вывод
DDRDLC = DDRDLC|0x0C; //установить разряды 2 и 3 порта PORT DLC на
//вывод
PORTDLC = PORTDLC & 0xF7; //установить линию RS в 0
PORTP = d; //Выдать в порт PORT P код команды d
PORTDLC = PORTDLC | 0x04; //установить линию E в 1
PORTDLC = 0; //установить E и RS в 0
delay_5ms(); //задержка 5 мс
}
/*-----------------------------------------------------------------*/
/*Функция lcdprint производит запись строки символов в ОЗУ дисплея */
/*-----------------------------------------------------------------*/
void lcdprint(char *string) {
putcommands(0x02); //команда установки адреса на начало строки
while(*(string) != '\0') //вывести последовательно кода символов
{ //из памяти МК
putchars(*string);
string++;
}
}
/*-------------------------------------------*/
/* Функция delay_5ms формирует задержку 5 мс */
/*-------------------------------------------*/
void delay_5ms(void) {
int i;
for(i=0; i<50; i++) {
delay_l00us();
}
}
/*-----------------------------------------------------*/
/* Функция void delay_100us формирует задержку 100 мкс */
/*Частота системной шины равна 8 МГц */
/*-----------------------------------------------------*/
void delay_100us(void) {
int i;
for(i=0; i<50; i++) {
asm("nop"); //команда nop занимает 2 цикла
}
}
/*-----------------------------------------------------*/
5.6.3 Сопряжение МК с графическим ЖК дисплеем
В этом разделе мы рассмотрим типовой графический ЖК дисплей. Следуя логике предыдущего параграфа, мы сначала обсудим информационную модель графического дисплея, затем изучим электрические характеристики и временные диаграммы обмена встроенного контроллера управления этим дисплеем, в завершении — элементы программы для передачи данных из МК в контроллер дисплея. В конце параграфа мы предложим Вам набор полезных для обслуживания графического дисплея функций. При рассмотрении мы будем использовать конкретную модель дисплея AND1391ST. Однако полученные знания Вы сможете легко применить к другим распространенным моделям дисплеев. В главе 7 мы предложим Вам подробный полностью завершенный пример с графическим дисплеем (разд. 7.).
Информационная модель.
AND1391ST — ЖК дисплей с разрешающей способностью экрана 128×128 пикселов. Встроенный контроллер управления обеспечивает работу дисплея как в символьном, так и в графическом режиме отображения. Возможно также сочетание этих двух режимов работы при выводе одной и той же картинки. При использовании символьного режима поле экрана дисплея делится на 16 строк по 16 символов в каждой строке (рис. 5.14). Для отображения каждого символа предоставляется поле знакоместа размером 8×8 точек, как показано на рис. 5.15. В качестве дополнительного может быть использован режим символьного отображения, при котором поле экрана дисплея делится на 16 строк по 21 символу в строке. В этом случае каждое знакоместо будет состоять из 6×8 точек. Размер знакоместа задается уровнем сигнала на входе FS контроллера дисплея. Набор кодов для формирования образа каждого символа (знакогенератор) хранится в постоянной памяти контроллера дисплея.Рис. 5.14.
Информационная модель графического ЖК дисплея в символьном режиме