Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
//********************************************************************
void delay(int usec) {
int i,j;
for (i=0;i<usec; i++) {
for (j=0; j < 7; j++) {}
}
}
//********************************************************************
//Initialize_LCD: Функция инициализирует ЖКД
//********************************************************************
void initialize_LCD(void) {
char temp = 0x00;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xEF; //
сброс экрана (RESET = 0)
delay(2000); // задержка в 2 мс
PORTDLC = 0x7F; // выключение сброса
write; //включение записи
command(0x80);
//установка текстового режима
data(0x0); //проверка установки слова
data(0x10);
command(0x40);
data(0x10); // устанавливается размер области текста (1E)
data(0x00); // - 0x1000
command(0x41);
//включается дисплей текста, курсор, выключается мигание
command(0x94);
command(0xA7); //курсор 8x8 точек
}
//********************************************************************
//Enable: Функция разрешает работу ИС
//********************************************************************
void enable(void) {
PORTDLC = PORTDLC | 0x04; // Установить 1 на линии enable
PORTDLC = PORTDLC & 0xFB; // Установить 0 на линии enable
}
//********************************************************************
//Disable: Функция запрещает работу ИС
//********************************************************************
void disable(void) {
PORTDLC = PORTDLC | 0x04;
}
//********************************************************************
//Command: Функция посылает команду отключения на ЖКД
//********************************************************************
void command(unsigned char n) {
status_wait;
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xFE; // сброс записи
enable; // сброс флага CE
delay(10); // задержка не менее 80 нс
disable; // включение флага CE
}
//********************************************************************
//Data:
Функция пересылает данные на ЖКД
//********************************************************************
void data(unsigned char n) {
status_wait;
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xF7; // перевести C/D на низкий уровень
PORTDLC = PORTDLC & 0xFE; // перевести WR на низкий уровень
PORTDLC = PORTDLC & 0xFB;
delay(10);
disable;
}
//********************************************************************
//Write: Функция конфигурирует порт P как выходной
//********************************************************************
void write {
DDRP = 0xFF;
}
//********************************************************************
//Read: Функция конфигурирует порт P как входной
//********************************************************************
void read {
DDRP = 0x00;
}
//********************************************************************
//Status_wait: Создает соответствующие задержки между командами ЖКД
//********************************************************************
void status_wait {
char temp = 0x00;
DDRP = 0x00;
PORTDLC = PORTDLC | 0x0F; // сбросить все
PORTDLC = PORTDLC & 0xFD; // сброс флага RD
enable;
delay(10);
while ((temp & 0x03) != 0x03) {
temp = PORTP;
}
disable;
DDRP = 0xFF;
}
//********************************************************************
//LCD_char: Функция выводит ASCII код на экран ЖКД
//********************************************************************
void LCD_char(unsigned char n) {
data(n-0x20);
command(0xC0);
}
//********************************************************************
//Clearscreen: Функция очищает экран ЖКД
//********************************************************************
Поделиться с друзьями: