Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Название:Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Автор:
- Жанр:
- Издательство:Издательский дом «ДМК-пресс»
- Год:2007
- Город:Москва
- ISBN:5-9706-0034-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С краткое содержание
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.
Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.
Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:

а) Набор функций управления

б) Блок-схема алгоритма инициализации
Рис. 5.13.Программное обеспечение для управления цифро-буквенным ЖК индикатором
Блок-схема функции инициализации дисплея представлена на рис. 5.13,б. Она реализует алгоритм начальной установки дисплея, который разработан в соответствии с техническими рекомендациями производителя.
Ниже приведен текст программы на Си для всех функций рис. 5.13,а.
/*------------------------------------------------------------------*/
/*filename: lcd.c */
/*содержит программный код для шести функций управления ЖК дисплеем */
/*------------------------------------------------------------------*/
/*-----------------------------------------------------------------------*/
/* Функция initialize_lcd производит начальную установку режимов дисплея */
/*-----------------------------------------------------------------------*/
void initialize_lcd(void) {
delay_5ms();
delay_5ms();
delay_5ms(); //задержка 15 мс
putcommands(0x38); //команда установки формата интерфейса обмена
delay_5ms();
putcommands(0x38);
delay_l00us();
putcommands(0x38);
putcommands(0x38) ;
putcommands(0x0C);
putcommands(0x01); //очистить дисплей
putcommands(0x06); //установить режим ввода с автоматическим
//увеличением адреса
//символа на 1
putcommands(0x0E); //включить дисплей, режим курсора мигающий
putcommands(0x02); //установить курсор на первое знакоместо
}
/*---------------------------------------------------------------------*/
/* Функция putchars производит запись одного кода символа в контроллер */
/*дисплея */
/*---------------------------------------------------------------------*/
void putchars(unsigned char с) {
DDRP = 0xFF; //установить порт PORT P на вывод
DDRDLC = DDRDLC | 0x0C; //установить разряды 2 и 3 порта PORT DLC на
//вывод
PORTP = с; //Выдать в порт PORT P код символа с
PORTDLC = PORTDLC | 0x08; //установить линию RS в 1
PORTDLC = PORTDLC | 0x04; //установить линию E в 1
PORTDLC = 0; //установить E и RS в 0
delay_5ms(); //задержка 5 мс
}
/*-----------------------------------------------------------------------*/
/*Функция putcommands производит запись одного кода команды в контроллер */
/*дисплея */
/*-----------------------------------------------------------------------*/
void putcommands(unsigned char d) {
DDRP = 0xFF; //установить порт PORT P на вывод
DDRDLC = DDRDLC|0x0C; //установить разряды 2 и 3 порта PORT DLC на
//вывод
PORTDLC = PORTDLC & 0xF7; //установить линию RS в 0
PORTP = d; //Выдать в порт PORT P код команды d
PORTDLC = PORTDLC | 0x04; //установить линию E в 1
PORTDLC = 0; //установить E и RS в 0
delay_5ms(); //задержка 5 мс
}
/*-----------------------------------------------------------------*/
/*Функция lcdprint производит запись строки символов в ОЗУ дисплея */
/*-----------------------------------------------------------------*/
void lcdprint(char *string) {
putcommands(0x02); //команда установки адреса на начало строки
while(*(string) != '\0') //вывести последовательно кода символов
{ //из памяти МК
putchars(*string);
string++;
}
}
/*-------------------------------------------*/
/* Функция delay_5ms формирует задержку 5 мс */
/*-------------------------------------------*/
void delay_5ms(void) {
int i;
for(i=0; i<50; i++) {
delay_l00us();
}
}
/*-----------------------------------------------------*/
/* Функция void delay_100us формирует задержку 100 мкс */
/*Частота системной шины равна 8 МГц */
/*-----------------------------------------------------*/
void delay_100us(void) {
int i;
for(i=0; i<50; i++) {
asm("nop"); //команда nop занимает 2 цикла
}
}
/*-----------------------------------------------------*/
5.6.3 Сопряжение МК с графическим ЖК дисплеем
В этом разделе мы рассмотрим типовой графический ЖК дисплей. Следуя логике предыдущего параграфа, мы сначала обсудим информационную модель графического дисплея, затем изучим электрические характеристики и временные диаграммы обмена встроенного контроллера управления этим дисплеем, в завершении — элементы программы для передачи данных из МК в контроллер дисплея. В конце параграфа мы предложим Вам набор полезных для обслуживания графического дисплея функций. При рассмотрении мы будем использовать конкретную модель дисплея AND1391ST. Однако полученные знания Вы сможете легко применить к другим распространенным моделям дисплеев. В главе 7 мы предложим Вам подробный полностью завершенный пример с графическим дисплеем (разд. 7.).
Информационная модель.AND1391ST — ЖК дисплей с разрешающей способностью экрана 128×128 пикселов. Встроенный контроллер управления обеспечивает работу дисплея как в символьном, так и в графическом режиме отображения. Возможно также сочетание этих двух режимов работы при выводе одной и той же картинки. При использовании символьного режима поле экрана дисплея делится на 16 строк по 16 символов в каждой строке (рис. 5.14). Для отображения каждого символа предоставляется поле знакоместа размером 8×8 точек, как показано на рис. 5.15. В качестве дополнительного может быть использован режим символьного отображения, при котором поле экрана дисплея делится на 16 строк по 21 символу в строке. В этом случае каждое знакоместо будет состоять из 6×8 точек. Размер знакоместа задается уровнем сигнала на входе FS контроллера дисплея. Набор кодов для формирования образа каждого символа (знакогенератор) хранится в постоянной памяти контроллера дисплея.

Рис. 5.14.Информационная модель графического ЖК дисплея в символьном режиме
Контроллер дисплея воспроизводит на экране образы символов, коды которых хранятся в ячейках оперативной памяти контроллера. Каждому знакоместу на экране дисплея поставлена в соответствие ячейка ОЗУ с определенным адресом. В процессе инициализации контроллера дисплея МК записывает адрес начала ОЗУ экрана. На рис. 5.14 этот адрес равен $1000. Все остальные адреса для ячеек символов вычисляются посредством указанных на рис. 5.14 кодов смещения. В процессе инициализации также указывается число символов в строке. В нашем примере мы используем режим отображения с 16 символами в строке. При этом размер знакоместа для символа (8×8) уже выбран на аппаратном уровне: вход FS контроллера присоединен к общему выводу источника питания.
старший полубайт | младший полубайт | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0 | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
2 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
3 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
4 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
5 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ |
Рис. 5.15.Таблица кодов символов для графического ЖК дисплея
Читать дальшеИнтервал:
Закладка: