Чтение онлайн

ЖАНРЫ

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 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: начальное сообщение

Поделиться с друзьями: