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

ЖАНРЫ

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С

Пак Дэниэл Дж.

Шрифт:

 putchars('V');

}

/********************************************************************/

/********************************************************************/

/*задержка в 100 мкс, на базе таймера с частотой 8 МГц */

/********************************************************************/

void delay_100us(void) {

 int i;

 for (i=0; i<50; i++) {

asm("nop");

 }

}

/********************************************************************/

/*задержка
в 5 мс, на базе таймера с частотой 8 МГц */

/********************************************************************/

void delay_5ms(void) {

 int i;

 for (i=0; i<50; i++) {

delay_100us;

 }

}

/********************************************************************/

/*Функции инициализации посылают на ЖКД необходимую стартовую */

/* последовательность. Формируется последовательность команд инициали-*/

/* зации соответствующих техническим данным производителя дисплея. */

/********************************************************************/

void initialize_lcd(void) {

 delay_5ms;

 delay_5ms;

 delay_5ms; /*задержка на 15 мс перед включением ЖКД */

 putcommands(0x38); /*установочный интерфейс */

 delay_5ms;

 putcommands(0x38);

 delay_100us;

 putcommands(0x38);

 putcommands(0x38);

 putcommands(0x0C);

 putcommands(0x01); /*Очистить дисплей */

 putcommands(0x06); /*Установить режим увеличения адреса на единицу*/

 putcommands(0x0E); /*Включить дисплей,вывести мигающий курсор */

 putcommands(0x02); /*Возврат */

}

/********************************************************************/

/* Функция вывода инициализирует порт данных, создает сигналы RS и */

/* разрешения и посылает их на соответствующий порт */

/********************************************************************/

void putchars(unsigned char c) {

 DDRP = 0xFF; /*установить Port P как выходной */

 DDRDLC = DDRDLC | 0x0C; * установить PORTDLC[3:2] как выходной */

 PORTP = c; /* присвоить знак С порту данных */

 PORTDLC= PORTDLC|0x08 /*
установить RS в 1 для данных */

 PORTDLC= PORTDLC|0x04 /* установить E в 1 ( PORTDLC[5] = 1) */

 PORTDLC = 0; /* установить E и RS в 0 */

 delay_5ms; /* подождать 5мс */

}

/********************************************************************/

/*Функция putcommand пересылает данные в контроллер на ЖК дисплея */

/********************************************************************/

void putcommands(unsigned char d) {

 DDRP = 0xFF; /*установить порт PORTP в качестве выходного */

 DDRDLC = DDRDLC|0x0C; /*установить выводы PORTDLC[3:2] */

/* в качестве выходных */

 PORTDLC = PORTDLC & 0xF7; /* команда RS = 0 */

 PORTP = d; /*передача команды на на ЖКД */

 PORTDLC = PORTDLC|0x04; /*E = 1 */

 PORTDLC =0; /*E = 0 */

 delay_5ms; /*пауза 5 мс */

}

/********************************************************************/

/*Функция lcd_print посылает строку на ЖК дисплей */

/********************************************************************/

void lcd_print(char *string) {

 putcommands(0x02); /*установка курсора на первую строку */

/*putcommand для выделения строки */

 while(*(string) != '\0') {

putchars(*string);

string++;

 }

}

/********************************************************************/

/*задержка в 5 мс, на базе таймера с частотой 8 МГц */

/********************************************************************/

void delay_5ms(void) {

 int i;

 for (i=0; i<50; i++) {

delay_100us;

 }

}

/********************************************************************/

/********************************************************************/

/*задержка в 100 мкс, на базе таймера с частотой 8 МГц */

/********************************************************************/

void delay_100us(void) {

 int i;

 for(i=0; i<50; i++) {

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