Алгоритм работы программы
lab2.cсодержит программу, состоящую из функций, описанных в lcd_func.
Алгоритм lab2.c:
1. Установить порт А на вывод информации;
Установку выполняет функция init_port_a_out.
2. Инициализировать дисплей;
Инициализацию выполняет функция lcd_init. Функция построена по следующему алгоритму:
а. Выполнить действия, указанные в datasheet, для установки жки в рабочий режим;
б. Установить 4-х битный режим, инициализировать две строки и установить размер матрицы символа 5х8;
в. Включить дисплей.
г. Выбор направления ввода данных.
Все перечисленные шаги алгоритма выполняются при помощи функции lcd_put_byte, алгоритм которой подробно рассмотрен в п.3.
3. Вывести строку на дисплей;
Функция lcd_put_str:
а. Присвоить переменной i-й элемент строки;
б. Установить курсор на необходимую позицию при помощи функции lcd_gotoxy;
в. Вывести на экран i-й элемент строки при помощи функции lcd_put_byte;
г. Выполнить увеличение счетчика адреса курсора.
До тех пор, пока не будет достигнут конец строки.
Функция lcd_gotoxy:
a. Выполнить преобразование номера столбца и строки ячейки в адрес;
б. При помощи функции lcd_put_byte записать адрес в регистр комманд.
Функция lcd_put_byte:
a. Если дисплей в рабочем режиме, выполнить проверку флага занятости при помощи lcd_check. До сброса флага занятости переход к следующим действиям алгоритма не осуществляется;
б. Установить порт C на вывод информации при помощи init_port_c_out.
в. Выбрать, в какой из регистров(комманд, данных) будет производиться запись;
г. Записать старшую тетраду при помощи функции lcd_put_tetr;
д. Записать младшую тетраду при помощи функции lcd_put_tetr.
Функция lcd_put_tetr:
a. Установить Е в "1";
б. Установить тетраду на ножки порта C;
в. Установить Е в "0".
Функция lcd_check:
а. Установить порт С на вход с включением подтягивающих резисторов при помощи init_port_c_in;
б. Установить RW в "1";
в. Установить RS в "0";
г. Установить Е в "1";
д. Считать старшую тетраду;
е. Установить Е в "0";
ж. Установить Е в "1";
з. Установить Е в "0";
и. Если старший байт старшей тетрады не равен 0, вернуть "1", в противном случае - "0"
4. Выполнять цикл сдвига дисплея слева направо и справа налево.
a. При помощи lcd_put_byte сдвинуть экран направо;
б. При помощи lcd_put_byte сдвинуть экран налево;
Исходный код
Lab2.c
//Библиотека, содержащая функции для работы с жки
#include "lcd_func.h"
void main(void) {
//Установка порта а на вывод ифнормации
init_port_a_out();
//Инициализация дисплея
lcd_init();
//Запись строки
lcd_put_str("Pastushak Vasiliy KIP-S09");
//Сдвиг экрана справа налево и слева направо
lcd_repeat();
}