Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 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++) {
Поделиться с друзьями: