Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
do {
n = 0;
do {
n--;
} while(n);
m--;
} while(m);
}
//********************************************************************
// status_wait: время ожидания подпрограмма установки связи с ЖКД
//********************************************************************
void status_wait(void) { //время
ожидания подпрограмма установки связи с ЖК дисплеем
char temp = 0x00;
DDRA = 0x00;
PORTB = 0xF9;
while ((temp & 0x03) != 0x03) {
PORTB = 0xFF;
temp = PORTA;
PORTB = 0xF9;
}
PORTB = 0xFF;
DDRA = 0xFF;
}
//********************************************************************
// command: пересылка команд на ЖК дисплей
//********************************************************************
void command(unsigned char n) { // пересылка команд на ЖК дисплей
status_wait;
PORTA = n;
PORTB = 0xFF;
PORTB = PORTB & 0xFA;
PORTB = 0xFF;
}
//********************************************************************
//********************************************************************
//data: пересылка данных на ЖК дисплей
//********************************************************************
void data(unsigned char n) { // пересылка данных на ЖК дисплей
status_wait;
PORTA = n;
PORTB = PORTB & 0xF2;
PORTB = 0xFF;
}
//********************************************************************
// LCD_char: функция пересылки символа на ЖК дисплей
//********************************************************************
void LCD_char(unsigned char n) {
// функция пересылки символа на ЖК дисплей
data(n - 0x20);
command(0xC0);
}
//********************************************************************
// newline: пересылка новой строки на ЖК дисплей
//********************************************************************
void newline(void) {
// пересылка новой строки на ЖК дисплей
int i;
for (i=0; i<16; i++) LCD_char(' ');
}
//********************************************************************
// LCD_output:
пересылка последовательности символов на ЖК дисплей
//********************************************************************
void LCD_output(char s[]) {
// пересылка последовательности символов на ЖК дисплей
int n = 0;
while (s[n] != '\0') {
LCD_char(s[n]);
++n;
}
}
//********************************************************************
// Reset_cursor: возврат курсора
//********************************************************************
void Reset_cursor(void) { // возврат курсора
data(0x00);
data(0x10);
command(0x24);
}
//********************************************************************
//Clearscreen: очистка экрана ЖКД
//********************************************************************
void Clearscreen(void) { // очистка экрана ЖКД
int i,j;
Reset_cursor;
for (i=0; i<16; i++) for(j=0; j<16; j++) LCD_char(' ');
Reset_cursor;
}
//********************************************************************
// Initlcd: инициализация ЖКД
//********************************************************************
void Initlcd(void) { // инициализация ЖКД
PORTB = 0xEF; //принудительный сброс
delay;
PORTB = 0xFF; //все линии команд на высоком уровне
status_wait;
command(0x80); // установить режим текста
data(0x00); // установить младший байт адреса текста (L)
data(0x10); // установить младший байт адреса текста (H)
command(0x40); //установить адрес команды текста
data(0x10); //установить область текста
data(0x00);
command(0x41);
command(0x94); //включить текстовый дисплей
command(0xA7); //курсор 8x8 позиций
Clearscreen;
Reset_cursor;
}
//********************************************************************
// InitMes: начальное сообщение
Поделиться с друзьями: